Player
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Một Player đối tượng là một client đang kết nối. Đối tượng này được thêm vào dịch vụ Players khi một người chơi mới kết nối, sau đó bị xóa khi họ cuối cùng thoát khỏi máy chủ.
Tính năng Instance.Name lưu tên tài khoảndùng. Khi lưu thông tin về một người chơi, bạn nên sử dụng Player.UserId của họ, vì có thể một người chơi có thể thay đổi tên tài khoảndùng của họ.
Có một số phương pháp tương tự trong dịch vụ Players để làm việc với các đối tượng Người chơi. Sử dụng những như các đối tượng đó Instance của riêng họ:
- Bạn có thể nhận được một bảng các thống kê người chơi hiện tại bằng cách sử dụng Players:GetPlayers() ; một lần nữa, hãy sử dụng nó thay vì Instance:GetChildren() .
- Để phát hiện thêm đối tượng Người chơi, nên sử dụng sự kiện Players.PlayerAdded (thay vì Instance.ChildAdded trên dịch vụ Players).
- Tương tự, bạn có thể phát hiện ra việc xóa các thống kê người chơi bằng cách sử dụng Players.PlayerRemoving, which fires just trước khi player được xóa (thay vì Instance.ChildRemoved which fires sau). Điều này quan trọng nếu bạn đang lư
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
-- Create a container for leaderstats
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
-- Create one leaderstat value
local vScore = Instance.new("IntValue")
vScore.Name = "Score"
vScore.Value = 0
vScore.Parent = leaderstats
-- Add to player (displaying it)
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)
Tóm Tắt
Thuộc Tính
Mô tả tuổi tài khoản của người chơi trong ngày.
Xác định whether the character of a player using a mobile device will automatically jump upon hitting an obstacle.
Khoảng cách tối đa mà máy ảnh của người chơi có thể phóng ra.
Khoảng cách tối thiểu mà máy ảnh của người chơi được phép zoom vào.
Đổi chế độ của máy ảnh thành người đầu tiên hoặc thứ ba.
Xác định có phải nhân vật sẽ được tải khi người chơi xuất hiện không? Nếu sai, người chơi sẽ xuất hiện với một ngoại hình mặc định.
Một Model được điều khiển bởi người chơi có chứa một Humanoid , các bộ phận cơ thể, script và các thống kê khác.
Xác định ID người dùng của tài khoản whose character appearance is used for a người chơi's character .
Đặt cách màn hình mặc định camera điều khiển vật thể giữa máy ảnh và người chơi.
Xác định chế độ di chuyển máy ảnh của người chơi khi sử dụng phiên bản desktop của Roblox.
Xác định chế độ di chuyển nhân vật của người chơi khi sử dụng phiên bản Roblox trên máy tính.
Xác định nếu người chơi có thể bật / tắt khóa chuột.
Xác định chế độ di chuyển máy quay của người chơi khi sử dụng thiết bị cảm ứng.
Xác định chế độ di chuyển nhân vật của người chơi khi sử dụng thiết bị cảm ứng.
Tên hiển thị của UserId liên quan đến Player.
Mô tả ID người chơi của người chơi đã được theo dõi vào trò chơi bởi một người chơi khác.
Whether player client-side gameplay is currently paused.
Chỉ ra nếu một người chơi có một huy hiệu đã được xác minh.
Điều chỉnh khoảng cách mà mắt người chơi sẽ nhìn thấy các thanh kiểm tra sức khỏe của người khác. Nếu được đặt để 0, các thanh kiểm tra sức khỏe sẽ không được hiển thị.
Đặc tính này hiển thị ID ngôn ngữ mà người chơi địa phương đã cài đặt cho tài khoản Roblox của họ.
Mô tả đánh máythành viên của tài khoản.
Đặt khoảng cách màn hình mà người chơi này sẽ thấy các tên người khác. Nếu đặt 0, tên sẽ được ẩn.
Xác định liệu người chơi có đang ở một đội cụ thể không.
Đặt bộ phận tập trung sao chép xung quanh.
Nếu được cài đặt, người chơi sẽ respawn ở SpawnLocation đã được cung cấp.
Xác định Đội mà một Người chơi liên kết với.
Xác định Đội mà một Người chơi liên kết với.
Một giá trị độc nhất được gán cho tất cả các tài khoản người dùng.
Phương Pháp
Loại bỏ tất cả các phụ kiện và những thứ khác có nhân vật từ Character của một người chơi.
Trả về khoảng cách giữa đầu nhân vật và điểm Vector3 đã được cung cấp. Trả về 0 nếu người chơi không có nhân vật.
Trả lại một từ điển chứa thông tin mô tả cách Player tham gia trải nghiệm.
Trả lại chuột đang được sử dụng bởi khách hàng.
Trả lại thời gian trễ mạng được công bố trong giây lát.
Quyết định whether or not the appearance of the người chơi's character đã tải.
Trả lời có hay không người chơi được xác minh bằng các tín hiệu thế giới thực.
Gắn bỏ một người chơi khỏi trò chơi, có thể cung cấp một thông tin nhắn.
Khiến nhân vật người chơi đi theo hướng đã được chỉ định cho đến khi dừng lại hoặc bị người chơi (bằng cách sử dụng các nút điều khiển của họ) cản trở.
Đặt tuổi tài khoản của người chơi.
Đặt whether or not the player sees filtered chats, rather than normal chats.
Trả lại một từ điển của bạn bè trực tuyến.
Đảm bảo thứ hạng của người chơi trong nhóm là một số tối đa là 255, nơi 0 là một non- member và 255 là chủ của nhóm.
Lưu vai trò của người chơi trong nhóm như một chuỗi, hoặc "Khách" nếu người chơi không phải là một phần của nhóm.
Kiểm tra xem một người chơi là bạn của người dùng với Player.UserId đã được cung cấp.
Kiểm tra xem một người chơi là thành viên của một nhóm với ID đã được cung cấp.
Tạo một nhân vật mới cho người chơi, loại bỏ cái cũ. Cũng xóa Backpack và PlayerGui của người chơi.
Tạo một hình đại diện cho nó có tất cả mọi thứ trong vòng HumanoidDescription .
Yêu cầu mà máy chủ dòng đến người chơi xung quanh vị trí được xác định.
Sự Kiện
Được kích hoạt khi nhân vật của một người chơi được tạo hoặc tái sinh.
Lửa khi hình dạng đầy đủ của một Player.Character đã được thêm vào.
Đã bắn ngay trước khi nhân vật của một người chơi bị xóa.
Lửa khi một người chơi trò chuyện trong trò chơi bằng cách sử dụng thanh trò chuyện được cung cấp bởi Roblox.
Sự kiện này bắt đầu khoảng hai phút sau khi game engine xếp hạng Class.Player|player như là một kẻ nhàn rỗi. Thời gian là số giây đã trôi qua kể từ thời điểm đó.
Được kích hoạt khi Tình trạng dịch chuyển của một người chơi thay đổi.
Thuộc Tính
AccountAge
Theo tài khoảnAge là một Player property that describes how long ago a người chơi's account was registered in days. Nó được thiết lập bằng cách sử dụng hàm Player:SetAccountAge() , mà không thể được truy cập bởi các script.
Điều này hữu ích cho việc hiển thị nội dung người chơi Roblox mới như hướng dẫn.
Mẫu mã
local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
AutoJumpEnabled
Thuộc tính AutoJumpEnabled xác định liệu Player.Character của một Player sử dụng thiết bị di động sẽ tự động nhảy khi họ đâm vào một vật cản. Điều này có thể làm cho các cấp độ điều hướng dễ dàng hơn khi đang ở trên một thiết bị di độ
Khi người chơi tham gia vào trò chơi, giá trị StarterPlayer.AutoJumpEnabled xác định trạng thái ban đầu của thuộc tính này. Sau đó, thuộc tính này xác định giá trị của th
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()
CameraMaxZoomDistance
Cuộn dãi CameraMaxZoomDistance Player tạo ra khoảng cách tối đa trong studs mà máy ảnh có thể từ nhân vật với các máy ảnh mặc định.
Nói cách khác, nó kiểm soát khoảng cách tối đa mà máy ảnh của người chơi được phép phóng ra.
Giá trị mặc định của thuộc tính này được đặt bởi StarterPlayer.CameraMaxZoomDistance . Nếu giá trị này được đặt thấp hơn Player.CameraMinZoomDistance , nó sẽ được tăng lên đến CameraMinZoomDistance.
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
Cuộn dãi CameraMinZoonDistance Player tính toán khoảng cách tối thiểu trong studs mà máy ảnh có thể từ nhân vật với các máy ảnh mặc định.
Nói cách khác, nó kiểm soát khoảng cách tối thiểu mà máy ảnh của người chơi được phép zoom vào.
Giá trị mặc định của thuộc tính này được đặt bởi StarterPlayer.CameraMinZoomDistance . Nếu giá trị này được đặt lên một giá trị cao hơn Player.CameraMaxZoomDistance nó sẽ được giảm xuống CameraMaxZoomDistance.
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
Thuộc tính CameraMode của Camera lập mô hình camera của người chơi, mặc định là người thứ ba.
Góc nhìn thứ ba
Trong chế độ người thứ ba mặc định ( Enum.CameraMode.Classic ) , nhân vật có thể được xem trên máy ảnh. Trong chế độ này, hành vi mặc định là:
- Người chơi có thể nhấp chuột và kéo (chuột), nhấn và kéo (màn hình), sử dụng các ngón tay bên cạnh (gamepad), hoặc nhấn vào mũi tên bên trái / phải (bàn phím) để xoay camera xung quanh nhân vật của họ.
- Khi một người chơi di chuyển nhân vật của họ, nó đối diện với hướng chuyển động tương ứng.
- Người chơi có thể thu nhỏ và mở rộng tự do, ngay cả đối với người chơi đầu tiên trên một tấm bia full zoom.
góc nhìn thứ nhất
Trong chế độ người chơi ( Enum.CameraMode.LockFirstPerson )), máy ảnh của người chơi được zoom toàn bộ cách. Trừ khi có một GUI hiện hữu với thuộc tính GuiButton.Modal được đặt thành true , di ch
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
Thuộc tính CanLoadCharacterAppearance Player xác định có phải nhân vật của người chơi sẽ được tải khi người chơi xuất hiện không? Giá trị mặc định của thuộc tính này được cài đặt bởi StarterPlayer.LoadPlayerAppearance .
Nếu true , character sẽ tải nhân vật tương ứng với người chơi's Player.CharacterAppearanceId .
Nếu false , người chơi sẽ xuất hiện với một ngoại hình mặc định - một mô hình nhân vật màu xám không có mũ, áo, quần, v.v.
Cố gắng đặt thuộc tính sau khi nhân vật đã được tạo sẽ không thay đổi nhân vật, bạn phải gọi Player:LoadCharacter() để tải ngoại hìnhmới.
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
Thuộc tính Nhân vật lưu trữ một tham chiếu đến một Model đựng một Class.Humanoid
Nguyên tắc này được đặt khi nhân vật của người chơi đầu tiên xuất hiện. Sử dụng sự kiện nil để xác định khi nào một nhân vật của người chơi được
Lưu ý rằng LocalScripts được clon từ Class
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
Đặc tính này xác định ID người dùng của tài khoản của người chơi nào có nhân vật xuất hiện được sử dụng cho một người chơi's Player.Character . Bởi mặc định, đặc tính này là Player.UserId, which uses avatar của người chơi như họ
Đổi thuộc tính này thành ID người chơi của một tài khoản khác sẽ khiến người chơi xuất hiện với hình dạng của tài khoản đó (mũ, áo, quần, v.v.)
Trò chơi cũng có thể bật hoặc tắt tính năng hiển thị nhân vật của một người chơi bằng cách thay đổi thuộc tính StarterPlayer.LoadCharacterAppearance .
Mẫu mã
local Players = game:GetService("Players")
local disguiseCommand = "/disguise "
local function onPlayerChatted(player, message)
if message:sub(1, disguiseCommand:len()):lower() == disguiseCommand:lower() then
local input = message:sub(disguiseCommand:len() + 1)
local id = tonumber(input)
if not id then -- Number failed to parse, maybe they typed a username instead
pcall(function() -- This call can fail sometimes!
id = Players:GetUserIdFromNameAsync(input) -- Fetch ID from name
end)
end
if id then
-- Set character appearance then respawn
player.CharacterAppearanceId = id
player:LoadCharacter()
else
-- We couldn't get an ID from their input
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevCameraOcclusionMode
Định nghĩa cách các câu lệnh máy ảnh mặc định xử lý các thống nhất giữa máy ảnh và chủ đề máy ảnh. Được đặt bởi StarterPlayer.DevCameraOcclusionMode và không thể được thay đổi cho các người chơi cụ thể.
Giá trị mặc định là Zoom (0). Xem Enum.DevCameraOcclusionMode để có được danh sách các chế độ có sẵn.
DevComputerCameraMode
Thuộc tính DevComputerCameraMode xác định cách mà một người chơi di chuyển máy ảnh của họ khi sử dụng thiết bị có chuột và bàn phím. Xem Enum.DevComputerCameraMovementMode để mô tả mọi chế độ điều khiển máy ảnh khả dụng.
Giá trị mặc định của thuộc tính này được xác định bởi StarterPlayer.DevComputerCameraMovementMode .
Từ "Máy Tính" trong tên thuộc tính này tham khảo đến các thiết bị không phải là TouchEnabled , không phải là GamepadEnabled .
Khi đặt vào Người chọn người chơi , một người chơi có thể chọn giữa bất kỳ chế độ điều khiển (ngoại trừ Scriptable ) trong cài đặt game Roblox. Nói phổ quát, một lý tưởng tốt để cho phép người chơi chọn chế độ điều khiển của họ để tối đa hóa khả
Nó là khả thi để tạo một cấu hình điều khiển tùy chỉnh bằng cách thiết lập thuộc tính này thành Scriptable .
Điều này không ảnh hưởng đến người chơi sử dụng thiết bị cảm ứng được kích hoạt. Thay vào đó, hãy xem Player.DevTouchCameraMode.
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on computers to classic
player.DevComputerCameraMode = Enum.DevComputerCameraMovementMode.Classic
DevComputerMovementMode
Thuộc tính DevComputerMovementMode xác định cách mà một người chơi di chuyển nhân vật của họ khi sử dụng thiết bị có chuột và bàn phím. Xem Enum.DevComputerMovementMode để một mô tả của mọi chế độ di chuyển được s�
Giá trị mặc định của thuộc tính này được xác định bởi StarterPlayer.DevComputerMovementMode .
Từ "Máy Tính" trong tên ngôi tài sản này tham khảo đến các thiết bị không phải là TouchEnabled .
Khi đặt vào Người chọn người chơi , một người chơi có thể chọn giữa bất kỳ chế độ điều khiển (ngoại trừ Scriptable ) trong cài đặt game Roblox. Nói phổ quát, một lý tưởng tốt để cho phép người chơi chọn chế độ điều khiển của họ để tối đa hóa khả
Nó là khả thi để tạo một cấu hình điều khiển tùy chỉnh bằng cách thiết lập thuộc tính này thành Scriptable .
Điều này không ảnh hưởng đến người chơi sử dụng thiết bị cảm ứng. Thay vào đó, hãy xem Player.DevTouchMovementMode .
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player: Player)
-- Set the player's movement mode on desktop devices to click-to-move
-- Once set, the player can right click in the game world and the character will move there.
player.DevComputerMovementMode = Enum.DevComputerMovementMode.ClickToMove
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevEnableMouseLock
Điều này xác định nếu một người chơi có thể bật/tắt Mouse lock bằng cách nhấn Shift . Một người chơi có thể tắt trình bật StarterPlayer.EnableMouseLockOption
Khi khóa chuột được bật, cursor của người chơi được khóa ở trung tâm của màn hình. Khi di chuyển chuột, nó sẽ quay quanh máy ảnh xung quanh người chơi's character , và nó sẽ mặt đối với cùng mộ
Lưu ý rằng các API liên quan đến khóa thay đổi liên quan đến việc bị xóa sổ, vì vậy nên sử dụng UserInputService.MouseBehavior thay vì sử dụng chuột.
Mẫu mã
local Players = game:GetService("Players")
local function toggleMouseLock(player)
player.DevEnableMouseLock = not player.DevEnableMouseLock
if player.DevEnableMouseLock then
print("Mouse lock is available")
else
print("Mouse lock is not available")
end
end
local function onPlayerChatted(player, message, _recipient)
if message == "mouselock" then
toggleMouseLock(player)
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
DevTouchCameraMode
Thuộc tính DevTouchCameraMode xác định cách mà một người chơi di chuyển máy ảnh của họ khi sử dụng thiết bị TouchEnabled . Xem Enum.DevTouchCameraMovementMode để mô tả mỗ
Giá trị mặc định của thuộc tính này được xác định bởi StarterPlayer.DevTouchCameraMovementMode .
Khi đặt vào Người chọn người chơi , một người chơi có thể chọn giữa bất kỳ chế độ điều khiển (ngoại trừ Scriptable ) trong cài đặt game Roblox. Nói phổ quát, một lý tưởng tốt để cho phép người chơi chọn chế độ điều khiển của họ để tối đa hóa khả
Nó là khả thi để tạo một cấu hình điều khiển tùy chỉnh bằng cách thiết lập thuộc tính này thành Scriptable .
Điều này không ảnh hưởng đến người chơi không sử dụng thiết bị cảm ứng. Thay vào đó, xem Player.DevComputerCameraMovementMode .
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Set the player's camera movement mode on mobile devices to classic
player.DevTouchCameraMovementMode = Enum.DevTouchCameraMovementMode.Classic
DevTouchMovementMode
Thuộc tính DevTouchMovementMode xác định cách mà một người chơi di chuyển nhân vật của họ khi sử dụng thiết bị TouchEnabled. Xem Enum.DevTouchMovementMode để mô tả mọi chế độ
Giá trị mặc định của thuộc tính này được xác định bởi StarterPlayer.DevTouchMovementMode .
Khi đặt vào Người chọn người chơi , một người chơi có thể chọn giữa bất kỳ chế độ điều khiển (ngoại trừ Scriptable ) trong cài đặt game Roblox. Nói phổ quát, một lý tưởng tốt để cho phép người chơi chọn chế độ điều khiển của họ để tối đa hóa khả
Nó là khả thi để tạo một cấu hình điều khiển tùy chỉnh bằng cách thiết lập thuộc tính này thành Scriptable .
Điều này không ảnh hưởng đến người chơi không sử dụng thiết bị cảm ứng. Thay vào đó, xem Player.DevComputerMovementMode .
Mẫu mã
local Players = game:GetService("Players")
game.Players.PlayerAdded:Connect(function(player)
-- Set the player's movement mode on mobile devices to a dynamic thumbstick
player.DevTouchMovementMode = Enum.DevTouchMovementMode.DynamicThumbstick
end)
DisplayName
The DisplayName is a Player property that contains the display name of the authenticated user associating the Player object. unlike usernames, display names are non-Unique names a player displays to others. If the Roblox user has not chosen one, the property will read the same as the 1> Name1> property.
Ghi chú:
- Vì tên hiển thị không độc nhất, có thể có hai người chơi trong một môn đồng hồ giống nhau. Nếu bạn cần một identifers hiện đại độc nhất cho một người chơi, hãy sử dụng Player.UserId (đây là stat) hoặc Player.Name (đâ
- Những nhân vật được tạo bởi Player.LoadCharacter hoặc bởi cỗ máy Roblox sẽ có đặc tính Humanoid.DisplayName được gán cho đặc tính Player.DisplayName .
- Tên có thể có các ký tự không hỗ trợ trong chuỗi. Xem UTF-8 để biết thêm thông tin về cách làm việc với các chuỗi có các ký tự không hỗ trợ.
FollowUserId
The FollowUserId is a Player property that contains the Player.UserId of the user that a player followed into the trò chơi. If the player did not follow anyone into the trò chơi, this property will be 0. This property is useful for alerting players who have been followed by another player into the trò chơi.
Bạn có thể nhận được tên người chơi được theo dõi bằng cách sử dụng user ID này và chức năng Players:GetNameFromUserIdAsync() .
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onPlayerAdded(newPlayer)
if newPlayer.FollowUserId == player.UserId then
local hint = Instance.new("Hint")
hint.Parent = player:WaitForChild("PlayerGui")
hint.Text = "You were followed to this game by " .. newPlayer.Name .. "!"
task.delay(3, function()
if hint then
hint:Destroy()
end
end)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GameplayPaused
Thuộc tính GameplayPaused cho biết nếu người chơi hiện đang ở trong trạng thái tạm dừng ở một nơi có StreamingEnabled được kích hoạt. Nó được đặt trên client nhưng được sao chép đến máy chủ. Để xác định trạng thái tạm dừng, b
Xem thêm:
- Workspace.StreamingEnabled để kiểm tra có phải bật/tắt dịch vụ phát sóng nội dung
- Workspace.StreamingIntegrityMode và Enum.StreamingIntegrityMode cho thêm chi tiết về thời gian dừng chơi.
HasVerifiedBadge
Thuộc tính HasVerifiedBadge Player cho biết có phải người chơi có một Bằng chứng đã được xác minh.
HealthDisplayDistance
The HealthDisplayDistance Player property sets the distance in studs at which this player will see other Humanoid health bars. If set to 0, the health bars will not be displayed. This property is set to StarterPlayer.HealthDisplayDistance by default.
Nếu thanh sức khỏe của một Hình người có thể thấy, bạn có thể cài đặt loại hiển thị bằng cách sử dụng Humanoid.DisplayDistanceType .
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
Thuộc tính LocaleId Player hiển thị ID của người chơi địa phương đã đặt cho tài khoản Roblox của họ. Nó chứa một chuỗi với các mã chữ cái hai (như "en-us") cho người dùng.
Điều này có thể được sử dụng để xác định dân số vùng lãnh thổ của người chơi trò chơi của bạn, và cũng là nơi người dùng sẽ sử dụng cho việc tự động hóa nội dung trong trải nghiệm (xem GuiBase2d.AutoLocalize ) . This property allows access to the player's locale from the máy chủ.
Xem thêm LocalizationService.RobloxLocaleId, ID ngôn ngữ sử dụng cho việc định dạng nội dung nội bộ. Đây sẽ là một giá trị khác khi Roblox vẫn chưa hỗ trợ người người chơiset locale nội tại của mình.
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
Đặc tính này chỉ được đọc từ để xác định thành viên (nó không thể được cài đặt cho một đánh máythành viên khác). Nó chứa một Enum.MembershipType열 của loại thành đánh máytài khoản.
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.MembershipType == Enum.MembershipType.Premium then
-- Take some action specifically for Premium members
end
NameDisplayDistance
The NameDisplayDistance StarterPlayer property sets the distance in studs at which this player will see other Humanoid names. If the property is set to 0, names are hidden. This property is set to StarterPlayer.NameDisplayDistance by default.
Nếu thanh sức khỏe của một Hình người có thể thấy, bạn có thể cài đặt loại hiển thị bằng cách sử dụng Humanoid.DisplayDistanceType .
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
Thuộc tính Neutral xác định có phải người chơi đang ở một đội cụ thể không.
- Khi true , người chơi không ở trong một đội cụ thể. Điều này cũng có nghĩa là Player.Team tính năng sẽ là nil và Player.TeamColor sẽ là trắng.
- Khi false , người chơi đang ở trong một đội cụ thể. Đặt tính Player.Team sẽ tương ứng với Team mà người chơi đang ở, giống như 1> Class.Player.TeamColor1> .
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
if player.Neutral then
print("Player is neutral!")
else
print("Player is not neutral!")
end
ReplicationFocus
Các bộ dữ liệu ReplicationFocus Player tạo ra các bộ dữ liệu tập trung vào bộ phận xung quanh một người chơi. Các hệ thống Roblox khác nhau truyền thông qua mạng (như vật lý, phát sóng, v.v.) tạo ra các bộ dữ liệu tập trung tùy thuộc vào mức độ gần gũi của các
Khi thuộc tính này là nil, nó trở về với hành vi mặc định của nó là điều trị nhân vật của người chơi địa phương PrimaryPart như một điểm dừng lại.
Đặt thuộc tính này chỉ nên được thiết lập trên máy chủ với một Script, chứ không phải một LocalScript. Ghi nhớ rằng thuộc tính này không thay đổi hoặc cập nhật sở hữu mạng của các bộ phận.
Mẫu mã
local Players = game:GetService("Players")
local PLAYER_NAME = "polarpanda16"
local player = Players:WaitForChild(PLAYER_NAME)
local part = Instance.new("Part")
part.Parent = workspace
part.Name = "ReplicationFocusPart"
part.Anchored = true
player.ReplicationFocus = part
RespawnLocation
Nếu được thiết lập, người chơi sẽ respawn ở SpawnLocation đã được cấp. Đặ性 này chỉ có thể được cài đặt thông qua Lua và phải đứng ở một tham chiếu đến một SpawnLocation hợp lệ, mà phải đáp ứng các tiêu chuẩn sau:
- Đối tượng con của Workspace
Nếu RespawnLocation không được cài đặt thành một SpawnLocation hợp lệ thì sẽ áp dụng những quy tắc phát triển mặc định. Để biết thêm thông tin về điều này, xem trang cho SpawnLocation .
Alternatives to RespawnLocation
- Một Player sẽ xuất hiện từ SpawnLocations thuộc về nhóm của họ. Ở một số trường hợp, có thể đơn giản hơn để thay đổi Player.Team của người chơi thay vào đó.
- Thực hiện logicspawn tùy chỉnh của riêng bạn bằng cách sử dụng PVInstance:PivotTo() để di chuyển thủ công Player.Character .
Mẫu mã
local Players = game:GetService("Players")
local function addSpawn(spawnLocation)
-- listen for the spawn being touched
spawnLocation.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if character then
local player = Players:GetPlayerFromCharacter(character)
if player and player.RespawnLocation ~= spawnLocation then
local humanoid = character:FindFirstChildOfClass("Humanoid")
-- make sure the character isn't dead
if humanoid and humanoid:GetState() ~= Enum.HumanoidStateType.Dead then
print("spawn set")
player.RespawnLocation = spawnLocation
end
end
end
end)
end
local firstSpawn
-- look through the workspace for spawns
for _, descendant in pairs(workspace:GetDescendants()) do
if descendant:IsA("SpawnLocation") then
if descendant.Name == "FirstSpawn" then
firstSpawn = descendant
end
addSpawn(descendant)
end
end
local function playerAdded(player)
player.RespawnLocation = firstSpawn
end
-- listen for new players
Players.PlayerAdded:Connect(playerAdded)
-- go through existing players
for _, player in pairs(Players:GetPlayers()) do
playerAdded(player)
end
Team
Thuộc tính Đội là một tham chiếu đến một Class.
Mẫu mã
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
TeamColor
Thuộc tính TeamColor xác định nhóm nào mà một Người chơi liên kết với Team.TeamColor của Team nào. Thay đổi thuộc tính này sẽ thay đổi Player.Team theo Team nào có
Thông thường tốt hơn để thiết lập Player.Team đến các Team được tương ứng nhau thay vì sử dụng giá trị này. Thiết lập giá trị này thường dẫn đến sự lặp lại của giá trị BrickColor
Mẫu mã
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
UserId
The UserId is a Player property that contains a read-only integer that uniquely and consistently identifies every user account on Roblox. unlike the Instance.Name of a Player, which may change according the user's present tên tài khoản, this value will never change for the same tài khoản.
Đặ性 này là cần thiết khi lưu/tải dữ liệu người chơi bằng GlobalDataStores . Sử dụng chìa khóa dữ liệu người chơi để lưu trữ dữ liệu cho mỗi người chơi.
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local player = Players:GetPlayerByUserId(1)
if player then
print("Player with userId 1 is in this server! Their name is: " .. player.Name)
else
print("Player with userId 1 is not in this server!")
end
local BadgeService = game:GetService("BadgeService")
local Players = game:GetService("Players")
local OWNER_ID = 212423 -- can use game.CreatorId for published places
local BADGE_ID = 1
local ownerInGame = false
local function playerAdded(newPlayer)
if newPlayer.UserId == OWNER_ID then
-- if new player is the owner, set ownerInGame to true and give everyone the badge
ownerInGame = true
for _, player in pairs(Players:GetPlayers()) do
-- don't award the owner
if player ~= newPlayer then
BadgeService:AwardBadge(player.UserId, BADGE_ID)
end
end
elseif ownerInGame then
-- if the owner is in the game, award the badge
BadgeService:AwardBadge(newPlayer.UserId, BADGE_ID)
end
end
local function playerRemoving(oldPlayer)
if oldPlayer.UserId == OWNER_ID then
ownerInGame = false
end
end
Players.PlayerAdded:Connect(playerAdded)
Players.PlayerRemoving:Connect(playerRemoving)
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local goldDataStore = DataStoreService:GetDataStore("Gold")
local STARTING_GOLD = 100
local function onPlayerAdded(player)
local playerKey = "Player_" .. player.UserId
local leaderstats = Instance.new("IntValue")
leaderstats.Name = "leaderstats"
local gold = Instance.new("IntValue")
gold.Name = "Gold"
gold.Parent = leaderstats
local success, result = pcall(function()
return goldDataStore:GetAsync(playerKey) or STARTING_GOLD
end)
if success then
gold.Value = result
else
-- Failed to retrieve data
warn(result)
end
leaderstats.Parent = player
end
Players.PlayerAdded:Connect(onPlayerAdded)
Phương Pháp
ClearCharacterAppearance
Hàm ClearCharacterAppearance bỏ qua tất cả Accessory , Shirt , Pants , 1>
Nó không loại bỏ t-shirts , mặt lưới đầu hoặc mặt.
Lợi Nhuận
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local function onChildRemoved(child)
print(child.ClassName, "removed from character")
end
character.ChildRemoved:Connect(onChildRemoved)
player:ClearCharacterAppearance()
--> BodyColors removed from character
--> ShirtGraphic removed from character
--> Shirt removed from character
--> Pants removed from character
--> CharacterMesh removed from character
--> Hat removed from character
--> Shirt removed from character
DistanceFromCharacter
Hàm DistanceFromCharacter Player trả lại khoảng cách giữa đầu nhân vật và điểm Vector3 được cho. Nó trả lại 0 nếu người chơi không có Player.Character .
Điều này hữu ích khi xác định khoảng cách giữa một người chơi và một đối tượng hoặc vị trí khác trong trò chơi.
Nếu bạn muốn xác định khoảng cách giữa hai mô-đun hoặc vị trí không phải người chơi, bạn có thể sử dụng các thành phần theo dõi:
local distance = (position1 - position2).magnitude
Tham Số
Địa điểm mà khoảng cách của người chơi được đo từ.
Lợi Nhuận
Khoảng cách giữa các ghim giữa người chơi và vị trí.
Mẫu mã
local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end
GetJoinData
Trả lại một từ điển chứa các thông tin mô tả cách Người chơi tham gia trải nghiệm. Từ điển này chứa bất kỳ trong số các trường sau đây:
<tbody><tr><th>ID Nguồn</th><td>con số</td><td>The <code>Class.DataModel.GameId</code> of the experience the <code>Player</code> teleported from. Only present if the player teleports to the current experience and if a server calls the teleport function.</td></tr><tr><th>Địa chỉ nguồn</th><td>con số</td><td>The <code>Class.DataModel.PlaceId</code> of the place the <code>Player</code> teleported from. Only present if the player teleports to the current place and a server calls the teleport function.</td></tr><tr><th>Được gọi bởi</th><td>con số</td><td>Class.Player.UserId của người chơi mà đã mời người chơi hiện tại vào trải nghiệm. Sử dụng dữ liệu này để xác định nguồn gốc và trích dẫn phần thưởng.</td></tr><tr><th>Thành viên</th><td>ma trận</td><td>Một mat阵 chứa các <code>Class.Player.UserId</code> số người dùng được dịch chuyển bên cạnh <code>Player</code> . Chỉ hiện diện nếu người dùng dịch chuyển như một phần của nhóm.</td></tr><tr><th>Dữ liệu di chuyển</th><td>biến thể</td><td>Phản ánh <code>teleportData</code> được định nghĩa trong teleport gốc. Hữu ích cho việc chia sẻ thông tin giữa các máy chủ mà người chơi dịch chuyển. Chỉ hiện diện nếu <code>teleportData</code> đã được định nghĩa và một máy chủ gọi hành động dịch chuyển.</td></tr><tr><th>Dữ liệu khởi chạy</th><td>chuỗi</td><td>Một chuỗi chuẩn hoá JSON đơn giản được mã hóa bằng cách sử dụng một đường dẫn liên kết sâu <a href="../../../production/promotion/deeplinking.md">đến URL hoặc Class.ExperienceInviteOptions.LaunchData</a> .</td></tr></tbody>
Chìa khóa | Loại giá trị | Mô tả |
---|
NhậnJoinData và TeleportData
Nếu một máy chủ khởi tạo thẻ teleport của người chơi, thì dữ liệu người chơi được trả lại bởi phương thức này bao gồm dữ liệu người chơi đang dịch chuyển. Phương thức Player:GetJoinData() chỉ có thể được sử dụng để l
Ngoài ra, TeleportService:GetLocalPlayerTeleportData() , Player:GetJoinData() chỉ cung cấp dữ liệu dịch chuyển đáp ứng các tiêu chuẩn an toàn sau đây:
- Nó đã được gửi bởi một máy chủ Roblox trong vòng 48 giờ qua.
- Nó đã được đảm bảo đã được gửi với cái này Player .
- SourcePlaceId và SourceGameId được đảm bảo là nơi và vũ trụ dữ liệu đã được gửi. Điều này có nghĩa là bạn có thể xác minh dữ liệu dịch chuyển đến từ một địa điểmđược chấp nhận.
Khi dữ liệu này được truyền từ client, nó vẫn có thể bị lạm dụng bởi một kẻ tấn công. Dữ liệu nhạy cảm như tiền tệ người chơi nên được truyền qua giải pháp bảo mật như Khoảng đếm bộ nhớ.
Lợi Nhuận
Một từ điển chứa giá trị PlaceId và UserId (xem bảng trong mô miêu tả).
Mẫu mã
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local analyticsStore = DataStoreService:GetDataStore("Analytics")
local ALLOWED_SOURCES = {
"twitter";
"youtube";
"discord";
}
local function onPlayerAdded(player)
local source = player:GetJoinData().LaunchData
-- check if the provided source is valid
if source and table.find(ALLOWED_SOURCES, source) then
-- update the data store to track the source popularity
local success, result = pcall(analyticsStore.IncrementAsync, analyticsStore, source)
if success then
print(player.Name, "joined from", source, "- total:", result)
else
warn("Failed to record join source: " .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local DIRECT_JOIN_URL = "https://www.roblox.com/games/start?placeId=%d&launchData=%s"
local textBox = script.Parent
local function generateReferralURL(player)
return DIRECT_JOIN_URL:format(
game.PlaceId,
player.UserId
)
end
local function highlightAll()
if -- avoid recursive property updates
textBox:IsFocused()
and not (
textBox.SelectionStart == 1
and textBox.CursorPosition == #textBox.Text + 1
)
then
textBox.SelectionStart = 1
textBox.CursorPosition = #textBox.Text + 1
end
end
textBox.Focused:Connect(highlightAll)
textBox:GetPropertyChangedSignal("SelectionStart"):Connect(highlightAll)
textBox:GetPropertyChangedSignal("CursorPosition"):Connect(highlightAll)
textBox.TextEditable = false
textBox.ClearTextOnFocus = false
textBox.Text = generateReferralURL(player)
local HttpService = game:GetService("HttpService")
local DATA_CHARACTER_LIMIT = 200
local function encodeTableAsLaunchData(data)
-- convert the table to a string
local jsonEncodedData = HttpService:JSONEncode(data)
if #jsonEncodedData <= DATA_CHARACTER_LIMIT then
-- escape potentially invalid characters, such as spaces
local urlEncodedData = HttpService:UrlEncode(jsonEncodedData)
return true, urlEncodedData
else
-- report character limit error
return false, ("Encoded table exceeds %d character limit"):format(DATA_CHARACTER_LIMIT)
end
end
local sampleData = {
joinMessage = "Hello!";
urlCreationDate = os.time();
magicNumbers = {
534;
1337;
746733573;
};
}
local success, encodedData = encodeTableAsLaunchData(sampleData)
if success then
print(encodedData)
else
warn("failed to encode launch data: " .. encodedData)
end
local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local launchData = player:GetJoinData().LaunchData
if launchData then
-- attempt to decode the data
local success, result = pcall(HttpService.JSONDecode, HttpService, launchData)
if success then
print(player.Name, "joined with data:", result)
else
-- this is probably due to the user messing with the URL
warn("Failed to parse launch data:" .. result)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local approvedPlaceIds = { 1 } -- insert approved PlaceIds here
local function isPlaceIdApproved(placeId)
for _, id in pairs(approvedPlaceIds) do
if id == placeId then
return true
end
end
return false
end
local function onPlayerAdded(player)
local joinData = player:GetJoinData()
-- verify this data was sent by an approved place
if isPlaceIdApproved(joinData.SourcePlaceId) then
local teleportData = joinData.TeleportData
if teleportData then
local currentLevel = teleportData.currentLevel
print(player.Name .. " is on level " .. currentLevel)
end
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GetMouse
Hàm GetMouse Player trả về Class.Mouse đang được sử dụng bởi khách hàng. Cấu hình người chơi có thể được sử dụng để theo dõi sự nhập력 chuột của người chơi bao gồm các nút chuột trái và phải và các hoạt động và vị trí.
Dịch vụ UserInputService cung cấp thêm chức năng và sự kiện để theo dõi sự nhập력 của người dùng - đặc biệt cho các thiết bị không sử dụng chuột.
Ghi chú:
- Món đồ này phải được sử dụng trong một LocalScript để hoạt động như mong đợi trực tuyến.
- Sau một bản cập nhật vào tháng 7 năm 2014, icon chuột giờ đây có thể được thiết lập bằng cách này.
Lợi Nhuận
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onButton1Down()
print("Button 1 is down")
end
mouse.Button1Down:Connect(onButton1Down)
GetNetworkPing
GetNetworkPing trả lại latency mạng độc lập của Player trong giây lát. "Ping" là một đo lường thời gian mà dữ liệu được gửi từ client đến máy chủ, sau đó quay trở lại. Nó không liên quan đến việc giải nhiệt dữ liệu hoặc xử lý.
Đối với phía client LocalScripts , chức năng này chỉ có thể được gọi trên Players.LocalPlayer . Chức năng này hữu ích để xác định và debug các vấn đề xảy ra trong các tình huống mạng cao. Nó cũng hữu ích đ
Lợi Nhuận
HasAppearanceLoaded
Hàm HasAppearanceLoaded Player trả về có hay không tải xuống nhìn ngoài hình dạng của người chơi's Player.Character .
Ngoại hình của một người chơi bao gồm các mặt hàng như Class.Shirt của người chơi, Class.Pants và Class.Accessory|Accessories .
Điều này hữu ích khi xác định apakah hiển thị của một người chơi đã được tải sau khi họ tham gia trò chơi, which can be tracked using the Players.PlayerAdded event.
Lợi Nhuận
Một biểu tượng cho biết có hay không tải xuống nhân vật của người chơi.
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local loaded = player:HasAppearanceLoaded()
print(loaded)
while not loaded do
loaded = player:HasAppearanceLoaded()
print(loaded)
task.wait()
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsVerified
Trả lại một giá trị true để cho thấy tình trạng tháixác minh của người chơi. Khi true, người chơi được xác minh. Xác minh bao gồm, nhưng không giới hạn, số điện thoại non-VOIP hoặc số ID của chính phủ.
Khi thực hiện IsVerified , hãy thực hiện cẩn thận để đảm bảo rằng thực hiện không vô tình chặn tất cả người dùng không được xác minh.
Lưu ý rằng phương thức này chỉ có thể được gọi trên máy chủ back-end. Gọi nó từ bên client dẫn đến một lỗi. Ngoài ra, phương thức này sẽ luôn trả kết quả false trong Studio.
Lợi Nhuận
Một biểu tượngBoolean cho biết có phải xác minh người chơi không.
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player:IsVerified())
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Kick
Phương thức Kick() cho phép một trải nghiệm tách biệt một khách hàng và tùy chọn cung cấp một thông điệp cho người dùng kết nối. Điều này hữu ích cho việc kiểm duyệt các người dùng có ác tính. Bạn chỉ nên cho phép các người dùng được trả
Gọi phương thức này trên một Player với không có argument kết nối người dùng từ máy chủ và cung cấp một thông báo thông tin nhắnmặc định. Gọi phương thức này trên một Player cùng với một chuỗi làm thay thế thông báo mặc định bằng chuỗ
Khi sử dụng phương pháp này từ một LocalScript, chỉ có client của người dùng địa phương mới có thể bị kick.
Tham Số
Thông điệp để hiển thị người dùng khi kick.
Lợi Nhuận
Move
Hành động Player chức năng khiến cho nhân vật của người chơi đi trong hướng được cho đến khi dừng, hoặc bị người chơi (bằng cách sử dụng các nút điều khiển của họ) ngăn cản.
Điều này hữu ích khi lập trình NPC Humanoids di chuyển xung quanh bản đồ - nhưng không được điều khiển bởi một người chơi thực tế.
Lưu ý rằng thứ hai của chức năng chỉ định có nên di chuyển người chơi đến các thông số thế giới ( false ) hay người chơi của Camera ( 1> true1> ) của người chơi.
Tham Số
Hướng Vector3 mà người chơi nên di chuyển.
Một biểu tượngBoolean cho biết có nên di chuyển người chơi so với máy ảnh của người chơi.
Lợi Nhuận
Mẫu mã
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
-- Wait for the player's character and humanoid, which must exist before calling :Move()
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
character:WaitForChild("Humanoid")
-- The player will move until they are 50 studs away from the camera's position at the time of running
localPlayer:Move(Vector3.new(0, 0, -50), true)
SetAccountAge
Hàm SetAccountAge tạo ra Player.AccountAge của người chơi trong ngày.
Nó được sử dụng để thiết lập Player tính năng mô tả cách lâu đài một tài khoản của người chơi đã đăng ký trong ngày.
Điều này không thiết lập tuổi của người chơi trên tài khoản, nhưng tuổi của tài khoản chính đối với khi nó được tạo lần đầu tiên.
Tham Số
Ngày tuổi của tài khoản trong ngày.
Lợi Nhuận
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
local Players = game:GetService("Players")
local MAX_AGE_NEW_PLAYER = 7 -- one week
local MIN_AGE_VETERAN = 365 -- one year
-- This function marks a part with text using a BillboardGui
local function mark(part, text)
local bbgui = Instance.new("BillboardGui")
bbgui.AlwaysOnTop = true
bbgui.StudsOffsetWorldSpace = Vector3.new(0, 2, 0)
bbgui.Size = UDim2.new(0, 200, 0, 50)
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0) -- Fill parent
textLabel.Text = text
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.TextStrokeTransparency = 0
textLabel.BackgroundTransparency = 1
textLabel.Parent = bbgui
-- Add to part
bbgui.Parent = part
bbgui.Adornee = part
end
local function onPlayerSpawned(player, character)
local head = character:WaitForChild("Head")
if player.AccountAge >= MIN_AGE_VETERAN then
mark(head, "Veteran Player")
elseif player.AccountAge <= MAX_AGE_NEW_PLAYER then
mark(head, "New Player")
else
mark(head, "Regular Player")
end
end
local function onPlayerAdded(player)
-- Listen for this player spawning
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
SetSuperSafeChat
Đây là phương thức điều chỉnh liệu người chơi có thấy cuộc trò chuyện bị lọc bởi TextService:FilterStringAsync() hay không thông thường.
local Players = game:GetService("Players")local player = Players.LocalPlayerplayer:SetSuperSafeChat(true)
Bất kể có phải bộ lọc trò chuyện đã được bật hay không, tất cả các cuộc trò chuyện nên được lọc bởi TextService khi phát sóng cho người chơi khác hoặc trên màn hình của người chơi. TextService:FilterStringAsync()
Tham Số
Một biểu tượngBoolean cho phép bạn biết có hay không phải người chơi nhìn thấy cuộc trò chuyện lọc.
Lợi Nhuận
GetFriendsOnline
Hàm này trả về một dàn bạn bè trực tuyến, giới hạn bởi giá trị maxFriends. Hàm sử dụng một đệm 30 giây.
Trong mảng đã trả lại, một số trường chỉ hiện diện cho một số loại địa điểm nhất định. Ví dụ, PlaceId sẽ không hiện diện khi LocationType là 0 (Mobile Website).
<tbody><tr><td><b>VisitorId</b></td><td>con số</td><td>Class.Player.UserId của bạn bè.</td></tr><tr><td><b>Tên người chơi</b></td><td>chuỗi</td><td>Tên người bạn bè.</td></tr><tr><td><b>Tên hiển thị</b></td><td>chuỗi</td><td>Class.Player.DisplayName của bạn bè.</td></tr><tr><td><b>LastOnline</b></td><td>chuỗi</td><td>Khi người bạn cuối cùng đã trực tuyến.</td></tr><tr><td><b>Đang trực tuyến</b></td><td>boolean</td><td>Nếu bạn bè hiện đang trực tuyến.</td></tr><tr><td><b>LastLocation.</b></td><td>chuỗi</td><td>Tên của địa điểm bạn bè hiện tại.</td></tr><tr><td><b>PlaceId.</b></td><td>con số</td><td>ID nơi của vị trí cuối cùng của người bạn bè.</td></tr><tr><td><b>GameId.</b></td><td>chuỗi</td><td>DataModel/JobId của vị trí cuối cùng của người bạn bè.</td></tr><tr><td><b>Loại địa chỉ</b></td><td>con số</td><td>Loại địa điểm của vị trí cuối cùng của người bạn bè:<table>0 > Trang web di động > 1>Mobile InGame1> >0> 2>Trang web team2> >1> 1>Mobile InGame1> >0><tbody>4>Trang web</tbody>4> >3></table></td></tr></tbody>
Tên | Kiểu | Mô tả |
---|
Tham Số
Số bạn bè trực tuyến tối đa để quay lại.
Lợi Nhuận
Một từ điển của bạn bè trực tuyến (xem bảng trên).
Mẫu mã
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local success, result = pcall(player.GetFriendsOnline, player, 10)
if success then
for _, friend in pairs(result) do
print(friend.UserName)
end
else
warn("Failed to get online players: " .. result)
end
GetRankInGroup
Hàm GetRankInGroup Player lưu thứ hạng của người chơi trong nhóm như một số tập trung từ 0 đến 255, nơi 0 là một non- member và 255 là chủ sở hữu của nhóm.
Sử dụng này trong một Script , chứ không phải một LocalScript , sẽ không cho bạn thông tin mới nhất. Nếu một người rời khỏi nhóm trong khi họ đang ở trò chơi, GetRankInGroup vẫn sẽ nghĩ rằng họ đang ở trong nh
Điều này là do phương thức lưu trữ kết quả, vì vậy nhiều lần gọi GetRankInGroup trên cùng một người chơi với cùng một ID nhóm sẽ cho kết quả tương tự như khi phương thức được gọi lần đầu tiên với cùng một ID nhóm được cung cấp. Hành vi cắm trại được thực hiệ
Tham Số
The groupId of the specified nhóm.
Lợi Nhuận
Thứ hạng của người chơi trong nhóm.
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:GetRankInGroup(2) == 255 then
print("Player is the owner of the group, 'LOL'!")
else
print("Player is NOT the owner of the group, 'LOL'!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
GetRoleInGroup
Hàm GetRoleInGroup Player trả về vai trò của người chơi trong nhóm như một chuỗi, hoặc Khách mời nếu người chơi không phải là một phần của nhóm.
Sử dụng này trong một Script , chứ không phải một LocalScript , sẽ không cho bạn thông tin mới nhất. Nếu một người rời khỏi nhóm trong khi họ đang ở trò chơi, GetRoleInGroup vẫn sẽ nghĩ rằng họ đang ở trong nh
Điều này là do phương thức lưu trữ kết quả, vì vậy nhiều lần gọi GetRoleInGroup trên cùng một người chơi với cùng một ID nhóm sẽ cho kết quả tương tự như khi phương thức được gọi lần đầu tiên với cùng một ID nhóm. Hành vi lưu trữ này được thực hiện trên cơ sở
Tham Số
The groupId of the specified nhóm.
Lợi Nhuận
Vai trò của người chơi trong nhóm được xác định, hoặc Khách mời nếu người chơi không phải là thành viên.
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
print("Player is ranked as '", player:GetRoleInGroup(2), "' in group, 'LOL'!")
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsFriendsWith
Hành động này gửi một yêu cầu đến trang Roblox bằng cách hỏi liệu một người chơi là bạn của một người chơi khác, dựa trên Player.UserId của người đó. Hành động này ẩn kết
Tham Số
Class.Player.UserId của người chơi được chỉ định.
Lợi Nhuận
Một biểu tượngBoolean cho biết một người chơi là bạn của người chơi đó.
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsFriendsWith(146569) then
print(player.Name .. " is friends with gordonrox24!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
IsInGroup
Hàm IsInGroup Player gửi một yêu cầu đến trang Roblox bằng cách hỏi liệu một người có phải là thành viên của một nhóm, dựa trên ID của nhóm đó.
Sử dụng này trong một Script , chứ không phải một LocalScript , sẽ không cho bạn thông tin mới nhất. Nếu một người rời khỏi nhóm trong khi họ đang ở trò chơi, IsInGroup vẫn sẽ nghĩ rằng họ đang ở trong nhóm đ
Điều này là do phương thức lưu trữ kết quả, vì vậy nhiều lần gọi IsInGroup trên cùng một người chơi với cùng một ID nhóm sẽ cho kết quả tương tự như khi phương thức được gọi lần đầu tiên với cùng một ID nhóm. Hành vi cắm trại được thực hiện trên cơ sở mỗi máy
Tham Số
The groupId of the specified nhóm.
Lợi Nhuận
Một biểu tượngBoolean cho biết có phải người chơi ở nhóm được chỉ định không.
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
if player:IsInGroup(7) then
print("Player is in the Roblox Fan club!")
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
LoadCharacter
Hàm LoadCharacter Player tạo một nhân vật mới cho người chơi, bỏ qua cái cũ. Nó cũng xóa màn hình Backpack và PlayerGui của người chơi.
Điều này hữu ích trong trường hợp bạn muốn tái tải nhân vật mà không phải giết người chơi, chẳng hạn như khi bạn muốn tải một nhân vật mới sau khi thay đổi Player.CharacterAppearance của người chơi.
Ghi chú: Chức năng này giống như Player:LoadCharacterBlocking() , nhưng yêu cầu được xử lý asynchronously thay vì được xử lý bằng cách nhồi máu. Điều này có nghĩa là các tác vụ khác sẽ có thể tiếp tục khi nhân vật đang được tải, bao gồm
Sau khi gọi LoadCharacter cho một người chơi cụ thể, không được khuyến nghị gọi nó một lần nữa cho người chơi đó cho đến khi sự kiện Player.CharacterAppearanceLoaded của người đó đã kết thúc.
Sự kiện tải nhân vật
Gọi Player:LoadCharacter() với một Avatar R15 sẽ kích hoạt các sự kiện trong thứ tự sau đây (Ghi chú: R6 đặt hàng khác nhau):
- Player.Character bộ dàn
- Player.CharacterAdded ngọn lửa
- Player.Changed fires with a value of "Nhân vật"
- Nhân vật xuất hiện ban đầu
- Player.CharacterAppearanceLoaded bị cháy
- Character.Parent đặt vào DataModel
- Rig nhân vật, và nhân vật thưởng
- Nhân vật di chuyển đến vị trí đẻ trứng
- LoadCharacter trả lại
Lợi Nhuận
Mẫu mã
local Players = game:GetService("Players")
local RESPAWN_DELAY = 5
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
task.wait(RESPAWN_DELAY)
player:LoadCharacter()
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
player:LoadCharacter()
end
Players.PlayerAdded:Connect(onPlayerAdded)
LoadCharacterWithHumanoidDescription
Hành động này tạo một avatar nên nó có tất cả mọi thứ trong HumanoidDescription .
Sau khi gọi LoadCharacterWithHumanoidDescription cho một người chơi cụ thể, không được khuyến nghị gọi chức năng một lần nữa cho người chơi đó cho đến sau khi sự kiện Player.CharacterAppearanceLoaded của người chơi đó kết thúc.
Xem thêm:
- Hệ thống mô tả hình người, một bài viết giải thích hệ thống mô tả hình người với chi tiết cao hơn và cung cấp một số ví dụ script
Tham Số
Một HumanoidDescription chứa các đặc tính như các bộ phận/màu cơ thể, thước đo cơ thể, phụ kiện, quần trạng phụcvà hoạt họa sẽ được trang bị cho nhân vật đã tải.
Lợi Nhuận
Mẫu mã
local Players = game:GetService("Players")
Players.CharacterAutoLoads = false
local function onPlayerAdded(player)
local humanoidDescription = Instance.new("HumanoidDescription")
humanoidDescription.HatAccessory = "2551510151,2535600138"
humanoidDescription.BodyTypeScale = 0.1
humanoidDescription.ClimbAnimation = 619521311
humanoidDescription.Face = 86487700
humanoidDescription.GraphicTShirt = 1711661
humanoidDescription.HeadColor = Color3.new(0, 1, 0)
player:LoadCharacterWithHumanoidDescription(humanoidDescription)
end
Players.PlayerAdded:Connect(onPlayerAdded)
RequestStreamAroundAsync
Đối với các trải nghiệm mà streaming được bật, các yêu cầu người dùng phải chảy vào các khu vực người chơi (như bộ phậ
Hiệu ứng của cuộc gọi này sẽ tạm thời và không có đảm bảo về những gì sẽ được phát sóng xung quanh vị trí được xác định. Giới hạn bộ nhớ client và điều kiện mạng có thể ảnh hưởng đến những gì sẽ có sẵn trên client.
Cảnh Báo Sử Dụng
Yêu cầu phát sóng xung quanh một khu vực không phải là một lời hứa rằng nội dung sẽ hiện diện khi yêu cầu hoàn tất, vì phát sóng bị ảnh hưởng bởi băng thông mạng của khách hàng, hạn chế nhớ, và các yếu tố khác.
Tham Số
Địa điểm trên thế giới mà yêu cầu phát sóng.
Thời gian giới hạn yêu cầu.
Lợi Nhuận
Sự Kiện
CharacterAdded
Sự kiện CharacterAdded khi một nhân vật của người chơi được tạo (hoặc respawn) (hoặc sớm sau khi đặt Player.Character vào giá trị non- nil hoặc gọi 1> Class.Player:LoadCharacter()1> , nơi n
Điều này có thể được sử dụng cùng với sự kiện Player.CharacterRemoving, which fires ngay trước khi nhân vật của một người được xóa, thường là sau khi một người chết. Như vậy, c
Lưu ý rằng Humanoid và các bộ phận cơ thể mặc định của nó (đầu, ngực và các chi d
Tham Số
Một instace của nhân vật đã sinh sản/respawn.
Mẫu mã
local Players = game:GetService("Players")
local function onCharacterAdded(character)
print(character.Name .. " has spawned")
end
local function onCharacterRemoving(character)
print(character.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
-- This table maps "Player" objects to Vector3
local respawnLocations = {}
local function onCharacterAdded(character)
local player = Players:GetPlayerFromCharacter(character)
-- Check if we saved a respawn location for this player
if respawnLocations[player] then
-- Teleport the player there when their HumanoidRootPart is available
local hrp = character:WaitForChild("HumanoidRootPart")
-- Wait a brief moment before teleporting, as Roblox will teleport the
-- player to their designated SpawnLocation (which we will override)
RunService.Stepped:wait()
hrp.CFrame = CFrame.new(respawnLocations[player] + Vector3.new(0, 3.5, 0))
end
end
local function onCharacterRemoving(character)
-- Get the player and their HumanoidRootPart and save their death location
local player = Players:GetPlayerFromCharacter(character)
local hrp = character:FindFirstChild("HumanoidRootPart")
if hrp then
respawnLocations[player] = hrp.Position
end
end
local function onPlayerAdded(player)
-- Listen for spawns/despawns
player.CharacterAdded:Connect(onCharacterAdded)
player.CharacterRemoving:Connect(onCharacterRemoving)
end
local function onPlayerRemoved(player)
-- Forget the respawn location of any player who is leaving; this prevents
-- a memory leak if potentially many players visit
respawnLocations[player] = nil
end
-- Note that we're NOT using PlayerRemoving here, since CharacterRemoving fires
-- AFTER PlayerRemoving, we don't want to forget the respawn location then instantly
-- save another right after
Players.PlayerAdded:Connect(onPlayerAdded)
Players.ChildRemoved:Connect(onPlayerRemoved)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local function destroyAccessory(object)
if object:IsA("Hat") or object:IsA("Accessory") then
object:Destroy()
end
end
local function onCharacterAdded(character)
-- Wait a brief moment before removing accessories to avoid the
-- "Something unexpectedly set ___ parent to NULL" warning
RunService.Stepped:Wait()
-- Check for any existing accessories in the player's character
for _, child in pairs(character:GetChildren()) do
destroyAccessory(child)
end
-- Hats may be added to the character a moment after
-- CharacterAdded fires, so we listen for those using ChildAdded
character.ChildAdded:Connect(destroyAccessory)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
CharacterAppearanceLoaded
Sự kiện này bắt đầu khi một hình ảnh đầy đủ của một Player.Character đã được thêm vào.
Một Player.Character thường có một loạt các đối tượng điều chỉnh nhìn bên ngoại hình, bao gồm Accoutrements , Class.Shirt|Shirts
Một trong những mục dùng cho sự kiện này là để đảm bảo tất cả các phụ kiện đã được tải trước khi bị phá hủy. Xem dưới đây để có một ví dụ về điều này.
Tham Số
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
CharacterRemoving
Sự kiện CharacterRemoving ngay trước khi nhân vật của một người được xóa, chẳng hạn như khi người chơi đang respawn.
Sự kiện này có thể được sử dụng cùng với sự kiện Player.CharacterAdded, which fires when a player's character spawns or respawns. Ví ví dụ / trường hợp, if bạn muốn in một thông điệp mỗi khi một người chơi spawns hoặc respawns:
local Players = game:GetService("Players")
local function onCharacterSpawned(player)
print(player.Name .. " is spawning")
end
local function onCharacterDespawned(player)
print(player.Name .. " is despawning")
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function()
onCharacterSpawned(player)
end)
player.CharacterRemoving:Connect(function()
onCharacterDespawned(player)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Sự kiện này chỉ được quan tâm đến Character của một Player . Nếu bạn thay vào đó cần phải theo dõi khi một người chơi tham gia/rời khỏi trò chơi, hãy sử dụng sự kiện Class.Play
Tham Số
Một instace của nhân vật đang được xóa.
Mẫu mã
game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)
Chatted
Sự kiện trò chuyện bắt đầu khi một Player nhập tin nhắn và nhấn Enter trong các thanh trò chuyện được cung cấp bởi Roblox. Điều này được thực hiện bằng cách sử dụng một số liên kết Lua bởi script trò ch
Lệnh trò chuyện
Sử dụng sự kiện này và một số hành động biến đổi chuỗi như string.sub() và Library
Lọc
Văn bản tin nhắn được thiết lập với sự kiện này là không lọc . Nếu bạn đang hiển thị nhập người chơi như trò chuyện với những người chơi khác trong bất kỳ hình dạng nào, nó phải được lọc bằng cách sử dụng <
Tham Số
Nội dung tin nhắn người chơi nhập trong trò chuyện.
Deprecated. Đối với các tin nhắn trò chuyện, đây là người chơi mà người dùng đã đặt mục tiêu của cuộc trò chuyện.
Mẫu mã
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onChatted(message)
-- do stuff with message and player
print(message)
end
player.Chatted:Connect(onChatted)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
local teamPlaying = Teams.Playing
local teamSpectators = Teams.Spectating
local playCommand = "/play"
local function play(player)
player.Team = teamPlaying
player.TeamColor = teamPlaying.TeamColor
-- Respawn the player (moves them to spawn location)
player:LoadCharacter()
end
local function onPlayerDied(player, _character)
-- When someone dies, put them on the spectator team
player.Team = teamSpectators
end
local function onPlayerSpawned(player, character)
local human = character:WaitForChild("Humanoid")
human.Died:Connect(function()
onPlayerDied(player, character)
end)
end
local function onPlayerChatted(player, message)
if message:sub(1, playCommand:len()):lower() == playCommand then
play(player)
end
end
local function onPlayerAdded(player)
if player.Character then
onPlayerSpawned(player, player.Character)
end
player.CharacterAdded:Connect(function()
onPlayerSpawned(player, player.Character)
end)
player.Chatted:Connect(function(message, _recipient)
onPlayerChatted(player, message)
end)
end
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")
-- Command to choose a team (note the trailing space)
local joinCommand = "/jointeam "
local function findTeamByName(name)
-- First, check for the exact name of a team
if Teams:FindFirstChild(name) then
return Teams[name]
end
-- Let's check for case-insensitive partial matches, like "red" for "Red Robins"
for _, team in pairs(Teams:GetChildren()) do
if team.Name:sub(1, name:len()):lower() == name:lower() then
return team
end
end
-- If we get to this point, no team matched the one we were looking for :(
end
local function onPlayerChatted(player, message, _recipient)
-- Note: string.sub(message, ...) is the same as message:sub(...)
if message:sub(1, joinCommand:len()):lower() == joinCommand:lower() then
-- Matched "/JOINTEAM xyz" to our join command prefix "/jointeam "
local teamName = message:sub(joinCommand:len() + 1) -- Cut out the "xyz" from "/jointeam xyz"
local team = findTeamByName(teamName)
if team then
-- Set the team!
player.Team = team
player.Neutral = false
else
-- Tell the player that team could not be found :(
player.Team = nil
player.Neutral = true
end
end
end
local function onPlayerAdded(player)
player.Chatted:Connect(function(...)
onPlayerChatted(player, ...)
end)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Idled
Sự kiện này bắt đầu khoảng hai phút sau khi engine game classify Class.Player|player như đang chờ. Thời gian là số giây đã trôi qua kể từ thời điểm đó. Sự kiện tiếp tục bắt đầu mỗi 30 giây cho đến khi người chơi đang nhàn rỗinhư thế.
Sự kiện này chỉ được kích hoạt trên các tập lệnh client, không phải trên các tập lệnh server; sử dụng một RemoteEvent để thông báo cho máy chủ về những người chơi chờ đã.
Roblox tự động kết nối lại người chơi đã được nhàn rỗi trong ít nhất 20 phút, vì vậy sự kiện này hữu ích để cảnh báo người chơi sẽ bị kết nối lại sớm, kết nối người chơi trước khi 20 phút đó, hoặc các tính năng khác xa khỏi bàn phím (AFK).
Để theo dõi tần suất cắt kết nối tự động xảy ra, hãy cố gắng liên hệ sự kiện này với các sự kiện xảy ra của Players.PlayerRemoving .
Tham Số
Thời gian trong giây mà người chơi đã không làm nhàn rỗi.
Mẫu mã
local Players = game:GetService("Players")
local function onIdled(idleTime)
print(`Player has been idle for {idleTime} seconds`)
if idleTime > 900 then
-- warn player that they've been idle for 15 minutes
-- and will be disconnected in another 5
end
end
Players.LocalPlayer.Idled:Connect(onIdled)
OnTeleport
Được kích hoạt khi trạng thái dịch chuyển của một người thay đổi. Sự kiện này hữu ích để phát hiện xem dịch chuyển có thành công hay không.
TeleportState là gì?
Khi một yêu cầu dịch chuyển được thực hiện bằng cách sử dụng TeleportService, có một loạt các bước trước khi Player được dịch chuyển. Giá trị hiện tại của bước được đại diện bằng giá trị Enum.Tele
Tham Số
Class.Player đã có một Player .
Tên của nơi sinh ra để dịch chuyển, nếu TeleportService:TeleportToSpawnByName() đã được sử dụng.
Mẫu mã
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local playerOnTeleport = player
player.OnTeleport:Connect(function(teleportState, _placeId, _spawnName)
if teleportState == Enum.TeleportState.Started then
print("Teleport started (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.WaitingForServer then
print("Teleport waiting for server (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.InProgress then
print("Teleport in progress (" .. playerOnTeleport.Name .. ")")
elseif teleportState == Enum.TeleportState.Failed then
print("Teleport failed! (" .. playerOnTeleport.Name .. ")")
end
end)
end)