Auto clicker: Smooth + Burst modes, max 10k CPS. Hold M1 to click, Q to toggle or set CPS.
// ==UserScript==
// @name Mouse-Follow Auto Clicker (Smooth + Burst, Max 10k CPS, Hold M1)
// @namespace http://tampermonkey.net/
// @version 10.0
// @description Auto clicker: Smooth + Burst modes, max 10k CPS. Hold M1 to click, Q to toggle or set CPS.
// @author TheHackerClient
// @match *://*/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
let running = false; // Q toggled state
let cps = 100; // Default clicks per second
let lastMouseX = 0, lastMouseY = 0;
let m1Down = false; // Track if M1 is held
let clickTimer = null; // Single interval for clicking
// Track mouse
document.addEventListener("mousemove", e => {
lastMouseX = e.clientX;
lastMouseY = e.clientY;
});
// Track M1 press
document.addEventListener("mousedown", e => {
if (e.button === 0) m1Down = true;
});
document.addEventListener("mouseup", e => {
if (e.button === 0) m1Down = false;
});
// Toggle with Q
document.addEventListener("keyup", evt => {
if (evt.key.toLowerCase() === "q") {
if (!running) {
running = true;
let inp = prompt("Enter CPS (1–10000, default 100):", cps);
if (!isNaN(inp) && inp.trim().length > 0) {
inp = parseInt(inp);
cps = Math.min(10000, Math.max(1, inp));
}
alert(`Auto Clicker enabled. Hold M1 to click at ${cps} CPS. Press Q again to disable.`);
} else {
running = false;
stopClicking();
alert("Auto Clicker disabled.");
}
}
});
function startClicking() {
if (clickTimer) return;
let intervalMs = 1000 / cps;
clickTimer = setInterval(() => {
if (running && m1Down) {
// Smooth click
simulateClick(lastMouseX, lastMouseY);
// Burst clicks (up to 10% of CPS)
let burstClicks = Math.ceil(cps / 10);
for (let i = 1; i < burstClicks; i++) {
simulateClick(lastMouseX, lastMouseY);
}
}
}, intervalMs);
}
function stopClicking() {
if (clickTimer) {
clearInterval(clickTimer);
clickTimer = null;
}
}
// Continuously check M1 state
setInterval(() => {
if (running && m1Down && !clickTimer) startClicking();
if (!m1Down && clickTimer) stopClicking();
}, 50);
function simulateClick(x, y) {
let el = document.elementFromPoint(x, y);
if (!el) return;
el.dispatchEvent(new MouseEvent("mousedown", { bubbles: true, clientX: x, clientY: y }));
el.dispatchEvent(new MouseEvent("mouseup", { bubbles: true, clientX: x, clientY: y }));
el.dispatchEvent(new MouseEvent("click", { bubbles: true, clientX: x, clientY: y }));
}
})();