Aimbot hub keyless universal
Key RequiredUniversal

Aimbot hub keyless universal

Universal Scriptanimatershubanimatershub 1.4K views 9.5K executesUpdated Sep 11, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•387 lines (12918 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local Camera = Workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer

local Settings = {
    Aimlock = { Enabled = false, FOV = 90, Smooth = 0.3 },
    Silent = { Enabled = false, HitPart = "Head", FOV = 200 },
    ESP = { Enabled = false, Box = false, Name = false, Tracer = false, TeamCheck = false }
}

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "AimbotHub"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")

local Main = Instance.new("Frame")
Main.Size = UDim2.new(0, 400, 0, 450)
Main.Position = UDim2.new(0.5, -200, 0.5, -225)
Main.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
Main.BorderSizePixel = 0
Main.Active = true
Main.Draggable = true
Main.Parent = ScreenGui

local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1, 0, 0, 35)
TitleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
TitleBar.BorderSizePixel = 0
TitleBar.Parent = Main

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -40, 1, 0)
Title.Position = UDim2.new(0, 10, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "Aimbot Hub"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.Font = Enum.Font.SourceSansBold
Title.TextSize = 18
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = TitleBar

local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 25, 0, 25)
CloseBtn.Position = UDim2.new(1, -30, 0.5, -12.5)
CloseBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
CloseBtn.Text = "X"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.Font = Enum.Font.SourceSansBold
CloseBtn.TextSize = 14
CloseBtn.BorderSizePixel = 0
CloseBtn.Parent = TitleBar

local Tabs = {}
local function makeTab(name, x)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.33, -2, 0, 30)
    btn.Position = UDim2.new(x, 1, 0, 37)
    btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
    btn.Text = name
    btn.TextColor3 = Color3.fromRGB(200, 200, 200)
    btn.Font = Enum.Font.SourceSans
    btn.TextSize = 16
    btn.BorderSizePixel = 0
    btn.Parent = Main
    table.insert(Tabs, btn)
    return btn
end

local Tab1 = makeTab("Aimlock", 0)
local Tab2 = makeTab("Silent Aim", 0.333)
local Tab3 = makeTab("ESP", 0.666)

local Content = Instance.new("Frame")
Content.Size = UDim2.new(1, 0, 1, -72)
Content.Position = UDim2.new(0, 0, 0, 72)
Content.BackgroundColor3 = Color3.fromRGB(18, 18, 18)
Content.BorderSizePixel = 0
Content.Parent = Main

local function addToggle(y, name, callback)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, -10, 0, 30)
    frame.Position = UDim2.new(0, 5, 0, y)
    frame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
    frame.BorderSizePixel = 0
    frame.Parent = Content

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0, 250, 1, 0)
    label.Position = UDim2.new(0, 10, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = name
    label.TextColor3 = Color3.fromRGB(220, 220, 220)
    label.Font = Enum.Font.SourceSans
    label.TextSize = 16
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = frame

    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 60, 0, 22)
    btn.Position = UDim2.new(1, -70, 0.5, -11)
    btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    btn.Text = "OFF"
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.Font = Enum.Font.SourceSans
    btn.TextSize = 14
    btn.BorderSizePixel = 0
    btn.Parent = frame

    local state = false
    btn.MouseButton1Click:Connect(function()
        state = not state
        if state then
            btn.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
            btn.Text = "ON"
        else
            btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
            btn.Text = "OFF"
        end
        if callback then callback(state) end
    end)
end

