Backrooms VR Admin Floor 0 to 7
Key Required

Backrooms VR Admin Floor 0 to 7

[NEW] The Backrooms VR : EscapeFA_DEVFA_DEV 3.2K views 1.1K executesUpdated Dec 9, 2025
5.0/ 5(1 votes)
10100% Positive
Lua Script•4981 lines (161110 chars)
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")

local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local playerGui = player:WaitForChild("PlayerGui")
local character = player.Character or player.CharacterAdded:Wait()

-- Configure button names and custom colors here
local buttonNames = {
	{name = "Lobby", color = Color3.fromRGB(255, 255, 0)},
	{name = "Endless", color = Color3.fromRGB(255, 255, 0)},
	{name = "Floor 0 (Tutorial Floor)", color = Color3.fromRGB(255, 255, 0)},
	{name = "Floor 1 (Parking Garage)", color = Color3.fromRGB(111, 111, 111)},
  	{name = "Floor 2 (The Pool)", color = Color3.fromRGB(0, 255, 255)},
	{name = "Floor 3 (The Hotel)", color = Color3.fromRGB(255, 0, 98)},
	{name = "Floor 4 (The Facility)", color = Color3.fromRGB(106, 54, 41)},
	{name = "Floor 5 (Infinity Plane)", color = Color3.fromRGB(252, 252, 252)},
	{name = "Floor 6 (Cave System)", color = Color3.fromRGB(18, 0, 153)},
	{name = "Floor 7 (The Playplace)", color = Color3.fromRGB(255, 0, 255)},
}

local GUI_NAME = "LocalAdminGUI"
local MAIN_SIZE_OPEN = UDim2.new(0, 360, 0, 420)
local MOBILE_SIZE_OPEN = UDim2.new(0, 260, 0, 220)
local MAIN_SIZE_CLOSED = UDim2.new(0, 60, 0, 60)
local MOBILE_SIZE_CLOSED = UDim2.new(0, 30, 0, 30)
local TWEEN_INFO = TweenInfo.new(0.22, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local UIS = game:GetService("UserInputService")
local enabled = false

UIS.InputBegan:Connect(function(input,gameProcessedEvent)
	if input.KeyCode == Enum.KeyCode.U then
		if enabled == false then
			enabled = true
			local plrGui = game.Players.LocalPlayer:WaitForChild("PlayerGui")

			local screenGui = Instance.new("ScreenGui", plrGui)

			local txtButton = Instance.new("TextButton")
			txtButton.BackgroundTransparency = 1
			txtButton.Size = UDim2.new(0, 0 , 0 , 0)

			txtButton.Modal = true

			txtButton.Parent = screenGui
		else
			enabled = false
			game.Players.LocalPlayer:WaitForChild("PlayerGui").ScreenGui:Destroy()
		end
	end
end)

local old = playerGui:FindFirstChild(GUI_NAME)
if old then old:Destroy() end

local screenGui = Instance.new("ScreenGui")
screenGui.Name = GUI_NAME
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

local main = Instance.new("Frame")
main.Name = "Main"
wait(0.1)
if UserInputService.TouchEnabled then
	main.Size = MOBILE_SIZE_OPEN
else
	main.Size = MAIN_SIZE_OPEN
end
main.Position = UDim2.new(0, 20, 0.5, -MAIN_SIZE_OPEN.Y.Offset / 2)
main.AnchorPoint = Vector2.new(0, 0)
main.BackgroundColor3 = Color3.fromRGB(21, 24, 28)
main.Active = true
main.ZIndex = 2
main.Parent = screenGui

local mainCorner = Instance.new("UICorner", main)
mainCorner.CornerRadius = UDim.new(0, 12)
local mainStroke = Instance.new("UIStroke", main)
mainStroke.Color = Color3.fromRGB(40, 40, 45)
mainStroke.Thickness = 1

local topBar = Instance.new("Frame")
topBar.Name = "TopBar"
topBar.Size = UDim2.new(1, 0, 0, 44)
topBar.Position = UDim2.new(0, 0, 0, 0)
topBar.BackgroundTransparency = 1
topBar.ZIndex = 2
topBar.Parent = main

local topText = Instance.new("TextLabel")
topText.Name = "Title"
topText.Size = UDim2.new(1, -70, 1, 0)
topText.Position = UDim2.new(0, 10, 0, 0)
topText.BackgroundTransparency = 1
topText.Text = "FA_DEV's Admin Panel (U to unlock mouse) — Floors (Please select the Floor what you are on right now for correct script work.)"
topText.ZIndex = 2
topText.TextScaled = true
topText.TextColor3 = Color3.fromRGB(230, 230, 230)
topText.Font = Enum.Font.GothamBold
topText.TextSize = 18
topText.TextXAlignment = Enum.TextXAlignment.Left
topText.Parent = topBar

local toggle = Instance.new("TextButton")
toggle.Name = "Toggle"
toggle.Size = UDim2.new(0, 50, 0, 32)
toggle.Position = UDim2.new(1, -60, 0.5, -16)
toggle.Text = "Hide/Open"
toggle.ZIndex = 2
toggle.Font = Enum.Font.Gotham
toggle.TextSize = 20
toggle.BackgroundColor3 = Color3.fromRGB(30, 34, 38)
toggle.TextColor3 = Color3.fromRGB(230, 230, 230)
toggle.AutoButtonColor = true
toggle.Parent = topBar
local toggleCorner = Instance.new("UICorner", toggle)
toggleCorner.CornerRadius = UDim.new(0, 8)
local toggleStroke = Instance.new("UIStroke", toggle)
toggleStroke.Color = Color3.fromRGB(50, 50, 55)
toggleStroke.Thickness = 1

local container = Instance.new("Frame")
container.Name = "Container"
container.BackgroundTransparency = 1
container.Size = UDim2.new(1, -20, 1, -64)
container.Position = UDim2.new(0, 10, 0, 54)
container.Parent = main

local scroll = Instance.new("ScrollingFrame")
scroll.Name = "Scroll"
scroll.ZIndex = 2
scroll.Size = UDim2.new(1, 0, 1, 0)
scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
scroll.ScrollBarThickness = 6
scroll.ScrollBarImageTransparency = 0.25
scroll.BackgroundTransparency = 1
scroll.Parent = container

local listLayout = Instance.new("UIListLayout", scroll)
listLayout.SortOrder = Enum.SortOrder.LayoutOrder
listLayout.Padding = UDim.new(0, 8)

local padding = Instance.new("UIPadding", scroll)
padding.PaddingTop = UDim.new(0, 6)
padding.PaddingLeft = UDim.new(0, 6)
padding.PaddingRight = UDim.new(0, 6)
padding.PaddingBottom = UDim.new(0, 6)

-- Utility to destroy all floor buttons
local function destroyFloorButtons()
	for i, child in scroll:GetChildren() do
		if child:IsA("TextButton") then
			child:Destroy()
		end
	end
end

-- Utility to show notification
local function showNotification(name)
	local notif = Instance.new("Frame")
	topText.Text = "FAD Admin Panel — " ..name.. ""
	notif.Size = UDim2.new(0, 260, 0, 44)
	notif.AnchorPoint = Vector2.new(1, 0)
	notif.Position = UDim2.new(1, -10, 0, 10)
	notif.BackgroundColor3 = Color3.fromRGB(28, 30, 32)
	notif.Parent = main
	notif.ZIndex = 2
	local nCorner = Instance.new("UICorner", notif)
	nCorner.CornerRadius = UDim.new(0, 8)
	local nText = Instance.new("TextLabel", notif)
	nText.Size = UDim2.new(1, -12, 1, 0)
	nText.Position = UDim2.new(0, 8, 0, 0)
	nText.BackgroundTransparency = 1
	nText.Font = Enum.Font.Gotham
	nText.TextSize = 15
	nText.ZIndex = 3
	nText.TextColor3 = Color3.fromRGB(230, 230, 230)
	nText.Text = "Selected: " .. name
	nText.TextXAlignment = Enum.TextXAlignment.Left

	local tweenOut = TweenService:Create(notif, TweenInfo.new(0.4), {BackgroundTransparency = 1})
	delay(1.2, function()
		tweenOut:Play()
		tweenOut.Completed:Wait()
		notif:Destroy()
	end)
end

-- Button creation utility
local function makeButton(btnData, parent)
	local name, color
	if typeof(btnData) == "string" then
		name = btnData
		color = Color3.fromRGB(36, 40, 45)
	elseif typeof(btnData) == "table" then
		name = btnData.name or "Button"
		color = btnData.color or Color3.fromRGB(36, 40, 45)
	else
		name = "Button"
		color = Color3.fromRGB(36, 40, 45)
	end

	local btn = Instance.new("TextButton")
	btn.Name = name:gsub("%s", "_")
	btn.Size = UDim2.new(1, -12, 0, 48)
	btn.BackgroundColor3 = color
	btn.Text = name
	btn.ZIndex = 2
	btn.Font = Enum.Font.Gotham
	btn.TextSize = 16
	btn.TextColor3 = Color3.fromRGB(235, 235, 235)
	btn.AutoButtonColor = true
	btn.Parent = parent or scroll

	local corner = Instance.new("UICorner", btn)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", btn)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1

	btn.MouseEnter:Connect(function()
		if UserInputService.MouseEnabled then
			btn.BackgroundColor3 = color:Lerp(Color3.fromRGB(46, 50, 55), 0.5)
		end
	end)
	btn.MouseLeave:Connect(function()
		if UserInputService.MouseEnabled then
			btn.BackgroundColor3 = color
		end
	end)

	return btn, name
end

-- Custom button creation for each floor (no notification for custom button)
local function createCustomButton(customName, customColor, customCallback)
	local btn = makeButton({name = customName, color = customColor}, scroll)
	btn.Size = UDim2.new(1, -12, 0, 48)
	btn.ZIndex = 2
	btn.Activated:Connect(function()
		if customCallback then
			customCallback()
		end
		-- DO NOT call showNotification for custom button
	end)
	return btn
end

-- Define functions for each button, each creates a unique custom button
local function Lobby()
	print("Lobby function called")
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.Text = "Open All Floors"
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.Name = "Open all Floors"
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Opened All Floors")
		game.Workspace:WaitForChild("AllBadgeThings"):Destroy()
		Lobbybutton1.Text = "Opened All the Floors"
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Open the 八尺様 Badge Room"
	Lobbybutton1.Text = "Open the 八尺様 Badge Room"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Opened the 八尺様 Badge Room")
		game.Workspace:WaitForChild("MorseWall"):Destroy()
		game.ReplicatedStorage:WaitForChild("MALGRIS"):FireServer()
		Lobbybutton1.Text = "Opened the 八尺様 Badge Room"
	end)
end

local function Endless()
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Speed Boost 2x Speed"
	Lobbybutton1.Text = "Speed Boost 2x Speed"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local cd = false
		print("Speed Boost Activated")
		if cd == false then
			local humanoid = character:WaitForChild("Humanoid")

			-- Store original speed
			local originalSpeed = humanoid.WalkSpeed
			local boostedSpeed = originalSpeed * 2

			-- Apply boost once
			humanoid.WalkSpeed = boostedSpeed

			-- Reapply boost every time WalkSpeed changes
			humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
				if humanoid.WalkSpeed ~= boostedSpeed then
					humanoid.WalkSpeed = boostedSpeed
				end
			end)

			print("Boosted speed: " .. boostedSpeed)
			cd = true

		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)

	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)

	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1

	Lobbybutton1.Name = "Highlight entites"
	Lobbybutton1.Text = "Highlight entities"

	-- Highlight appearance
	local HIGHLIGHT_FILL = Color3.fromRGB(255, 0, 4)
	local HIGHLIGHT_OUTLINE = Color3.fromRGB(255, 0, 4)
	local FILL_TRANSPARENCY = 0.8
	local OUTLINE_TRANSPARENCY = 0.5

	local HIGHLIGHT_NAME = "AutoHighlight"
	local BILLBOARD_NAME = "WarningBillboard"

	local highlights = {}
	local billboards = {}

	-- Find part for BillboardGui
	local function getAdorneePart(obj)
		if obj:IsA("BasePart") then
			return obj
		end

		if obj:IsA("Model") then
			local hrp = obj:FindFirstChild("HumanoidRootPart")
			if hrp then return hrp end

			for _, part in ipairs(obj:GetDescendants()) do
				if part:IsA("BasePart") then
					return part
				end
			end
		end

		return nil
	end

	-- Highlight
	local function attachHighlight(obj)
		if highlights[obj] then return end

		local highlight = Instance.new("Highlight")
		highlight.Name = HIGHLIGHT_NAME
		highlight.FillColor = HIGHLIGHT_FILL
		highlight.OutlineColor = HIGHLIGHT_OUTLINE
		highlight.FillTransparency = FILL_TRANSPARENCY
		highlight.OutlineTransparency = OUTLINE_TRANSPARENCY
		highlight.Parent = obj

		highlights[obj] = highlight
	end

	-- Billboard
	local function attachBillboard(obj)
		if billboards[obj] then return end

		local adornee = getAdorneePart(obj)
		if not adornee then return end

		local billboard = Instance.new("BillboardGui")
		billboard.Name = BILLBOARD_NAME
		billboard.Size = UDim2.new(6, 0, 1.5, 0)
		billboard.AlwaysOnTop = true
		billboard.LightInfluence = 0
		billboard.MaxDistance = 200
		billboard.Parent = adornee

		local text = Instance.new("TextLabel")
		text.Size = UDim2.new(1, 0, 1, 0)
		text.BackgroundTransparency = 1
		text.Text = "DANGER"
		text.TextColor3 = Color3.fromRGB(255, 0, 0)
		text.TextScaled = true
		text.Font = Enum.Font.GothamBlack
		text.Parent = billboard

		billboards[obj] = billboard
	end

	-- Cleanup
	local function cleanup(obj)
		if highlights[obj] then
			highlights[obj]:Destroy()
			highlights[obj] = nil
		end
		if billboards[obj] then
			billboards[obj]:Destroy()
			billboards[obj] = nil
		end
	end

	-- Process entity
	local function processEntity(entity)
		if not entity or not entity.Parent then return end
		attachHighlight(entity)
		attachBillboard(entity)
	end

	-- Button click
	Lobbybutton1.MouseButton1Click:Connect(function()
		local entitiesFolder = Workspace:FindFirstChild("Entities")
		if not entitiesFolder then
			warn("Entities folder not found in Workspace")
			return
		end

		Lobbybutton1.Text = "Highlighting entities..."

		-- Existing entities
		for _, entity in ipairs(entitiesFolder:GetChildren()) do
			processEntity(entity)
		end

		-- New entities
		entitiesFolder.ChildAdded:Connect(function(child)
			task.defer(function()
				processEntity(child)
			end)
		end)

		-- Cleanup removed entities
		entitiesFolder.ChildRemoved:Connect(function(child)
			cleanup(child)
		end)
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all Researches"
	Lobbybutton1.Text = "Highlight all Researches"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Highlighted all Researches")
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted all Researches"
			local targetCFrame = character:GetPivot()

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")

			if researchFolder then
				for i, obj in researchFolder:GetChildren() do
					if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
						local hasHighlight = false
						for j, child in obj:GetChildren() do
							if child:IsA("Highlight") then
								hasHighlight = true
								break
							end
						end
						if not hasHighlight then
							local highlight = Instance.new("Highlight")
							highlight.FillColor = Color3.fromRGB(255, 255, 0)
							highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
							highlight.FillTransparency = 0.8
							highlight.OutlineTransparency = 0.5
							highlight.Parent = obj
						end
					end
				end
			end
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to nearest rasearch"
	Lobbybutton1.Text = "Teleport to nearest rasearch"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local player = Players.LocalPlayer
		local character = player.Character or player.CharacterAdded:Wait()
		Lobbybutton1.Text = "Teleported to nearest rasearch"
		task.wait(0.1) -- Ensure character is fully loaded
		Lobbybutton1.Text = "Teleport to nearest rasearch"

		if not character or not character:GetPivot() then
			return
		end

		local researchFolder = Workspace:FindFirstChild("ResearchCollect")
		if not researchFolder then
			return
		end

		local charPos = character:GetPivot().Position
		local nearestObj = nil
		local nearestDist = math.huge

		for i, obj in researchFolder:GetChildren() do
			if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
				local objPos = obj.Position
				local dist = (charPos - objPos).Magnitude
				if dist < nearestDist then
					nearestDist = dist
					nearestObj = obj
				end
			end
		end

		if nearestObj then
			local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
			character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Light up the floor/level"
	Lobbybutton1.Text = "Light up the floor/level"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Floor/level lighted up")
		if game.Lighting.Atmosphere then
			game.Lighting.Atmosphere:Destroy()
		end
		game.Lighting.Ambient = Color3.new(1, 1, 1)
		game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		game.Lighting.Brightness = 5
		game.Lighting.TimeOfDay = "14:00:00"

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Disable/Remove Jumpscare"
	Lobbybutton1.Text = "Disable/Remove Jumpscare"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Jumpscare Disabled")
		game.ReplicatedStorage.StealerJumpscare:Destroy()

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all players"
	Lobbybutton1.Text = "Highlight all players"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Highlighted all players"
		for i, player in Players:GetPlayers() do

			local character = player.Character

			if character then

				-- Remove existing highlight if any

				local oldHighlight = character:FindFirstChildOfClass("Highlight")

				if oldHighlight then

					oldHighlight:Destroy()

				end



				local highlight = Instance.new("Highlight")

				highlight.FillColor = Color3.fromRGB(0, 255, 255)

				highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

				highlight.Parent = character

			end

		end

	end)
