local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer --true(On) false(Off) getgenv().ESPEnabled = true getgenv().BoxESP = true getgenv().TracerESP = true getgenv().NameESP = true getgenv().DistanceESP = true getgenv().HealthESP = true getgenv().HealthOutlineESP = true getgenv().WallhackEnabled = true getgenv().TeamCheck = false getgenv().RenderDistance = 1000 getgenv().BoxColor = Color3.fromRGB(255,255,255) getgenv().TracerColor = Color3.fromRGB(255,255,255) getgenv().NameColor = Color3.fromRGB(255,255,255) getgenv().DistanceColor = Color3.fromRGB(255,255,255) local boxes = {} local tracers = {} local nameTags = {} local distanceTags = {} local healthBars = {} local function createText(size) local text = Drawing.new("Text") text.Size = size text.Center = true text.Outline = false text.Visible = false return text end local function createBarPair() local outline = Drawing.new("Square") outline.Thickness = 1 outline.Filled = true outline.Visible = false outline.Color = Color3.fromRGB(0,0,0) local bar = Drawing.new("Square") bar.Thickness = 1 bar.Filled = true bar.Visible = false bar.Color = Color3.fromRGB(0,255,0) return {Outline = outline, Bar = bar} end local function isEnemy(player) if not getgenv().TeamCheck then return true end return player.Team ~= LocalPlayer.Team end local function createESP(character, player) if not character or boxes[character] then return end if player == LocalPlayer then return end local hrp = character:FindFirstChild("HumanoidRootPart") local head = character:FindFirstChild("Head") local humanoid = character:FindFirstChild("Humanoid") if not hrp or not head then return end local box = Drawing.new("Square") box.Visible = false box.Color = getgenv().BoxColor box.Filled = false box.Transparency = 1 box.Thickness = 1 local line = Drawing.new("Line") line.Visible = false line.Color = getgenv().TracerColor line.Thickness = 1 line.Transparency = 1 local nameTag = createText(11) local distTag = createText(11) if not healthBars[player] then healthBars[player] = createBarPair() end local connection = RunService.RenderStepped:Connect(function() if not getgenv().ESPEnabled or not getgenv().WallhackEnabled then box.Visible = false line.Visible = false nameTag.Visible = false distTag.Visible = false if healthBars[player] then healthBars[player].Outline.Visible = false healthBars[player].Bar.Visible = false end return end if not isEnemy(player) then box.Visible = false line.Visible = false nameTag.Visible = false distTag.Visible = false if healthBars[player] then healthBars[player].Outline.Visible = false healthBars[player].Bar.Visible = false end return end hrp = character:FindFirstChild("HumanoidRootPart") head = character:FindFirstChild("Head") humanoid = character:FindFirstChild("Humanoid") if not hrp or not head or not humanoid then return end local pos, visible = Camera:WorldToViewportPoint(hrp.Position) local headPos = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.3, 0)) local legPos = Camera:WorldToViewportPoint(hrp.Position - Vector3.new(0, 2.5, 0)) local distance = (Camera.CFrame.Position - hrp.Position).Magnitude if visible and distance <= getgenv().RenderDistance then local scale = 1 / (pos.Z * math.tan(math.rad(Camera.FieldOfView * 0.5)) * 2) * 100 local width, height = math.floor(40 * scale), math.floor(62 * scale) local position = Vector2.new(pos.X - width/2, pos.Y - height/2) if getgenv().BoxESP then box.Size = Vector2.new(width, height) box.Position = position box.Color = getgenv().BoxColor box.Visible = true else box.Visible = false end if getgenv().TracerESP then line.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y - 50) line.To = Vector2.new(pos.X, pos.Y) line.Color = getgenv().TracerColor line.Visible = true else line.Visible = false end if getgenv().NameESP then nameTag.Position = Vector2.new(headPos.X, headPos.Y - 20) nameTag.Text = player.Name nameTag.Color = getgenv().NameColor nameTag.Visible = true else nameTag.Visible = false end if getgenv().DistanceESP and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then local dist = math.floor((hrp.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude) distTag.Position = Vector2.new(legPos.X, legPos.Y + 5) distTag.Text = tostring(dist) .. "m" distTag.Color = getgenv().DistanceColor distTag.Visible = true else distTag.Visible = false end if getgenv().HealthESP then local outline = healthBars[player].Outline local bar = healthBars[player].Bar local barHeight = height * 0.95 local barWidth = 2 local barXPos = position.X - barWidth - 5 local barYPos = position.Y + (height - barHeight) / 2 local hpPercent = humanoid.Health / humanoid.MaxHealth local filledHeight = barHeight * hpPercent if getgenv().HealthOutlineESP then outline.Size = Vector2.new(barWidth + 2, barHeight + 2) outline.Position = Vector2.new(barXPos - 1, barYPos - 1) outline.Visible = true else outline.Visible = false end bar.Size = Vector2.new(barWidth, filledHeight) bar.Position = Vector2.new(barXPos, barYPos + (barHeight - filledHeight)) if humanoid.Health <= 20 then bar.Color = Color3.fromRGB(255, 0, 0) elseif humanoid.Health <= 65 then bar.Color = Color3.fromRGB(255, 255, 0) else bar.Color = Color3.fromRGB(0, 255, 0) end bar.Visible = true else if healthBars[player] then healthBars[player].Outline.Visible = false healthBars[player].Bar.Visible = false end end else box.Visible = false line.Visible = false nameTag.Visible = false distTag.Visible = false if healthBars[player] then healthBars[player].Outline.Visible = false healthBars[player].Bar.Visible = false end end end) boxes[character] = {Box = box, Connection = connection} tracers[character] = {Line = line} nameTags[player] = nameTag distanceTags[player] = distTag end local function removeESP(character, player) if boxes[character] then if boxes[character].Connection then boxes[character].Connection:Disconnect() end if boxes[character].Box then boxes[character].Box:Remove() end boxes[character] = nil end if tracers[character] then if tracers[character].Line then tracers[character].Line:Remove() end tracers[character] = nil end if nameTags[player] then nameTags[player]:Remove() nameTags[player] = nil end if distanceTags[player] then distanceTags[player]:Remove() distanceTags[player] = nil end if healthBars[player] then if healthBars[player].Outline then healthBars[player].Outline:Remove() end if healthBars[player].Bar then healthBars[player].Bar:Remove() end healthBars[player] = nil end end local function setupPlayer(player) if player == LocalPlayer then return end player.CharacterAdded:Connect(function(char) removeESP(char, player) task.wait(0.1) char:WaitForChild("HumanoidRootPart", 5) char:WaitForChild("Head", 5) char:WaitForChild("Humanoid", 5) createESP(char, player) end) player.CharacterRemoving:Connect(function(char) removeESP(char, player) end) if player.Character and player.Character:FindFirstChild("HumanoidRootPart") and player.Character:FindFirstChild("Head") and player.Character:FindFirstChild("Humanoid") then createESP(player.Character, player) end end for _, player in pairs(Players:GetPlayers()) do setupPlayer(player) end Players.PlayerAdded:Connect(setupPlayer) Players.PlayerRemoving:Connect(function(player) if player.Character then removeESP(player.Character, player) end end)