Menu
CoddyTech

Para Pemenang

Pelajaran 8 dari 18 dalam kursus Game Roblox: Bertahan dari Bencana di Coddy.

Bertahan dalam satu ronde bernilai satu Kemenangan. Saat ronde berakhir, setiap pemain yang masih ada di survivors mendapat satu:

for player in survivors do
	player.leaderstats.Wins.Value += 1
end

+= menambahkan nilai secara langsung. Untuk mengetahui apakah ada yang selamat, next(survivors) memberikan kunci pertama dari tabel tersebut, atau nil jika tabel kosong.

Pemain perlu waktu sejenak untuk membaca hasilnya sebelum hitung mundur lobi mengambil alih papan lagi, jadi ronde berakhir dengan task.wait(3).

challenge icon

Tantangan

Sedang

Saat ronde berakhir:

  1. Berikan +1 Wins kepada setiap penyintas, alih-alih menghitung jumlahnya.
  2. Setelah map dihancurkan, tampilkan Survivors win! jika ada yang selamat, atau Nobody survived! jika tidak ada yang selamat.
  3. Tunggu 3 detik sebelum hitung mundur lobi berikutnya.

Tekan Mainkan, bertahanlah selama satu ronde dan lihat Wins-mu, lalu tekan Periksa.

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

	local survivors = {}
	for _, player in Players:GetPlayers() do
		local character = player.Character
		if character and character.Humanoid.Health > 0 then
			teleport(player, map.Spawn)
			survivors[player] = true
			character.Humanoid.Died:Connect(function()
				survivors[player] = nil
			end)
		end
	end

	for seconds = Settings.RoundLength, 1, -1 do
		setStatus("Time left: " .. seconds)
		task.wait(1)
	end

	local count = 0
	for player in survivors do
		count += 1
		teleport(player, lobbySpawn)
	end
	map:Destroy()
	print("Survivors: " .. count)
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