Roblox HUNTED Script (October 2026)

PUBLISHEDUPDATED
1 Available ScriptFree

Grinding out the Hollow event gets old fast when you keep getting jumped in the dark, which is why having a HUNTED script ready to go just makes sense.

You are running through cursed mazes, dodging nightmares, and hunting down soul shards and candies to finish quests without getting caught.

If you want to clear that event fast and see what is behind the next door without fumbling around, check out the working code below.

HUNTED Script – Working Script

Working ScriptFree
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)
Executor compatibility changes over time. Check current reports before testing.

Copy the code above into a compatible Roblox script executor if you choose to test it.

HUNTED Script Status

✓AvailabilityFree
$Price$0
◫CompatibilityDesktop & Mobile
★SafetyVerified

Roblox and game updates can affect compatibility, so the script’s status should be treated as temporary rather than guaranteed.

Frequently Asked Questions

What is a HUNTED script?

A HUNTED script is third-party Lua code intended to run alongside the Roblox game through a compatible script executor.

What features does this HUNTED script include?

Different scripts contain different code and features. Check the script menu after it loads to see everything it offers.

How do you use the HUNTED script?

Pick a compatible executor such as Hydrogen, MacSploit, AWP.GG, Delta, Fluxus, Codex, launch Roblox and join the game, copy the complete Lua code from the script card above, paste it into the executor’s editor, and click Run or Execute. Compatibility changes over time, so a name here doesn’t guarantee current support.

Can a HUNTED script get your Roblox account banned?

Yes. Third-party scripts can violate Roblox rules and may put an account at risk. Only use code from a source you trust, never enter your Roblox password into a script or executor, and test on an alternate account first.

Does the HUNTED script work on mobile?

Check whether both the executor and the script support your device and the current Roblox version. Mobile executor support does not guarantee that every script will work.

Check out our Roblox Scripts hub and Roblox Games Directory for more.

Leave a Comment