HEISTBLOX Script (Delta Mobile) – Inspector: Player ESP, Loot ESP, Weapons 25 8 No Key

HEISTBLOX Script (Delta Mobile) – Inspector: Player ESP, Loot ESP, Weapons

HEISTBLOX · Roblox
Play
No key Mobile friendly Working · Nov 4
Report

Description

HEISTBLOX Inspector is a HEISTBLOX script you can run in Delta on Android, iOS or PC. It includes player esp, criminals filter, police filter and more. The menu uses WindUI; if name tags do not show at first, toggle Player ESP off and on again. Created by asuralangley. No key.

Key Features

  • Player ESP with name tags
  • Filter ESP by Criminals, Police or Civilians
  • Show each player's weapons
  • Show distance to players
  • Loot ESP
  • Adjustable refresh rate
  • Maximum ESP distance slider
  • RightShift to hide or show the menu

HEISTBLOX is an early-development cops-and-robbers shooter. Criminals rob the bank and try to escape with the loot, civilians run down the clock with tasks, and when the timer hits zero the police and SWAT move in. HEISTBLOX Inspector by asuralangley is a HEISTBLOX script that doesn’t shoot or farm anything. It tells you who’s who, what they’re carrying and where the loot is.

Tabs

Dashboard
An Inspector Status box and a Refresh All button.
Players
Enable Player ESP, separate switches for Criminals, Police and Civilians, Show Weapons and Show Distance. Name tags are red for criminals, blue for police and grey for civilians.
Loot
Enable Loot ESP, which tags every item in the current map’s loot folder in gold.
Settings
Refresh Rate (1–5), Maximum Distance (100–2000 studs, starting at 1000) and Automatic Updates.

Everything starts switched on. RightShift hides the window.

How it decides roles and weapons

A player’s role comes from the colour of the highlight the game puts on them. If there’s no highlight, the tag says Unknown. Weapons are simply the names of the tools in a player’s hands and backpack, shown under their name.

Loading

No key. The code box contains the full Inspector (v0.5), and its one outside download is the WindUI interface, pinned to version 1.6.66 on GitHub, so the window won’t change unexpectedly. It saves to a HeistbloxInspector folder. Delta leads the executor row; Fluxus, Codex, Arceus X and PC versions follow. As the page says, if name tags don’t appear the first time, switch Player ESP off and back on.

HEISTBLOX FAQ

Why does everyone show as Unknown? The game hasn’t given them a role highlight yet. That’s usually before a round has properly started. Press Refresh All once teams are set.

Does it have aimbot? No. It’s only information: names, roles, weapons, distance and loot.

Heist tip: as a civilian, keep Show Weapons on and the Police filter off. You’ll only see criminals’ tags and what they’re holding, so you can stay away from the ones with guns while you finish tasks.

Tested With
DeltaCodexArceus XFluxusPC executors
Script CodeHEISTBLOX Inspector (asuralangley)
-- HEISTBLOX INSPECTOR AIO v0.5
-- WindUI 1.6.66
-- Roblox Studio diagnostic edition

local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")

local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

-- CONFIGURATION

local Config = {
    PlayerESP = true,
    LootESP = true,
    WeaponInfo = true,
    RoleDetection = true,
    ShowDistance = true,

    Criminals = true,
    Police = true,
    Civilians = true,
    Unknown = true,

    RefreshRate = 1,
    MaxDistance = 1000,
}

local Colors = {
    Criminal = Color3.fromRGB(255, 50, 50),
    Police = Color3.fromRGB(0, 150, 255),
    Civilian = Color3.fromRGB(200, 200, 200),
    Unknown = Color3.fromRGB(255, 255, 255),
    Loot = Color3.fromRGB(255, 200, 50),
}

local RoleRGB = {
    ["255,50,50"] = "Criminal",
    ["0,150,255"] = "Police",
    ["200,200,200"] = "Civilian",
}

local RenderedPlayers = {}
local RenderedLoot = {}

local Stats = {
    Players = 0,
    Loot = 0,
    Refreshes = 0,
}

-- WINDUI

local WindUI = loadstring(game:HttpGet(
    "https://github.com/Footagesus/WindUI/releases/download/1.6.66/main.lua"
))()

local Window = WindUI:CreateWindow({
    Title = "HEISTBLOX | Inspector",
    Author = "AIO v0.5",
    Icon = "shield",
    Folder = "HeistbloxInspector",
    Theme = "Dark",
    Size = UDim2.fromOffset(700, 500),
    MinSize = Vector2.new(550, 400),
    Resizable = true,
    ToggleKey = Enum.KeyCode.RightShift,
})

local Dashboard = Window:Tab({
    Title = "Dashboard",
    Icon = "layout-dashboard",
})

local PlayersTab = Window:Tab({
    Title = "Players",
    Icon = "users",
})

local LootTab = Window:Tab({
    Title = "Loot",
    Icon = "package",
})

local SettingsTab = Window:Tab({
    Title = "Settings",
    Icon = "settings",
})