end


local function Floor_0()
	print("Floor 0 function called")
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Speed Boost 2x Speed"
	Lobbybutton1.Text = "Speed Boost 2x Speed"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local cd = false
		print("Speed Boost Activated")
		if cd == false then
		local humanoid = character:WaitForChild("Humanoid")

		-- Store original speed
		local originalSpeed = humanoid.WalkSpeed
		local boostedSpeed = originalSpeed * 2

		-- Apply boost once
		humanoid.WalkSpeed = boostedSpeed

		-- Reapply boost every time WalkSpeed changes
		humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
			if humanoid.WalkSpeed ~= boostedSpeed then
				humanoid.WalkSpeed = boostedSpeed
			end
		end)

		print("Boosted speed: " .. boostedSpeed)
					cd = true

		end
	end)

	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Exit"
	Lobbybutton1.Text = "Teleport to Exit"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Teleported player to Exit")
		local clickPart = game.Workspace:WaitForChild("Door2"):WaitForChild("Click")
		local partCFrame = clickPart:GetPivot()
		-- Calculate a position 3 studs in front of the part
		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset
		clickPart:WaitForChild("ProximityPrompt").HoldDuration = 0
		character:PivotTo(targetCFrame)
		
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all Researches"
	Lobbybutton1.Text = "Highlight all Researches"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Highlighted all Researches")
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted all Researches"
		local targetCFrame = character:GetPivot()

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")
			
		if researchFolder then
			for i, obj in researchFolder:GetChildren() do
					if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
						local hasHighlight = false
						for j, child in obj:GetChildren() do
							if child:IsA("Highlight") then
								hasHighlight = true
								break
							end
						end
						if not hasHighlight then
					local highlight = Instance.new("Highlight")
					highlight.FillColor = Color3.fromRGB(255, 255, 0)
					highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
					highlight.FillTransparency = 0.8
					highlight.OutlineTransparency = 0.5
							highlight.Parent = obj
						end
					end
				end
			end
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight entites"
	Lobbybutton1.Text = "Highlight entites"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted entites"
			local obj = Workspace:FindFirstChild("Skin Stealer 1")
			local obj2 = Workspace:FindFirstChild("Skin Stealer 2")
			local obj3 = Workspace:FindFirstChild("Skin Stealer 3a")
			local obj4 = Workspace:FindFirstChild("Skin Stealer 3b")

			local hasHighlight = false
			if obj:IsA("Highlight") and obj2:IsA("Highlight") and obj3:IsA("Highlight") and obj4:IsA("Highlight") then
					hasHighlight = true
					break
			end
			if not hasHighlight then
				local highlight = Instance.new("Highlight")
				highlight.FillColor = Color3.fromRGB(255, 0, 4)
				highlight.OutlineColor = Color3.fromRGB(255, 0, 4)
				highlight.FillTransparency = 0.8
				highlight.OutlineTransparency = 0.5
				highlight.Parent = obj
				local highlight = Instance.new("Highlight")
				highlight.FillColor = Color3.fromRGB(255, 0, 4)
				highlight.OutlineColor = Color3.fromRGB(255, 0, 0)
				highlight.FillTransparency = 0.8
				highlight.OutlineTransparency = 0.5
				highlight.Parent = obj2				local highlight = Instance.new("Highlight")
				highlight.FillColor = Color3.fromRGB(255, 0, 4)
				highlight.OutlineColor = Color3.fromRGB(255, 0, 4)
				highlight.FillTransparency = 0.8
				highlight.OutlineTransparency = 0.5
				highlight.Parent = obj3				local highlight = Instance.new("Highlight")
				highlight.FillColor = Color3.fromRGB(255, 0, 4)
				highlight.OutlineColor = Color3.fromRGB(255, 0, 4)
				highlight.FillTransparency = 0.8
				highlight.OutlineTransparency = 0.5
				highlight.Parent = obj4
			end
		end	
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to nearest rasearch"
	Lobbybutton1.Text = "Teleport to nearest rasearch"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local player = Players.LocalPlayer
		local character = player.Character or player.CharacterAdded:Wait()
		Lobbybutton1.Text = "Teleported to nearest rasearch"
		task.wait(0.1) -- Ensure character is fully loaded
		Lobbybutton1.Text = "Teleport to nearest rasearch"

		if not character or not character:GetPivot() then
			return
		end

		local researchFolder = Workspace:FindFirstChild("ResearchCollect")
		if not researchFolder then
			return
		end

		local charPos = character:GetPivot().Position
		local nearestObj = nil
		local nearestDist = math.huge

		for i, obj in researchFolder:GetChildren() do
			if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
				local objPos = obj.Position
				local dist = (charPos - objPos).Magnitude
				if dist < nearestDist then
					nearestDist = dist
					nearestObj = obj
				end
			end
		end

		if nearestObj then
			local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
			character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Light up the floor/level"
	Lobbybutton1.Text = "Light up the floor/level"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Floor/level lighted up")
		if game.Lighting.Atmosphere then
			game.Lighting.Atmosphere:Destroy()
		end
		game.Lighting.Ambient = Color3.new(1, 1, 1)
		game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		game.Lighting.Brightness = 5
		game.Lighting.TimeOfDay = "14:00:00"
		
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Disable/Remove Jumpscare"
	Lobbybutton1.Text = "Disable/Remove Jumpscare"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Jumpscare Disabled")
		game.ReplicatedStorage.StealerJumpscare:Destroy()

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all players"
	Lobbybutton1.Text = "Highlight all players"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Highlighted all players"
		for i, player in Players:GetPlayers() do

			local character = player.Character

			if character then

				-- Remove existing highlight if any

				local oldHighlight = character:FindFirstChildOfClass("Highlight")

				if oldHighlight then

					oldHighlight:Destroy()

				end



				local highlight = Instance.new("Highlight")

				highlight.FillColor = Color3.fromRGB(0, 255, 255)

				highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

				highlight.Parent = character

			end

		end

	end)
end

