تحميل خريطة
الدرس 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واجعلها ابنة لـ workspace. - عند انتهاء العد التنازلي للجولة، دمّر الخريطة.
اضغط على 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
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.