我的文字修仙全靠刷 脚本

修仙小游戏脚本

当前为 2024-08-06 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

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

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

// 获取当前玩家对象player
const myPlayer = document.querySelector('.game-container-wrapper').__vue__.$store.state.player
// 获取当前路由对象
let currentRoutingObject = document.querySelector('.game-container-wrapper').__vue__.$router.currentRoute.matched[0].instances.default
// 提示框
let myTips = currentRoutingObject.$notify
// 定义多个用于存储定时器ID的变量
var intervalId1 = null;
var intervalId2 = null;
var intervalId3 = null;
var intervalId5 = false;
var attackInterval = null;
var fightIntervalId = null;
var restInterval = null;
var restartIntervalId = null;
var automaticSaleOfEquipmentId = null;
var petIntervalId = null;
var boosIntervalId = null;
var boosStart = true;
var buttonStatus1 = true ;
var buttonStatus2 = true ;
var buttonStatus3 = true ;

let allPets = [];

// 更新 allPets 数组的方法
const updateAllPets = () => {
  // 合并 myPlayer.pets 数组和 myPlayer.pet 对象,过滤掉 null 或 undefined
  allPets = [
    ...myPlayer.pets,
    ...(myPlayer.pet ? [myPlayer.pet] : [])
  ];
};

// 初始化 allPets
updateAllPets();

// 监听 myPlayer.pets 的变化
document.querySelector('.game-container-wrapper').__vue__.$watch(
  () => myPlayer.pets,
  (newPets, oldPets) => {
    updateAllPets();
  },
  { deep: true }
);

// 监听 myPlayer.pet 的变化
document.querySelector('.game-container-wrapper').__vue__.$watch(
  () => myPlayer.pet,
  (newPet, oldPet) => {
    updateAllPets();
  },
  { deep: true }
);



// 定时将boosStart设置为true
setInterval(() => {
    boosStart = true;  
}, 2 * 60 * 1000);  

// 清除所有定时器的函数
(function() {
    // 保存原始的 setInterval 方法
    const originalSetInterval = window.setInterval;

    // 存储所有 setInterval ID 的数组
    const intervalIds = [];

    // 重写 setInterval 方法
    window.setInterval = function(callback, delay) {
        const id = originalSetInterval(callback, delay);
        intervalIds.push(id);
        return id;
    };

    // 清除所有 setInterval 定时器的函数
    function clearAllIntervals() {
        intervalIds.forEach(id => clearInterval(id));
        intervalIds.length = 0; // 清空 intervalIds 数组
    }

    // 将 clearAllIntervals 方法暴露到全局作用域
    window.clearAllIntervals = clearAllIntervals;
})();

// 获取指定路由对象返回组件实例
function specifyRoutingObject(path) {
    const routerOptions = document.querySelector('.game-container-wrapper').__vue__.$router.options.routes
    return routerOptions.find(route => route.path === path).component
}


// 根据文字点击按钮
function clickButton(buttonText) {
    let buttons = document.querySelectorAll("button");
    for (let button of buttons) {
        if (button.innerText === buttonText) {
            button.click();
            return true;
        }
    }
    return false;
}

// 通用的点击按钮并等待DOM结构更新的函数
function clickButtonAndWaitForDOMUpdate(buttonName, callback) {
    // 点击按钮
    if (!clickButton(buttonName)) {
        console.error(`按钮 "${buttonName}" 未找到`);
        return;
    }

    // 创建一个MutationObserver实例来监听DOM变化
    const observer = new MutationObserver((mutationsList, observer) => {
        for (let mutation of mutationsList) {
            if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
                // 执行回调函数
                callback();

                // 停止观察
                observer.disconnect();
                break;
            }
        }
    });

    // 开始观察目标节点的变化
    observer.observe(document.body, { childList: true, subtree: true });

}

