AimbotSm Keyless
Key RequiredUniversal

AimbotSm Keyless

Universal ScriptOpdontcareOpdontcare 926 views 1.2K executesUpdated Mar 17, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•240 lines (13936 chars)
local CoreGui = game:GetService("CoreGui")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Teams = game:GetService("Teams")
local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer

if CoreGui:FindFirstChild("AimBotSmooth") then CoreGui.AimBotSmooth:Destroy() end

local Settings = {
    Aimlock = false,
    LockTeam = false,
    Highlights = false,
    Tracers = false,
    PlayerInfo = false,
    LockDist = 500,
    WalkSpeed = 16,
    Smoothness = 0.5,
    WhitelistedTeams = {}, 
    WhitelistedPlayers = {},
    UI_Visible = true,
    Theme = {
        BG = Color3.fromRGB(10, 10, 15),
        Accent = Color3.fromRGB(0, 255, 200),
        Text = Color3.fromRGB(255, 255, 255),
        DarkText = Color3.fromRGB(150, 150, 150),
        ButtonOff = Color3.fromRGB(25, 25, 30),
        Safe = Color3.fromRGB(0, 180, 80),
        TeamBlue = Color3.fromRGB(60, 120, 255)
    }
}

local DrawingLines = {}
local CameraDragging = false

UserInputService.InputBegan:Connect(function(input, gp)
    if not gp and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton2) then
        CameraDragging = true
    end
end)
UserInputService.InputEnded:Connect(function(input, gp)
    if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton2 then
        CameraDragging = false
    end
end)

local function GetClosestPlayer()
    local target, closestDist = nil, math.huge
    local screenCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
    
    for _, v in pairs(Players:GetPlayers()) do
        if v ~= LocalPlayer and v.Character and v.Character:FindFirstChild("HumanoidRootPart") and v.Character:FindFirstChild("Humanoid") and v.Character.Humanoid.Health > 0 then
            local dist = (LocalPlayer.Character.HumanoidRootPart.Position - v.Character.HumanoidRootPart.Position).Magnitude
            if dist > Settings.LockDist then continue end
            if not Settings.LockTeam and v.Team == LocalPlayer.Team then continue end
            if v.Team and Settings.WhitelistedTeams[v.Team.Name] then continue end
            if Settings.WhitelistedPlayers[v.Name] then continue end
            
            local pos, onScreen = Camera:WorldToViewportPoint(v.Character.HumanoidRootPart.Position)
            if onScreen then
                local screenDist = (Vector2.new(pos.X, pos.Y) - screenCenter).Magnitude
                if screenDist < closestDist then closestDist = screenDist; target = v.Character end
            end
        end
    end
    return target
end

local Gui = Instance.new("ScreenGui", CoreGui)
Gui.Name = "AimBotSmooth"

local function EnableDrag(obj)
    local dragStart, startPos, dragging
    obj.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true; dragStart = input.Position; startPos = obj.Position
            input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end)
        end
    end)
    UserInputService.InputChanged:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            local delta = input.Position - dragStart
            obj.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
        end
    end)
end

-- Floating Toggle
local MiniBtn = Instance.new("TextButton", Gui)
MiniBtn.Size = UDim2.new(0, 55, 0, 55); MiniBtn.Position = UDim2.new(0, 50, 0, 150)
MiniBtn.BackgroundColor3 = Settings.Theme.Accent; MiniBtn.Text = "AS"; MiniBtn.Font = Enum.Font.GothamBold; MiniBtn.TextSize = 22; MiniBtn.TextColor3 = Color3.fromRGB(0,0,0)
Instance.new("UICorner", MiniBtn).CornerRadius = UDim.new(1, 0)
EnableDrag(MiniBtn)

-- Main Frame
local Main = Instance.new("Frame", Gui)
Main.Size = UDim2.new(0, 310, 0, 480); Main.Position = UDim2.new(0.5, -155, 0.5, -240)
Main.BackgroundColor3 = Settings.Theme.BG; Main.BorderSizePixel = 0; Main.ClipsDescendants = true
Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 12)
EnableDrag(Main)

