الفائزون
الدرس 8 من 18 في دورة لعبة Roblox: النجاة من الكوارث على Coddy.
يستحق النجاة من الجولة فوزًا. عند انتهاء الجولة، يحصل كل لاعب لا يزال ضمن survivors على فوز واحد:
for player in survivors do
player.leaderstats.Wins.Value += 1
endتضيف += قيمةً إلى قيمة موجودة مباشرةً. لمعرفة ما إذا كان أحد قد نجا، تُرجع next(survivors) المفتاح الأول في الجدول، أو nil إذا كان فارغًا.
يحتاج اللاعبون إلى لحظة لقراءة النتيجة قبل أن يعيد العد التنازلي للّوبي اللوحة، لذا تنتهي الجولة بـ task.wait(3).
التحدي
متوسطعند انتهاء الجولة:
- امنح كل ناجٍ +1
Wins(بدلًا من احتسابهم). - بعد تدمير الخريطة، اعرض
Survivors win!إذا نجا أحد، أوNobody survived!إذا لم ينجُ أحد. - انتظر 3 ثوانٍ قبل العد التنازلي التالي في الردهة.
اضغط العب، ونجُ في جولة وراقب Wins لديك، ثم اضغط تحقّق.
جرّب بنفسك
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
local survivors = {}
for _, player in Players:GetPlayers() do
local character = player.Character
if character and character.Humanoid.Health > 0 then
teleport(player, map.Spawn)
survivors[player] = true
character.Humanoid.Died:Connect(function()
survivors[player] = nil
end)
end
end
for seconds = Settings.RoundLength, 1, -1 do
setStatus("Time left: " .. seconds)
task.wait(1)
end
local count = 0
for player in survivors do
count += 1
teleport(player, lobbySpawn)
end
map:Destroy()
print("Survivors: " .. count)
end
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.