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.
Görev
OrtaRauntta hâlâ hayatta olan oyuncuları takip et.
- Raunt başladığında
local survivors = {}oluştur. - Yalnızca karakterinin
Humanoid.Healthdeğeri 0'ın üzerinde olan oyuncuları ışınla ve her birinisurvivorstablosuna ekle. - Her oyuncunun
Humanoid.Diedolayınısurvivors[player] = nilişlemine bağla. - Raunt bittiğinde yalnızca hayatta kalanları geri ışınla, ardından
"Survivors: " .. countyazdı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