שמות המנצחים
שיעור 9 מתוך 18 בקורס משחק Roblox: הישרדות באסונות של Coddy.
מנצח רוצה לראות את שמו באורות. כדי לרשום את שמות השורדים, אספו אותם ברשימה וחברו אותה.
רשימה היא טבלה עם המפתחות 1, 2, 3. table.insert(list, value) מוסיפה לסוף, #list הוא האורך שלה, ו־table.concat(list, ", ") מחברת את הפריטים למחרוזת אחת עם מפריד ביניהם:
local names = {}
table.insert(names, "Ana")
table.insert(names, "Ben")
print(#names) --> 2
print(table.concat(names, ", ")) --> Ana, Benאי אפשר לחבר מחרוזת לטבלה באמצעות ..; זו שגיאה. תחילה חברו את הרשימה למחרוזת.
אתגר
בינוניציין את שמות המנצחים בלוח:
- כשהסיבוב מסתיים, צור רשימה ריקה
namesוהוסף אליה את ה-Nameשל כל שורד. - הצג
Winners:ואחריו את השמות כשהם מחוברים באמצעות,, למשלWinners: Player1, אוNobody survived!כשהרשימה ריקה.
לחץ על הפעל ושרוד סיבוב, ואז לחץ על בדוק.
נסו בעצמכם
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")
-- כל שחקן מקבל Wins בלוח המובילים
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)
-- לוח הסטטוס באזור ההמתנה
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
-- הלולאה של הסיבובים
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
for player in survivors do
player.leaderstats.Wins.Value += 1
teleport(player, lobbySpawn)
end
map:Destroy()
if next(survivors) then
setStatus("Survivors win!")
else
setStatus("Nobody survived!")
end
task.wait(3)
end
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.