MiniBtn.MouseButton1Click:Connect(function() Settings.UI_Visible = not Settings.UI_Visible; Main.Visible = Settings.UI_Visible end)

local Title = Instance.new("TextLabel", Main)
Title.Size = UDim2.new(1, 0, 0, 45); Title.Text = "AimBotSmooth PRO"; Title.TextColor3 = Settings.Theme.Accent; Title.Font = Enum.Font.GothamBold; Title.TextSize = 18; Title.BackgroundColor3 = Color3.fromRGB(20, 20, 25)

local Scroll = Instance.new("ScrollingFrame", Main)
Scroll.Size = UDim2.new(1, -20, 1, -60); Scroll.Position = UDim2.new(0, 10, 0, 55); Scroll.BackgroundTransparency = 1; Scroll.ScrollBarThickness = 0
local List = Instance.new("UIListLayout", Scroll); List.Padding = UDim.new(0, 8)

-- [[ LIST WINDOW GENERATOR ]] --
local function CreateSubWindow(title, posOffset)
    local frame = Instance.new("Frame", Gui)
    frame.Size = UDim2.new(0, 240, 0, 320); frame.Position = UDim2.new(0.5, posOffset, 0.5, -160)
    frame.BackgroundColor3 = Settings.Theme.BG; frame.Visible = false; frame.BorderSizePixel = 0
    Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)
    EnableDrag(frame)
    
    local tLabel = Instance.new("TextLabel", frame)
    tLabel.Size = UDim2.new(1, 0, 0, 35); tLabel.Text = title; tLabel.TextColor3 = Settings.Theme.Accent; tLabel.Font = Enum.Font.GothamBold; tLabel.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
    Instance.new("UICorner", tLabel)
    
    local sc = Instance.new("ScrollingFrame", frame)
    sc.Size = UDim2.new(1, -15, 1, -45); sc.Position = UDim2.new(0, 10, 0, 40); sc.BackgroundTransparency = 1; sc.ScrollBarThickness = 2
    local ly = Instance.new("UIListLayout", sc); ly.Padding = UDim.new(0, 5)
    
    return frame, sc
end

local PListFrame, PListScroll = CreateSubWindow("PLAYER WHITELIST", 170)
local TListFrame, TListScroll = CreateSubWindow("TEAM WHITELIST", -420)