-- DETECTION

local function getRole(character)
    local highlight = character
        and character:FindFirstChild("SpectatorHighlight")

    if not highlight or not highlight:IsA("Highlight") then
        return "Unknown"
    end

    local color = highlight.FillColor

    local key = string.format("%d,%d,%d",
        math.round(color.R * 255),
        math.round(color.G * 255),
        math.round(color.B * 255)
    )

    return RoleRGB[key] or "Unknown"
end

local function getWeapons(player)
    local weapons = {}

    local function inspect(container)
        if not container then return end

        for _, item in ipairs(container:GetChildren()) do
            if item:IsA("Tool") then
                table.insert(weapons, item.Name)
            end
        end
    end

    inspect(player.Character)
    inspect(player:FindFirstChildOfClass("Backpack"))

    return #weapons > 0 and table.concat(weapons, ", ") or "Unarmed"
end

local function getDistance(character)
    local root = character
        and character:FindFirstChild("HumanoidRootPart")

    local localRoot = LocalPlayer.Character
        and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")

    if not root or not localRoot then return nil end

    return math.floor((root.Position - localRoot.Position).Magnitude)
end

-- PLAYER RENDERER

local function removePlayer(player)
    local data = RenderedPlayers[player]

    if data then
        data.Billboard:Destroy()
        data.Highlight:Destroy()
        RenderedPlayers[player] = nil
    end
end

local function createPlayer(player)
    if player == LocalPlayer then return end

    local character = player.Character
    local root = character
        and character:FindFirstChild("HumanoidRootPart")

    if not root then return end

    removePlayer(player)

    local billboard = Instance.new("BillboardGui")
    billboard.Name = "InspectorPlayerLabel"
    billboard.Adornee = root
    billboard.Size = UDim2.fromOffset(230, 65)
    billboard.StudsOffset = Vector3.new(0, 3.5, 0)
    billboard.AlwaysOnTop = true
    billboard.MaxDistance = Config.MaxDistance

    local label = Instance.new("TextLabel")
    label.Size = UDim2.fromScale(1, 1)
    label.BackgroundTransparency = 1
    label.TextStrokeTransparency = 0.2
    label.Font = Enum.Font.GothamBold
    label.TextSize = 13
    label.Parent = billboard

    local highlight = Instance.new("Highlight")
    highlight.Adornee = character
    highlight.DepthMode = Enum.HighlightDepthMode.Occluded
    highlight.Parent = character

    billboard.Parent = PlayerGui

    RenderedPlayers[player] = {
        Billboard = billboard,
        Highlight = highlight,
        Label = label,
        Character = character,
    }
end

-- LOOT RENDERER

local function removeLoot(item)
    local data = RenderedLoot[item]

    if data then
        data.Billboard:Destroy()
        data.Highlight:Destroy()
        RenderedLoot[item] = nil
    end
end

local function createLoot(item)
    if not item:IsA("Model") and not item:IsA("BasePart") then
        return
    end

    local part = item:IsA("Model")
        and (item.PrimaryPart or item:FindFirstChildWhichIsA("BasePart"))
        or item

    if not part then return end

    local billboard = Instance.new("BillboardGui")
    billboard.Name = "InspectorLootLabel"
    billboard.Adornee = part
    billboard.Size = UDim2.fromOffset(180, 35)
    billboard.StudsOffset = Vector3.new(0, 2, 0)
    billboard.AlwaysOnTop = true
    billboard.MaxDistance = Config.MaxDistance

    local label = Instance.new("TextLabel")
    label.Size = UDim2.fromScale(1, 1)
    label.BackgroundTransparency = 1
    label.Text = item.Name
    label.TextColor3 = Colors.Loot
    label.TextStrokeTransparency = 0.2
    label.Font = Enum.Font.GothamBold
    label.TextSize = 12
    label.Parent = billboard

    local highlight = Instance.new("Highlight")
    highlight.Adornee = item
    highlight.DepthMode = Enum.HighlightDepthMode.Occluded
    highlight.FillColor = Colors.Loot
    highlight.OutlineColor = Colors.Loot
    highlight.Parent = item

    billboard.Parent = PlayerGui

    RenderedLoot[item] = {
        Billboard = billboard,
        Highlight = highlight,
    }
end

-- UPDATE ENGINE

