local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local espBoxes = {} local function createESP(part) local box = Drawing.new("Square") box.Size = Vector2.new(10, 10) box.Color = Color3.fromRGB(255, 0, 0) box.Thickness = 2 box.Filled = true box.Visible = true espBoxes[part] = box end local function removeESP(part) if espBoxes[part] then espBoxes[part]:Remove() espBoxes[part] = nil end end for _, v in pairs(workspace:GetDescendants()) do if v:IsA("BasePart") and v.Name == "HumanoidRootPart" then createESP(v) end end workspace.DescendantAdded:Connect(function(descendant) if descendant:IsA("BasePart") and descendant.Name == "HumanoidRootPart" then createESP(descendant) end end) workspace.DescendantRemoving:Connect(function(descendant) if espBoxes[descendant] then removeESP(descendant) end end) RunService.Heartbeat:Connect(function() for part, box in pairs(espBoxes) do if part and part.Parent then local screenPos, onScreen = Camera:WorldToViewportPoint(part.Position) box.Position = Vector2.new(screenPos.X - box.Size.X / 2, screenPos.Y - box.Size.Y / 2) box.Visible = onScreen else removeESP(part) end end end)