local function addInput(y, name, default, callback)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, -10, 0, 30)
    frame.Position = UDim2.new(0, 5, 0, y)
    frame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
    frame.BorderSizePixel = 0
    frame.Parent = Content

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0, 200, 1, 0)
    label.Position = UDim2.new(0, 10, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = name
    label.TextColor3 = Color3.fromRGB(220, 220, 220)
    label.Font = Enum.Font.SourceSans
    label.TextSize = 16
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = frame

    local box = Instance.new("TextBox")
    box.Size = UDim2.new(0, 70, 0, 22)
    box.Position = UDim2.new(1, -80, 0.5, -11)
    box.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    box.Text = tostring(default)
    box.TextColor3 = Color3.fromRGB(255, 255, 255)
    box.Font = Enum.Font.SourceSans
    box.TextSize = 14
    box.ClearTextOnFocus = false
    box.Parent = frame

    box.FocusLost:Connect(function()
        local num = tonumber(box.Text)
        if num then
            if callback then callback(num) end
        end
    end)
end

local function addInfo(y, text)
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(1, -10, 0, 30)
    label.Position = UDim2.new(0, 5, 0, y)
    label.BackgroundTransparency = 1
    label.Text = text
    label.TextColor3 = Color3.fromRGB(150, 150, 150)
    label.Font = Enum.Font.SourceSans
    label.TextSize = 15
    label.Parent = Content
end

local function clearContent()
    for _, child in pairs(Content:GetChildren()) do
        child:Destroy()
    end
end

local function switchTab(id)
    for i, btn in pairs(Tabs) do
        if i == id then
            btn.BackgroundColor3 = Color3.fromRGB(70, 70, 70)
        else
            btn.BackgroundColor3 = Color3.fromRGB(45, 45, 45)
        end
    end

    clearContent()

    if id == 1 then
        addToggle(5, "Aimlock Enabled", function(s) Settings.Aimlock.Enabled = s end)
        addInput(40, "FOV Value", Settings.Aimlock.FOV, function(v) Settings.Aimlock.FOV = math.clamp(v, 10, 360) end)
        addInput(75, "Smoothness (0-1)", Settings.Aimlock.Smooth, function(v) Settings.Aimlock.Smooth = math.clamp(v, 0, 1) end)
        addInfo(110, "Hold right-click to aimlock")
        addInfo(145, "RightShift toggles UI on/off")
    elseif id == 2 then
        addToggle(5, "Silent Aim Enabled", function(s) Settings.Silent.Enabled = s end)
        addInput(40, "Silent FOV", Settings.Silent.FOV, function(v) Settings.Silent.FOV = math.clamp(v, 10, 360) end)
        addInfo(75, "Snaps on left-click")
        addInfo(110, "RightShift toggles UI on/off")
    elseif id == 3 then
        addToggle(5, "ESP Enabled", function(s) Settings.ESP.Enabled = s end)
        addToggle(40, "Box", function(s) Settings.ESP.Box = s end)
        addToggle(75, "Name", function(s) Settings.ESP.Name = s end)
        addToggle(110, "Tracer", function(s) Settings.ESP.Tracer = s end)
        addToggle(145, "Team Check", function(s) Settings.ESP.TeamCheck = s end)
        addInfo(180, "RightShift toggles UI on/off")
    end
end

Tab1.MouseButton1Click:Connect(function() switchTab(1) end)
Tab2.MouseButton1Click:Connect(function() switchTab(2) end)
Tab3.MouseButton1Click:Connect(function() switchTab(3) end)
switchTab(1)

CloseBtn.MouseButton1Click:Connect(function()
    ScreenGui:Destroy()
end)

UserInputService.InputBegan:Connect(function(input, gp)
    if gp then return end
    if input.KeyCode == Enum.KeyCode.RightShift then
        Main.Visible = not Main.Visible
    end
end)

local FovCircle = Drawing.new("Circle")
FovCircle.Thickness = 1
FovCircle.Color = Color3.fromRGB(255, 255, 255)
FovCircle.Filled = false
FovCircle.Visible = false

RunService.RenderStepped:Connect(function()
    FovCircle.Position = UserInputService:GetMouseLocation()
    FovCircle.Radius = Settings.Aimlock.FOV
    FovCircle.Visible = Settings.Aimlock.Enabled
end)

local function getClosestPlayer(fov, useSilent)
    local closest, closestDist = nil, fov
    local mousePos = UserInputService:GetMouseLocation()

    for _, player in pairs(Players:GetPlayers()) do
        if player == LocalPlayer then continue end

        local char = player.Character
        local targetPart = nil

        if useSilent then
            targetPart = char and char:FindFirstChild(Settings.Silent.HitPart) or (char and char:FindFirstChild("Head"))
        else
            targetPart = char and char:FindFirstChild("Head")
        end

        if targetPart then
            if Settings.ESP.TeamCheck and player.Team == LocalPlayer.Team then continue end

            local screenPos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
            if onScreen then
                local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude
                if dist < closestDist then
                    closestDist = dist
                    closest = targetPart
                end
            end
        end
    end

    return closest
end

RunService.RenderStepped:Connect(function()
    if not Settings.Aimlock.Enabled then return end
    if not UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then return end

    local target = getClosestPlayer(Settings.Aimlock.FOV, false)
    if target then
        Camera.CFrame = Camera.CFrame:Lerp(
            CFrame.lookAt(Camera.CFrame.Position, target.Position),
            Settings.Aimlock.Smooth
        )
    end
end)

UserInputService.InputBegan:Connect(function(input, gp)
    if gp then return end
    if input.UserInputType == Enum.UserInputType.MouseButton1 and Settings.Silent.Enabled then
        local target = getClosestPlayer(Settings.Silent.FOV, true)
        if target then
            Camera.CFrame = CFrame.lookAt(Camera.CFrame.Position, target.Position)
        end
    end
end)

local ESPObjects = {}

local function createESP(player)
    if player == LocalPlayer then return end
    if ESPObjects[player] then return end

    local objects = {}
    local box = Drawing.new("Square")
    box.Thickness = 1
    box.Filled = false
    box.Color = Color3.fromRGB(255, 0, 0)
    box.Visible = false
    objects.Box = box

    local line = Drawing.new("Line")
    line.Thickness = 1
    line.Color = Color3.fromRGB(255, 255, 255)
    line.Visible = false
    objects.Line = line

    local text = Drawing.new("Text")
    text.Center = true
    text.Outline = true
    text.Size = 14
    text.Color = Color3.fromRGB(255, 255, 255)
    text.Visible = false
    objects.Text = text

    ESPObjects[player] = objects
end

local function removeESP(player)
    if ESPObjects[player] then
        for _, obj in pairs(ESPObjects[player]) do
            obj:Remove()
        end
        ESPObjects[player] = nil
    end
end

RunService.RenderStepped:Connect(function()
    for player, objects in pairs(ESPObjects) do
        local char = player.Character
        local root = char and char:FindFirstChild("HumanoidRootPart")
        local head = char and char:FindFirstChild("Head")
        local hum = char and char:FindFirstChild("Humanoid")

        objects.Box.Visible = false
        objects.Line.Visible = false
        objects.Text.Visible = false

        if root and head and hum and hum.Health > 0 then
            if not (Settings.ESP.TeamCheck and player.Team == LocalPlayer.Team) then
                local headPos, onScreen = Camera:WorldToViewportPoint(head.Position)
                local rootPos = Camera:WorldToViewportPoint(root.Position)

                if onScreen then
                    local height = math.abs(headPos.Y - rootPos.Y)
                    local width = height * 0.7

                    if Settings.ESP.Box then
                        objects.Box.Size = Vector2.new(width, height)
                        objects.Box.Position = Vector2.new(rootPos.X - width/2, rootPos.Y - height)
                        objects.Box.Visible = true
                    end

                    if Settings.ESP.Tracer then
                        objects.Line.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y)
                        objects.Line.To = Vector2.new(rootPos.X, rootPos.Y)
                        objects.Line.Visible = true
                    end

                    if Settings.ESP.Name then
                        objects.Text.Position = Vector2.new(headPos.X, headPos.Y - 25)
                        objects.Text.Text = player.Name
                        objects.Text.Visible = true
                    end
                end
            end
        end
    end
end)

for _, player in pairs(Players:GetPlayers()) do
    createESP(player)
end

Players.PlayerAdded:Connect(createESP)
Players.PlayerRemoving:Connect(removeESP)

Features & Information

aimbot esp slient aim
#aimbot#esp#silient aim#universal

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts