HWM_AutoReportMGTasks

Автосдача заданий ГН

目前為 2017-12-11 提交的版本,檢視 最新版本

// ==UserScript==
// @name         HWM_AutoReportMGTasks
// @namespace    Небылица
// @version      1.24
// @description  Автосдача заданий ГН
// @author       Небылица
// @include      /^https{0,1}:\/\/((www|qrator)\.heroeswm\.ru|178\.248\.235\.15)\/(map|mercenary_guild|home)\.php/
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    "use strict";

    // Вспомогательные функции
    function sendGETRequest(url, callback){ // Универсалка для отправки GET-запроса к url с исполнением функции callback при получении ответа
        var xhr = new XMLHttpRequest();

        xhr.open("GET", url, true);
        xhr.onreadystatechange = function(){
            if (xhr.readyState === 4 && xhr.status === 200){
                if (typeof callback === "function"){
                    callback.apply(xhr);
                }
            }
        };
        xhr.send();
    }
    //

    // Код для страницы карты
    if (location.pathname.indexOf("map.php") !== -1){
        // проверяем наличие активного задания ГН и нахождение в секторе гильдии
        if (GM_getValue("taskActive") && document.querySelector("img[src*='merc.gif'][title='Гильдия Наемников']") !== null){
            // запрашиваем страницу ГН
            sendGETRequest("mercenary_guild.php", function(){
                // получаем ответ и проверяем, было ли задание сдано
                var response = this.responseText;

                if (response.indexOf("<b>Статус</b>") !== -1 && response.indexOf("минут") === -1){
                    // убираем флаг активного задания
                    GM_setValue("taskActive", false);

                    // запоминаем текст награды и переходим в ГН
                    var rewardArr = response.match(/<Br><br>([\S\s]+?)<table\sborder=0\scellspacing=0\scellpadding=0>/);
                    if (rewardArr !== null){
                        GM_setValue("reward", rewardArr[1]);
                    }

                    window.open("mercenary_guild.php", "_self");
                }
            });
        }
    }

    // Код для страницы ГН
    if (location.pathname.indexOf("mercenary_guild.php") !== -1){
        // если имеется сохранённый текст только что сданного задания, то вставляем его в страницу и убираем прежнее значение
        if (GM_getValue("reward") !== "-1"){
            var tdRowspan2 = document.querySelector("td[rowspan='2']");
            tdRowspan2.innerHTML = tdRowspan2.innerHTML.split("<table border")[0] + GM_getValue("reward") + "<table border" + tdRowspan2.innerHTML.split("<table border")[1];

            GM_setValue("reward", "-1");
        } else{
            // проверяем, нет ли принятого задания, и запоминаем значение в зависимости от ответа
            var documentInnerHTHL = document.documentElement.innerHTML;
            if (documentInnerHTHL.indexOf("минут") !== -1 && documentInnerHTHL.indexOf("Принять") === -1){
                GM_setValue("taskActive", true);

                // проверяем, нет разбойники ли это и запоминаем при положительном ответе
                if (documentInnerHTHL.indexOf("разбойники {") !== -1){
                    GM_setValue("ifRogues", true);
                }
            } else{
                GM_setValue("taskActive", false);
            }
        }
    }

    // Код для домашней страницы
    if (location.pathname.indexOf("home.php") !== -1){
        // проверяем наличие активного задания на разбойников
        if (GM_getValue("taskActive") && GM_getValue("ifRogues")){
            var warid = document.querySelector("a[href^='warlog.php?warid=']").getAttribute("href").replace("warlog.php?warid=", "");
            // запрашиваем страницу результатов боя
            sendGETRequest("battle.php?lastturn=-3&warid=" + warid, function(){
                // получаем ответ и проверяем, разбойники ли были только что, и были ли они побеждены
                var response = this.responseText;

                if (response.match(/<b>Проигравшая\sсторона:<\/b><\/font><br\s\/><b><font\scolor="#.{6}">(.+?)<\/font>/)[1].indexOf("разбойники") !== -1){
                    // сдаём груз и забываем текущее задание
                    GM_setValue("ifRogues", false);

                    window.open("map.php?action=accept_merc_task3", "_self");
                }
            });
        }
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址