--// SETTINGS getgenv().settings = { fov_size = 200, aimbot_enabled = true, aim_part = "head", smoothness = 0.15, team_check = true, prediction = 0.12 -- Optional (Used for shooting moving targets.) } --// SERVICES local players = game:GetService("Players") local runservice = game:GetService("RunService") local userinput = game:GetService("UserInputService") local workspace = game:GetService("Workspace") --// VARIABLES local camera = workspace.CurrentCamera local localPlayer = players.LocalPlayer local characters = workspace:WaitForChild("characters") --// FOV CIRCLE local fov = Drawing.new("Circle") fov.Radius = getgenv().settings.fov_size fov.Thickness = 1 fov.Transparency = 1 fov.Filled = false fov.Color = Color3.fromRGB(255, 255, 255) fov.Visible = true --// Helper: Get Player from Character local function getPlayerFromCharacter(character) for _, player in ipairs(players:GetPlayers()) do if characters:FindFirstChild(player.Name) == character then return player end end return nil end --// Check Enemy local function isEnemy(targetChar) if not getgenv().settings.team_check then return true end local targetPlayer = getPlayerFromCharacter(targetChar) if not targetPlayer then return true end if not targetPlayer.Team or not localPlayer.Team then return true end return targetPlayer.Team ~= localPlayer.Team end --// Get Closest Target local function getClosestPlayer() local closestPart, shortestDist = nil, getgenv().settings.fov_size local mousePos = userinput:GetMouseLocation() for _, char in ipairs(characters:GetChildren()) do if char:IsA("Model") and char.Name ~= localPlayer.Name and isEnemy(char) then local targetPart = char:FindFirstChild(getgenv().settings.aim_part) if targetPart and targetPart:IsA("BasePart") then local predictedPosition = targetPart.Position if targetPart.Velocity then predictedPosition = predictedPosition + (targetPart.Velocity * getgenv().settings.prediction) end local screenPos, onScreen = camera:WorldToViewportPoint(predictedPosition) if onScreen then local dist = (Vector2.new(screenPos.X, screenPos.Y) - mousePos).Magnitude if dist < shortestDist then shortestDist = dist closestPart = targetPart end end end end end return closestPart end --// Aimbot Variables local currentTarget = nil --// Aimbot Loop runservice.RenderStepped:Connect(function() fov.Position = userinput:GetMouseLocation() if getgenv().settings.aimbot_enabled then if userinput:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) then currentTarget = getClosestPlayer() else currentTarget = nil end if currentTarget then local predictedPosition = currentTarget.Position if currentTarget.Velocity then predictedPosition = predictedPosition + (currentTarget.Velocity * getgenv().settings.prediction) end local screenPos = camera:WorldToViewportPoint(predictedPosition) local mousePos = userinput:GetMouseLocation() local delta = Vector2.new(screenPos.X, screenPos.Y) - mousePos local move = delta * getgenv().settings.smoothness move = Vector2.new( math.clamp(move.X, -100, 100), math.clamp(move.Y, -100, 100) ) mousemoverel(move.X, move.Y) end end end) --// HOTKEY: Press X to toggle aim_part userinput.InputBegan:Connect(function(input, processed) if not processed and input.KeyCode == Enum.KeyCode.X then getgenv().settings.aim_part = getgenv().settings.aim_part == "head" and "torso" or "head" print("[Aimbot] Changed target to:", getgenv().settings.aim_part) end end)