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

أرقام الغرف

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

ينبغي أن يعرف اللاعب مدى عمقه. لكل غرفة رقمها الخاص: كسمة، Number، وعلى اللافتة فوق بابها (Sign.SurfaceGui.Number).

تحتوي كل غرفة على جزء غير مرئي اسمه Entry، يقع على بُعد خطوة داخل مدخلها. عندما يلمسه جسم اللاعب، تصبح تلك الغرفة هي Room الخاصة به على لوحة المتصدرين، ونقطة حفظه: RespawnLocation للاعب هي SpawnLocation التي يعود إليها، ولكل غرفة واحدة اسمها Checkpoint.

player.RespawnLocation = room.Checkpoint

تُحدّد Players:GetPlayerFromCharacter(hit.Parent) صاحب الجسم الذي لمسه، أو تُرجع nil.

challenge icon

التحدي

متوسط
  1. امنح كل لاعب Room في لوحة المتصدرين (مجلد leaderstats يحتوي على قيمة IntValue).
  2. في addRoom، عيّن السمة Number للغرفة إلى count، واجعل لافتتها "Room " .. count (أي Room 1 للغرفة الأولى).
  3. اكتب setupEntry(room): عندما يلمس لاعب Entry الخاص بها، عيّن Room لديه إلى رقم الغرفة وRespawnLocation لديه إلى Checkpoint الخاص بها. استدعِها لـ Lobby ولكل غرفة جديدة.

اضغط على 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)

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)

-- غرفة جديدة عند مخرج أحدث غرفة
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)
quiz iconاختبر نفسك

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

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