
KeylessUniversal

--// Simple ESP 2025-2026 version
--// Put in LocalScript (StarterPlayerScripts / Backpack / etc)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
local ESP_SETTINGS = {
Enabled = true,
-- Visuals
Box_Thickness = 1.5,
Box_Color = Color3.fromRGB(255, 80, 80),
Tracer_Thickness = 1,
Tracer_Color = Color3.fromRGB(255, 80, 80),
Tracer_Origin = "Bottom", -- "Top", "Bottom", "Mouse", "Center"
-- Text
ShowName = true,
ShowHealth = true,
ShowDistance = true,
Text_Size = 13,
Text_Color = Color3.fromRGB(255, 255, 255),
Text_Outline = true,
-- Team check
TeamCheck = true, -- set false to see teammates too
MaxDistance = 2500,
}
-- ────────────────────────────────────────────────
local function createBox()
local box = Drawing.new("Square")
box.Thickness = ESP_SETTINGS.Box_Thickness
box.Color = ESP_SETTINGS.Box_Color
box.Filled = false
box.Transparency = 1
box.Visible = false
return box
end
local function createTracer()
local tracer = Drawing.new("Line")
tracer.Thickness = ESP_SETTINGS.Tracer_Thickness
tracer.Color = ESP_SETTINGS.Tracer_Color
tracer.Transparency = 1
tracer.Visible = false
return tracer
end
local function createText()
local text = Drawing.new("Text")
text.Size = ESP_SETTINGS.Text_Size
text.Color = ESP_SETTINGS.Text_Color
text.Outline = ESP_SETTINGS.Text_Outline
text.Center = true
text.Visible = false
return text
end
local espCache = {}
local function removeESP(plr)
if espCache[plr] then
for _, obj in pairs(espCache[plr]) do
obj:Remove()
end
espCache[plr] = nil
end
end
local function addESP(plr)
if plr == LocalPlayer then return end
if espCache[plr] then return end
local box = createBox()
local tracer = createTracer()
local name = createText()
local info = createText()
espCache[plr] = {box = box, tracer = tracer, name = name, info = info}
local con
con = plr.CharacterRemoving:Connect(function()
removeESP(plr)
con:Disconnect()
end)
end
-- Initial players
for _, plr in ipairs(Players:GetPlayers()) do
task.spawn(addESP, plr)
end
Players.PlayerAdded:Connect(addESP)
Players.PlayerRemoving:Connect(removeESP)
RunService.RenderStepped:Connect(function()
if not ESP_SETTINGS.Enabled then
for _, data in pairs(espCache) do
for k,v in pairs(data) do v.Visible = false end
end
return
end
for plr, drawings in pairs(espCache) do
local char = plr.Character
if not char then
for k,v in pairs(drawings) do v.Visible = false end
continue
end
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if not hrp or not hum or hum.Health <= 0 then
for k,v in pairs(drawings) do v.Visible = false end
continue
end
if ESP_SETTINGS.TeamCheck and plr.Team == LocalPlayer.Team then
for k,v in pairs(drawings) do v.Visible = false end
continue
end
local rootPos, onScreen = Camera:WorldToViewportPoint(hrp.Position)
local headPos = Camera:WorldToViewportPoint(hrp.Position + Vector3.new(0, 3, 0))
local legPos = Camera:WorldToViewportPoint(hrp.Position - Vector3.new(0, 3.5, 0))
if not onScreen then
for k,v in pairs(drawings) do v.Visible = false end
continue
end
local distance = (LocalPlayer.Character.HumanoidRootPart.Position - hrp.Position).Magnitude
if distance > ESP_SETTINGS.MaxDistance then
for k,v in pairs(drawings) do v.Visible = false end
continue
end
-- Box
local boxHeight = math.abs(headPos.Y - legPos.Y)
local boxWidth = boxHeight * 0.55
drawings.box.Size = Vector2.new(boxWidth, boxHeight)
drawings.box.Position = Vector2.new(rootPos.X - boxWidth/2, rootPos.Y - boxHeight/2)
drawings.box.Visible = true
-- Tracer
local tracerFrom
if ESP_SETTINGS.Tracer_Origin == "Bottom" then
tracerFrom = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
elseif ESP_SETTINGS.Tracer_Origin == "Top" then
tracerFrom = Vector2.new(Camera.ViewportSize.X /



c00l esp
Stealef by bilo
Stealer use by bilo
@Akouti no i didnt,i dont know who tf that is
AI