Menu
CoddyTech

أرقام الغرف

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

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

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

player.RespawnLocation = room.Checkpoint

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

challenge icon

التحدي

متوسط

رقّم الغرف واجعلها نقاط حفظ.

  1. أنشئ لكل لاعب leaderstats يتضمن قيمة IntValue باسم Room.
  2. في addRoom، عيّن السمة Number إلى count، وعيّن room.Sign.SurfaceGui.Number.Text إلى "Room " .. count.
  3. اكتب 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