Menu
CoddyTech

Gewinner

Lektion 8 von 18 im Kurs Roblox-Spiel: Katastrophen überleben von Coddy.

Eine Runde zu überleben ist einen Sieg wert. Wenn die Runde endet, erhält jeder Spieler, der noch in survivors ist, einen:

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

+= addiert direkt zu einem Wert. Um festzustellen, ob jemand überlebt hat, gibt next(survivors) den ersten Schlüssel der Tabelle zurück oder nil, wenn sie leer ist.

Die Spieler brauchen einen Moment, um das Ergebnis zu lesen, bevor der Lobby-Countdown das Board wieder übernimmt. Deshalb endet die Runde mit task.wait(3).

challenge icon

Aufgabe

Mittel

Wenn die Runde endet:

  1. Gib jedem Überlebenden +1 Wins (anstatt sie zu zählen).
  2. Zeige nach dem Zerstören der Karte Survivors win!, wenn jemand überlebt hat, oder Nobody survived!, wenn niemand überlebt hat.
  3. Warte 3 Sekunden, bevor der nächste Lobby-Countdown beginnt.

Drücke Play, überlebe eine Runde und beobachte deine Wins, dann Check.

Probier es selbst

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")

-- Jeder Spieler erhält Wins auf der Bestenliste
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)

-- Die Statusanzeige in der Lobby
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

-- Die Rundenschleife
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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Roblox-Spiel: Katastrophen überleben