☰

craft quick (smart right click)

Trong UI: Giữ Chuột Phải vào nút Chế tạo để chế đồ nhanh, Chuột Trái lấy đồ bình thường. Trong Game: Bắn tự động và nhắm bình thường.

スクリプトをインストールするには、Tampermonkey, Greasemonkey や Violentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、 Tampermonkey や Violentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、Tampermonkey や Violentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、Tampermonkey や Userscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら、通報はこちらへお寄せください
// ==UserScript==
// @name         craft quick (smart right click)
// @namespace    http://tampermonkey.net/
// @version      6.0
// @description  Trong UI: Giữ Chuột Phải vào nút Chế tạo để chế đồ nhanh, Chuột Trái lấy đồ bình thường. Trong Game: Bắn tự động và nhắm bình thường.
// @author       Gemini
// @match        *://minefun.io/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let mouseX = 0;
    let mouseY = 0;
    let clickInterval = null;
    
    // Tốc độ click: 40ms = 25 click/giây
    const CLICK_SPEED = 40;

    // Liên tục cập nhật tọa độ chuột khi đang ở trong Menu
    window.addEventListener('mousemove', (e) => {
        if(e.isTrusted) {
            mouseX = e.clientX;
            mouseY = e.clientY;
        }
    });

    // KHI BẤM CHUỘT XUỐNG
    window.addEventListener('mousedown', (e) => {
        // NẾU ĐANG TRONG TRẬN (Chuột bị ẩn): Bỏ qua hoàn toàn, nhường quyền cho game để bắn/nhắm.
        if (document.pointerLockElement) {
            return;
        }

        // CHỈ KÍCH HOẠT KHI GIỮ CHUỘT PHẢI (button === 2) TRONG MENU
        if (e.button === 2 && e.isTrusted && !clickInterval) {
            const element = document.elementFromPoint(mouseX, mouseY);
            
            // Nếu click nhầm ra ngoài nền 3D thì bỏ qua
            if (element && element.tagName.toLowerCase() === 'canvas') {
                return;
            }
            
            // Bắt đầu chế độ Auto-Click (Nhấp chuột trái liên tục vào vị trí đang chỉ)
            clickInterval = setInterval(() => {
                const currentElement = document.elementFromPoint(mouseX, mouseY);
                
                if (currentElement && currentElement.tagName.toLowerCase() !== 'canvas') {
                    // Giả lập phím bấm Chuột Trái (button: 0) để chế đồ
                    const mouseDown = new MouseEvent('mousedown', { bubbles: true, cancelable: true, view: window, button: 0 });
                    const mouseUp = new MouseEvent('mouseup', { bubbles: true, cancelable: true, view: window, button: 0 });
                    const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window, button: 0 });
                    
                    currentElement.dispatchEvent(mouseDown);
                    currentElement.dispatchEvent(mouseUp);
                    currentElement.dispatchEvent(clickEvent);
                }
            }, CLICK_SPEED);
        }
    });

    // KHI NHẢ CHUỘT PHẢI RA
    window.addEventListener('mouseup', (e) => {
        if (e.button === 2 && e.isTrusted && clickInterval) {
            clearInterval(clickInterval);
            clickInterval = null;
        }
    });

    // Chặn menu chuột phải của trình duyệt khi ở trong túi đồ để không bị hiện menu rác che màn hình
    window.addEventListener('contextmenu', (e) => {
        if (!document.pointerLockElement) {
            e.preventDefault();
        }
    });

    // Tự động dừng nếu bạn tab ra ngoài màn hình
    window.addEventListener('blur', () => {
        if (clickInterval) {
            clearInterval(clickInterval);
            clickInterval = null;
        }
    });
})();