您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
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 })); } })();