// 路由监听函数
function createRouteListener(callback) {
    if (typeof callback !== 'function') {
      throw new Error('Callback must be a function');
    }
  
    (function(history) {
      var pushState = history.pushState;
      var replaceState = history.replaceState;
  
      history.pushState = function(state, title, url) {
        var result = pushState.apply(history, arguments);
        window.dispatchEvent(new Event('pushstate'));
        window.dispatchEvent(new Event('locationchange'));
        return result;
      };
  
      history.replaceState = function(state, title, url) {
        var result = replaceState.apply(history, arguments);
        window.dispatchEvent(new Event('replacestate'));
        window.dispatchEvent(new Event('locationchange'));
        return result;
      };
  
      window.addEventListener('popstate', function(event) {
        window.dispatchEvent(new Event('locationchange'));
      });
    })(window.history);
  
    window.addEventListener('locationchange', function() {
      // Adding a delay to ensure the Vue instance is fully updated
      setTimeout(function() {
        callback(window.location.pathname);
      }, 0);
    });
  }
createRouteListener(function() {
    var wrapper = document.querySelector('.game-container-wrapper');
    if (wrapper && wrapper.__vue__) {
        currentRoutingObject = wrapper.__vue__.$router.currentRoute.matched[0].instances.default;
    } else {
        console.log('当前路由对象未定义');
    }
});
  

// 修炼函数
function cultivateUntilMax() {
        currentRoutingObject.startCultivate();
        currentRoutingObject.startCultivate();
        currentRoutingObject.startCultivate();
        if(document.body.innerText.includes("当前境界修为已满")) {  
            if (currentRoutingObject.stopCultivate) {
                currentRoutingObject.stopCultivate();
                clearAllIntervals();
            }
            clickButtonAndWaitForDOMUpdate("返回家里", () => {
                cultivateExplore();
            }); 
            
        }
    
}

// 修炼专用探索
function cultivateExplore() {
    clickButton("探索秘境");

    function checkFightStatus() {
        if (document.body.innerText.includes("恭喜你突破了")) {
            clearAllIntervals();
            document.querySelector('.game-container-wrapper').__vue__.$router.push('/')
            // 等待一段时间后查找最新按钮
            setTimeout(() => {
                clickButtonAndWaitForDOMUpdate("开始修炼", () => {
                    intervalId1 = setInterval(() => {
                        cultivateUntilMax();
                    }, 1000);  // 每隔0.1秒检查一次弹窗状态
            }, 500)}); // 这里等待1秒,你可以根据实际情况调整时间
            return;
        }
        if (document.body.innerText.includes("被击败")) {
            clickButtonAndWaitForDOMUpdate("回家疗伤", () => {
                clearInterval(fightIntervalId);  // 停止定时器
                clearInterval(automaticSaleOfEquipmentId);  // 停止定时器
                cultivateExplore();
            }
            );
        } else if (document.body.innerText.includes("你击败") || document.body.innerText.includes("你输了")) {
            clickButton("继续探索");
        } else {
            if (currentRoutingObject.startFight) {
                currentRoutingObject.startFight();
            }
        }
    }

    automaticSaleOfEquipmentId = setInterval(() => {
        myAutoSellEquipment();
        console.log("自动出售装备功能已运行");
    }, 5000);  // 每隔5秒检查一次弹窗状态

    fightIntervalId = setInterval(checkFightStatus, 100);  // 每隔0.1秒检查一次状态
}

