Player

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

Player เป็นวัตถุลูกค้าที่กำลังเชื่อมต่ออยู่ เหล่านี้จะถูกเพิ่มไปยังบริการ Players เมื่อผู้เล่นใหม่เชื่อมต่อแล้วจะถูกลบออกเมื่อพวกเขาในที่สุดจะออกจากเซิร์ฟเวอร์

สมบัติ Instance.Name ประกอบด้วยชื่อผู้ใช้ของผู้เล่น เมื่อบันทึกข้อมูลเกี่ยวกับผู้เล่นคุณควรใช้ Player.UserId ของผู้เล่นเนื่องจากเป็นไปได้ที่ผู้เล่นจะเปลี่ยนชื่อผู้ใช้

มีวิธีที่คล้ายกันหลายวิธีใน Players บริการสำหรับการทำงานกับวัตถุผู้เล่น ใช้วิธีเหล่านี้เหนือวิธี Instance ของพวกเขา:

  • คุณสามารถรับตารางของวัตถุผู้เล่นปัจจุบันโดยใช้ Players:GetPlayers() อีกครั้งใช้นี้แทนที่ Instance:GetChildren()
  • เพื่อตรวจจับการเพิ่มของวัตถุผู้เล่น, มันเป็นการดีกว่าที่จะใช้เหตุการณ์ Players.PlayerAdded (แทนที่จะใช้ Instance.ChildAdded บนบริการ Players ของคุณ)
  • เช่นเดียวกันคุณสามารถตรวจจับการลบของวัตถุผู้เล่นโดยใช้ Players.PlayerRemoving ซึ่งจะเปิดให้ใช้เพียง ก่อน วัตถุผู้เล่นจะถูกลบ (แทนที่จะเป็น

ตัวอย่างโค้ด

Leaderstats

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 เข้าร่วมประสบการณ์

  • กลับมาเป็นตัวเลือกที่เป็นไปด้วยเมาส์โดยลูกค้า

  • เขียนพร้อมๆ กัน

    กลับค่าความแลคของเครือข่ายที่แยกออกในวินาที

  • กลับว่ามีให้โหลดรูปลักษณ์ของตัวละครผู้เล่นหรือไม่

  • กลับว่าผู้เล่นได้รับการยืนยันด้วยสัญญาณโลกแห่งความจริงหรือไม่

  • Kick(message : string):void

    เปิดให้ผู้เล่นออกจากเกมโดยบังคับ โดยให้ข้อความเป็นตัวเลือก

  • Move(walkDirection : Vector3,relativeToCamera : bool):void

    ทำให้ตัวละครของผู้เล่นเดินในทิศทางที่กำหนดจนกว่าจะหยุดหรือขัดขวางโดยผู้เล่น (โดยใช้การควบคุมของพวกเขา)

  • SetAccountAge(accountAge : number):void
    การรักษาความปลอดภัยของปลั๊กอิน

    ตั้งค่าอายุบัญชีของผู้เล่น

  • SetSuperSafeChat(value : bool):void
    การรักษาความปลอดภัยของปลั๊กอิน

    ตั้งค่าว่าผู้เล่นเห็นการแชทกรองหรือไม่ แทนที่จะเป็นการแชทปกติ

  • ผลตอบแทน

    กลับไปที่พจนารูปแบบออนไลน์ของเพื่อน

  • ผลตอบแทน

    กลับรายชื่อผู้เล่นในกลุ่มเป็นตัวเลขที่อยู่ระหว่าง 0 และ 255 โดย 0 เป็นสมาชิกไม่ได้และ 255 เป็นเจ้าของกลุ่ม

  • ผลตอบแทน

    กลับบทบาทของผู้เล่นในกลุ่มเป็นสตริง หรือ "Guest" หากผู้เล่นไม่ได้เป็นส่วนหนึ่งของกลุ่ม

  • ผลตอบแทน

    ตรวจสอบว่าผู้เล่นเป็นเพื่อนของผู้ใช้ด้วย Player.UserId ที่ให้

  • IsInGroup(groupId : number):bool
    ผลตอบแทน

    ตรวจสอบว่าผู้เล่นเป็นสมาชิกของกลุ่มที่มีรหัสที่ให้

  • ผลตอบแทน

    สร้างตัวละครใหม่สำหรับผู้เล่นโดยลบอันเก่าออก นอกจากนี้ยังล้าง Backpack และ PlayerGui ของผู้เล่น

  • ผลตอบแทน

    สร้าง avatar ให้มีอุปกรณ์ทั้งหมดใน HumanoidDescription ที่ผ่านมา

  • RequestStreamAroundAsync(position : Vector3,timeOut : number):void
    ผลตอบแทน

    คำขอที่เซิร์ฟเวอร์สตรีมไปยังผู้เล่นในพื้นที่กำหนด

อีเวนต์

  • จะเกิดขึ้นเมื่อตัวละครของผู้เล่นเกิดขึ้นหรือรีสปอร์น

  • เปิดให้เมื่อลักษณะละอันเต็มของ Player.Character ได้ถูกใส่เข้ามาแล้ว

  • ยิงตรงก่อนที่จะลบตัวละครของผู้เล่น

  • Chatted(message : string,recipient : Player):RBXScriptSignal

    เกิดขึ้นเมื่อผู้เล่นแชทในเกมโดยใช้บาร์แชทที่จัดหาโดย Roblox

  • เหตุการณ์นี้จะเกิดขึ้นประมาณสองนาทีหลังจากที่เครื่องมือเกมจะคลasสไพรส์ Class.Player|player ว่าเป็นไม่ได้ใช้งาน เวลาคือจำนวนวินาทีที่ผ่านมาตั้งแต่จุดนั้น

  • OnTeleport(teleportState : Enum.TeleportState,placeId : number,spawnName : string):RBXScriptSignal

    ไฟร์เมื่อสถานะเคลื่อนย้ายของผู้เล่นเปลี่ยนแปลง

คุณสมบัติ

AccountAge

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

The AccountAge คือ Player สมบัติข้อมูลที่อธิบายว่าเมื่อใดที่บัญชีของผู้เล่นได้รับการลงทะเบียนในวันที่ผ่านมา มันจะตั้งโดยใช้ฟังก์ชัน Player:SetAccountAge() ซึ่งไม่สามารถเข้าถึงไ

คุณสมบัตินี้มีประโยชน์สำหรับการแสดงเนื้อหาของผู้เล่น Roblox ใหม่โดยเฉพาะเช่นการกวดวิชา

ตัวอย่างโค้ด

Account Age Mark

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

ตัวอย่างโค้ด

Auto-Jump Toggle

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

ตัวอย่างโค้ด

Setting Camera Zoom Distance

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMaxZoomDistance = 50
player.CameraMinZoomDistance = 75

CameraMinZoomDistance

อ่านพร้อมๆ กัน

ค่า CameraMinZoonDistance Player ตั้งค่าระยะทางอย่างน้อยใน studs ที่กล้องสามารถเป็นจากตัวละครที่มีกล้องเริ่มต้น

ในคำอื่น มันควบคุมระยะทางขั้นต่ำที่กล้องผู้เล่นสามารถซูมได้

ค่าเริ่มต้นของสมบัตินี้กำหนดโดย StarterPlayer.CameraMinZoomDistance หากค่านี้ถูกตั้งไว้สูงกว่า Player.CameraMaxZoomDistance มันจะถูกลดลงเป็น CameraMaxZoomDistance

ตัวอย่างโค้ด

Setting Camera Zoom Distance

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.

ตัวอย่างโค้ด

Playing in First Person

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.CameraMode = Enum.CameraMode.LockFirstPerson

CanLoadCharacterAppearance

อ่านพร้อมๆ กัน

ลักษณะลูกศร Player ของสมบัติสัญลักษณ์กำหนดว่าตัวละครของผู้เล่นจะโหลดเมื่อผู้เล่นเกิดขึ้น มูลค่าปกติของค่านี้กำหนดโดย StarterPlayer.LoadPlayerAppearance

ถ้า จริง ตัวละครจะโหลดรูปลักษณ์ของผู้เล่นที่ตรงกับ Player.CharacterAppearanceId ของผู้เล่น

หาก ปลอม ผู้เล่นจะเกิดขึ้นด้วยรูปลักษณ์เริ่มต้น - ตัวละครเป็นสีเทาโดยไม่มีหมวก เสื้อ กางเกง ฯลฯ

การพยายามติดตั้งสมบัติสินค้าหลังจากที่ตัวละครมีสปอนจะไม่เปลี่ยนตัวละคร คุณต้องโทร Player:LoadCharacter() รูปลักษณ์

ตัวอย่างโค้ด

Disabling a Player's Appearance

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.LocalPlayer
local character = player.Character
if not character or character.Parent == nil then
character = player.CharacterAdded:Wait()
end

CharacterAppearanceId

อ่านพร้อมๆ กัน

สมบัตินี้กำหนดรหัสผู้ใช้ของบัญชีที่มีตัวละครปรากฏขึ้นสำหรับผู้เล่น Player.Character โดยปกติรหัสนี้คือ Player.UserId ซึ่งใช้ avatar ของผู้เล่นเมื่อพวกเขาสร้างมันบน

การเปลี่ยนค่านี้เป็นรหัสผู้ใช้ของบัญชีอื่นจะทำให้ผู้เล่นปรากฏขึ้นด้วยรูปลักษณ์ของบัญชีนั้น (หมวก, เสื้อ, กางเกง, เป็นต้น)

เกมยังสามารถเปิด/ปิดการโหลดรูปลักษณ์ของตัวละครผู้เล่นในเกมได้โดยการเปลี่ยนสถานะ StarterPlayer.LoadCharacterAppearance ของโปรไฟล์

ตัวอย่างโค้ด

Disguise Command

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 กำหนดวิธีการที่ผู้เล่นเคลื่อนย้ายกล้องของพวกเขาเมื่อใช้อุปกรณ์ที่มีเมาส์และคีย์บอร์ด ดู Enum.DevComputerCameraMovementMode สำหรับคำ

ค่าเริ่มต้นของสมบัตินี้จะถูกกำหนดโดย StarterPlayer.DevComputerCameraMovementMode

คำว่า "คอมพิวเตอร์" ในชื่อโครงการนี้อ้างถึงอุปกรณ์ที่ไม่ใช่ TouchEnabled หรือ GamepadEnabled อุปกรณ์

เมื่อตั้งค่าไว้ที่ ตัวเลือกผู้ใช้ ผู้เล่นสามารถเลือกระหว่างโหมดการควบคุมใด ๆ (ยกเว้น สคริปต์ ) ในการตั้งค่าเกม Roblox ได้ โดยทั่วไป เป็นการดีที่จะอนุญาตให้ผู้

มันเป็นไปได้ที่จะสร้างสูตรควบคุมที่กำหนดเองโดยการตั้งค่าสมบัตินี้เป็น สคริปท์ได้ สมบัตินี้ไม่ส่งผลกระทบต่อผู้เล่นที่ใช้อุปกรณ์เครื่องสัมผัสเปิดใช้งาน ดู Player.DevTouchCameraMode แทน

ตัวอย่างโค้ด

Setting a Player's Camera Movement Mode (Desktop)

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 แทน

ตัวอย่างโค้ด

Setting a Player's Movement Mode (Desktop)

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 แทนเพื่อล็อคเมาส์

ตัวอย่างโค้ด

Toggling Mouse Lock Ability

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 กำหนดวิธีที่ผู้เล่นเคลื่อนย้ายกล้องของพวกเขาเมื่อใช้อุปกรณ์ TouchEnabled ต่างๆ ดู

ค่าเริ่มต้นของสมบัตินี้จะถูกกำหนดโดย StarterPlayer.DevTouchCameraMovementMode

เมื่อตั้งค่าไว้ที่ ตัวเลือกผู้ใช้ ผู้เล่นสามารถเลือกระหว่างโหมดการควบคุมใด ๆ (ยกเว้น สคริปต์ ) ในการตั้งค่าเกม Roblox ได้ โดยทั่วไป เป็นเรื่องดีที่จะอนุญาตให้ผู

มันเป็นไปได้ที่จะสร้างสูตรควบคุมที่กำหนดเองโดยการตั้งค่าสมบัตินี้เป็น สคริปท์ได้ สมบัตินี้ไม่ส่งผลกระทบต่อผู้เล่นที่ไม่ใช้อุปกรณ์เปิดแตะ ดู Player.DevComputerCameraMovementMode แทน

ตัวอย่างโค้ด

Setting a Player's Camera Movement Mode (Touch)

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 แทน

ตัวอย่างโค้ด

Setting a Player's Movement Mode (Touch)

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()

ตัวอย่างโค้ด

Followed Alert

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 เปิดอยู่ เซิร์ฟเวอร์แต่ได้ถูกเรียกใช้ไปยังเซิร์ฟเ

ดูเพิ่มเติม:

HasVerifiedBadge

อ่านพร้อมๆ กัน

รายการที่พิสูจน์แล้ว Player บ่งชี้ว่าผู้เล่นมีตราที่พิสูจน์แล้วหรือไม่

HealthDisplayDistance

อ่านพร้อมๆ กัน

คุณสมบัติ HealthDisplayDistance Player ตั้งค่าระยะทางใน studs ที่ผู้เล่นจะเห็นบาร์พลังชีวิตอื่น ๆ ของ Humanoid หากตั้งค่าเป็น 0 บาร์พลังชีวิตจะไม่ปรากฏ

หากบาร์สุขภาพของมนุษย์มองเห็นได้ คุณสามารถตั้งค่าประเภทการแสดงผลโดยใช้ Humanoid.DisplayDistanceType

ตัวอย่างโค้ด

Hiding Player Health and Names

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 ยังไม่สนับสนุนการตั้งภาษาของผู้เล่นในท้องถิ่น

ตัวอย่างโค้ด

Checking a Player's Locale

local Players = game:GetService("Players")
local player = Players.LocalPlayer
print(player.LocaleId)

MembershipType

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

คุณสมบัตินี้สามารถอ่านได้เท่านั้นเพื่อกำหนดสมาชิก (พิมพ์) มันมี Enum.MembershipType พิมพ์

ตัวอย่างโค้ด

Check Player Membership Status

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

ตัวอย่างโค้ด

Hiding Player Health and Names

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player.HealthDisplayDistance = 0
player.NameDisplayDistance = 0

Neutral

อ่านพร้อมๆ กัน

สมบัติของการเป็นกลางจะกำหนดว่าผู้เล่นอยู่ในทีมที่เฉพาะเจาะจงหรือไม่

  • เมื่อ จริง ผู้เล่นไม่ได้อยู่ในทีมเฉพาะ นี่ยังหมายถึงว่า Player.Team โปรไฟล์จะเป็นศูนย์และ Player.TeamColor จะเป็นสีขาว
  • เมื่อ ปลอม ผู้เล่นอยู่ในทีมที่เฉพาะเจาะจง สมบัติสมุน Player.Team จะตรงกับทีมที่ผู้เล่นอยู่ด้วยเช่นเดียวกับ Team

ตัวอย่างโค้ด

Checking if a Player is Neutral

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 หมายเหตุว่าค่านี้ไม่เปลี่ยนแปลงหรือปรับปรุงเจ้าของเครือข่ายของบางส่วน

ตัวอย่างโค้ด

Setting a Player's Replication Focus

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 ที่ถูกต้องซึ่งต้องตรงตามข้อกำหนดต่อไ

หาก RespawnLocation ไม่ได้ตั้งค่าเป็น SpawnLocation แล้วจะใช้เหตุผลการเรียกใช้งานเริ่มต้นโดยปกติ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้โปรดดูหน้าสำหรับ SpawnLocation .

ตัวเลือกที่ไม่รวมอยู่ใน RespawnLocation
  • A Player จะเกิดขึ้นจาก SpawnLocations ที่เป็นของทีมของพวกเขา ในบางกรณีอาจเป็นเรื่องง่ายกว่าที่จะเปลี่ยน Player.Team ของผู้เล่น
  • ใช้ PVInstance:PivotTo() เพื่อเคลื่อนย้าย Player.Character โดยใช้การเคลื่อนย้ายแบบมือ動

ตัวอย่างโค้ด

Change Spawn on Touch

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

ตัวอย่างโค้ด

Playing/Spectating Teams

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)
Join Team Command

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 แทนที่จะใช้ค่านี้ การตั้งค่าคุณสมบัตินี้มักจะทำให้เกิดความซ้ำซาก

