Eine Karte laden
Lektion 5 von 18 im Kurs Roblox-Spiel: Katastrophen überleben von Coddy.
Runden finden auf einer Karte statt. Die Karten liegen in ServerStorage, einem Dienst, dessen Inhalte sich nicht in der Spielwelt befinden: Niemand sieht oder berührt sie. Öffne ServerStorage.Maps in der Explorer-Hierarchie, und du findest dort Island.
Eine Runde erstellt mit Clone eine Kopie einer Karte im Workspace und entfernt sie anschließend mit Destroy. Das Original bleibt in ServerStorage unangetastet und ist bereit für die nächste Runde:
local map = ServerStorage.Maps.Island:Clone()
map.Name = "Map"
map.Parent = workspace
-- ... die Runde ...
map:Destroy()Eine Kopie behält die Positionen des Originals bei, sodass die Insel dort erscheint, wo sie gebaut wurde – weit entfernt von der Lobby. Das Original stattdessen zu verschieben, würde einmal funktionieren: Nach dem ersten Destroy wäre für die zweite Runde keine Island mehr übrig.
Aufgabe
MittelLass jede Runde die Insel laden:
- Rufe am Anfang
ServerStoragemitgame:GetServiceab. - Wenn die Runde beginnt (nach dem Lobby-Countdown), klone
ServerStorage.Maps.Island, nenne die KopieMapund setze sie als untergeordnetes Element vonworkspace. - Wenn der Countdown der Runde endet, zerstöre die Karte.
Drücke Play: Wenn die Runde beginnt, erscheint die Insel weit vor der Lobby. Klicke dann auf Check.
Probier es selbst
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
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
-- Die Rundenschleife
while true do
for seconds = Settings.Intermission, 1, -1 do
setStatus("Intermission: " .. seconds)
task.wait(1)
end
for seconds = Settings.RoundLength, 1, -1 do
setStatus("Time left: " .. seconds)
task.wait(1)
end
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.