HWM_DuelAlert

Смена цвета значка ГТ, если в текущей заявке есть минимум 1 дуэлянт

À partir de 2017-11-26. Voir la dernière version.

// ==UserScript==
// @name         HWM_DuelAlert
// @namespace    Небылица
// @version      1.12
// @description  Смена цвета значка ГТ, если в текущей заявке есть минимум 1 дуэлянт
// @author       Небылица
// @include      /^https{0,1}:\/\/((www|qrator)\.heroeswm\.ru|178\.248\.235\.15)\/.+/
// @exclude      /^https{0,1}:\/\/((www|qrator)\.heroeswm\.ru|178\.248\.235\.15)\/(login|war|cgame|frames|chat|chatonline|ch_box|chat_line|ticker|chatpost)\.php.*/
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    'use strict';

    var delay = 2000; // задержка между временем запроса страницы ГТ и проверкой результата

    var icon = document.querySelector("img[title=\"Гильдия Тактиков\"]");
    var currentDate = new Date();
    var currentMoment = Date.now()-currentDate.getTimezoneOffset()*60000;

    if (icon !== null && (currentDate.getUTCMinutes() % 10) !== 9){ // проверка по времени (запускать ли вообще скрипт)
        // если нет валидной по времени информации, что дуэлянт есть, то запрашиваем данные
        if (!(GM_getValue("duelistsPresent") && (currentMoment-GM_getValue("checkMoment")) < 540000)){
            GM_setValue("duelistsPresent", false);

            // получаем код страницы ГТ
            var xhr = new XMLHttpRequest();
            var response;

            xhr.open('GET', "pvp_guild.php", true);
            xhr.send();
            xhr.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    response = xhr.responseText;
                }
            };

            window.setTimeout(function(){
                var duelistsNumber;
                // считаем кол-во дуэлянтов (кроме себя в случае нахождения в заявке)
                if (response.match(/<\/b>\s([\d]+?)<br>/) !== null){
                    duelistsNumber = parseInt(response.match(/<\/b>\s([\d]+?)<br>/)[1]) - 1; // для наблюдения изнутри заявки
                } else if (response.match(/\s\(([\d]+?)\)/) !== null){
                    duelistsNumber = parseInt(response.match(/\s\(([\d]+?)\)/)[1]); // для наблюдения извне заявки
                } else {duelistsNumber = -1;}

                // если есть другие дуэлянты, то меняем значок и запоминаем результат
                if (duelistsNumber > 0){
                    icon.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAA6ElEQVR42n2RvwrCMBDG+wIKahAdVEQEqbYIogguIqYgIuIg2Hcq9Gk6d1Bwyea/tbtL3uDzmqagxfbgI1y43+XynWH8CXmycZ0zBJNqck4rMIpC7q3iAm9UhjcoweuRuqQ25a0vUf7b8WirC2ExdQbdZATRS3K5zLwoDxYiZwjXWcPlv4qmJuQiC9DM0cpUAF43vC9n4HGDuyZgTMAsC+wIWJqqI54auGvAImCSA/hbrqAYiIt9zouB+JP+hifFDoeosxxA+y76DGGnhqBZQdioQTS1S7OcvQhT29rStrZZ8QLTSPfwLz6syKeScQa/4wAAAABJRU5ErkJggg==";
                    GM_setValue("duelistsPresent", true);
                    GM_setValue("checkMoment", currentMoment);
                }
            }, delay);
        } else { // если есть валидная по времени информация, что дуэлянт есть, то меняем значок сразу
            icon.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAA6ElEQVR42n2RvwrCMBDG+wIKahAdVEQEqbYIogguIqYgIuIg2Hcq9Gk6d1Bwyea/tbtL3uDzmqagxfbgI1y43+XynWH8CXmycZ0zBJNqck4rMIpC7q3iAm9UhjcoweuRuqQ25a0vUf7b8WirC2ExdQbdZATRS3K5zLwoDxYiZwjXWcPlv4qmJuQiC9DM0cpUAF43vC9n4HGDuyZgTMAsC+wIWJqqI54auGvAImCSA/hbrqAYiIt9zouB+JP+hifFDoeosxxA+y76DGGnhqBZQdioQTS1S7OcvQhT29rStrZZ8QLTSPfwLz6syKeScQa/4wAAAABJRU5ErkJggg==";
        }
    }
})();