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.
Görev
OrtaHer turdaki hayatta kalanları takip et:
- Tur başladığında boş bir tablo
survivorsoluştur. - Yalnızca karakteri var olan ve
Humanoid.Healthdeğeri 0'ın üzerinde olan oyuncuları ışınla; her birinisurvivorstablosuna ekle ve Humanoid'leri öldüğünde tablodan çıkar. - 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
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.