Menu
CoddyTech
flag Ar iconالعربيةdown icon

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

الدرس 7 من 18 في دورة لعبة 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. عند بدء الجولة، أنشئ جدولًا فارغًا باسم survivors.
  2. انقل اللاعبين الذين تكون شخصياتهم موجودة فقط، والذين تكون قيمة Humanoid.Health لديهم أكبر من 0؛ وأضف كل لاعب منهم إلى survivors، واحذفه منها عند موت Humanoid الخاص به.
  3. عند انتهاء الجولة، انقل الناجين فقط إلى الردهة، واطبع عددهم: Survivors: 1.

اضغط على Play، ثم اقفز من الجزيرة في الجولة الثانية واقرأ نافذة Output. ثم اضغط على Check.

جرّب بنفسك

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
		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
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس لعبة Roblox: النجاة من الكوارث