من لا يزال على قيد الحياة
الدرس 7 من 20 في دورة لعبة Roblox: النجاة من الكوارث على Coddy.
لمعرفة من فاز، يجب أن تعرف اللعبة من لا يزال على قيد الحياة. يعمل جدول مفهرس باللاعب كمجموعة: survivors[player] = true يضيف لاعبًا، وsurvivors[player] = nil يزيل لاعبًا، وfor player in survivors do يمرّ على كل من تبقّى.
يُطلق كائن Humanoid الحدث Died عندما تصل صحته إلى 0. يتيح الاتصال به عند بدء الجولة إخراج اللاعب من المجموعة لحظة سقوطه:
survivors[player] = true
character.Humanoid.Died:Connect(function()
survivors[player] = nil
end)ينضم إلى الجولة اللاعبون الأحياء عند بدايتها فقط: فالشخص الذي ينتظر إعادة الظهور لديه شخصية ميتة ذات Health يساوي 0، ونقله آنيًا سيؤدي إلى احتساب لاعب ميت على أنه ناجٍ.
التحدي
متوسطتابع من لا يزال حيًا في الجولة.
- عندما تبدأ الجولة، أنشئ
local survivors = {}. - انقل اللاعبين الذين تكون قيمة
Humanoid.Healthلشخصياتهم أكبر من 0 فقط، وأضف كل واحد منهم إلىsurvivors. - اربط
Humanoid.Diedلكل لاعب بـsurvivors[player] = nil. - عندما تنتهي الجولة، انقل الناجين فقط إلى المكان السابق، ثم اطبع
"Survivors: " .. count.
اضغط «العب»: عندما تنتهي الجولة، ستعرض نافذة Output النص Survivors: 1. ثم اضغط «تحقق».
جرّب بنفسك
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
local lobbySpawn = workspace.LobbySpawn
print("Rounds last " .. Settings.RoundLength .. " seconds")
-- يحصل كل لاعب على Wins في لوحة المتصدرين
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local wins = Instance.new("IntValue")
wins.Name = "Wins"
wins.Parent = leaderstats
end)
-- لوحة الحالة في الردهة
local gui = Instance.new("SurfaceGui")
gui.Parent = workspace.StatusBoard
local status = Instance.new("TextLabel")
status.Name = "Status"
status.Size = UDim2.fromScale(1, 1)
status.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
status.TextColor3 = Color3.fromRGB(255, 255, 255)
status.TextScaled = true
status.Text = "Welcome to Disaster Survival!"
status.Parent = gui
local function setStatus(text)
status.Text = text
end
local function teleport(player, target)
local character = player.Character
if character then
character:PivotTo(target.CFrame + Vector3.new(0, 4, 0))
end
end
-- حلقة الجولات
while true do
for seconds = Settings.Intermission, 1, -1 do
setStatus("Intermission: " .. seconds)
task.wait(1)
end
local map = ServerStorage.Maps.Island:Clone()
map.Name = "Map"
map.Parent = workspace
for _, player in Players:GetPlayers() do
-- الدرس 7: يوضع Who Is Alive هنا
teleport(player, map.Spawn)
end
for seconds = Settings.RoundLength, 1, -1 do
setStatus("Time left: " .. seconds)
task.wait(1)
end
for _, player in Players:GetPlayers() do
teleport(player, lobbySpawn)
end
map:Destroy()
end
جميع دروس لعبة Roblox: النجاة من الكوارث
تدرّب بنفسك: Playground لـ Roblox