--// Developer ESP + Aim Assist --// Place this LocalScript in StarterPlayer > StarterPlayerScripts local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer -- SETTINGS local ESP_ENABLED = true local AIM_ENABLED = false local MAX_AIM_DISTANCE = 500 local AIM_SMOOTHNESS = 0.15 local ESP_COLOR = Color3.fromRGB(255, 255, 255) local TRACER_COLOR = Color3.fromRGB(255, 255, 255) local drawings = {} local function createESP(player) if player == LocalPlayer then return end if drawings[player] then return end local gui = Instance.new("BillboardGui") gui.Name = "DeveloperESP" gui.Size = UDim2.fromOffset(120, 160) gui.StudsOffset = Vector3.new(0, 2.5, 0) gui.AlwaysOnTop = true gui.Parent = game:GetService("CoreGui") local box = Instance.new("Frame") box.Name = "Box" box.BackgroundTransparency = 1 box.BorderSizePixel = 2 box.BorderColor3 = ESP_COLOR box.Size = UDim2.fromScale(1, 1) box.Parent = gui local name = Instance.new("TextLabel") name.BackgroundTransparency = 1 name.Size = UDim2.new(1, 0, 0, 20) name.Position = UDim2.new(0, 0, 0, -22) name.TextColor3 = Color3.new(1, 1, 1) name.TextStrokeTransparency = 0 name.TextScaled = true name.Text = player.Name name.Parent = gui local healthBackground = Instance.new("Frame") healthBackground.BackgroundColor3 = Color3.fromRGB(40, 40, 40) healthBackground.BorderSizePixel = 0 healthBackground.Size = UDim2.new(0, 6, 1, 0) healthBackground.Position = UDim2.new(0, -10, 0, 0) healthBackground.Parent = gui local health = Instance.new("Frame") health.Name = "Health" health.BackgroundColor3 = Color3.fromRGB(0, 255, 0) health.BorderSizePixel = 0 health.AnchorPoint = Vector2.new(0, 1) health.Position = UDim2.fromScale(0, 1) health.Size = UDim2.fromScale(1, 1) health.Parent = healthBackground drawings[player] = { gui = gui, box = box, health = health } end local function removeESP(player) if drawings[player] then drawings[player].gui:Destroy() drawings[player] = nil end end local function getCharacter(player) return player.Character end local function getClosestTarget() local closest = nil local closestDistance = MAX_AIM_DISTANCE local center = Vector2.new( Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2 ) for _, player in ipairs(Players:GetPlayers()) do if player ~= LocalPlayer then local character = getCharacter(player) local humanoid = character and character:FindFirstChildOfClass("Humanoid") local head = character and character:FindFirstChild("Head") if humanoid and head and humanoid.Health > 0 then local screenPosition, visible = Camera:WorldToViewportPoint(head.Position) if visible and screenPosition.Z > 0 then local distance = ( Vector2.new(screenPosition.X, screenPosition.Y) - center ).Magnitude if distance < closestDistance then closestDistance = distance closest = head end end end end end return closest end -- Create ESP for existing players for _, player in ipairs(Players:GetPlayers()) do createESP(player) end Players.PlayerAdded:Connect(createESP) Players.PlayerRemoving:Connect(removeESP) -- Main loop RunService.RenderStepped:Connect(function() for player, data in pairs(drawings) do if not ESP_ENABLED then data.gui.Enabled = false continue end local character = player.Character local humanoid = character and character:FindFirstChildOfClass("Humanoid") local root = character and character:FindFirstChild("HumanoidRootPart") if humanoid and root and humanoid.Health > 0 then data.gui.Adornee = root data.gui.Enabled = true local healthPercent = math.clamp(humanoid.Health / humanoid.MaxHealth, 0, 1) data.health.Size = UDim2.fromScale(1, healthPercent) if healthPercent > 0.5 then data.health.BackgroundColor3 = Color3.fromRGB(0, 255, 0) elseif healthPercent > 0.25 then data.health.BackgroundColor3 = Color3.fromRGB(255, 255, 0) else data.health.BackgroundColor3 = Color3.fromRGB(255, 0, 0) end else data.gui.Enabled = false end end -- Aim assist if AIM_ENABLED then local target = getClosestTarget() if target then local targetPosition = Camera:WorldToViewportPoint(target.Position) local screenCenter = Vector2.new( Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2 ) local targetScreen = Vector2.new( targetPosition.X, targetPosition.Y ) local newPosition = screenCenter:Lerp(targetScreen, AIM_SMOOTHNESS) local ray = Camera:ViewportPointToRay( newPosition.X, newPosition.Y ) Camera.CFrame = CFrame.lookAt( Camera.CFrame.Position, ray.Origin + ray.Direction * 1000 ) end end end) -- Controls UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.KeyCode == Enum.KeyCode.F then ESP_ENABLED = not ESP_ENABLED end if input.KeyCode == Enum.KeyCode.Q then AIM_ENABLED = not AIM_ENABLED end end)