// ==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 // @downloadURL none // ==/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]+?)
/) !== null){ duelistsNumber = parseInt(response.match(/<\/b>\s([\d]+?)
/)[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]+?)
/) !== null){ duelistsNumber = parseInt(response.match(/<\/b>\s([\d]+?)
/)[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=="; } } })();