ตัวอย่างโค้ด

Playing/Spectating Teams

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 ใช้รหัสผู้ใช้ของผู้เล่นเป็นคีย์เก็บข้อมูลเพื่อให้แต่ละผู้เล่นมีกุญแจที่ไม่ซ้ำกัน

ตัวอย่างโค้ด

Player.UserId

local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.UserId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players:GetPlayerByUserId

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
Met the Creator Badge

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)
Data Store to Leaderboard

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

void

ตัวละครที่เปลี่ยนแปลงรูปลักษณ์ของผู้เล่น เช่น การลบ Class.Accessory ทั้ง

มันไม่ลบ t-shirts หรือหน้าผาก


ส่งค่ากลับ

void

ตัวอย่างโค้ด

How to Clear a Character's Appearance

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

พารามิเตอร์

point: Vector3

ตำแหน่งที่ผู้เล่นอยู่ใกล้


ส่งค่ากลับ

ระยะทางใน stud ระหว่างผู้เล่นและสถานที่

ตัวอย่างโค้ด

Measuring the Distance Between a Player and a Position

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 (ดูตารางในคำอธิบาย)

ตัวอย่างโค้ด

Tracking Traffic Sources

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)
Referral URL Generator

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)
Using a Table as Launch Data

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
Decoding JSON Launch Data

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)
Server TeleportData Example

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 สามารถตั้งค่าไอคอนของเมาส์ด้วยวิธีนี้ได้