local function Floor_1()
	print("Floor 1 function called")
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Speed Boost 2x Speed"
	Lobbybutton1.Text = "Speed Boost 2x Speed"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local cd = false
		print("Speed Boost Activated")
		if cd == false then
			local humanoid = character:WaitForChild("Humanoid")

			-- Store original speed
			local originalSpeed = humanoid.WalkSpeed
			local boostedSpeed = originalSpeed * 2

			-- Apply boost once
			humanoid.WalkSpeed = boostedSpeed

			-- Reapply boost every time WalkSpeed changes
			humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
				if humanoid.WalkSpeed ~= boostedSpeed then
					humanoid.WalkSpeed = boostedSpeed
				end
			end)

			print("Boosted speed: " .. boostedSpeed)
			cd = true

		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Exit"
	Lobbybutton1.Text = "Teleport to Exit"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Teleported player to Exit")
		local clickPart = game.Workspace:WaitForChild("Door2"):WaitForChild("Click")
		local bruh = game.Workspace:WaitForChild("Door2"):WaitForChild("farty")
		local partCFrame = bruh:GetPivot()
		-- Calculate a position 3 studs in front of the part
		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset
		clickPart:WaitForChild("ProximityPrompt").HoldDuration = 0
		character:PivotTo(targetCFrame)
	end)

	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all Researches"
	Lobbybutton1.Text = "Highlight all Researches"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Highlighted all Researches")
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted all Researches"
			local targetCFrame = character:GetPivot()

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")

			if researchFolder then
				for i, obj in researchFolder:GetChildren() do
					if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
						local hasHighlight = false
						for j, child in obj:GetChildren() do
							if child:IsA("Highlight") then
								hasHighlight = true
								break
							end
						end
						if not hasHighlight then
							local highlight = Instance.new("Highlight")
							highlight.FillColor = Color3.fromRGB(255, 255, 0)
							highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
							highlight.FillTransparency = 0.8
							highlight.OutlineTransparency = 0.5
							highlight.Parent = obj
						end
					end
				end
			end
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight entites"
	Lobbybutton1.Text = "Highlight entites"
	-- Objects to track in workspace
	-- Objects to track in workspace
	-- Objects to track in workspace
	local targetNames = {
		"NewSmiler",
		"Frowner",
		"SmilerLightsDown",
		"SmilerLightsDown2",
		"TheDisease",
	}

	local targetSet = {}
	for _, v in ipairs(targetNames) do
		targetSet[v] = true
	end

	-- Highlight appearance
	local HIGHLIGHT_FILL = Color3.fromRGB(255, 0, 4)
	local HIGHLIGHT_OUTLINE = Color3.fromRGB(255, 0, 4)
	local FILL_TRANSPARENCY = 0.8
	local OUTLINE_TRANSPARENCY = 0.5

	local HIGHLIGHT_NAME = "AutoHighlight"
	local BILLBOARD_NAME = "WarningBillboard"

	local highlights = {}
	local billboards = {}

	-- find part to attach billboard to
	local function getAdorneePart(obj)
		if not obj then return nil end

		-- If it's a model with HumanoidRootPart
		if obj:IsA("Model") then
			local hrp = obj:FindFirstChild("HumanoidRootPart")
			if hrp then return hrp end

			-- fallback: first BasePart
			for _, part in ipairs(obj:GetDescendants()) do
				if part:IsA("BasePart") then
					return part
				end
			end
		end

		-- If it's already a BasePart
		if obj:IsA("BasePart") then
			return obj
		end

		return nil
	end

	-- attach highlight
	local function attachHighlight(obj)
		if not obj or not obj.Parent then return end
		if highlights[obj] then return end

		local highlight = Instance.new("Highlight")
		highlight.Name = HIGHLIGHT_NAME
		highlight.FillColor = HIGHLIGHT_FILL
		highlight.OutlineColor = HIGHLIGHT_OUTLINE
		highlight.FillTransparency = FILL_TRANSPARENCY
		highlight.OutlineTransparency = OUTLINE_TRANSPARENCY
		highlight.Parent = obj

		highlights[obj] = highlight
	end

	-- attach billboard gui
	local function attachBillboard(obj)
		if not obj or not obj.Parent then return end
		if billboards[obj] then return end

		local adorneePart = getAdorneePart(obj)
		if not adorneePart then return end  -- ignore if no valid part

		local billboard = Instance.new("BillboardGui")
		billboard.Name = BILLBOARD_NAME
		billboard.Size = UDim2.new(6, 0, 1.5, 0)
		billboard.AlwaysOnTop = true
		billboard.LightInfluence = 0
		billboard.MaxDistance = 200
		billboard.Parent = adorneePart

		local text = Instance.new("TextLabel")
		text.Size = UDim2.new(1, 0, 1, 0)
		text.BackgroundTransparency = 1
		text.Text = "DANGER"
		text.TextColor3 = Color3.fromRGB(255, 0, 0)
		text.TextScaled = true
		text.Font = Enum.Font.GothamBlack
		text.Parent = billboard

		billboards[obj] = billboard
	end

	-- cleanup if object removed
	local function cleanup(obj)
		if highlights[obj] then
			highlights[obj]:Destroy()
			highlights[obj] = nil
		end

		if billboards[obj] then
			billboards[obj]:Destroy()
			billboards[obj] = nil
		end
	end

	-- when a target object appears
	local function processObject(obj)
		if not obj or not obj.Parent then return end
		if not targetSet[obj.Name] then return end

		attachHighlight(obj)
		attachBillboard(obj)
	end

	-- scan existing objects on start
	for _, name in ipairs(targetNames) do
		local obj = Workspace:FindFirstChild(name)
		if obj then
			processObject(obj)
		end
	end

	-- handle new objects entering workspace
	Workspace.ChildAdded:Connect(function(child)
		task.defer(function()
			processObject(child)
		end)
	end)

	-- clean on removal
	Workspace.ChildRemoved:Connect(function(child)
		if targetSet[child.Name] then
			cleanup(child)
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to nearest rasearch"
	Lobbybutton1.Text = "Teleport to nearest rasearch"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local player = Players.LocalPlayer
		local character = player.Character or player.CharacterAdded:Wait()
		Lobbybutton1.Text = "Teleported to nearest rasearch"
		task.wait(0.1) -- Ensure character is fully loaded
		Lobbybutton1.Text = "Teleport to nearest rasearch"

		if not character or not character:GetPivot() then
			return
		end

		local researchFolder = Workspace:FindFirstChild("ResearchCollect")
		if not researchFolder then
			return
		end

		local charPos = character:GetPivot().Position
		local nearestObj = nil
		local nearestDist = math.huge

		for i, obj in researchFolder:GetChildren() do
			if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
				local objPos = obj.Position
				local dist = (charPos - objPos).Magnitude
				if dist < nearestDist then
					nearestDist = dist
					nearestObj = obj
				end
			end
		end

		if nearestObj then
			local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
			character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Light up the floor/level"
	Lobbybutton1.Text = "Light up the floor/level"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Floor/level lighted up")
		if game.Lighting.Atmosphere then
			game.Lighting.Atmosphere:Destroy()
		end
		game.Lighting.Ambient = Color3.new(1, 1, 1)
		game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		game.Lighting.Brightness = 5
		game.Lighting.TimeOfDay = "14:00:00"

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Disable/Remove Jumpscare"
	Lobbybutton1.Text = "Disable/Remove Jumpscare"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Jumpscare Disabled")
		game.ReplicatedStorage.StealerJumpscare:Destroy()

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all players"
	Lobbybutton1.Text = "Highlight all players"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Highlighted all players"
		for i, player in Players:GetPlayers() do

			local character = player.Character

			if character then

				-- Remove existing highlight if any

				local oldHighlight = character:FindFirstChildOfClass("Highlight")

				if oldHighlight then

					oldHighlight:Destroy()

				end



				local highlight = Instance.new("Highlight")

				highlight.FillColor = Color3.fromRGB(0, 255, 255)

				highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

				highlight.Parent = character

			end

		end

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highligh the key"
	Lobbybutton1.Text = "Highligh the key"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local hi = Instance.new("Highlight")
		hi.FillColor = Color3.fromRGB(0, 0, 0)
		hi.Parent = game.Workspace:WaitForChild("Meshes/key")
		Lobbybutton1.Text = "Highlighed the key"
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(111, 111, 111)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highligh the puzzle(s)"
	Lobbybutton1.Text = "Highligh the puzzle(s)"
	Lobbybutton1.MouseButton1Click:Connect(function()
	-- small helpers
	local function findAdorneePart(model)
		if not model then return nil end
		if model:IsA("BasePart") then return model end
		if model:IsA("Model") then
			if model:FindFirstChild("HumanoidRootPart") then return model.HumanoidRootPart end
			if model.PrimaryPart then return model.PrimaryPart end
			for _,d in ipairs(model:GetDescendants()) do
				if d:IsA("BasePart") then return d end
			end
		end
		return nil
	end

	local function createHighlightFor(menuModel)
		if not menuModel or not menuModel.Parent then return end
		-- avoid creating duplicates
		if menuModel:FindFirstChildOfClass("Highlight") then return end

		local adornee = findAdorneePart(menuModel)
		if not adornee then
			-- wait for a part to appear (non-blocking) then retry once
			local conn
			local done = false
			conn = menuModel.DescendantAdded:Connect(function(desc)
				if desc:IsA("BasePart") and not done then
					done = true
					conn:Disconnect()
					createHighlightFor(menuModel)
				end
			end)
			-- timeout cleanup after 5s
			task.spawn(function()
				task.wait(5)
				if conn and conn.Connected then conn:Disconnect() end
			end)
			return
		end

		local h = Instance.new("Highlight")
		h.Name = "MenuAutoHighlight"
		h.Adornee = adornee
		h.FillColor = Color3.fromRGB(0, 255, 0)
		h.OutlineColor = Color3.fromRGB(0, 255, 0)
		h.FillTransparency = 0.8
		h.OutlineTransparency = 0.5
		h.Parent = menuModel
	end

	-- scans workspace for top-level "Menu" children
	local function getMenus()
		local out = {}
		for _,c in ipairs(Workspace:GetChildren()) do
			if c.Name == "Menu" then table.insert(out, c) end
		end
		return out
	end

	-- main logic
	local menus = getMenus()
	if #menus == 0 then
		-- wait for first Menu to appear, then re-run logic
		Lobbybutton1.Text = "Waiting for Menu..."
		local conn
		conn = Workspace.ChildAdded:Connect(function(child)
			if child.Name == "Menu" then
				if conn and conn.Connected then conn:Disconnect() end
				-- small delay to let it initialize
				task.delay(0.1, function() Lobbybutton1.Text = "Found Menu — highlighting..."; 
					-- rerun main logic once
					local newMenus = getMenus()
					if #newMenus == 1 then
						createHighlightFor(newMenus[1])
					else
						for _,m in ipairs(newMenus) do createHighlightFor(m) end
					end
				end)
			end
		end)
		return
	elseif #menus == 1 then
		Lobbybutton1.Text = "Highlighting single Menu"
		createHighlightFor(menus[1])
	else
		Lobbybutton1.Text = "Highlighting all Menus ("..tostring(#menus)..")"
		for _,m in ipairs(menus) do createHighlightFor(m) end
	end
	end)
end

local function Floor_2()
	print("Floor 2 function called")
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Speed Boost 2x Speed"
	Lobbybutton1.Text = "Speed Boost 2x Speed"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local cd = false
		print("Speed Boost Activated")
		if cd == false then
			local humanoid = character:WaitForChild("Humanoid")

			-- Store original speed
			local originalSpeed = humanoid.WalkSpeed
			local boostedSpeed = originalSpeed * 2

			-- Apply boost once
			humanoid.WalkSpeed = boostedSpeed

			-- Reapply boost every time WalkSpeed changes
			humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
				if humanoid.WalkSpeed ~= boostedSpeed then
					humanoid.WalkSpeed = boostedSpeed
				end
			end)

			print("Boosted speed: " .. boostedSpeed)
			cd = true

		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Exit"
	Lobbybutton1.Text = "Teleport to Exit"
	Lobbybutton1.MouseButton1Click:Connect(function()
		-- ensure character is available
		local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
		if not hrp then
			warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
			return
		end

		-- find closest Door2 model that has Click -> ProximityPrompt
		local closestModel = nil
		local closestDistSq = math.huge

		for _, inst in ipairs(workspace:GetDescendants()) do
			if inst:IsA("Model") and inst.Name == "Door2" then
				local clickObj = inst:FindFirstChild("Click", true) -- true searches descendants (in case Click is nested)
				if clickObj and clickObj:IsA("BasePart") or clickObj and clickObj:IsA("Folder") or clickObj then
					-- try find a ProximityPrompt either directly under Click or inside its descendants
					local prompt = clickObj:FindFirstChildOfClass("ProximityPrompt") or clickObj:FindFirstChild("ProximityPrompt", true)
					if prompt then
						-- measure distance from player to model (use model primary part or farty part if available)
						local refPart = inst:FindFirstChild("farty") or inst.PrimaryPart
						if refPart and refPart:IsA("BasePart") then
							local distSq = (refPart.Position - hrp.Position).Magnitude ^ 2
							if distSq < closestDistSq then
								closestDistSq = distSq
								closestModel = inst
							end
						end
					end
				end
			end
		end

		if not closestModel then
			warn("[AdminGUI] No Door2 with a Click->ProximityPrompt found in workspace.")
			return
		end

		-- get the parts we need from the chosen model
		local clickPart = closestModel:FindFirstChild("Click", true)
		local fartyPart = closestModel:FindFirstChild("farty") or closestModel.PrimaryPart

		if not fartyPart or not fartyPart:IsA("BasePart") then
			warn("[AdminGUI] Found Door2 with a prompt but no valid 'farty' part to teleport to.")
			return
		end

		-- set prompt hold duration safely (pcall to avoid runtime errors)
		if clickPart then
			local prompt = clickPart:FindFirstChildOfClass("ProximityPrompt") or clickPart:FindFirstChild("ProximityPrompt", true)
			if prompt then
				pcall(function() prompt.HoldDuration = 0 end)
			end
		end

		-- compute target CFrame 3 studs in front of the farty part
		local partCFrame
		if fartyPart.GetPivot then
			partCFrame = fartyPart:GetPivot()
		else
			partCFrame = fartyPart.CFrame
		end

		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset

		-- teleport the player's character (PivotTo preferred for physics correctness)
		if character and character.PrimaryPart then
			-- if primary part exists, use PivotTo
			pcall(function()
				character:PivotTo(targetCFrame)
			end)
		else
			-- fallback: try moving HumanoidRootPart
			if hrp and hrp:IsA("BasePart") then
				hrp.CFrame = targetCFrame
			end
		end

		print("[AdminGUI] Teleported player to Door2 (model with Click->ProximityPrompt).")
	end)

	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all Researches"
	Lobbybutton1.Text = "Highlight all Researches"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Highlighted all Researches")
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted all Researches"
			local targetCFrame = character:GetPivot()

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")

			if researchFolder then
				for i, obj in researchFolder:GetChildren() do
					if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
						local hasHighlight = false
						for j, child in obj:GetChildren() do
							if child:IsA("Highlight") then
								hasHighlight = true
								break
							end
						end
						if not hasHighlight then
							local highlight = Instance.new("Highlight")
							highlight.FillColor = Color3.fromRGB(255, 255, 0)
							highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
							highlight.FillTransparency = 0.8
							highlight.OutlineTransparency = 0.5
							highlight.Parent = obj
						end
					end
				end
			end
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to nearest rasearch"
	Lobbybutton1.Text = "Teleport to nearest rasearch"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local player = Players.LocalPlayer
		local character = player.Character or player.CharacterAdded:Wait()
		Lobbybutton1.Text = "Teleported to nearest rasearch"
		task.wait(0.1) -- Ensure character is fully loaded
		Lobbybutton1.Text = "Teleport to nearest rasearch"

		if not character or not character:GetPivot() then
			return
		end

		local researchFolder = Workspace:FindFirstChild("ResearchCollect")
		if not researchFolder then
			return
		end

		local charPos = character:GetPivot().Position
		local nearestObj = nil
		local nearestDist = math.huge

		for i, obj in researchFolder:GetChildren() do
			if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
				local objPos = obj.Position
				local dist = (charPos - objPos).Magnitude
				if dist < nearestDist then
					nearestDist = dist
					nearestObj = obj
				end
			end
		end

		if nearestObj then
			local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
			character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Light up the floor/level"
	Lobbybutton1.Text = "Light up the floor/level"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Floor/level lighted up")
		if game.Lighting.Atmosphere then
			game.Lighting.Atmosphere:Destroy()
		end
		game.Lighting.Ambient = Color3.new(1, 1, 1)
		game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		game.Lighting.Brightness = 5
		game.Lighting.TimeOfDay = "14:00:00"

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight entites"
	Lobbybutton1.Text = "Highlight entites"
	-- Objects to track in workspace
	-- Objects to track in workspace
	-- Objects to track in workspace
	local targetNames = {
		"thewertch",
		"Wretch",
	}

	local targetSet = {}
	for _, v in ipairs(targetNames) do
		targetSet[v] = true
	end

	-- Highlight appearance
	local HIGHLIGHT_FILL = Color3.fromRGB(255, 0, 4)
	local HIGHLIGHT_OUTLINE = Color3.fromRGB(255, 0, 4)
	local FILL_TRANSPARENCY = 0.8
	local OUTLINE_TRANSPARENCY = 0.5

	local HIGHLIGHT_NAME = "AutoHighlight"
	local BILLBOARD_NAME = "WarningBillboard"

	local highlights = {}
	local billboards = {}

	-- find part to attach billboard to
	local function getAdorneePart(obj)
		if not obj then return nil end

		-- If it's a model with HumanoidRootPart
		if obj:IsA("Model") then
			local hrp = obj:FindFirstChild("HumanoidRootPart")
			if hrp then return hrp end

			-- fallback: first BasePart
			for _, part in ipairs(obj:GetDescendants()) do
				if part:IsA("BasePart") then
					return part
				end
			end
		end

		-- If it's already a BasePart
		if obj:IsA("BasePart") then
			return obj
		end

		return nil
	end

	-- attach highlight
	local function attachHighlight(obj)
		if not obj or not obj.Parent then return end
		if highlights[obj] then return end

		local highlight = Instance.new("Highlight")
		highlight.Name = HIGHLIGHT_NAME
		highlight.FillColor = HIGHLIGHT_FILL
		highlight.OutlineColor = HIGHLIGHT_OUTLINE
		highlight.FillTransparency = FILL_TRANSPARENCY
		highlight.OutlineTransparency = OUTLINE_TRANSPARENCY
		highlight.Parent = obj

		highlights[obj] = highlight
	end

	-- attach billboard gui
	local function attachBillboard(obj)
		if not obj or not obj.Parent then return end
		if billboards[obj] then return end

		local adorneePart = getAdorneePart(obj)
		if not adorneePart then return end  -- ignore if no valid part

		local billboard = Instance.new("BillboardGui")
		billboard.Name = BILLBOARD_NAME
		billboard.Size = UDim2.new(6, 0, 1.5, 0)
		billboard.AlwaysOnTop = true
		billboard.LightInfluence = 0
		billboard.MaxDistance = 200
		billboard.Parent = adorneePart

		local text = Instance.new("TextLabel")
		text.Size = UDim2.new(1, 0, 1, 0)
		text.BackgroundTransparency = 1
		text.Text = "DANGER"
		text.TextColor3 = Color3.fromRGB(255, 0, 0)
		text.TextScaled = true
		text.Font = Enum.Font.GothamBlack
		text.Parent = billboard

		billboards[obj] = billboard
	end

	-- cleanup if object removed
	local function cleanup(obj)
		if highlights[obj] then
			highlights[obj]:Destroy()
			highlights[obj] = nil
		end

		if billboards[obj] then
			billboards[obj]:Destroy()
			billboards[obj] = nil
		end
	end

	-- when a target object appears
	local function processObject(obj)
		if not obj or not obj.Parent then return end
		if not targetSet[obj.Name] then return end

		attachHighlight(obj)
		attachBillboard(obj)
	end

	-- scan existing objects on start
	for _, name in ipairs(targetNames) do
		local obj = Workspace:FindFirstChild(name)
		if obj then
			processObject(obj)
		end
	end

	-- handle new objects entering workspace
	Workspace.ChildAdded:Connect(function(child)
		task.defer(function()
			processObject(child)
		end)
	end)

	-- clean on removal
	Workspace.ChildRemoved:Connect(function(child)
		if targetSet[child.Name] then
			cleanup(child)
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Disable/Remove Jumpscare"
	Lobbybutton1.Text = "Disable/Remove Jumpscare"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Jumpscare Disabled")
		game.ReplicatedStorage.StealerJumpscare:Destroy()

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all players"
	Lobbybutton1.Text = "Highlight all players"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Highlighted all players"
		for i, player in Players:GetPlayers() do

			local character = player.Character

			if character then

				-- Remove existing highlight if any

				local oldHighlight = character:FindFirstChildOfClass("Highlight")

				if oldHighlight then

					oldHighlight:Destroy()

				end



				local highlight = Instance.new("Highlight")

				highlight.FillColor = Color3.fromRGB(0, 255, 255)

				highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

				highlight.Parent = character

			end

		end

	end)
end

local function Floor_3()
	print("Floor 3 function called")
	destroyFloorButtons()
		destroyFloorButtons()
		local Lobbybutton1 = Instance.new("TextButton")
		Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
		Lobbybutton1.ZIndex = 2
		Lobbybutton1.Parent = scroll
		Lobbybutton1.TextScaled = true
		Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
		Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 98)
		local corner = Instance.new("UICorner", Lobbybutton1)
		corner.CornerRadius = UDim.new(0, 8)
		local stroke = Instance.new("UIStroke", Lobbybutton1)
		stroke.Color = Color3.fromRGB(50, 50, 55)
		stroke.Thickness = 1
		Lobbybutton1.Name = "Speed Boost 2x Speed"
		Lobbybutton1.Text = "Speed Boost 2x Speed"
		Lobbybutton1.MouseButton1Click:Connect(function()
			local cd = false
			print("Speed Boost Activated")
			if cd == false then
				local humanoid = character:WaitForChild("Humanoid")

				-- Store original speed
				local originalSpeed = humanoid.WalkSpeed
				local boostedSpeed = originalSpeed * 2

				-- Apply boost once
				humanoid.WalkSpeed = boostedSpeed

				-- Reapply boost every time WalkSpeed changes
				humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
					if humanoid.WalkSpeed ~= boostedSpeed then
						humanoid.WalkSpeed = boostedSpeed
					end
				end)

				print("Boosted speed: " .. boostedSpeed)
				cd = true

			end
		end)
		local Lobbybutton1 = Instance.new("TextButton")
		Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
		Lobbybutton1.ZIndex = 2
		Lobbybutton1.Parent = scroll
		Lobbybutton1.TextScaled = true
		Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
		Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 98)
		local corner = Instance.new("UICorner", Lobbybutton1)
		corner.CornerRadius = UDim.new(0, 8)
		local stroke = Instance.new("UIStroke", Lobbybutton1)
		stroke.Color = Color3.fromRGB(50, 50, 55)
		stroke.Thickness = 1
		Lobbybutton1.Name = "Teleport to Exit"
		Lobbybutton1.Text = "Teleport to Exit"
		Lobbybutton1.MouseButton1Click:Connect(function()
			-- ensure character is available
			local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
			if not hrp then
				warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
				return
			end

			-- find closest Door2 model that has Click -> ProximityPrompt
			local closestModel = nil
			local closestDistSq = math.huge

			for _, inst in ipairs(workspace:GetDescendants()) do
				if inst:IsA("Model") and inst.Name == "Door2" then
					local clickObj = inst:FindFirstChild("Click", true) -- true searches descendants (in case Click is nested)
					if clickObj and clickObj:IsA("BasePart") or clickObj and clickObj:IsA("Folder") or clickObj then
						-- try find a ProximityPrompt either directly under Click or inside its descendants
						local prompt = clickObj:FindFirstChildOfClass("ProximityPrompt") or clickObj:FindFirstChild("ProximityPrompt", true)
						if prompt then
							-- measure distance from player to model (use model primary part or farty part if available)
							local refPart = inst:FindFirstChild("farty") or inst.PrimaryPart
							if refPart and refPart:IsA("BasePart") then
								local distSq = (refPart.Position - hrp.Position).Magnitude ^ 2
								if distSq < closestDistSq then
									prompt.Enabled = true
									prompt.HoldDuration = 0 -- ensure hold duration is cleared
									closestDistSq = distSq
									closestModel = inst
								end
							end
						end
					end
				end
			end

			if not closestModel then
				warn("[AdminGUI] No Door2 with a Click->ProximityPrompt found in workspace.")
				return
			end

			-- get the parts we need from the chosen model
			local clickPart = closestModel:FindFirstChild("Click", true)
			local fartyPart = closestModel:FindFirstChild("farty") or closestModel.PrimaryPart

			if not fartyPart or not fartyPart:IsA("BasePart") then
				warn("[AdminGUI] Found Door2 with a prompt but no valid 'farty' part to teleport to.")
				return
			end

			-- set prompt hold duration safely (pcall to avoid runtime errors)
			if clickPart then
				local prompt = clickPart:FindFirstChildOfClass("ProximityPrompt") or clickPart:FindFirstChild("ProximityPrompt", true)
				if prompt then
					pcall(function() prompt.HoldDuration = 0 end)
				end
			end

			-- compute target CFrame 3 studs in front of the farty part
			local partCFrame
			if fartyPart.GetPivot then
				partCFrame = fartyPart:GetPivot()
			else
				partCFrame = fartyPart.CFrame
			end

			local offset = partCFrame.LookVector * 3
			local targetCFrame = partCFrame + offset

			-- teleport the player's character (PivotTo preferred for physics correctness)
			if character and character.PrimaryPart then
				-- if primary part exists, use PivotTo
				pcall(function()
					character:PivotTo(targetCFrame)
				end)
			else
				-- fallback: try moving HumanoidRootPart
				if hrp and hrp:IsA("BasePart") then
					hrp.CFrame = targetCFrame
				end
			end

			print("[AdminGUI] Teleported player to Door2 (model with Click->ProximityPrompt).")
		end)

		local Lobbybutton1 = Instance.new("TextButton")
		Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
		Lobbybutton1.ZIndex = 2
		Lobbybutton1.Parent = scroll
		Lobbybutton1.TextScaled = true
		Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
		Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 98)
		local corner = Instance.new("UICorner", Lobbybutton1)
		corner.CornerRadius = UDim.new(0, 8)
		local stroke = Instance.new("UIStroke", Lobbybutton1)
		stroke.Color = Color3.fromRGB(50, 50, 55)
		stroke.Thickness = 1
		Lobbybutton1.Name = "Highlight all Researches"
		Lobbybutton1.Text = "Highlight all Researches"
		Lobbybutton1.MouseButton1Click:Connect(function()
			print("Highlighted all Researches")
			Lobbybutton1.Text = "Loading..."
			while wait(1) do
				Lobbybutton1.Text = "Highlighted all Researches"
				local targetCFrame = character:GetPivot()

				local researchFolder = Workspace:FindFirstChild("ResearchCollect")

				if researchFolder then
					for i, obj in researchFolder:GetChildren() do
						if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
							local hasHighlight = false
							for j, child in obj:GetChildren() do
								if child:IsA("Highlight") then
									hasHighlight = true
									break
								end
							end
							if not hasHighlight then
								local highlight = Instance.new("Highlight")
								highlight.FillColor = Color3.fromRGB(255, 255, 0)
								highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
								highlight.FillTransparency = 0.8
								highlight.OutlineTransparency = 0.5
								highlight.Parent = obj
							end
						end
					end
				end
			end
		end)
		local Lobbybutton1 = Instance.new("TextButton")
		Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
		Lobbybutton1.ZIndex = 2
		Lobbybutton1.Parent = scroll
		Lobbybutton1.TextScaled = true
		Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
		Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 98)
		local corner = Instance.new("UICorner", Lobbybutton1)
		corner.CornerRadius = UDim.new(0, 8)
		local stroke = Instance.new("UIStroke", Lobbybutton1)
		stroke.Color = Color3.fromRGB(50, 50, 55)
		stroke.Thickness = 1
		Lobbybutton1.Name = "Teleport to nearest rasearch"
		Lobbybutton1.Text = "Teleport to nearest rasearch"
		Lobbybutton1.MouseButton1Click:Connect(function()
			local player = Players.LocalPlayer
			local character = player.Character or player.CharacterAdded:Wait()
			Lobbybutton1.Text = "Teleported to nearest rasearch"
			task.wait(0.1) -- Ensure character is fully loaded
			Lobbybutton1.Text = "Teleport to nearest rasearch"

			if not character or not character:GetPivot() then
				return
			end

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")
			if not researchFolder then
				return
			end

			local charPos = character:GetPivot().Position
			local nearestObj = nil
			local nearestDist = math.huge

			for i, obj in researchFolder:GetChildren() do
				if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
					local objPos = obj.Position
					local dist = (charPos - objPos).Magnitude
					if dist < nearestDist then
						nearestDist = dist
						nearestObj = obj
					end
				end
			end

			if nearestObj then
				local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
				character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
			end
		end)
		local Lobbybutton1 = Instance.new("TextButton")
		Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
		Lobbybutton1.ZIndex = 2
		Lobbybutton1.Parent = scroll
		Lobbybutton1.TextScaled = true
		Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
		Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 98)
		local corner = Instance.new("UICorner", Lobbybutton1)
		corner.CornerRadius = UDim.new(0, 8)
		local stroke = Instance.new("UIStroke", Lobbybutton1)
		stroke.Color = Color3.fromRGB(50, 50, 55)
		stroke.Thickness = 1
		Lobbybutton1.Name = "Light up the floor/level"
		Lobbybutton1.Text = "Light up the floor/level"
		Lobbybutton1.MouseButton1Click:Connect(function()
			print("Floor/level lighted up")
			if game.Lighting.Atmosphere then
				game.Lighting.Atmosphere:Destroy()
			end
			game.Lighting.Ambient = Color3.new(1, 1, 1)
			game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
			game.Lighting.Brightness = 5
			game.Lighting.TimeOfDay = "14:00:00"

		end)
		local Lobbybutton1 = Instance.new("TextButton")
		Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
		Lobbybutton1.ZIndex = 2
		Lobbybutton1.Parent = scroll
		Lobbybutton1.TextScaled = true
		Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
		Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 98)
		local corner = Instance.new("UICorner", Lobbybutton1)
		corner.CornerRadius = UDim.new(0, 8)
		local stroke = Instance.new("UIStroke", Lobbybutton1)
		stroke.Color = Color3.fromRGB(50, 50, 55)
		stroke.Thickness = 1
		Lobbybutton1.Name = "Highlight entites"
		Lobbybutton1.Text = "Highlight entites"
		-- Objects to track in workspace
		-- Objects to track in workspace
		-- Objects to track in workspace
		local targetNames = {
			"Skin Stealer 2",
			"Aranea1",
		}

		local targetSet = {}
		for _, v in ipairs(targetNames) do
			targetSet[v] = true
		end

		-- Highlight appearance
		local HIGHLIGHT_FILL = Color3.fromRGB(255, 0, 4)
		local HIGHLIGHT_OUTLINE = Color3.fromRGB(255, 0, 4)
		local FILL_TRANSPARENCY = 0.8
		local OUTLINE_TRANSPARENCY = 0.5

		local HIGHLIGHT_NAME = "AutoHighlight"
		local BILLBOARD_NAME = "WarningBillboard"

		local highlights = {}
		local billboards = {}

		-- find part to attach billboard to
		local function getAdorneePart(obj)
			if not obj then return nil end

			-- If it's a model with HumanoidRootPart
			if obj:IsA("Model") then
				local hrp = obj:FindFirstChild("HumanoidRootPart")
				if hrp then return hrp end

				-- fallback: first BasePart
				for _, part in ipairs(obj:GetDescendants()) do
					if part:IsA("BasePart") then
						return part
					end
				end
			end

			-- If it's already a BasePart
			if obj:IsA("BasePart") then
				return obj
			end

			return nil
		end

		-- attach highlight
		local function attachHighlight(obj)
			if not obj or not obj.Parent then return end
			if highlights[obj] then return end

			local highlight = Instance.new("Highlight")
			highlight.Name = HIGHLIGHT_NAME
			highlight.FillColor = HIGHLIGHT_FILL
			highlight.OutlineColor = HIGHLIGHT_OUTLINE
			highlight.FillTransparency = FILL_TRANSPARENCY
			highlight.OutlineTransparency = OUTLINE_TRANSPARENCY
			highlight.Parent = obj

			highlights[obj] = highlight
		end

		-- attach billboard gui
		local function attachBillboard(obj)
			if not obj or not obj.Parent then return end
			if billboards[obj] then return end

			local adorneePart = getAdorneePart(obj)
			if not adorneePart then return end  -- ignore if no valid part

			local billboard = Instance.new("BillboardGui")
			billboard.Name = BILLBOARD_NAME
			billboard.Size = UDim2.new(6, 0, 1.5, 0)
			billboard.AlwaysOnTop = true
			billboard.LightInfluence = 0
			billboard.MaxDistance = 200
			billboard.Parent = adorneePart

			local text = Instance.new("TextLabel")
			text.Size = UDim2.new(1, 0, 1, 0)
			text.BackgroundTransparency = 1
			text.Text = "DANGER"
			text.TextColor3 = Color3.fromRGB(255, 0, 0)
			text.TextScaled = true
			text.Font = Enum.Font.GothamBlack
			text.Parent = billboard

			billboards[obj] = billboard
		end

		-- cleanup if object removed
		local function cleanup(obj)
			if highlights[obj] then
				highlights[obj]:Destroy()
				highlights[obj] = nil
			end

			if billboards[obj] then
				billboards[obj]:Destroy()
				billboards[obj] = nil
			end
		end

		-- when a target object appears
		local function processObject(obj)
			if not obj or not obj.Parent then return end
			if not targetSet[obj.Name] then return end

			attachHighlight(obj)
			attachBillboard(obj)
		end

		-- scan existing objects on start
		for _, name in ipairs(targetNames) do
			local obj = Workspace:FindFirstChild(name)
			if obj then
				processObject(obj)
			end
		end

		-- handle new objects entering workspace
		Workspace.ChildAdded:Connect(function(child)
			task.defer(function()
				processObject(child)
			end)
		end)

		-- clean on removal
		Workspace.ChildRemoved:Connect(function(child)
			if targetSet[child.Name] then
				cleanup(child)
			end
		end)
		local Lobbybutton1 = Instance.new("TextButton")
		Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
		Lobbybutton1.ZIndex = 2
		Lobbybutton1.Parent = scroll
		Lobbybutton1.TextScaled = true
		Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
		Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 98)
		local corner = Instance.new("UICorner", Lobbybutton1)
		corner.CornerRadius = UDim.new(0, 8)
		local stroke = Instance.new("UIStroke", Lobbybutton1)
		stroke.Color = Color3.fromRGB(50, 50, 55)
		stroke.Thickness = 1
		Lobbybutton1.Name = "Disable/Remove Jumpscare"
		Lobbybutton1.Text = "Disable/Remove Jumpscare"
		Lobbybutton1.MouseButton1Click:Connect(function()
			print("Jumpscare Disabled")
			game.ReplicatedStorage.StealerJumpscare:Destroy()

		end)
		local Lobbybutton1 = Instance.new("TextButton")
		Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
		Lobbybutton1.ZIndex = 2
		Lobbybutton1.Parent = scroll
		Lobbybutton1.TextScaled = true
		Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
		Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 98)
		local corner = Instance.new("UICorner", Lobbybutton1)
		corner.CornerRadius = UDim.new(0, 8)
		local stroke = Instance.new("UIStroke", Lobbybutton1)
		stroke.Color = Color3.fromRGB(50, 50, 55)
		stroke.Thickness = 1
		Lobbybutton1.Name = "Highlight all players"
		Lobbybutton1.Text = "Highlight all players"
		Lobbybutton1.MouseButton1Click:Connect(function()
			Lobbybutton1.Text = "Highlighted all players"
			for i, player in Players:GetPlayers() do

				local character = player.Character

				if character then

					-- Remove existing highlight if any

					local oldHighlight = character:FindFirstChildOfClass("Highlight")

					if oldHighlight then

						oldHighlight:Destroy()

					end



					local highlight = Instance.new("Highlight")

					highlight.FillColor = Color3.fromRGB(0, 255, 255)

					highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

					highlight.Parent = character

				end

			end

		end)
