If you’re playing Blood Debt on Roblox and want an easier way to spot enemies or identify roles, ESP scripts can really help. ESP (Extra Sensory Perception) scripts show player info like who’s the killer, sheriff, or even if someone is unarmed. These two scripts below are some of the best for making the game simpler and smarter to play.
01. ESP AI – Script by Neural Network
This script was made entirely using AI (a neural network). It checks which weapon a player has and shows their role using colored dots.
Features
Feature | Description |
---|---|
AI-Created Script | Made by a neural network automatically |
Weapon Detection | Detects 6 main weapons used by killers/sheriffs |
ESP Dots | Adds colored dots based on role (killer, sheriff) |
Open Source | You can edit and improve it if you want |
Script:
loadstring(game:HttpGet("https://raw.githubusercontent.com/qwezxc123zz/FreeCheats/main/ESPBloodDebt.lua"))()
02. Blood Debt ESP – Made by ChatGPT
A simpler script that shows where the killers are. Great for quick help in tracking roles.
Features
Feature | Description |
---|---|
ESP for Killers | Shows killers with easy-to-see markers |
Easy to Use | Simple code that works well |
Good for Beginners | No extra setup needed |
Script:
local Players = game:GetService("Players")
local workspace = game:GetService("Workspace")
local weaponMarkers = {
Killer = {"Sawn-off", "K1911", "RR-LightCompactPistolS", "JS2-Derringy", "KOLT-AR15", "JS-22", "KamatovS"},
Sheriff = {"RR-Snubby", "GG-17", "IZVEKH-412"},
HomigradTerrorist = {"VK's ANKM", "RY's GG-17", "AT's KAR15"},
HomigradPolice = {"RR-40", "IZVEKH-412"},
MeleeWeapons = {"Lead Pipe", "KitchenKnife", "Pen"}
}
local function createDot(player, color)
if player.Character and player.Character:FindFirstChild("Head") then
local head = player.Character.Head
local dot = head:FindFirstChild("RoleDot")
if not dot then
dot = Instance.new("BillboardGui")
dot.Name = "RoleDot"
dot.Size = UDim2.new(0, 8, 0, 8)
dot.Adornee = head
dot.AlwaysOnTop = true
dot.Parent = head
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, 0, 1, 0)
frame.BackgroundColor3 = color
frame.Parent = dot
else
dot.Frame.BackgroundColor3 = color
end
end
end
local function removeDot(player)
if player.Character and player.Character:FindFirstChild("Head") then
local head = player.Character.Head
local dot = head:FindFirstChild("RoleDot")
if dot then
dot:Destroy()
end
end
end
local function isPlayerUnarmed(player)
local backpack = player:FindFirstChild("Backpack")
local toolInHand = player.Character and player.Character:FindFirstChildOfClass("Tool")
local npcModel = workspace.NPCSFolder:FindFirstChild(player.Name)
local npcWeapon = npcModel and npcModel:FindFirstChildOfClass("Tool")
if not toolInHand and not npcWeapon and (not backpack or #backpack:GetChildren() == 0) then
return true
end
return false
end
local function checkValidWeapon(player)
local backpack = player:FindFirstChild("Backpack")
local toolInHand = player.Character and player.Character:FindFirstChildOfClass("Tool")
local npcModel = workspace.NPCSFolder:FindFirstChild(player.Name)
local npcWeapon = npcModel and npcModel:FindFirstChildOfClass("Tool")
local detectedWeapon = nil
local detectedRole = nil
local function checkWeapon(item)
for role, weapons in pairs(weaponMarkers) do
if table.find(weapons, item) then
detectedRole = role
detectedWeapon = item
end
end
end
if backpack then
for _, item in pairs(backpack:GetChildren()) do
checkWeapon(item.Name)
end
end
if toolInHand then
checkWeapon(toolInHand.Name)
end
if npcWeapon then
checkWeapon(npcWeapon.Name)
end
return detectedRole, detectedWeapon
end
local function checkTargetHints(player)
local hintsGui = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("RESETONDEATHStatusGui")
if hintsGui and hintsGui:FindFirstChild("TARGETHINT") then
local hintText = hintsGui.TARGETHINT.Text
local npcModel = workspace.NPCSFolder:FindFirstChild(player.Name)
if npcModel and npcModel:FindFirstChild("Configuration") then
for _, valueObj in pairs(npcModel.Configuration:GetChildren()) do
if valueObj:IsA("StringValue") and valueObj.Value == hintText then
return true
end
end
end
end
return false
end
local function assignDots()
for _, player in pairs(Players:GetPlayers()) do
local role, weapon = checkValidWeapon(player)
local isHintMatch = checkTargetHints(player)
local isUnarmed = isPlayerUnarmed(player)
if isHintMatch then
createDot(player, Color3.fromRGB(255, 255, 0)) -- Yellow
elseif role then
if role == "Killer" then
createDot(player, Color3.fromRGB(255, 0, 0)) -- Red
elseif role == "Sheriff" then
createDot(player, Color3.fromRGB(0, 0, 255)) -- Blue
elseif role == "HomigradTerrorist" then
createDot(player, Color3.fromRGB(255, 165, 0)) -- Orange
elseif role == "HomigradPolice" then
createDot(player, Color3.fromRGB(0, 0, 255)) -- Blue
end
elseif isUnarmed then
createDot(player, Color3.fromRGB(0, 255, 0)) -- Green
else
removeDot(player)
end
end
end
while true do
assignDots()
task.wait(1.5)
end
How to Use the Script
- Get an Executor – You’ll need a Roblox script executor like Synapse X or Delta.
- Open Blood Debt Game – Launch the game from Roblox.
- Paste Script – Copy the script you want to use and paste it into the executor.
- Run the Script – Click on the “Execute” button and the ESP will start working.
What Are the Benefits of Using the Script?
Using these scripts makes your game much easier and more fun. Instead of guessing who the killer or sheriff is, the ESP shows you right away. This helps you stay safe and make smarter decisions. The colored dots help you quickly know who’s armed or not. It also works great if you want to improve your reaction time or simply explore the game better.