-- [[ REFRESH LOGIC ]] --
local function RefreshPlayerList()
    for _, c in pairs(PListScroll:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end
    for _, p in pairs(Players:GetPlayers()) do
        if p ~= LocalPlayer then
            local btn = Instance.new("TextButton", PListScroll)
            btn.Size = UDim2.new(1, -5, 0, 30); btn.BackgroundColor3 = Settings.WhitelistedPlayers[p.Name] and Settings.Theme.Safe or Settings.Theme.ButtonOff
            btn.Text = "  " .. p.Name; btn.TextColor3 = Color3.new(1,1,1); btn.Font = Enum.Font.GothamBold; btn.TextSize = 12; btn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", btn)
            btn.MouseButton1Click:Connect(function() Settings.WhitelistedPlayers[p.Name] = not Settings.WhitelistedPlayers[p.Name]; RefreshPlayerList() end)
        end
    end
end

local function RefreshTeamList()
    for _, c in pairs(TListScroll:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end
    for _, t in pairs(Teams:GetTeams()) do
        local btn = Instance.new("TextButton", TListScroll)
        btn.Size = UDim2.new(1, -5, 0, 30); btn.BackgroundColor3 = Settings.WhitelistedTeams[t.Name] and Settings.Theme.TeamBlue or Settings.Theme.ButtonOff
        btn.Text = "  " .. t.Name; btn.TextColor3 = Color3.new(1,1,1); btn.Font = Enum.Font.GothamBold; btn.TextSize = 12; btn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", btn)
        btn.MouseButton1Click:Connect(function() Settings.WhitelistedTeams[t.Name] = not Settings.WhitelistedTeams[t.Name]; RefreshTeamList() end)
    end
end

-- [[ UI ELEMENTS ]] --
local function CreateToggle(name, key)
    local btn = Instance.new("TextButton", Scroll); btn.Size = UDim2.new(1, 0, 0, 40); btn.BackgroundColor3 = Settings.Theme.ButtonOff; btn.Text = "  " .. name .. " [OFF]"; btn.TextColor3 = Settings.Theme.DarkText; btn.Font = Enum.Font.GothamBold; btn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", btn)
    btn.MouseButton1Click:Connect(function() Settings[key] = not Settings[key]; btn.TextColor3 = Settings[key] and Settings.Theme.BG or Settings.Theme.DarkText; btn.BackgroundColor3 = Settings[key] and Settings.Theme.Accent or Settings.Theme.ButtonOff; btn.Text = "  " .. name .. (Settings[key] and " [ON]" or " [OFF]") end)
end

local function CreateInput(name, key, default)
    local frame = Instance.new("Frame", Scroll); frame.Size = UDim2.new(1, 0, 0, 40); frame.BackgroundTransparency = 1
    local label = Instance.new("TextLabel", frame); label.Size = UDim2.new(0.5, 0, 1, 0); label.Text = "  " .. name; label.TextColor3 = Settings.Theme.Text; label.Font = Enum.Font.GothamBold; label.TextXAlignment = Enum.TextXAlignment.Left; label.BackgroundTransparency = 1
    local input = Instance.new("TextBox", frame); input.Size = UDim2.new(0.45, 0, 0.8, 0); input.Position = UDim2.new(0.5, 0, 0.1, 0); input.BackgroundColor3 = Settings.Theme.ButtonOff; input.Text = tostring(default); input.TextColor3 = Settings.Theme.Accent; input.Font = Enum.Font.GothamBold; Instance.new("UICorner", input)
    input.FocusLost:Connect(function() Settings[key] = tonumber(input.Text) or default end)
end

CreateToggle("Aimlock Head", "Aimlock")
CreateToggle("Lock Your Team", "LockTeam")

local TeamBtn = Instance.new("TextButton", Scroll)
TeamBtn.Size = UDim2.new(1, 0, 0, 40); TeamBtn.BackgroundColor3 = Color3.fromRGB(40, 70, 120); TeamBtn.Text = "  MANAGE TEAM WHITELIST"; TeamBtn.TextColor3 = Color3.new(1,1,1); TeamBtn.Font = Enum.Font.GothamBold; TeamBtn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", TeamBtn)
TeamBtn.MouseButton1Click:Connect(function() TListFrame.Visible = not TListFrame.Visible; if TListFrame.Visible then RefreshTeamList() end end)

local PlayBtn = Instance.new("TextButton", Scroll)
PlayBtn.Size = UDim2.new(1, 0, 0, 40); PlayBtn.BackgroundColor3 = Color3.fromRGB(80, 40, 120); PlayBtn.Text = "  MANAGE PLAYER WHITELIST"; PlayBtn.TextColor3 = Color3.new(1,1,1); PlayBtn.Font = Enum.Font.GothamBold; PlayBtn.TextXAlignment = Enum.TextXAlignment.Left; Instance.new("UICorner", PlayBtn)
PlayBtn.MouseButton1Click:Connect(function() PListFrame.Visible = not PListFrame.Visible; if PListFrame.Visible then RefreshPlayerList() end end)

CreateToggle("Highlights (Chams)", "Highlights")
CreateToggle("Body Tracers (Line)", "Tracers")
CreateToggle("Player Info (ESP)", "PlayerInfo")
CreateInput("Lock Distance", "LockDist", 500)
CreateInput("Smooth Aim (0.1-1)", "Smoothness", 0.5)
CreateInput("WalkSpeed Boost", "WalkSpeed", 16)

-- [[ MAIN LOOP ]] --
RunService.RenderStepped:Connect(function()
    if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then
        LocalPlayer.Character.Humanoid.WalkSpeed = Settings.WalkSpeed
    end
    
    if Settings.Aimlock and not CameraDragging then
        local t = GetClosestPlayer()
        if t and t:FindFirstChild("Head") then
            Camera.CFrame = Camera.CFrame:Lerp(CFrame.lookAt(Camera.CFrame.Position, t.Head.Position), Settings.Smoothness)
        end
    end
    
    for _, l in pairs(DrawingLines) do l:Remove() end; DrawingLines = {}
    
    for _, v in pairs(Players:GetPlayers()) do
        if v ~= LocalPlayer and v.Character and v.Character:FindFirstChild("HumanoidRootPart") and v.Character:FindFirstChild("Humanoid") then
            local char = v.Character
            local isW = Settings.WhitelistedPlayers[v.Name] or (v.Team and Settings.WhitelistedTeams[v.Team.Name])
            local color = isW and Settings.Theme.Safe or v.TeamColor.Color
            
            -- Highlights (AlwaysOnTop = ทะลุสิ่งกีดขวาง)
            local hl = char:FindFirstChild("EliteHighlight") or Instance.new("Highlight", char)
            hl.Name = "EliteHighlight"; hl.FillColor = color; hl.Enabled = Settings.Highlights
            hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
            
            -- Fixed ESP Info
            local info = char:FindFirstChild("EliteInfo")
            if Settings.PlayerInfo and char.Humanoid.Health > 0 then
                if not info then
                    info = Instance.new("BillboardGui", char)
                    info.Name = "EliteInfo"; info.Size = UDim2.new(0, 100, 0, 50); info.Adornee = char:FindFirstChild("Head")
                    info.AlwaysOnTop = true; info.ExtentsOffset = Vector3.new(0, 3, 0)
                    local txt = Instance.new("TextLabel", info)
                    txt.Size = UDim2.new(1, 0, 1, 0); txt.BackgroundTransparency = 1; txt.Font = Enum.Font.GothamBold; txt.TextSize = 12; txt.TextStrokeTransparency = 0
                end
                local dist = math.floor((LocalPlayer.Character.HumanoidRootPart.Position - char.HumanoidRootPart.Position).Magnitude)
                info.TextLabel.Text = string.format("%s\n%d HP | %dm", v.Name, math.floor(char.Humanoid.Health), dist)
                info.TextLabel.TextColor3 = color; info.Enabled = true
            elseif info then info.Enabled = false end

            -- Tracers
            if Settings.Tracers and char.Humanoid.Health > 0 then
                local _, onScreen = Camera:WorldToViewportPoint(char.HumanoidRootPart.Position)
                if onScreen then
                    local myP, _ = Camera:WorldToViewportPoint(LocalPlayer.Character.HumanoidRootPart.Position)
                    local taP, _ = Camera:WorldToViewportPoint(char.HumanoidRootPart.Position)
                    local l = Drawing.new("Line"); l.From = Vector2.new(myP.X, myP.Y); l.To = Vector2.new(taP.X, taP.Y); l.Color = color; l.Thickness = 1.5; l.Visible = true; table.insert(DrawingLines, l)
                end
            end
        end
    end
end)

Features & Information

Aimbot Esp Highlight Whitelist team Whitelist player Setting Aimlock Keyless

Community Comments (4)

moovikmoovikMar 17, 2026

probably best esp for mobile devices but aimbot doesn't work. anyway thank you for really good esp

Replying to @moovik
OpdontcareOpdontcareMar 22, 2026

@moovik yo it's sometime like some Map that didn't idk why to maybe some lag or camera setting that map

Replying to @moovik
OpdontcareOpdontcareMar 22, 2026

@moovik fix complete

Eric_70Eric_70Jul 20, 2026

how to run it?

More Scripts for Universal Scripts