ส่งค่ากลับ

ตัวอย่างโค้ด

How to Track Mouse Input

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


ส่งค่ากลับ

บูลีนที่ระบุว่าจะโหลดตัวละครของผู้เล่นหรือไม่

ตัวอย่างโค้ด

Check if a Player's Appearance Has Loaded

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 ให้ระวังการดำเนินการเพื่อให้แน่ใจว่าการดำเนินการนี้ไม่ได้บล็อกผู้ใช้ที่ไม่ได้รับการยืนยันทั้งหมด

หมายเหตุว่าวิธีนี้สามารถเรียกได้เฉพาะในเซิร์ฟเวอร์แบ็คเอนด์เท่านั้น การเรียกมันจากด้านล่างผลในข้อผิดพลาด นอกจากนี้วิธีนี้จะส่งผลเสมอ


ส่งค่ากลับ

บูลีนที่ระบุว่าผู้เล่นได้รับการยืนยันหรือไม่

ตัวอย่างโค้ด

Using 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

void

วิธี Kick() นี้ช่วยให้ประสบการณ์สามารถเชิญผู้ใช้ออกได้อย่างมีรสนิยมและให้ข้อความแก่ผู้ใช้ที่เชิญออกได้ นี่เป็นวิธีที่มีประโยชน์ในการจัดการผู้ใช้ที่อาจจ

