
Universal Script – AIM LOCK
-- 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
View Author ProfileFeatures & Information
Script Changelog (1)
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.


![Ez Hub [Open Source] [150+ games] - Verified script for Universal Script](https://media.kocakz.me/b74a9ac15370ba766b2fa9531f17c9dad2c0befb2b951693ae723e4c7d2c3fb6.webp)

![[KEYLESS] Moondiety Script | 20+ supported Games - Verified script for Universal Script](https://media.kocakz.me/6834c33a36c9fbe66afae4c6754c2b80386ce636b2f972464a95866f4b6a42eb.webp)

