
KeylessUniversal

--// ESP Script - Player Boxes + Names
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
-- Store ESP objects
local ESPObjects = {}
-- Create ESP function
local function createESP(player)
if player == LocalPlayer then return end
if ESPObjects[player] then return end
-- Box
local box = Drawing.new("Square")
box.Thickness = 1
box.Color = Color3.fromRGB(0, 255, 0)
box.Filled = false
box.Visible = false
-- Name label
local name = Drawing.new("Text")
name.Size = 13
name.Center = true
name.Outline = true
name.Color = Color3.fromRGB(255, 255, 255)
name.Visible = false
ESPObjects[player] = {Box = box, Name = name}
end
-- Cleanup ESP
local function removeESP(player)
if ESPObjects[player] then
for _, drawing in pairs(ESPObjects[player]) do
drawing:Remove()
end
ESPObjects[player] = nil
end
end
-- Update ESP loop
RunService.RenderStepped:Connect(function()
for player, drawings in pairs(ESPObjects) do
local character = player.Character
local hrp = character and character:FindFirstChild("HumanoidRootPart")
local head = character and character:FindFirstChild("Head")
if hrp and head and character:FindFirstChildOfClass("Humanoid") and character:FindFirstChildOfClass("Humanoid").Health > 0 then
local hrpPos, onScreen = Camera:WorldToViewportPoint(hrp.Position)
local headPos = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.5, 0))
if onScreen then
local scale = (Camera.CFrame.Position - hrp.Position).Magnitude
local boxSize = Vector2.new(50 / (scale * 0.1), 100 / (scale * 0.1))
local boxPos = Vector2.new(hrpPos.X - boxSize.X / 2, hrpPos.Y - boxSize.Y / 2)
drawings.Box.Size = boxSize
drawings.Box.Position = boxPos
drawings.Box.Visible = true
drawings.Name.Position = Vector2.new(headPos.X, headPos.Y - 15)
drawings.Name.Text = player.Name
drawings.Name.Visible = true
else
drawings.Box.Visible = false
drawings.Name.Visible = false
end
else
drawings.Box.Visible = false
drawings.Name.Visible = false
end
end
end)
-- Connect ESP to existing and new players
for _, player in pairs(Players:GetPlayers()) do
createESP(player)
end
Players.PlayerAdded:Connect(createESP)
Players.PlayerRemoving:Connect(removeESP)
![[KEYLESS] Moondiety Script | 17+ supported Games](https://scriptblox.com/images/sb/0-1753093706828.png)


I like it
doesnt auto update, useless esp