end

local function Floor_4()
	print("Floor 4 function called")
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Speed Boost 2x Speed"
	Lobbybutton1.Text = "Speed Boost 2x Speed"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local cd = false
		print("Speed Boost Activated")
		if cd == false then
			local humanoid = character:WaitForChild("Humanoid")

			-- Store original speed
			local originalSpeed = humanoid.WalkSpeed
			local boostedSpeed = originalSpeed * 2

			-- Apply boost once
			humanoid.WalkSpeed = boostedSpeed

			-- Reapply boost every time WalkSpeed changes
			humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
				if humanoid.WalkSpeed ~= boostedSpeed then
					humanoid.WalkSpeed = boostedSpeed
				end
			end)

			print("Boosted speed: " .. boostedSpeed)
			cd = true

		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Exit"
	Lobbybutton1.Text = "Teleport to Exit"
	Lobbybutton1.MouseButton1Click:Connect(function()
		-- ensure character is available
		local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
		if not hrp then
			warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
			return
		end

		-- find closest Door2 model that has Click -> ProximityPrompt
		local closestModel = nil
		local closestDistSq = math.huge

		for _, inst in ipairs(workspace:GetDescendants()) do
			if inst:IsA("Model") and inst.Name == "Door2" then
				local clickObj = inst:FindFirstChild("Click", true) -- true searches descendants (in case Click is nested)
				if clickObj and clickObj:IsA("BasePart") or clickObj and clickObj:IsA("Folder") or clickObj then
					-- try find a ProximityPrompt either directly under Click or inside its descendants
					local prompt = clickObj:FindFirstChildOfClass("ProximityPrompt") or clickObj:FindFirstChild("ProximityPrompt", true)
					if prompt then
						-- measure distance from player to model (use model primary part or farty part if available)
						local refPart = inst:FindFirstChild("farty") or inst.PrimaryPart
						if refPart and refPart:IsA("BasePart") then
							local distSq = (refPart.Position - hrp.Position).Magnitude ^ 2
							if distSq < closestDistSq then
								prompt.Enabled = true
								prompt.HoldDuration = 0 -- ensure hold duration is cleared
								closestDistSq = distSq
								closestModel = inst
							end
						end
					end
				end
			end
		end

		if not closestModel then
			warn("[AdminGUI] No Door2 with a Click->ProximityPrompt found in workspace.")
			return
		end

		-- get the parts we need from the chosen model
		local clickPart = closestModel:FindFirstChild("Click", true)
		local fartyPart = closestModel:FindFirstChild("farty") or closestModel.PrimaryPart

		if not fartyPart or not fartyPart:IsA("BasePart") then
			warn("[AdminGUI] Found Door2 with a prompt but no valid 'farty' part to teleport to.")
			return
		end

		-- set prompt hold duration safely (pcall to avoid runtime errors)
		if clickPart then
			local prompt = clickPart:FindFirstChildOfClass("ProximityPrompt") or clickPart:FindFirstChild("ProximityPrompt", true)
			if prompt then
				pcall(function() prompt.HoldDuration = 0 end)
			end
		end

		-- compute target CFrame 3 studs in front of the farty part
		local partCFrame
		if fartyPart.GetPivot then
			partCFrame = fartyPart:GetPivot()
		else
			partCFrame = fartyPart.CFrame
		end

		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset

		-- teleport the player's character (PivotTo preferred for physics correctness)
		if character and character.PrimaryPart then
			-- if primary part exists, use PivotTo
			pcall(function()
				character:PivotTo(targetCFrame)
			end)
		else
			-- fallback: try moving HumanoidRootPart
			if hrp and hrp:IsA("BasePart") then
				hrp.CFrame = targetCFrame
			end
		end

		print("[AdminGUI] Teleported player to Door2 (model with Click->ProximityPrompt).")
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Boiled's key"
	Lobbybutton1.Text = "Teleport to Boiled's key"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
		if not hrp then
			warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
			return
		end
		local key = workspace:FindFirstChild("downsizedkey")
		if not key or not key:IsA("BasePart") then
			warn("[AdminGUI] 'BoiledKey' part not found in workspace.")
			return
		end
		local targetCFrame = key.CFrame
		if hrp and hrp:IsA("BasePart") then
			hrp.CFrame = targetCFrame
		end
		print("[AdminGUI] Teleported player to Boiled's key.")
		
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Boiled's Door"
	Lobbybutton1.Text = "Teleport to Boiled's Door"
	Lobbybutton1.MouseButton1Click:Connect(function()
		-- ensure character is available
		local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
		if not hrp then
			warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
			return
		end

		-- find closest Door2 model that has Click -> ProximityPrompt
		local closestModel = nil
		local closestDistSq = math.huge

		for _, inst in ipairs(workspace:GetDescendants()) do
			if inst:IsA("Model") and inst.Name == "SecretDoor" then
				local clickObj = inst:FindFirstChild("Click", true) -- true searches descendants (in case Click is nested)
				if clickObj and clickObj:IsA("BasePart") or clickObj and clickObj:IsA("Folder") or clickObj then
					-- try find a ProximityPrompt either directly under Click or inside its descendants
					local prompt = clickObj:FindFirstChildOfClass("ProximityPrompt") or clickObj:FindFirstChild("ProximityPrompt", true)
					if prompt then
						-- measure distance from player to model (use model primary part or farty part if available)
						local refPart = inst:FindFirstChild("farty") or inst.PrimaryPart
						if refPart and refPart:IsA("BasePart") then
							local distSq = (refPart.Position - hrp.Position).Magnitude ^ 2
							if distSq < closestDistSq then
								prompt.Enabled = true
								prompt.HoldDuration = 0 -- ensure hold duration is cleared
								closestDistSq = distSq
								closestModel = inst
							end
						end
					end
				end
			end
		end

		if not closestModel then
			warn("[AdminGUI] No Door2 with a Click->ProximityPrompt found in workspace.")
			return
		end

		-- get the parts we need from the chosen model
		local clickPart = closestModel:FindFirstChild("Click", true)
		local fartyPart = closestModel:FindFirstChild("farty") or closestModel.PrimaryPart

		if not fartyPart or not fartyPart:IsA("BasePart") then
			warn("[AdminGUI] Found Door2 with a prompt but no valid 'farty' part to teleport to.")
			return
		end

		-- set prompt hold duration safely (pcall to avoid runtime errors)
		if clickPart then
			local prompt = clickPart:FindFirstChildOfClass("ProximityPrompt") or clickPart:FindFirstChild("ProximityPrompt", true)
			if prompt then
				pcall(function() prompt.HoldDuration = 0 end)
			end
		end

		-- compute target CFrame 3 studs in front of the farty part
		local partCFrame
		if fartyPart.GetPivot then
			partCFrame = fartyPart:GetPivot()
		else
			partCFrame = fartyPart.CFrame
		end

		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset

		-- teleport the player's character (PivotTo preferred for physics correctness)
		if character and character.PrimaryPart then
			-- if primary part exists, use PivotTo
			pcall(function()
				character:PivotTo(targetCFrame)
			end)
		else
			-- fallback: try moving HumanoidRootPart
			if hrp and hrp:IsA("BasePart") then
				hrp.CFrame = targetCFrame
			end
		end

		print("[AdminGUI] Teleported player to Door2 (model with Click->ProximityPrompt).")
	end)


	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all Researches"
	Lobbybutton1.Text = "Highlight all Researches"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Highlighted all Researches")
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted all Researches"
			local targetCFrame = character:GetPivot()

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")

			if researchFolder then
				for i, obj in researchFolder:GetChildren() do
					if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
						local hasHighlight = false
						for j, child in obj:GetChildren() do
							if child:IsA("Highlight") then
								hasHighlight = true
								break
							end
						end
						if not hasHighlight then
							local highlight = Instance.new("Highlight")
							highlight.FillColor = Color3.fromRGB(255, 255, 0)
							highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
							highlight.FillTransparency = 0.8
							highlight.OutlineTransparency = 0.5
							highlight.Parent = obj
						end
					end
				end
			end
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to nearest rasearch"
	Lobbybutton1.Text = "Teleport to nearest rasearch"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local player = Players.LocalPlayer
		local character = player.Character or player.CharacterAdded:Wait()
		Lobbybutton1.Text = "Teleported to nearest rasearch"
		task.wait(0.1) -- Ensure character is fully loaded
		Lobbybutton1.Text = "Teleport to nearest rasearch"

		if not character or not character:GetPivot() then
			return
		end

		local researchFolder = Workspace:FindFirstChild("ResearchCollect")
		if not researchFolder then
			return
		end

		local charPos = character:GetPivot().Position
		local nearestObj = nil
		local nearestDist = math.huge

		for i, obj in researchFolder:GetChildren() do
			if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
				local objPos = obj.Position
				local dist = (charPos - objPos).Magnitude
				if dist < nearestDist then
					nearestDist = dist
					nearestObj = obj
				end
			end
		end

		if nearestObj then
			local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
			character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Light up the floor/level"
	Lobbybutton1.Text = "Light up the floor/level"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Floor/level lighted up")
		if game.Lighting.Atmosphere then
			game.Lighting.Atmosphere:Destroy()
		end
		game.Lighting.Ambient = Color3.new(1, 1, 1)
		game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		game.Lighting.Brightness = 5
		game.Lighting.TimeOfDay = "14:00:00"

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight entites"
	Lobbybutton1.Text = "Highlight entites"
	-- Objects to track in workspace
	-- Objects to track in workspace
	-- Objects to track in workspace
	local targetNames = {
		"TheMimic",
		"TheMimic2",
		"TheMimic3",
	}

	local targetSet = {}
	for _, v in ipairs(targetNames) do
		targetSet[v] = true
	end

	-- Highlight appearance
	local HIGHLIGHT_FILL = Color3.fromRGB(255, 0, 4)
	local HIGHLIGHT_OUTLINE = Color3.fromRGB(255, 0, 4)
	local FILL_TRANSPARENCY = 0.8
	local OUTLINE_TRANSPARENCY = 0.5

	local HIGHLIGHT_NAME = "AutoHighlight"
	local BILLBOARD_NAME = "WarningBillboard"

	local highlights = {}
	local billboards = {}

	-- find part to attach billboard to
	local function getAdorneePart(obj)
		if not obj then return nil end

		-- If it's a model with HumanoidRootPart
		if obj:IsA("Model") then
			local hrp = obj:FindFirstChild("HumanoidRootPart")
			if hrp then return hrp end

			-- fallback: first BasePart
			for _, part in ipairs(obj:GetDescendants()) do
				if part:IsA("BasePart") then
					return part
				end
			end
		end

		-- If it's already a BasePart
		if obj:IsA("BasePart") then
			return obj
		end

		return nil
	end

	-- attach highlight
	local function attachHighlight(obj)
		if not obj or not obj.Parent then return end
		if highlights[obj] then return end

		local highlight = Instance.new("Highlight")
		highlight.Name = HIGHLIGHT_NAME
		highlight.FillColor = HIGHLIGHT_FILL
		highlight.OutlineColor = HIGHLIGHT_OUTLINE
		highlight.FillTransparency = FILL_TRANSPARENCY
		highlight.OutlineTransparency = OUTLINE_TRANSPARENCY
		highlight.Parent = obj

		highlights[obj] = highlight
	end

	-- attach billboard gui
	local function attachBillboard(obj)
		if not obj or not obj.Parent then return end
		if billboards[obj] then return end

		local adorneePart = getAdorneePart(obj)
		if not adorneePart then return end  -- ignore if no valid part

		local billboard = Instance.new("BillboardGui")
		billboard.Name = BILLBOARD_NAME
		billboard.Size = UDim2.new(6, 0, 1.5, 0)
		billboard.AlwaysOnTop = true
		billboard.LightInfluence = 0
		billboard.MaxDistance = 200
		billboard.Parent = adorneePart

		local text = Instance.new("TextLabel")
		text.Size = UDim2.new(1, 0, 1, 0)
		text.BackgroundTransparency = 1
		text.Text = "DANGER"
		text.TextColor3 = Color3.fromRGB(255, 0, 0)
		text.TextScaled = true
		text.Font = Enum.Font.GothamBlack
		text.Parent = billboard

		billboards[obj] = billboard
	end

	-- cleanup if object removed
	local function cleanup(obj)
		if highlights[obj] then
			highlights[obj]:Destroy()
			highlights[obj] = nil
		end

		if billboards[obj] then
			billboards[obj]:Destroy()
			billboards[obj] = nil
		end
	end

	-- when a target object appears
	local function processObject(obj)
		if not obj or not obj.Parent then return end
		if not targetSet[obj.Name] then return end

		attachHighlight(obj)
		attachBillboard(obj)
	end

	-- scan existing objects on start
	for _, name in ipairs(targetNames) do
		local obj = Workspace:FindFirstChild(name)
		if obj then
			processObject(obj)
		end
	end

	-- handle new objects entering workspace
	Workspace.ChildAdded:Connect(function(child)
		task.defer(function()
			processObject(child)
		end)
	end)

	-- clean on removal
	Workspace.ChildRemoved:Connect(function(child)
		if targetSet[child.Name] then
			cleanup(child)
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Disable/Remove Jumpscare"
	Lobbybutton1.Text = "Disable/Remove Jumpscare"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Jumpscare Disabled")
		game.ReplicatedStorage.StealerJumpscare:Destroy()

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(106, 54, 41)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all players"
	Lobbybutton1.Text = "Highlight all players"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Highlighted all players"
		for i, player in Players:GetPlayers() do

			local character = player.Character

			if character then

				-- Remove existing highlight if any

				local oldHighlight = character:FindFirstChildOfClass("Highlight")

				if oldHighlight then

					oldHighlight:Destroy()

				end



				local highlight = Instance.new("Highlight")

				highlight.FillColor = Color3.fromRGB(0, 255, 255)

				highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

				highlight.Parent = character

			end

		end

	end)
end

local function Floor_5()
	print("Floor 5 function called")
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Speed Boost 2x Speed"
	Lobbybutton1.Text = "Speed Boost 2x Speed"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local cd = false
		print("Speed Boost Activated")
		if cd == false then
			local humanoid = character:WaitForChild("Humanoid")

			-- Store original speed
			local originalSpeed = humanoid.WalkSpeed
			local boostedSpeed = originalSpeed * 2

			-- Apply boost once
			humanoid.WalkSpeed = boostedSpeed

			-- Reapply boost every time WalkSpeed changes
			humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
				if humanoid.WalkSpeed ~= boostedSpeed then
					humanoid.WalkSpeed = boostedSpeed
				end
			end)

			print("Boosted speed: " .. boostedSpeed)
			cd = true

		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Anomaly Scanner"
	Lobbybutton1.Text = "Anomaly Scanner"
	Lobbybutton1.MouseButton1Click:Connect(function()
		-- simple toggle so clicking again stops the checking loop
		if Lobbybutton1:GetAttribute("AnomalyScannerActive") then
			-- stop scanning
			Lobbybutton1:SetAttribute("AnomalyScannerActive", false)
			pcall(function() Lobbybutton1.Text = "Scan stopped" end)
			return
		end

		Lobbybutton1:SetAttribute("AnomalyScannerActive", true)
		pcall(function() Lobbybutton1.Text = "Starting anomaly scan..." end)

		-- excluded names (ignore these)
		local excluded = {
			SecondPlane = true,
			Airport = true,
			DuplicateHall = true,
			DefaultPlane = true,
			StartingAreaThing = true,
			StartingAreaThing2 = true,
			StartingHall = true,
			StartingPlane = true,
		}

		-- helper: safely get Map folder (non-blocking wait)
		local Map = Workspace:FindFirstChild("Map")
		if not Map then
			-- try a short wait in case it spawns immediately after clicking
			Map = Workspace:WaitForChild("Map", 2) -- waits up to 2 seconds
		end

		if not Map then
			pcall(function() Lobbybutton1.Text = "No Map folder found in Workspace" end)
			Lobbybutton1:SetAttribute("AnomalyScannerActive", false)
			return
		end

		-- function to scan current children of Map for any non-excluded Model (or any Instance that is a Model)
		local function scanOnce()
			for _, child in ipairs(Map:GetChildren()) do
				-- only consider Models (skip folders/values etc)
				if child:IsA("Model") then
					if not excluded[child.Name] then
						return child.Name, child
					end
				end
			end
			return nil, nil
		end

		-- quick immediate scan
		local name, inst = scanOnce()
		if name then
			pcall(function()
				Lobbybutton1.Text = "Possible anomaly. Anomaly name: " .. name
			end)
			-- continue scanning every second but we've already reported one
		else
			pcall(function() Lobbybutton1.Text = "No anomaly found — scanning every second..." end)
		end

		-- reactive listener: if new models are added, update immediately
		local childAddedConn
		childAddedConn = Map.ChildAdded:Connect(function(child)
			if not Lobbybutton1:GetAttribute("AnomalyScannerActive") then
				-- stop listening if scanner deactivated
				if childAddedConn and childAddedConn.Connected then childAddedConn:Disconnect() end
				return
			end
			if child and child:IsA("Model") and not excluded[child.Name] then
				pcall(function()
					Lobbybutton1.Text = "Possible anomaly. Anomaly name: " .. child.Name
				end)
			end
		end)

		-- periodic checker (every second) that runs while the scanner attribute is true
		task.spawn(function()
			while Lobbybutton1:GetAttribute("AnomalyScannerActive") do
				-- if button destroyed or not a GuiButton anymore, break
				if not Lobbybutton1.Parent or not Lobbybutton1:IsA("GuiButton") then break end

				local n, inst2 = scanOnce()
				if n then
					pcall(function()
						Lobbybutton1.Text = "Possible anomaly. Anomaly name: " .. n
					end)
				else
					-- only update text sometimes to avoid spamming changes
					pcall(function()
						if not Lobbybutton1.Text:match("Possible anomaly") then
							Lobbybutton1.Text = "Scanning... no anomaly"
						end
					end)
				end

				-- sleep 1 second
				task.wait(1)
			end

			-- cleanup when loop ends
			if childAddedConn and childAddedConn.Connected then
				childAddedConn:Disconnect()
			end
			-- leave a friendly message
			if Lobbybutton1 and Lobbybutton1.Parent and Lobbybutton1:IsA("GuiButton") then
				pcall(function() Lobbybutton1.Text = "Scanner stopped" end)
			end
		end)
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Exit (You need to get to Airport)"
	Lobbybutton1.Text = "Teleport to Exit (You need to get to Airport)"
	Lobbybutton1.MouseButton1Click:Connect(function()
		-- ensure character is available
		local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
		if not hrp then
			warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
			return
		end

		-- find closest Door2 model that has Click -> ProximityPrompt
		local closestModel = nil
		local closestDistSq = math.huge

		for _, inst in ipairs(workspace.Map.Airport:GetDescendants()) do
			if inst:IsA("Model") and inst.Name == "Door2" then
				local clickObj = inst:FindFirstChild("Click", true) -- true searches descendants (in case Click is nested)
				if clickObj and clickObj:IsA("BasePart") or clickObj and clickObj:IsA("Folder") or clickObj then
					-- try find a ProximityPrompt either directly under Click or inside its descendants
					local prompt = clickObj:FindFirstChildOfClass("ProximityPrompt") or clickObj:FindFirstChild("ProximityPrompt", true)
					if prompt then
						if clickObj.BrickColor == BrickColor.new("Maroon") then
							-- measure distance from player to model (use model primary part or farty part if available)
							local refPart = inst:FindFirstChild("farty") or inst.PrimaryPart
							if refPart and refPart:IsA("BasePart") then
								local distSq = (refPart.Position - hrp.Position).Magnitude ^ 2
								if distSq < closestDistSq then
									prompt.Enabled = true
									prompt.HoldDuration = 0 -- ensure hold duration is cleared
									closestDistSq = distSq
									closestModel = inst
								end
							end
						end
					end
				end
			end
		end

		if not closestModel then
			warn("[AdminGUI] No Door2 with a Click->ProximityPrompt found in workspace.")
			return
		end

		-- get the parts we need from the chosen model
		local clickPart = closestModel:FindFirstChild("Click", true)
		local fartyPart = closestModel:FindFirstChild("farty") or closestModel.PrimaryPart

		if not fartyPart or not fartyPart:IsA("BasePart") then
			warn("[AdminGUI] Found Door2 with a prompt but no valid 'farty' part to teleport to.")
			return
		end

		-- set prompt hold duration safely (pcall to avoid runtime errors)
		if clickPart then
			local prompt = clickPart:FindFirstChildOfClass("ProximityPrompt") or clickPart:FindFirstChild("ProximityPrompt", true)
			if prompt then
				pcall(function() prompt.HoldDuration = 0 end)
			end
		end

		-- compute target CFrame 3 studs in front of the farty part
		local partCFrame
		if fartyPart.GetPivot then
			partCFrame = fartyPart:GetPivot()
		else
			partCFrame = fartyPart.CFrame
		end

		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset

		-- teleport the player's character (PivotTo preferred for physics correctness)
		if character and character.PrimaryPart then
			-- if primary part exists, use PivotTo
			pcall(function()
				character:PivotTo(targetCFrame)
			end)
		else
			-- fallback: try moving HumanoidRootPart
			if hrp and hrp:IsA("BasePart") then
				hrp.CFrame = targetCFrame
			end
		end

		print("[AdminGUI] Teleported player to Door2 (model with Click->ProximityPrompt).")
	end)


	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to FakeReality's Door"
	Lobbybutton1.Text = "Teleport to FakeReality's Door (You need get to Airport)"
	Lobbybutton1.MouseButton1Click:Connect(function()
		-- ensure character is available
		local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
		if not hrp then
			warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
			return
		end

		-- find closest Door2 model that has Click -> ProximityPrompt
		local closestModel = nil
		local closestDistSq = math.huge

		for _, inst in ipairs(workspace.Map.Airport:GetDescendants()) do
			if inst:IsA("Model") and inst.Name == "Door2" then
				local clickObj = inst:FindFirstChild("Click", true) -- true searches descendants (in case Click is nested)
				if clickObj and clickObj:IsA("BasePart") or clickObj and clickObj:IsA("Folder") or clickObj then
					-- try find a ProximityPrompt either directly under Click or inside its descendants
					local prompt = clickObj:FindFirstChildOfClass("ProximityPrompt") or clickObj:FindFirstChild("ProximityPrompt", true)
					if prompt then
						if clickObj.BrickColor == BrickColor.new("Lapis") then
						-- measure distance from player to model (use model primary part or farty part if available)
						local refPart = inst:FindFirstChild("farty") or inst.PrimaryPart
						if refPart and refPart:IsA("BasePart") then
							local distSq = (refPart.Position - hrp.Position).Magnitude ^ 2
							if distSq < closestDistSq then
								prompt.Enabled = true
								prompt.HoldDuration = 0 -- ensure hold duration is cleared
								closestDistSq = distSq
								closestModel = inst
							end
							end
						end
					end
				end
			end
		end

		if not closestModel then
			warn("[AdminGUI] No Door2 with a Click->ProximityPrompt found in workspace.")
			return
		end

		-- get the parts we need from the chosen model
		local clickPart = closestModel:FindFirstChild("Click", true)
		local fartyPart = closestModel:FindFirstChild("farty") or closestModel.PrimaryPart

		if not fartyPart or not fartyPart:IsA("BasePart") then
			warn("[AdminGUI] Found Door2 with a prompt but no valid 'farty' part to teleport to.")
			return
		end

		-- set prompt hold duration safely (pcall to avoid runtime errors)
		if clickPart then
			local prompt = clickPart:FindFirstChildOfClass("ProximityPrompt") or clickPart:FindFirstChild("ProximityPrompt", true)
			if prompt then
				pcall(function() prompt.HoldDuration = 0 end)
			end
		end

		-- compute target CFrame 3 studs in front of the farty part
		local partCFrame
		if fartyPart.GetPivot then
			partCFrame = fartyPart:GetPivot()
		else
			partCFrame = fartyPart.CFrame
		end

		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset

		-- teleport the player's character (PivotTo preferred for physics correctness)
		if character and character.PrimaryPart then
			-- if primary part exists, use PivotTo
			pcall(function()
				character:PivotTo(targetCFrame)
			end)
		else
			-- fallback: try moving HumanoidRootPart
			if hrp and hrp:IsA("BasePart") then
				hrp.CFrame = targetCFrame
			end
		end

		print("[AdminGUI] Teleported player to Door2 (model with Click->ProximityPrompt).")
	end)


	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all Researches"
	Lobbybutton1.Text = "Highlight all Researches"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Highlighted all Researches")
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted all Researches"
			local targetCFrame = character:GetPivot()

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")

			if researchFolder then
				for i, obj in researchFolder:GetChildren() do
					if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
						local hasHighlight = false
						for j, child in obj:GetChildren() do
							if child:IsA("Highlight") then
								hasHighlight = true
								break
							end
						end
						if not hasHighlight then
							local highlight = Instance.new("Highlight")
							highlight.FillColor = Color3.fromRGB(255, 255, 0)
							highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
							highlight.FillTransparency = 0.8
							highlight.OutlineTransparency = 0.5
							highlight.Parent = obj
						end
					end
				end
			end
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to nearest rasearch"
	Lobbybutton1.Text = "Teleport to nearest rasearch"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local player = Players.LocalPlayer
		local character = player.Character or player.CharacterAdded:Wait()
		Lobbybutton1.Text = "Teleported to nearest rasearch"
		task.wait(0.1) -- Ensure character is fully loaded
		Lobbybutton1.Text = "Teleport to nearest rasearch"

		if not character or not character:GetPivot() then
			return
		end

		local researchFolder = Workspace:FindFirstChild("ResearchCollect")
		if not researchFolder then
			return
		end

		local charPos = character:GetPivot().Position
		local nearestObj = nil
		local nearestDist = math.huge

		for i, obj in researchFolder:GetChildren() do
			if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
				local objPos = obj.Position
				local dist = (charPos - objPos).Magnitude
				if dist < nearestDist then
					nearestDist = dist
					nearestObj = obj
				end
			end
		end

		if nearestObj then
			local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
			character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Light up the floor/level"
	Lobbybutton1.Text = "Light up the floor/level"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Floor/level lighted up")
		if game.Lighting.Atmosphere then
			game.Lighting.Atmosphere:Destroy()
		end
		game.Lighting.Ambient = Color3.new(1, 1, 1)
		game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		game.Lighting.Brightness = 5
		game.Lighting.TimeOfDay = "14:00:00"

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight entites"
	Lobbybutton1.Text = "Highlight entites"

	-- Objects to track by name (we will search for these names inside models under Workspace.Map)
	local targetNames = {
		"Clump",
	}

	local targetSet = {}
	for _, v in ipairs(targetNames) do
		targetSet[v] = true
	end

	-- Highlight appearance
	local HIGHLIGHT_FILL = Color3.fromRGB(255, 0, 4)
	local HIGHLIGHT_OUTLINE = Color3.fromRGB(255, 0, 4)
	local FILL_TRANSPARENCY = 0.8
	local OUTLINE_TRANSPARENCY = 0.5

	local HIGHLIGHT_NAME = "AutoHighlight"
	local BILLBOARD_NAME = "WarningBillboard"

	local highlights = {}
	local billboards = {}

	-- find part to attach billboard to (prefer HumanoidRootPart, PrimaryPart, else first BasePart)
	local function getAdorneePart(obj)
		if not obj then return nil end
		if obj:IsA("BasePart") then return obj end
		if obj:IsA("Model") then
			local hrp = obj:FindFirstChild("HumanoidRootPart")
			if hrp and hrp:IsA("BasePart") then return hrp end
			if obj.PrimaryPart and obj.PrimaryPart:IsA("BasePart") then return obj.PrimaryPart end
			for _, part in ipairs(obj:GetDescendants()) do
				if part:IsA("BasePart") then
					return part
				end
			end
		end
		return nil
	end

	-- attach highlight to the model (idempotent)
	local function attachHighlight(model)
		if not model or not model.Parent then return end
		if highlights[model] then return end

		local highlight = Instance.new("Highlight")
		highlight.Name = HIGHLIGHT_NAME
		highlight.FillColor = HIGHLIGHT_FILL
		highlight.OutlineColor = HIGHLIGHT_OUTLINE
		highlight.FillTransparency = FILL_TRANSPARENCY
		highlight.OutlineTransparency = OUTLINE_TRANSPARENCY
		local adornee = getAdorneePart(model)
		if adornee then highlight.Adornee = adornee end
		highlight.Parent = model

		highlights[model] = highlight
	end

	-- attach billboard gui to the model (idempotent)
	local function attachBillboard(model)
		if not model or not model.Parent then return end
		if billboards[model] then return end

		local adorneePart = getAdorneePart(model)
		if not adorneePart then return end

		local billboard = Instance.new("BillboardGui")
		billboard.Name = BILLBOARD_NAME
		billboard.Size = UDim2.new(6, 0, 1.5, 0)
		billboard.AlwaysOnTop = true
		billboard.LightInfluence = 0
		billboard.MaxDistance = 200
		billboard.Parent = adorneePart

		local text = Instance.new("TextLabel")
		text.Size = UDim2.new(1, 0, 1, 0)
		text.BackgroundTransparency = 1
		text.Text = "DANGER"
		text.TextColor3 = Color3.fromRGB(255, 0, 0)
		text.TextScaled = true
		text.Font = Enum.Font.GothamBlack
		text.Parent = billboard

		billboards[model] = billboard
	end

	-- cleanup if a model removed or no longer matches
	local function cleanup(model)
		if highlights[model] then
			pcall(function() highlights[model]:Destroy() end)
			highlights[model] = nil
		end
		if billboards[model] then
			pcall(function() billboards[model]:Destroy() end)
			billboards[model] = nil
		end
	end

	-- Inspect a model under Map: if any descendant has a target name, mark the parent model
	local function inspectModelForTargets(mapModel)
		if not mapModel or not mapModel.Parent then return end
		if not mapModel:IsA("Model") then return end

		for _, desc in ipairs(mapModel:GetDescendants()) do
			if targetSet[desc.Name] then
				attachHighlight(mapModel)
				attachBillboard(mapModel)
				return
			end
		end

		-- no match found => ensure it's cleaned up
		cleanup(mapModel)
	end

	-- Scan all current models under Workspace.Map
	local function scanAllMapModels()
		local Map = Workspace:FindFirstChild("Map")
		if not Map then return end
		for _, child in ipairs(Map:GetChildren()) do
			inspectModelForTargets(child)
		end
	end

	-- Setup listeners for Map (models added/removed and descendant additions inside each model)
	local map = Workspace:FindFirstChild("Map")
	if map then
		-- initial scan
		scanAllMapModels()

		-- when a new model is added to Map, inspect it and watch its descendants
		map.ChildAdded:Connect(function(child)
			task.defer(function()
				inspectModelForTargets(child)
				if child:IsA("Model") then
					child.DescendantAdded:Connect(function()
						inspectModelForTargets(child)
					end)
				end
			end)
		end)

		-- cleanup when a model removed
		map.ChildRemoved:Connect(function(child)
			cleanup(child)
		end)

		-- attach descendant listeners to existing map children
		for _, child in ipairs(map:GetChildren()) do
			if child:IsA("Model") then
				child.DescendantAdded:Connect(function()
					inspectModelForTargets(child)
				end)
			end
		end
	else
		-- If Map doesn't exist yet, watch for it and then run setup
		Workspace.ChildAdded:Connect(function(child)
			if child.Name == "Map" and (child:IsA("Folder") or child:IsA("Model")) then
				task.defer(function() scanAllMapModels() end)
			end
		end)
	end

	-- Start scanning when the button is clicked (optional quick trigger)
	Lobbybutton1.MouseButton1Click:Connect(function()
		scanAllMapModels()
		Lobbybutton1.Text = "Scanning Map for targets..."
	end)

	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 244, 244)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Disable/Remove Jumpscare"
	Lobbybutton1.Text = "Disable/Remove Jumpscare"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Jumpscare Disabled")
		game.ReplicatedStorage.StealerJumpscare:Destroy()

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(252, 252, 252)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all players"
	Lobbybutton1.Text = "Highlight all players"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Highlighted all players"
		for i, player in Players:GetPlayers() do

			local character = player.Character

			if character then

				-- Remove existing highlight if any

				local oldHighlight = character:FindFirstChildOfClass("Highlight")

				if oldHighlight then

					oldHighlight:Destroy()

				end



				local highlight = Instance.new("Highlight")

				highlight.FillColor = Color3.fromRGB(0, 255, 255)

				highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

				highlight.Parent = character

			end

		end

	end)
