我的文字修仙全靠刷 脚本

修仙小游戏脚本

目前為 2024-08-02 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         我的文字修仙全靠刷 脚本
// @namespace    http://tampermonkey.net/
// @version      2024.8.2-3.0
// @description  修仙小游戏脚本
// @author       mj
// @match        https://*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @grant        none
// @license MIT
// ==/UserScript==

var myPlayer = document.querySelector('.game-container-wrapper').__vue__._data.player;
var intervalId1 = null;
var intervalId2 = null;
var intervalId3 = null;
var attackInterval = null;
var fightIntervalId = null;
var restInterval = null;
var isAttacking = true;
var isAutoSale = true;

function clearAllIntervals() {
    if (intervalId1 !== null) {
        clearInterval(intervalId1);
        intervalId1 = null;
    }
    if (intervalId2 !== null) {
        clearInterval(intervalId2);
        intervalId2 = null;
    }
    if (attackInterval !== null) {
        clearInterval(attackInterval);
        attackInterval = null;
    }
    if (fightIntervalId !== null) {
        clearInterval(fightIntervalId);
        fightIntervalId = null;
    }
    if (restInterval !== null) {
        clearInterval(restInterval);
        restInterval = null;
    }
}

function startAutoTraining() {
    var buttons = document.querySelectorAll('button');
    buttons.forEach(function(button) {
        var buttonText = button.textContent.trim();
        if (buttonText === "开始修炼" || buttonText === "继续修炼" || buttonText === "突破境界") {
            button.click();
        } else if (buttonText === "杀敌证道") {
            button.click();
            clickFightButtons();
        }
    });
}

function attackTheWorldBoss() {
    var buttons = document.querySelectorAll("button");
    buttons.forEach(function (button) {
        if (button.innerText === "世界BOSS" || button.innerText === "回到家里") {
            if (document.body.innerText.includes("被击败")||document.body.innerText.includes("你输了")||document.body.innerText.includes("BOSS还未刷新")) {
                isAttacking = false;
                button.click();
                console.log("无法战胜世界boss,5分钟后重试");
                return true;
            }
            button.click();
        }
    });
    buttons.forEach(function (button) {
        if (button.innerText === "攻击BOSS") {
            button.click();
        }
    });
    if (myPlayer.health === 0) {
        console.log("无法战胜世界boss,5分钟后重试");
        isAttacking = false;
        buttons.forEach((button) => {
            if (button.innerText === "返回家里") {
                button.click();
            }
        });
        return true;
    }
    buttons.forEach(function (button) {
        if (button.innerText === "发起战斗") {
            button.click();
        }
    });
    return false;
}

function startAttackingWorldBoss() {
    if (attackInterval !== null) return;
    attackInterval = setInterval(() => {
        if (isAttacking) {
            let stop = attackTheWorldBoss();
            if (stop) {
                clearInterval(attackInterval);
                attackInterval = null;
            }
        }
    }, 10);
}

function clickExploreButton() {
    var buttons = document.querySelectorAll("button");
    if (myPlayer.level === 40 && isAttacking) {
        console.log("攻击世界boss");
        startAttackingWorldBoss();
        return;
    }
    if (isAutoSale) {
        automaticSaleOfEquipment();
        isAutoSale = false;
    }
    buttons.forEach(function (button) {
        if (button.innerText === "继续探索" || button.innerText === "探索秘境") {
            button.click();
            clickFightButtons();
        }
        if (button.innerText === "发起战斗") {
            clickFightButtons();
        }
    });
}

function loopClickExploreButton() {
    if (intervalId2 !== null) return;
    intervalId2 = setInterval(function () {
        clickExploreButton();
    }, 10);
}

