DailyHelper

Помощь

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name           DailyHelper
// @author         omne
// @namespace      omne
// @connect        daily.heroeswm.ru
// @description    Помощь
// @version        0.1
// @include        /^https{0,1}:\/\/((www|qrator|)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/(leader_guild|war).php/
// @grant          GM_xmlhttpRequest
// @license        GNU GPLv3
// ==/UserScript==

(function() {

var host = location.host;
var imgHost = host.includes("my.") ? "//cfcdn.lordswm.com" : "//dcdn.heroeswm.ru";
var dailyHost = host.includes("my.") ? "//daily.lordswm.com" : "//daily.heroeswm.ru";
if (/leader_guild/.test(location.href)) {
    if (document.documentElement.innerHTML.indexOf("Опасная цель устранена!") != -1) {
        let cent = document.createElement('center');
        cent.innerHTML = "Вы молодцы! Приходите завтра."
        document.querySelector('.wbwhite').append(cent);
    } else {
        var lg;
        if (document.documentElement.innerHTML.indexOf("Ваша армия слишком слаба") == -1) {
            lg = Math.ceil((Number(document.documentElement.innerHTML.match("attr_leadership.+?<b>([^<]+)")[1].replace(",", "")) - 10001)/1000);
        } else {
            lg = Math.ceil((Number(document.documentElement.innerHTML.match("на ([0-9,]+) или больше очков")[1].replace(",", "")) - 9999)/1000);
        }
        var creatures = {};
        getCol();
    }
}

function getCol() {
    GM_xmlhttpRequest({
        method: "GET",
        url: "/leader_army.php",
        onload: function(res) {
            let data = res.responseText;
            let monsters = [];
            monsters[0] = data.match(/obj\[[0-9]+\]\[\'monster_id\'\] = \'[^\']+\'/g);
            monsters[1] = data.match(/obj\[[0-9]+\]\[\'count\'\] = [0-9]+/g);
            for (let i = 0; i < monsters[0].length; i++) {
                let id = monsters[0][i].match(/obj\[[0-9]+\]\[\'monster_id\'\] = \'([^\']+)\'/)[1];
                let count = monsters[1][i].match(/obj\[[0-9]+\]\[\'count\'\] = ([0-9]+)/)[1];
                creatures[id] = Number(count);
            }
            getLgd(dailyHost + "/api.php?t=lgd&lg=" + lg);
        }
    });
}

function getCre(id, img, rarity, count, flag) {
     return '<div class="cre_creature" style="width: 45px"><div class="cre_mon_parent" style="height:37px">' +
                        '<img src="' + imgHost + '/i/army_html/fon_lvl' + rarity + '.png?v=1" width="45" height="37" class="cre_mon_image2">' +
                        '<img src="' + imgHost + '/i/portraits/' + img + 'anip33.png" width="45" height="37" class="cre_mon_image1">' +
                        '<img src="' + imgHost + '/i/army_html/frame_lvl' + rarity + '.png?v=1" width="45" height="37" class="cre_mon_image2" title="" border="0">' +
                        '</div>' +
                        '<div class="cre_amount" style="font-size:100%">' + count + '</div>' +
         '<div class="' + (flag ? "y":"n") + '"></div></div>';
}

var post_army = Array();

function army_try_to_submit(num) {
    let body = post_army[num];
    let ReqSend = new XMLHttpRequest();
    ReqSend.open('POST', '/leader_army_apply.php', true);
    ReqSend.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    ReqSend.addEventListener("load", function() {location.reload()});
    ReqSend.send(body);
}
function getLgd(url) {
    GM_xmlhttpRequest({
        method: "GET",
        url: url,
        onload: function(res) {
            console.log(creatures);
            let cent = document.createElement('center');
            cent.innerHTML += '<style>.y {background-color: green;}.n {background-color: red;}.y, .n {position: absolute;left: 2px;top: 2px;width: 10px;height: 10px;border-radius: 5px;}.examples{width:450px;border-bottom: 1px solid #cad3dc;border-left: 1px solid #cad3dc;}.cont{border-right: 1px solid #cad3dc;border-top: 1px solid #cad3dc;}.info{padding:10px;flex:1}.battle{flex:7;text-align: left;}.examples>div{padding:5px}.cont{display:flex;align-items: center;}.info, .info *{font-size:12px}</style>';
            cent.innerHTML += '<b>Доступные прохождения:</b>';
            let battleExamples = document.createElement('div');
            battleExamples.className = "examples";
            let closedBattleExamples = document.createElement('div');
            closedBattleExamples.className = "examples";
            let data = JSON.parse(res.responseText);
            console.log(data);
            for(let i in data) {
                let cont = document.createElement('div');
                cont.className = "cont";
                let info = document.createElement('div');
                info.className = "info";
                info.innerHTML += data[i].proc + "%<BR><a href = '/war.php?lt=-1&warid=" + data[i].warid + "&show_for_all="+ data[i].key +"'>Бой</a>";
                cont.append(info);
                let battle = document.createElement('div');
                battle.className = "battle";
                post_army[i] = "idx=0";
                let battleColsed = false;
                for (let j in data[i].army) {
                    let flag = false;
                    if ((data[i].army[j].id in creatures)&&(creatures[data[i].army[j].id] > data[i].army[j].count)) {
                        post_army[i] += "&countv" + (Number(j) + 1) + "=" + data[i].army[j].count + "&mon_id" + (Number(j) + 1) + "=" + data[i].army[j].id;
                        flag = true;
                    } else {
                         battleColsed = true;
                    }
                    battle.innerHTML += getCre(data[i].army[j].id, data[i].army[j].img, data[i].army[j].rarity, data[i].army[j].count, flag);
                }
                battle.innerHTML += '<img title = "Набрать эту армию" id = "b'+ i +'" style = "cursor:pointer;float:right" width = "35px" src="' + imgHost + '/i/combat/btn_recruit.png">';
                cont.append(battle);
                if (battleColsed) {
                    closedBattleExamples.append(cont);
                } else {
                    battleExamples.append(cont);
                }
            }
            cent.append(battleExamples);
            cent.innerHTML += '<b>Недоступные прохождения:</b>';
            cent.append(closedBattleExamples);
            document.querySelector('.wbwhite').append(cent);
            for (let i in data) {
                document.getElementById("b"+ i).onclick = function() {army_try_to_submit(i)};
            }
        }
    });
}

})();