
Key Required Verified
![[Open Source] ESP](https://cdn.kocakz.me/images/f07f51f736cbf54d608a99793b1111d4b4c3376617bd3af6c4debd84012ae029.webp)
local Hook = {
Players = {
["Killer"] = {Color = Color3.fromRGB(255, 93, 108), On = true},
["Survivor"] = {Color = Color3.fromRGB(64, 224, 255), On = true}
},
Objects = {
["Generator"] = {Color = Color3.fromRGB(210, 87, 255), On = true},
["Gate"] = {Color = Color3.fromRGB(255, 255, 255), On = true},
["Pallet"] = {Color = Color3.fromRGB(74, 255, 181), On = true},
["Window"] = {Color = Color3.fromRGB(74, 255, 181), On = true},
["Hook"] = {Color = Color3.fromRGB(132, 255, 169), On = true}
}
}
local folder = {
["Generator"] = workspace.Map,
["Gate"] = workspace.Map,
["Pallet"] = workspace.Map,
["Window"] = workspace,
["Hook"] = workspace.Map
}
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local localPlayer = Players.LocalPlayer
local cache = {}
local function ESP(obj, color)
if obj:FindFirstChild("H") then return end
local h = Instance.new("Highlight")
h.Name = "H"
h.Adornee = obj
h.FillColor = color
h.OutlineColor = color
h.FillTransparency = 0.8
h.OutlineTransparency = 0.3
h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
h.Parent = obj
end
local function createBillboard(text, color)
local billboard = Instance.new("BillboardGui")
billboard.Name = "BitchHook"
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 120, 0, 30)
billboard.StudsOffset = Vector3.new(0, 0, 0)
local textLabel = Instance.new("TextLabel")
textLabel.Name = "BitchHook"
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundTransparency = 1
textLabel.Text = text
textLabel.TextColor3 = color
textLabel.TextStrokeTransparency = 0
textLabel.TextStrokeColor3 = Color3.new(0, 0, 0)
textLabel.Font = Enum.Font.GothamBold
textLabel.TextSize = 10
textLabel.TextWrapped = true
textLabel.Parent = billboard
return billboard
end
local function getPlayerRole(player)
if player.Team then
local teamName = player.Team.Name:lower()
if teamName:find("killer") then
return "Killer"
elseif teamName:find("survivor") then
return "Survivor"
end
end
return "Survivor"
end
local function updatePlayerNametag(player)
if not player.Character then return end
local humanoidRootPart = player.Character:FindFirstChild("HumanoidRootPart")
if not humanoidRootPart then return end
local cacheKey = player.Name .. "_nametag"
local currentTime = tick()
if cache[cacheKey] and currentTime - cache[cacheKey] < 0.1 then
return
end
cache[cacheKey] = currentTime
local existingTag = humanoidRootPart:FindFirstChild("BitchHook")
if existingTag then existingTag:Destroy() end
local role = getPlayerRole(player)
local color = role == "Killer" and Hook.Players["Killer"].Color or Hook.Players["Survivor"].Color
local distance = 0
if localPlayer.Character and localPlayer.Character:FindFirstChild("HumanoidRootPart") then
distance = math.floor((humanoidRootPart.Position - localPlayer.Character.HumanoidRootPart.Position).Magnitude)
end
local nametagText = player.Name .. "\n[" .. distance .. " studs]"
local nametag = createBillboard(nametagText, color)
nametag.Adornee = humanoidRootPart
nametag.Parent = humanoidRootPart
end
for _, p in ipairs(Players:GetPlayers()) do
if p ~= localPlayer and p.Character and p.Team then
if p.Team.Name == "Killer" then
ESP(p.Character, Hook.Players["Killer"].Color)
elseif p.Team.Name == "Survivors" then
ESP(p.Character, Hook.Players["Survivor"].Color)
end
end
end
for t, f in pairs(folder) do
for _, obj in ipairs(f:GetDescendants()) do
if t == "Hook" and obj.Name == "Hook" then
if obj:FindFirstChild("Model") then
for _, part in ipairs(obj.Model:GetDescendants()) do
if part:IsA("MeshPart") then
ESP(part, Hook.Objects["Hook"].Color)
end
end
end
if obj:FindFirstChild("Cartoony Blood Puddle") then
ESP(obj["Cartoony Blood Puddle"], Hook.Objects["Hook"].Color)
end
elseif obj.Name == (t == "Pallet" and "Palletwrong" or t) then
ESP(obj, Hook.Objects[t].Color)
end
end
end
local lastUpdate = 0
RunService.Heartbeat:Connect(function()
local currentTime = tick()
if currentTime - lastUpdate < 0.1 then return end
lastUpdate = currentTime
for _, player in ipairs(Players:GetPlayers()) do
if player ~= localPlayer then
updatePlayerNametag(player)
end
end
end)
for _, player in ipairs(Players:GetPlayers()) do
if player ~= localPlayer then
player.CharacterAdded:Connect(function()
task.wait(0.5)
updatePlayerNametag(player)
end)
if player.Character then
updatePlayerNametag(player)
end
end
end
update pls
@Rxmmy26 updated
not working
@Xenos updated