Universal Script – AIM LOCK - Verified script for Universal Roblox
Key RequiredUniversal

Universal Script – AIM LOCK

Universal ScriptAryasareeAryasaree 1.1K views 3.1K executesUpdated Oct 23, 2026
Unrated
00
Lua Script•237 lines (6413 chars)
-- INSTANT AIM TRAINER GUI
-- For your own Roblox Studio game

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")

local Player = Players.LocalPlayer
local Camera = Workspace.CurrentCamera

local Settings = {
    Enabled = false,
    TargetPlayers = true,
    TargetNPCs = true,
    FOV = 150
}

-- GUI
local GUI = Instance.new("ScreenGui")
GUI.Name = "InstantAimGUI"
GUI.ResetOnSpawn = false
GUI.Parent = Player:WaitForChild("PlayerGui")

local Main = Instance.new("Frame")
Main.Size = UDim2.fromOffset(240, 280)
Main.Position = UDim2.new(0.5, -120, 0.5, -140)
Main.BackgroundColor3 = Color3.fromRGB(20, 22, 32)
Main.BorderSizePixel = 0
Main.Active = true
Main.Parent = GUI

Instance.new("UICorner", Main).CornerRadius =
    UDim.new(0, 12)

-- Draggable title
local Title = Instance.new("TextButton")
Title.Size = UDim2.new(1, 0, 0, 42)
Title.BackgroundColor3 = Color3.fromRGB(40, 70, 130)
Title.Text = "⚡ INSTANT AIM"
Title.TextColor3 = Color3.new(1, 1, 1)
Title.Font = Enum.Font.GothamBold
Title.TextSize = 15
Title.Parent = Main

local dragging = false
local dragStart, startPosition

Title.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch
        or input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStart = input.Position
        startPosition = Main.Position
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if dragging and (
        input.UserInputType == Enum.UserInputType.Touch
        or input.UserInputType == Enum.UserInputType.MouseMovement
    ) then
        local delta = input.Position - dragStart
        Main.Position = UDim2.new(
            startPosition.X.Scale,
            startPosition.X.Offset + delta.X,
            startPosition.Y.Scale,
            startPosition.Y.Offset + delta.Y
        )
    end
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.Touch
        or input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = false
    end
end)

-- Button creator
local function MakeButton(text, y, callback)
    local button = Instance.new("TextButton")
    button.Size = UDim2.new(1, -20, 0, 35)
    button.Position = UDim2.fromOffset(10, y)
    button.BackgroundColor3 = Color3.fromRGB(45, 50, 68)
    button.TextColor3 = Color3.new(1, 1, 1)
    button.Text = text
    button.TextSize = 13
    button.Font = Enum.Font.Gotham
    button.Parent = Main

    Instance.new("UICorner", button).CornerRadius =
        UDim.new(0, 7)

    button.Activated:Connect(function()
        callback(button)
    end)

    return button
end

-- Aim toggle
MakeButton("Aim Lock: OFF", 52, function(button)
    Settings.Enabled = not Settings.Enabled
    button.Text = Settings.Enabled and "Aim Lock: ON" or "Aim Lock: OFF"
    button.BackgroundColor3 = Settings.Enabled
        and Color3.fromRGB(20, 140, 85)
        or Color3.fromRGB(45, 50, 68)
end)

MakeButton("Players: ON/OFF", 94, function(button)
    Settings.TargetPlayers = not Settings.TargetPlayers
    button.Text = Settings.TargetPlayers
        and "Players: ON"
        or "Players: OFF"
end)

MakeButton("NPCs: ON/OFF", 136, function(button)
    Settings.TargetNPCs = not Settings.TargetNPCs
    button.Text = Settings.TargetNPCs
        and "NPCs: ON"
        or "NPCs: OFF"
end)

MakeButton("Increase FOV", 178, function()
    Settings.FOV = math.clamp(Settings.FOV + 25, 25, 500)
end)

MakeButton("Decrease FOV", 220, function()
    Settings.FOV = math.clamp(Settings.FOV - 25, 25, 500)
end)

-- FOV indicator
local Circle = Instance.new("Frame")
Circle.Name = "FOVCircle"
Circle.AnchorPoint = Vector2.new(0.5, 0.5)
Circle.BackgroundTransparency = 1
Circle.BorderSizePixel = 0
Circle.Parent = GUI

local Outline = Instance.new("UIStroke")
Outline.Color = Color3.fromRGB(50, 180, 255)
Outline.Thickness = 2
Outline.Parent = Circle

Instance.new("UICorner", Circle).CornerRadius =
    UDim.new(1, 0)

-- Target list
local function GetTargets()
    local targets = {}

    if Settings.TargetPlayers then
        for _, otherPlayer in ipairs(Players:GetPlayers()) do
            if otherPlayer ~= Player and otherPlayer.Character then
                table.insert(targets, otherPlayer.Character)
            end
        end
    end

    if Settings.TargetNPCs then
        local folder = Workspace:FindFirstChild("NPCs")

        if folder then
            for _, npc in ipairs(folder:GetChildren()) do
                if npc:IsA("Model") then
                    table.insert(targets, npc)
                end
            end
        end
    end

    return targets
end

local function GetBestTarget()
    local center = Camera.ViewportSize / 2
    local bestHead
    local shortestDistance = Settings.FOV

    for _, character in ipairs(GetTargets()) do
        local humanoid = character:FindFirstChildOfClass("Humanoid")
        local head = character:FindFirstChild("Head")

        if humanoid and humanoid.Health > 0 and head then
            local position, visible =
                Camera:WorldToViewportPoint(head.Position)

            if visible and position.Z > 0 then
                local distance = (
                    Vector2.new(position.X, position.Y) - center
                ).Magnitude

                if distance < shortestDistance then
                    shortestDistance = distance
                    bestHead = head
                end
            end
        end
    end

    return bestHead
end

-- Instant target selection and camera update
RunService:BindToRenderStep(
    "InstantAimUpdate",
    Enum.RenderPriority.Camera.Value + 1,
    function()
        Camera = Workspace.CurrentCamera

        Circle.Size = UDim2.fromOffset(
            Settings.FOV * 2,
            Settings.FOV * 2
        )

        Circle.Position = UDim2.fromOffset(
            Camera.ViewportSize.X / 2,
            Camera.ViewportSize.Y / 2
        )

        Circle.Visible = Settings.Enabled

        if not Settings.Enabled then
            return
        end

        local target = GetBestTarget()

        if target then
            Camera.CFrame = CFrame.lookAt(
                Camera.CFrame.Position,
                target.Position
            )
        end
    end
)

How to Execute Universal Script – AIM LOCK

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join Universal Script.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

Aryasaree
Aryasaree
Script Creator
View Author Profile

Features & Information

Execute Universal Script – AIM LOCK. Key system required, created by Aryasaree, updated Oct 23, 2026. Tested and working on supported executors.

Script Changelog (1)

@AryasareeOct 23, 2026

Create script

Community Comments (0)

No comments yet for this script.

Frequently Asked Questions

How do I execute Universal Script – AIM LOCK in Roblox?

To run Universal Script – AIM LOCK, copy the Lua loadstring from the code viewer above, launch Roblox and join Universal Script, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is Universal Script – AIM LOCK keyless or does it require an access key?

Universal Script – AIM LOCK requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Universal Script – AIM LOCK currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.