end


local function Floor_6()
	print("Floor 6 function called")
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Speed Boost 2x Speed"
	Lobbybutton1.Text = "Speed Boost 2x Speed"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local cd = false
		print("Speed Boost Activated")
		if cd == false then
			local humanoid = character:WaitForChild("Humanoid")

			-- Store original speed
			local originalSpeed = humanoid.WalkSpeed
			local boostedSpeed = originalSpeed * 2

			-- Apply boost once
			humanoid.WalkSpeed = boostedSpeed

			-- Reapply boost every time WalkSpeed changes
			humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
				if humanoid.WalkSpeed ~= boostedSpeed then
					humanoid.WalkSpeed = boostedSpeed
				end
			end)

			print("Boosted speed: " .. boostedSpeed)
			cd = true

		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Exit"
	Lobbybutton1.Text = "Teleport to Exit"
	Lobbybutton1.MouseButton1Click:Connect(function()
		-- ensure character is available
		local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
		if not hrp then
			warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
			return
		end

		-- find closest Door2 model that has Click -> ProximityPrompt
		local closestModel = nil
		local closestDistSq = math.huge

		for _, inst in ipairs(workspace:GetDescendants()) do
			if inst:IsA("Model") and inst.Name == "Door2" then
				local clickObj = inst:FindFirstChild("Click", true) -- true searches descendants (in case Click is nested)
				if clickObj and clickObj:IsA("BasePart") or clickObj and clickObj:IsA("Folder") or clickObj then
					-- try find a ProximityPrompt either directly under Click or inside its descendants
					local prompt = clickObj:FindFirstChildOfClass("ProximityPrompt") or clickObj:FindFirstChild("ProximityPrompt", true)
					if prompt then
						-- measure distance from player to model (use model primary part or farty part if available)
						local refPart = inst:FindFirstChild("farty") or inst.PrimaryPart
						if refPart and refPart:IsA("BasePart") then
							local distSq = (refPart.Position - hrp.Position).Magnitude ^ 2
							if distSq < closestDistSq then
								prompt.Enabled = true
								prompt.HoldDuration = 0 -- ensure hold duration is cleared
								closestDistSq = distSq
								closestModel = inst
							end
						end
					end
				end
			end
		end

		if not closestModel then
			warn("[AdminGUI] No Door2 with a Click->ProximityPrompt found in workspace.")
			return
		end

		-- get the parts we need from the chosen model
		local clickPart = closestModel:FindFirstChild("Click", true)
		local fartyPart = closestModel:FindFirstChild("farty") or closestModel.PrimaryPart

		if not fartyPart or not fartyPart:IsA("BasePart") then
			warn("[AdminGUI] Found Door2 with a prompt but no valid 'farty' part to teleport to.")
			return
		end

		-- set prompt hold duration safely (pcall to avoid runtime errors)
		if clickPart then
			local prompt = clickPart:FindFirstChildOfClass("ProximityPrompt") or clickPart:FindFirstChild("ProximityPrompt", true)
			if prompt then
				pcall(function() prompt.HoldDuration = 0 end)
			end
		end

		-- compute target CFrame 3 studs in front of the farty part
		local partCFrame
		if fartyPart.GetPivot then
			partCFrame = fartyPart:GetPivot()
		else
			partCFrame = fartyPart.CFrame
		end

		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset

		-- teleport the player's character (PivotTo preferred for physics correctness)
		if character and character.PrimaryPart then
			-- if primary part exists, use PivotTo
			pcall(function()
				character:PivotTo(targetCFrame)
			end)
		else
			-- fallback: try moving HumanoidRootPart
			if hrp and hrp:IsA("BasePart") then
				hrp.CFrame = targetCFrame
			end
		end

		print("[AdminGUI] Teleported player to Door2 (model with Click->ProximityPrompt).")
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight Gates and Levers"
	Lobbybutton1.Text = "Highlight Gates and Levers"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		game.Workspace.BigOlGate.Name = "BigOlGate3"
		hihi.Parent = game.Workspace.BigOlGate3
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.BigOlGate
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.BigOlGate2
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all Researches"
	Lobbybutton1.Text = "Highlight all Researches"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Highlighted all Researches")
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted all Researches"
			local targetCFrame = character:GetPivot()

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")

			if researchFolder then
				for i, obj in researchFolder:GetChildren() do
					if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
						local hasHighlight = false
						for j, child in obj:GetChildren() do
							if child:IsA("Highlight") then
								hasHighlight = true
								break
							end
						end
						if not hasHighlight then
							local highlight = Instance.new("Highlight")
							highlight.FillColor = Color3.fromRGB(255, 255, 0)
							highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
							highlight.FillTransparency = 0.8
							highlight.OutlineTransparency = 0.5
							highlight.Parent = obj
						end
					end
				end
			end
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to nearest rasearch"
	Lobbybutton1.Text = "Teleport to nearest rasearch"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local player = Players.LocalPlayer
		local character = player.Character or player.CharacterAdded:Wait()
		Lobbybutton1.Text = "Teleported to nearest rasearch"
		task.wait(0.1) -- Ensure character is fully loaded
		Lobbybutton1.Text = "Teleport to nearest rasearch"

		if not character or not character:GetPivot() then
			return
		end

		local researchFolder = Workspace:FindFirstChild("ResearchCollect")
		if not researchFolder then
			return
		end

		local charPos = character:GetPivot().Position
		local nearestObj = nil
		local nearestDist = math.huge

		for i, obj in researchFolder:GetChildren() do
			if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
				local objPos = obj.Position
				local dist = (charPos - objPos).Magnitude
				if dist < nearestDist then
					nearestDist = dist
					nearestObj = obj
				end
			end
		end

		if nearestObj then
			local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
			character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Light up the floor/level"
	Lobbybutton1.Text = "Light up the floor/level"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Floor/level lighted up")
		if game.Lighting.Atmosphere then
			game.Lighting.Atmosphere:Destroy()
		end
		game.Lighting.Ambient = Color3.new(1, 1, 1)
		game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		game.Lighting.Brightness = 5
		game.Lighting.TimeOfDay = "14:00:00"

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight entites"
	Lobbybutton1.Text = "Highlight entites"
	-- Objects to track in workspace
	-- Objects to track in workspace
	-- Objects to track in workspace
	local targetNames = {
		"Alpha Skin Stealer",
	}

	local targetSet = {}
	for _, v in ipairs(targetNames) do
		targetSet[v] = true
	end

	-- Highlight appearance
	local HIGHLIGHT_FILL = Color3.fromRGB(255, 0, 4)
	local HIGHLIGHT_OUTLINE = Color3.fromRGB(255, 0, 4)
	local FILL_TRANSPARENCY = 0.8
	local OUTLINE_TRANSPARENCY = 0.5

	local HIGHLIGHT_NAME = "AutoHighlight"
	local BILLBOARD_NAME = "WarningBillboard"

	local highlights = {}
	local billboards = {}

	-- find part to attach billboard to
	local function getAdorneePart(obj)
		if not obj then return nil end

		-- If it's a model with HumanoidRootPart
		if obj:IsA("Model") then
			local hrp = obj:FindFirstChild("HumanoidRootPart")
			if hrp then return hrp end

			-- fallback: first BasePart
			for _, part in ipairs(obj:GetDescendants()) do
				if part:IsA("BasePart") then
					return part
				end
			end
		end

		-- If it's already a BasePart
		if obj:IsA("BasePart") then
			return obj
		end

		return nil
	end

	-- attach highlight
	local function attachHighlight(obj)
		if not obj or not obj.Parent then return end
		if highlights[obj] then return end

		local highlight = Instance.new("Highlight")
		highlight.Name = HIGHLIGHT_NAME
		highlight.FillColor = HIGHLIGHT_FILL
		highlight.OutlineColor = HIGHLIGHT_OUTLINE
		highlight.FillTransparency = FILL_TRANSPARENCY
		highlight.OutlineTransparency = OUTLINE_TRANSPARENCY
		highlight.Parent = obj

		highlights[obj] = highlight
	end

	-- attach billboard gui
	local function attachBillboard(obj)
		if not obj or not obj.Parent then return end
		if billboards[obj] then return end

		local adorneePart = getAdorneePart(obj)
		if not adorneePart then return end  -- ignore if no valid part

		local billboard = Instance.new("BillboardGui")
		billboard.Name = BILLBOARD_NAME
		billboard.Size = UDim2.new(6, 0, 1.5, 0)
		billboard.AlwaysOnTop = true
		billboard.LightInfluence = 0
		billboard.MaxDistance = 200
		billboard.Parent = adorneePart

		local text = Instance.new("TextLabel")
		text.Size = UDim2.new(1, 0, 1, 0)
		text.BackgroundTransparency = 1
		text.Text = "DANGER"
		text.TextColor3 = Color3.fromRGB(255, 0, 0)
		text.TextScaled = true
		text.Font = Enum.Font.GothamBlack
		text.Parent = billboard

		billboards[obj] = billboard
	end

	-- cleanup if object removed
	local function cleanup(obj)
		if highlights[obj] then
			highlights[obj]:Destroy()
			highlights[obj] = nil
		end

		if billboards[obj] then
			billboards[obj]:Destroy()
			billboards[obj] = nil
		end
	end

	-- when a target object appears
	local function processObject(obj)
		if not obj or not obj.Parent then return end
		if not targetSet[obj.Name] then return end

		attachHighlight(obj)
		attachBillboard(obj)
	end

	-- scan existing objects on start
	for _, name in ipairs(targetNames) do
		local obj = Workspace:FindFirstChild(name)
		if obj then
			processObject(obj)
		end
	end

	-- handle new objects entering workspace
	Workspace.ChildAdded:Connect(function(child)
		task.defer(function()
			processObject(child)
		end)
	end)

	-- clean on removal
	Workspace.ChildRemoved:Connect(function(child)
		if targetSet[child.Name] then
			cleanup(child)
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Disable/Remove Jumpscare"
	Lobbybutton1.Text = "Disable/Remove Jumpscare"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Jumpscare Disabled")
		game.ReplicatedStorage.StealerJumpscare:Destroy()

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all players"
	Lobbybutton1.Text = "Highlight all players"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Highlighted all players"
		for i, player in Players:GetPlayers() do

			local character = player.Character

			if character then

				-- Remove existing highlight if any

				local oldHighlight = character:FindFirstChildOfClass("Highlight")

				if oldHighlight then

					oldHighlight:Destroy()

				end



				local highlight = Instance.new("Highlight")

				highlight.FillColor = Color3.fromRGB(0, 255, 255)

				highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

				highlight.Parent = character

			end

		end

	end)
end


local function Floor_7()
	print("Floor 7 function called")
	destroyFloorButtons()
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Speed Boost 2x Speed"
	Lobbybutton1.Text = "Speed Boost 2x Speed"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local cd = false
		print("Speed Boost Activated")
		if cd == false then
			local humanoid = character:WaitForChild("Humanoid")

			-- Store original speed
			local originalSpeed = humanoid.WalkSpeed
			local boostedSpeed = originalSpeed * 2

			-- Apply boost once
			humanoid.WalkSpeed = boostedSpeed

			-- Reapply boost every time WalkSpeed changes
			humanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
				if humanoid.WalkSpeed ~= boostedSpeed then
					humanoid.WalkSpeed = boostedSpeed
				end
			end)

			print("Boosted speed: " .. boostedSpeed)
			cd = true

		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight All Gates"
	Lobbybutton1.Text = "Highlight All Gates"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.FunkyGate
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.FunkyGate2
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.FunkyGate3
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.FunkyGate4
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.FunkyGate5
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.FunkyGate6
		local hihi = Instance.new("Highlight")
		hihi.FillColor = Color3.fromRGB(0, 255, 0)
		hihi.FillTransparency = 0.8
		hihi.OutlineColor = Color3.fromRGB(0, 255, 0)
		hihi.OutlineTransparency = 0.5
		hihi.Parent = game.Workspace.FunkyGate7
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to Exit"
	Lobbybutton1.Text = "Teleport to Exit"
	Lobbybutton1.MouseButton1Click:Connect(function()
		-- ensure character is available
		local hrp = character:FindFirstChild("HumanoidRootPart") or character:FindFirstChild("Humanoid") and character:FindFirstChild("Humanoid").RootPart
		if not hrp then
			warn("[AdminGUI] Can't find HumanoidRootPart to determine player position.")
			return
		end

		-- find closest Door2 model that has Click -> ProximityPrompt
		local closestModel = nil
		local closestDistSq = math.huge

		for _, inst in ipairs(workspace:GetDescendants()) do
			if inst:IsA("Model") and inst.Name == "Door2" then
				local clickObj = inst:FindFirstChild("Click", true) -- true searches descendants (in case Click is nested)
				if clickObj and clickObj:IsA("BasePart") or clickObj and clickObj:IsA("Folder") or clickObj then
					-- try find a ProximityPrompt either directly under Click or inside its descendants
					local prompt = clickObj:FindFirstChildOfClass("ProximityPrompt") or clickObj:FindFirstChild("ProximityPrompt", true)
					if prompt then
						-- measure distance from player to model (use model primary part or farty part if available)
						local refPart = inst:FindFirstChild("farty") or inst.PrimaryPart
						if refPart and refPart:IsA("BasePart") then
							local distSq = (refPart.Position - hrp.Position).Magnitude ^ 2
							if distSq < closestDistSq then
								prompt.Enabled = true
								prompt.HoldDuration = 0 -- ensure hold duration is cleared
								closestDistSq = distSq
								closestModel = inst
							end
						end
					end
				end
			end
		end

		if not closestModel then
			warn("[AdminGUI] No Door2 with a Click->ProximityPrompt found in workspace.")
			return
		end

		-- get the parts we need from the chosen model
		local clickPart = closestModel:FindFirstChild("Click", true)
		local fartyPart = closestModel:FindFirstChild("farty") or closestModel.PrimaryPart

		if not fartyPart or not fartyPart:IsA("BasePart") then
			warn("[AdminGUI] Found Door2 with a prompt but no valid 'farty' part to teleport to.")
			return
		end

		-- set prompt hold duration safely (pcall to avoid runtime errors)
		if clickPart then
			local prompt = clickPart:FindFirstChildOfClass("ProximityPrompt") or clickPart:FindFirstChild("ProximityPrompt", true)
			if prompt then
				pcall(function() prompt.HoldDuration = 0 end)
			end
		end

		-- compute target CFrame 3 studs in front of the farty part
		local partCFrame
		if fartyPart.GetPivot then
			partCFrame = fartyPart:GetPivot()
		else
			partCFrame = fartyPart.CFrame
		end

		local offset = partCFrame.LookVector * 3
		local targetCFrame = partCFrame + offset

		-- teleport the player's character (PivotTo preferred for physics correctness)
		if character and character.PrimaryPart then
			-- if primary part exists, use PivotTo
			pcall(function()
				character:PivotTo(targetCFrame)
			end)
		else
			-- fallback: try moving HumanoidRootPart
			if hrp and hrp:IsA("BasePart") then
				hrp.CFrame = targetCFrame
			end
		end

		print("[AdminGUI] Teleported player to Door2 (model with Click->ProximityPrompt).")
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all Researches"
	Lobbybutton1.Text = "Highlight all Researches"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Highlighted all Researches")
		Lobbybutton1.Text = "Loading..."
		while wait(1) do
			Lobbybutton1.Text = "Highlighted all Researches"
			local targetCFrame = character:GetPivot()

			local researchFolder = Workspace:FindFirstChild("ResearchCollect")

			if researchFolder then
				for i, obj in researchFolder:GetChildren() do
					if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
						local hasHighlight = false
						for j, child in obj:GetChildren() do
							if child:IsA("Highlight") then
								hasHighlight = true
								break
							end
						end
						if not hasHighlight then
							local highlight = Instance.new("Highlight")
							highlight.FillColor = Color3.fromRGB(255, 255, 0)
							highlight.OutlineColor = Color3.fromRGB(255, 255, 0)
							highlight.FillTransparency = 0.8
							highlight.OutlineTransparency = 0.5
							highlight.Parent = obj
						end
					end
				end
			end
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Teleport to nearest rasearch"
	Lobbybutton1.Text = "Teleport to nearest rasearch"
	Lobbybutton1.MouseButton1Click:Connect(function()
		local player = Players.LocalPlayer
		local character = player.Character or player.CharacterAdded:Wait()
		Lobbybutton1.Text = "Teleported to nearest rasearch"
		task.wait(0.1) -- Ensure character is fully loaded
		Lobbybutton1.Text = "Teleport to nearest rasearch"

		if not character or not character:GetPivot() then
			return
		end

		local researchFolder = Workspace:FindFirstChild("ResearchCollect")
		if not researchFolder then
			return
		end

		local charPos = character:GetPivot().Position
		local nearestObj = nil
		local nearestDist = math.huge

		for i, obj in researchFolder:GetChildren() do
			if obj:IsA("Part") or obj:IsA("MeshPart") or obj:IsA("UnionOperation") then
				local objPos = obj.Position
				local dist = (charPos - objPos).Magnitude
				if dist < nearestDist then
					nearestDist = dist
					nearestObj = obj
				end
			end
		end

		if nearestObj then
			local targetPos = nearestObj.Position + Vector3.new(0, nearestObj.Size.Y/2 + 4, 0)
			character:PivotTo(CFrame.new(targetPos, targetPos + Vector3.new(0,0,-1)))
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(18, 0, 153)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Light up the floor/level"
	Lobbybutton1.Text = "Light up the floor/level"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Floor/level lighted up")
		if game.Lighting.Atmosphere then
			game.Lighting.Atmosphere:Destroy()
		end
		game.Lighting.Ambient = Color3.new(1, 1, 1)
		game.Lighting.OutdoorAmbient = Color3.new(1, 1, 1)
		game.Lighting.Brightness = 5
		game.Lighting.TimeOfDay = "14:00:00"

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight entites"
	Lobbybutton1.Text = "Highlight entites"
	-- Objects to track in workspace
	-- Objects to track in workspace
	-- Objects to track in workspace
	local targetNames = {
		"Howler",
	}

	local targetSet = {}
	for _, v in ipairs(targetNames) do
		targetSet[v] = true
	end

	-- Highlight appearance
	local HIGHLIGHT_FILL = Color3.fromRGB(255, 0, 4)
	local HIGHLIGHT_OUTLINE = Color3.fromRGB(255, 0, 4)
	local FILL_TRANSPARENCY = 0.8
	local OUTLINE_TRANSPARENCY = 0.5

	local HIGHLIGHT_NAME = "AutoHighlight"
	local BILLBOARD_NAME = "WarningBillboard"

	local highlights = {}
	local billboards = {}

	-- find part to attach billboard to
	local function getAdorneePart(obj)
		if not obj then return nil end

		-- If it's a model with HumanoidRootPart
		if obj:IsA("Model") then
			local hrp = obj:FindFirstChild("HumanoidRootPart")
			if hrp then return hrp end

			-- fallback: first BasePart
			for _, part in ipairs(obj:GetDescendants()) do
				if part:IsA("BasePart") then
					return part
				end
			end
		end

		-- If it's already a BasePart
		if obj:IsA("BasePart") then
			return obj
		end

		return nil
	end

	-- attach highlight
	local function attachHighlight(obj)
		if not obj or not obj.Parent then return end
		if highlights[obj] then return end

		local highlight = Instance.new("Highlight")
		highlight.Name = HIGHLIGHT_NAME
		highlight.FillColor = HIGHLIGHT_FILL
		highlight.OutlineColor = HIGHLIGHT_OUTLINE
		highlight.FillTransparency = FILL_TRANSPARENCY
		highlight.OutlineTransparency = OUTLINE_TRANSPARENCY
		highlight.Parent = obj

		highlights[obj] = highlight
	end

	-- attach billboard gui
	local function attachBillboard(obj)
		if not obj or not obj.Parent then return end
		if billboards[obj] then return end

		local adorneePart = getAdorneePart(obj)
		if not adorneePart then return end  -- ignore if no valid part

		local billboard = Instance.new("BillboardGui")
		billboard.Name = BILLBOARD_NAME
		billboard.Size = UDim2.new(6, 0, 1.5, 0)
		billboard.AlwaysOnTop = true
		billboard.LightInfluence = 0
		billboard.MaxDistance = 200
		billboard.Parent = adorneePart

		local text = Instance.new("TextLabel")
		text.Size = UDim2.new(1, 0, 1, 0)
		text.BackgroundTransparency = 1
		text.Text = "DANGER"
		text.TextColor3 = Color3.fromRGB(255, 0, 0)
		text.TextScaled = true
		text.Font = Enum.Font.GothamBlack
		text.Parent = billboard

		billboards[obj] = billboard
	end

	-- cleanup if object removed
	local function cleanup(obj)
		if highlights[obj] then
			highlights[obj]:Destroy()
			highlights[obj] = nil
		end

		if billboards[obj] then
			billboards[obj]:Destroy()
			billboards[obj] = nil
		end
	end

	-- when a target object appears
	local function processObject(obj)
		if not obj or not obj.Parent then return end
		if not targetSet[obj.Name] then return end

		attachHighlight(obj)
		attachBillboard(obj)
	end

	-- scan existing objects on start
	for _, name in ipairs(targetNames) do
		local obj = Workspace:FindFirstChild(name)
		if obj then
			processObject(obj)
		end
	end

	-- handle new objects entering workspace
	Workspace.ChildAdded:Connect(function(child)
		task.defer(function()
			processObject(child)
		end)
	end)

	-- clean on removal
	Workspace.ChildRemoved:Connect(function(child)
		if targetSet[child.Name] then
			cleanup(child)
		end
	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Disable/Remove Jumpscare"
	Lobbybutton1.Text = "Disable/Remove Jumpscare"
	Lobbybutton1.MouseButton1Click:Connect(function()
		print("Jumpscare Disabled")
		game.ReplicatedStorage.StealerJumpscare:Destroy()

	end)
	local Lobbybutton1 = Instance.new("TextButton")
	Lobbybutton1.Size = UDim2.new(1, -12, 0, 48)
	Lobbybutton1.ZIndex = 2
	Lobbybutton1.Parent = scroll
	Lobbybutton1.TextScaled = true
	Lobbybutton1.TextColor3 = Color3.fromRGB(255, 255, 255)
	Lobbybutton1.BackgroundColor3 = Color3.fromRGB(255, 0, 255)
	local corner = Instance.new("UICorner", Lobbybutton1)
	corner.CornerRadius = UDim.new(0, 8)
	local stroke = Instance.new("UIStroke", Lobbybutton1)
	stroke.Color = Color3.fromRGB(50, 50, 55)
	stroke.Thickness = 1
	Lobbybutton1.Name = "Highlight all players"
	Lobbybutton1.Text = "Highlight all players"
	Lobbybutton1.MouseButton1Click:Connect(function()
		Lobbybutton1.Text = "Highlighted all players"
		for i, player in Players:GetPlayers() do

			local character = player.Character

			if character then

				-- Remove existing highlight if any

				local oldHighlight = character:FindFirstChildOfClass("Highlight")

				if oldHighlight then

					oldHighlight:Destroy()

				end



				local highlight = Instance.new("Highlight")

				highlight.FillColor = Color3.fromRGB(0, 255, 255)

				highlight.OutlineColor = Color3.fromRGB(0, 255, 255)

				highlight.Parent = character

			end

		end

	end)
end

-- Map button names to functions
local buttonFunctionMap = {
	["Lobby"] = Lobby,
	["Endless"] = Endless,
	["Floor 0 (Tutorial Floor)"] = Floor_0,
	["Floor 1 (Parking Garage)"] = Floor_1,
	["Floor 2 (The Pool)"] = Floor_2,
	["Floor 3 (The Hotel)"] = Floor_3,
	["Floor 4 (The Facility)"] = Floor_4,
	["Floor 5 (Infinity Plane)"] = Floor_5,
	["Floor 6 (Cave System)"] = Floor_6,
	["Floor 7 (The Playplace)"] = Floor_7,
}

-- Create all floor buttons
local function createFloorButtons()
	for i, btnData in buttonNames do
		local b, name = makeButton(btnData, scroll)
		b.Activated:Connect(function()
			print("[AdminGUI] Button clicked:", name)
			local func = buttonFunctionMap[name]
			if func then
				func()
			else
				print("No function mapped for button:", name)
			end
			showNotification(name) -- Only show notification for original floor buttons
		end)
	end
end

createFloorButtons()

local function updateCanvas()
	local contentSize = listLayout.AbsoluteContentSize
	scroll.CanvasSize = UDim2.new(0, 0, 0, contentSize.Y + 15)
end
listLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(updateCanvas)
updateCanvas()

-- Dragging logic (mouse and mobile touch support)
do
	local dragging = false
	local dragInput = nil
	local dragStart = nil
	local startPos = nil

	local function inputBegan(input)
		if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
			dragging = true
			dragInput = input
			dragStart = input.Position
			startPos = main.Position
			input.Changed:Connect(function()
				if input.UserInputState == Enum.UserInputState.End then
					dragging = false
					dragInput = nil
				end
			end)
		end
	end

	local function inputChanged(input)
		if dragging and input == dragInput and dragStart and startPos then
			local delta = input.Position - dragStart
			local screenSize = workspace.CurrentCamera and workspace.CurrentCamera.ViewportSize or Vector2.new(1920, 1080)
			local newX = startPos.X.Offset + delta.X
			local newY = startPos.Y.Offset + delta.Y
			newX = math.clamp(newX, 0, math.max(0, screenSize.X - main.AbsoluteSize.X))
			newY = math.clamp(newY, 0, math.max(0, screenSize.Y - main.AbsoluteSize.Y))
			main.Position = UDim2.new(0, newX, 0, newY)
		end
	end

	topBar.InputBegan:Connect(inputBegan)
	UserInputService.InputChanged:Connect(inputChanged)
end

local isOpen = true
toggle.MouseButton1Click:Connect(function()
	isOpen = not isOpen
	if isOpen then
		if UserInputService.TouchEnabled then
			TweenService:Create(main, TWEEN_INFO, {Size = MOBILE_SIZE_OPEN}):Play()

		else
			TweenService:Create(main, TWEEN_INFO, {Size = MAIN_SIZE_OPEN}):Play()

		end
	else
		if UserInputService.TouchEnabled then
			TweenService:Create(main, TWEEN_INFO, {Size = MOBILE_SIZE_CLOSED}):Play()

		else
			TweenService:Create(main, TWEEN_INFO, {Size = MAIN_SIZE_CLOSED}):Play()

		end	end
end)

main.AnchorPoint = Vector2.new(0, 0.5)
main.Position = UDim2.new(0, 20, 0.5, 0)
main.Size = UDim2.new(0, 56, 0, 56)
RunService.Heartbeat:Wait()
TweenService:Create(main, TweenInfo.new(0.18, Enum.EasingStyle.Quad), {Size = MAIN_SIZE_OPEN}):Play()
isOpen = true

-- End of script

Features & Information

IT'S ONLY IN EARLY DEVELOMPENT so don't expect many features.
#Backrooms#VR#Backrooms VR#backrooms#vr

Community Comments (5)

brycevelasco2brycevelasco2Jan 1, 2026

You cannot press buttons with your cursor manually on PC, because of the game putting you in first person. Please add a way you can press buttons!

Replying to @brycevelasco2
GhostVarnxGhostVarnxJan 23, 2026

@brycevelasco2 this is exactly what I want

Replying to @brycevelasco2
FA_DEVFA_DEVJan 24, 2026

@brycevelasco2 sorry, I created script for myself and I usually "play" on mobile. I will fix try that!

Replying to @FA_DEV
FA_DEVFA_DEVJan 24, 2026

Now you can press U to unlock/lock mouse

Replying to @FA_DEV
FA_DEVFA_DEVJan 24, 2026

(also thanks for report)

More Scripts for [NEW] The Backrooms VR : Escape