< BACK TO BLOG

ดึงตัวละครผู้เล่น Roblox แบบโปร ด้วย PlayerAdded และทำให้ผู้เล่นโดน Effect

2022-09-13T00:00:00.000Z

วิธีดึงข้อมูลผู้เล่นเวลาเขียน Roblox Game แบบทั่วๆ ไปจะใช้ Loop ธรรมดาเช่น

Players = game:GetService("Players")
for i, player in pairs(Players:GetPlayers()) do
    print(player.Name)
end

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

ควรใช้ Code ด้านล่างเพื่อตรวจสอบ

local Players = game:GetService("Players")

local function onCharacterAdded(character)
	if not character:FindFirstChild("Sparkles") then
		local sparkles = Instance.new("Sparkles")
		sparkles.Parent = character:WaitForChild("Head")
	end
end

local function onPlayerAdded(player)
	print("Player: " .. player.Name)
 	if player.Character then
       -- ฟังชั่นที่เราจะใส่ให้กับผู้เล่น
       onCharacterAdded(player.Character)
	end
	-- ตรวจสอบว่าผู้เล่นกำลังเชื่อมต่อกับ Map 
	player.CharacterAdded:Connect(onCharacterAdded)

end
 
for _, player in pairs(Players:GetPlayers()) do
	onPlayerAdded(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)

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

โปรแกรมเกมส์โรบอก

บรรทัดที่ 3 เป็นการใส่ Effect ผู้เล่นที่เราได้รวบรวมผู้เล่นทั้ง Server มาหมดแล้วทุกสถานะ โดยจะใส่ Effect Sparkles หรือ Smoke Explosion ตัวระเบิดก็ได้ทั้งหมด

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

ไว้คราวหน้าจะมานำเสนอการ Coding Roblox ใหม่นะครับ

Tags: roblox