Player
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
Player เป็นวัตถุลูกค้าที่กำลังเชื่อมต่ออยู่ เหล่านี้จะถูกเพิ่มไปยังบริการ Players เมื่อผู้เล่นใหม่เชื่อมต่อแล้วจะถูกลบออกเมื่อพวกเขาในที่สุดจะออกจากเซิร์ฟเวอร์
สมบัติ Instance.Name ประกอบด้วยชื่อผู้ใช้ของผู้เล่น เมื่อบันทึกข้อมูลเกี่ยวกับผู้เล่นคุณควรใช้ Player.UserId ของผู้เล่นเนื่องจากเป็นไปได้ที่ผู้เล่นจะเปลี่ยนชื่อผู้ใช้
มีวิธีที่คล้ายกันหลายวิธีใน Players บริการสำหรับการทำงานกับวัตถุผู้เล่น ใช้วิธีเหล่านี้เหนือวิธี Instance ของพวกเขา:
- คุณสามารถรับตารางของวัตถุผู้เล่นปัจจุบันโดยใช้ Players:GetPlayers() อีกครั้งใช้นี้แทนที่ Instance:GetChildren()
- เพื่อตรวจจับการเพิ่มของวัตถุผู้เล่น, มันเป็นการดีกว่าที่จะใช้เหตุการณ์ Players.PlayerAdded (แทนที่จะใช้ Instance.ChildAdded บนบริการ Players ของคุณ)
- เช่นเดียวกันคุณสามารถตรวจจับการลบของวัตถุผู้เล่นโดยใช้ Players.PlayerRemoving ซึ่งจะเปิดให้ใช้เพียง ก่อน วัตถุผู้เล่นจะถูกลบ (แทนที่จะเป็น
ตัวอย่างโค้ด
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)
สรุป
คุณสมบัติ
อธิบายอายุบัญชีผู้เล่นในวัน
กำหนดว่าผู้ใช้ที่ใช้อุปกรณ์มือถือจะกระโดดอัตโนมัติเมื่อโดนสิ่งกีดขวาง
ระยะทางสูงสุดที่กล้องผู้เล่นสามารถซูมออกได้
ระยะทางอย่างน้อยที่สามารถซูมได้ของกล้องผู้เล่น
เปลี่ยนโหมดกล้องเป็น "คนแรก" หรือ "คนที่สาม"
กำหนดว่าตัวละครจะโหลดเมื่อผู้เล่นเกิด รูปลักษณ์
A Model ควบคุมโดยผู้เล่นที่มี Humanoid ส่วนตัวองกาย สคริปต์ และวัตถุอื่นๆ
กำหนดรหัสผู้ใช้ของบัญชีที่มีตัวละครปรากฏขึ้นสำหรับผู้เล่นของ character
ตั้งค่าวิธีการที่เครื่องมือกล้องเริ่มต้นจัดการวัตถุระหว่างกล้องและผู้เล่น
กำหนดโหมดการเคลื่อนไหวของกล้องผู้เล่นเมื่อใช้เวอร์ชันที่ติดตั้งบนเดสก์ท็อปของ Roblox
กำหนดโหมดการเคลื่อนที่ตัวละครของผู้เล่นเมื่อใช้เวอร์ชันที่ติดตั้งบนเดสก์ท็อปของ Roblox
กำหนดว่าผู้เล่นสามารถเปิด/ปิดการล็อคเมาส์ได้
กำหนดโหมดการเคลื่อนไหวของกล้องผู้เล่นเมื่อใช้อุปกรณ์สัมผัส
กำหนดโหมดการเคลื่อนที่ตัวละครของผู้เล่นเมื่อใช้อุปกรณ์สัมผัส
ชื่อแสดงผลของ UserId ที่เกี่ยวข้องกับผู้เล่น
อธิบายรหัสผู้ใช้ของผู้เล่นที่ถูกติดตามเข้าสู่เกมโดยผู้เล่น
ว่าการเล่นเกมของผู้เล่นอยู่ในระหว่างหยุดชั่วคราวหรือไม่
ระบุว่าผู้เล่นมีตราที่ได้รับการยืนยันแล้วหรือไม่
ตั้งค่าระยะที่ผู้เล่นจะเห็นแถบสุขภาพของมนุษย์อื่น หากตั้งค่าเป็น 0 แถบสุขภาพจะไม่ปรากฏ
สมบัตินี้แสดงรหัสภาษาที่ผู้เล่นในเกมตั้งไว้สำหรับบัญชี Roblox ของพวกเขา
อธิบายประเภทสมาชิกบัญชี
ตั้งค่าระยะที่ผู้เล่นนี้จะเห็นชื่อของมนุษย์อื่น ๆ หากตั้งค่าไว้ที่ 0 ชื่อจะถูกซ่อน
กำหนดว่าผู้เล่นอยู่ในทีมที่เฉพาะเจาะจงหรือไม่
ตั้งค่าให้ชิ้นส่วนมุ่งเน้นการเลียนแบบ
หากตั้งค่าไว้ ผู้เล่นจะเกิดใหม่ที่ SpawnLocation ที่กำหนด
กำหนดทีมที่ผู้เล่นเกี่ยวข้อง
กำหนดทีมที่ผู้เล่นเกี่ยวข้อง
ตัวเลขที่ไม่ซ้ำกันที่ได้รับการกำหนดให้กับบัญชีผู้ใช้ทุกบัญชี
วิธีการ
ลบสิ่งประกอบทั้งหมดและสิ่งประกอบอื่น ๆ ของตัวละครผู้เล่น
กลับระยะทางระหว่างหัวของตัวละครและจุด Vector3 ที่ให้ กลับ 0 หากผู้เล่นไม่มีตัวละคร
กลับไปที่พจนารูปแบบของพจนารูปแบบที่อธิบายวิธีการที่ Player เข้าร่วมประสบการณ์
กลับมาเป็นตัวเลือกที่เป็นไปด้วยเมาส์โดยลูกค้า
กลับค่าความแลคของเครือข่ายที่แยกออกในวินาที
กลับว่ามีให้โหลดรูปลักษณ์ของตัวละครผู้เล่นหรือไม่
กลับว่าผู้เล่นได้รับการยืนยันด้วยสัญญาณโลกแห่งความจริงหรือไม่
เปิดให้ผู้เล่นออกจากเกมโดยบังคับ โดยให้ข้อความเป็นตัวเลือก
ทำให้ตัวละครของผู้เล่นเดินในทิศทางที่กำหนดจนกว่าจะหยุดหรือขัดขวางโดยผู้เล่น (โดยใช้การควบคุมของพวกเขา)
ตั้งค่าอายุบัญชีของผู้เล่น
ตั้งค่าว่าผู้เล่นเห็นการแชทกรองหรือไม่ แทนที่จะเป็นการแชทปกติ
กลับไปที่พจนารูปแบบออนไลน์ของเพื่อน
กลับรายชื่อผู้เล่นในกลุ่มเป็นตัวเลขที่อยู่ระหว่าง 0 และ 255 โดย 0 เป็นสมาชิกไม่ได้และ 255 เป็นเจ้าของกลุ่ม
กลับบทบาทของผู้เล่นในกลุ่มเป็นสตริง หรือ "Guest" หากผู้เล่นไม่ได้เป็นส่วนหนึ่งของกลุ่ม
ตรวจสอบว่าผู้เล่นเป็นเพื่อนของผู้ใช้ด้วย Player.UserId ที่ให้
ตรวจสอบว่าผู้เล่นเป็นสมาชิกของกลุ่มที่มีรหัสที่ให้
สร้างตัวละครใหม่สำหรับผู้เล่นโดยลบอันเก่าออก นอกจากนี้ยังล้าง Backpack และ PlayerGui ของผู้เล่น
สร้าง avatar ให้มีอุปกรณ์ทั้งหมดใน HumanoidDescription ที่ผ่านมา
คำขอที่เซิร์ฟเวอร์สตรีมไปยังผู้เล่นในพื้นที่กำหนด
อีเวนต์
จะเกิดขึ้นเมื่อตัวละครของผู้เล่นเกิดขึ้นหรือรีสปอร์น
เปิดให้เมื่อลักษณะละอันเต็มของ Player.Character ได้ถูกใส่เข้ามาแล้ว
ยิงตรงก่อนที่จะลบตัวละครของผู้เล่น
เกิดขึ้นเมื่อผู้เล่นแชทในเกมโดยใช้บาร์แชทที่จัดหาโดย Roblox
เหตุการณ์นี้จะเกิดขึ้นประมาณสองนาทีหลังจากที่เครื่องมือเกมจะคลasสไพรส์ Class.Player|player ว่าเป็นไม่ได้ใช้งาน เวลาคือจำนวนวินาทีที่ผ่านมาตั้งแต่จุดนั้น
ไฟร์เมื่อสถานะเคลื่อนย้ายของผู้เล่นเปลี่ยนแปลง
คุณสมบัติ
AccountAge
The AccountAge คือ Player สมบัติข้อมูลที่อธิบายว่าเมื่อใดที่บัญชีของผู้เล่นได้รับการลงทะเบียนในวันที่ผ่านมา มันจะตั้งโดยใช้ฟังก์ชัน Player:SetAccountAge() ซึ่งไม่สามารถเข้าถึงไ
คุณสมบัตินี้มีประโยชน์สำหรับการแสดงเนื้อหาของผู้เล่น Roblox ใหม่โดยเฉพาะเช่นการกวดวิชา
ตัวอย่างโค้ด
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
สมบัติอัตโนมัติเปิดใช้งานจะกำหนดว่า Player.Character ของ Class.Player ที่ใช้อุปกรณ์มือถือจะกระโดดอัตโนมัติเมื่อพวกเขาตกสิ่งกีดขวาง สิ่งนี้สามารถทำให้เลเวลเป็นไปได้มากขึ้นในขณะท
เมื่อผู้เล่นเข้าร่วมเกม, ค่า StarterPlayer.AutoJumpEnabled จะกำหนดสถานะเริ่มต้นของสมบัตินี้ จากนั้น, ค่า Humanoid.AutoJumpEnabled
ตัวอย่างโค้ด
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
สมบัติทรัพย์ CameraMaxZoomDistance Player ตั้งค่าระยะทางสูงสุดในสเต็ปที่กล้องสามารถอยู่ได้จากตัวละครที่มีกล้องเริ่มต้น
ในคำอื่น มันควบคุมระยะที่เลนส์ของผู้เล่นสามารถซูมออกได้
ค่าเริ่มต้นของสมบัตินี้กำหนดโดย StarterPlayer.CameraMaxZoomDistance หากค่านี้ถูกตั้งให้ต่ำกว่า Player.CameraMinZoomDistance จะเพิ่มขึ้นเป็น CameraMinZoomDistance
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMinZoomDistance
ค่า CameraMinZoonDistance Player ตั้งค่าระยะทางอย่างน้อยใน studs ที่กล้องสามารถเป็นจากตัวละครที่มีกล้องเริ่มต้น
ในคำอื่น มันควบคุมระยะทางขั้นต่ำที่กล้องผู้เล่นสามารถซูมได้
ค่าเริ่มต้นของสมบัตินี้กำหนดโดย StarterPlayer.CameraMinZoomDistance หากค่านี้ถูกตั้งไว้สูงกว่า Player.CameraMaxZoomDistance มันจะถูกลดลงเป็น CameraMaxZoomDistance
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75
CameraMode
สมบัติ CameraMode ระบุโหมดกล้องของผู้เล่น ปกติจะเป็นบุคคลที่สาม
บุคคลที่สาม
ในโหมดบุคคลที่สามที่เริ่มต้น ( Enum.CameraMode.Classic ) ตัวละครสามารถมองเห็นได้ในกล้อง ในขณะที่อยู่ในโหมดนี้ พฤติกรรมปกติคือ:
- ผู้เล่นสามารถทำซ้ำได้ (เมาส์) กดค้าง (เมาส์) แตะและลาก (มือถือ) ใช้ปุ่มลูกศรเสริม (เกมแพด) หรือกดซ้ำซาก (ปุ่มซ้าย / ขวา) เพื่อหมุนกล้องไปรอบตัวตัวละครของพวกเขา
- เมื่อผู้เล่นย้ายตัวละครของพวกเขา พวกเขาจะหน้าในทิศทางการเคลื่อนที่ที่ตรง
- ผู้เล่นสามารถซูมเข้าและออกได้อย่างอิสระ แม้ว่าจะเป็นคนแรกในการซูมเต็มใน.
บุคคลแรก
ในโหมดบุคคลครั้งแรก ( Enum.CameraMode.LockFirstPerson ) กล้องของผู้เล่นจะซูมไปทั่วทุกที่ ยกเว้นจะมี GUI ที่มองเห็นได้ปรากฏขึ้นมาด้วยค่า Class.GuiButton.
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson
CanLoadCharacterAppearance
ลักษณะลูกศร Player ของสมบัติสัญลักษณ์กำหนดว่าตัวละครของผู้เล่นจะโหลดเมื่อผู้เล่นเกิดขึ้น มูลค่าปกติของค่านี้กำหนดโดย StarterPlayer.LoadPlayerAppearance
ถ้า จริง ตัวละครจะโหลดรูปลักษณ์ของผู้เล่นที่ตรงกับ Player.CharacterAppearanceId ของผู้เล่น
หาก ปลอม ผู้เล่นจะเกิดขึ้นด้วยรูปลักษณ์เริ่มต้น - ตัวละครเป็นสีเทาโดยไม่มีหมวก เสื้อ กางเกง ฯลฯ
การพยายามติดตั้งสมบัติสินค้าหลังจากที่ตัวละครมีสปอนจะไม่เปลี่ยนตัวละคร คุณต้องโทร Player:LoadCharacter() รูปลักษณ์
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CanLoadCharacterAppearance = false
Character
สมบัติข้อมูล ตัวละคร ประกอบด้วยอ้างอิงถึง Model ที่มี Class
เริ่มต้น คุณสมบัตินี้คือ nil และตั้งค่าเมื่อตัวละครของผู้เล่นเริ่มต้นสร้าง ใช้เหตุการณ์ Player.CharacterAdded เพื่อตร
หมายเหตุว่า LocalScripts ที่เป็นลูกของเก่า
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal character = player.Characterif not character or character.Parent == nil thencharacter = player.CharacterAdded:Wait()end
CharacterAppearanceId
สมบัตินี้กำหนดรหัสผู้ใช้ของบัญชีที่มีตัวละครปรากฏขึ้นสำหรับผู้เล่น Player.Character โดยปกติรหัสนี้คือ Player.UserId ซึ่งใช้ avatar ของผู้เล่นเมื่อพวกเขาสร้างมันบน
การเปลี่ยนค่านี้เป็นรหัสผู้ใช้ของบัญชีอื่นจะทำให้ผู้เล่นปรากฏขึ้นด้วยรูปลักษณ์ของบัญชีนั้น (หมวก, เสื้อ, กางเกง, เป็นต้น)
เกมยังสามารถเปิด/ปิดการโหลดรูปลักษณ์ของตัวละครผู้เล่นในเกมได้โดยการเปลี่ยนสถานะ StarterPlayer.LoadCharacterAppearance ของโปรไฟล์
ตัวอย่างโค้ด
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
กำหนดวิธีการที่สคริปต์กล้องเริ่มต้นจัดการวัตถุระหว่างกล้องและกล้องสามารถเรียกได้ ตั้งค่าโดย StarterPlayer.DevCameraOcclusionMode และไม่สามารถเปลี่ยนแปลงได้สำหรับผู้เล่นแต่ละราย
ค่าเริ่มต้นคือ Zoom (0) ดู Enum.DevCameraOcclusionMode สำหรับรายการโหมดที่มีอยู่
DevComputerCameraMode
สมบัติทรัพย์ DevComputerCameraMode กำหนดวิธีการที่ผู้เล่นเคลื่อนย้ายกล้องของพวกเขาเมื่อใช้อุปกรณ์ที่มีเมาส์และคีย์บอร์ด ดู Enum.DevComputerCameraMovementMode สำหรับคำ
ค่าเริ่มต้นของสมบัตินี้จะถูกกำหนดโดย StarterPlayer.DevComputerCameraMovementMode
คำว่า "คอมพิวเตอร์" ในชื่อโครงการนี้อ้างถึงอุปกรณ์ที่ไม่ใช่ TouchEnabled หรือ GamepadEnabled อุปกรณ์
เมื่อตั้งค่าไว้ที่ ตัวเลือกผู้ใช้ ผู้เล่นสามารถเลือกระหว่างโหมดการควบคุมใด ๆ (ยกเว้น สคริปต์ ) ในการตั้งค่าเกม Roblox ได้ โดยทั่วไป เป็นการดีที่จะอนุญาตให้ผู้
มันเป็นไปได้ที่จะสร้างสูตรควบคุมที่กำหนดเองโดยการตั้งค่าสมบัตินี้เป็น สคริปท์ได้ สมบัตินี้ไม่ส่งผลกระทบต่อผู้เล่นที่ใช้อุปกรณ์เครื่องสัมผัสเปิดใช้งาน ดู Player.DevTouchCameraMode แทน
ตัวอย่างโค้ด
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
สมบัติข้อมูลDevComputerMovementMode ระบุวิธีการที่ผู้เล่นเคลื่อนย้ายตัวละครของพวกเขาเมื่อใช้อุปกรณ์ด้วยเมาส์และคีย์บอร์ด ดู Enum.DevComputerMovementMode สำหรับคำ
ค่าเริ่มต้นของสมบัตินี้จะถูกกำหนดโดย StarterPlayer.DevComputerMovementMode
คำว่า "คอมพิวเตอร์" ในชื่อโครงการนี้อ้างถึงอุปกรณ์ที่ไม่ใช่ TouchEnabled
เมื่อตั้งค่าไว้ที่ ตัวเลือกผู้ใช้ ผู้เล่นสามารถเลือกระหว่างโหมดการควบคุมใด ๆ (ยกเว้น สคริปต์ ) ในการตั้งค่าเกม Roblox ได้ โดยทั่วไป เป็นเรื่องดีที่จะอนุญาตให้ผู
มันเป็นไปได้ที่จะสร้างสูตรควบคุมที่กำหนดเองโดยการตั้งค่าสมบัตินี้เป็น สคริปท์ได้ สมบัตินี้ไม่ส่งผลกระทบต่อผู้เล่นที่ใช้อุปกรณ์เปิดใช้งานแสงสัมผัส ดู Player.DevTouchMovementMode แทน
ตัวอย่างโค้ด
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
RobloxMouse ด้วยการกด Shift ได้หรือไม่ ผู้เล่นสามารถใช้ตัวเลือ
เมื่อเปิดใช้งานการล็อคเมาส์ ผู้เล่นจะไม่สามารถเคลื่อนไหวเมาส์ได้ เมื่อเคลื่อนไหวเมาส์ไปที่ตรงกลางของหน้าจอ ผู้เล่นจะมองเห็นกล้องได้จากทิศ
หมายเหตุว่า API ที่เกี่ยวข้องกับการล็อคเมาส์อยู่ในระหว่างการเปลี่ยนแปลงแล้ว, ดังนั้นจึงแนะนำให้ใช้ UserInputService.MouseBehavior แทนเพื่อล็อคเมาส์
ตัวอย่างโค้ด
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
สมบัติที่คุณสมบัติDevTouchCameraMode กำหนดวิธีที่ผู้เล่นเคลื่อนย้ายกล้องของพวกเขาเมื่อใช้อุปกรณ์ TouchEnabled ต่างๆ ดู
ค่าเริ่มต้นของสมบัตินี้จะถูกกำหนดโดย StarterPlayer.DevTouchCameraMovementMode
เมื่อตั้งค่าไว้ที่ ตัวเลือกผู้ใช้ ผู้เล่นสามารถเลือกระหว่างโหมดการควบคุมใด ๆ (ยกเว้น สคริปต์ ) ในการตั้งค่าเกม Roblox ได้ โดยทั่วไป เป็นเรื่องดีที่จะอนุญาตให้ผู
มันเป็นไปได้ที่จะสร้างสูตรควบคุมที่กำหนดเองโดยการตั้งค่าสมบัตินี้เป็น สคริปท์ได้ สมบัตินี้ไม่ส่งผลกระทบต่อผู้เล่นที่ไม่ใช้อุปกรณ์เปิดแตะ ดู Player.DevComputerCameraMovementMode แทน
ตัวอย่างโค้ด
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
สมบัติทรัพย์ DevTouchMovementMode กำหนดวิธีการที่ผู้เล่นเคลื่อนย้ายตัวละครของพวกเขาเมื่อใช้อุปกรณ์ TouchEnabled ต่างๆ ดู
ค่าเริ่มต้นของสมบัตินี้จะถูกกำหนดโดย StarterPlayer.DevTouchMovementMode
เมื่อตั้งค่าไว้ที่ ตัวเลือกผู้ใช้ ผู้เล่นสามารถเลือกระหว่างโหมดการควบคุมใด ๆ (ยกเว้น สคริปต์ ) ในการตั้งค่าเกม Roblox ได้ โดยทั่วไป เป็นการดีที่จะอนุญาตให้ผู้
มันเป็นไปได้ที่จะสร้างสูตรควบคุมที่กำหนดเองโดยการตั้งค่าสมบัตินี้เป็น สคริปท์ได้ สมบัตินี้ไม่ส่งผลกระทบต่อผู้เล่นที่ไม่ใช้อุปกรณ์เปิดแตะ ดู Player.DevComputerMovementMode แทน
ตัวอย่างโค้ด
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
DisplayName เป็นสมบัติสมบัติของ Player โปรไฟล์ที่มีชื่อว่านี้คือชื่อของผู้ใช้ที่ได้รับการยืนยันที่เกี่ยวข้องกับวัตถุ Class.Player</
หมายเหตุ:
- เนื่องจากชื่อแสดงชื่อไม่ใช่ของแต่ละคนจึงเป็นไปได้ที่ผู้เล่นสองคนในครั้งเดียวจะมีชื่อเท่ากัน หากคุณต้องการรหัสผู้ใช้ที่เป็นเอกลักษณ์สำหรับผู้เล่นคนหน
- ตัวละครที่สร้างด้วย Player.LoadCharacter หรือโดยเครื่องมือ Roblox จะมีสมบัติ Humanoid.DisplayName ที่ได้รับการกำหนดไว้ให้กับ Player.DisplayName โปรไฟล์
- ชื่ออาจมีตัวอักษรที่ไม่รองรับในสตริง ดู UTF-8 สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานกับสตริงที่มีตัวอักษรที่ไม่รองรับ
FollowUserId
ตัวติดตาม UserId เป็น Player สมบัติข้อมูลที่ประกอบด้วย Player.UserId ของผู้ใช้ที่ผู้เล่นติดตามเข้ามาในเกม หากผู้ใช้ไม่ได้ติดตามใครไปยังเกมนี้ สมบัต
คุณสามารถรับชื่อผู้เล่นโดยใช้ user ID นี้และคุณสมบัติ Players:GetNameFromUserIdAsync()
ตัวอย่างโค้ด
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
คุณสมบัติ GameplayPaused ระบุว่าผู้เล่นอยู่ในสถานะหยุดในสถานที่ที่มี StreamingEnabled เปิดอยู่ เซิร์ฟเวอร์แต่ได้ถูกเรียกใช้ไปยังเซิร์ฟเ
ดูเพิ่มเติม:
- Workspace.StreamingEnabled ซึ่งควบคุมว่าการสตรีมเนื้อหาเปิดใช้งานหรือไม่
- Workspace.StreamingIntegrityMode และ Enum.StreamingIntegrityMode สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเมื่อเกมปิดช่วงชีวิต
HealthDisplayDistance
คุณสมบัติ HealthDisplayDistance Player ตั้งค่าระยะทางใน studs ที่ผู้เล่นจะเห็นบาร์พลังชีวิตอื่น ๆ ของ Humanoid หากตั้งค่าเป็น 0 บาร์พลังชีวิตจะไม่ปรากฏ
หากบาร์สุขภาพของมนุษย์มองเห็นได้ คุณสามารถตั้งค่าประเภทการแสดงผลโดยใช้ Humanoid.DisplayDistanceType
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
LocaleId
คุณสมบัติ LocaleId Player แสดงรหัสภาษาที่ตั้งของผู้เล่นในบัญชี Roblox ของพวกเขา มันมีสตริงที่มีรหัสตัวอักษรสองตัว (เช่น "en-us") สำหรับภาษา
นี้สามารถใช้เพื่อกำหนดประชากรภูมิของผู้เล่นของเกมของคุณ และยังเป็นภาษาที่จะใช้สำหรับการแปลในท้องถิ่นอัตโนมัติ (ดู GuiBase2d.AutoLocalize) ของเนื้อหาในประสบการณ์
ดูเพิ่มเติมที่ LocalizationService.RobloxLocaleId รหัสโลกที่ใช้สำหรับการแปลเนื้อหาภายใน รหัสโลกนี้จะแตกต่างออกไปเมื่อ Roblox ยังไม่สนับสนุนการตั้งภาษาของผู้เล่นในท้องถิ่น
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)
MembershipType
คุณสมบัตินี้สามารถอ่านได้เท่านั้นเพื่อกำหนดสมาชิก (พิมพ์) มันมี Enum.MembershipType พิมพ์
ตัวอย่างโค้ด
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 ตั้งค่าระยะที่เห็นได้ใน studs ที่ผู้เล่นนี้จะเห็นชื่อ Humanoid อื่น ๆ หากคุณสมบัติตั้งค่าไว้ที่ 0 ชื่อจะถูกซ่อน
หากบาร์สุขภาพของมนุษย์มองเห็นได้ คุณสามารถตั้งค่าประเภทการแสดงผลโดยใช้ Humanoid.DisplayDistanceType
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0
Neutral
สมบัติของการเป็นกลางจะกำหนดว่าผู้เล่นอยู่ในทีมที่เฉพาะเจาะจงหรือไม่
- เมื่อ จริง ผู้เล่นไม่ได้อยู่ในทีมเฉพาะ นี่ยังหมายถึงว่า Player.Team โปรไฟล์จะเป็นศูนย์และ Player.TeamColor จะเป็นสีขาว
- เมื่อ ปลอม ผู้เล่นอยู่ในทีมที่เฉพาะเจาะจง สมบัติสมุน Player.Team จะตรงกับทีมที่ผู้เล่นอยู่ด้วยเช่นเดียวกับ Team
ตัวอย่างโค้ด
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
คุณสมบัติ ReplicationFocus Player ตั้งค่าให้ชิ้นส่วนมุ่งเน้นการเลียนแบบรอบผู้เล่น ระบบ Roblox ที่สื่อสารผ่านเครือข่าย (เช่นพลังงานสตรีมมิง, ตัวเล่นเกม, ฯลฯ) เลียนแบบในอัตราที่แต
เมื่อค่านี้เป็น zero มันจะกลับไปที่พฤติกรรมปกติของตัวละครของผู้เล่นในท้องถิ่นซึ่งคือการรักษาตัวละครของผู้เล่นในท้องถิ่นเป็น PrimaryPart เป็นจุดโฟกัส
ค่านี้ควรจะตั้งไว้บนเซิร์ฟเวอร์เท่านั้นด้วย Script ไม่ใช่ LocalScript หมายเหตุว่าค่านี้ไม่เปลี่ยนแปลงหรือปรับปรุงเจ้าของเครือข่ายของบางส่วน
ตัวอย่างโค้ด
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
หากตั้งค่าไว้ ผู้เล่นจะเกิดใหม่ที่ SpawnLocation ที่กำหนด สิ่งนี้สามารถกำหนดได้ผ่าน Lua เท่านั้นและต้องมีการอ้างอิงถึง SpawnLocation ที่ถูกต้องซึ่งต้องตรงตามข้อกำหนดต่อไ
- ลูกของ Workspace
หาก RespawnLocation ไม่ได้ตั้งค่าเป็น SpawnLocation แล้วจะใช้เหตุผลการเรียกใช้งานเริ่มต้นโดยปกติ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้โปรดดูหน้าสำหรับ SpawnLocation .
ตัวเลือกที่ไม่รวมอยู่ใน RespawnLocation
- A Player จะเกิดขึ้นจาก SpawnLocations ที่เป็นของทีมของพวกเขา ในบางกรณีอาจเป็นเรื่องง่ายกว่าที่จะเปลี่ยน Player.Team ของผู้เล่น
- ใช้ PVInstance:PivotTo() เพื่อเคลื่อนย้าย Player.Character โดยใช้การเคลื่อนย้ายแบบมือ動
ตัวอย่างโค้ด
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
สมาชิกของทีมเป็นสมาชิกของทีม Team
ตัวอย่างโค้ด
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
สมาชิกของทีมที่มีสีของทีมที่ตรงกันตาม Team.TeamColor ของทีมนั้นจะได้รับการเชื่อมโยงกับทีมที่มีสีเดียวกันตามทีมขอ
มักจะเป็นความคิดที่ดีกว่าที่จะตั้ง Player.Team ไว้ในละแวก Team แทนที่จะใช้ค่านี้ การตั้งค่าคุณสมบัตินี้มักจะทำให้เกิดความซ้ำซาก
ตัวอย่างโค้ด
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
UserId เป็นสมบัติของ Player ที่มีตัวเลขอ่านเท่านั้นที่ ไม่เหมือนกันและเป็นเวลาเดียวกัน ระบุผู้ใช้ทุกบัญชีใน Roblox สิ่งนี้จะเปลี่ยนแปลงตาม
สมบัตินี้จำเป็นเมื่อบันทึก/โหลดข้อมูลผู้เล่นโดยใช้ GlobalDataStores ใช้รหัสผู้ใช้ของผู้เล่นเป็นคีย์เก็บข้อมูลเพื่อให้แต่ละผู้เล่นมีกุญแจที่ไม่ซ้ำกัน
ตัวอย่างโค้ด
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)
วิธีการ
ClearCharacterAppearance
ตัวละครที่เปลี่ยนแปลงรูปลักษณ์ของผู้เล่น เช่น การลบ Class.Accessory ทั้ง
มันไม่ลบ t-shirts หรือหน้าผาก
ส่งค่ากลับ
ตัวอย่างโค้ด
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
คุณสมบัติ DistanceFromCharacter Player กลับระยะทางระหว่างหัวของตัวละครและจุด Vector3 ที่กำหนด มันกลับ 0 หากผู้เล่นไม่มี Player.Character
นี่เป็นประโยชน์เมื่อกำหนดระยะทางระหว่างผู้เล่นอื่นและสถานที่หรือตำแหน่งอื่นในเกม
หากคุณต้องการกำหนดระยะห่างระหว่างสองรายการหรือตำแหน่งที่ไม่ใช่ผู้เล่น กำลังติดตาม:
local distance = (position1 - position2).magnitude
พารามิเตอร์
ตำแหน่งที่ผู้เล่นอยู่ใกล้
ส่งค่ากลับ
ระยะทางใน stud ระหว่างผู้เล่นและสถานที่
ตัวอย่างโค้ด
local Players = game:GetService("Players")
for _, player in pairs(Players:GetPlayers()) do
print(player:DistanceFromCharacter(Vector3.new(0, 0, 0)))
end
GetJoinData
กลับมาเป็นพจนานุกรมที่รวบรวมข้อมูลวิธีที่ผู้เล่นเข้าร่วมประสบการณ์ พจนานุกรมมีข้อมูลใด ๆ ต่อไปนี้:
<tbody><tr><th>หมายเลขเกม</th><td>จํานวน</td><td>Class.DataModel.GameId ของประสบการณ์ที่ผู้เล่นเคยเทเลพอร์ตจาก เท่านั้น นำเสนอเฉพาะถ้าผู้เล่นเทเลพอร์ตไปยังประสบการณ์ปัจจุบันและหากเซิร์ฟเวอร์เรียกใช้งานตัวเร่งเทเลพอร์ต</td></tr><tr><th>หมายเลขที่ต้องการ</th><td>จํานวน</td><td>Class.DataModel.PlaceId ของสถานที่ที่ผู้เล่นเทเลพอร์ตจากนั้น ปรากฏเฉพาะถ้าผู้เล่นเทเลพอร์ตไปยังสถานที่ปัจจุบันและเซิร์ฟเวอร์เรียกใช้งานเทเลพอร์ทฟังก์ชัน</td></tr><tr><th>รหัสผู้เล่นที่อ้างอิง</th><td>จํานวน</td><td>Class.Player.UserId ของผู้เล่นที่เชิญผู้เล่นปัจจุบันไปยังประสบการณ์ ใช้ข้อมูลนี้เพื่อระบุผู้อ้างอิงและเปิดใช้งานระบบรางวัล</td></tr><tr><th>สมาชิก</th><td>รายการ</td><td>หนึ่งรายการที่ประกอบด้วย Class.Player.UserId ตัวเลขของผู้ใช้ที่เทเลพอร์ตไปพร้อมกับผู้เล่น Player เท่านั้น ปรากฏเฉพาะในกรณีที่ผู้เล่นเทเลพอร์ตเป็นส่วนหนึ่งของกลุ่ม</td></tr><tr><th>เทเลพอร์ตดาต้า</th><td>ตัวแปร</td><td>สะท้อน <code>teleportData</code> ที่ระบุในเทเลพอร์ตดั้งเดิม ใช้ได้สำหรับการแชร์ข้อมูลระหว่างเซิร์ฟเวอร์ที่ผู้เล่นเทเลพอร์ตไปยัง ใช้เฉพาะกับการแชร์ข้อมูลระหว่างเซิร์ฟเวอร์ที่เรียกใช้งานได้</td></tr><tr><th>ข้อมูลปล่อย</th><td>สตริง</td><td>สตริงข้อความง่ายๆ หรือ JSON ที่เข้ารหัสอยู่ใน URL <a href="../../../production/promotion/deeplinking.md">เชิงลึก</a> หรือ <code>Class.ExperienceInviteOptions.LaunchData</code></td></tr></tbody>
กุญแจ | ประเภทของมูลค่า | คำอธิบาย |
---|
รับข้อมูลเข้าร่วมและ TeleportData
เทเลพอร์ตคำจัดลำดับที่วิธีนี้กลับมารวมถึงข้อมูลการเคลื่อนย้ายของผู้เล่น วิธี Player:GetJoinData() เท่านั้นสามา
ในขณะที่ TeleportService:GetLocalPlayerTeleportData() และ Player:GetJoinData() เท่านั้นจะให้ข้อมูลการเทเลพอร์ตที่ตรงตามมาตรฐานความปลอดภัยต่อไปนี้เท่านั้น:
- มันมีความปลอดภัยที่จะได้รับการส่งโดยเซิร์ฟเวอร์ Roblox ใน 48 ชั่วโมงที่ผ่านมา
- มันรับประกันว่าได้ถูกส่งมาพร้อมกับนี้ Player
- SourcePlaceId และ SourceGameId รับประกันว่าจะเป็นสถานที่และจักรวาลที่ข้อมูลถูกส่ง นี่หมายความว่าคุณสามารถตรวจสอบว่าข้อมูลส่งมาจากสถานที่ที่ได้รับการอนุมัติ
เนื่องจากข้อมูลนี้ถูกส่งโดยลูกค้า จึงยังคงมีความเป็นไปได้ที่จะถูกลอบโจมตีโดยนักแฮ็ก ข้อมูลที่มีความสมบูรณ์แบบเช่นเงินผู้เล่นควรจะถูกส่งผ่านผ่านทางแกนนำทางอิเล็กทรอนิกส์เช่น เซิร์
ส่งค่ากลับ
พจนานุกรมที่มีมูลค่า PlaceId และ UserId (ดูตารางในคำอธิบาย)
ตัวอย่างโค้ด
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
การรับเมาส์ Player ผู้เล่นรวมถึงการคลิกเมาส์ซ้ายและขวา และการเคลื่อนที่และตําแหน่ง
บริการ UserInputService นี้ให้ฟังก์ชันและเหตุการณ์เพิ่มเติมเพื่อติดตามการป้อนของผู้ใช้ - โดยเฉพาะอุปกรณ์ที่ไม่ใช้เมาส์
หมายเหตุ:
- รายการนี้ ต้องใช้ใน Class.LocalScript เพื่อทำงานออนไลน์ตามที่คาดหวัง
- หลังจากการปรับปรุงในเดือนกรกฎาคม 2014 สามารถตั้งค่าไอคอนของเมาส์ด้วยวิธีนี้ได้
ส่งค่ากลับ
ตัวอย่างโค้ด
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 รับความแลคของเครือข่ายที่คงอยู่ของ Player ในวินาที การ "Ping" คือการวัดเวลาที่ใช้ส่งข้อมูลจากคลายเมาส์ไปยังเซิร์ฟเวอร์แล้วกลับมาอีกครั้ง ไม่มีการ
สำหรับ client-side LocalScripts ระบบนี้สามารถเรียกใช้ได้เฉพาะใน Players.LocalPlayer เท่านั้น ระบบนี้มีประโยชน์ในการระบุและดีบั๊กปัญหาที่เกิดขึ้นในสถ
ส่งค่ากลับ
HasAppearanceLoaded
การโหลด HasAppearanceLoaded Player ฟังก์ชันกลับไปยังผลว่าผู้เล่นของ Player.Character ของผู้เล่นโหลดแล้วหรือไม่
รูปลักษณ์ของผู้เล่นรวมถึงรายการเช่น Shirt ของผู้เล่น Pants และ Accessories
นี่เป็นประโยชน์เมื่อกำหนดว่าผู้เล่นของผู้เล่นมีโฉมหลังจากที่พวกเขาเข้าร่วมเกมครั้งแรกซึ่งสามารถติดตามได้โดยการใช้เหตุการณ์ Players.PlayerAdded
ส่งค่ากลับ
บูลีนที่ระบุว่าจะโหลดตัวละครของผู้เล่นหรือไม่
ตัวอย่างโค้ด
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
กลับค่าตัวแปรที่เป็นไปได้ที่ระบุว่าสถานะการตรวจสอบของผู้เล่น เมื่อใช่ ผู้เล่นจะได้รับการยืนยัน การตรวจสอบรวมถึง แต่ไม่ จำกัด ที่หมายเลขโทรศัพท์ non-VOIP หรือการตรวจสอบรหัสรัฐบาล
เมื่อใช้ IsVerified ให้ระวังการดำเนินการเพื่อให้แน่ใจว่าการดำเนินการนี้ไม่ได้บล็อกผู้ใช้ที่ไม่ได้รับการยืนยันทั้งหมด
หมายเหตุว่าวิธีนี้สามารถเรียกได้เฉพาะในเซิร์ฟเวอร์แบ็คเอนด์เท่านั้น การเรียกมันจากด้านล่างผลในข้อผิดพลาด นอกจากนี้วิธีนี้จะส่งผลเสมอ
ส่งค่ากลับ
บูลีนที่ระบุว่าผู้เล่นได้รับการยืนยันหรือไม่
ตัวอย่างโค้ด
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
วิธี Kick() นี้ช่วยให้ประสบการณ์สามารถเชิญผู้ใช้ออกได้อย่างมีรสนิยมและให้ข้อความแก่ผู้ใช้ที่เชิญออกได้ นี่เป็นวิธีที่มีประโยชน์ในการจัดการผู้ใช้ที่อาจจ
การโทรใช้วิธีนี้ใน Player โดยไม่มีข้อมูลใด ๆ ทิ้งออกผู้ใช้จากเซิร์ฟเวอร์และให้ข้อความเตือนเรื่องปกติ การโทรใช้วิธีนี้ใน Player พร้อมกับสตริงเป็นตัว
เมื่อใช้วิธีนี้จาก LocalScript เท่านั้นผู้ใช้ท้องถิ่นสามารถถูกเตะออก
พารามิเตอร์
ข้อความที่แสดงให้ผู้ใช้เมื่อเตะ
ส่งค่ากลับ
Move
การเคลื่อนที่ Player ฟังก์ชันทำให้ตัวละครของผู้เล่นเดินในทิศทางที่กำหนดจนกว่าจะหยุดหรือขัดขวางโดยผู้เล่น (โดยใช้การควบคุมของพวกเขา)
นี่เป็นประโยชน์เมื่อสคริปต์ NPC Humanoids ที่เคลื่อนที่ไปรอบ ๆ แผนที่ - แต่ไม่ได้รับการควบคุมโดยการป้อนของผู้เล่นจริง
หมายเหตุว่าตัวแปรที่สองของฟังก์ชันแสดงว่า Vector3 ที่ให้จะย้ายผู้เล่นไปยังตำแหน่งโลก ( ปลอม ) หรือ Camera ( 1> จริง1> ) ของผู้เล่น
พารามิเตอร์
ทิศทางของเวกเตอร์ที่ผู้เล่นควรเคลื่อนที่
บูลีนที่แสดงว่าผู้เล่นควรเคลื่อนที่เมื่อเป็นความสัมพันธ์กับกล้องของผู้เล่น
ส่งค่ากลับ
ตัวอย่างโค้ด
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
ฟังก์ชัน SetAccountAge ตั้งค่า Player.AccountAge ของผู้เล่นในวัน
มันใช้เพื่อตั้งค่าสมบัติของ Player ที่อธิบายว่าเมื่อใดที่บัญชีของผู้เล่นได้รับการลงทะเบียนในวัน
นี้ไม่ได้ตั้งอายุของผู้เล่นในบัญชี แต่อายุของบัญชีเองที่เกี่ยวข้องกับเมื่อมันถูกสร้างครั้งแรก
พารามิเตอร์
อายุบัญชีในวัน
ส่งค่ากลับ
ตัวอย่างโค้ด
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
วิธีนี้ตั้งค่าว่าผู้เล่นเห็นหรือไม่เห็นการแชทที่กรองโดย TextService:FilterStringAsync() หรือไม่ก็ตามการแชทปกติ
local Players = game:GetService("Players")local player = Players.LocalPlayerplayer:SetSuperSafeChat(true)
ไม่ว่าผู้เล่นจะมีการกรองการแชทเปิดอยู่หรือไม่ก็ตาม, การแชททั้งหมดควรถูกกรองโดย TextService เมื่อส่งไปยังผู้เล่นคนอื่นหรือบนหน้าจอของผู้
พารามิเตอร์
บูเลียนแสดงว่าผู้เล่นเห็นหรือไม่เห็นการแชทกรอง
ส่งค่ากลับ
GetFriendsOnline
ฟังก์ชันนี้กลับรายการพจนานุกรมเพื่อนออนไลน์ที่จำกัดโดยค่า maxFriends ตัว ฟังก์ชันใช้ค่าเครื่องมือนี้ 30 วินาที
ในค่ายูเอสบีที่กลับมา บางช่องมีเฉพาะในบางประเภทของตำแหน่ง เช่น PlaceId จะไม่ปรากฏขึ้นเมื่อ LocationType เป็น 0 (เว็บไซต์มือถือ)
<tbody><tr><td><b>VisitorId</b></td><td>จํานวน</td><td>Class.Player.UserId ของเพื่อน</td></tr><tr><td><b>ชื่อผู้ใช้</b></td><td>สตริง</td><td>ชื่อผู้ใช้ของเพื่อน</td></tr><tr><td><b>แสดงชื่อเรื่องการแสดงผล</b></td><td>สตริง</td><td>Class.Player.DisplayName ของเพื่อน</td></tr><tr><td><b>LastOnline ที่ปิดใช้งานแล้ว</b></td><td>สตริง</td><td>เมื่อเพื่อนออนไลน์ครั้งสุดท้าย</td></tr><tr><td><b>ออนไลน์อยู่</b></td><td>บูลีน</td><td>หากเพื่อนอยู่ออนไลน์อยู่ในขณะนี้</td></tr><tr><td><b>สถานที่สุดท้าย</b></td><td>สตริง</td><td>ชื่อสถานที่ปัจจุบันของเพื่อน</td></tr><tr><td><b>PlaceId ตำแหน่ง</b></td><td>จํานวน</td><td>รหัสสถานที่ของเพื่อนที่ตั้งอยู่ครั้งล่าสุด</td></tr><tr><td><b>GameId</b></td><td>สตริง</td><td>DataModel/JobId ของตำแหน่งเพื่อนครั้งล่าสุด</td></tr><tr><td><b>Type ตำแหน่ง</b></td><td>จํานวน</td><td>ประเภทสถานที่ของเพื่อนที่ตั้งอยู่ครั้งสุดท้าย:<table>0 เว</table></td></tr></tbody>
ชื่อ | ชนิด | คำอธิบาย |
---|
พารามิเตอร์
จำนวนเงินสูงสุดของเพื่อนออนไลน์ที่จะกลับมา
ส่งค่ากลับ
พจนานุกรมเพื่อนออนไลน์ (ดูตารางด้านบน)
ตัวอย่างโค้ด
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
GetRankInGroup Player ฟังก์ชันกลับรายชื่อผู้เล่นในกลุ่มเป็นตัวเลขที่อยู่ระหว่าง 0 และ 255 โดย 0 เป็นสมาชิกไม่ได้และ 255 เป็นเจ้าของกลุ่ม
การใช้นี้ใน Script โดยมี LocalScript จะไม่ได้รับข้อมูลล่าสุด หากผู้เล่นออกจากกลุ่มในขณะที่พวกเขาอยู่ในเกม การรับรองในกลุ่มจะยังคิดว่าพวก
นี่เป็นเพราะวิธีการบันทึกผลของวิธี ดังนั้นการโทรหา GetRankInGroup หลายครั้งบนผู้เล่นเดียวกันด้วยเครื่องมือกลุ่มเดียวกันจะนำผลเดียวกันเมื่อวิธีถูกเรียกครั้งแรกด้วยรหัสกลุ่มที่
พารามิเตอร์
groupId ของกลุ่มที่ระบุ
ส่งค่ากลับ
อันดับของผู้เล่นในกลุ่ม
ตัวอย่างโค้ด
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
GetRoleInGroup Player ฟังก์ชันส่งคืนบทบาทของผู้เล่นในกลุ่มเป็นสตริงหรือ Guest หากผู้เล่นไม่ได้เป็นส่วนหนึ่งของกลุ่ม
การใช้นี้ใน Script โดยมี LocalScript จะไม่ได้รับข้อมูลล่าสุด หากผู้เล่นออกจากกลุ่มในขณะที่พวกเขาอยู่ในเกม การรับบทบาทในกลุ่มจะยังคิดว่าพ
นี่เป็นเพราะวิธีการบันทึกผลของวิธี ดังนั้นการโทรหา GetRoleInGroup หลายครั้งบนผู้เล่นเดียวกันด้วยรหัสกลุ่มเดียวกันจะสร้างผลลัพธ์เดียวกันเมื่อวิธีถูกเรียกครั้งแรกด้วยรหัสกลุ่ม
พารามิเตอร์
groupId ของกลุ่มที่กำหนด
ส่งค่ากลับ
บทบาทของผู้เล่นในกลุ่มที่กำหนด หรือ แขก หากผู้เล่นไม่ใช่สมาชิก
ตัวอย่างโค้ด
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
คุณสมบัตินี้ส่งคำขอไปยังเว็บไซต์ Roblox เพื่อสอบถามว่าผู้เล่นเป็นเพื่อนของผู้ใช้อื่นหรือไม่ โดยใช้ Player.UserId ของผู้ใช้นั้น
พารามิเตอร์
Class.Player.UserId ของผู้เล่นที่ระบุ
ส่งค่ากลับ
บูเลียนที่แสดงว่าผู้เล่นเป็นเพื่อนของผู้ใช้ที่ระบุหรือไม่
ตัวอย่างโค้ด
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
ฟังก์ชัน IsInGroup Player ส่งคำขอไปยังเว็บไซต์ Roblox ว่าผู้เล่นเป็นสมาชิกของกลุ่มหรือไม่ โดยใช้รหัสของกลุ่มนั้น
การใช้นี้ใน Script โดยมี LocalScript จะไม่ได้รับข้อมูลล่าสุด หากผู้เล่นออกจากกลุ่มในขณะที่พวกเขาอยู่ในเกม จะยังคิดว่าพวกเขาอยู่ในกลุ่มนั้
นี่เป็นเพราะวิธีการจัดเก็บผลลัพธ์, ดังนั้นการโทรหาหลายครั้งของ IsInGroup บนผู้เล่นเดียวกันที่มีเดียวกันกลุ่ม ID จะนำเสนอผลลัพธ์เดียวกันเมื่อวิธีการเรียกใช้วิธีการครั้งแรกด้ว
พารามิเตอร์
groupId ของกลุ่มที่กำหนด
ส่งค่ากลับ
บูเลียนที่แสดงว่าผู้เล่นอยู่ในกลุ่มที่กำหนดหรือไม่
ตัวอย่างโค้ด
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
การโหลดตัวละคร Player สร้างตัวละครใหม่สำหรับผู้เล่นโดยลบอันเก่า มันยังล้าง Class.Backpack และ Class.PlayerGui ของผู้เล่น
นี่เป็นประโยชน์ในกรณีที่คุณต้องการรีโหลดตัวละครโดยไม่ต้องฆ่าผู้เล่น เช่นเมื่อคุณต้องการโหลดลักษณะตัวละครใหม่หลังจากเปลี่ยน Player.CharacterAppearance ของผู้เล่น
หมายเหตุ: ฟังก์ชันเหมือนกับ Player:LoadCharacterBlocking() แต่การร้องขอจะประมวลผลได้อย่างอัตโนมัติแทนที่จะเป็นการประมวลผลแบบเร็วขึ้น นี่หมายความว่าโค้ดอื่นจะสามารถ
หลังจากโหลดตัวละครเป็นของตัวเองผู้เล่นไม่ควรโหลดอีกครั้งสำหรับผู้เล่นเดียวกันจนกว่าอีเวนต์ Player.CharacterAppearanceLoaded ของผู้เล่นนั้นจะสิ้นสุด
ตัวอักษรการโหลดคำสั่ง
การโทร Player:LoadCharacter() ด้วย R15 อวาตาร์จะเรียกเหตุการณ์ต่อไปนี้ในลำดับ (หมายเหตุ: การสั่งซื้อ R6 แตกต่างกัน):
- Player.Character ชุด
- Player.CharacterAdded ไฟ
- Player.Changed จะยิงด้วยมูลค่า "ตัวละคร"
- ตัวละครปรากฏตัวครั้งแรก
- Player.CharacterAppearanceLoaded ไฟ
- Character.Parent ตั้งค่าไปยัง DataModel
- ตัวละครริกข้าง สร้างและขนาดตัวละคร
- ตำแหน่งของการเกิดใหม่
- โหลดตัวละครกลับมา
ส่งค่ากลับ
ตัวอย่างโค้ด
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
ฟังก์ชันนี้จะสร้าง avatar ดังนั้นจึงมีทุกอย่างพร้อมใน HumanoidDescription
หลังจากโทร LoadCharacterWithHumanoidDescription สําหรับผู้เล่นคนหนึ่ง, ไม่แนะนําให้โทรฟังก์ชันอีกครั้งสําหรับผู้เล่นเดียวกันจนกว่าเหตุการณ์ Player.CharacterAppearanceLoaded ของผู้เล่นนั้นจะเกิดขึ้น
ดูเพิ่มเติม:
- ระบบคำอธิบายมนุษย์เหนือธรรมชาติ บทความที่อธิบายระบบคำอธิบายมนุษย์ในรายละเอียดมากขึ้นและให้ตัวอย่างการเขียนสคริปต์หลายตัวอย่าง
พารามิเตอร์
A HumanoidDescription ที่ประกอบด้วยลักษณะเหมือนตัวละคร/สีตัว/ขนาดตัว/เครื่องประดับ/เสื้อผ้าและอนิเมชั่นที่จะถูกติดตั้งในตัวละครที่โหลด
ส่งค่ากลับ
ตัวอย่างโค้ด
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
สำหรับประสบการณ์ที่มีการเปิดใช้งาน การสตรีม ในตัวอย่าง คำขอที่เซิร์ฟเวอร์สตรีมไปยั
ผลกระทบของการโทรนี้จะเป็นชั่วคราวและไม่มีการรับประกันว่าสิ่งที่จะถูกสตรีมไปยังสถานที่ที่ระบุจะมีอยู่หรือไม่ ขีดจำกัดหน่วยความจำและเงื่อนไขของเครือข่ายอาจส่งผลกระทบต่อสิ่งที่จะมีให้บนเครื่อง
คำเตือนการใช้
การร้องขอการสตรีมมิงรอบพื้นที่ไม่ได้เป็นการรับประกันว่าเนื้อหาจะมีอยู่เมื่อคำขอสำเร็จเนื่องจากการสตรีมมิงได้รับผลกระทบจากการเชื่อมต่อเครือข่ายของลูกค้า ข้อจํากัดหน่วยความจํา และ
พารามิเตอร์
ตำแหน่งโลกที่ต้องการสตรีมมิ่ง
เวลารอคอยที่ตั้งไว้สำหรับคำขอ
ส่งค่ากลับ
อีเวนต์
CharacterAdded
เหตุการณ์ CharacterAdded เกิดขึ้นเมื่อตัวละครของผู้เล่นเกิดขึ้น (หรือ respawn) นี้เกิดขึ้นเร็ว ๆ นี้หลังจากการตั้งค่า Player.Character เป็นค่
นี้สามารถใช้ร่วมกับกิจกรรม Player.CharacterRemoving ซึ่งเปิดให้ได้ก่อนที่ผู้เล่นจะถูกนำออก โดยปกติจะเป็นเวลาที่ผู้เล่นตา
หมายเหตุว่า Humanoid และส่วนที่เป็นลำดับตัวของมัน (หัว, ลำตัว แ
พารามิเตอร์
ตัวอย่างของตัวละครที่เกิดขึ้น/รีสปาวน์
ตัวอย่างโค้ด
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
เหตุการณ์นี้จะเกิดขึ้นเมื่อมีการใส่เสื้อผ้าเต็มรูปของ Player.Character แล้ว
โดยทั่วไป Player.Character มักจะมีช่วงตัวอักษรที่ปรับแต่งรูปลักษณ์ของมันรวมถึง Accoutrements ،
การใช้งานหนึ่งสำหรับเหตุการณ์นี้คือการให้แน่ใจว่าอุปกรณ์ทั้งหมดจะโหลดก่อนที่จะทำลายพวกเขา ดูด้านล่างสำหรับตัวอย่าง
พารามิเตอร์
ตัวอย่างโค้ด
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
เหตุการณ์ CharacterRemoving จะเกิดขึ้นก่อนที่ตัวละครของผู้เล่นจะถูกลบออก เช่น เมื่อผู้เล่นเกิดใหม่
เหตุการณ์นี้สามารถใช้ร่วมกับเหตุการณ์ Player.CharacterAdded ซึ่งจะปรากฏเมื่อตัวละครของผู้เล่นเกิดขึ้นหรือรีสปาวน์ อินสแตนซ์
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)
เหตุการณ์นี้เกี่ยวข้องกับ Character ของ Player เท่านั้น หากคุณต้องการติดตามเมื่อผู้เล่นเข้าร่วม/ออกจากเกม ใช้เหตุการณ์ Class.Players.PlayerAdded
พารามิเตอร์
ตัวอย่างของตัวละครที่กำลังถูกลบออก
ตัวอย่างโค้ด
game.Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(function(character)
print(character.Name .. " has died.")
end)
end)
Chatted
เหตุการณ์ Chatting จะเกิดขึ้นเมื่อ Player พิมพ์ข้อความและกด enter ใน Roblox's แชทบาร์ นี้ทำโดยการใช้คําสั่ง Lua บางอย่างโดยตัวชี้ชวน Class.StarterGui
คําสั่งการแชท
โดยใช้เหตุการณ์นี้และคำแนะนำบางอย่างเช่น string.sub() และ string.lower() ค
การกรอง
ข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อค
พารามิเตอร์
เนื้อหาข้อความที่ผู้เล่นพิมพ์ในแชท
เก่าแก้ไปแล้ว。 สำหรับข้อความเก่า นี่เป็นผู้เล่นที่เป็นเป้าหมายที่ตั้งใจของข้อความแชท
ตัวอย่างโค้ด
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
เหตุการณ์นี้จะเกิดขึ้นประมาณสองนาทีหลังจากที่เครื่องเกมจะจัดประเภท player ว่าเป็นไม่ได้ใช้งาน นิ่งเฉยเหตุการณ์นี้จะดำเนินการต่อ
เหตุการณ์นี้เกิดขึ้นเฉพาะในสคริปต์ของลูกค้า ไม่ใช่สคริปต์ของเซิร์ฟเวอร์ ใช้ RemoteEvent เพื่อแจ้งให้เซิร์ฟเวอร์ทราบว่าผู้เล่นไม่ได้ใช้งาน
Roblox จะออกจากผู้เล่นที่ไม่ได้ใช้งานมานานสุด 20 นาที ดังนั้นจึงเป็นเหตุการณ์ที่มีประโยชน์ในการเตือนผู้เล่นว่าพวกเขาจะตัดการเชื่อมต่อในอีกไม่ช้า การเชื่อมต่อผู้เล่นก่อนที่จะเป
เพื่อติดตามความถี่ของการตัดการเชื่อมต่ออัตโนมัติที่เกิดขึ้นบ่อยเท่าไหร่, ลองจัดเกี่ยวเหตุการณ์นี้กับเหตุการณ์ของ Players.PlayerRemoving
พารามิเตอร์
นิ่งเฉย
ตัวอย่างโค้ด
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
เกิดขึ้นเมื่อสถานะการเคลื่อนย้ายของผู้เล่นเปลี่ยนแปลง เหตุการณ์นี้มีประโยชน์สำหรับการตรวจสอบว่าการเคลื่อนย้ายสำเร็จหรือไม่
TeleportState คืออะไร?
เมื่อมีคำขอเทเลพอร์ตสร้างขึ้นโดยใช้ TeleportService จะมีสามสเตจก่อนที่ Player จะเทเลพอร์ต สเตจปัจจุบันจะได้รับการแทนที่โดยค่า Enum.TeleportState ซึ่งให้
พารามิเตอร์
Class.Player เป็นคอลเลกชันใหม่ของเรา .
รหัสสถานที่ที่ Class.Player กําลังถูกเทเลพอร์ตไปยัง
ชื่อสปอร์นที่จะเทเลพอร์ตไปยัง, หาก TeleportService:TeleportToSpawnByName() ได้รับการใช้งาน.
ตัวอย่างโค้ด
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)