טעינת מפה
שיעור 5 מתוך 18 בקורס משחק Roblox: הישרדות באסונות של Coddy.
סבבים מתרחשים במפה. המפות ממתינות בתוך ServerStorage, שירות שהתוכן שלו אינו נמצא בעולם: אף אחד לא רואה אותן או נוגע בהן. פתחו את ServerStorage.Maps במבנה Explorer ותמצאו את Island.
סבב מציב עותק של מפה בסביבת העבודה באמצעות Clone, ומסיר אותו לאחר מכן באמצעות Destroy. המקור נשאר ב-ServerStorage, ללא שינוי, ומוכן לסבב הבא:
local map = ServerStorage.Maps.Island:Clone()
map.Name = "Map"
map.Parent = workspace
-- ... הסיבוב ...
map:Destroy()עותק שומר על המיקומים של המקור, ולכן האי מופיע במקום שבו הוא נבנה, הרחק מהלובי. העברת המקור במקום שכפול שלו הייתה עובדת פעם אחת: אחרי Destroy הראשון לא היה נשאר Island לסבב השני.
אתגר
בינוניטען את Island בכל סבב:
- בראש הקובץ, קבל את
ServerStorageבאמצעותgame:GetService. - כשהסבב מתחיל (אחרי הספירה לאחור בלובי), שכפל את
ServerStorage.Maps.Island, תן לעותק את השםMapוהגדר את סביבת העבודה כהורה שלו. - כשהספירה לאחור של הסבב מסתיימת, השמד את המפה.
לחץ על Play: כשהסבב מתחיל, האי מופיע הרחק לפני הלובי. לאחר מכן לחץ על Check.
נסו בעצמכם
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
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
-- לולאת הסבבים
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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.