การโทรใช้วิธีนี้ใน Player โดยไม่มีข้อมูลใด ๆ ทิ้งออกผู้ใช้จากเซิร์ฟเวอร์และให้ข้อความเตือนเรื่องปกติ การโทรใช้วิธีนี้ใน Player พร้อมกับสตริงเป็นตัว

เมื่อใช้วิธีนี้จาก LocalScript เท่านั้นผู้ใช้ท้องถิ่นสามารถถูกเตะออก

พารามิเตอร์

message: string

ข้อความที่แสดงให้ผู้ใช้เมื่อเตะ

ค่าเริ่มต้น: ""

ส่งค่ากลับ

void

Move

void

การเคลื่อนที่ Player ฟังก์ชันทำให้ตัวละครของผู้เล่นเดินในทิศทางที่กำหนดจนกว่าจะหยุดหรือขัดขวางโดยผู้เล่น (โดยใช้การควบคุมของพวกเขา)

นี่เป็นประโยชน์เมื่อสคริปต์ NPC Humanoids ที่เคลื่อนที่ไปรอบ ๆ แผนที่ - แต่ไม่ได้รับการควบคุมโดยการป้อนของผู้เล่นจริง

หมายเหตุว่าตัวแปรที่สองของฟังก์ชันแสดงว่า Vector3 ที่ให้จะย้ายผู้เล่นไปยังตำแหน่งโลก ( ปลอม ) หรือ Camera ( 1> จริง1> ) ของผู้เล่น