function clickFightButtons() {
    function innerClickFightButtons() {
        if (myPlayer.health === 0) {
            clearInterval(fightIntervalId);
            fightIntervalId = null;
            document.querySelectorAll("button").forEach((button) => {
                if (button.innerText === "立马撤退") {
                    button.click();
                    if (!document.body.innerText.includes("撤退失败,请继续战斗。")) {
                        clearInterval(fightIntervalId);
                        fightIntervalId = null;
                        loopClickExploreButton();
                    }
                }
            });
        }
        if (myPlayer.health < myPlayer.maxHealth * 0.1) {
            clearInterval(fightIntervalId);
            fightIntervalId = null;
            autoRest();
            return;
        }
        var fightButtonClicked = false;
        var buttons = document.querySelectorAll("button");
        buttons.forEach(function (button) {
            if (button.innerText === "发起战斗") {
                button.click();
                fightButtonClicked = true;
            }
            if (button.innerText === "回到家里") {
                button.click();
            }
        });
        if (fightButtonClicked) {
            return;
        }
    }
    if (fightIntervalId === null) {
        fightIntervalId = setInterval(innerClickFightButtons, 10);
    }
}

function autoRest() {
    let healthValue = myPlayer.health;
    let maxHealth = myPlayer.maxHealth;
    if (restInterval !== null) return;
    restInterval = setInterval(() => {
        document.querySelectorAll("button").forEach((button) => {
            if (button.innerText === "回到家里") {
                button.click();
                clearInterval(restInterval);
                restInterval = null;
            }
        });
        healthValue = myPlayer.health;
        if (healthValue < maxHealth) {
            document.querySelectorAll("button").forEach((button) => {
                if (button.innerText === "打坐休息" || button.innerText === "继续打坐") {
                    button.click();
                }
            });
        }
        healthValue = myPlayer.health;
        if (healthValue >= maxHealth) {
            document.querySelectorAll("button").forEach((button) => {
                if (button.innerText === "继续干他") {
                    button.click();
                }
            });
            clearInterval(restInterval);
            restInterval = null;
            clickFightButtons();
        }
        if (clickButton("发起战斗")) {
            while (clickButton("发起战斗")) {
                return;
            }
            clickButton("回到家里");
        }
    }, 10);
}

function automaticSaleOfEquipment() {
    document.querySelector('.setting.el-icon-setting').click();
    setTimeout(() => {
        clickButton("出售装备");
        setTimeout(() => {
            clickButton("出售装备");
        }, 10);
    }, 10);
}

function clickButton(buttonText) {
    let buttons = document.querySelectorAll("button");
    for (let button of buttons) {
        if (button.innerText === buttonText) {
            button.click();
            return true;
        }
    }
    return false;
}

async function autoGetPet() {
    async function exploreAndCapture() {
        if (clickButton("探索秘境")) {
            await new Promise(resolve => setTimeout(resolve, 10));
            if (clickButton("收服对方")) {
                await new Promise(resolve => setTimeout(resolve, 10));
                await keepFighting();
            }
        }
    }

    async function keepFighting() {
        while (clickButton("发起战斗")) {
            await new Promise(resolve => setTimeout(resolve, 10));
            if (clickButton("回到家里")) {
                return;
            }
        }
    }
    clickButton("回到家里");
    if (isAutoSale) {
        automaticSaleOfEquipment();
        isAutoSale = false;
    }
    await exploreAndCapture();
}

function autoPutPet() {
    myPlayer.pets = [];
}

setInterval(function() {isAttacking = true;}, 300000);
setInterval(function() {isAutoSale = true;}, 20000);