// 自动出售装备函数
function myAutoSellEquipment() {
    // 获取玩家背包装备
    const inventory = myPlayer.inventory;
    // 获取玩家装备出售设置
    const sellingEquipmen = myPlayer.sellingEquipmentData;
    // 过滤出可以出售的装备
    const selling = inventory.filter(item => sellingEquipmen.includes(item.quality) && !item.lock);
    // 检查是否有可售卖的装备
    if (!selling.length) {
        return;
    }
    // 计算未锁定装备与选中出售品阶的等级总和
    const strengtheningStoneTotal = selling.reduce((total, i) => {
        let level = i.level + i.level * myPlayer.reincarnation / 10;
        level = Number(level) || 0;
        return total + Math.floor(level);
    }, 0);
    // 增加炼器石数量
    myPlayer.strengtheningStone += strengtheningStoneTotal;
    // 清空背包内所有未锁定装备与选中出售的品阶
    myPlayer.inventory = inventory.filter(item => !sellingEquipmen.includes(item.quality) || item.lock);
    document.querySelector('.game-container-wrapper').__vue__.$store.commit('setPlayer', myPlayer);
    myTips({ title: '背包装备出售提示', message: `背包内所有非锁定装备已成功出售, 你获得了${strengtheningStoneTotal}个炼器石` });
}

// 探索函数
function autoExplore() {
    
    function fightLoop() {

        clickButton("探索秘境");

        function checkFightStatus() {
            

            if(myPlayer.level===40 && boosStart === true) {
                document.querySelector('.game-container-wrapper').__vue__.$router.push('/')
                clickButton("世界BOSS");
                boosIntervalId = setInterval(fightBossAndCheck, 100);
                waitForIntervalToFinish();
                return;
            }

            if (document.body.innerText.includes("被击败")) {
                clickButton("回家疗伤");
                clearInterval(fightIntervalId);  // 停止定时器
                if (!restartIntervalId) {
                    restartIntervalId = setInterval(() => {
                        fightLoop();
                        clearInterval(restartIntervalId);
                        restartIntervalId = null;
                    }, 100);  // 0.5秒后重新启动战斗
                }
            } else if (document.body.innerText.includes("你击败")||document.body.innerText.includes("你输了")) {
                clickButton("继续探索");
            } else {
                currentRoutingObject.startFight();
            }
        }

        automaticSaleOfEquipmentId = setInterval(() => {
            myAutoSellEquipment();
        }, 5000);  // 每隔5秒检查一次弹窗状态

        fightIntervalId = setInterval(checkFightStatus, 10);  // 每隔0.1秒检查一次状态
    }

    fightLoop();  // 启动战斗循环
}

function waitForIntervalToFinish() {
    const checkInterval = setInterval(() => {
        if (boosStart === false) {
            clearInterval(checkInterval); // 清除监视器
            autoExplore(); // 继续往下执行的函数
        }
    }, 100); // 每隔100毫秒检查一次
}

// 世界boss
function fightBossAndCheck() {
    // 执行 fightBoss 操作
    if (!currentRoutingObject.fightBoss){
        return;
    }
    currentRoutingObject.fightBoss();

    // 获取页面文本
    let pageText = document.body.innerText;
    
    // 检查页面文本是否包含特定的字符串
    if (pageText.includes("太弱被击败了") || pageText.includes("你击败") 
        || pageText.includes("你输了") || pageText.includes("BOSS还未刷新") || boosStart === false) {
        // 如果包含,则点击回家疗伤按钮
        clickButton("回家疗伤");
        // 停止定时器
        clearInterval(boosIntervalId);
        // 如果 boosStart 为 true,设置为 false
        boosStart = false;
        
    }
}


// 定义 autoPet() 函数
function autoPet() {
    // 检查玩家健康状态
    if (myPlayer.health === 0) {
        document.querySelector('.game-container-wrapper').__vue__.$router.push('/');
        return; // 返回首页后不再继续执行
    }

    // 点击“探索秘境”按钮
    clickButton("探索秘境")

    // 点击“收服对方”按钮
    clickButton("收服对方")
    // 检查是否出现“失败”文字
    if (document.body.innerText.includes("失败") ) {
        clickButton("发起战斗")
    }

    if (document.body.innerText.includes("你输了")) {
        clickButton("继续探索")
    }

    // 检查是否出现“成功”文字
    const successText = document.body.innerText.includes("成功");
    if (successText) {
        clickButton("继续探索")
    }

    // 检查是否出现“击败”文字
    const defeatText = document.body.innerText.includes("击败");
    if (defeatText) {
        clickButton("继续探索")
    }
}

