// ==UserScript==
// @name hwm_GO_exp
// @description Helper to guild of Hunters (2015.10.14)
// @author ElMarado (Based on script Mantens)
// @version 3.51
// @include http://178.248.235.15/group_wars.php*
// @include http://178.248.235.15/plstats_hunters.php*
// @include http://178.248.235.15/home.php*
// @include http://178.248.235.15/map.php*
// @include http://*.heroeswm.*/group_wars.php*
// @include http://*.heroeswm.*/plstats_hunters.php*
// @include http://*.heroeswm.*/home.php*
// @include http://*.heroeswm.*/map.php*
// @grant GM_getValue
// @grant GM_setValue
// @icon https://app.box.com/representation/file_version_34029013909/image_2048/1.png?shared_name=hz97b2qwo2ycc5ospb7ccffn13w3ehc4
// @namespace https://greasyfork.org/users/14188
// ==/UserScript==
(function () {
var max_exp = 0;
var version = "3.51";
var url_cur = location.href;
var url_home = "home.php";
var url_map = "map.php";
var url_war = "group_wars.php";
var url_1 = "www.heroeswm.ru";
var url_2 = "178.248.235.15";
var url_3 = "qrator.heroeswm.ru";
var url_1_home = "www.heroeswm.ru/home.php";
var url_2_home = "178.248.235.15/home.php";
var url_3_home = "qrator.heroeswm.ru/home.php";
var str_url = "https://greasyfork.org/ru/scripts/11692-hwm-go-exp";
var all_tables = document.getElementsByTagName('table');
var short_button = GM_getValue("short_button" , false);
var enable_Exp_Half = GM_getValue("enable_Exp_Half" , true);
var enable_5_procent = GM_getValue("enable_5_procent" , false);
var only_Gud_ExpUm = GM_getValue("only_Gud_ExpUm", true);
var alarm_Green_Hunt = GM_getValue("alarm_Green_Hunt", false);
var grin_Pis = GM_getValue("grin_Pis", false);
if(url_cur.indexOf(url_1) != -1) {
var pl_level = GM_getValue("hunt_exp_pl_1_level", "none"); //ур.героя
var koef = GM_getValue("koef_dop_exp_1", 1.0); //коэф перекача www
var limit_exp = GM_getValue("limit_exp_1", 0); //С какого порога опыта пропускать охоты
var google_str = GM_getValue("google_str_1", ""); //строка фильтра
var skip_mode = GM_getValue("skip_mode_1", true); //Пропускать по опыту или по имени
}
if(url_cur.indexOf(url_2) != -1) {
var pl_level = GM_getValue("hunt_exp_pl_2_level", "none");
var koef = GM_getValue("koef_dop_exp_2", 1.0);
var limit_exp = GM_getValue("limit_exp_2", 0);
var google_str = GM_getValue("google_str_2", "");
var skip_mode = GM_getValue("skip_mode_2", true);
}
if(url_cur.indexOf(url_3) != -1) {
var pl_level = GM_getValue("hunt_exp_pl_3_level", "none");
var koef = GM_getValue("koef_dop_exp_3", 1.0);
var limit_exp = GM_getValue("limit_exp_3", 0);
var google_str = GM_getValue("google_str_3", "");
var skip_mode = GM_getValue("skip_mode_3", true);
}
//********************
var str_pl_lvl = ustring("Боевой уровень: ");
var str_sum_exp = ustring("За них дадут <B> STR1dopSTR </B> опыта. Потом их будет ~STR6 шт.");
var str_kill_now = ustring("Убей сейчас! На STR9 уровне за них дадут <B> STR10 </B> опыта.");
var str_hlp_exp = ustring("За убийство с помощником (50/50) Вам дадут <B> STR2 </B> опыта. В следующий раз предложат ~STR7 шт.");
var str_min_kol = ustring("Для Min (~5%) прироста надо убить не более STR3 шт (STR4 опыта). В следующий раз предложат ~STR8 шт.");
var str_exp_helper = ustring("Опыт помощника: [70..133]*Уровень*Набранная умка*[1.1-Зелье].");
var str_green_hunt = ustring("Выгодная охота");
var str_exp = ustring(" опыта.");
var str_settings_1 = ustring(" Настройки ГО ");
var str_settings_2 = ustring(" ГО ");
var str_start = ustring("Скрипт: Помощник ГО. Версия: ");
var str_show_1 = ustring("Отображать опыт с помощником, если убьёте по 50%");
var str_show_2 = ustring("Отображать сколько убить мобов для минимального прироста");
var str_show_3 = ustring("Отображать формулу опыта помощника (при выгодных охотах)");
var str_hilight = ustring("Подсвечивать охоты с выгодной экспоумкой (на странице групповых боёв)");
var str_alarm_hunt = ustring("Предупреждать если есть незаполненная выгодная охота (в групповых боях)");
var str_Grin_Pis = ustring("Включить Грин Пис (скрывать предложения охот)");
var str_short_button = ustring("Сделать кнопку настроек короткую.");
var str_koef_0 = ustring("Текущий коэффициент перекача: ");
var str_koef_1 = ustring("Введите новый коэффициент перекача от 1.0 до 9.9999: ");
var str_skip_select_1 = ustring("Пропускать мобов: ");
var str_skip_select_2 = ustring("по опыту (1)");
var str_skip_select_3 = ustring("по имени (2)");
var str_skip_hunt = ustring("1. Пропускать охоты с опытом больше чем:");
var str_title_1 = ustring("Если значение 0, то опыт не учитывается.");
var str_skip_hunt_txt = ustring("2. Пропускать мобов не содержащих в имени сочетания символов:");
var str_title_2 = ustring("Регист букв не имеет значения. Всё кроме русских букв, цифр и пробелов удаляется. Если пусто - никого не пропускает.");
var str_need_skip = ustring("ГO. Охоты можно пропустить.");
var str_skip = ustring("ГO. Охоту пропускаю.");
var str_hunt_found = ustring("ГO. Охота найдена.");
var str_no_found_in_base= ustring("Не найдено в базе существ. Возможно опечатались или стоит не тот язык.");
var str_show_archive = ustring("Архив рекордов до 1.03.2015");
var str_hide_archive = ustring("Текущие рекорды");
var str_update = ustring("Проверить обновление скрипта.");
var str_autor = ustring("Сообщить автору о найденной ошибке.");
var str_url_aut = ustring("/sms-create.php?mailto=ElMarado&subject=Скрипт: Помощник ГО v")+version+ustring(". Найдена ошибка:");
//************ Начало фрагментов кода от (C) Demin с моими вставками и комментариями **********************************
function showSettings() {
if (url_cur.indexOf('map.php') == -1) return;
var x1= document.querySelector("td >a[href*='ecostat.php']");
if (x1 == null) return;
x1 = x1.parentNode;
var str_settings, width_but, left_pos;
if (short_button==0) { str_settings = str_settings_1; width_but = 80; left_pos = 393;}
else { str_settings = str_settings_2; width_but = 20; left_pos = 468;}
var d = document.createElement('div');
d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px '+left_pos+'px; text-align: center;');//Положение кнопки, для вызова настроек
d.innerHTML = '<style> .hwm_go * {font-size: 12px; color: #FFFF00;} .cell_go {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
'<table class="hwm_go" width='+width_but+'px> <tr height=20>' + // Размер кнопки и фон, для вызова настроек
'<td class="cell_go" style="cursor:pointer" id="set_go"><font style="font-size:12px;">'+str_settings+'</font></td>' +
'</tr> </table>';
x1.insertBefore(d,x1.firstChild); //Вставка куска
addEvent( $("set_go"), "click", settings_go ); //Привязка к куску на клик вызов функции
//************
function settings_go_close()
{
var bg = $('bgOverlay');
var bgc = $('bgCenter');
bg.parentNode.removeChild(bg);
bgc.parentNode.removeChild(bgc);
}
function settings_go()
{
var bg = $('bgOverlay');
var bgc = $('bgCenter');
var bg_height = ScrollHeight();
if ( !bg )
{
bg = document.createElement('div');
document.body.appendChild( bg );
bgc = document.createElement('div');
document.body.appendChild( bgc );
}
bg.id = 'bgOverlay';
bg.style.position = 'absolute';
bg.style.left = '0px';
bg.style.width = '100%';
bg.style.background = "#000000";
bg.style.opacity = "0.5";
bg.style.zIndex = "1100";
bgc.id = 'bgCenter';
bgc.style.position = 'absolute';
bgc.style.left = ( ( ClientWidth() - 580 ) / 2 ) + 'px';
bgc.style.width = '600px';
bgc.style.background = "#F6F3EA";
bgc.style.zIndex = "1105";
addEvent(bg, "click", settings_go_close);
//форма и внешний вид окно настроек
bgc.innerHTML = '<div style="border:1px solid #abc;padding:5px;margin:2px;"><div style="float:right;border:1px solid #abc;width:15px;height:15px;text-align:center;cursor:pointer;" id="bt_close_tr" title="Close">x</div><table>'+
//заголовок окна настроек
'<tr><td colspan=2><b>'+str_start+'<font style="color:#0070FF;">'+version+'</font></b><hr/></td></tr>' +
//Опыт с помощником 50/50
'<tr><td colspan=2><label><input type=checkbox '+(enable_Exp_Half=="1"?"checked":"")+' id=set_enable_Exp_Half title=""> '+str_show_1+'</label><br></td></tr>'+
//кол-во для мин.прироста
'<tr><td colspan=2><label><input type=checkbox '+(enable_5_procent=="1"?"checked":"")+' id=set_enable_5_procent title=""> '+str_show_2+'</label><br></td></tr>'+
//подсвечивать выгодные охоты
'<tr><td colspan=2><label><input type=checkbox '+(only_Gud_ExpUm=="1"?"checked":"")+' id=set_only_Gud_ExpUm title=""> '+str_hilight+'</label><br></td></tr>'+
//Предупреждать если есть незапоненная выгодная охота.
'<tr><td colspan=2><label><input type=checkbox '+(alarm_Green_Hunt=="1"?"checked":"")+' id=set_alarm_Green_Hunt title=""> '+str_alarm_hunt+'</label><br></td></tr>'+
//Грин Пис.
'<tr><td colspan=2><label><input type=checkbox '+(grin_Pis=="1"?"checked":"")+' id=set_Grin_Pis title=""> '+str_Grin_Pis+'</label><br><hr/></td></tr>'+
//коэфициент перекача
'<tr><td colspan=2>'+str_koef_0+'<font style="color:#0070FF;"><b id=k_p>'+Number(koef).toFixed(4) +'</b></font><br></td></tr>' +
'<tr><td colspan=2>'+str_koef_1+' <input id="set_koef" value="'+ Number(koef).toFixed(4) +'"size="4" maxlength="6"> <input type="submit" id="set_koef_ok" value="OK"><br><hr/></td></tr>'+
//Выбор пропусков str_skip_select_3
'<tr><td colspan=2>'+str_skip_select_1+
'<label><input type=checkbox '+(skip_mode=="1"?"checked":"")+' id=set_skip_mode1 title="">'+str_skip_select_2+'</label>'+
'<label><input type=checkbox '+(skip_mode=="0"?"checked":"")+' id=set_skip_mode2 title="">'+str_skip_select_3+'</label></td></tr>'+
//пропуск охот по опыту
'<tr><td width="52%">'+str_skip_hunt+'</td><td width="48%" align="left" title="'+str_title_1+'"> '+
'<input id="set_limit_exp" value="'+limit_exp+'" size="3" maxlength="5"><input type="submit" id="set_limit_exp_ok" value="OK"></td></tr>'+
//пропуск охот по тексту
'<tr><td colspan=2>'+str_skip_hunt_txt+'</td></tr>'+
'<tr><td colspan=2" title="'+str_title_2+'">'+
'<input id="set_google_str" value="'+google_str+'" size="80" maxlength="80"><input type="submit" id="set_google_str_ok" value="OK"></td></tr>'+
'<tr><td colspan=2><hr/></td></tr>'+
//Сделать кнопку настройки короткую/длинную
'<tr><td colspan=2><label><input type=checkbox '+(short_button=="1"?"checked":"")+' id=set_short_button title=""> <font size="1" color="blue">'+str_short_button+'</font></label><br><hr/></td></tr>'+
//ссылка на сайт скрипта
'<tr><td><a href="'+str_url+'">'+str_update+'</a></td><td colspan=2 align="right"><a href="'+str_url_aut+'">'+str_autor+'</a></td></tr></table>'; //концовка
//назначение вызова функция при событиях кнопок и чекбоксов
addEvent($("bt_close_tr"), "click", settings_go_close); //крестик в углу
addEvent($("set_enable_Exp_Half"), "click", change_enable_Exp_Half); //чек-бокс
addEvent($("set_enable_5_procent"), "click", change_enable_5_procent); //чек-бокс
addEvent($("set_only_Gud_ExpUm"), "click", change_only_Gud_ExpUm); //чек-бокс
addEvent($("set_alarm_Green_Hunt"), "click", change_alarm_Green_Hunt); //чек-бокс
addEvent($("set_Grin_Pis"), "click", change_Grin_Pis); //чек-бокс
addEvent($("set_short_button"), "click", change_short_button); //чек-бокс
addEvent($("set_koef_ok"), "click", change_koef); //поле ввода
addEvent($("set_limit_exp_ok"), "click", change_limit_exp); //поле ввода
addEvent($("set_google_str_ok"), "click", change_google_str); //строка ввода
addEvent($("set_skip_mode1"), "click", change_skip_mode); //радио
addEvent($("set_skip_mode2"), "click", change_skip_mode); //радио
bg.style.top = '0px';
bg.style.height = bg_height + 'px';
bgc.style.top = ( window.pageYOffset + 155 ) + 'px';
bg.style.display = '';
bgc.style.display = '';
}
//********* обработчики полей ввода *******
function change_skip_mode()
{
skip_mode = !skip_mode;
document.getElementById('set_skip_mode1').checked = skip_mode;
document.getElementById('set_skip_mode2').checked = !skip_mode;
if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_mode_1", skip_mode);
if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_mode_2", skip_mode);
if ( url_cur.indexOf(url_3) != -1) GM_setValue("skip_mode_3", skip_mode);
}
function change_koef()
{
if ( Number( $("set_koef").value ) >= 1 ) koef = $("set_koef").value; else koef = Number(1.0);
document.getElementById('k_p').innerHTML = Number(koef).toFixed(4);
if ( url_cur.indexOf(url_1) != -1) GM_setValue("koef_dop_exp_1", koef);
if ( url_cur.indexOf(url_2) != -1) GM_setValue("koef_dop_exp_2", koef);
if ( url_cur.indexOf(url_3) != -1) GM_setValue("koef_dop_exp_3", koef);
}
function change_limit_exp()
{
if ( Number( $("set_limit_exp").value ) >= 0 ) limit_exp = Number($("set_limit_exp").value).toFixed(0); else limit_exp = 0;
if ( url_cur.indexOf(url_1) != -1) GM_setValue("limit_exp_1", limit_exp);
if ( url_cur.indexOf(url_2) != -1) GM_setValue("limit_exp_2", limit_exp);
if ( url_cur.indexOf(url_3) != -1) GM_setValue("limit_exp_3", limit_exp);
}
function change_google_str()
{
var name_mob;
google_str = ustring($ustring($("set_google_str").value).replace(/[^ 0-9А-Яа-яЁё)]/g, ""));//удаление лишних символов
google_str = google_str.toLocaleLowerCase().trim();//конвертируем в маленькие символы и убираем пробелы в конце и начале.
google_str = google_str.replace(/ {1,}/g," "); //удаление множественных пробелов
document.getElementById('set_google_str').value = google_str;
var google_array = google_str.split(" ");
for (var i in google_array) { //перебор слов поиска
for (var key in mob_rus_exp) { //перебор имен существ из базы
name_mob = key.replace(/\s+/g, '');//удаляем все пробелы в имени
if ((google_str.length == 0) || (ustring(name_mob).toLocaleLowerCase().indexOf(google_array[i]) != -1)) {
//если пусто или слово подходит для поиска
if ( url_cur.indexOf(url_1) != -1) GM_setValue("google_str_1", google_str);
if ( url_cur.indexOf(url_2) != -1) GM_setValue("google_str_2", google_str);
if ( url_cur.indexOf(url_3) != -1) GM_setValue("google_str_3", google_str);
return;
}
}
}
alert(str_no_found_in_base);
}
//*********** обработчики чек-боксов *****
function change_enable_Exp_Half() {GM_setValue("enable_Exp_Half", enable_Exp_Half = !enable_Exp_Half);}
function change_enable_5_procent() {GM_setValue("enable_5_procent",enable_5_procent = !enable_5_procent);}
function change_only_Gud_ExpUm() {GM_setValue("only_Gud_ExpUm", only_Gud_ExpUm = !only_Gud_ExpUm);}
function change_alarm_Green_Hunt() {GM_setValue("alarm_Green_Hunt",alarm_Green_Hunt = !alarm_Green_Hunt);}
function change_Grin_Pis() {GM_setValue("grin_Pis", grin_Pis = !grin_Pis);}
function change_short_button() {GM_setValue("short_button",short_button = !short_button);
if (short_button==0) { str_settings = str_settings_1; width_but = 80; left_pos = 393;}
else { str_settings = str_settings_2; width_but = 20; left_pos = 468;}
d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px '+left_pos+'px; text-align: center;');//Положение кнопки, для вызова настроек
d.innerHTML = '<style> .hwm_go * {font-size: 12px; color: #FFFF00;} .cell_go {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
'<table class="hwm_go" width='+width_but+'px> <tr height=20>' + // Размер кнопки и фон, для вызова настроек
'<td class="cell_go" style="cursor:pointer" id="set_go"><font style="font-size:12px;">'+str_settings+'</font></td>' +
'</tr> </table>';
addEvent( $("set_go"), "click", settings_go ); //Привязка к куску на клик вызов функции
}
//********** непонятно что, взято 1:1 у Demin ******
function $(id) { return document.querySelector("#"+id); }
function addEvent(elem, evType, fn) {
if (elem.addEventListener) elem.addEventListener(evType, fn, false);
else if (elem.attachEvent) elem.attachEvent("on" + evType, fn);
else elem["on" + evType] = fn;
}
function ClientWidth() {return document.compatMode=='CSS1Compat' && document.documentElement?document.documentElement.clientWidth:document.body.clientWidth;}
function ScrollHeight() {return Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);}
}
//************ Конец фрагментов кода от (C) Demin **********************************
var sectors = {
"cx=50&cy=50":1, //Empire Capital
"cx=51&cy=50":2, //East River
"cx=50&cy=49":3, //Tiger Lake
"cx=51&cy=49":4, //Rogues' Wood
"cx=50&cy=51":5, //Wolf Dale
"cx=50&cy=48":6, //Peaceful Camp
"cx=49&cy=51":7, //Lizard Lowland
"cx=49&cy=50":8, //Green Wood
"cx=49&cy=48":9, //Eagle Nest
"cx=50&cy=52":10, //Portal Ruins
"cx=51&cy=51":11, //Dragon Caves
"cx=49&cy=49":12, //Shining Spring
"cx=48&cy=49":13, //Sunny Sity
"cx=52&cy=50":14, //Magma Mines
"cx=52&cy=49":15, //Bear Mountain
"cx=52&cy=48":16, //Fairy Trees
"cx=53&cy=50":17, //Harbour City (Port City)
"cx=53&cy=49":18, //Mithril Coast
"cx=51&cy=52":19, //GreatWall
"cx=51&cy=53":20, //Titans' Valley
"cx=52&cy=53":21, //Fishing Village
"cx=52&cy=54":22, //Kingdom Capital
"cx=48&cy=48":23, //Ungovernable Steppe
"cx=51&cy=48":24, //Crystal Garden
"cx=53&cy=52":25, //East Island
"cx=49&cy=52":26, //The Wilderness
"cx=48&cy=50":27 //Sublime Arbor
}
var mob_rus_exp = {//228 существ
"Адепты" :121,
"Адские жеребцы" :136,
"Адские жнецы" :250,
"Адские псы" :33,
"Ангелы" :330,
"Арбалетчики" :19,
"Архангелы" :390,
"Архидемоны" :312,
"Архидьяволы" :311,
"Архиличи" :110,
"Архимаги" :70,
"Ассасины" :33,
"Астральные драконы" :310,
"Баньши" :205,
"Бегемоты" :350,
"Берсерки" :42,
"Бестии" :30,
"Бесы" :6,
"Бехолдеры" :33,
"Боевые грифоны" :45,
"Боевые единороги" :135,
"Боевые кентавры" :21,
"Боевые маги" :72,
"Вампиры" :68,
"Вармонгеры" :36,
"Ведьмы-призраки" :30,
"Великие левиафаны" :300,
"Верховные друиды" :101,
"Вестники смерти" :205,
"Виверны" :170,
"Визири джиннов" :110,
"Владычицы тени" :185,
"Водные элементали" :57,
"Вожаки" :100,
"Воздушные элементали" :59,
"Воины-наёмники" :25,
"Воители" :12,
"Воры-колдуны" :35,
"Воры-разведчики" :35,
"Воры-убийцы" :35,
"Высшие ангелы" :390,
"Высшие вампиры" :70,
"Высшие личи" :100,
"Гарпии" :29,
"Гарпии-ведьмы" :45,
"Гарпунеры" :18,
"Гигантские ящеры" :25,
"Гидры" :108,
"Глубоководные черти" :140,
"Гниющие зомби" :17,
"Гоблины" :5,
"Гоблины-лучники" :9,
"Гоблины-маги" :9,
"Гоблины-трапперы" :15,
"Гоги" :13,
"Големы смерти" :329,
"Головорезы" :6,
"Горные стражи" :24,
"Гремлины" :5,
"Гремлины-вредители" :9,
"Грифоны" :59,
"Громовержцы" :162,
"Демонессы" :67,
"Детёныши ящера" :13,
"Джинны" :103,
"Джинны султаны" :110,
"Дикие энты" :210,
"Дочери земли" :72,
"Дочери неба" :75,
"Древние бегемоты" :390,
"Древние энты" :210,
"Дриады" :20,
"Друиды" :74,
"Духи" :27,
"Дьяволы" :245,
"Дьяволята" :10,
"Единороги" :124,
"Железные големы" :33,
"Жрецы рун" :59,
"Защитники веры" :20,
"Защитники гор" :7,
"Зелёные драконы" :350,
"Земные элементали" :63,
"Злая Лошадь 2014" :45,
"Злобные глаза" :33,
"Зомби" :11,
"Изумрудные драконы" :400,
"Имперские грифоны" :62,
"Инквизиторы" :121,
"Искусительницы" :65,
"Ифриты" :200,
"Ифриты султаны" :250,
"Каменные горгульи" :16,
"Камнегрызы" :67,
"Камнееды" :56,
"Кентавры" :13,
"Князья вампиров" :70,
"Колоссы" :350,
"Кони преисподней" :138,
"Костоломы" :27,
"Костяные драконы" :280,
"Кочевые кентавры" :20,
"Кошмары" :140,
"Крестьяне" :5,
"Кристальные драконы" :400,
"Кровавые ящеры" :30,
"Кровоглазые циклопы" :500,
"Кшатрии ракшасы" :162,
"Лазутчики" :20,
"Латники" :21,
"Левиафаны" :250,
"Лесные снайперы" :42,
"Личи" :87,
"Лучники" :15,
"Маги" :63,
"Магма драконы" :329,
"Магнитные големы" :57,
"Магоги" :16,
"Мастера копья" :17,
"Мастера лука" :42,
"Мегеры" :49,
"Медведи" :22,
"Метатели копья" :11,
"Минотавры" :39,
"Минотавры стражи" :56,
"Минотавры-надсмотрщики":56,
"Могильные големы" :400,
"Монахи" :101,
"Морские черти" :120,
"Мумии" :115,
"Мумии фараонов" :135,
"Мятежники" :10,
"Наездники на волках" :20,
"Наездники на кабанах" :31,
"Наездники на медведях" :24,
"Наездники на ящерах" :65,
"Налётчики на волках" :31,
"Нимфы" :20,
"Обсидиановые горгульи" :26,
"Огненные гончие" :36,
"Огненные демоны" :23,
"Огненные драконы" :255,
"Огненные птицы" :117,
"Огненные элементали" :60,
"Огры" :60,
"Огры маги" :74,
"Огры-ветераны" :75,
"Ополченцы" :7,
"Орки" :29,
"Орки вожди" :38,
"Орки-тираны" :38,
"Орки-шаманы" :33,
"Паладины" :262,
"Палачи" :83,
"Пауки" :15,
"Пехотинцы" :17,
"Пещерные владыки" :195,
"Пещерные гидры" :115,
"Пещерные демоны" :157,
"Пещерные отродья" :165,
"Привидения" :26,
"Призраки" :27,
"Призрачные драконы" :310,
"Принцессы ракшас" :155,
"Проворные наездники" :94,
"Птицы грома" :115,
"Птицы тьмы" :120,
"Раджи ракшас" :160,
"Рогатые демоны" :14,
"Рогатые жнецы" :200,
"Роки" :104,
"Рыцари" :232,
"Рыцари смерти" :190,
"Рыцари тьмы" :160,
"Светлые единороги" :135,
"Свирепые бегемоты" :410,
"Свободные циклопы" :700,
"Сирены" :60,
"Сирены-искусительницы" :70,
"Скелеты" :6,
"Скелеты-арбалетчики" :12,
"Скелеты-воины" :10,
"Скелеты-лучники" :10,
"Стальные големы" :54,
"Старейшины рун" :100,
"Старшие гремлины" :9,
"Старшие демоны" :20,
"Старшие друиды" :101,
"Степные бойцы" :23,
"Степные воины" :21,
"Степные волки" :20,
"Степные гоблины" :5,
"Степные циклопы" :390,
"Стихийные горгульи" :25,
"Стрелки" :16,
"Стрелки-наёмники" :15,
"Суккубы" :61,
"Сумеречные ведьмы" :157,
"Сумеречные драконы" :350,
"Танцующие с ветром" :33,
"Танцующие с клинками" :20,
"Танцующие со смертью" :33,
"Таны" :131,
"Тёмные виверны" :195,
"Тёмные всадники" :94,
"Титаны" :400,
"Титаны шторма" :400,
"Тролли" :150,
"Убийцы" :70,
"Умертвия" :165,
"Феи" :12,
"Фениксы" :600,
"Фурии" :49,
"Хобгоблины" :9,
"Хозяева медведей" :36,
"Церберы" :41,
"Циклопы" :172,
"Циклопы короли" :182,
"Циклопы-генералы" :187,
"Чародеи-наёмники" :35,
"Чемпионы" :252,
"Черные тролли" :180,
"Черти" :10,
"Чёрные драконы" :400,
"Чумные зомби" :15,
"Шаманки" :66,
"Штурмовые грифоны" :62,
"Эльфийские лучники" :38,
"Энты" :187,
"Ядовитые пауки" :30
};
//****************************************************
/** Библиотека юникода
*
* Реализует функции работы с юникодом.
* @file lib_unicode.js
* @version 1.1.0
* @author DrunkenStranger
* @link http://userscripts.org/users/362572
* @license GPL
*/
function uchar(s) {
switch (s[0]) {
case "А": return "\u0410";
case "Б": return "\u0411";
case "В": return "\u0412";
case "Г": return "\u0413";
case "Д": return "\u0414";
case "Е": return "\u0415";
case "Ж": return "\u0416";
case "З": return "\u0417";
case "И": return "\u0418";
case "Й": return "\u0419";
case "К": return "\u041a";
case "Л": return "\u041b";
case "М": return "\u041c";
case "Н": return "\u041d";
case "О": return "\u041e";
case "П": return "\u041f";
case "Р": return "\u0420";
case "С": return "\u0421";
case "Т": return "\u0422";
case "У": return "\u0423";
case "Ф": return "\u0424";
case "Х": return "\u0425";
case "Ц": return "\u0426";
case "Ч": return "\u0427";
case "Ш": return "\u0428";
case "Щ": return "\u0429";
case "Ъ": return "\u042a";
case "Ы": return "\u042b";
case "Ь": return "\u042c";
case "Э": return "\u042d";
case "Ю": return "\u042e";
case "Я": return "\u042f";
case "а": return "\u0430";
case "б": return "\u0431";
case "в": return "\u0432";
case "г": return "\u0433";
case "д": return "\u0434";
case "е": return "\u0435";
case "ж": return "\u0436";
case "з": return "\u0437";
case "и": return "\u0438";
case "й": return "\u0439";
case "к": return "\u043a";
case "л": return "\u043b";
case "м": return "\u043c";
case "н": return "\u043d";
case "о": return "\u043e";
case "п": return "\u043f";
case "р": return "\u0440";
case "с": return "\u0441";
case "т": return "\u0442";
case "у": return "\u0443";
case "ф": return "\u0444";
case "х": return "\u0445";
case "ц": return "\u0446";
case "ч": return "\u0447";
case "ш": return "\u0448";
case "щ": return "\u0449";
case "ъ": return "\u044a";
case "ы": return "\u044b";
case "ь": return "\u044c";
case "э": return "\u044d";
case "ю": return "\u044e";
case "я": return "\u044f";
case "Ё": return "\u0401";
case "ё": return "\u0451";
default: return s[0];
}
}
function ustring(s) {
s = String(s);
var result = "";
for (var i = 0; i < s.length; i++)
result += uchar(s[i]);
return result;
}
//****************************************************
function $uchar(s) {
switch (s[0]) {
case "\u0410": return "А";
case "\u0411": return "Б";
case "\u0412": return "В";
case "\u0413": return "Г";
case "\u0414": return "Д";
case "\u0415": return "Е";
case "\u0416": return "Ж";
case "\u0417": return "З";
case "\u0418": return "И";
case "\u0419": return "Й";
case "\u041a": return "К";
case "\u041b": return "Л";
case "\u041c": return "М";
case "\u041d": return "Н";
case "\u041e": return "О";
case "\u041f": return "П";
case "\u0420": return "Р";
case "\u0421": return "С";
case "\u0422": return "Т";
case "\u0423": return "У";
case "\u0424": return "Ф";
case "\u0425": return "Х";
case "\u0426": return "Ц";
case "\u0427": return "Ч";
case "\u0428": return "Ш";
case "\u0429": return "Щ";
case "\u042a": return "Ъ";
case "\u042b": return "Ы";
case "\u042c": return "Ь";
case "\u042d": return "Э";
case "\u042e": return "Ю";
case "\u042f": return "Я";
case "\u0430": return "а";
case "\u0431": return "б";
case "\u0432": return "в";
case "\u0433": return "г";
case "\u0434": return "д";
case "\u0435": return "е";
case "\u0436": return "ж";
case "\u0437": return "з";
case "\u0438": return "и";
case "\u0439": return "й";
case "\u043a": return "к";
case "\u043b": return "л";
case "\u043c": return "м";
case "\u043d": return "н";
case "\u043e": return "о";
case "\u043f": return "п";
case "\u0440": return "р";
case "\u0441": return "с";
case "\u0442": return "т";
case "\u0443": return "у";
case "\u0444": return "ф";
case "\u0445": return "х";
case "\u0446": return "ц";
case "\u0447": return "ч";
case "\u0448": return "ш";
case "\u0449": return "щ";
case "\u044a": return "ъ";
case "\u044b": return "ы";
case "\u044c": return "ь";
case "\u044d": return "э";
case "\u044e": return "ю";
case "\u044f": return "я";
case "\u0401": return "Ё";
case "\u0451": return "ё";
default: return s[0];
}
}
function $ustring(s) {
s = String(s);
var result = "";
for (var i = 0; i < s.length; i++) result += $uchar(s[i]);
return result;
}
// ********* считывание уровня героя **********
function getLevel() {
if(url_cur.indexOf(url_home) == -1){ return; }
for (var k = 0; k < all_tables.length; k++)
{
if (!all_tables[k]) continue;
if (!all_tables[k].childNodes[0]) continue;
if (!all_tables[k].childNodes[0].childNodes[0]) continue;
if (!all_tables[k].childNodes[0].childNodes[0].childNodes[0]) continue;
if (!all_tables[k].childNodes[0].childNodes[0].childNodes[0].innerHTML) continue;
var str_tbl_info = all_tables[k].childNodes[0].childNodes[0].childNodes[0].innerHTML;
if (str_tbl_info.indexOf(str_pl_lvl) > 0)
{
str_tbl_info = str_tbl_info.substring(str_tbl_info.indexOf(str_pl_lvl) + str_pl_lvl.length);
pl_level = str_tbl_info.substring(0, str_tbl_info.search(/\D/));
break;
}
}
if(url_cur.indexOf(url_1_home) != -1)
{
GM_setValue("hunt_exp_pl_1_level", pl_level);
return;
}
if(url_cur.indexOf(url_2_home) != -1)
{
GM_setValue("hunt_exp_pl_2_level", pl_level);
return;
}
if(url_cur.indexOf(url_3_home) != -1)
{
GM_setValue("hunt_exp_pl_3_level", pl_level);
return;
}
}
// ***************************************************
function needSkip(skip,mob,expirience)
{
// alert(mob+': '+expirience+'<='+limit_exp+'. Onb|T CMOTPETb?: '+skip_mode);
if (skip_mode) {
if ((limit_exp == 0) || (expirience*1 <= limit_exp*1)) skip = false;
} else {
if (google_str.length == 0) { skip = false; return skip; }
var str_mob = mob.replace(/\s+/g, ''); //удаляем все пробелы в имени
str_mob = str_mob.toLocaleLowerCase();
var google_array = google_str.split(" ");
for (var i in google_array) {
if (str_mob.indexOf(google_array[i]) != -1) skip = false;
}
}
return skip;
}
//****************************************************
function skip_hunt(hunt) {
var x= document.querySelector("td >a[href*='ecostat.php']");
if (x == null) return;
document.title = str_skip;
setTimeout(function() { window.location.href = 'http://'+location.hostname+'/'+'map.php?action=skip'; }, 3000);
}
// ***************************************************
function showExperience() {
if(url_cur.indexOf(url_map) == -1){ return; }
var my_td_danger, total_exp, full_exp, next_count, exp_with_helper, next_half_count, min_count, exp_min_count, next_min_count;
var str_hunt, str_total_exp, next_level;//, min_kills, exp_min_kills;
var mob_name ="";
var str_dop ="";
var mob_exp = 0;
var temp = 0;
var hunt_available = false;
var skip_all_mob = true;
for (var k = 0; k < all_tables.length; k++)
{
if (all_tables[k].className == "wbwhite")
{
if (all_tables[k].childNodes[0].childNodes[0].children.length < 2) {break;}
my_td_danger = all_tables[k].childNodes[0].childNodes[0].childNodes[2];
if (!my_td_danger){ return; } //no hunt...
str_hunt = all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML;
mob_count = str_hunt.substring(str_hunt.indexOf("(")+1, str_hunt.indexOf(ustring('шт.'))-1);
mob_name = str_hunt.substring(str_hunt.indexOf(">")+1, str_hunt.indexOf("</"));
mob_exp = mob_rus_exp[$ustring(mob_name)];
hunt_available = true;
total_exp = Math.floor(mob_exp * mob_count / 5); //Полный опыт в одиночку
full_exp = total_exp;
next_count = (mob_count*1.3).toFixed(0); //Прирост при победе в одиночку
exp_with_helper = (total_exp / 2).toFixed(0); //Опыт с помощником (50/50)
next_half_count = (mob_count*Math.pow(1.3, 0.5)).toFixed(0); //Прирост при победе с помощником (50/50)
min_count = (mob_count / 5 - 0.5).toFixed(0); //Для минимального 5% прироста
exp_min_count = (Math.floor(mob_exp * min_count / 5)).toFixed(0); //Опыт при минимальном приросте
next_min_count = (mob_count*Math.pow(1.3, 0.2)).toFixed(0); //Прирост при убийстве <=20% будет ~5.4%
total_exp = total_exp > pl_level*500 ? pl_level*500 : total_exp; //Если опыт больше верхней отсечки по уровню
exp_with_helper = exp_with_helper > pl_level*500 ? pl_level*500 : exp_with_helper;
exp_min_count = exp_min_count > pl_level*500 ? pl_level*500 : exp_min_count;
if (pl_level > 2) { //Если опыт меньше нижней отсечки по уровню (3+ уровни)
total_exp = total_exp < pl_level*70 ? pl_level*70 : total_exp;
exp_with_helper = exp_with_helper < pl_level*35 ? pl_level*35 : exp_with_helper;
exp_min_count = exp_min_count < pl_level*14 ? pl_level*14 : exp_min_count;
}
total_exp = (total_exp * koef).toFixed(0);
exp_with_helper = (exp_with_helper * koef).toFixed(0);
exp_min_count = (exp_min_count * koef).toFixed(0);
//-------------- Вставим кусок кода ---------------
// total_exp - опыт с учетом коэф. перекача
skip_all_mob = needSkip(skip_all_mob,mob_name,full_exp);
//-------------------------------------------------
str_total_exp = total_exp;
next_level = Number(pl_level)+1;
if (total_exp > max_exp && max_exp > 0) { all_tables[k].childNodes[0].style.background = '#FFA07A' ; }
if (total_exp != full_exp) str_dop = ustring(' (из ')+full_exp+ustring(')'); else str_dop ="";
str_total_exp ='<br> <font style="font-size:10px;color:#0000CD">'+str_sum_exp.replace('STR1', str_total_exp).replace('dopSTR', str_dop).replace('STR6', next_count)+'</font>';
if ((total_exp < next_level*70) && (pl_level > 1)) {str_total_exp +='<br> <font style="color:#0000CD">'+str_kill_now.replace('STR9', next_level).replace('STR10',next_level*70)+'</font>';}
if (enable_Exp_Half) {str_total_exp = str_total_exp + '<br> <font style="font-size:10px;color:#CD00CD">'+str_hlp_exp.replace('STR2', exp_with_helper).replace('STR7', next_half_count)+'</font>'};
if (enable_5_procent) {str_total_exp = str_total_exp + '<font style="font-size:10px;color:#007FFF"><i><center>'+str_min_kol.replace('STR3', min_count).replace('STR4', exp_min_count).replace('STR8', next_min_count)+'</center></i></font>'};
all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML = str_hunt + str_total_exp;
}
}
if (skip_all_mob && hunt_available) skip_hunt();
// alert(skip_all_mob+' '+hunt_available+' '+limit_exp+' '+google_str.length+' '+skip_mode);
if (!skip_all_mob && hunt_available && ((limit_exp != 0) || (!skip_mode && (google_str.length != 0)) ) ) document.title = str_hunt_found;
}
//****************************************************
function helpers() {
if(url_cur.indexOf(url_war) == -1){ return; }
var ems, elem, elem2, str_hunt, mob_count, mob_name, total_exp, backgrn, sect, s_sect;
var alr = 0;
for (var k = 0; k < all_tables.length; k++)
{
if (all_tables[k].className == "wb")
{
ems = all_tables[k].querySelectorAll( "td > a[href*='map.php?cx']");
for (var i = 0; i < ems.length; i++) {
if (!ems[i].parentNode.parentNode.childNodes[6].childNodes[4]) {
elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[3].childNodes[0]; //odin v drugom sektore ili inoi level
} else if (!ems[i].parentNode.parentNode.childNodes[6].childNodes[6]) {
elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[5].childNodes[0]; //odin v moem sektore
elem2 = ems[i].parentNode.parentNode.childNodes[6].childNodes[4]; //odin v moem sektore
} else {
elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[6].childNodes[0]; //dvoe v drugom sektore
}
str_hunt = elem.innerHTML;
mob_count = str_hunt.substring(str_hunt.search(/\(/)+1, str_hunt.search(/\)/));
mob_name = str_hunt.substring(0, str_hunt.search(/\(/));
total_exp = Math.floor(mob_rus_exp[$ustring(mob_name)] * mob_count / 5);
backgrn = '';
if (elem.parentNode.parentNode.childElementCount != 5) {
s_sect = ems[i].href;
sect = s_sect.substring(s_sect.lastIndexOf("?")+1,s_sect.length);
s_sect =s_sect.replace("map.php?"+sect,"move_sector.php?id="+sectors[sect]);
ems[i].innerHTML += ustring('<br><font style="color:#FF3244;"><b>Перейти</b></font>');
ems[i].href = s_sect;
}
if (only_Gud_ExpUm && (total_exp< pl_level*133) ){ backgrn = ' background:#cfd';}
if (only_Gud_ExpUm && (total_exp< pl_level*70) ){ backgrn = ' background:#0f0';}
if (alarm_Green_Hunt && (total_exp< pl_level*133) && (elem.parentNode.parentNode.childElementCount != 5)){ alr = 1;}
elem.innerHTML += '<font style="font-size:12px; color:#013220;'+ backgrn+'"><b>'+' '+total_exp+'</b></font>'+str_exp;
}
}
}
if (alr == 1) alert(str_green_hunt);
if (alarm_Green_Hunt) setTimeout(function(){ window.location.href = 'http://'+location.hostname+'/'+'group_wars.php?filter=hunt'; }, 5000);
}
//****************************************************
function hideHunt() {
var tb;
if(url_cur.indexOf(url_map) == -1){ return; }
for (var k = 0; k < all_tables.length; k++)
{
tb = all_tables[k];
if (tb.className == "wbwhite")
{
if (tb.childNodes[0].childNodes[0].children.length < 2) {break;}
tb.parentNode.removeChild(tb.nextSibling);
tb.parentNode.removeChild(tb);
k--;
}
}
}
//****************************************************************************************
function add_archive() {
var ems, s_full;
if (url_cur.indexOf('show_archive=1') == -1)
{
var s_url = url_cur+'&show_archive=1';
var s = str_show_archive;
} else {
var s_url = url_cur.split('&show_archive=1')[0];
var s = str_hide_archive;
}
ems = document.querySelectorAll( "td > center > a[href*='plstats_hunters.php?level']");
if (ems.length != 0) {
s_full = '<br><center><a href="'+s_url+'"><b><font color="blue">'+s+'</font></b></a></center>';
ems[0].parentNode.insertAdjacentHTML("afterEnd" ,s_full);
}
}
//****************************************************
getLevel();
showSettings();
if (!grin_Pis) showExperience()
else hideHunt();
helpers();
if (url_cur.indexOf('plstats_hunters') != -1) add_archive();
})();