Menu
CoddyTech

Nomor Kamar

Pelajaran 6 dari 20 dalam kursus Game Roblox: Kabur dari Kegelapan di Coddy.

Pemain perlu tahu seberapa jauh mereka telah melangkah. Setiap ruangan memiliki nomornya sendiri: sebagai atribut, Number, dan pada papan di atas pintunya (Sign.SurfaceGui.Number).

Setiap ruangan memiliki bagian Entry yang tidak terlihat, satu langkah di dalam pintu masuknya. Saat tubuh pemain menyentuhnya, ruangan itu menjadi Room mereka di papan peringkat dan titik pemeriksaan mereka: RespawnLocation pemain adalah SpawnLocation tempat mereka kembali, dan setiap ruangan memiliki satu, Checkpoint.

player.RespawnLocation = room.Checkpoint

Players:GetPlayerFromCharacter(hit.Parent) menunjukkan tubuh siapa yang menyentuhnya, atau nil.

challenge icon

Tantangan

Sedang
  1. Berikan setiap pemain Room di papan peringkat (sebuah Folder leaderstats dengan IntValue).
  2. Di dalam addRoom, tetapkan atribut Number ruangan ke count dan papan tandanya ke "Room " .. count (Room 1 untuk ruangan pertama).
  3. Tulis setupEntry(room): saat Entry-nya disentuh pemain, tetapkan Room mereka ke nomor ruangan tersebut dan RespawnLocation mereka ke Checkpoint-nya. Panggil fungsi ini untuk Lobby dan setiap ruangan baru.

Tekan Mainkan, lalu Periksa.

Coba sendiri

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 -- ruangan terbaru
local count = 0 -- jumlah ruangan yang sudah dibuat

-- Malam tiba: matahari menghilang, ada sedikit cahaya di mana-mana, dan kabut
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")

-- Ayunkan pintu hingga terbuka pada engselnya
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 -- ditulis di bawah: pintu menambahkan ruangan, dan ruangan memiliki pintu

-- Apa yang dilakukan pintu saat pemain membukanya
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)

-- Ruangan baru di pintu keluar ruangan terbaru
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

-- Setiap pemain: satu senter setiap kali hidup
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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Game Roblox: Kabur dari Kegelapan

Latihan sendiri: Playground Roblox