พารามิเตอร์

walkDirection: Vector3

ทิศทางของเวกเตอร์ที่ผู้เล่นควรเคลื่อนที่

relativeToCamera: bool

บูลีนที่แสดงว่าผู้เล่นควรเคลื่อนที่เมื่อเป็นความสัมพันธ์กับกล้องของผู้เล่น

ค่าเริ่มต้น: false

ส่งค่ากลับ

void

ตัวอย่างโค้ด

Moving the Player relative to their Camera

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

void
การรักษาความปลอดภัยของปลั๊กอิน

ฟังก์ชัน SetAccountAge ตั้งค่า Player.AccountAge ของผู้เล่นในวัน

มันใช้เพื่อตั้งค่าสมบัติของ Player ที่อธิบายว่าเมื่อใดที่บัญชีของผู้เล่นได้รับการลงทะเบียนในวัน

นี้ไม่ได้ตั้งอายุของผู้เล่นในบัญชี แต่อายุของบัญชีเองที่เกี่ยวข้องกับเมื่อมันถูกสร้างครั้งแรก

พารามิเตอร์

accountAge: number

อายุบัญชีในวัน


ส่งค่ากลับ

void

ตัวอย่างโค้ด

Setting the Player's Account Age

local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetAccountAge(100)
Account Age Mark

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

