Wer lebt?
Lektion 7 von 20 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.
Aufgabe
MittelBehalte im Blick, wer in der Runde noch am Leben ist.
- Erstelle beim Start der Runde
local survivors = {}. - Teleportiere nur Spieler, deren Charakter einen
Humanoid.Health-Wert über 0 hat, und füge jeden zusurvivorshinzu. - Verbinde für jeden Spieler
Humanoid.Diedmitsurvivors[player] = nil. - Teleportiere am Ende der Runde nur die Überlebenden zurück und gib dann
"Survivors: " .. countaus.
Drücke auf „Spielen“: Wenn die Runde endet, zeigt die Ausgabe Survivors: 1 an. Drücke dann auf „Prüfen“.
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
for _, player in Players:GetPlayers() do
-- Lektion 7: Who Is Alive kommt hierhin
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
Alle Lektionen in Roblox-Spiel: Katastrophen überleben
4Mach ein Spiel daraus
Zwei MapsÜbe selbstständig: Roblox-Playground