Смена цвета значка ГТ, если в текущей заявке есть минимум 1 дуэлянт
Mint
// ==UserScript==
// @name HWM_DuelAlert
// @namespace Небылица
// @version 1.14
// @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 icon = document.querySelector("img[src*=\"team_ev_top.gif\"][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);
// если находимся не на странице ГТ, то запрашиваем её код с сервера
if (location.pathname.indexOf("pvp_guild.php") === -1){
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;
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);
}
}
};
} else { // если находимся на странице ГТ, то получаем её код сразу в браузере
var response = document.documentElement.outerHTML;
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);
}
}
} else { // если есть валидная по времени информация, что дуэлянт есть, то меняем значок сразу
icon.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAA6ElEQVR42n2RvwrCMBDG+wIKahAdVEQEqbYIogguIqYgIuIg2Hcq9Gk6d1Bwyea/tbtL3uDzmqagxfbgI1y43+XynWH8CXmycZ0zBJNqck4rMIpC7q3iAm9UhjcoweuRuqQ25a0vUf7b8WirC2ExdQbdZATRS3K5zLwoDxYiZwjXWcPlv4qmJuQiC9DM0cpUAF43vC9n4HGDuyZgTMAsC+wIWJqqI54auGvAImCSA/hbrqAYiIt9zouB+JP+hifFDoeosxxA+y76DGGnhqBZQdioQTS1S7OcvQhT29rStrZZ8QLTSPfwLz6syKeScQa/4wAAAABJRU5ErkJggg==";
}
}
})();