void
การรักษาความปลอดภัยของปลั๊กอิน

วิธีนี้ตั้งค่าว่าผู้เล่นเห็นหรือไม่เห็นการแชทที่กรองโดย TextService:FilterStringAsync() หรือไม่ก็ตามการแชทปกติ


local Players = game:GetService("Players")
local player = Players.LocalPlayer
player:SetSuperSafeChat(true)

ไม่ว่าผู้เล่นจะมีการกรองการแชทเปิดอยู่หรือไม่ก็ตาม, การแชททั้งหมดควรถูกกรองโดย TextService เมื่อส่งไปยังผู้เล่นคนอื่นหรือบนหน้าจอของผู้

พารามิเตอร์

value: bool

บูเลียนแสดงว่าผู้เล่นเห็นหรือไม่เห็นการแชทกรอง


ส่งค่ากลับ

void

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>
ชื่อชนิดคำอธิบาย

พารามิเตอร์

maxFriends: number

จำนวนเงินสูงสุดของเพื่อนออนไลน์ที่จะกลับมา

ค่าเริ่มต้น: 200

ส่งค่ากลับ

พจนานุกรมเพื่อนออนไลน์ (ดูตารางด้านบน)

ตัวอย่างโค้ด

Get a List of Online Friends

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: number

groupId ของกลุ่มที่ระบุ


ส่งค่ากลับ

อันดับของผู้เล่นในกลุ่ม

ตัวอย่างโค้ด

How to Check a Player's Rank in a Group

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: number

groupId ของกลุ่มที่กำหนด


ส่งค่ากลับ

