Siapa yang Masih Hidup
Pelajaran 7 dari 18 dalam kursus Game Roblox: Bertahan dari Bencana di Coddy.
Untuk mengetahui siapa yang menang, game harus mengetahui siapa yang masih hidup. Tabel dengan player sebagai kunci berfungsi seperti set: survivors[player] = true menambahkan player, survivors[player] = nil menghapusnya, dan for player in survivors do mengunjungi siapa pun yang tersisa.
Humanoid memicu Died saat kesehatannya mencapai 0. Menghubungkannya saat ronde dimulai akan mengeluarkan player dari set begitu mereka terjatuh:
survivors[player] = true
character.Humanoid.Died:Connect(function()
survivors[player] = nil
end)Hanya player yang masih hidup saat ronde dimulai yang ikut bermain: seseorang yang sedang menunggu untuk respawn memiliki karakter yang sudah mati dengan Health bernilai 0, dan memindahkannya akan membuat player yang sudah mati dihitung sebagai penyintas.
Tantangan
SedangLacak para pemain yang bertahan di setiap ronde:
- Saat ronde dimulai, buat tabel kosong
survivors. - Teleportasikan hanya pemain yang karakternya ada dan memiliki
Humanoid.Healthdi atas 0; tambahkan masing-masing kesurvivors, lalu hapus mereka saat Humanoid mereka mati. - Saat ronde berakhir, teleportasikan hanya para pemain yang bertahan kembali ke lobi, lalu cetak jumlahnya:
Survivors: 1.
Tekan Play, lalu berjalanlah keluar dari pulau pada ronde kedua dan baca Output. Kemudian tekan Check.
Coba sendiri
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")
-- Setiap pemain mendapat Wins di papan peringkat
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)
-- Papan status di lobi
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
-- Perulangan ronde
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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Game Roblox: Bertahan dari Bencana
Latihan sendiri: Playground Roblox