local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local AimEnabled = true local AimSensitivity = 1.5 local AimLockPart = "Head" local AimKey = Enum.UserInputType.MouseButton2 local FOV = 250 local FOVColor = Color3.fromRGB(255, 255, 255) local ESPColor = Color3.fromRGB(255, 255, 255) local ESPThickness = 4 local Running = false local LockedTarget = nil local function NewLine(thickness, color) local line = Drawing.new("Line") line.Visible = false line.Thickness = thickness line.Color = color line.Transparency = 1 return line end local function NewQuad(thickness, color) local quad = Drawing.new("Quad") quad.Visible = false quad.Thickness = thickness quad.Color = color quad.Transparency = 1 return quad end local function NewText(text, color) local t = Drawing.new("Text") t.Visible = false t.Color = color t.Size = 16 t.Center = true t.Outline = true t.Font = 2 t.Text = text return t end local function NewCircle(radius, color) local c = Drawing.new("Circle") c.Visible = true c.Color = color c.Radius = radius c.Thickness = 1.5 c.Filled = false return c end local FOVCircle = NewCircle(FOV, FOVColor) FOVCircle.Position = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2) local function DrawESP(plr) repeat wait() until plr.Character and plr.Character:FindFirstChild("Humanoid") and plr.Character:FindFirstChild("HumanoidRootPart") local skeleton = { Head_Torso = NewLine(ESPThickness, ESPColor), Torso_Legs = NewLine(ESPThickness, ESPColor), LeftArm = NewLine(ESPThickness, ESPColor), RightArm = NewLine(ESPThickness, ESPColor), LeftLeg = NewLine(ESPThickness, ESPColor), RightLeg = NewLine(ESPThickness, ESPColor) } local box = NewQuad(ESPThickness, ESPColor) local nameTag = NewText(plr.Name, ESPColor) RunService.RenderStepped:Connect(function() local char = plr.Character local hum = char and char:FindFirstChild("Humanoid") local HRP = char and char:FindFirstChild("HumanoidRootPart") if char and hum and hum.Health > 0 and HRP then local onScreen = false local function GetPos(part) local pos, vis = Camera:WorldToViewportPoint(part.Position) onScreen = onScreen or vis return pos end local head = char:FindFirstChild("Head") local torso = char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso") local leftArm = char:FindFirstChild("LeftUpperArm") or char:FindFirstChild("Left Arm") local rightArm = char:FindFirstChild("RightUpperArm") or char:FindFirstChild("Right Arm") local leftLeg = char:FindFirstChild("LeftUpperLeg") or char:FindFirstChild("Left Leg") local rightLeg = char:FindFirstChild("RightUpperLeg") or char:FindFirstChild("Right Leg") local leftFoot = char:FindFirstChild("LeftFoot") or char:FindFirstChild("Left Leg") local rightFoot = char:FindFirstChild("RightFoot") or char:FindFirstChild("Right Leg") if head and torso then skeleton.Head_Torso.From = Vector2.new(GetPos(head).X, GetPos(head).Y) skeleton.Head_Torso.To = Vector2.new(GetPos(torso).X, GetPos(torso).Y) end if torso and leftLeg then skeleton.Torso_Legs.From = Vector2.new(GetPos(torso).X, GetPos(torso).Y) skeleton.Torso_Legs.To = Vector2.new(GetPos(leftLeg).X, GetPos(leftLeg).Y) end if torso and leftArm then skeleton.LeftArm.From = Vector2.new(GetPos(torso).X, GetPos(torso).Y) skeleton.LeftArm.To = Vector2.new(GetPos(leftArm).X, GetPos(leftArm).Y) end if torso and rightArm then skeleton.RightArm.From = Vector2.new(GetPos(torso).X, GetPos(torso).Y) skeleton.RightArm.To = Vector2.new(GetPos(rightArm).X, GetPos(rightArm).Y) end if torso and leftFoot then skeleton.LeftLeg.From = Vector2.new(GetPos(torso).X, GetPos(torso).Y) skeleton.LeftLeg.To = Vector2.new(GetPos(leftFoot).X, GetPos(leftFoot).Y) end if torso and rightFoot then skeleton.RightLeg.From = Vector2.new(GetPos(torso).X, GetPos(torso).Y) skeleton.RightLeg.To = Vector2.new(GetPos(rightFoot).X, GetPos(rightFoot).Y) end local minX, minY, maxX, maxY = math.huge, math.huge, -math.huge, -math.huge for _, part in pairs(char:GetChildren()) do if part:IsA("BasePart") then local pos, vis = Camera:WorldToViewportPoint(part.Position) if vis then onScreen = true minX = math.min(minX, pos.X) minY = math.min(minY, pos.Y) maxX = math.max(maxX, pos.X) maxY = math.max(maxY, pos.Y) end end end if minX ~= math.huge and onScreen then local centerX = (minX + maxX) / 2 local centerY = (minY + maxY) / 2 local width = (maxX - minX) local height = (maxY - minY) box.PointA = Vector2.new(centerX - width/2, centerY - height/2) box.PointB = Vector2.new(centerX + width/2, centerY - height/2) box.PointC = Vector2.new(centerX + width/2, centerY + height/2) box.PointD = Vector2.new(centerX - width/2, centerY + height/2) box.Visible = true nameTag.Position = Vector2.new(centerX, centerY - height/2 - 16) nameTag.Visible = true for _, v in pairs(skeleton) do v.Visible = true end else box.Visible = false nameTag.Visible = false for _, v in pairs(skeleton) do v.Visible = false end end else box.Visible = false nameTag.Visible = false for _, v in pairs(skeleton) do v.Visible = false end end end) end local function GetClosestPlayer() if LockedTarget and LockedTarget.Character and LockedTarget.Character:FindFirstChild("Humanoid") and LockedTarget.Character.Humanoid.Health > 0 then return LockedTarget end local closest = nil local shortestDistance = FOV local mousePos = UserInputService:GetMouseLocation() for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("Humanoid") and plr.Character.Humanoid.Health > 0 and plr.Character:FindFirstChild(AimLockPart) then local targetPart = plr.Character[AimLockPart] local pos = Camera:WorldToViewportPoint(targetPart.Position) local distance = (Vector2.new(pos.X, pos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude if distance < shortestDistance then shortestDistance = distance closest = plr end end end return closest end RunService.RenderStepped:Connect(function() FOVCircle.Position = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2) if Running and AimEnabled then LockedTarget = GetClosestPlayer() if LockedTarget and LockedTarget.Character and LockedTarget.Character:FindFirstChild(AimLockPart) then local targetPos = Camera:WorldToViewportPoint(LockedTarget.Character[AimLockPart].Position) local mousePos = UserInputService:GetMouseLocation() local deltaX = (targetPos.X - mousePos.X) / AimSensitivity local deltaY = (targetPos.Y - mousePos.Y) / AimSensitivity mousemoverel(deltaX, deltaY) end end end) UserInputService.InputBegan:Connect(function(input) if input.UserInputType == AimKey then Running = true end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == AimKey then Running = false LockedTarget = nil end end) for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer then DrawESP(plr) end end Players.PlayerAdded:Connect(function(plr) if plr ~= LocalPlayer then DrawESP(plr) end end)