local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local espObjects = {} local function createESP(player) if player == LocalPlayer then return end local espBox = Drawing.new("Square") espBox.Visible = false espBox.Color = Color3.new(0, 0, 0) espBox.Thickness = 1 espBox.Filled = true espObjects[player] = espBox end local function updateESP() for player, espBox in pairs(espObjects) do local character = player.Character if character and character:FindFirstChild("HumanoidRootPart") and character:FindFirstChild("Humanoid") and character.Humanoid.Health > 0 then local rootPart = character.HumanoidRootPart local pos, onScreen = Camera:WorldToViewportPoint(rootPart.Position) if onScreen then local size = Vector3.new(4, 6, 0) * (1000 / pos.Z) espBox.Position = Vector2.new(pos.X - size.X/2, pos.Y - size.Y/2) espBox.Size = Vector2.new(size.X, size.Y) espBox.Visible = true else espBox.Visible = false end else espBox.Visible = false end end end for _, player in ipairs(Players:GetPlayers()) do createESP(player) end Players.PlayerAdded:Connect(createESP) Players.PlayerRemoving:Connect(function(player) if espObjects[player] then espObjects[player]:Remove() espObjects[player] = nil end end) RunService.RenderStepped:Connect(updateESP)