local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local UserInputService = game:GetService("UserInputService") local LP = Players.LocalPlayer local espObjects = {} local connections = {} local doors = setmetatable({}, {__mode = "k"}) local espEnabled = true local noclipEnabled = false local noclipConn = nil local noclipParts = {} do local hd = Workspace:FindFirstChild("HalloweenDoors") if hd then for _, d in ipairs(hd:GetDescendants()) do if d.Name == "DoorESP_HL" or d.Name == "DoorESP_BB" then pcall(function() d:Destroy() end) end end end local pg = LP:FindFirstChild("PlayerGui") local old = pg and pg:FindFirstChild("DoorESP") if old then pcall(function() old:Destroy() end) end end local function pickPrimaryPart(door) if door:IsA("BasePart") then return door end for _, n in ipairs({"Door", "Panel", "Main", "Handle"}) do local p = door:FindFirstChild(n, true) if p and p:IsA("BasePart") then return p end end local best, bestSize = nil, 0 for _, d in ipairs(door:GetDescendants()) do if d:IsA("BasePart") then local s = d.Size.X * d.Size.Y * d.Size.Z if s > bestSize then best, bestSize = d, s end end end return best end local function clearESP() for _, o in ipairs(espObjects) do pcall(function() o:Destroy() end) end for _, c in ipairs(connections) do pcall(function() c:Disconnect() end) end espObjects, connections = {}, {} for k in pairs(doors) do doors[k] = nil end end local function markVisited(door) local info = doors[door] if not info or info.visited then return end info.visited = true if info.hl then info.hl.FillColor = Color3.fromRGB(40, 255, 40) info.hl.OutlineColor = Color3.fromRGB(40, 255, 40) end end local function hookDetectors(door) local function onUse() markVisited(door) end for _, d in ipairs(door:GetDescendants()) do if d:IsA("ClickDetector") then table.insert(connections, d.MouseClick:Connect(onUse)) elseif d:IsA("ProximityPrompt") then table.insert(connections, d.Triggered:Connect(onUse)) end end table.insert(connections, door.DescendantAdded:Connect(function(d) if d:IsA("ClickDetector") then table.insert(connections, d.MouseClick:Connect(onUse)) elseif d:IsA("ProximityPrompt") then table.insert(connections, d.Triggered:Connect(onUse)) end end)) end local function addESP(door, idx) if doors[door] then return end local part = pickPrimaryPart(door) if not part then return end local name = (door.Name ~= "" and door.Name) or ("Door " .. idx) local hl = Instance.new("Highlight") hl.Name = "DoorESP_HL" hl.Adornee = part hl.FillColor = Color3.fromRGB(255, 40, 40) hl.FillTransparency = 0.55 hl.OutlineColor = Color3.fromRGB(255, 255, 255) hl.OutlineTransparency= 0 hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Enabled = espEnabled hl.Parent = part table.insert(espObjects, hl) local bb = Instance.new("BillboardGui") bb.Name = "DoorESP_BB" bb.Adornee = part bb.Size = UDim2.new(0, 200, 0, 40) bb.StudsOffset = Vector3.new(0, 2.5, 0) bb.AlwaysOnTop = true bb.Enabled = espEnabled bb.Parent = part table.insert(espObjects, bb) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(1, 0, 1, 0) lbl.BackgroundTransparency = 1 lbl.TextColor3 = Color3.fromRGB(255, 90, 90) lbl.TextStrokeTransparency = 0 lbl.TextScaled = true lbl.Font = Enum.Font.SourceSansBold lbl.Text = name lbl.Parent = bb local info = { part = part, hl = hl, bb = bb, lbl = lbl, name = name, visited = false } doors[door] = info local conn conn = RunService.RenderStepped:Connect(function() if not part.Parent then conn:Disconnect() return end if not espEnabled then return end local char = LP.Character local root = char and char:FindFirstChild("HumanoidRootPart") if root then local dist = math.floor((root.Position - part.Position).Magnitude) local tag = info.visited and " [USED]" or "" lbl.Text = string.format("%s%s [%d]", name, tag, dist) if info.visited then lbl.TextColor3 = Color3.fromRGB(90, 255, 90) end end end) table.insert(connections, conn) hookDetectors(door) end local function refresh() local hd = Workspace:FindFirstChild("HalloweenDoors") if not hd then return end for i, door in ipairs(hd:GetChildren()) do addESP(door, i) end end local function watchFolder(hd) hd = hd or Workspace:FindFirstChild("HalloweenDoors") if not hd then return end table.insert(connections, hd.ChildAdded:Connect(function() task.wait(0.15) refresh() end)) end refresh() watchFolder() table.insert(connections, Workspace.ChildAdded:Connect(function(child) if child.Name == "HalloweenDoors" then task.wait(0.3) clearESP() refresh() watchFolder(child) end end)) local function startNoclip() if noclipConn then noclipConn:Disconnect() end noclipParts = {} noclipConn = RunService.Stepped:Connect(function() if not noclipEnabled then return end local char = LP.Character if not char then return end for _, part in ipairs(char:GetDescendants()) do if part:IsA("BasePart") and part.CanCollide then part.CanCollide = false noclipParts[part] = true end end end) end local function stopNoclip() if noclipConn then noclipConn:Disconnect() noclipConn = nil end for part in pairs(noclipParts) do if typeof(part) == "Instance" and part:IsA("BasePart") and part.Parent then part.CanCollide = true end end noclipParts = {} end local gui = Instance.new("ScreenGui") gui.Name = "DoorESP" gui.ResetOnSpawn = false gui.Parent = LP:WaitForChild("PlayerGui") local container = Instance.new("Frame") container.Size = UDim2.new(0, 160, 0, 110) container.Position = UDim2.new(0, 20, 0, 20) container.BackgroundColor3 = Color3.fromRGB(20, 20, 20) container.BorderSizePixel = 0 container.Parent = gui local containerCorner = Instance.new("UICorner") containerCorner.CornerRadius = UDim.new(0, 8) containerCorner.Parent = container local containerStroke = Instance.new("UIStroke") containerStroke.Color = Color3.fromRGB(255, 40, 40) containerStroke.Thickness = 2 containerStroke.Parent = container local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 22) title.Position = UDim2.new(0, 0, 0, 4) title.BackgroundTransparency = 1 title.TextColor3 = Color3.fromRGB(255, 255, 255) title.Font = Enum.Font.SourceSansBold title.TextSize = 13 title.Text = "2od's Menu" title.Parent = container local espBtn = Instance.new("TextButton") espBtn.Size = UDim2.new(1, -16, 0, 30) espBtn.Position = UDim2.new(0, 8, 0, 30) espBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 35) espBtn.BorderSizePixel = 0 espBtn.Text = "Door ESP: ON" espBtn.TextColor3 = Color3.fromRGB(255, 255, 255) espBtn.Font = Enum.Font.SourceSansBold espBtn.TextSize = 13 espBtn.AutoButtonColor = false espBtn.Parent = container local espBtnCorner = Instance.new("UICorner") espBtnCorner.CornerRadius = UDim.new(0, 5) espBtnCorner.Parent = espBtn local espBtnStroke = Instance.new("UIStroke") espBtnStroke.Color = Color3.fromRGB(255, 40, 40) espBtnStroke.Thickness = 1 espBtnStroke.Parent = espBtn local noclipBtn = Instance.new("TextButton") noclipBtn.Size = UDim2.new(1, -16, 0, 30) noclipBtn.Position = UDim2.new(0, 8, 0, 64) noclipBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 35) noclipBtn.BorderSizePixel = 0 noclipBtn.Text = "Noclip: OFF" noclipBtn.TextColor3 = Color3.fromRGB(255, 255, 255) noclipBtn.Font = Enum.Font.SourceSansBold noclipBtn.TextSize = 13 noclipBtn.AutoButtonColor = false noclipBtn.Parent = container local noclipBtnCorner = Instance.new("UICorner") noclipBtnCorner.CornerRadius = UDim.new(0, 5) noclipBtnCorner.Parent = noclipBtn local noclipBtnStroke = Instance.new("UIStroke") noclipBtnStroke.Color = Color3.fromRGB(100, 100, 100) noclipBtnStroke.Thickness = 1 noclipBtnStroke.Parent = noclipBtn local footer = Instance.new("TextLabel") footer.Size = UDim2.new(1, 0, 0, 16) footer.Position = UDim2.new(0, 0, 1, -18) footer.BackgroundTransparency = 1 footer.TextColor3 = Color3.fromRGB(140, 140, 140) footer.Font = Enum.Font.SourceSans footer.TextSize = 11 footer.Text = "made by 2od" footer.Parent = container local dragging, dragStart, startPos container.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = container.Position end end) UserInputService.InputChanged:Connect(function(input) if not dragging then return end if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then local delta = input.Position - dragStart container.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) espBtn.MouseButton1Click:Connect(function() espEnabled = not espEnabled espBtn.Text = "Door ESP: " .. (espEnabled and "ON" or "OFF") espBtnStroke.Color = espEnabled and Color3.fromRGB(255, 40, 40) or Color3.fromRGB(100, 100, 100) for _, o in ipairs(espObjects) do if o:IsA("Highlight") or o:IsA("BillboardGui") then o.Enabled = espEnabled end end end) noclipBtn.MouseButton1Click:Connect(function() noclipEnabled = not noclipEnabled noclipBtn.Text = "Noclip: " .. (noclipEnabled and "ON" or "OFF") noclipBtnStroke.Color = noclipEnabled and Color3.fromRGB(40, 255, 40) or Color3.fromRGB(100, 100, 100) if noclipEnabled then startNoclip() else stopNoclip() end end)