Menu
CoddyTech

Kim Hayatta

Coddy'nin Roblox Oyunu: Felaketten Kurtulma kursunda ders 7 / 18.

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

Her turdaki hayatta kalanları takip et:

  1. Tur başladığında boş bir tablo survivors oluştur.
  2. Yalnızca karakteri var olan ve Humanoid.Health değeri 0'ın üzerinde olan oyuncuları ışınla; her birini survivors tablosuna ekle ve Humanoid'leri öldüğünde tablodan çıkar.
  3. Tur sona erdiğinde yalnızca hayatta kalanları lobiye geri ışınla ve kaç kişi olduklarını yazdır: Survivors: 1.

Play düğmesine bas, ardından ikinci turda adadan aşağı yürü ve Output'u oku. Sonra Check 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)

-- Lobby'deki 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
		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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Roblox Oyunu: Felaketten Kurtulma bölümündeki tüm dersler