function initializeButtons() {
    var gameContainer = document.querySelector('.game-container');

    if (gameContainer) {
        gameContainer.style.position = "relative";

        var buttonContainer = document.createElement("div");
        buttonContainer.style.position = "absolute";
        buttonContainer.style.top = "10px";
        buttonContainer.style.left = "50%";
        buttonContainer.style.transform = "translateX(-50%)";
        buttonContainer.style.display = "flex";
        buttonContainer.style.gap = "10px";
        buttonContainer.style.zIndex = "99999";
        buttonContainer.style.backgroundColor = "rgba(255, 255, 255, 0.8)";
        buttonContainer.style.borderRadius = "10px";

        var button1 = document.createElement("button");
        button1.innerHTML = "修炼";
        styleButton(button1);

        button1.onclick = function () {
            if (intervalId1 === null) {
                if (myPlayer.level === 40) {
                    confirm("已经修炼到最高级,无法继续修炼!");
                    console.log("已经修炼到最高级,无法继续修炼");
                    return;
                }
                intervalId1 = setInterval(startAutoTraining, 10);
                button1.innerHTML = "🟥修炼";
                disableOtherButtons(button2);
                disableOtherButtons(button3);
                disableOtherButtons(button4);
                console.log("自动修炼功能正在运行");
            } else {
                clearAllIntervals();
                button1.innerHTML = "修炼";
                enableAllButtons(button2);
                enableAllButtons(button3);
                enableAllButtons(button4);
                console.log("自动修炼功能已停止");
            }
        };

        var button2 = document.createElement("button");
        button2.innerHTML = "探索";
        styleButton(button2);

        button2.onclick = function () {
            if (intervalId2 === null) {
                let userConfirmed = confirm("自动探索将自动出售装备,请提前调整出售装备设置!");
                if (userConfirmed) {
                    loopClickExploreButton();
                    button2.innerHTML = "🟥探索";
                    disableOtherButtons(button1);
                    disableOtherButtons(button3);
                    disableOtherButtons(button4);
                    console.log("自动探索功能正在运行");
                } else {
                    console.log("用户取消了自动探索");
                }
            } else {
                clearAllIntervals();
                button2.innerHTML = "探索";
                enableAllButtons(button1);
                enableAllButtons(button3);
                enableAllButtons(button4);
                console.log("自动探索功能已停止");
            }
        };

        var button3 = document.createElement("button");
        button3.innerHTML = "收宠";
        styleButton(button3);

        button3.onclick = function () {
            if (intervalId3 === null) {
                let userConfirmed = confirm("自动收宠将自动出售装备,请提前调整出售装备设置!");
                if (userConfirmed) {
                intervalId3 = setInterval(autoGetPet, 10);
                button3.innerHTML = "🟥收宠";
                disableOtherButtons(button1);
                disableOtherButtons(button2);
                disableOtherButtons(button4);
                console.log("自动收宠功能正在运行");
                }
            } else {
                clearInterval(intervalId3);
                intervalId3 = null;
                button3.innerHTML = "收宠";
                enableAllButtons(button1);
                enableAllButtons(button2);
                enableAllButtons(button4);
                console.log("自动收宠功能已停止");
            }
        }

        var button4 = document.createElement("button");
        button4.innerHTML = "放宠";
        styleButton(button4);

        button4.onclick = function () {
            let userConfirmed = confirm("你将放生所有未出战灵宠!");
            if (userConfirmed) {
                autoPutPet();
            }
        }

        buttonContainer.appendChild(button1);
        buttonContainer.appendChild(button2);
        buttonContainer.appendChild(button3);
        buttonContainer.appendChild(button4);
        gameContainer.appendChild(buttonContainer);
    } else {
        console.log("脚本初始化失败");
    }
}

function styleButton(button) {
    button.style.padding = "5px 10px";
    button.style.border = "none";
    button.style.borderRadius = "5px";
    button.style.backgroundColor = "#007bff";
    button.style.color = "white";
    button.style.fontSize = "16px";
    button.style.cursor = "pointer";
    button.style.transition = "background-color 0.3s, transform 0.3s";

    button.onmouseover = function() {
        if (!button.disabled) {
            button.style.backgroundColor = "#0056b3";
            button.style.transform = "scale(1.05)";
        }
    };

    button.onmouseout = function() {
        if (!button.disabled) {
            button.style.backgroundColor = "#007bff";
            button.style.transform = "scale(1)";
        }
    };

    button.onmousedown = function() {
        if (!button.disabled) {
            button.style.backgroundColor = "#004494";
        }
    };

    button.onmouseup = function() {
        if (!button.disabled) {
            button.style.backgroundColor = "#0056b3";
        }
    };
}

function disableOtherButtons(activeButton) {
    activeButton.disabled = true;
    activeButton.style.backgroundColor = "darkgray";
    activeButton.style.cursor = "not-allowed";
}

function enableAllButtons(activeButton) {
    activeButton.disabled = false;
    activeButton.style.backgroundColor = "#007bff";
    activeButton.style.cursor = "pointer";
}

initializeButtons();