Menu
CoddyTech

Wer lebt noch?

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

Um zu wissen, wer gewonnen hat, muss das Spiel wissen, wer noch am Leben ist. Eine nach Spielern indizierte Tabelle funktioniert wie eine Menge: survivors[player] = true fügt einen Spieler hinzu, survivors[player] = nil entfernt einen, und for player in survivors do durchläuft alle, die noch übrig sind.

Ein Humanoid löst Died aus, wenn seine Gesundheit 0 erreicht. Wenn du dich zu Rundenbeginn damit verbindest, wird ein Spieler genau dann aus der Menge entfernt, wenn er ausscheidet:

survivors[player] = true
character.Humanoid.Died:Connect(function()
	survivors[player] = nil
end)

Nur Spieler, die zu Rundenbeginn am Leben sind, nehmen an der Runde teil: Wer auf einen Respawn wartet, hat einen toten Charakter mit Health 0, und wenn du ihn teleportierst, würde ein toter Spieler als Überlebender zählen.

challenge icon

Aufgabe

Mittel

Verfolge die Überlebenden jeder Runde:

  1. Erstelle beim Start der Runde eine leere Tabelle survivors.
  2. Teleportiere nur Spieler, deren Charakter existiert und deren Humanoid.Health über 0 liegt; füge jeden zu survivors hinzu und entferne ihn, wenn sein Humanoid stirbt.
  3. Teleportiere am Ende der Runde nur die Überlebenden zurück in die Lobby und gib aus, wie viele es waren: Survivors: 1.

Drücke Play und gehe dann in Runde zwei von der Insel. Lies anschließend die Ausgabe. 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 Statustafel 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

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