Menu
CoddyTech

من لا يزال على قيد الحياة

الدرس 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، ونقله آنيًا سيؤدي إلى احتساب لاعب ميت على أنه ناجٍ.

challenge icon

التحدي

متوسط

تابع من لا يزال حيًا في الجولة.

  1. عندما تبدأ الجولة، أنشئ local survivors = {}.
  2. انقل اللاعبين الذين تكون قيمة Humanoid.Health لشخصياتهم أكبر من 0 فقط، وأضف كل واحد منهم إلى survivors.
  3. اربط Humanoid.Died لكل لاعب بـ survivors[player] = nil.
  4. عندما تنتهي الجولة، انقل الناجين فقط إلى المكان السابق، ثم اطبع "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