Menu
CoddyTech

Kim Hayatta?

Coddy'nin Roblox Oyunu: Felaketten Sağ Kalma kursunda ders 7 / 20.

Kimin kazandığını bilmek için oyun, hâlâ kimin hayatta olduğunu bilmelidir. Oyuncuların anahtar olarak kullanıldığı bir tablo, bir küme gibi çalışır: survivors[player] = true bir oyuncu ekler, survivors[player] = nil bir oyuncuyu kaldırır ve for player in survivors do geriye kalanları dolaşır.

Bir Humanoid, sağlığı 0'a ulaştığında Died olayını tetikler. Tur başladığında bu olaya bağlanmak, oyuncu düştüğü anda onu kümeden çıkarır:

survivors[player] = true
character.Humanoid.Died:Connect(function()
	survivors[player] = nil
end)

Tura yalnızca tur başladığında hayatta olan oyuncular katılır: yeniden doğmayı bekleyen birinin ölü karakterinin Health değeri 0'dır ve bu karakteri ışınlamak, ölü bir oyuncunun hayatta kalanlardan sayılmasına neden olur.

challenge icon

Görev

Orta

Rauntta hâlâ hayatta olan oyuncuları takip et.

  1. Raunt başladığında local survivors = {} oluştur.
  2. Yalnızca karakterinin Humanoid.Health değeri 0'ın üzerinde olan oyuncuları ışınla ve her birini survivors tablosuna ekle.
  3. Her oyuncunun Humanoid.Died olayını survivors[player] = nil işlemine bağla.
  4. Raunt bittiğinde yalnızca hayatta kalanları geri ışınla, ardından "Survivors: " .. count yazdır.

“Oyna” düğmesine bas: Raunt bittiğinde Output'ta Survivors: 1 yazar. Ardından “Kontrol et” düğmesine bas.

Kendin dene

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")

-- Her oyuncu, liderlik tablosunda Wins kazanır
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)

-- Lobideki durum panosu
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

-- Tur döngüsü
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
		-- Ders 7: Who Is Alive buraya gelecek
		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 Oyunu: Felaketten Sağ Kalma bölümündeki tüm dersler

Kendi başına pratik yap: Roblox playground