-- 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 )