
KeylessUniversal

local c = workspace.CurrentCamera
local ps = game:GetService("Players")
local lp = ps.LocalPlayer
local rs = game:GetService("RunService")
-- Utility Functions
local function getdistancefc(part)
return (part.Position - c.CFrame.Position).Magnitude
end
local function lerp(a, b, t)
return a + (b - a) * t
end
-- Configuration Table
local espConfig = {
tracerColor = Color3.fromRGB(255, 0, 0),
nameColor = Color3.fromRGB(255, 255, 255),
distColor = Color3.fromRGB(0, 255, 0),
boxColor = Color3.fromRGB(0, 191, 255),
healthBarColor = Color3.fromRGB(0, 255, 0),
pulseSpeed = 5,
orbitRadius = 20,
glitchChance = 0.05,
scanInterval = 50, -- Time between scan line appearances changed to 50 seconds
scanDuration = 0.5, -- How long scan lines are visible each time (still 0.5s)
}
-- ESP Function
local function esp(p, cr)
local h = cr:WaitForChild("Humanoid")
local hrp = cr:WaitForChild("HumanoidRootPart")
-- Drawing Objects
local nameText = Drawing.new("Text")
nameText.Center = true
nameText.Outline = true
nameText.Font = 2
nameText.Color = espConfig.nameColor
nameText.Size = 16
nameText.Visible = false
local distText = Drawing.new("Text")
distText.Center = true
distText.Outline = true
distText.Font = 2
distText.Color = espConfig.distColor
distText.Size = 13
distText.Visible = false
local tracer = Drawing.new("Line")
tracer.From = Vector2.new(c.ViewportSize.X / 2, c.ViewportSize.Y)
tracer.Color = espConfig.tracerColor
tracer.Thickness = 2
tracer.Transparency = 1
tracer.Visible = false
local box = {
top = Drawing.new("Line"),
bottom = Drawing.new("Line"),
left = Drawing.new("Line"),
right = Drawing.new("Line")
}
for _, line in pairs(box) do
line.Color = espConfig.boxColor
line.Thickness = 1
line.Visible = false
end
local healthBar = Drawing.new("Line")
healthBar.Color = espConfig.healthBarColor
healthBar.Thickness = 3
healthBar.Visible = false
local orbitDot1 = Drawing.new("Circle")
orbitDot1.Radius = 3
orbitDot1.Color = Color3.fromRGB(255, 255, 0)
orbitDot1.Filled = true
orbitDot1.Visible = false
local orbitDot2 = Drawing.new("Circle")
orbitDot2.Radius = 3
orbitDot2.Color = Color3.fromRGB(0, 255, 255)
orbitDot2.Filled = true
orbitDot2.Visible = false
-- Connections
local c1, c2, c3
local time = 0
-- Cleanup Function
local function dc()
nameText:Remove()
distText:Remove()
tracer:Remove()
for _, line in pairs(box) do line:Remove() end
healthBar:Remove()
orbitDot1:Remove()
orbitDot2:Remove()
if c1 then c1:Disconnect() c1 = nil end
if c2 then c2:Disconnect() c2 = nil end
if c3 then c3:Disconnect() c3 = nil end
end
-- Disconnect Conditions
c2 = cr.AncestryChanged:Connect(function(_, parent)
if not parent then dc() end
end)
c3 = h.HealthChanged:Connect(function(v)
if (v <= 0) or (h:GetState() == Enum.HumanoidStateType.Dead) then dc() end
end)
-- Animation Logic
c1 = rs.RenderStepped:Connect(function(dt)
time = time + dt
local hrp_pos, hrp_os = c:WorldToViewportPoint(hrp.Position)
local head_pos = c:WorldToViewportPoint(hrp.Position + Vector3.new(0, 3, 0))
local feet_pos = c:WorldToViewportPoint(hrp.Position - Vector3.new(0, 3, 0))
if hrp_os then
-- Name Text
nameText.Position = Vector2.new(head_pos.X, head_pos.Y - 20)
nameText.Text = p.Name
nameText.Visible = true
-- Distance Text with Pulse and Glitch
local distance = math.floor(getdistancefc(hrp))
distText.Position = Vector2.new(head_pos.X, head_pos.Y - 5)
distText.Text = distance .. " studs"
distText.Size = 13 + math.sin(time * espConfig.pulseSpeed) * 2
if math.random() < espConfig.glitchChance then
distText.Text = distText.Text:gsub("s", "5"):gsub("u", "v")
end
distText.Visible = true
-- Animated Tracer
tracer.To = Vector2.new(hrp_pos.X, hrp_pos.Y)
tracer.Color = Color3.fromRGB(
255 * math.abs(math.sin(time)),
0,
255 * math.abs(math.cos(time))
)
tracer.Visible = true
-- Dynamic Box
local boxSize = Vector2.new(20, 60)
box.top.From = Vector2.new(feet_pos.X - boxSize.X / 2, feet_pos.Y - boxSize.Y / 2)
box.top.To = Vector2.new(feet_pos.X + boxSize.X / 2, feet_pos.Y - boxSize.Y / 2)
box.bottom.From = Vector2.new(feet_pos.X - boxSize.X / 2, feet_pos.Y + boxSize.Y / 2)
box.bottom.To = Vector2.new(feet_pos.X + boxSize.X / 2, feet_pos.Y + boxSize.Y / 2)
box.left.From = box.top.From
box.left.To = box.bottom.From
box.right.From = box.top.To
box.right.To = box.bottom.To
for _, line in pairs(box) do line.Visible = true end
-- Health Bar
local healthPercent = h.Health / h.MaxHealth
healthBar.From = Vector2.new(feet_pos.X - boxSize.X / 2 - 5, feet_pos.Y + boxSize.Y / 2)
healthBar.To = Vector2.new(
feet_pos.X - boxSize.X / 2 - 5,
lerp(feet_pos.Y + boxSize.Y / 2, feet_pos.Y - boxSize.Y / 2, healthPercent)
)
healthBar.Color = Color3.fromRGB(
255 * (1 - healthPercent),
255 * healthPercent,
0
)
healthBar.Visible = true
-- Orbiting Dots
local orbitAngle = time * 3
orbitDot1.Position = Vector2.new(
hrp_pos.X + math.cos(orbitAngle) * espConfig.orbitRadius,
hrp_pos.Y + math.sin(orbitAngle) * espConfig.orbitRadius
)
orbitDot2.Position = Vector2.new(
hrp_pos.X + math.cos(orbitAngle + math.pi) * espConfig.orbitRadius,
hrp_pos.Y + math.sin(orbitAngle + math.pi) * espConfig.orbitRadius
)
orbitDot1.Visible = true
orbitDot2.Visible = true
else
nameText.Visible = false
distText.Visible = false
tracer.Visible = false
for _, line in pairs(box) do line.Visible = false end
healthBar.Visible = false
orbitDot1.Visible = false
orbitDot2.Visible = false
end
end)
end
-- Player Handling
local function p_added(p)
if p.Character then
esp(p, p.Character)
end
p.CharacterAdded:Connect(function(cr)
esp(p, cr)
end)
end
for _, p in next, ps:GetPlayers() do
if p ~= lp then
p_added(p)
end
end
ps.PlayerAdded:Connect(p_added)
-- Updated Scan Lines: Appear Every 50 Seconds
local scanLines = {}
for i = 1, 10 do
scanLines[i] = Drawing.new("Line")
scanLines[i].Color = Color3.fromRGB(0, 255, 255) -- Cyan-blue
scanLines[i].Thickness = 1
scanLines[i].Visible = false
end
local scanTime = 0
rs.RenderStepped:Connect(function(dt)
scanTime = scanTime + dt
local cycleTime = scanTime % espConfig.scanInterval -- Time within 50-second cycle
local isActive = cycleTime < espConfig.scanDuration -- Active for first 0.5s of cycle
for i, line in pairs(scanLines) do
if isActive then
-- Position lines moving downward during active period
local yPos = (cycleTime / espConfig.scanDuration) * c.ViewportSize.Y + (i - 1) * 50
if yPos < c.ViewportSize.Y then
line.From = Vector2.new(0, yPos)
line.To = Vector2.new(c.ViewportSize.X, yPos)
line.Transparency = 1 - (cycleTime / espConfig.scanDuration) -- Fade out over 0.5s
line.Visible = true
else
line.Visible = false
end
else
line.Visible = false
end
end
end)



chatgpt and advanced :broken_heart: