local uis = game:GetService("UserInputService") local runService = game:GetService("RunService") local players = game:GetService("Players") player local camera = workspace.CurrentCamera local lp = players.LocalPlayer -- customise ts (the sets rn is blatant xd) local config = { FOVEnabled = true, FOVRadius = 250, Smoothness = 0, Prediction = true, PredictionMultiplier = 0, TargetPart = "HumanoidRootPart" } local enabled = false local function getClosest() local closest local shortest = math.huge local mousePos = uis:GetMouseLocation() local bots = workspace.CurrentBots if not bots then return end for _, bot in pairs(bots:GetChildren()) do local part = bot:FindFirstChild(config.TargetPart) if part and part:IsA("BasePart") then local pos = part.Position if config.Prediction then pos = pos + part.Velocity * config.PredictionMultiplier end local screenPos, onScreen = camera:WorldToViewportPoint(pos) if onScreen then local dist = (Vector2.new(screenPos.X, screenPos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude if (not config.FOVEnabled or dist <= config.FOVRadius) and dist < shortest then shortest = dist closest = part end end end end return closest end uis.InputBegan:Connect(function(input, gameProcessed) if not gameProcessed and input.KeyCode == Enum.KeyCode.Q then enabled = not enabled end end) runService.RenderStepped:Connect(function() if not enabled then return end local target = getClosest() if target then local currentPos = camera.CFrame.Position local aimPos = target.Position if config.Prediction then aimPos = aimPos + target.Velocity * config.PredictionMultiplier end camera.CFrame = camera.CFrame:Lerp(CFrame.new(currentPos, aimPos), config.Smoothness) end end)