local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local function createESP(player) if player == LocalPlayer then return end local function onCharacterAdded(character) local humanoid = character:WaitForChild("Humanoid", 10) local head = character:WaitForChild("Head", 10) if not humanoid or not head then return end -- Apply Highlight to the body local highlight = character:FindFirstChild("ESPHighlight") or Instance.new("Highlight") highlight.Name = "ESPHighlight" highlight.Parent = character highlight.FillColor = Color3.fromRGB(0, 255, 0) highlight.FillTransparency = 0.5 highlight.OutlineColor = Color3.fromRGB(255, 255, 255) highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop -- Apply Billboard for Name and HP if head:FindFirstChild("ESPBillboard") then head.ESPBillboard:Destroy() end local billboard = Instance.new("BillboardGui") billboard.Name = "ESPBillboard" billboard.Size = UDim2.new(0, 200, 0, 50) billboard.StudsOffset = Vector3.new(0, 3, 0) billboard.AlwaysOnTop = true billboard.Parent = head local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 1, 0) label.BackgroundTransparency = 1 label.TextColor3 = Color3.fromRGB(255, 255, 255) label.TextStrokeTransparency = 0 label.TextScaled = true label.Font = Enum.Font.SourceSansBold label.Parent = billboard local function updateText() if not humanoid or not humanoid.Parent then return end local hp = math.floor(humanoid.Health) local maxHp = math.floor(humanoid.MaxHealth) label.Text = string.format("%s\nHP: %d/%d", player.Name, hp, maxHp) if hp <= 25 then label.TextColor3 = Color3.fromRGB(255, 50, 50) elseif hp <= 50 then label.TextColor3 = Color3.fromRGB(255, 255, 0) else label.TextColor3 = Color3.fromRGB(0, 255, 0) end end humanoid.HealthChanged:Connect(updateText) updateText() end player.CharacterAdded:Connect(onCharacterAdded) if player.Character then onCharacterAdded(player.Character) end end for _, player in ipairs(Players:GetPlayers()) do createESP(player) end Players.PlayerAdded:Connect(createESP)