AimbotESP
Key RequiredUniversal

AimbotESP

Universal ScriptVPNSVPNS 617 views 167 executesUpdated Dec 16, 2025
Unrated
00
Lua Script•259 lines (9138 chars)
--[[
    ULTIMATE ESP + AIMBOT v7.2 — WITH FOV CIRCLE
    - Boxes, Names, Tools, Health, Distance
    - Highlight ESP
    - Tracers (V)
    - FOV Circle (C)
    - Aimbot (Hold RMB, toggle K)
    - Whitelist GUI (P)
    - Keybind GUI (B)
    - Respawn-proof
]]

-- SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer

-- KEYBINDS
local Keybinds = {
    ToggleTeamESP = Enum.KeyCode.N,
    ToggleNames = Enum.KeyCode.T,
    ToggleBox = Enum.KeyCode.Q,
    ToggleHighlight = Enum.KeyCode.H,
    ToggleTracers = Enum.KeyCode.V,
    ToggleFOV = Enum.KeyCode.C,
    SwitchAimPart = Enum.KeyCode.E,
    ToggleAimbot = Enum.KeyCode.K,
    TeamTarget = Enum.KeyCode.LeftAlt,
    OpenWhitelist = Enum.KeyCode.P,
    OpenKeybinds = Enum.KeyCode.B
}

-- SETTINGS
local Settings = {
    AimPart = "Head",
    AimbotEnabled = false,
    AimbotActive = true,
    TargetTeam = false,

    ESPMode = "Box", -- Box / Highlight / Off
    ShowNames = true,
    ShowTeamESP = true,
    ShowTracers = true,

    FOVEnabled = true,
    FOVRadius = 150,
    FOVColor = Color3.fromRGB(255, 0, 0),
    FOVThickness = 2
}

local Whitelist = {}
local ESP = {}

-- FOV CIRCLE
local FOVCircle = Drawing.new("Circle")
FOVCircle.Radius = Settings.FOVRadius
FOVCircle.Color = Settings.FOVColor
FOVCircle.Thickness = Settings.FOVThickness
FOVCircle.Filled = false
FOVCircle.Visible = Settings.FOVEnabled

-- CREATE ESP
local function CreateESP(plr)
    if plr == LocalPlayer or ESP[plr] then return end

    local d = {
        Box = Drawing.new("Square"),
        Name = Drawing.new("Text"),
        Dist = Drawing.new("Text"),
        Tool = Drawing.new("Text"),
        HBarBG = Drawing.new("Square"),
        HBar = Drawing.new("Square"),
        HText = Drawing.new("Text"),
        Tracer = Drawing.new("Line")
    }

    d.Box.Thickness = 2; d.Box.Filled = false; d.Box.Transparency = 1
    d.Name.Size = 16; d.Name.Center = true; d.Name.Outline = true
    d.Dist.Size = 14; d.Dist.Center = true; d.Dist.Outline = true
    d.Tool.Size = 14; d.Tool.Center = true; d.Tool.Outline = true
    d.HBarBG.Filled = true; d.HBarBG.Color = Color3.new(0,0,0); d.HBarBG.Transparency = 0.5
    d.HBar.Filled = true
    d.HText.Size = 14; d.HText.Center = true; d.HText.Outline = true

    d.Tracer.Thickness = 2
    d.Tracer.Transparency = 1

    local hl = Instance.new("Highlight")
    hl.Parent = Camera
    hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop

    ESP[plr] = {Draw = d, HL = hl}

    RunService.RenderStepped:Connect(function()
        local char = plr.Character
        local hum = char and char:FindFirstChild("Humanoid")
        local root = char and char:FindFirstChild("HumanoidRootPart")
        local head = char and char:FindFirstChild("Head")
        local myRoot = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")

        if not (char and hum and root and hum.Health > 0) then
            for _,v in pairs(d) do v.Visible = false end
            hl.Enabled = false
            return
        end

        local pos, on = Camera:WorldToViewportPoint(root.Position)
        local isTeam = plr.Team == LocalPlayer.Team and LocalPlayer.Team ~= nil
        if not on or (isTeam and not Settings.ShowTeamESP) then
            for _,v in pairs(d) do v.Visible = false end
            hl.Enabled = false
            return
        end

        local color = isTeam and Color3.fromRGB(0,255,255) or Color3.fromRGB(255,0,0)
        local hp = hum.Health / hum.MaxHealth
        local dist = myRoot and math.floor((root.Position - myRoot.Position).Magnitude).."m" or ""
        local tool = char:FindFirstChildWhichIsA("Tool")

        -- Highlight
        hl.Adornee = char
        hl.FillColor = color
        hl.OutlineColor = color
        hl.Enabled = Settings.ESPMode == "Highlight"

        local top = Camera:WorldToViewportPoint(root.Position + Vector3.new(0,3,0))
        local bot = Camera:WorldToViewportPoint(root.Position - Vector3.new(0,4,0))
        local height = math.abs(top.Y - bot.Y)
        local width = height * 0.7

        d.Box.Size = Vector2.new(width, height)
        d.Box.Position = Vector2.new(pos.X - width/2, pos.Y - height/2)
        d.Box.Color = color
        d.Box.Visible = Settings.ESPMode == "Box"

        local headPos = head and Camera:WorldToViewportPoint(head.Position + Vector3.new(0,1,0)) or pos

        d.Name.Text = plr.DisplayName
        d.Name.Position = Vector2.new(headPos.X, headPos.Y - 40)
        d.Name.Visible = Settings.ShowNames

        d.Dist.Text = dist
        d.Dist.Position = Vector2.new(headPos.X, headPos.Y - 25)
        d.Dist.Visible = Settings.ShowNames

        d.Tool.Text = tool and tool.Name or "None"
        d.Tool.Position = Vector2.new(headPos.X, headPos.Y - 10)
        d.Tool.Visible = Settings.ShowNames

        local bx = pos.X - width/2 - 20
        local by = pos.Y - height/2
        d.HBarBG.Position = Vector2.new(bx-2, by-2)
        d.HBarBG.Size = Vector2.new(6, height+4)
        d.HBarBG.Visible = Settings.ShowNames

        d.HBar.Position = Vector2.new(bx, by + height - height*hp)
        d.HBar.Size = Vector2.new(4, height*hp)
        d.HBar.Color = Color3.fromRGB(255*(1-hp),255*hp,0)
        d.HBar.Visible = Settings.ShowNames

        d.HText.Text = math.floor(hum.Health).." HP"
        d.HText.Position = Vector2.new(bx-25, by + height/2 - 8)
        d.HText.Visible = Settings.ShowNames

        d.Tracer.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y)
        d.Tracer.To = Vector2.new(pos.X, pos.Y)
        d.Tracer.Color = color
        d.Tracer.Visible = Settings.ShowTracers
    end)
