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).
Aufgabe
MittelWenn die Runde endet:
- Gib jedem Überlebenden +1
Wins(anstatt sie zu zählen). - Zeige nach dem Zerstören der Karte
Survivors win!, wenn jemand überlebt hat, oderNobody survived!, wenn niemand überlebt hat. - 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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.