บทบาทของผู้เล่นในกลุ่มที่กำหนด หรือ แขก หากผู้เล่นไม่ใช่สมาชิก

ตัวอย่างโค้ด

How to Check a Player's Role in a Group

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 ของผู้ใช้นั้น

พารามิเตอร์

userId: number

Class.Player.UserId ของผู้เล่นที่ระบุ


ส่งค่ากลับ

บูเลียนที่แสดงว่าผู้เล่นเป็นเพื่อนของผู้ใช้ที่ระบุหรือไม่

ตัวอย่างโค้ด

How to Check if a Player is a Friend

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: number

groupId ของกลุ่มที่กำหนด


ส่งค่ากลับ

บูเลียนที่แสดงว่าผู้เล่นอยู่ในกลุ่มที่กำหนดหรือไม่

ตัวอย่างโค้ด

How to Check if a Player is in a Group

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

void
ผลตอบแทน

การโหลดตัวละคร Player สร้างตัวละครใหม่สำหรับผู้เล่นโดยลบอันเก่า มันยังล้าง Class.Backpack และ Class.PlayerGui ของผู้เล่น

นี่เป็นประโยชน์ในกรณีที่คุณต้องการรีโหลดตัวละครโดยไม่ต้องฆ่าผู้เล่น เช่นเมื่อคุณต้องการโหลดลักษณะตัวละครใหม่หลังจากเปลี่ยน Player.CharacterAppearance ของผู้เล่น

หมายเหตุ: ฟังก์ชันเหมือนกับ Player:LoadCharacterBlocking() แต่การร้องขอจะประมวลผลได้อย่างอัตโนมัติแทนที่จะเป็นการประมวลผลแบบเร็วขึ้น นี่หมายความว่าโค้ดอื่นจะสามารถ

หลังจากโหลดตัวละครเป็นของตัวเองผู้เล่นไม่ควรโหลดอีกครั้งสำหรับผู้เล่นเดียวกันจนกว่าอีเวนต์ Player.CharacterAppearanceLoaded ของผู้เล่นนั้นจะสิ้นสุด

ตัวอักษรการโหลดคำสั่ง

การโทร Player:LoadCharacter() ด้วย R15 อวาตาร์จะเรียกเหตุการณ์ต่อไปนี้ในลำดับ (หมายเหตุ: การสั่งซื้อ R6 แตกต่างกัน):

  1. Player.Character ชุด
  2. Player.CharacterAdded ไฟ
  3. Player.Changed จะยิงด้วยมูลค่า "ตัวละคร"
  4. ตัวละครปรากฏตัวครั้งแรก
  5. Player.CharacterAppearanceLoaded ไฟ
  6. Character.Parent ตั้งค่าไปยัง DataModel
  7. ตัวละครริกข้าง สร้างและขนาดตัวละคร
  8. ตำแหน่งของการเกิดใหม่
  9. โหลดตัวละครกลับมา

ส่งค่ากลับ

void

ตัวอย่างโค้ด

Turn Off Auto-Loading and Simulate Character Respawn

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

void
ผลตอบแทน

ฟังก์ชันนี้จะสร้าง avatar ดังนั้นจึงมีทุกอย่างพร้อมใน HumanoidDescription

หลังจากโทร LoadCharacterWithHumanoidDescription สําหรับผู้เล่นคนหนึ่ง, ไม่แนะนําให้โทรฟังก์ชันอีกครั้งสําหรับผู้เล่นเดียวกันจนกว่าเหตุการณ์ Player.CharacterAppearanceLoaded ของผู้เล่นนั้นจะเกิดขึ้น

ดูเพิ่มเติม:

พารามิเตอร์

humanoidDescription: HumanoidDescription

A HumanoidDescription ที่ประกอบด้วยลักษณะเหมือนตัวละคร/สีตัว/ขนาดตัว/เครื่องประดับ/เสื้อผ้าและอนิเมชั่นที่จะถูกติดตั้งในตัวละครที่โหลด


ส่งค่ากลับ

void

ตัวอย่างโค้ด

Spawn Characters With 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

