hwm_GO_exp

Помощник ГО. (2015.12.01)

当前为 2015-12-01 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name hwm_GO_exp
  3. // @description Помощник ГО. (2015.12.01)
  4. // @author ElMarado (Based on script Mantens)
  5. // @version 3.61
  6. // @include http://178.248.235.15/group_wars.php*
  7. // @include http://178.248.235.15/plstats_hunters.php*
  8. // @include http://178.248.235.15/home.php*
  9. // @include http://178.248.235.15/map.php*
  10. // @include http://*.heroeswm.*/group_wars.php*
  11. // @include http://*.heroeswm.*/plstats_hunters.php*
  12. // @include http://*.heroeswm.*/home.php*
  13. // @include http://*.heroeswm.*/map.php*
  14. // @grant GM_getValue
  15. // @grant GM_setValue
  16. // @icon https://app.box.com/representation/file_version_34029013909/image_2048/1.png?shared_name=hz97b2qwo2ycc5ospb7ccffn13w3ehc4
  17. // @namespace https://greasyfork.org/users/14188
  18. // ==/UserScript==
  19. (function () {
  20. var max_exp = 0;
  21. var version = "3.61";
  22. var url_cur = location.href;
  23. var url_home = "home.php";
  24. var url_map = "map.php";
  25. var url_war = "group_wars.php";
  26. var url_1 = "www.heroeswm.ru";
  27. var url_2 = "178.248.235.15";
  28. var url_3 = "qrator.heroeswm.ru";
  29. var url_1_home = "www.heroeswm.ru/home.php";
  30. var url_2_home = "178.248.235.15/home.php";
  31. var url_3_home = "qrator.heroeswm.ru/home.php";
  32. var str_url = "https://greasyfork.org/ru/scripts/11692-hwm-go-exp";
  33. var all_tables = document.getElementsByTagName('table');
  34. var short_button = GM_getValue("short_button" , false);
  35. var enable_Exp_Half = GM_getValue("enable_Exp_Half" , true);
  36. var enable_5_procent = GM_getValue("enable_5_procent" , false);
  37. var only_Gud_ExpUm = GM_getValue("only_Gud_ExpUm", true);
  38. var alarm_Green_Hunt = GM_getValue("alarm_Green_Hunt", false);
  39. var show_archive = GM_getValue("show_archive", true);
  40. var grin_Pis = GM_getValue("grin_Pis", false);
  41. var show_HP = GM_getValue("show_HP", false);
  42. var show_registr = GM_getValue("show_registr", false);
  43. if(url_cur.indexOf(url_1) != -1) {
  44. var pl_level = GM_getValue("hunt_exp_pl_1_level", "none"); //ур.героя
  45. var koef = GM_getValue("koef_dop_exp_1", 1.0); //коэф перекача www
  46. var limit_exp = GM_getValue("limit_exp_1", 0); //С какого порога опыта пропускать охоты
  47. var google_str = GM_getValue("google_str_1", ""); //строка фильтра
  48. var skip_mode = GM_getValue("skip_mode_1", true); //Пропускать по опыту или по имени
  49. }
  50. if(url_cur.indexOf(url_2) != -1) {
  51. var pl_level = GM_getValue("hunt_exp_pl_2_level", "none");
  52. var koef = GM_getValue("koef_dop_exp_2", 1.0);
  53. var limit_exp = GM_getValue("limit_exp_2", 0);
  54. var google_str = GM_getValue("google_str_2", "");
  55. var skip_mode = GM_getValue("skip_mode_2", true);
  56. }
  57. if(url_cur.indexOf(url_3) != -1) {
  58. var pl_level = GM_getValue("hunt_exp_pl_3_level", "none");
  59. var koef = GM_getValue("koef_dop_exp_3", 1.0);
  60. var limit_exp = GM_getValue("limit_exp_3", 0);
  61. var google_str = GM_getValue("google_str_3", "");
  62. var skip_mode = GM_getValue("skip_mode_3", true);
  63. }
  64. //********************
  65. var str_pl_lvl = ustring("Боевой уровень: ");
  66. var str_kol = ustring('шт.');
  67. var str_sum_exp = ustring("За них дадут <B> STR1dopSTR </B> опыта. Потом их будет ~STR6 шт.");
  68. var str_kill_now = ustring("Убей сейчас! На STR9 уровне за них дадут <B> STR10 </B> опыта.");
  69. var str_hlp_exp = ustring("За убийство с помощником (50/50) Вам дадут <B> STR2 </B> опыта. В следующий раз предложат ~STR7 шт.");
  70. var str_min_kol = ustring("Для Min (~5%) прироста надо убить не более STR3 шт (STR4 опыта). В следующий раз предложат ~STR8 шт.");
  71. var str_exp_helper = ustring("Опыт помощника: [70..133]*Уровень*Набранная умка*[1.1-Зелье].");
  72. var str_green_hunt = ustring("Выгодная охота");
  73. var str_exp = ustring("&nbspопыта.");
  74. var str_settings_1 = ustring("&nbspНастройки ГО&nbsp");
  75. var str_settings_2 = ustring("&nbspГО&nbsp");
  76. var str_start = ustring("Скрипт: Помощник ГО. Версия: ");
  77. var str_show_1 = ustring("Отображать опыт с помощником, если убьёте по 50%");
  78. var str_show_2 = ustring("Отображать сколько убить мобов для минимального прироста");
  79. var str_show_3 = ustring("Отображать формулу опыта помощника (при выгодных охотах)");
  80. var str_hilight = ustring("Подсвечивать охоты с выгодной экспоумкой (на странице групповых боёв)");
  81. var str_alarm_hunt = ustring("Предупреждать если есть незаполненная выгодная охота (в групповых боях)");
  82. var str_show_archive = ustring("Отображать ссылки на рекорды из архива.");
  83. var str_Grin_Pis = ustring("Включить Грин Пис (скрывать предложения охот)");
  84. var str_show_HP = ustring("Отображать суммарное HP мобов.");
  85. var str_short_button = ustring("Сделать кнопку настроек короткую.");
  86. var str_koef_0 = ustring("Текущий коэффициент перекача:&nbsp");
  87. var str_koef_1 = ustring("Введите новый коэффициент перекача от 1.0 до 9.9999: ");
  88. var str_skip_select_1 = ustring("Пропускать мобов: ");
  89. var str_skip_select_2 = ustring("по опыту (1)");
  90. var str_skip_select_3 = ustring("по имени (2)");
  91. var str_skip_hunt = ustring("1. Пропускать охоты с опытом больше чем:");
  92. var str_title_1 = ustring("Если значение 0, то опыт не учитывается.");
  93. var str_skip_hunt_txt = ustring("2. Пропускать мобов не имеющих в имени сочетания букв:");
  94. var str_registr = ustring("Учитывать регистр");
  95. var str_title_2 = ustring("Всё кроме русских букв, цифр и пробелов удаляется. Если пусто - никого не пропускает.");
  96. var str_no_skip = ustring("Вы уже в заявке!");
  97. var str_skip_enable = ustring("Пройти мимо");
  98. var str_arh_record = ustring("Рекорд из архива (до 01.03.2015)");
  99. var str_need_skip = ustring("ГO. Охоты можно пропустить.");
  100. var str_auto_skip = ustring("ГO. Охоту пропускаю.");
  101. var str_hunt_found = ustring("ГO. Охота найдена.");
  102. var str_no_found_in_base= ustring("Не найдено в базе существ. Возможно опечатались или стоит не тот язык.");
  103. var str_show_archive_r = ustring("Архив рекордов до 01.03.2015");
  104. var str_hide_archive_r = ustring("Текущие рекорды");
  105. var str_update = ustring("Проверить обновление скрипта.");
  106. var str_autor = ustring("Сообщить автору о найденной ошибке.");
  107. var str_url_aut = ustring("/sms-create.php?mailto=ElMarado&subject=Скрипт: Помощник ГО v")+version+ustring(". Найдена ошибка:");
  108. //************ Начало фрагментов кода от (C) Demin с моими вставками и комментариями **********************************
  109. function showSettings() {
  110. if (url_cur.indexOf('map.php') == -1) return;
  111. var x1= document.querySelector("td >a[href*='ecostat.php']");
  112. if (x1 == null) return;
  113. x1 = x1.parentNode;
  114. var str_settings, width_but, left_pos;
  115. if (short_button==0) { str_settings = str_settings_1; width_but = 80; left_pos = 393;}
  116. else { str_settings = str_settings_2; width_but = 20; left_pos = 468;}
  117. var d = document.createElement('div');
  118. d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px '+left_pos+'px; text-align: center;');//Положение кнопки, для вызова настроек
  119. d.innerHTML = '<style> .hwm_go * {font-size: 12px; color: #FFFF00;} .cell_go {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
  120. '<table class="hwm_go" width='+width_but+'px> <tr height=20>' + // Размер кнопки и фон, для вызова настроек
  121. '<td class="cell_go" style="cursor:pointer" id="set_go"><font style="font-size:12px;">'+str_settings+'</font></td>' +
  122. '</tr> </table>';
  123. x1.insertBefore(d,x1.firstChild); //Вставка куска
  124. addEvent( $("set_go"), "click", settings_go ); //Привязка к куску на клик вызов функции
  125. //************
  126. function settings_go_close()
  127. {
  128. var bg = $('bgOverlay');
  129. var bgc = $('bgCenter');
  130. bg.parentNode.removeChild(bg);
  131. bgc.parentNode.removeChild(bgc);
  132. }
  133. function settings_go()
  134. {
  135. var bg = $('bgOverlay');
  136. var bgc = $('bgCenter');
  137. var bg_height = ScrollHeight();
  138. if ( !bg )
  139. {
  140. bg = document.createElement('div');
  141. document.body.appendChild( bg );
  142. bgc = document.createElement('div');
  143. document.body.appendChild( bgc );
  144. }
  145. bg.id = 'bgOverlay';
  146. bg.style.position = 'absolute';
  147. bg.style.left = '0px';
  148. bg.style.width = '100%';
  149. bg.style.background = "#000000";
  150. bg.style.opacity = "0.5";
  151. bg.style.zIndex = "1100";
  152. bgc.id = 'bgCenter';
  153. bgc.style.position = 'absolute';
  154. bgc.style.left = ( ( ClientWidth() - 580 ) / 2 ) + 'px';
  155. bgc.style.width = '600px';
  156. bgc.style.background = "#F6F3EA";
  157. bgc.style.zIndex = "1105";
  158. addEvent(bg, "click", settings_go_close);
  159. //форма и внешний вид окно настроек
  160. 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>'+
  161. //заголовок окна настроек
  162. '<tr><td colspan=2><b>'+str_start+'<font style="color:#0070FF;">'+version+'</font></b><hr/></td></tr>' +
  163. //Опыт с помощником 50/50
  164. '<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>'+
  165. //кол-во для мин.прироста
  166. '<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>'+
  167. //подсвечивать выгодные охоты
  168. '<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>'+
  169. //Предупреждать если есть незапоненная выгодная охота.
  170. '<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>'+
  171. //Рекорд из архива.
  172. '<tr><td colspan=2><label><input type=checkbox '+(show_archive=="1"?"checked":"")+' id=set_show_archive title=""> '+str_show_archive+'</label><br></td></tr>'+
  173. //Суммарное HP.
  174. '<tr><td colspan=2><label><input type=checkbox '+(show_HP=="1"?"checked":"")+' id=set_show_HP title=""> '+str_show_HP+'</label><br></td></tr>'+
  175. //Грин Пис.
  176. '<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>'+
  177. //коэфициент перекача
  178. '<tr><td colspan=2>'+str_koef_0+'<font style="color:#0070FF;"><b id=k_p>'+Number(koef).toFixed(4) +'</b></font><br></td></tr>' +
  179. '<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>'+
  180. //Выбор пропусков str_skip_select_3
  181. '<tr><td colspan=2>'+str_skip_select_1+
  182. '<label><input type=checkbox '+(skip_mode=="1"?"checked":"")+' id=set_skip_mode1 title="">'+str_skip_select_2+'</label>'+
  183. '<label><input type=checkbox '+(skip_mode=="0"?"checked":"")+' id=set_skip_mode2 title="">'+str_skip_select_3+'</label></td></tr>'+
  184. //пропуск охот по опыту
  185. '<tr><td width="52%">'+str_skip_hunt+'</td><td width="48%" align="left" title="'+str_title_1+'"> '+
  186. '<input id="set_limit_exp" value="'+limit_exp+'" size="3" maxlength="5"><input type="submit" id="set_limit_exp_ok" value="OK"></td></tr>'+
  187. //пропуск охот по тексту
  188. '<tr><td colspan=2>'+str_skip_hunt_txt+' <label><input type=checkbox '+(show_registr=="1"?"checked":"")+' id=set_registr title="">'+str_registr+'</label><br></td></tr>'+
  189. '<tr><td colspan=2" title="'+str_title_2+'">'+
  190. '<input id="set_google_str" value="'+google_str+'" size="80" maxlength="80"><input type="submit" id="set_google_str_ok" value="OK"></td></tr>'+
  191. '<tr><td colspan=2><hr/></td></tr>'+
  192. //Сделать кнопку настройки короткую/длинную
  193. '<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>'+
  194. //ссылка на сайт скрипта
  195. '<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>'; //концовка
  196. //назначение вызова функция при событиях кнопок и чекбоксов
  197. addEvent($("bt_close_tr"), "click", settings_go_close); //крестик в углу
  198. addEvent($("set_enable_Exp_Half"), "click", change_enable_Exp_Half); //чек-бокс
  199. addEvent($("set_enable_5_procent"), "click", change_enable_5_procent); //чек-бокс
  200. addEvent($("set_only_Gud_ExpUm"), "click", change_only_Gud_ExpUm); //чек-бокс
  201. addEvent($("set_alarm_Green_Hunt"), "click", change_alarm_Green_Hunt); //чек-бокс
  202. addEvent($("set_show_archive"), "click", change_show_archive); //чек-бокс
  203. addEvent($("set_show_HP"), "click", change_show_HP); //чек-бокс
  204. addEvent($("set_Grin_Pis"), "click", change_Grin_Pis); //чек-бокс
  205. addEvent($("set_short_button"), "click", change_short_button); //чек-бокс
  206. addEvent($("set_registr"), "click", change_registr); //чек-бокс
  207. addEvent($("set_koef_ok"), "click", change_koef); //поле ввода
  208. addEvent($("set_limit_exp_ok"), "click", change_limit_exp); //поле ввода
  209. addEvent($("set_google_str_ok"), "click", change_google_str); //строка ввода
  210. addEvent($("set_skip_mode1"), "click", change_skip_mode); //радио
  211. addEvent($("set_skip_mode2"), "click", change_skip_mode); //радио
  212. bg.style.top = '0px';
  213. bg.style.height = bg_height + 'px';
  214. bgc.style.top = ( window.pageYOffset + 155 ) + 'px';
  215. bg.style.display = '';
  216. bgc.style.display = '';
  217. }
  218. //********* обработчики полей ввода *******
  219. function change_skip_mode()
  220. {
  221. skip_mode = !skip_mode;
  222. document.getElementById('set_skip_mode1').checked = skip_mode;
  223. document.getElementById('set_skip_mode2').checked = !skip_mode;
  224. if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_mode_1", skip_mode);
  225. if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_mode_2", skip_mode);
  226. if ( url_cur.indexOf(url_3) != -1) GM_setValue("skip_mode_3", skip_mode);
  227. }
  228. function change_koef()
  229. {
  230. if ( Number( $("set_koef").value ) >= 1 ) koef = $("set_koef").value; else koef = Number(1.0);
  231. document.getElementById('k_p').innerHTML = Number(koef).toFixed(4);
  232. if ( url_cur.indexOf(url_1) != -1) GM_setValue("koef_dop_exp_1", koef);
  233. if ( url_cur.indexOf(url_2) != -1) GM_setValue("koef_dop_exp_2", koef);
  234. if ( url_cur.indexOf(url_3) != -1) GM_setValue("koef_dop_exp_3", koef);
  235. }
  236. function change_limit_exp()
  237. {
  238. if ( Number( $("set_limit_exp").value ) >= 0 ) limit_exp = Number($("set_limit_exp").value).toFixed(0); else limit_exp = 0;
  239. if ( url_cur.indexOf(url_1) != -1) GM_setValue("limit_exp_1", limit_exp);
  240. if ( url_cur.indexOf(url_2) != -1) GM_setValue("limit_exp_2", limit_exp);
  241. if ( url_cur.indexOf(url_3) != -1) GM_setValue("limit_exp_3", limit_exp);
  242. }
  243. function change_google_str()
  244. {
  245. var name_mob, s_name_mob;
  246. google_str = ustring($ustring($("set_google_str").value).replace(/[^ 0-9А-Яа-яЁё)]/g, ""));//удаление лишних символов
  247. google_str = google_str.trim();//убираем пробелы в конце и начале.
  248. google_str = google_str.replace(/ {1,}/g," "); //удаление множественных пробелов
  249. document.getElementById('set_google_str').value = google_str;
  250. var google_array = google_str.split(" ");
  251. for (var i in google_array) { //перебор слов поиска
  252. if (!show_registr) {google_array[i] = google_array[i].toLocaleLowerCase()};//конвертируем в маленькие символы.
  253. for (var key in mob_rus_exp) { //перебор имен существ из базы
  254. name_mob = key.replace(/\s+/g, '');//удаляем все пробелы в имени
  255. s_name_mob = ustring(name_mob); // меняем кодировку имени мобов
  256. if (!show_registr) {s_name_mob = s_name_mob.toLocaleLowerCase();} // Если не учитывать регистр, то преобразуем в маль.символы
  257. if ((google_str.length == 0) || (s_name_mob.indexOf(google_array[i]) != -1)) {
  258. //если пусто или слово подходит для поиска
  259. if ( url_cur.indexOf(url_1) != -1) GM_setValue("google_str_1", google_str);
  260. if ( url_cur.indexOf(url_2) != -1) GM_setValue("google_str_2", google_str);
  261. if ( url_cur.indexOf(url_3) != -1) GM_setValue("google_str_3", google_str);
  262. return;
  263. }
  264. }
  265. }
  266. alert('"'+google_str+'" '+str_no_found_in_base);
  267. }
  268. //*********** обработчики чек-боксов *****
  269. function change_enable_Exp_Half() {GM_setValue("enable_Exp_Half", enable_Exp_Half = !enable_Exp_Half);}
  270. function change_enable_5_procent() {GM_setValue("enable_5_procent",enable_5_procent = !enable_5_procent);}
  271. function change_only_Gud_ExpUm() {GM_setValue("only_Gud_ExpUm", only_Gud_ExpUm = !only_Gud_ExpUm);}
  272. function change_alarm_Green_Hunt() {GM_setValue("alarm_Green_Hunt",alarm_Green_Hunt = !alarm_Green_Hunt);}
  273. function change_show_archive() {GM_setValue("show_archive", show_archive = !show_archive);}
  274. function change_show_HP() {GM_setValue("show_HP", show_HP = !show_HP);}
  275. function change_registr() {GM_setValue("show_registr", show_registr = !show_registr);}
  276. function change_Grin_Pis() {GM_setValue("grin_Pis", grin_Pis = !grin_Pis);}
  277. function change_short_button() {GM_setValue("short_button",short_button = !short_button);
  278. if (short_button==0) { str_settings = str_settings_1; width_but = 80; left_pos = 393;}
  279. else { str_settings = str_settings_2; width_but = 20; left_pos = 468;}
  280. d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px '+left_pos+'px; text-align: center;');//Положение кнопки, для вызова настроек
  281. d.innerHTML = '<style> .hwm_go * {font-size: 12px; color: #FFFF00;} .cell_go {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
  282. '<table class="hwm_go" width='+width_but+'px> <tr height=20>' + // Размер кнопки и фон, для вызова настроек
  283. '<td class="cell_go" style="cursor:pointer" id="set_go"><font style="font-size:12px;">'+str_settings+'</font></td>' +
  284. '</tr> </table>';
  285. addEvent( $("set_go"), "click", settings_go ); //Привязка к куску на клик вызов функции
  286. }
  287. //********** непонятно что, взято 1:1 у Demin ******
  288. function $(id) { return document.querySelector("#"+id); }
  289. function addEvent(elem, evType, fn) {
  290. if (elem.addEventListener) elem.addEventListener(evType, fn, false);
  291. else if (elem.attachEvent) elem.attachEvent("on" + evType, fn);
  292. else elem["on" + evType] = fn;
  293. }
  294. function ClientWidth() {return document.compatMode=='CSS1Compat' && document.documentElement?document.documentElement.clientWidth:document.body.clientWidth;}
  295. function ScrollHeight() {return Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);}
  296. }
  297. //************ Конец фрагментов кода от (C) Demin **********************************
  298. var sectors = {
  299. "cx=50&cy=50":1, //Empire Capital
  300. "cx=51&cy=50":2, //East River
  301. "cx=50&cy=49":3, //Tiger Lake
  302. "cx=51&cy=49":4, //Rogues' Wood
  303. "cx=50&cy=51":5, //Wolf Dale
  304. "cx=50&cy=48":6, //Peaceful Camp
  305. "cx=49&cy=51":7, //Lizard Lowland
  306. "cx=49&cy=50":8, //Green Wood
  307. "cx=49&cy=48":9, //Eagle Nest
  308. "cx=50&cy=52":10, //Portal Ruins
  309. "cx=51&cy=51":11, //Dragon Caves
  310. "cx=49&cy=49":12, //Shining Spring
  311. "cx=48&cy=49":13, //Sunny Sity
  312. "cx=52&cy=50":14, //Magma Mines
  313. "cx=52&cy=49":15, //Bear Mountain
  314. "cx=52&cy=48":16, //Fairy Trees
  315. "cx=53&cy=50":17, //Harbour City (Port City)
  316. "cx=53&cy=49":18, //Mithril Coast
  317. "cx=51&cy=52":19, //GreatWall
  318. "cx=51&cy=53":20, //Titans' Valley
  319. "cx=52&cy=53":21, //Fishing Village
  320. "cx=52&cy=54":22, //Kingdom Capital
  321. "cx=48&cy=48":23, //Ungovernable Steppe
  322. "cx=51&cy=48":24, //Crystal Garden
  323. "cx=53&cy=52":25, //East Island
  324. "cx=49&cy=52":26, //The Wilderness
  325. "cx=48&cy=50":27 //Sublime Arbor
  326. }
  327. //****************************************************
  328. var mob_rus_exp = {//229 существ. Cтруктура: Опыт,HP
  329. "Адепты": [121,80],
  330. "Адские жеребцы": [136,50],
  331. "Адские жнецы": [250,99],
  332. "Адские псы": [33,15],
  333. "Ангелы": [330,180],
  334. "Арбалетчики": [19,10],
  335. "Архангелы": [390,220],
  336. "Архидемоны": [312,211],
  337. "Архидьяволы": [311,199],
  338. "Архиличи": [110,55],
  339. "Архимаги": [70,30],
  340. "Ассасины": [33,14],
  341. "Астральные драконы": [310,150],
  342. "Баньши": [205,110],
  343. "Бегемоты": [350,210],
  344. "Берсерки": [42,25],
  345. "Бестии": [30,16],
  346. "Бесы": [6,4],
  347. "Бехолдеры": [33,22],
  348. "Боевые грифоны": [45,35],
  349. "Боевые единороги": [135,77],
  350. "Боевые кентавры": [21,10],
  351. "Боевые маги": [72,29],
  352. "Вампиры": [68,30],
  353. "Вармонгеры": [36,20],
  354. "Ведьмы-призраки": [30,20],
  355. "Великие левиафаны": [300,250],
  356. "Верховные друиды": [101,38],
  357. "Вестники смерти": [205,100],
  358. "Виверны": [170,90],
  359. "Визири джиннов": [110,50],
  360. "Владычицы тени": [185,90],
  361. "Водные элементали": [57,43],
  362. "Вожаки": [100,48],
  363. "Воздушные элементали": [59,30],
  364. "Воины-наёмники": [25,24],
  365. "Воители": [12,12],
  366. "Воры-колдуны": [35,30],
  367. "Воры-разведчики": [35,45],
  368. "Воры-убийцы": [35,40],
  369. "Высшие ангелы": [390,220],
  370. "Высшие вампиры": [70,35],
  371. "Высшие личи": [100,55],
  372. "Гарпии": [29,15],
  373. "Гарпии-ведьмы": [45,15],
  374. "Гарпунеры": [18,10],
  375. "Гигантские ящеры": [25,25],
  376. "Гидры": [108,80],
  377. "Глубоководные черти": [140,105],
  378. "Гниющие зомби": [17,23],
  379. "Гоблины": [5,3],
  380. "Гоблины-лучники": [9,3],
  381. "Гоблины-маги": [9,3],
  382. "Гоблины-трапперы": [15,7],
  383. "Гоги": [13,13],
  384. "Големы смерти": [329,350],
  385. "Головорезы": [6,8],
  386. "Горные стражи": [24,12],
  387. "Гремлины": [5,5],
  388. "Гремлины-вредители": [9,6],
  389. "Грифоны": [59,30],
  390. "Громовержцы": [162,120],
  391. "Демонессы": [67,30],
  392. "Детёныши ящера": [13,13],
  393. "Джинны": [103,40],
  394. "Джинны султаны": [110,45],
  395. "Дикие энты": [210,175],
  396. "Дочери земли": [72,35],
  397. "Дочери неба": [75,35],
  398. "Древние бегемоты": [390,250],
  399. "Древние энты": [210,181],
  400. "Дриады": [20,6],
  401. "Друиды": [74,34],
  402. "Духи": [27,20],
  403. "Дьяволы": [245,166],
  404. "Дьяволята": [10,6],
  405. "Единороги": [124,57],
  406. "Железные големы": [33,18],
  407. "Жрецы рун": [59,60],
  408. "Защитники веры": [20,23],
  409. "Защитники гор": [7,7],
  410. "Зелёные драконы": [350,200],
  411. "Земные элементали": [63,75],
  412. "Злобные глаза": [33,22],
  413. "Зомби": [11,17],
  414. "Изумрудные драконы": [400,200],
  415. "Имперские грифоны": [62,35],
  416. "Инквизиторы": [121,80],
  417. "Искусительницы": [65,26],
  418. "Ифриты": [200,90],
  419. "Ифриты султаны": [250,100],
  420. "Каменные горгульи": [16,15],
  421. "Камнегрызы": [67,55],
  422. "Камнееды": [56,45],
  423. "Кентавры": [13,6],
  424. "Князья вампиров": [70,40],
  425. "Колоссы": [350,175],
  426. "Кони преисподней": [138,66],
  427. "Костоломы": [27,20],
  428. "Костяные драконы": [280,150],
  429. "Кочевые кентавры": [20,9],
  430. "Кошмары": [140,66],
  431. "Крестьяне": [5,4],
  432. "Кристальные драконы": [400,200],
  433. "Кровавые ящеры": [30,35],
  434. "Кровоглазые циклопы": [500,235],
  435. "Кшатрии ракшасы": [162,135],
  436. "Лазутчики": [20,10],
  437. "Латники": [21,26],
  438. "Левиафаны": [250,200],
  439. "Лесные снайперы": [42,12],
  440. "Личи": [87,50],
  441. "Лучники": [15,7],
  442. "Маги": [63,18],
  443. "Магма драконы": [329,280],
  444. "Магнитные големы": [57,28],
  445. "Магоги": [16,13],
  446. "Мастера копья": [17,12],
  447. "Мастера лука": [42,14],
  448. "Мегеры": [49,24],
  449. "Медведи": [22,22],
  450. "Метатели копья": [11,10],
  451. "Минотавры": [39,31],
  452. "Минотавры стражи": [56,35],
  453. "Минотавры-надсмотрщики": [56,40],
  454. "Могильные големы": [400,400],
  455. "Монахи": [101,54],
  456. "Морские черти": [120,90],
  457. "Мумии": [115,50],
  458. "Мумии фараонов": [135,70],
  459. "Мятежники": [10,7],
  460. "Наездники на волках": [20,10],
  461. "Наездники на кабанах": [31,14],
  462. "Наездники на медведях": [24,25],
  463. "Наездники на ящерах": [65,40],
  464. "Налётчики на волках": [31,12],
  465. "Нимфы": [20,6],
  466. "Обсидиановые горгульи": [26,20],
  467. "Огненные гончие": [36,15],
  468. "Огненные демоны": [23,13],
  469. "Огненные драконы": [255,230],
  470. "Огненные птицы": [117,65],
  471. "Огненные элементали": [60,43],
  472. "Огры": [60,50],
  473. "Огры маги": [74,65],
  474. "Огры-ветераны": [75,70],
  475. "Ополченцы": [7,6],
  476. "Орки": [29,12],
  477. "Орки вожди": [38,18],
  478. "Орки-тираны": [38,20],
  479. "Орки-шаманы": [33,13],
  480. "Паладины": [262,100],
  481. "Палачи": [83,40],
  482. "Пауки": [15,9],
  483. "Пехотинцы": [17,16],
  484. "Пещерные владыки": [195,120],
  485. "Пещерные гидры": [115,125],
  486. "Пещерные демоны": [157,110],
  487. "Пещерные отродья": [165,140],
  488. "Привидения": [26,8],
  489. "Призраки": [27,19],
  490. "Призрачные драконы": [310,160],
  491. "Принцессы ракшас": [155,120],
  492. "Проворные наездники": [94,60],
  493. "Птицы грома": [115,65],
  494. "Птицы тьмы": [120,60],
  495. "Раджи ракшас": [160,140],
  496. "Рогатые демоны": [14,13],
  497. "Рогатые жнецы": [200,99],
  498. "Роки": [104,55],
  499. "Рыцари": [232,90],
  500. "Рыцари смерти": [190,100],
  501. "Рыцари тьмы": [160,90],
  502. "Светлые единороги": [135,80],
  503. "Свирепые бегемоты": [410,280],
  504. "Свободные циклопы": [700,225],
  505. "Сирены": [60,20],
  506. "Сирены-искусительницы": [70,24],
  507. "Скелеты": [6,4],
  508. "Скелеты-арбалетчики": [12,6],
  509. "Скелеты-воины": [10,5],
  510. "Скелеты-лучники": [10,4],
  511. "Стальные големы": [54,24],
  512. "Старейшины рун": [100,70],
  513. "Старшие гремлины": [9,6],
  514. "Старшие демоны": [20,13],
  515. "Старшие друиды": [101,34],
  516. "Степные бойцы": [23,12],
  517. "Степные воины": [21,12],
  518. "Степные волки": [20,25],
  519. "Степные гоблины": [5,3],
  520. "Степные циклопы": [390,220],
  521. "Стихийные горгульи": [25,16],
  522. "Стрелки": [16,8],
  523. "Стрелки-наёмники": [15,8],
  524. "Суккубы": [61,20],
  525. "Сумеречные ведьмы": [157,80],
  526. "Сумеречные драконы": [350,200],
  527. "Танцующие с ветром": [33,14],
  528. "Танцующие с клинками": [20,12],
  529. "Танцующие со смертью": [33,12],
  530. "Таны": [131,100],
  531. "Тёмные виверны": [195,105],
  532. "Тёмные всадники": [94,50],
  533. "Титаны": [400,190],
  534. "Титаны шторма": [400,190],
  535. "Тролли": [150,150],
  536. "Убийцы": [70,34],
  537. "Умертвия": [165,95],
  538. "Феи": [12,5],
  539. "Фениксы": [600,777],
  540. "Фурии": [49,16],
  541. "Хобгоблины": [9,4],
  542. "Хозяева медведей": [36,30],
  543. "Церберы": [41,15],
  544. "Циклопы": [172,85],
  545. "Циклопы короли": [182,95],
  546. "Циклопы-генералы": [187,100],
  547. "Чародеи-наёмники": [35,36],
  548. "Чемпионы": [252,100],
  549. "Черные тролли": [180,180],
  550. "Черти": [10,6],
  551. "Чёрные драконы": [400,240],
  552. "Чумные зомби": [15,17],
  553. "Шаманки": [66,30],
  554. "Штурмовые грифоны": [62,52],
  555. "Эльфийские лучники": [38,10],
  556. "Энты": [187,175],
  557. "Ядовитые пауки": [30,14]
  558. };
  559. //****************************************************
  560. /** Библиотека юникода
  561. *
  562. * Реализует функции работы с юникодом.
  563. * @file lib_unicode.js
  564. * @version 1.1.0
  565. * @author DrunkenStranger
  566. * @link http://userscripts.org/users/362572
  567. * @license GPL
  568. */
  569. function uchar(s) {
  570. switch (s[0]) {
  571. case "А": return "\u0410";
  572. case "Б": return "\u0411";
  573. case "В": return "\u0412";
  574. case "Г": return "\u0413";
  575. case "Д": return "\u0414";
  576. case "Е": return "\u0415";
  577. case "Ж": return "\u0416";
  578. case "З": return "\u0417";
  579. case "И": return "\u0418";
  580. case "Й": return "\u0419";
  581. case "К": return "\u041a";
  582. case "Л": return "\u041b";
  583. case "М": return "\u041c";
  584. case "Н": return "\u041d";
  585. case "О": return "\u041e";
  586. case "П": return "\u041f";
  587. case "Р": return "\u0420";
  588. case "С": return "\u0421";
  589. case "Т": return "\u0422";
  590. case "У": return "\u0423";
  591. case "Ф": return "\u0424";
  592. case "Х": return "\u0425";
  593. case "Ц": return "\u0426";
  594. case "Ч": return "\u0427";
  595. case "Ш": return "\u0428";
  596. case "Щ": return "\u0429";
  597. case "Ъ": return "\u042a";
  598. case "Ы": return "\u042b";
  599. case "Ь": return "\u042c";
  600. case "Э": return "\u042d";
  601. case "Ю": return "\u042e";
  602. case "Я": return "\u042f";
  603. case "а": return "\u0430";
  604. case "б": return "\u0431";
  605. case "в": return "\u0432";
  606. case "г": return "\u0433";
  607. case "д": return "\u0434";
  608. case "е": return "\u0435";
  609. case "ж": return "\u0436";
  610. case "з": return "\u0437";
  611. case "и": return "\u0438";
  612. case "й": return "\u0439";
  613. case "к": return "\u043a";
  614. case "л": return "\u043b";
  615. case "м": return "\u043c";
  616. case "н": return "\u043d";
  617. case "о": return "\u043e";
  618. case "п": return "\u043f";
  619. case "р": return "\u0440";
  620. case "с": return "\u0441";
  621. case "т": return "\u0442";
  622. case "у": return "\u0443";
  623. case "ф": return "\u0444";
  624. case "х": return "\u0445";
  625. case "ц": return "\u0446";
  626. case "ч": return "\u0447";
  627. case "ш": return "\u0448";
  628. case "щ": return "\u0449";
  629. case "ъ": return "\u044a";
  630. case "ы": return "\u044b";
  631. case "ь": return "\u044c";
  632. case "э": return "\u044d";
  633. case "ю": return "\u044e";
  634. case "я": return "\u044f";
  635. case "Ё": return "\u0401";
  636. case "ё": return "\u0451";
  637. default: return s[0];
  638. }
  639. }
  640.  
  641. function ustring(s) {
  642. s = String(s);
  643. var result = "";
  644. for (var i = 0; i < s.length; i++)
  645. result += uchar(s[i]);
  646. return result;
  647. }
  648. //****************************************************
  649. function $uchar(s) {
  650. switch (s[0]) {
  651. case "\u0410": return "А";
  652. case "\u0411": return "Б";
  653. case "\u0412": return "В";
  654. case "\u0413": return "Г";
  655. case "\u0414": return "Д";
  656. case "\u0415": return "Е";
  657. case "\u0416": return "Ж";
  658. case "\u0417": return "З";
  659. case "\u0418": return "И";
  660. case "\u0419": return "Й";
  661. case "\u041a": return "К";
  662. case "\u041b": return "Л";
  663. case "\u041c": return "М";
  664. case "\u041d": return "Н";
  665. case "\u041e": return "О";
  666. case "\u041f": return "П";
  667. case "\u0420": return "Р";
  668. case "\u0421": return "С";
  669. case "\u0422": return "Т";
  670. case "\u0423": return "У";
  671. case "\u0424": return "Ф";
  672. case "\u0425": return "Х";
  673. case "\u0426": return "Ц";
  674. case "\u0427": return "Ч";
  675. case "\u0428": return "Ш";
  676. case "\u0429": return "Щ";
  677. case "\u042a": return "Ъ";
  678. case "\u042b": return "Ы";
  679. case "\u042c": return "Ь";
  680. case "\u042d": return "Э";
  681. case "\u042e": return "Ю";
  682. case "\u042f": return "Я";
  683. case "\u0430": return "а";
  684. case "\u0431": return "б";
  685. case "\u0432": return "в";
  686. case "\u0433": return "г";
  687. case "\u0434": return "д";
  688. case "\u0435": return "е";
  689. case "\u0436": return "ж";
  690. case "\u0437": return "з";
  691. case "\u0438": return "и";
  692. case "\u0439": return "й";
  693. case "\u043a": return "к";
  694. case "\u043b": return "л";
  695. case "\u043c": return "м";
  696. case "\u043d": return "н";
  697. case "\u043e": return "о";
  698. case "\u043f": return "п";
  699. case "\u0440": return "р";
  700. case "\u0441": return "с";
  701. case "\u0442": return "т";
  702. case "\u0443": return "у";
  703. case "\u0444": return "ф";
  704. case "\u0445": return "х";
  705. case "\u0446": return "ц";
  706. case "\u0447": return "ч";
  707. case "\u0448": return "ш";
  708. case "\u0449": return "щ";
  709. case "\u044a": return "ъ";
  710. case "\u044b": return "ы";
  711. case "\u044c": return "ь";
  712. case "\u044d": return "э";
  713. case "\u044e": return "ю";
  714. case "\u044f": return "я";
  715. case "\u0401": return "Ё";
  716. case "\u0451": return "ё";
  717. default: return s[0];
  718. }
  719. }
  720. function $ustring(s) {
  721. s = String(s);
  722. var result = "";
  723. for (var i = 0; i < s.length; i++) result += $uchar(s[i]);
  724. return result;
  725. }
  726. // ********* считывание уровня героя **********
  727. function getLevel() {
  728. if(url_cur.indexOf(url_home) == -1){ return; }
  729. for (var k = 0; k < all_tables.length; k++)
  730. {
  731. if (!all_tables[k]) continue;
  732. if (!all_tables[k].childNodes[0]) continue;
  733. if (!all_tables[k].childNodes[0].childNodes[0]) continue;
  734. if (!all_tables[k].childNodes[0].childNodes[0].childNodes[0]) continue;
  735. if (!all_tables[k].childNodes[0].childNodes[0].childNodes[0].innerHTML) continue;
  736.  
  737. var str_tbl_info = all_tables[k].childNodes[0].childNodes[0].childNodes[0].innerHTML;
  738.  
  739. if (str_tbl_info.indexOf(str_pl_lvl) > 0)
  740. {
  741. str_tbl_info = str_tbl_info.substring(str_tbl_info.indexOf(str_pl_lvl) + str_pl_lvl.length);
  742. pl_level = str_tbl_info.substring(0, str_tbl_info.search(/\D/));
  743. break;
  744. }
  745. }
  746. if(url_cur.indexOf(url_1_home) != -1)
  747. {
  748. GM_setValue("hunt_exp_pl_1_level", pl_level);
  749. return;
  750. }
  751. if(url_cur.indexOf(url_2_home) != -1)
  752. {
  753. GM_setValue("hunt_exp_pl_2_level", pl_level);
  754. return;
  755. }
  756. if(url_cur.indexOf(url_3_home) != -1)
  757. {
  758. GM_setValue("hunt_exp_pl_3_level", pl_level);
  759. return;
  760. }
  761. }
  762. // ***************************************************
  763. function needSkip(skip,mob,expirience)
  764. {
  765. // alert(mob+': '+expirience+'<='+limit_exp+'. Onb|T CMOTPETb?: '+skip_mode);
  766. if (skip_mode) {
  767. if ((limit_exp == 0) || (expirience*1 <= limit_exp*1)) skip = false;
  768. } else {
  769. if (google_str.length == 0) { skip = false; return skip; }
  770. var str_mob = mob.replace(/\s+/g, ''); //удаляем все пробелы в имени
  771. str_mob = str_mob.toLocaleLowerCase();
  772. var google_array = google_str.split(" ");
  773. for (var i in google_array) {
  774. if (str_mob.indexOf(google_array[i]) != -1) skip = false;
  775. }
  776. }
  777. return skip;
  778. }
  779. //****************************************************
  780. function skip_hunt(hunt) {
  781. var x= document.querySelector("td >a[href*='ecostat.php']");
  782. if (x == null) return;
  783. document.title = str_auto_skip;
  784. setTimeout(function() { window.location.href = 'http://'+location.hostname+'/'+'map.php?action=skip'; }, 3000);
  785. }
  786. //****************************************************
  787. function skip_en() {
  788. var x = document.querySelectorAll("tr > td[colspan*='2']");
  789. if (x.length == 0) return;
  790. for (var k = 0; k < x.length; k++) {
  791. if (x[k].innerHTML == str_no_skip) {
  792. x[k].align = 'right';
  793. x[k].innerHTML ='<a href="map.php?action=skip">'+str_skip_enable+'</a>';
  794. }
  795. }
  796. }
  797. //****************************************************
  798. function link2arh_record() {
  799. var link_record, s, el;
  800. var x = document.querySelectorAll("td > a[href*='mid=']");
  801. if (x.length == 0) return;
  802. for (var k = 0; k < x.length; k++) {
  803. link_record = x[k].href;
  804. s = link_record.split('&mid');
  805. link_record = s[0]+'&show_archive=1&mid'+s[1];
  806. x[k].insertAdjacentHTML("afterEnd" ,'<br><a href="'+link_record+'"><img border="0" title="'+str_arh_record
  807. +'" src="http://dcdn.heroeswm.ru/i/s_knowledge.gif"></a>');
  808. }
  809. }
  810. // ***************************************************
  811. function showExperience() {
  812. skip_en();
  813. if (show_archive) {link2arh_record();}
  814. if(url_cur.indexOf(url_map) == -1){ return; }
  815. var my_td_danger, total_exp, full_exp, next_count, exp_with_helper, next_half_count, min_count, exp_min_count, next_min_count, mob_HP;
  816. var str_hunt, str_total_exp, next_level;//, min_kills, exp_min_kills;
  817. var mob_name ="";
  818. var str_dop ="";
  819. var mob_exp = 0;
  820. var temp = 0;
  821. var hunt_available = false;
  822. var skip_all_mob = true;
  823. for (var k = 0; k < all_tables.length; k++)
  824. {
  825. if (all_tables[k].className == "wbwhite")
  826. {
  827. if (all_tables[k].childNodes[0].childNodes[0].children.length < 2) {break;}
  828. my_td_danger = all_tables[k].childNodes[0].childNodes[0].childNodes[2];
  829. if (!my_td_danger){ return; } //no hunt...
  830.  
  831. str_hunt = all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML;
  832. mob_count = str_hunt.substring(str_hunt.indexOf("(")+1, str_hunt.indexOf(str_kol)-1);
  833. mob_name = str_hunt.substring(str_hunt.indexOf(">")+1, str_hunt.indexOf("</"));
  834. if (show_HP)
  835. {
  836. mob_HP = mob_rus_exp[$ustring(mob_name)][1] * mob_count;
  837. str_hunt = str_hunt.replace(str_kol,str_kol+' <font style="font-size:10px;color:#CD00CD">HP:<B>'+mob_HP+'</B></font>');
  838. all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML = str_hunt;
  839. }
  840. mob_exp = mob_rus_exp[$ustring(mob_name)][0];
  841. hunt_available = true;
  842.  
  843. total_exp = Math.floor(mob_exp * mob_count / 5); //Полный опыт в одиночку
  844. full_exp = total_exp;
  845. next_count = (mob_count*1.3).toFixed(0); //Прирост при победе в одиночку
  846.  
  847. exp_with_helper = (total_exp / 2).toFixed(0); //Опыт с помощником (50/50)
  848. next_half_count = (mob_count*Math.pow(1.3, 0.5)).toFixed(0); //Прирост при победе с помощником (50/50)
  849.  
  850. min_count = (mob_count / 5 - 0.5).toFixed(0); //Для минимального 5% прироста
  851. exp_min_count = (Math.floor(mob_exp * min_count / 5)).toFixed(0); //Опыт при минимальном приросте
  852. next_min_count = (mob_count*Math.pow(1.3, 0.2)).toFixed(0); //Прирост при убийстве <=20% будет ~5.4%
  853. total_exp = total_exp > pl_level*500 ? pl_level*500 : total_exp; //Если опыт больше верхней отсечки по уровню
  854. exp_with_helper = exp_with_helper > pl_level*500 ? pl_level*500 : exp_with_helper;
  855. exp_min_count = exp_min_count > pl_level*500 ? pl_level*500 : exp_min_count;
  856. if (pl_level > 2) { //Если опыт меньше нижней отсечки по уровню (3+ уровни)
  857. total_exp = total_exp < pl_level*70 ? pl_level*70 : total_exp;
  858. exp_with_helper = exp_with_helper < pl_level*35 ? pl_level*35 : exp_with_helper;
  859. exp_min_count = exp_min_count < pl_level*14 ? pl_level*14 : exp_min_count;
  860. }
  861. total_exp = (total_exp * koef).toFixed(0);
  862. exp_with_helper = (exp_with_helper * koef).toFixed(0);
  863. exp_min_count = (exp_min_count * koef).toFixed(0);
  864. //-------------- Вставим кусок кода ---------------
  865. // total_exp - опыт с учетом коэф. перекача
  866. skip_all_mob = needSkip(skip_all_mob,mob_name,full_exp);
  867. //-------------------------------------------------
  868. str_total_exp = total_exp;
  869. next_level = Number(pl_level)+1;
  870. if (total_exp > max_exp && max_exp > 0) { all_tables[k].childNodes[0].style.background = '#FFA07A' ; }
  871. if (total_exp != full_exp) str_dop = ustring(' (из ')+full_exp+ustring(')'); else str_dop ="";
  872. 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>';
  873. 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>';}
  874.  
  875. 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>'};
  876.  
  877. if (enable_5_procent) {str_total_exp = str_total_exp + '<font style="font-size:11px;color:#007FFF"><i><center>'+str_min_kol.replace('STR3', min_count).replace('STR4', exp_min_count).replace('STR8', next_min_count)+'</center></i></font>'};
  878.  
  879. all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML = str_hunt + str_total_exp;
  880. }
  881. }
  882. if (skip_all_mob && hunt_available) skip_hunt();
  883. // alert(skip_all_mob+' '+hunt_available+' '+limit_exp+' '+google_str.length+' '+skip_mode);
  884. if (!skip_all_mob && hunt_available && ((limit_exp != 0) || (!skip_mode && (google_str.length != 0)) ) ) document.title = str_hunt_found;
  885. }
  886. //****************************************************
  887. function helpers() {
  888. if(url_cur.indexOf(url_war) == -1){ return; }
  889. var ems, elem, elem2, str_hunt, mob_count, mob_name, total_exp, backgrn, sect, s_sect;
  890. var alr = 0;
  891. for (var k = 0; k < all_tables.length; k++)
  892. {
  893. if (all_tables[k].className == "wb")
  894. {
  895. ems = all_tables[k].querySelectorAll( "td > a[href*='map.php?cx']");
  896. for (var i = 0; i < ems.length; i++) {
  897. if (!ems[i].parentNode.parentNode.childNodes[6].childNodes[4]) {
  898. elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[3].childNodes[0]; //odin v drugom sektore ili inoi level
  899. } else if (!ems[i].parentNode.parentNode.childNodes[6].childNodes[6]) {
  900. elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[5].childNodes[0]; //odin v moem sektore
  901. elem2 = ems[i].parentNode.parentNode.childNodes[6].childNodes[4]; //odin v moem sektore
  902. } else {
  903. elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[6].childNodes[0]; //dvoe v drugom sektore
  904. }
  905. str_hunt = elem.innerHTML;
  906. mob_count = str_hunt.substring(str_hunt.search(/\(/)+1, str_hunt.search(/\)/));
  907. mob_name = str_hunt.substring(0, str_hunt.search(/\(/));
  908. total_exp = Math.floor(mob_rus_exp[$ustring(mob_name)][0] * mob_count / 5);
  909. backgrn = '';
  910. if (elem.parentNode.parentNode.childElementCount != 5) {
  911. s_sect = ems[i].href;
  912. sect = s_sect.substring(s_sect.lastIndexOf("?")+1,s_sect.length);
  913. s_sect =s_sect.replace("map.php?"+sect,"move_sector.php?id="+sectors[sect]);
  914. ems[i].innerHTML += ustring('<br><font style="color:#FF3244;"><b>Перейти</b></font>');
  915. ems[i].href = s_sect;
  916. }
  917. if (only_Gud_ExpUm && (total_exp< pl_level*133) ){ backgrn = ' background:#cfd';}
  918. if (only_Gud_ExpUm && (total_exp< pl_level*70) ){ backgrn = ' background:#0f0';}
  919. if (alarm_Green_Hunt && (total_exp< pl_level*133) && (elem.parentNode.parentNode.childElementCount != 5)){ alr = 1;}
  920. elem.innerHTML += '<font style="font-size:12px; color:#013220;'+ backgrn+'"><b>'+' '+total_exp+'</b></font>'+str_exp;
  921. }
  922. }
  923. }
  924. if (alr == 1) alert(str_green_hunt);
  925. if (alarm_Green_Hunt) setTimeout(function(){ window.location.href = 'http://'+location.hostname+'/'+'group_wars.php?filter=hunt'; }, 5000);
  926. }
  927. //****************************************************
  928. function hideHunt() {
  929. var tb;
  930. if(url_cur.indexOf(url_map) == -1){ return; }
  931. for (var k = 0; k < all_tables.length; k++)
  932. {
  933. tb = all_tables[k];
  934. if (tb.className == "wbwhite")
  935. {
  936. if (tb.childNodes[0].childNodes[0].children.length < 2) {break;}
  937. tb.parentNode.removeChild(tb.nextSibling);
  938. tb.parentNode.removeChild(tb);
  939. k--;
  940. }
  941. }
  942. }
  943. //****************************************************************************************
  944. function add_archive() {
  945. var ems, s_full, spl, s, s_url;
  946. if (url_cur.indexOf('level') == -1) return;
  947. if (url_cur.indexOf('show_archive=1') == -1)
  948. {
  949. if (url_cur.indexOf('mid') == -1)
  950. {
  951. s_url = url_cur+'&show_archive=1';
  952. } else {
  953. spl = url_cur.split('&mid');
  954. s_url = spl[0]+'&show_archive=1&mid'+spl[1];
  955. }
  956. s = str_show_archive_r;
  957. } else {
  958. spl = url_cur.split('&show_archive=1');
  959. s_url = spl[0]+spl[1];
  960. s = str_hide_archive_r;
  961. }
  962. ems = document.querySelectorAll( "td > center > a[href*='plstats_hunters.php?level']");
  963. if (ems.length != 0) {
  964. s_full = '<br><center><a href="'+s_url+'"><b><font color="blue">'+s+'</font></b></a></center>';
  965. ems[0].parentNode.insertAdjacentHTML("afterEnd" ,s_full);
  966. }
  967. }
  968. //****************************************************
  969. getLevel();
  970. showSettings();
  971. if (!grin_Pis) showExperience()
  972. else hideHunt();
  973. helpers();
  974. if (url_cur.indexOf('plstats_hunters') != -1) add_archive();
  975. })();