local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer assert(Drawing, "Drawing API not available") local function CreateLine(color, thickness) local l = Drawing.new("Line") l.Color = color or Color3.new(1,1,1) l.Thickness = thickness or 2 l.Visible = false return l end local function CreateText(text, color, size) local t = Drawing.new("Text") t.Text = text or "" t.Color = color or Color3.new(1,1,1) t.Size = size or 16 t.Center = true t.Outline = true t.Visible = false return t end local function CreateSquare(color, thickness) local s = Drawing.new("Square") s.Color = color or Color3.new(1,1,1) s.Thickness = thickness or 2 s.Filled = false s.Visible = false return s end local ESPObjects = {} local AimEnabled = true local AimKey = Enum.UserInputType.MouseButton2 local AimLockPart = "Head" local LockedTarget = nil local Running = false local ESPColors = { Box = Color3.fromRGB(255,255,255), Name = Color3.fromRGB(255,255,255), Health = Color3.fromRGB(255,255,255), Skeleton = Color3.fromRGB(255,255,255) } local function GetClosestPlayer(FOV) if LockedTarget and LockedTarget.Character and LockedTarget.Character:FindFirstChild(AimLockPart) then local hum = LockedTarget.Character:FindFirstChild("Humanoid") if hum and hum.Health > 0 then return LockedTarget end end local closest = nil local shortestDist = FOV local mousePos = UserInputService:GetMouseLocation() for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild(AimLockPart) then local pos = Camera:WorldToViewportPoint(plr.Character[AimLockPart].Position) local dist = (Vector2.new(pos.X,pos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude if dist < shortestDist then closest = plr shortestDist = dist end end end return closest end local function DrawESP(plr) repeat wait() until plr.Character and plr.Character:FindFirstChild("Humanoid") and plr.Character:FindFirstChild("HumanoidRootPart") if ESPObjects[plr.Name] then return end local data = { box = CreateSquare(ESPColors.Box, 2), name = CreateText(plr.Name, ESPColors.Name, 16), health = CreateLine(ESPColors.Health, 2) } ESPObjects[plr.Name] = data RunService.RenderStepped:Connect(function() local char = plr.Character local hum = char and char:FindFirstChild("Humanoid") local hrp = char and char:FindFirstChild("HumanoidRootPart") if not char or not hum or hum.Health <= 0 or not hrp then data.box.Visible = false data.name.Visible = false data.health.Visible = false return end local parts = {Head=char:FindFirstChild("Head"), Torso=char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso")} local minX, minY, maxX, maxY = math.huge, math.huge, -math.huge, -math.huge local anyVisible = false for key, part in pairs(parts) do if part then local pos, vis = Camera:WorldToViewportPoint(part.Position) anyVisible = anyVisible or vis 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 if anyVisible then local width = maxX - minX local height = maxY - minY local centerX = (minX + maxX)/2 local centerY = (minY + maxY)/2 data.box.Position = Vector2.new(minX, minY) data.box.Size = Vector2.new(math.max(width,6), math.max(height,6)) data.box.Visible = true data.name.Position = Vector2.new(centerX, minY - 14) data.name.Visible = true local healthRatio = math.clamp(hum.Health / (hum.MaxHealth or 100), 0,1) data.health.From = Vector2.new(minX - 8, maxY) data.health.To = Vector2.new(minX - 8, maxY - (height * healthRatio)) data.health.Visible = true else data.box.Visible = false data.name.Visible = false data.health.Visible = false end 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) 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) RunService.RenderStepped:Connect(function() if Running and AimEnabled then LockedTarget = GetClosestPlayer(250) if LockedTarget and LockedTarget.Character and LockedTarget.Character:FindFirstChild(AimLockPart) then local targetPos = LockedTarget.Character[AimLockPart].Position local screenPos, _ = Camera:WorldToViewportPoint(targetPos) local mousePos = UserInputService:GetMouseLocation() local dx = screenPos.X - mousePos.X local dy = screenPos.Y - mousePos.Y local speedFactor = 1 mousemoverel(dx * speedFactor, dy * speedFactor) end end end) local LocalPlayer = Players.LocalPlayer local UserInputService = game:GetService("UserInputService") local TeleportKey = Enum.KeyCode.E local BehindOffset = -5 local function GetClosestEnemy(maxDistance) local character = LocalPlayer.Character if not character or not character:FindFirstChild("HumanoidRootPart") then return end local root = character.HumanoidRootPart local closest, closestDist = nil, maxDistance for _, plr in pairs(Players:GetPlayers()) do if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then local enemyRoot = plr.Character.HumanoidRootPart local dist = (enemyRoot.Position - root.Position).Magnitude if dist < closestDist then closest = enemyRoot closestDist = dist end end end return closest end local function TeleportBehindTarget() local character = LocalPlayer.Character if not character or not character:FindFirstChild("HumanoidRootPart") then return end local target = GetClosestEnemy(999) if target then local enemyLook = target.CFrame.LookVector local behindPosition = target.Position + (enemyLook * BehindOffset) character.HumanoidRootPart.CFrame = CFrame.new(behindPosition, target.Position) end end UserInputService.InputBegan:Connect(function(input, gpe) if not gpe and input.KeyCode == TeleportKey then TeleportBehindTarget() end end)