void
ผลตอบแทน

สำหรับประสบการณ์ที่มีการเปิดใช้งาน การสตรีม ในตัวอย่าง คำขอที่เซิร์ฟเวอร์สตรีมไปยั

ผลกระทบของการโทรนี้จะเป็นชั่วคราวและไม่มีการรับประกันว่าสิ่งที่จะถูกสตรีมไปยังสถานที่ที่ระบุจะมีอยู่หรือไม่ ขีดจำกัดหน่วยความจำและเงื่อนไขของเครือข่ายอาจส่งผลกระทบต่อสิ่งที่จะมีให้บนเครื่อง

คำเตือนการใช้

การร้องขอการสตรีมมิงรอบพื้นที่ไม่ได้เป็นการรับประกันว่าเนื้อหาจะมีอยู่เมื่อคำขอสำเร็จเนื่องจากการสตรีมมิงได้รับผลกระทบจากการเชื่อมต่อเครือข่ายของลูกค้า ข้อจํากัดหน่วยความจํา และ

พารามิเตอร์

position: Vector3

ตำแหน่งโลกที่ต้องการสตรีมมิ่ง

timeOut: number

เวลารอคอยที่ตั้งไว้สำหรับคำขอ

ค่าเริ่มต้น: 0

ส่งค่ากลับ

void

อีเวนต์

CharacterAdded

เหตุการณ์ CharacterAdded เกิดขึ้นเมื่อตัวละครของผู้เล่นเกิดขึ้น (หรือ respawn) นี้เกิดขึ้นเร็ว ๆ นี้หลังจากการตั้งค่า Player.Character เป็นค่

นี้สามารถใช้ร่วมกับกิจกรรม Player.CharacterRemoving ซึ่งเปิดให้ได้ก่อนที่ผู้เล่นจะถูกนำออก โดยปกติจะเป็นเวลาที่ผู้เล่นตา

หมายเหตุว่า Humanoid และส่วนที่เป็นลำดับตัวของมัน (หัว, ลำตัว แ

พารามิเตอร์

character: Model

ตัวอย่างของตัวละครที่เกิดขึ้น/รีสปาวน์


ตัวอย่างโค้ด

Detecting Player Spawns and Despawns

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)
Respawn at Despawn Location

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)
Accessory Remover

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 ،

การใช้งานหนึ่งสำหรับเหตุการณ์นี้คือการให้แน่ใจว่าอุปกรณ์ทั้งหมดจะโหลดก่อนที่จะทำลายพวกเขา ดูด้านล่างสำหรับตัวอย่าง

พารามิเตอร์

character: Model

Class.Player.CharacterModel


ตัวอย่างโค้ด

Remove Accessories After Loading

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

พารามิเตอร์

character: Model

ตัวอย่างของตัวละครที่กำลังถูกลบออก


ตัวอย่างโค้ด

Player.CharacterRemoving

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()

การกรอง

ข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อความข้อค

พารามิเตอร์

message: string

เนื้อหาข้อความที่ผู้เล่นพิมพ์ในแชท

recipient: Player

เก่าแก้ไปแล้ว。 สำหรับข้อความเก่า นี่เป็นผู้เล่นที่เป็นเป้าหมายที่ตั้งใจของข้อความแชท


ตัวอย่างโค้ด

Player.Chatted

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)
Playing/Spectating Teams

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)
Join Team Command

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

พารามิเตอร์

time: number

นิ่งเฉย


ตัวอย่างโค้ด

Player.Idled

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 ซึ่งให้

พารามิเตอร์

teleportState: Enum.TeleportState

Class.Player เป็นคอลเลกชันใหม่ของเรา .

placeId: number

รหัสสถานที่ที่ Class.Player กําลังถูกเทเลพอร์ตไปยัง

spawnName: string

ชื่อสปอร์นที่จะเทเลพอร์ตไปยัง, หาก TeleportService:TeleportToSpawnByName() ได้รับการใช้งาน.


ตัวอย่างโค้ด

Player.OnTeleport

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)