What's new
Heapleak - Scripthub

Get the most out of HeapLeak by creating a free account! Once signed in, you’ll gain full access to restricted content, be able to share your own scripts, and participate in our member-only discussions.

Bite by Night Multi ESP

Version / Update: v1.0.0
Download / Script Link
--// CONFIG
local COLORS = {
KILLER = Color3.fromRGB(255, 0, 0),
ALIVE = Color3.fromRGB(0, 255, 0),
GENERATOR = Color3.fromRGB(255, 255, 0),
ESCAPE = Color3.fromRGB(255, 255, 255)
}

--// STATE
local connections = {}
local currentMap = nil

local function disconnectAll()
for _, c in ipairs(connections) do
c:Disconnect()
end
table.clear(connections)
end

local function track(c)
table.insert(connections, c)
end

--// RESOLVE CHARACTER
local function resolveCharacter(obj)
if not obj then return nil end

if obj:IsA("Model") and obj:FindFirstChildOfClass("Humanoid") then
return obj
end

for _, v in ipairs(obj:GetChildren()) do
if v:IsA("Model") then
return v
end
end

return obj
end

--// ESP (SELF HEAL)
local function applyESP(target, color)
if not target then return end

local function create()
if not target or not target.Parent then return end

local h = target:FindFirstChild("ESP")
if not h then
h = Instance.new("Highlight")
h.Name = "ESP"
h.FillTransparency = 0.5
h.OutlineTransparency = 0
h.Parent = target
end

h.Adornee = target
h.FillColor = color
h.OutlineColor = color
end

create()

track(target.ChildRemoved:Connect(function(child)
if child:IsA("Highlight") and child.Name == "ESP" then
task.defer(create)
end
end))
end

--// PLAYERS
local function setupPlayers(playersFolder)
local alive = playersFolder:WaitForChild("ALIVE")

for _, char in ipairs(alive:GetChildren()) do
applyESP(resolveCharacter(char), COLORS.ALIVE)
end

track(alive.ChildAdded:Connect(function(char)
applyESP(resolveCharacter(char), COLORS.ALIVE)
end))

-- Killer (fully robust)
local function bindKiller(killerContainer)
if not killerContainer then return end

local function update()
local char = resolveCharacter(killerContainer)
if char then
applyESP(char, COLORS.KILLER)
end
end

update()

track(killerContainer.ChildAdded:Connect(function()
task.defer(update)
end))

track(killerContainer.ChildRemoved:Connect(function()
task.defer(update)
end))
end

local killer = playersFolder:FindFirstChild("KILLER")
if killer then
bindKiller(killer)
end

track(playersFolder.ChildAdded:Connect(function(obj)
if obj.Name == "KILLER" then
task.wait()
bindKiller(obj)
end
end))
end

--// MAP
local function setupMap(map)
local generators = map:WaitForChild("Generators")
local escapes = map:WaitForChild("Escapes")

for _, g in ipairs(generators:GetChildren()) do
applyESP(g, COLORS.GENERATOR)
end

track(generators.ChildAdded:Connect(function(g)
applyESP(g, COLORS.GENERATOR)
end))

for _, e in ipairs(escapes:GetChildren()) do
applyESP(e, COLORS.ESCAPE)
end

track(escapes.ChildAdded:Connect(function(e)
applyESP(e, COLORS.ESCAPE)
end))
end

--// MAIN LOOP (RELIABLE ROUND DETECTION)

local playersFolder = workspace:WaitForChild("PLAYERS")
local mapsFolder = workspace:WaitForChild("MAPS")

task.spawn(function()
while true do
local map = mapsFolder:FindFirstChild("GAME MAP")

if map and map ~= currentMap then
currentMap = map

disconnectAll()

setupPlayers(playersFolder)
setupMap(map)
end

task.wait(0.5) -- lightweight check (2x/sec)
end
end)
[ View More ]
db685de1-e190-4885-b84c-2d831f022f0f.webp


Used with Chatgpt, no useless key system and other bullshitReveals The Killer, Survivors, Generators and Escape Gates.
 
Back
Top