Greasy Fork

Greasy Fork is available in English.

SGSYJCM Automation

Show mouse coordinates and simulate a click after button press.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         SGSYJCM Automation
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Show mouse coordinates and simulate a click after button press.
// @author       ααααα
// @match        https://web.sanguosha.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // 创建一个显示坐标的div
    const coordinateDisplay = document.createElement('div');
    coordinateDisplay.style.position = 'fixed';
    coordinateDisplay.style.left = '10px';
    coordinateDisplay.style.bottom = '290px';
    coordinateDisplay.style.backgroundColor = 'rgba(255, 255, 255, 0.7)';
    coordinateDisplay.style.padding = '5px';
    coordinateDisplay.style.borderRadius = '5px';
    coordinateDisplay.style.zIndex = '9999';

    // 创建一个初始主界面到开始武将列传按钮
    const button = document.createElement('button');
    button.innerText = '主界面进入平定魏延';
    button.style.position = 'fixed';
    button.style.left = '10px';
    button.style.bottom = '255px';
    button.style.backgroundColor = 'rgba(255, 255, 255, 0.7)';
    button.style.padding = '5px';
    button.style.borderRadius = '5px';
    button.style.zIndex = '9999';

    // 创建一个重进武将列传按钮
    const button1 = document.createElement('button');
    button1.innerText = '重新开始平定魏延';
    button1.style.position = 'fixed';
    button1.style.left = '10px';
    button1.style.bottom = '220px';
    button1.style.backgroundColor = 'rgba(255, 255, 255, 0.7)';
    button1.style.padding = '5px';
    button1.style.borderRadius = '5px';
    button1.style.zIndex = '9999';

    // 创建一个将灵出征按钮
    const button2 = document.createElement('button');
    button2.innerText = '将灵出征(未完善)';
    button2.style.position = 'fixed';
    button2.style.left = '10px';
    button2.style.bottom = '185px';
    button2.style.backgroundColor = 'rgba(255, 255, 255, 0.7)';
    button2.style.padding = '5px';
    button2.style.borderRadius = '5px';
    button2.style.zIndex = '9999';

    // 创建一个扫荡十次按钮
    const button3 = document.createElement('button');
    button3.innerText = '扫荡十次';
    button3.style.position = 'fixed';
    button3.style.left = '10px';
    button3.style.bottom = '150px';
    button3.style.backgroundColor = 'rgba(255, 255, 255, 0.7)';
    button3.style.padding = '5px';
    button3.style.borderRadius = '5px';
    button3.style.zIndex = '9999';

    // 创建一个领取工会红包按钮
    const button4 = document.createElement('button');
    button4.innerText = '领取工会红包';
    button4.style.position = 'fixed';
    button4.style.left = '10px';
    button4.style.bottom = '115px';
    button4.style.backgroundColor = 'rgba(255, 255, 255, 0.7)';
    button4.style.padding = '5px';
    button4.style.borderRadius = '5px';
    button4.style.zIndex = '9999';

    // 添加鼠标移动事件监听器
    document.body.addEventListener('mousemove', function(e) {
        coordinateDisplay.innerText = `(${e.clientX}, ${e.clientY})`;
    });

    // 添加按钮点击事件监听器
    button.addEventListener('click', function() {
        setTimeout(() => {
            const x = 600;
            const y = 830;
            simulateMouseMoveAndClick(x, y);// 冒险场
        }, 500);
        setTimeout(() => {
            const x = 1500;
            const y = 400;
            simulateMouseMoveAndClick(x, y);// 武将列传
        }, 1000);
        setTimeout(() => {
            const x = 1400;
            const y = 800;
            simulateMouseMoveAndClick(x, y);// 名将传
        }, 1500);
        setTimeout(() => {
            const x = 600;
            const y = 300;
            simulateMouseMoveAndClick(x, y);// 遗计杀魏延
        }, 2000);
        setTimeout(() => {
            const x = 1400;
            const y = 800;
            simulateMouseMoveAndClick(x, y);// 进入
        }, 2500);
        setTimeout(() => {
            const x = 1400;
            const y = 300;
            simulateMouseMoveAndClick(x, y);// 杨仪
        }, 3000);
        setTimeout(() => {
            const x = 1600;
            const y = 600;
            simulateMouseMoveAndClick(x, y);// 下一步
        }, 3500);
        setTimeout(() => {
            const x = 1600;
            const y = 600;
            simulateMouseMoveAndClick(x, y);// 魏延
        }, 4000);
        setTimeout(() => {
            const x = 1200;
            const y = 750;
            simulateMouseMoveAndClick(x, y);// 开始挑战
        }, 4500);
        setTimeout(() => {
            const x = 850;
            const y = 750;
            simulateMouseMoveAndClick(x, y);// 缮甲确认
        }, 13000);
    });

    // 添加按钮点击事件监听器
    button1.addEventListener('click', function() {
         setTimeout(() => {
            const x = 950;
            const y = 880;
            simulateMouseMoveAndClick(x, y);// 任意键
        }, 500);
        setTimeout(() => {
            const x = 950;
            const y = 880;
            simulateMouseMoveAndClick(x, y);// 任意键
        }, 2500);
        setTimeout(() => {
            const x = 950;
            const y = 880;
            simulateMouseMoveAndClick(x, y);// 返回
        }, 3000);
        setTimeout(() => {
            const x = 1730;
            const y = 80;
            simulateMouseMoveAndClick(x, y);// 右上角返回
        }, 3500);
        setTimeout(() => {
            const x = 800;
            const y = 630;
            simulateMouseMoveAndClick(x, y);// 放弃记录
        }, 4000);
        setTimeout(() => {
            const x = 600;
            const y = 300;
            simulateMouseMoveAndClick(x, y);// 遗计杀魏延
        }, 4500);
        setTimeout(() => {
            const x = 1400;
            const y = 800;
            simulateMouseMoveAndClick(x, y);// 进入
        }, 5000);
        setTimeout(() => {
            const x = 1400;
            const y = 300;
            simulateMouseMoveAndClick(x, y);// 杨仪
        }, 5500);
        setTimeout(() => {
            const x = 1600;
            const y = 600;
            simulateMouseMoveAndClick(x, y);// 下一步
        }, 6000);
        setTimeout(() => {
            const x = 1600;
            const y = 600;
            simulateMouseMoveAndClick(x, y);// 魏延
        }, 6500);
        setTimeout(() => {
            const x = 1200;
            const y = 750;
            simulateMouseMoveAndClick(x, y);// 开始挑战
        }, 7000);
        setTimeout(() => {
            const x = 850;
            const y = 750;
            simulateMouseMoveAndClick(x, y);// 缮甲确认
        }, 15000);
    });

    // 添加按钮点击事件监听器
    button3.addEventListener('click', function() {
        for (let i = 1; i < 22; i++) {
            setTimeout(() => {
                const x = 1350;
                const y = 770;
                simulateMouseMoveAndClick(x, y);// 任意键
            }, 100*i);
        }

    });

    button4.addEventListener('click', function() {
        var k=0
        for (let i = 1; i < 3; i++) {
            k++;
            for (let j = 0; j < 3; j++) {
                setTimeout(() => {
                    const x = 1110;;
                    const y = 320+160*j
                    simulateMouseMoveAndClick(x, y);// 任意键
                }, 500*k);
            }
        }

    });

    // 模拟鼠标移动并点击的函数
    function simulateMouseMoveAndClick(x, y) {
        // 模拟鼠标移动到指定位置
        const moveEvent = new MouseEvent('mousemove', {
            bubbles: true,
            cancelable: true,
            view: window,
            clientX: x,
            clientY: y
        });
        document.documentElement.dispatchEvent(moveEvent);

        // 获取当前位置下的元素
        const targetElement = document.elementFromPoint(x, y);

        // 模拟鼠标按下
        const downEvent = new MouseEvent('mousedown', {
            bubbles: true,
            cancelable: true,
            view: window,
            clientX: x,
            clientY: y
        });
        if (targetElement) {
            targetElement.dispatchEvent(downEvent);
        }

        // 模拟鼠标释放(即点击)
        const upEvent = new MouseEvent('mouseup', {
            bubbles: true,
            cancelable: true,
            view: window,
            clientX: x,
            clientY: y
        });
        if (targetElement) {
            targetElement.dispatchEvent(upEvent);
        }

        // 模拟点击事件
        const clickEvent = new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: window,
            clientX: x,
            clientY: y
        });
        if (targetElement) {
            targetElement.dispatchEvent(clickEvent);
        }

        var element = document.elementFromPoint(x, y);
        if (element) {
            element.dispatchEvent(clickEvent);
            addVisualFeedback(x, y);
        }
    }

    function addVisualFeedback(x, y) {
        const dot = document.createElement('div');
        dot.style.position = 'absolute';
        dot.style.left = `${x - 5}px`;
        dot.style.top = `${y - 5}px`;
        dot.style.width = '10px';
        dot.style.height = '10px';
        dot.style.backgroundColor = 'red';
        dot.style.borderRadius = '50%';
        dot.style.zIndex = '9999999';
        dot.style.pointerEvents = 'none';

        document.body.appendChild(dot);

        setTimeout(() => {
            document.body.removeChild(dot);
        }, 1000); // 延迟500毫秒(0.5秒)后移除标记
    }
    // 将元素添加到页面
    document.body.appendChild(coordinateDisplay);
    document.body.appendChild(button);
    document.body.appendChild(button1);
    document.body.appendChild(button2);
    document.body.appendChild(button3);
    document.body.appendChild(button4);
})();