Universal ESP
Key RequiredUniversal

Universal ESP

Universal Scriptdardav2dardav2 2.7K views 159 executesUpdated May 18, 2025
2.5/ 5(4 votes)
2250% Positive
Lua Script•83 lines (2689 chars)
--// 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)

Features & Information

esp thats all

Community Comments (2)

javenjavenMay 18, 2025

I like it

VisprVisprMay 18, 2025

doesnt auto update, useless esp

More Scripts for Universal Scripts