Menu
CoddyTech
flag Ar iconالعربيةdown icon

قوالب الغرف

الدرس 4 من 20 في دورة لعبة Roblox: اهرب من الظلام على Coddy.

خلف باب الردهة لا يوجد شيء بعد. الغرف هي قوالب في ServerStorage.Rooms، وكل منها عبارة عن Model يحتوي على جزء Entrance غير مرئي (وهو PrimaryPart، لذا فهو محور النموذج) وجزء Exit حيث يوجد بابه.

وضع غرفة بعد أخرى يتم بسطر واحد: ضع محور الغرفة الجديدة، أي مدخلها، عند مخرج الغرفة القديمة:

local room = ServerStorage.Rooms.Hall:Clone()
room:PivotTo(lastRoom.Exit.CFrame)

القالب الذي يأتي بعد ذلك موجود في Settings.Order، وهي قائمة أسماء. ويحتاج باب الغرفة الجديدة أيضًا إلى setupDoor.

challenge icon

التحدي

متوسط
  1. أضِف local rooms = workspace.Rooms وlocal lastRoom = rooms.Lobby وlocal count = 0.
  2. اكتب addRoom() أسفل setupDoor: أضِف 1 إلى count، واستنسخ القالب المسمى Settings.Order[count]، وحرّكه إلى lastRoom.Exit، واجعله تابعًا لـrooms، واجعله lastRoom، وأعدّ بابه، ثم أعده.
  3. استدعِ addRoom() مرة واحدة في نهاية البرنامج النصي.

اضغط على Play وافتح باب الردهة. ثم اضغط على Check.

جرّب بنفسك

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)

-- يحلّ الليل: لا شمس، وضوء خافت في كل مكان، وضباب
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 function setupDoor(door)
	door.Panel.Prompt.Triggered:Connect(function(player)
		if door:GetAttribute("Open") then
			return
		end
		openDoor(door)
	end)
end
setupDoor(workspace.Rooms.Lobby.Door)

-- كل لاعب: مصباح يدوي في كل حياة
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)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس لعبة Roblox: اهرب من الظلام