--// Cache local select = select local pcall, getgenv, next, Vector2, mathclamp, type, mousemoverel = select(1, pcall, getgenv, next, Vector2.new, math.clamp, type, mousemoverel or (Input and Input.MouseMove)) --// Preventing Multiple Processes pcall(function() getgenv().Aimbot.Functions:Exit() end) --// Environment getgenv().Aimbot = {} local Environment = getgenv().Aimbot --// Services local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local Players = game:GetService("Players") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer --// Variables local RequiredDistance, Typing, Running, Animation, ServiceConnections = 2000, false, false, nil, {} --// Script Settings Environment.Settings = { Enabled = true, TeamCheck = false, AliveCheck = true, WallCheck = false, -- Laggy Sensitivity = 0, -- Animation length (in seconds) before fully locking onto target ThirdPerson = false, -- Uses mousemoverel instead of CFrame to support locking in third person (could be choppy) ThirdPersonSensitivity = 3, -- Boundary: 0.1 - 5 TriggerKey = "MouseButton2", Toggle = false, LockPart = "Head" -- Body part to lock on } Environment.FOVSettings = { Enabled = true, Visible = true, Amount = 90, Color = Color3.fromRGB(255, 255, 255), LockedColor = Color3.fromRGB(255, 70, 70), Transparency = 0.5, Sides = 60, Thickness = 1, Filled = false } Environment.FOVCircle = Drawing.new("Circle") --// Functions local function CancelLock() Environment.Locked = nil if Animation then Animation:Cancel() end Environment.FOVCircle.Color = Environment.FOVSettings.Color end local function GetClosestPlayer() if not Environment.Locked then RequiredDistance = (Environment.FOVSettings.Enabled and Environment.FOVSettings.Amount or 2000) for _, v in next, Players:GetPlayers() do if v ~= LocalPlayer then if v.Character and v.Character:FindFirstChild(Environment.Settings.LockPart) and v.Character:FindFirstChildOfClass("Humanoid") then if Environment.Settings.TeamCheck and v.Team == LocalPlayer.Team then continue end if Environment.Settings.AliveCheck and v.Character:FindFirstChildOfClass("Humanoid").Health <= 0 then continue end if Environment.Settings.WallCheck and #(Camera:GetPartsObscuringTarget({v.Character[Environment.Settings.LockPart].Position}, v.Character:GetDescendants())) > 0 then continue end local Vector, OnScreen = Camera:WorldToViewportPoint(v.Character[Environment.Settings.LockPart].Position) local Distance = (Vector2(UserInputService:GetMouseLocation().X, UserInputService:GetMouseLocation().Y) - Vector2(Vector.X, Vector.Y)).Magnitude if Distance < RequiredDistance and OnScreen then RequiredDistance = Distance Environment.Locked = v end end end end elseif (Vector2(UserInputService:GetMouseLocation().X, UserInputService:GetMouseLocation().Y) - Vector2(Camera:WorldToViewportPoint(Environment.Locked.Character[Environment.Settings.LockPart].Position).X, Camera:WorldToViewportPoint(Environment.Locked.Character[Environment.Settings.LockPart].Position).Y)).Magnitude > RequiredDistance then CancelLock() end end --// Typing Check ServiceConnections.TypingStartedConnection = UserInputService.TextBoxFocused:Connect(function() Typing = true end) ServiceConnections.TypingEndedConnection = UserInputService.TextBoxFocusReleased:Connect(function() Typing = false end) --// Main local function Load() ServiceConnections.RenderSteppedConnection = RunService.RenderStepped:Connect(function() if Environment.FOVSettings.Enabled and Environment.Settings.Enabled then Environment.FOVCircle.Radius = Environment.FOVSettings.Amount Environment.FOVCircle.Thickness = Environment.FOVSettings.Thickness Environment.FOVCircle.Filled = Environment.FOVSettings.Filled Environment.FOVCircle.NumSides = Environment.FOVSettings.Sides Environment.FOVCircle.Color = Environment.FOVSettings.Color Environment.FOVCircle.Transparency = Environment.FOVSettings.Transparency Environment.FOVCircle.Visible = Environment.FOVSettings.Visible Environment.FOVCircle.Position = Vector2(UserInputService:GetMouseLocation().X, UserInputService:GetMouseLocation().Y) else Environment.FOVCircle.Visible = false end if Running and Environment.Settings.Enabled then GetClosestPlayer() if Environment.Locked then if Environment.Settings.ThirdPerson then Environment.Settings.ThirdPersonSensitivity = mathclamp(Environment.Settings.ThirdPersonSensitivity, 0.1, 5) local Vector = Camera:WorldToViewportPoint(Environment.Locked.Character[Environment.Settings.LockPart].Position) mousemoverel((Vector.X - UserInputService:GetMouseLocation().X) * Environment.Settings.ThirdPersonSensitivity, (Vector.Y - UserInputService:GetMouseLocation().Y) * Environment.Settings.ThirdPersonSensitivity) else if Environment.Settings.Sensitivity > 0 then Animation = TweenService:Create(Camera, TweenInfo.new(Environment.Settings.Sensitivity, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {CFrame = CFrame.new(Camera.CFrame.Position, Environment.Locked.Character[Environment.Settings.LockPart].Position)}) Animation:Play() else Camera.CFrame = CFrame.new(Camera.CFrame.Position, Environment.Locked.Character[Environment.Settings.LockPart].Position) end end Environment.FOVCircle.Color = Environment.FOVSettings.LockedColor end end end) ServiceConnections.InputBeganConnection = UserInputService.InputBegan:Connect(function(Input) if not Typing then pcall(function() if Input.KeyCode == Enum.KeyCode[Environment.Settings.TriggerKey] then if Environment.Settings.Toggle then Running = not Running if not Running then CancelLock() end else Running = true end end end) pcall(function() if Input.UserInputType == Enum.UserInputType[Environment.Settings.TriggerKey] then if Environment.Settings.Toggle then Running = not Running if not Running then CancelLock() end else Running = true end end end) end end) ServiceConnections.InputEndedConnection = UserInputService.InputEnded:Connect(function(Input) if not Typing then if not Environment.Settings.Toggle then pcall(function() if Input.KeyCode == Enum.KeyCode[Environment.Settings.TriggerKey] then Running = false; CancelLock() end end) pcall(function() if Input.UserInputType == Enum.UserInputType[Environment.Settings.TriggerKey] then Running = false; CancelLock() end end) end end end) end --// Functions Environment.Functions = {} function Environment.Functions:Exit() for _, v in next, ServiceConnections do v:Disconnect() end if Environment.FOVCircle.Remove then Environment.FOVCircle:Remove() end getgenv().Aimbot.Functions = nil getgenv().Aimbot = nil Load = nil; GetClosestPlayer = nil; CancelLock = nil end function Environment.Functions:Restart() for _, v in next, ServiceConnections do v:Disconnect() end Load() end function Environment.Functions:ResetSettings() Environment.Settings = { Enabled = true, TeamCheck = false, AliveCheck = true, WallCheck = false, Sensitivity = 0, -- Animation length (in seconds) before fully locking onto target ThirdPerson = false, -- Uses mousemoverel instead of CFrame to support locking in third person (could be choppy) ThirdPersonSensitivity = 3, -- Boundary: 0.1 - 5 TriggerKey = "MouseButton2", Toggle = false, LockPart = "Head" -- Body part to lock on } Environment.FOVSettings = { Enabled = true, Visible = true, Amount = 90, Color = Color3.fromRGB(255, 255, 255), LockedColor = Color3.fromRGB(255, 70, 70), Transparency = 0.5, Sides = 60, Thickness = 1, Filled = false } end --// Load Load()