// 定义一个函数来启动循环执行 autoPet()
function startAutoPet() {
    // 使用 setInterval() 函数来循环执行 autoPet(),这里设定每隔 1000 毫秒(即1秒)执行一次
    intervalId3 = setInterval(autoPet, 100);
}



// 初始化按钮的函数
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 = "0px";
        buttonContainer.style.left = "50%";
        buttonContainer.style.transform = "translateX(-50%)";
        buttonContainer.style.display = "flex";
        buttonContainer.style.gap = "10px";
        buttonContainer.style.zIndex = "9900";
        buttonContainer.style.borderRadius = "10px";

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

        button1.onclick = function () {
            if (buttonStatus1 === true) {
                if (myPlayer.level === 40) {
                    myTips({title:'修炼提示',message:"已经修炼到最高级,无法继续自动修炼!"});
                    return;
                }
                clickButton("开始修炼");
                button1.innerHTML = "修炼";
                disableOtherButtons(button2);
                disableOtherButtons(button3);
                disableOtherButtons(button4);
                disableOtherButtons(button5);
                buttonStatus1 = false;
                console.log("自动修炼功能正在运行");
                myTips({title:'修炼提示',message:"自动修炼过程中会自动出售装备,请调整出售装备设置!"});
                intervalId1 = setInterval(() => {
                    cultivateUntilMax();
                }, 100);  // 每隔0.1秒检查一次弹窗状态  
            } else {
                intervalId1 = null;
                clearAllIntervals();
                button1.innerHTML = "修炼";
                enableAllButtons(button2);
                enableAllButtons(button3);
                enableAllButtons(button4);
                enableAllButtons(button5);
                buttonStatus1 = true;
                console.log("自动修炼功能已停止");
            }
        };

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

        button2.onclick = function () {
            if (buttonStatus2 === true) {
                intervalId2 = true;
                button2.innerHTML = "探索";
                disableOtherButtons(button1);
                disableOtherButtons(button3);
                disableOtherButtons(button4);
                disableOtherButtons(button5);
                buttonStatus2 = false;
                console.log("自动探索功能正在运行");
                myTips({title:'探索提示',message:"自动探索将自动出售装备,请调整出售装备设置!"});
                currentRoutingObject.sellingEquipmentShow=true;
                const checkPopupInterval = setInterval(() => {
                    if (!currentRoutingObject.sellingEquipmentShow) {
                        autoExplore();
                        clearInterval(checkPopupInterval); // 停止检查弹窗状态
                    }
                }, 100);  // 每隔0.1秒检查一次弹窗状态
            } else {
                intervalId2 = null;
                clearAllIntervals();
                button2.innerHTML = "探索";
                document.querySelector('.game-container-wrapper').__vue__.$router.push('/')
                enableAllButtons(button1);
                enableAllButtons(button3);
                enableAllButtons(button4);
                enableAllButtons(button5);
                buttonStatus2 = true;
                console.log("自动探索功能已停止");
            }
        };

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

        button3.onclick = function () {
            if (buttonStatus3 === true) {
                button3.innerHTML = "收宠";
                disableOtherButtons(button1);
                disableOtherButtons(button2);
                disableOtherButtons(button4);
                disableOtherButtons(button5);
                buttonStatus3 = false;
                console.log("自动收宠功能正在运行");
                myTips({title:'收宠提示',message:"自动收宠将自动出售装备,请调整出售装备设置!"});
                currentRoutingObject.sellingEquipmentShow=true;
                const checkPopupInterval = setInterval(() => {
                    if (!currentRoutingObject.sellingEquipmentShow ) {
                        startAutoPet();
                        clearInterval(checkPopupInterval); // 停止检查弹窗状态
                    }
                }, 100);  // 每隔0.1秒检查一次弹窗状态
            } else {
                clearAllIntervals();
                intervalId3 = null;
                button3.innerHTML = "收宠";
                enableAllButtons(button1);
                enableAllButtons(button2);
                enableAllButtons(button4);
                enableAllButtons(button5);
                buttonStatus3 = true;
                console.log("自动收宠功能已停止");
            }
        }

        // 增加自动放宠按钮
        var button4 = document.createElement("button");
        button4.innerHTML = "放宠";
        styleButton(button4);

        button4.onclick = function () {
            let confirmRelease = confirm("确定要放生所有未出战灵宠吗?");
            if (confirmRelease) {
                myPlayer.pets = [];
                document.querySelector('.game-container-wrapper').__vue__.$store.commit('setPlayer', myPlayer);
                myTips({title:'放宠提示',message:"已成功放生所有未出战灵宠!"});
                return;
            }
        }

        // 增加灵宠榜按钮
        var button5 = document.createElement("button");
        button5.innerHTML = "灵宠榜";
        styleButton(button5);

        var overlay = document.createElement("div");
        overlay.style.display = "none"; // 默认隐藏遮罩层
        overlay.style.position = "fixed";
        overlay.style.top = "0";
        overlay.style.left = "0";
        overlay.style.width = "100%";
        overlay.style.height = "100%";
        overlay.style.backgroundColor = "rgba(0, 0, 0, 0.5)";
        overlay.style.zIndex = "9998"; // 确保在最上层

        // 创建弹框
        var dialog = document.createElement("div");
        dialog.style.position = "fixed";
        dialog.style.top = "50%";
        dialog.style.left = "50%";
        dialog.style.transform = "translate(-50%, -50%)";
        dialog.style.width = "300px";
        dialog.style.maxHeight = "600px"; // 设置最大高度
        dialog.style.padding = "20px";
        dialog.style.backgroundColor = "white";
        dialog.style.boxShadow = "0px 0px 15px rgba(0, 0, 0, 0.2)";
        dialog.style.borderRadius = "5px";
        dialog.style.zIndex = "10000"; // 在遮罩层之上
        dialog.style.overflowY = "auto"; // 启用垂直滚动条

        // 添加“灵宠榜”文字
        var title = document.createElement("h4");
        title.innerText = "灵宠榜";
        title.style.textAlign = "center"; // 居中显示文字
        title.style.marginBottom = "10px"; // 下方留出一定的空间
        dialog.appendChild(title);

        // 创建排序按钮容器
        var sortContainer = document.createElement("div");
        sortContainer.style.display = "flex";
        sortContainer.style.justifyContent = "space-around";
        sortContainer.style.marginBottom = "10px";

        // 创建排序按钮
        function createStyledButton(text, onClickHandler) {
            var button = document.createElement("button");
            button.innerText = text;
            button.style.padding = "5px 10px";
            button.style.margin = "2px";
            button.style.fontSize = "15px";
            button.style.color = "#fff";
            button.style.backgroundColor = "#007BFF";
            button.style.border = "none";
            button.style.borderRadius = "5px";
            button.style.cursor = "pointer";
            button.style.transition = "background-color 0.3s ease";

            button.onmouseover = function() {
                button.style.backgroundColor = "#0056b3";
            };

            button.onmouseout = function() {
                button.style.backgroundColor = "#007BFF";
            };

            button.onclick = onClickHandler;

            return button;
        }

        var sortByTotal = createStyledButton("综合", function () {
            sortPets('total');
        });

        var sortByHealth = createStyledButton("生命值", function () {
            sortPets('health');
        });

        var sortByAttack = createStyledButton("攻击力", function () {
            sortPets('attack');
        });

        var sortByDefense = createStyledButton("防御力", function () {
            sortPets('defense');
        });

        // 将排序按钮添加到容器
        sortContainer.appendChild(sortByTotal);
        sortContainer.appendChild(sortByHealth);
        sortContainer.appendChild(sortByAttack);
        sortContainer.appendChild(sortByDefense);

        // 将排序按钮容器添加到弹框
        dialog.appendChild(sortContainer);

        // 宠物列表容器
        var petListContainer = document.createElement("div");
        dialog.appendChild(petListContainer);

        // 排序并显示宠物列表的函数
        function sortPets(criteria) {

            // 排序逻辑
            if (Array.isArray(allPets)) {
                allPets.sort(function (a, b) {
                    if (criteria === 'total') {
                        return (b.health + b.attack + b.defense) - (a.health + a.attack + a.defense);
                    } else {
                        return b[criteria] - a[criteria];
                    }
                });
            } else {
                console.error("allPets is not an array.");
            }

            // 清空现有的宠物列表
            petListContainer.innerHTML = '';

            // 遍历排序后的allPets数组并显示元素
            if (allPets.length > 0) {
                allPets.forEach(function(pet, index) {
                    // 创建宠物信息容器
                    var petContainer = document.createElement("div");
                    petContainer.style.display = "flex";
                    petContainer.style.justifyContent = "space-between";
                    petContainer.style.alignItems = "center";
                    petContainer.style.marginBottom = "10px";
                    petContainer.style.padding = "5px";
                    petContainer.style.border = "1px solid #ccc";
                    petContainer.style.borderRadius = "5px";

                    // 宠物信息容器左侧
                    var petInfoContainer = document.createElement("div");

                    // 显示宠物名称
                    var petName = document.createElement("p");
                    petName.innerText = (index + 1) + ". " + pet.name;
                    petName.style.fontWeight = "bold";
                    petInfoContainer.appendChild(petName);

                    // 显示宠物属性
                    var petAttributes = document.createElement("p");
                    petAttributes.innerText = 
                        "生命值: " + pet.health + "\n" +
                        "攻击力: " + pet.attack + "\n" +
                        "防御力: " + pet.defense + "\n" +
                        "闪避率: " + `${(pet.dodge * 100).toFixed(2)}%` + "\n" +
                        "暴击率: " + `${(pet.critical * 100).toFixed(2)}%`;
                    petAttributes.style.whiteSpace = "pre-line"; // 保持换行
                    petInfoContainer.appendChild(petAttributes);

                    // 显示出战状态
                    if (pet === myPlayer.pet) {
                        var battleStatus = document.createElement("p");
                        battleStatus.innerText = "状态: 已出战";
                        battleStatus.style.color = "green";
                        petInfoContainer.appendChild(battleStatus);
                    }

                    // 将宠物信息容器左侧添加到宠物信息容器
                    petContainer.appendChild(petInfoContainer);

                    // 宠物信息容器右侧
                    var buttonsContainer = document.createElement("div");

                    // 创建放生按钮
                    var releaseButton = document.createElement("button");
                    releaseButton.innerText = "放生";
                    releaseButton.style.marginLeft = "10px";
                    releaseButton.style.padding = "5px 10px";
                    releaseButton.style.marginLeft = "10px";
                    releaseButton.style.padding = "5px 10px";
                    releaseButton.style.backgroundColor = "#dc3545";
                    releaseButton.style.color = "white";
                    releaseButton.style.border = "none";
                    releaseButton.style.borderRadius = "5px";
                    releaseButton.style.cursor = "pointer";

                    releaseButton.onmouseover = function() {
                        releaseButton.style.backgroundColor = "#c82333";
                    };

                    releaseButton.onmouseout = function() {
                        releaseButton.style.backgroundColor = "#dc3545";
                    };

                    releaseButton.onclick = function() {
                        releasePet(pet);
                    };

                    buttonsContainer.appendChild(releaseButton);

                    // 创建出战按钮
                    var battleButton = document.createElement("button");
                    if (pet === myPlayer.pet) {
                        battleButton.innerText = "已出战";
                        battleButton.disabled = true;
                        battleButton.style.backgroundColor = "darkgray";
                    } else {
                        battleButton.innerText = "未出战";
                        battleButton.style.backgroundColor = "#28a745";
                        battleButton.onclick = function() {
                            switchBattlePet(pet);
                        };
                    }

                    battleButton.style.marginLeft = "10px";
                    battleButton.style.padding = "5px 10px";
                    battleButton.style.color = "white";
                    battleButton.style.border = "none";
                    battleButton.style.borderRadius = "5px";
                    battleButton.style.cursor = pet === myPlayer.pet ? "not-allowed" : "pointer";

                    battleButton.onmouseover = function() {
                        if (!battleButton.disabled) {
                            battleButton.style.backgroundColor = "#218838";
                        }
                    };

                    battleButton.onmouseout = function() {
                        if (!battleButton.disabled) {
                            battleButton.style.backgroundColor = "#28a745";
                        }
                    };

                    buttonsContainer.appendChild(battleButton);

                    // 将按钮容器添加到宠物信息容器
                    petContainer.appendChild(buttonsContainer);

                    // 将宠物信息容器添加到弹框
                    petListContainer.appendChild(petContainer);
                });
            } else {
                var noPets = document.createElement("p");
                noPets.innerText = "当前没有灵宠。";
                noPets.style.textAlign = "center";
                noPets.style.color = "gray";
                petListContainer.appendChild(noPets);
            }
        }
        function releasePet(pet) {
            if (pet === myPlayer.pet) {
                myPlayer.pet = {};
            } else {
                var index = myPlayer.pets.indexOf(pet);
                if (index !== -1) {
                    myPlayer.pets.splice(index, 1);
                }
            }
            sortPets('total');
        }
        
        function switchBattlePet(newPet) {
            var oldPet = myPlayer.pet;
            myPlayer.pet = newPet;
        
            if (oldPet && Object.keys(oldPet).length > 0) {
                myPlayer.pets.push(oldPet);
            }
        
            var index = myPlayer.pets.indexOf(newPet);
            if (index !== -1) {
                myPlayer.pets.splice(index, 1);
            }
            sortPets('total');
        }

        // 默认按综合排序
        sortPets('total');

        // 创建关闭按钮
        var closeButton = document.createElement("span");
        closeButton.innerHTML = "×";
        closeButton.style.position = "absolute";
        closeButton.style.top = "10px";
        closeButton.style.right = "10px";
        closeButton.style.cursor = "pointer";
        closeButton.style.fontSize = "20px";
        // 将关闭按钮添加到弹框
        dialog.appendChild(closeButton);

        // 将弹框和遮罩层添加到body
        overlay.appendChild(dialog);
        document.body.appendChild(overlay);

        button5.onclick = function () {
            sortPets('total');
            if (overlay.style.display === "block") {
                overlay.style.display = "none";
                enableAllButtons(button1);
                enableAllButtons(button2);
                enableAllButtons(button3);
                enableAllButtons(button4);
            } else {
            overlay.style.display = "block";
            disableOtherButtons(button1);
            disableOtherButtons(button2);
            disableOtherButtons(button3);
            disableOtherButtons(button4);
            }
        }
        overlay.onclick = function (event) {
            if (event.target === overlay || event.target === closeButton) {
                overlay.style.display = "none";
                enableAllButtons(button1);
                enableAllButtons(button2);
                enableAllButtons(button3);
                enableAllButtons(button4);
            }
        }


        buttonContainer.appendChild(button1);
        buttonContainer.appendChild(button2);
        buttonContainer.appendChild(button3);
        buttonContainer.appendChild(button4);
        buttonContainer.appendChild(button5);
        gameContainer.appendChild(buttonContainer);
        myTips({title:'脚本初始化',message:"脚本初始化成功!",type:"success"});



    } else {
        myTips({title:'脚本初始化',message:"脚本初始化失败,请刷新页面后重试!",type:"error"});
    }
}

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.onmouseout = function() {
    //     if (!button.disabled) {
    //         button.style.backgroundColor = "#007bff";
    //     }
    // };

    // 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();