أرقام الغرف
الدرس 6 من 25 في دورة لعبة Roblox: اهرب من الظلام على Coddy.
ينبغي أن يعرف اللاعب مدى عمقه. لكل غرفة رقمها الخاص: كسمة، Number، وعلى اللافتة فوق بابها (Sign.SurfaceGui.Number).
تحتوي كل غرفة على جزء غير مرئي اسمه Entry، يقع على بُعد خطوة داخل مدخلها. عندما يلمسه جسم اللاعب، تصبح تلك الغرفة هي Room الخاصة به على لوحة المتصدرين، ونقطة حفظه: RespawnLocation للاعب هي SpawnLocation التي يعود إليها، ولكل غرفة واحدة اسمها Checkpoint.
player.RespawnLocation = room.Checkpointتُحدّد Players:GetPlayerFromCharacter(hit.Parent) صاحب الجسم الذي لمسه، أو تُرجع nil.
التحدي
متوسطرقّم الغرف واجعلها نقاط حفظ.
- أنشئ لكل لاعب
leaderstatsيتضمن قيمة IntValue باسمRoom. - في
addRoom، عيّن السمةNumberإلىcount، وعيّنroom.Sign.SurfaceGui.Number.Textإلى"Room " .. count. - اكتب
setupEntry(room)، واستدعها للبهو ولكل غرفة جديدة: يؤدي لمسroom.Entryإلى تعيين قيمة Room لدى اللاعب إلى Number الخاص بالغرفة، وتعيينRespawnLocationإلىroom.Checkpoint.
اضغط «العب» وادخل إلى الغرفة 1: ستعرض لافتتها وRoom لديك الرقم 1. ثم اضغط «تحقق».
جرّب بنفسك
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Lighting = game:GetService("Lighting")
local TweenService = game:GetService("TweenService")
local Settings = require(game.ReplicatedStorage.Settings)
local rooms = workspace.Rooms
local lastRoom = rooms.Lobby -- أحدث غرفة
local count = 0 -- الغرف التي أُنشئت حتى الآن
-- يحلّ الليل: لا شمس، وضوء خافت في كل مكان، وضباب
Lighting.ClockTime = Settings.ClockTime
Lighting.Ambient = Settings.Ambient
Lighting.OutdoorAmbient = Settings.Ambient
Lighting.FogColor = Color3.new(0, 0, 0)
Lighting.FogEnd = Settings.FogEnd
print("Lights out")
-- افتح الباب بتدويره على مفصلته
local function openDoor(door)
door:SetAttribute("Open", true)
door.Panel.Prompt.Enabled = false
local hinge, panel = door.Hinge, door.Panel
local goal = hinge.CFrame * CFrame.Angles(0, math.rad(90), 0) * hinge.CFrame:ToObjectSpace(panel.CFrame)
TweenService:Create(panel, TweenInfo.new(0.6), { CFrame = goal }):Play()
end
local addRoom -- مكتوب أدناه: يضيف الباب غرفة، ولكل غرفة باب
-- ما يفعله الباب عندما يفتحه لاعب
local function setupDoor(door)
door.Panel.Prompt.Triggered:Connect(function(player)
if door:GetAttribute("Open") then
return
end
if door.Parent == lastRoom then
addRoom()
end
openDoor(door)
end)
end
setupDoor(workspace.Rooms.Lobby.Door)
-- الدرس 6: أرقام الغرف توضع هنا
-- غرفة جديدة عند مخرج أحدث غرفة
function addRoom()
count += 1
local name = Settings.Order[(count - 1) % #Settings.Order + 1]
if count >= Settings.RoomsToEscape then
name = "Exit"
end
local room = ServerStorage.Rooms[name]:Clone()
room:PivotTo(lastRoom.Exit.CFrame)
room.Parent = rooms
lastRoom = room
setupDoor(room.Door)
return room
end
-- لكل لاعب: مصباح يدوي في كل حياة
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function()
local flashlight = ServerStorage.Flashlight:Clone()
flashlight.Parent = player.Backpack
local beam = flashlight.Handle.Beam
flashlight.Activated:Connect(function()
beam.Enabled = not beam.Enabled
end)
end)
end)
جميع دروس لعبة Roblox: اهرب من الظلام
تدرّب بنفسك: Playground لـ Roblox