Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Lacak para pemain yang bertahan di setiap ronde:

  1. Saat ronde dimulai, buat tabel kosong survivors.
  2. Teleportasikan hanya pemain yang karakternya ada dan memiliki Humanoid.Health di atas 0; tambahkan masing-masing ke survivors, lalu hapus mereka saat Humanoid mereka mati.
  3. 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
quiz iconUji dirimu

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