-- free m&s aimbot script -- F to toggle aimbot -- Y to destroy aimbot -- this is the aimbot circle size, 250 is good local CIRCLE_SIZE = 1000/3 -- max distance from player, 200 is good local maxDist = 200 -- Services local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local localplayer = Players.LocalPlayer local mouse = localplayer:GetMouse() -- Settings -- circle size at top local CIRCLE_RADIUS = CIRCLE_SIZE / 2 local CIRCLE_THICKNESS = 2 local CIRCLE_COLOR = Color3.fromRGB(255, 255, 255) -- State local enabled = true local destroyed = false -- ScreenGui local gui = Instance.new("ScreenGui") gui.Name = "CursorCircleGui" gui.ResetOnSpawn = false gui.Parent = localplayer:WaitForChild("PlayerGui") -- Circle Frame local circle = Instance.new("Frame") circle.Size = UDim2.fromOffset(CIRCLE_SIZE, CIRCLE_SIZE) circle.BackgroundTransparency = 1 circle.AnchorPoint = Vector2.new(0.5, 0.5) circle.Parent = gui local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(1, 0) corner.Parent = circle local stroke = Instance.new("UIStroke") stroke.Thickness = CIRCLE_THICKNESS stroke.Color = CIRCLE_COLOR stroke.Parent = circle -- Follow cursor local connection connection = RunService.RenderStepped:Connect(function() if destroyed then return end circle.Visible = enabled if enabled then circle.Position = UDim2.fromOffset(mouse.X, mouse.Y) end end) local function kill(player) local playerPos = localplayer.Character.HumanoidRootPart.Position local victim = Players:WaitForChild(player) local victimPos = victim.Character.HumanoidRootPart.Position local thirdPos = victimPos + (victimPos - playerPos).Unit * 50 local args = { playerPos, thirdPos, victim.Character:WaitForChild("HumanoidRootPart"), victimPos } game:GetService("ReplicatedStorage") :WaitForChild("Remotes") :WaitForChild("ShootGun") :FireServer(unpack(args)) end -- Find closest player in circle local function getClosestPlayer() local closestPlayer = nil local closestDistance = math.huge for _, plr in ipairs(Players:GetPlayers()) do if plr ~= localplayer and plr.Character then local hrp = plr.Character:FindFirstChild("HumanoidRootPart") local myHrp = localplayer.Character and localplayer.Character:FindFirstChild("HumanoidRootPart") if hrp and myHrp then -- 3D distance check local distance3D = (hrp.Position - myHrp.Position).Magnitude if distance3D <= maxDist then -- Screen-space distance check local screenPos, onScreen = Camera:WorldToViewportPoint(hrp.Position) if onScreen then local dx = screenPos.X - mouse.X local dy = screenPos.Y - mouse.Y local distance2D = math.sqrt(dx*dx + dy*dy) if distance2D <= CIRCLE_RADIUS and distance2D < closestDistance then closestDistance = distance2D closestPlayer = plr end end end end end end return closestPlayer, closestDistance end -- Input handling UserInputService.InputBegan:Connect(function(input, gpe) if gpe or destroyed then return end if input.KeyCode == Enum.KeyCode.F then enabled = not enabled elseif input.KeyCode == Enum.KeyCode.Y then destroyed = true if connection then connection:Disconnect() end gui:Destroy() elseif input.UserInputType == Enum.UserInputType.MouseButton1 then if not enabled then return end local closest, dist = getClosestPlayer() if closest then print("Closest player:", closest.Name, "| Distance:", math.floor(dist)) kill(closest.Name) else print("No player inside circle") end end end)