local function update()
    Stats.Refreshes += 1
    Stats.Players = 0
    Stats.Loot = 0

    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer then
            local character = player.Character
            local root = character
                and character:FindFirstChild("HumanoidRootPart")

            if root then
                Stats.Players += 1

                local data = RenderedPlayers[player]

                if not data or data.Character ~= character then
                    createPlayer(player)
                    data = RenderedPlayers[player]
                end

                if data then
                    local role = Config.RoleDetection
                        and getRole(character) or "Unknown"

                    local allowed =
                        (role == "Criminal" and Config.Criminals)
                        or (role == "Police" and Config.Police)
                        or (role == "Civilian" and Config.Civilians)
                        or (role == "Unknown" and Config.Unknown)

                    local distance = getDistance(character)
                    local inRange = not distance
                        or distance <= Config.MaxDistance

                    local color = Colors[role] or Colors.Unknown

                    local text = player.DisplayName .. "\n" .. role

                    if Config.WeaponInfo then
                        text ..= "\n" .. getWeapons(player)
                    end

                    if Config.ShowDistance and distance then
                        text ..= " | " .. distance .. " studs"
                    end

                    data.Label.Text = text
                    data.Label.TextColor3 = color

                    data.Billboard.Enabled =
                        Config.PlayerESP and allowed and inRange

                    data.Highlight.Enabled =
                        Config.PlayerESP and allowed and inRange

                    data.Highlight.FillColor = color
                    data.Highlight.OutlineColor = color
                end
            else
                removePlayer(player)
            end
        end
    end

    local map = Workspace:FindFirstChild("ActiveMap")
    local folder = map and map:FindFirstChild("Loot")

    if folder then
        for _, item in ipairs(folder:GetChildren()) do
            if item:IsA("Model") or item:IsA("BasePart") then
                Stats.Loot += 1

                if not RenderedLoot[item] then
                    createLoot(item)
                end
            end
        end
    end

    for item in pairs(RenderedLoot) do
        if not item.Parent then
            removeLoot(item)
        else
            local data = RenderedLoot[item]

            data.Billboard.Enabled = Config.LootESP
            data.Highlight.Enabled = Config.LootESP
        end
    end
end

-- DASHBOARD GUI

Dashboard:Section({
    Title = "System Status",
    Box = true,
})

local DashboardParagraph = Dashboard:Paragraph({
    Title = "Inspector Status",
    Desc = "Initializing...",
})

Dashboard:Button({
    Title = "Refresh All",
    Icon = "refresh-cw",
    Callback = function()
        update()
    end,
})

-- PLAYER GUI

PlayersTab:Section({
    Title = "Player ESP",
    Box = true,
})

PlayersTab:Toggle({
    Title = "Enable Player ESP",
    Value = true,
    Callback = function(v)
        Config.PlayerESP = v
        update()
    end,
})

PlayersTab:Toggle({
    Title = "Criminals",
    Value = true,
    Callback = function(v)
        Config.Criminals = v
        update()
    end,
})

PlayersTab:Toggle({
    Title = "Police",
    Value = true,
    Callback = function(v)
        Config.Police = v
        update()
    end,
})

PlayersTab:Toggle({
    Title = "Civilians",
    Value = true,
    Callback = function(v)
        Config.Civilians = v
        update()
    end,
})

PlayersTab:Toggle({
    Title = "Show Weapons",
    Value = true,
    Callback = function(v)
        Config.WeaponInfo = v
        update()
    end,
})

PlayersTab:Toggle({
    Title = "Show Distance",
    Value = true,
    Callback = function(v)
        Config.ShowDistance = v
        update()
    end,
})

-- LOOT GUI

LootTab:Section({
    Title = "Loot ESP",
    Box = true,
})

LootTab:Toggle({
    Title = "Enable Loot ESP",
    Value = true,
    Callback = function(v)
        Config.LootESP = v
        update()
    end,
})

-- SETTINGS GUI

SettingsTab:Section({
    Title = "General Settings",
    Box = true,
})

SettingsTab:Slider({
    Title = "Refresh Rate",
    Value = {
        Min = 1,
        Max = 5,
        Default = 1,
    },
    Callback = function(v)
        Config.RefreshRate = v
    end,
})

SettingsTab:Slider({
    Title = "Maximum Distance",
    Value = {
        Min = 100,
        Max = 2000,
        Default = 1000,
    },
    Callback = function(v)
        Config.MaxDistance = v
        update()
    end,
})

SettingsTab:Toggle({
    Title = "Automatic Updates",
    Value = true,
    Callback = function(v)
        Config.AutoRefresh = v
    end,
})

-- PLAYER LIFECYCLE

Players.PlayerRemoving:Connect(function(player)
    removePlayer(player)
end)

Players.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function()
        task.wait(1)
        update()
    end)
end)

-- MAIN LOOP

task.spawn(function()
    while Window do
        if Config.AutoRefresh then
            update()

            DashboardParagraph:SetDesc(string.format(
                "Status: Running\nPlayers: %d\nLoot: %d\nRefreshes: %d",
                Stats.Players,
                Stats.Loot,
                Stats.Refreshes
            ))
        end

        task.wait(Config.RefreshRate)
    end
end)

update()

WindUI:Notify({
    Title = "HEISTBLOX Inspector",
    Content = "AIO v0.5 initialized successfully.",
    Duration = 4,
})
Game pageHEISTBLOX · 1 script on this siteRoblox ›

More HEISTBLOX scripts

See all
Get Delta Script first on GoogleAdd us as a preferred source to see our new scripts in your Google results.
Add Delta Script on Google

Leave a Reply

Your email address will not be published. Required fields are marked *