end

-- PLAYER SETUP
for _,p in pairs(Players:GetPlayers()) do
    if p ~= LocalPlayer then
        if p.Character then CreateESP(p) end
        p.CharacterAdded:Connect(function()
            task.wait(1)
            CreateESP(p)
        end)
    end
end
Players.PlayerAdded:Connect(CreateESP)

-- AIMBOT TARGET
local function GetTarget()
    local best, closest = nil, Settings.FOVRadius
    local mouse = UserInputService:GetMouseLocation()

    for _,p in pairs(Players:GetPlayers()) do
        if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild(Settings.AimPart) then
            local hum = p.Character:FindFirstChild("Humanoid")
            if hum and hum.Health > 0 then
                local teammate = p.Team == LocalPlayer.Team and LocalPlayer.Team ~= nil
                if not teammate or Settings.TargetTeam then
                    local pos, on = Camera:WorldToViewportPoint(p.Character[Settings.AimPart].Position)
                    if on then
                        local dist = (Vector2.new(pos.X, pos.Y) - mouse).Magnitude
                        if dist < closest then
                            closest = dist
                            best = p.Character[Settings.AimPart]
                        end
                    end
                end
            end
        end
    end
    return best
end

-- AIMBOT LOOP
RunService.Heartbeat:Connect(function()
    if Settings.AimbotEnabled and Settings.AimbotActive then
        local t = GetTarget()
        if t then
            Camera.CFrame = CFrame.new(Camera.CFrame.Position, t.Position)
        end
    end
end)

-- INPUT
UserInputService.InputBegan:Connect(function(input, gp)
    if gp then return end

    local k = input.KeyCode

    if k == Keybinds.ToggleTeamESP then Settings.ShowTeamESP = not Settings.ShowTeamESP
    elseif k == Keybinds.ToggleNames then Settings.ShowNames = not Settings.ShowNames
    elseif k == Keybinds.ToggleBox then Settings.ESPMode = Settings.ESPMode == "Box" and "Off" or "Box"
    elseif k == Keybinds.ToggleHighlight then Settings.ESPMode = Settings.ESPMode == "Highlight" and "Off" or "Highlight"
    elseif k == Keybinds.ToggleTracers then Settings.ShowTracers = not Settings.ShowTracers
    elseif k == Keybinds.ToggleFOV then Settings.FOVEnabled = not Settings.FOVEnabled
    elseif k == Keybinds.SwitchAimPart then Settings.AimPart = Settings.AimPart == "Head" and "HumanoidRootPart" or "Head"
    elseif k == Keybinds.ToggleAimbot then Settings.AimbotActive = not Settings.AimbotActive
    end

    if input.UserInputType == Enum.UserInputType.MouseButton2 and Settings.AimbotActive then
        Settings.AimbotEnabled = true
        UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton2 then
        Settings.AimbotEnabled = false
        UserInputService.MouseBehavior = Enum.MouseBehavior.Default
    end
end)

-- UPDATE FOV CIRCLE
RunService.RenderStepped:Connect(function()
    FOVCircle.Position = UserInputService:GetMouseLocation()
    FOVCircle.Radius = Settings.FOVRadius
    FOVCircle.Visible = Settings.FOVEnabled
end)

print("ULTIMATE ESP + AIMBOT v7.2 LOADED")
print("V = Tracers | C = FOV | K = Toggle Aimbot | RMB = Hold Aim")

Features & Information

ESP Aimbot
#esp

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts