hwm_GO_exp

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

目前为 2021-03-21 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name hwm_GO_exp
  3. // @namespace https://greasyfork.org/users/14188
  4. // @description Помощник ГО. (2019.03.27)
  5. // @author ElMarado (Based on script Mantens)
  6. // @version 4.56
  7. // @include http://178.248.235.15/group_wars.php*
  8. // @include http://178.248.235.15/plstats_hunters.php*
  9. // @include http://178.248.235.15/home.php*
  10. // @include http://178.248.235.15/map.php*
  11. // @include https://www.heroeswm.ru/group_wars.php*
  12. // @include https://www.heroeswm.ru/plstats_hunters.php*
  13. // @include https://www.heroeswm.ru/home.php*
  14. // @include https://www.heroeswm.ru/map.php*
  15. // @grant GM_getValue
  16. // @grant GM_setValue
  17. // @icon https://app.box.com/representation/file_version_34029013909/image_2048/1.png?shared_name=hz97b2qwo2ycc5ospb7ccffn13w3ehc4
  18. // ==/UserScript==
  19. (function () {
  20. var max_exp = 0;
  21. var version = "4.56 (2019.03.27)";
  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_1_home = "www.heroeswm.ru/home.php";
  29. var url_2_home = "178.248.235.15/home.php";
  30. var str_url = "https://greasyfork.org/ru/scripts/11692-hwm-go-exp";
  31. var all_tables = document.getElementsByTagName('table');
  32. var short_button = GM_getValue("short_button" , false);
  33. var enable_Exp_Half = GM_getValue("enable_Exp_Half" , true);
  34. var enable_5_procent = GM_getValue("enable_5_procent" , false);
  35. var only_Gud_ExpUm = GM_getValue("only_Gud_ExpUm", true);
  36. var find_Hunt = GM_getValue("find_Hunt", false);
  37. var beep_if_free = GM_getValue("beep_if_free", false);
  38. var show_archive = GM_getValue("show_archive", true);
  39. var grin_Pis = GM_getValue("grin_Pis", false);
  40. var pic_enable = GM_getValue("pic_enable", true);
  41. var show_HP = GM_getValue("show_HP", false);
  42. var skip_no_half = GM_getValue("skip_no_half", 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); //коэф перекача
  46. var limit_exp = GM_getValue("limit_exp_1", 0); //С какого порога опыта пропускать охоты
  47. var skip_mode = GM_getValue("skip_mode_1", true); //Пропускать по опыту или по списку: 1 - опыт, 0 - список
  48. var skip_base = GM_getValue("skip_base_1", ""); //h база пропусков на существ: 0 - пропускать, 1 - оставить
  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 skip_mode = GM_getValue("skip_mode_2", true);
  55. var skip_base = GM_getValue("skip_base_2", "");
  56. }
  57. //********************
  58. var str_pl_lvl = ustring("Боевой уровень: ");
  59. var str_kol = ustring('шт.');
  60. var str_sum_exp = ustring("За них дадут <B> STR1dopSTR </B> опыта. Потом их будет ~STR6 шт.");
  61. var str_kill_now = ustring("Убей сейчас! На STR9 уровне за них дадут <B> STR10 </B> опыта.");
  62. var str_hlp_exp = ustring("За убийство с помощником (50/50) Вам дадут <B> STR2 </B> опыта. В следующий раз предложат ~STR7 шт.");
  63. var str_min_kol = ustring("Для Min (~5%) прироста надо убить не более STR3 шт (STR4 опыта). В следующий раз предложат ~STR8 шт.");
  64. var str_exp_helper = ustring("Опыт помощника: [70..133]*Уровень*Набранная умка*[1.1-Зелье].");
  65. var str_exp = ustring("&nbspопыта.");
  66. var str_settings_1 = ustring("&nbspНастройки ГО&nbsp");
  67. var str_settings_2 = ustring("&nbspГО&nbsp");
  68. var str_start = ustring("Скрипт: Помощник ГО. Версия: ");
  69. var str_show_1 = ustring("Отображать опыт с помощником, если убьёте по 50%");
  70. var str_show_2 = ustring("Отображать сколько убить мобов для минимального прироста");
  71. var str_show_3 = ustring("Отображать формулу опыта помощника (при выгодных охотах)");
  72. var str_hilight = ustring("Подсвечивать охоты с выгодной экспоумкой (на странице групповых боёв)");
  73. var str_find_hunt = ustring("Поиск чужих охот (групповые бои). Обновление: 5с. ");
  74. var str_beep_if_free = ustring("Если нашёл, вывод звука:");
  75. var str_show_archive = ustring("Отображать ссылки на рекорды из архива.");
  76. var str_Grin_Pis = ustring("Включить Грин Пис (скрывать предложения охот)");
  77. var str_show_HP = ustring("Отображать суммарное HP мобов.");
  78. var str_short_button = ustring("Сделать кнопку настроек короткую.");
  79. var str_koef_0 = ustring("Текущий коэффициент перекача:&nbsp");
  80. var str_koef_1 = ustring("Введите новый коэффициент перекача от 1.0 до 9.9999: ");
  81. var str_skip_select_1 = ustring("Пропускать мобов: ");
  82. var str_skip_select_2 = ustring("по опыту ");
  83. var str_skip_select_3 = ustring("по списку ");
  84. var str_skip_hunt = ustring("Пропускать охоты с опытом больше чем:");
  85. var str_title_1 = ustring("Если значение 0, то опыт не учитывается.");
  86. var str_pic_enable = ustring("Отображать картинки существ в списке.")
  87. var str_no_skip = ustring("Вы уже в заявке!");
  88. var str_skip_enable = ustring("Пройти мимо");
  89. var str_arh_record = ustring("Рекорд из архива (до 01.03.2015)");
  90. var str_need_skip = ustring("ГO. Охоты можно пропустить.");
  91. var str_auto_skip = ustring("ГO. Охоту пропускаю.");
  92. var str_hunt_found = ustring("ГO. Охота найдена.");
  93. var str_show_archive_r = ustring("Архив рекордов до 01.03.2015");
  94. var str_hide_archive_r = ustring("Текущие рекорды");
  95. var str_update = ustring("Проверить обновление скрипта.");
  96. var str_autor = ustring("Сообщить автору о найденной ошибке.");
  97. var str_url_aut = ustring("/sms-create.php?mailto=ElMarado&subject=Скрипт: Помощник ГО v")+version+ustring(". Найдена ошибка:");
  98. var str_zagl1_list = ustring("Выберите существ для охоты. Всего ");
  99. var str_zagl2_list = ustring("существ.");
  100. var str_all_mark = ustring("Пометить всех");
  101. var str_all_unmark = ustring("Снять у всех");
  102. var str_all_flying = ustring("Все летающие");
  103. var str_skip_no_half = ustring(" и <B>(</B>оставлять [1/2] или ");
  104. var str_diamond_search = ustring(" бриллианта");
  105. //*************** Конвертация ********************************
  106. function hex_2_bin(hex) {
  107. var hex2bin = {
  108. 0: "0000", 1: "0001", 2: "0010", 3: "0011",
  109. 4: "0100", 5: "0101", 6: "0110", 7: "0111",
  110. 8: "1000", 9: "1001", A: "1010", B: "1011",
  111. C: "1100", D: "1101", E: "1110", F: "1111"
  112. };
  113. var str_bin = "";
  114. for (var i=0; i<hex.length;i++) str_bin +=hex2bin[hex[i]];
  115. return str_bin;
  116. }
  117. //*************** Конвертация ********************************
  118. function bin_2_hex(bin) {
  119. var bin2hex = {
  120. "0000": "0", "0001": "1", "0010": "2", "0011": "3",
  121. "0100": "4", "0101": "5", "0110": "6", "0111": "7",
  122. "1000": "8", "1001": "9", "1010": "A", "1011": "B",
  123. "1100": "C", "1101": "D", "1110": "E", "1111": "F"
  124. };
  125. var n_hex_sym = Math.ceil(bin.length/4);
  126. var str_hex = "";
  127. var sym4;
  128. for (var i=0; i< n_hex_sym; i++) {
  129. sym4 = bin.substr(i*4,4);
  130. str_hex += bin2hex[sym4];
  131. }
  132. return str_hex;
  133. }
  134. //***********************************************************
  135. function fill_hex_massive (n, s) {
  136. var arr = "";
  137. for (var i = 0; i < n; i++) arr += s;
  138. return arr;
  139. }
  140. //***********************************************************
  141. function show_List() {
  142. if (url_cur.indexOf('map.php') == -1) return;
  143. if (skip_mode) { //если пропуск по опыту, то кнопку вызова списка не отображать
  144. var elem = document.getElementById("get_list_go");
  145. if (elem != null) elem.parentNode.removeChild(elem); //если кнопка уже есть, то её убрать.
  146. return;
  147. }
  148. var x2= document.querySelector("td >a[href*='ecostat.php']");
  149. if (x2 == null) return;
  150. x2 = x2.parentNode;
  151. var str_settings = "\u21B4";
  152. var d = document.createElement('div');
  153. d.id="get_list_go";
  154. d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px 500px; text-align: center;'); //Положение кнопки, для вызова настроек
  155. d.innerHTML = '<style> .list_go * {font-size: 18px; color: #FFFF00;} .cell_list {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
  156. '<table class="list_go" width=20px> <tr height=20>' + // Размер кнопки и фон, для вызова настроек
  157. '<td class="cell_list" style="cursor:pointer" id="set_list"><font style="font-size:14px;">'+str_settings+'</font></td>' +
  158. '</tr> </table>';
  159. x2.insertBefore(d,x2.firstChild); //Вставка куска
  160. addEvent( $("set_list"), "click", settings_list ); //Привязка к куску на клик вызов функции
  161. //************
  162. function list_close()
  163. {
  164. var bg = $('bgOverlay');
  165. var bgc = $('bgCenter');
  166. bg.parentNode.removeChild(bg);
  167. bgc.parentNode.removeChild(bgc);
  168. }
  169. //************
  170. function settings_list()
  171. {
  172. var bg = $('bgOverlay');
  173. var bgc = $('bgCenter');
  174. var bg_height = ScrollHeight();
  175. if ( !bg )
  176. {
  177. bg = document.createElement('div');
  178. document.body.appendChild( bg );
  179. bgc = document.createElement('div');
  180. document.body.appendChild( bgc );
  181. }
  182. bg.id = 'bgOverlay';
  183. bg.style.position = 'absolute';
  184. bg.style.left = '0px';
  185. bg.style.width = '100%';
  186. bg.style.background = "#000000";
  187. bg.style.opacity = "0.5";
  188. bg.style.zIndex = "1100";
  189. bgc.id = 'bgCenter';
  190. bgc.style.position = 'absolute';
  191. bgc.style.left = ( ( ClientWidth() - 420 ) / 2 ) + 'px';
  192. bgc.style.width = '420px';
  193. bgc.style.height = '475px';
  194. bgc.style.overflow = 'auto'; //scrolling
  195. bgc.style.background = "#F6F3EA";
  196. bgc.style.zIndex = "1105";
  197. addEvent(bg, "click", list_close); //клик вне окна
  198. //форма и внешний вид окно настроек
  199. var s_style = "<style>.cre_mon_image2 { position: absolute; top: 0; left: 0;}.cre_creature { font-weight: 400; font-family: 'Arial',sans-serif; width: 60px; position: relative; letter-spacing: normal; font-size: 16px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; display:inline-block;}</style>";
  200. var s_innerHTML = s_style+'<div style="border:0px 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_tr2" title="Close">x</div>'+
  201. //заголовок окна настроек
  202. '<table cellspacing="0" ><tr><td colspan=2><b>'+str_zagl1_list+'<font style="color:#0070FF;"> '+n_monstrs+'</font> '+str_zagl2_list+'</b><hr/></td></tr>'+
  203. //пропуск охот по опыту
  204. '<tr><td colspan=2>'+
  205. '<input type="submit" id="set_all_mark_ok" value="'+str_all_mark +'">'+
  206. '<input type="submit" id="set_all_unmark_ok" value="'+str_all_unmark+'">'+
  207. '<input type="submit" id="set_all_flying_ok" value="'+str_all_flying+'">'+
  208. '</td></tr>';
  209. var n_m = 0;
  210. var s_bgcolor;
  211. var s_pic_out="";
  212. for (var key in mob_rus_exp) { //перебор существ из базы и выводим чекбоксы с именем существа
  213. if (skip_bin_base[n_m]=="1") s_bgcolor="style=background-color:#B0FFB0;"; else s_bgcolor="";
  214. if (pic_enable) s_pic_out = '<tr><td><div class="cre_creature"><img width="60" height="50" border="0" src="http://hwm.cdnvideo.ru/i/portraits/'+mob_rus_exp[$ustring(key)][2]+'anip33.png"> <img class="cre_mon_image2" width="60" height="50" border="0" src="http://hwm.cdnvideo.ru/i/army_html/frame_lvl1_120x100_woa.png?v=1"></td>';//выводим картинку
  215. s_innerHTML += s_pic_out+
  216. '<td '+s_bgcolor+' id=cell_'+n_m+'><label><input type=checkbox '+(skip_bin_base[n_m]==1?"checked":"")+' id=set_monstr_'+n_m+'>'+ //выводим чекбокс
  217. '<font style="font-size:16px; vertical-align:center">'+ustring(key)+'</font></label></div></td></tr>'; //выводим имя существа
  218. n_m++;
  219. }
  220. s_innerHTML +='</table>'; //концовка
  221. bgc.innerHTML = s_innerHTML;
  222. n_m = 0;
  223. //********* назначение событий *******
  224. for (var key in mob_rus_exp) { appendEvent(n_m++); } //назначаем на события на каждый чек бокс
  225. document.getElementById('set_all_mark_ok').onclick = function(){all_mark_ok("F")}; //Пометить все
  226. document.getElementById('set_all_unmark_ok').onclick = function(){all_mark_ok("0")}; //Сбросить все
  227. document.getElementById('set_all_flying_ok').onclick = function(){all_flying_mark()}; //Пометить летающих
  228. addEvent($("bt_close_tr2"), "click", list_close); //крестик в углу
  229.  
  230. bg.style.top = '0px';
  231. bg.style.height = bg_height + 'px';
  232. bgc.style.top = ( window.pageYOffset + 155 ) + 'px';
  233. bg.style.display = '';
  234. bgc.style.display = '';
  235. }
  236. //********* обработчики полей ввода *******
  237. function appendEvent(n) { document.getElementById('set_monstr_'+n).onclick = function(){change_enable_mostr(n)};}
  238. function change_enable_mostr(n) { //Обработка чекбоксов с изменением массивов
  239. var s_bgcolor;
  240. skip_bin_base = skip_bin_base.substr(0,n)+ (1-skip_bin_base[n]) +skip_bin_base.substr(n+1);
  241. skip_base = bin_2_hex(skip_bin_base);
  242. if (skip_bin_base[n]=="1") s_bgcolor="#B0FFB0"; else s_bgcolor="";
  243. document.getElementById("cell_"+n).style.backgroundColor = s_bgcolor;
  244. if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_base_1", skip_base);
  245. if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_base_2", skip_base);
  246. }
  247. //************
  248. function all_mark_ok(zn){ //заполняем массив значением zn
  249. skip_base = fill_hex_massive(skip_base.length, zn);
  250. skip_bin_base = hex_2_bin(skip_base);
  251. var n = 0;
  252. var s_bgcolor;
  253. var bool = true;
  254. if (zn == "0") bool = false;
  255. for (var key in mob_rus_exp) {
  256. if (skip_bin_base[n]=="1") s_bgcolor="#B0FFB0"; else s_bgcolor="";
  257. document.getElementById("cell_"+n).style.backgroundColor = s_bgcolor;
  258. document.getElementById('set_monstr_'+n++).checked = bool;
  259. }
  260. if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_base_1", skip_base);
  261. if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_base_2", skip_base);
  262. }
  263. //************
  264. function all_flying_mark(){ //заполняем летающих существ
  265. var n = 0;
  266. for (var key in mob_rus_exp) {
  267. if (mob_rus_exp[key][3] == 1) {
  268. skip_bin_base = skip_bin_base.substr(0,n)+ '1' +skip_bin_base.substr(n+1);
  269. document.getElementById("cell_"+n).style.backgroundColor = "#B0FFB0";
  270. document.getElementById('set_monstr_'+n).checked = true;
  271. }
  272. n++;
  273. }
  274. skip_base = bin_2_hex(skip_bin_base);
  275. if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_base_1", skip_base);
  276. if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_base_2", skip_base);
  277. }
  278. //************
  279. function $(id) { return document.querySelector("#"+id); }
  280. function addEvent(elem, evType, fn) {
  281. if (elem.addEventListener) elem.addEventListener(evType, fn, false);
  282. else if (elem.attachEvent) elem.attachEvent("on" + evType, fn);
  283. else elem["on" + evType] = fn;
  284. }
  285. function ClientWidth() {return document.compatMode=='CSS1Compat' && document.documentElement?document.documentElement.clientWidth:document.body.clientWidth;}
  286. function ScrollHeight() {return Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);}
  287. }
  288. //************ Начало фрагментов кода от (C) Demin с моими вставками и комментариями **********************************
  289. function showSettings() {
  290. if (url_cur.indexOf('map.php') == -1) return;
  291. var x1= document.querySelector("td >a[href*='ecostat.php']");
  292. if (x1 == null) return;
  293. x1 = x1.parentNode;
  294. var str_settings, width_but, left_pos;
  295. if (short_button==0) { str_settings = str_settings_1; width_but = 80; left_pos = 393;}
  296. else { str_settings = str_settings_2; width_but = 20; left_pos = 468;}
  297. var d = document.createElement('div');
  298. d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px '+left_pos+'px; text-align: center;');//Положение кнопки, для вызова настроек
  299. d.innerHTML = '<style> .hwm_go * {font-size: 12px; color: #FFFF00;} .cell_go {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
  300. '<table class="hwm_go" width='+width_but+'px> <tr height=20>' + // Размер кнопки и фон, для вызова настроек
  301. '<td class="cell_go" style="cursor:pointer" id="set_go"><font style="font-size:12px;">'+str_settings+'</font></td>' +
  302. '</tr> </table>';
  303. x1.insertBefore(d,x1.firstChild); //Вставка куска
  304. addEvent( $("set_go"), "click", settings_go ); //Привязка к куску на клик вызов функции
  305. //************
  306. function settings_go_close()
  307. {
  308. var bg = $('bgOverlay');
  309. var bgc = $('bgCenter');
  310. bg.parentNode.removeChild(bg);
  311. bgc.parentNode.removeChild(bgc);
  312. }
  313. //************
  314. function settings_go()
  315. {
  316. var bg = $('bgOverlay');
  317. var bgc = $('bgCenter');
  318. var bg_height = ScrollHeight();
  319. if ( !bg )
  320. {
  321. bg = document.createElement('div');
  322. document.body.appendChild( bg );
  323. bgc = document.createElement('div');
  324. document.body.appendChild( bgc );
  325. }
  326. bg.id = 'bgOverlay';
  327. bg.style.position = 'absolute';
  328. bg.style.left = '0px';
  329. bg.style.width = '100%';
  330. bg.style.background = "#000000";
  331. bg.style.opacity = "0.5";
  332. bg.style.zIndex = "1100";
  333. bgc.id = 'bgCenter';
  334. bgc.style.position = 'absolute';
  335. bgc.style.left = ( ( ClientWidth() - 590 ) / 2 ) + 'px';
  336. bgc.style.width = '590px';
  337. bgc.style.background = "#F6F3EA";
  338. bgc.style.zIndex = "1105";
  339. addEvent(bg, "click", settings_go_close);
  340. //форма и внешний вид окно настроек
  341. //общая рамка
  342. bgc.innerHTML = '<div style= "border:1px solid #abc;padding:5px;margin:2px;">'+
  343. //заголовок окна настроек
  344. '<table><tr><td colspan=3><b>'+str_start+'<font style="color:#0070FF;">'+version+'</font></b>'+
  345. //кнопка закрытия
  346. '<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><hr/>'+
  347. //Опыт с помощником 50/50
  348. '<label><input type=checkbox '+(enable_Exp_Half==1?"checked":"")+' id=set_enable_Exp_Half title=""> '+str_show_1+'</label><br>'+
  349. //кол-во для мин.прироста
  350. '<label><input type=checkbox '+(enable_5_procent==1?"checked":"")+' id=set_enable_5_procent title=""> '+str_show_2+'</label><br>'+
  351. //подсвечивать выгодные охоты
  352. '<label><input type=checkbox '+(only_Gud_ExpUm==1?"checked":"")+' id=set_only_Gud_ExpUm title=""> '+str_hilight+'</label><br>'+
  353. //Искать чужие охоты (в групповых боях). Обновление: 5с.
  354. '<label><input type=checkbox '+(find_Hunt==1?"checked":"")+' id=set_find_Hunt title=""> '+str_find_hunt+'</label>'+
  355. //Предупреждать, если есть незапоненная охота.
  356. '<label>'+str_beep_if_free+'<input type=checkbox '+(beep_if_free==1?"checked":"")+' id=set_beep_if_free title=""></label><br>'+
  357. //Рекорд из архива.
  358. '<label><input type=checkbox '+(show_archive==1?"checked":"")+' id=set_show_archive title=""> '+str_show_archive+'</label><br>'+
  359. //Суммарное HP.
  360. '<label><input type=checkbox '+(show_HP==1?"checked":"")+' id=set_show_HP title=""> '+str_show_HP+'</label><br>'+
  361. //Грин Пис.
  362. '<label><input type=checkbox '+(grin_Pis==1?"checked":"")+' id=set_Grin_Pis title=""> '+str_Grin_Pis+'</label><hr/>'+
  363. '</td></tr>'+
  364. //коэфициент перекача
  365. '<tr><td colspan=3>'+
  366. str_koef_0+'<font style="color:#0070FF;"><b id=k_p>' +Number(koef).toFixed(4) +'</b></font><br>' +
  367. 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"><hr/>'+
  368. //Выбор пропусков str_skip_select_3
  369. str_skip_select_1+
  370. '<label><input type=checkbox '+(skip_mode==1?"checked":"")+' id=set_skip_mode1 title="">'+str_skip_select_2+'</label>'+
  371. '<label><input type=checkbox '+(skip_mode==0?"checked":"")+' id=set_skip_mode2 title="">'+str_skip_select_3+'</label>'+
  372. '<label>'+str_skip_no_half+'<img width="16" height="16" border="0" title="Бриллианты" src="http://hwm.cdnvideo.ru/i/diamond.gif">'+
  373. '<input type=checkbox '+(skip_no_half==1?"checked":"")+' id=set_skip_no_half title=""><b>)</b></label></td></tr>'+
  374. //пропуск охот по опыту
  375. '<tr><td width="52%">'+str_skip_hunt+'</td><td colspan=2 width="48%" align="left" title="'+str_title_1+'"> '+
  376. '<input id="set_limit_exp" value="'+limit_exp+'" size="5" maxlength="6"><input type="submit" id="set_limit_exp_ok" value="OK"></td></tr>'+
  377. '<tr><td colspan=3>'+
  378. //Выбор Отображать картинки в списке или нет
  379. '<label><input type=checkbox '+(pic_enable==1?"checked":"")+' id=set_pic_enable title=""> '+str_pic_enable+'</label><hr/>'+
  380. //Сделать кнопку настройки короткую/длинную
  381. '<label><input type=checkbox '+(short_button==1?"checked":"")+' id=set_short_button title=""> <font size="1" color="blue">'+str_short_button+'</font></label><hr/></td></tr>'+
  382. //ссылка на сайт скрипта
  383. '<tr><td width="40%"><a href="'+str_url+'">'+str_update+'</a></td><td colspan=2 width="60%" align="right"><a href="'+str_url_aut+'">'+str_autor+'</a></td></tr></table>'; //концовка
  384. //назначение вызова функция при событиях кнопок и чекбоксов
  385. addEvent($("bt_close_tr"), "click", settings_go_close); //крестик в углу
  386. addEvent($("set_enable_Exp_Half"), "click", change_enable_Exp_Half); //чек-бокс
  387. addEvent($("set_enable_5_procent"), "click", change_enable_5_procent); //чек-бокс
  388. addEvent($("set_only_Gud_ExpUm"), "click", change_only_Gud_ExpUm); //чек-бокс
  389. addEvent($("set_find_Hunt"), "click", change_find_Hunt); //чек-бокс
  390. addEvent($("set_beep_if_free"), "click", change_beep_if_free); //чек-бокс
  391. addEvent($("set_show_archive"), "click", change_show_archive); //чек-бокс
  392. addEvent($("set_show_HP"), "click", change_show_HP); //чек-бокс
  393. addEvent($("set_Grin_Pis"), "click", change_Grin_Pis); //чек-бокс
  394. addEvent($("set_short_button"), "click", change_short_button); //чек-бокс
  395. addEvent($("set_koef_ok"), "click", change_koef); //поле ввода
  396. addEvent($("set_limit_exp_ok"), "click", change_limit_exp); //поле ввода
  397. addEvent($("set_skip_mode1"), "click", change_skip_mode); //радио
  398. addEvent($("set_skip_mode2"), "click", change_skip_mode); //радио
  399. addEvent($("set_skip_no_half"), "click", change_skip_no_half); //радио
  400. addEvent($("set_pic_enable"), "click", change_pic_enable); //чек-бокс
  401. bg.style.top = '0px';
  402. bg.style.height = bg_height + 'px';
  403. bgc.style.top = ( window.pageYOffset + 155 ) + 'px';
  404. bg.style.display = '';
  405. bgc.style.display = '';
  406. }
  407. //********* обработчики полей ввода *******
  408. function change_skip_mode()
  409. {
  410. skip_mode = !skip_mode;
  411. document.getElementById('set_skip_mode1').checked = skip_mode;
  412. document.getElementById('set_skip_mode2').checked = !skip_mode;
  413. show_List();
  414. if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_mode_1", skip_mode);
  415. if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_mode_2", skip_mode);
  416. }
  417. function change_koef()
  418. {
  419. if ( Number( $("set_koef").value ) >= 1 ) koef = $("set_koef").value; else koef = Number(1.0);
  420. document.getElementById('k_p').innerHTML = Number(koef).toFixed(4);
  421. if ( url_cur.indexOf(url_1) != -1) GM_setValue("koef_dop_exp_1", koef);
  422. if ( url_cur.indexOf(url_2) != -1) GM_setValue("koef_dop_exp_2", koef);
  423. }
  424. function change_limit_exp()
  425. {
  426. if ( Number( $("set_limit_exp").value ) >= 0 ) limit_exp = Number($("set_limit_exp").value).toFixed(0); else limit_exp = 0;
  427. if ( url_cur.indexOf(url_1) != -1) GM_setValue("limit_exp_1", limit_exp);
  428. if ( url_cur.indexOf(url_2) != -1) GM_setValue("limit_exp_2", limit_exp);
  429. }
  430. //*********** обработчики чек-боксов *****
  431. function change_skip_no_half() {GM_setValue("skip_no_half", skip_no_half = !skip_no_half);}
  432. function change_enable_Exp_Half() {GM_setValue("enable_Exp_Half", enable_Exp_Half = !enable_Exp_Half);}
  433. function change_enable_5_procent() {GM_setValue("enable_5_procent",enable_5_procent = !enable_5_procent);}
  434. function change_only_Gud_ExpUm() {GM_setValue("only_Gud_ExpUm", only_Gud_ExpUm = !only_Gud_ExpUm);}
  435. function change_find_Hunt() {GM_setValue("find_Hunt", find_Hunt = !find_Hunt);}
  436. function change_beep_if_free() {GM_setValue("beep_if_free", beep_if_free = !beep_if_free);}
  437. function change_show_archive() {GM_setValue("show_archive", show_archive = !show_archive);}
  438. function change_show_HP() {GM_setValue("show_HP", show_HP = !show_HP);}
  439. function change_Grin_Pis() {GM_setValue("grin_Pis", grin_Pis = !grin_Pis);}
  440. function change_pic_enable() {GM_setValue("pic_enable", pic_enable = !pic_enable);}
  441. function change_short_button() {GM_setValue("short_button",short_button = !short_button);
  442. if (short_button==0) { str_settings = str_settings_1; width_but = 80; left_pos = 393;}
  443. else { str_settings = str_settings_2; width_but = 20; left_pos = 468;}
  444. d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px '+left_pos+'px; text-align: center;');//Положение кнопки, для вызова настроек
  445. d.innerHTML = '<style> .hwm_go * {font-size: 12px; color: #FFFF00;} .cell_go {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
  446. '<table class="hwm_go" width='+width_but+'px> <tr height=20>' + // Размер кнопки и фон, для вызова настроек
  447. '<td class="cell_go" style="cursor:pointer" id="set_go"><font style="font-size:12px;">'+str_settings+'</font></td>' +
  448. '</tr> </table>';
  449. addEvent( $("set_go"), "click", settings_go ); //Привязка к куску на клик вызов функции
  450. }
  451. //********** непонятно что, взято 1:1 у Demin ******
  452. function $(id) { return document.querySelector("#"+id); }
  453. function addEvent(elem, evType, fn) {
  454. if (elem.addEventListener) elem.addEventListener(evType, fn, false);
  455. else if (elem.attachEvent) elem.attachEvent("on" + evType, fn);
  456. else elem["on" + evType] = fn;
  457. }
  458. function ClientWidth() {return document.compatMode=='CSS1Compat' && document.documentElement?document.documentElement.clientWidth:document.body.clientWidth;}
  459. function ScrollHeight() {return Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);}
  460. }
  461. //************ Конец фрагментов кода от (C) Demin **********************************
  462. var sectors = {
  463. "cx=50&cy=50":1, //Empire Capital
  464. "cx=51&cy=50":2, //East River
  465. "cx=50&cy=49":3, //Tiger Lake
  466. "cx=51&cy=49":4, //Rogues' Wood
  467. "cx=50&cy=51":5, //Wolf Dale
  468. "cx=50&cy=48":6, //Peaceful Camp
  469. "cx=49&cy=51":7, //Lizard Lowland
  470. "cx=49&cy=50":8, //Green Wood
  471. "cx=49&cy=48":9, //Eagle Nest
  472. "cx=50&cy=52":10, //Portal Ruins
  473. "cx=51&cy=51":11, //Dragon Caves
  474. "cx=49&cy=49":12, //Shining Spring
  475. "cx=48&cy=49":13, //Sunny Sity
  476. "cx=52&cy=50":14, //Magma Mines
  477. "cx=52&cy=49":15, //Bear Mountain
  478. "cx=52&cy=48":16, //Fairy Trees
  479. "cx=53&cy=50":17, //Harbour City (Port City)
  480. "cx=53&cy=49":18, //Mithril Coast
  481. "cx=51&cy=52":19, //GreatWall
  482. "cx=51&cy=53":20, //Titans' Valley
  483. "cx=52&cy=53":21, //Fishing Village
  484. "cx=52&cy=54":22, //Kingdom Capital
  485. "cx=48&cy=48":23, //Ungovernable Steppe
  486. "cx=51&cy=48":24, //Crystal Garden
  487. "cx=53&cy=52":25, //East Island
  488. "cx=49&cy=52":26, //The Wilderness
  489. "cx=48&cy=50":27 //Sublime Arbor
  490. }
  491. //****************************************************
  492. var mob_rus_exp = {//252 существ. Cтруктура: [Опыт,HP,link on picture,flying]
  493. "Абордажники": [30,16 ,"bpirate" ,0],
  494. "Адепты": [121,80 ,"zealot" ,0],
  495. "Адские жеребцы": [136,50 ,"nightmare" ,0],
  496. "Адские жнецы": [250,99 ,"zhryak" ,0],
  497. "Адские псы": [33,15 ,"demondog" ,0],
  498. "Айсберговые элементали": [50,90 ,"iceelb" ,1],
  499. "Ангелы": [330,180,"angel" ,1],
  500. "Арбалетчики": [19,10 ,"marksman" ,0],
  501. "Архангелы": [390,220,"archangel" ,1],
  502. "Архидемоны": [312,211,"archdemon" ,0],
  503. "Архидьяволы": [311,199,"archdevil" ,0],
  504. "Архиличи": [110,55 ,"archlich" ,0],
  505. "Архимаги": [70,30 ,"archmage" ,0],
  506. "Ассасины": [33,14 ,"assasin" ,0],
  507. "Астральные драконы": [310,150,"ghostdragon" ,1],
  508. "Баньши": [205,110,"banshee" ,0],
  509. "Бегемоты": [350,210,"behemoth" ,0],
  510. "Берсерки": [42,25 ,"berserker" ,0],
  511. "Бестии": [30,16 ,"maiden" ,0],
  512. "Бесы": [6,4 ,"imp" ,0],
  513. "Бехолдеры": [33,22 ,"beholder" ,0],
  514. "Боевые грифоны": [45,35 ,"battlegriffin" ,1],
  515. "Боевые единороги": [135,77 ,"silverunicorn" ,0],
  516. "Боевые кентавры": [21,10 ,"mcentaur" ,0],
  517. "Боевые маги": [72,29 ,"battlemage" ,0],
  518. "Вампиры": [68,30 ,"vampire" ,0],
  519. "Вармонгеры": [36,20 ,"warmong" ,0],
  520. "Ведьмы-призраки": [30,20 ,"cursed_" ,1],
  521. "Ведьмы моря": [70,35 ,"priestessup" ,0],
  522. "Великаны-лучники": [130,100,"giantarch" ,0],
  523. "Великие левиафаны": [300,250,"upleviathan" ,0],
  524. "Верховные друиды": [101,38 ,"ddeld" ,0],
  525. "Вестники смерти": [205,100,"wraith" ,0],
  526. "Виверны": [170,90 ,"wyvern" ,1],
  527. "Визири джиннов": [110,50 ,"djinn_vizier" ,1],
  528. "Владычицы тени": [185,90 ,"matriarch" ,0],
  529. "Водные элементали": [57,43 ,"water" ,0],
  530. "Вожаки": [100,48 ,"chieftain" ,0],
  531. "Воздушные элементали": [59,30 ,"air" ,1],
  532. "Воины-наёмники": [25,24 ,"mercfootman" ,0],
  533. "Воители": [12,12 ,"shieldguard" ,0],
  534. "Воры-колдуны": [35,30 ,"thiefmage" ,0],
  535. "Воры-разведчики": [35,45 ,"thiefwarrior" ,0],
  536. "Воры-убийцы": [35,40 ,"thiefarcher" ,0],
  537. "Высшие ангелы": [390,220,"seraph2" ,1],
  538. "Высшие вампиры": [70,35 ,"vampirelord" ,0],
  539. "Высшие личи": [100,55 ,"masterlich" ,0],
  540. "Гарпии": [29,15 ,"harpy" ,1],
  541. "Гарпии-ведьмы": [45,15 ,"harpyhag" ,1],
  542. "Гарпунеры": [18,10 ,"harpooner" ,0],
  543. "Гигантские ящеры": [25,25 ,"lizard_" ,0],
  544. "Гидры": [108,80 ,"hydra" ,0],
  545. "Глубоководные черти": [140,105,"upseamonster" ,0],
  546. "Гниющие зомби": [17,23 ,"rotzombie" ,0],
  547. "Гоблины": [5,3 ,"goblin" ,0],
  548. "Гоблины-лучники": [9,3 ,"goblinarcher" ,0],
  549. "Гоблины-маги": [9,3 ,"goblinmag" ,0],
  550. "Гоблины-трапперы": [15,7 ,"trapper" ,0],
  551. "Гоги": [13,13 ,"gog" ,0],
  552. "Големы смерти": [329,350,"dgolem" ,0],
  553. "Головорезы": [6,8 ,"brute" ,0],
  554. "Горные стражи": [24,12 ,"mountaingr" ,0],
  555. "Гремлины": [5,5 ,"gremlin" ,0],
  556. "Гремлины-вредители": [9,6 ,"saboteurgremlin" ,0],
  557. "Грифоны": [59,30 ,"griffon" ,1],
  558. "Громовержцы": [162,120,"thunderlord" ,0],
  559. "Демонессы": [67,30 ,"succubusm" ,0],
  560. "Детёныши ящера": [13,13 ,"smalllizard_" ,0],
  561. "Джинны": [103,40 ,"djinn" ,1],
  562. "Джинны-султаны": [110,45 ,"djinn_sultan" ,1],
  563. "Дикие энты": [210,175,"savageent" ,0],
  564. "Дочери земли": [72,35 ,"eadaughter" ,0],
  565. "Дочери неба": [75,35 ,"sdaughter" ,0],
  566. "Древние бегемоты": [390,250,"abehemoth" ,0],
  567. "Древние мумии": [135,80 ,"amummy" ,0],
  568. "Древние энты": [210,181,"ancienent" ,0],
  569. "Дриады": [20,6 ,"sprite" ,1],
  570. "Друиды": [74,34 ,"dd_" ,0],
  571. "Духи": [27,20 ,"poltergeist" ,1],
  572. "Дьяволы": [245,166,"devil" ,0],
  573. "Дьяволята": [10,6 ,"vermin" ,0],
  574. "Единороги": [124,57 ,"unicorn" ,0],
  575. "Железные големы": [33,18 ,"golem" ,0],
  576. "Жрецы рун": [59,60 ,"runepriest" ,0],
  577. "Защитники веры": [20,23 ,"vindicator" ,0],
  578. "Защитники гор": [7,7 ,"defender" ,0],
  579. "Зелёные драконы": [350,200,"greendragon" ,1],
  580. "Земные элементали": [63,75 ,"earth" ,0],
  581. "Злобные глаза": [33,22 ,"evileye" ,0],
  582. "Злой пёс 2018": [100,88 ,"evildog" ,0],
  583. "Зомби": [11,17 ,"zombie" ,0],
  584. "Изумрудные драконы": [400,200,"emeralddragon" ,1],
  585. "Имперские грифоны": [62,35 ,"impergriffin" ,1],
  586. "Инквизиторы": [121,80 ,"inquisitor" ,0],
  587. "Искусительницы": [65,26 ,"seducer" ,0],
  588. "Ифриты": [200,90 ,"efreeti" ,1],
  589. "Ифриты султаны": [250,100,"efreetisultan" ,1],
  590. "Каменные горгульи": [16,15 ,"gargoly" ,1],
  591. "Камнегрызы": [67,55 ,"kamnegryz" ,0],
  592. "Камнееды": [56,45 ,"kamneed" ,0],
  593. "Кентавры": [13,6 ,"fcentaur" ,0],
  594. "Князья вампиров": [70,40 ,"vampireprince" ,0],
  595. "Колоссы": [350,175,"colossus" ,0],
  596. "Кони преисподней": [138,66 ,"hellstallion" ,0],
  597. "Костоломы": [27,20 ,"brawler" ,0],
  598. "Костяные драконы": [280,150,"bonedragon" ,1],
  599. "Кочевые кентавры": [20,9 ,"ncentaur" ,0],
  600. "Кошмары": [140,66 ,"stallion" ,0],
  601. "Красные драконы": [400,235,"reddragon" ,1],
  602. "Крестьяне": [5,4 ,"paesant" ,0],
  603. "Кристальные драконы": [400,200,"crystaldragon" ,1],
  604. "Кровавые ящеры": [30,35 ,"redlizard_" ,0],
  605. "Кровоглазые циклопы": [500,235,"bloodeyecyc" ,0],
  606. "Кшатрии ракшасы": [162,135,"rakshasa_kshatra",0],
  607. "Лазутчики": [20,10 ,"scout" ,0],
  608. "Латники": [21,26 ,"swordman" ,0],
  609. "Левиафаны": [250,200,"leviathan" ,0],
  610. "Лепреконы": [11,7 ,"lepr" ,0],
  611. "Лесные снайперы": [42,12 ,"arcaneelf" ,0],
  612. "Личи": [87,50 ,"lich" ,0],
  613. "Ловчие": [34,15 ,"stalker" ,0],
  614. "Лучники": [15,7 ,"archer" ,0],
  615. "Маги": [63,18 ,"mage" ,0],
  616. "Магма драконы": [329,280,"magmadragon" ,0],
  617. "Магнитные големы": [57,28 ,"magneticgolem" ,0],
  618. "Магоги": [16,13 ,"magog" ,0],
  619. "Мастера копья": [17,12 ,"skirmesher" ,0],
  620. "Мастера лука": [42,14 ,"hunterelf" ,0],
  621. "Мегеры": [49,24 ,"bloodsister" ,0],
  622. "Медведи": [22,22 ,"bear" ,0],
  623. "Метатели копья": [11,10 ,"spearwielder" ,0],
  624. "Минотавры": [39,31 ,"minotaur" ,0],
  625. "Минотавры-стражи": [56,35 ,"minotaurguard_" ,0],
  626. "Минотавры-надсмотрщики": [56,40 ,"taskmaster" ,0],
  627. "Могильные големы": [400,400,"dgolemup" ,0],
  628. "Монахи": [101,54 ,"priest" ,0],
  629. "Морские дьяволы": [300,190,"piratemonster" ,0],
  630. "Морские черти": [120,90 ,"seamonster" ,0],
  631. "Мумии": [115,50 ,"mummy" ,0],
  632. "Мумии фараонов": [135,70 ,"pharaoh" ,0],
  633. "Мятежники": [10,7 ,"enforcer" ,0],
  634. "Наги": [160,110,"naga" ,0],
  635. "Наездники на волках": [20,10 ,"wolfrider" ,0],
  636. "Наездники на гиенах": [31,13 ,"hyenarider" ,0],
  637. "Наездники на кабанах": [31,14 ,"boarrider" ,0],
  638. "Наездники на медведях": [24,25 ,"bearrider" ,0],
  639. "Наездники на ящерах": [65,40 ,"lizardrider" ,0],
  640. "Налётчики на волках": [31,12 ,"hobwolfrider" ,0],
  641. "Нимфы": [20,6 ,"dryad_" ,1],
  642. "Обсидиановые горгульи": [26,20 ,"obsgargoly" ,1],
  643. "Огненные гончие": [36,15 ,"firehound" ,0],
  644. "Огненные демоны": [23,13 ,"fdemon" ,0],
  645. "Огненные драконы": [255,230,"firedragon" ,0],
  646. "Огненные птицы": [117,65 ,"firebird_" ,1],
  647. "Огненные элементали": [60,43 ,"fire" ,0],
  648. "Огры": [60,50 ,"ogre" ,0],
  649. "Огры-ветераны": [75,70 ,"ogrebrutal" ,0],
  650. "Огры-маги": [74,65 ,"ogremagi" ,0],
  651. "Огры-шаманы": [74,55 ,"ogreshaman" ,0],
  652. "Одноглазые пираты": [190,120,"fatpirateup" ,0],
  653. "Ополченцы": [7,6 ,"conscript" ,0],
  654. "Орки": [29,12 ,"orc" ,0],
  655. "Орки-вожди": [38,18 ,"orcchief" ,0],
  656. "Орки-тираны": [38,20 ,"orcrubak" ,0],
  657. "Орки-шаманы": [33,13 ,"orcshaman" ,0],
  658. "Паладины": [262,100,"paladin" ,0],
  659. "Палачи": [83,40 ,"executioner" ,0],
  660. "Пауки": [15,9 ,"spider" ,0],
  661. "Пехотинцы": [17,16 ,"footman" ,0],
  662. "Пещерные владыки": [195,120,"pitlord_" ,0],
  663. "Пещерные гидры": [115,125,"deephydra" ,0],
  664. "Пещерные демоны": [157,110,"pitfiend_" ,0],
  665. "Пещерные отродья": [165,140,"pitspawn" ,0],
  666. "Привидения": [26,8 ,"ghost" ,1],
  667. "Призраки": [27,19 ,"spectre" ,1],
  668. "Призраки пираток": [17,8 ,"gpiratka" ,1],
  669. "Призрачные драконы": [310,160,"spectraldragon" ,1],
  670. "Принцессы ракшас": [155,120,"rakshas" ,0],
  671. "Проворные наездники": [94,50 ,"briskrider" ,0],
  672. "Проклятые бегемоты": [400,250,"dbehemoth" ,0],
  673. "Проклятые горгульи": [25,35 ,"hgarg" ,1],
  674. "Птицы грома": [115,65 ,"thunderbird" ,1],
  675. "Птицы тьмы": [120,60 ,"darkbird" ,1],
  676. "Раджи ракшас": [160,140,"rakshasa_raja" ,0],
  677. "Рогатые демоны": [14,13 ,"hdemon" ,0],
  678. "Рогатые жнецы": [200,99 ,"rapukk" ,0],
  679. "Роки": [104,55 ,"roc" ,1],
  680. "Рыцари": [232,90 ,"knight" ,0],
  681. "Рыцари смерти": [190,100,"deadknight" ,0],
  682. "Рыцари тьмы": [160,90 ,"blackknight" ,0],
  683. "Светлые единороги": [135,80 ,"pristineunicorn" ,0],
  684. "Свирепые бегемоты": [410,280,"dbehemoth" ,0],
  685. "Свободные циклопы": [700,225,"untamedcyc" ,0],
  686. "Силачи": [20,50, "kachok" ,0],
  687. "Сирены": [60,20 ,"siren" ,0],
  688. "Сирены-искусительницы": [70,24 ,"upsiren" ,0],
  689. "Скелеты": [6,4 ,"sceleton" ,0],
  690. "Скелеты-арбалетчики": [12,6 ,"skmarksman" ,0],
  691. "Скелеты-воины": [10,5 ,"sceletonwar" ,0],
  692. "Скелеты-лучники": [10,4 ,"sceletonarcher" ,0],
  693. "Скелеты-моряки": [6,4 ,"cpirate" ,0],
  694. "Стальные големы": [54,24 ,"steelgolem" ,0],
  695. "Старейшины рун": [100,70 ,"runepatriarch" ,0],
  696. "Старшие гремлины": [9,6 ,"mastergremlin" ,0],
  697. "Старшие демоны": [20,13 ,"jdemon" ,0],
  698. "Старшие друиды": [101,34 ,"ddhigh" ,0],
  699. "Степные бойцы": [23,12 ,"mauler" ,0],
  700. "Степные воины": [21,12 ,"warrior" ,0],
  701. "Степные волки": [20,25 ,"swolf" ,0],
  702. "Степные гоблины": [5,3 ,"goblinus" ,0],
  703. "Степные циклопы": [390,220,"cyclopus" ,0],
  704. "Стихийные горгульи": [25,16 ,"elgargoly" ,1],
  705. "Стрелки": [16,8 ,"crossbowman" ,0],
  706. "Стрелки-наёмники": [15,8 ,"mercarcher" ,0],
  707. "Суккубы": [61,20 ,"succub" ,0],
  708. "Сумеречные ведьмы": [157,80 ,"witch" ,0],
  709. "Сумеречные драконы": [350,200,"shadowdragon" ,1],
  710. "Танцующие с ветром": [33,14 ,"winddancer" ,0],
  711. "Танцующие с клинками": [20,12 ,"dancer" ,0],
  712. "Танцующие со смертью": [33,12 ,"bladedancer" ,0],
  713. "Таны": [131,100,"thane" ,0],
  714. "Тёмные виверны": [195,105,"foulwyvern" ,1],
  715. "Тёмные всадники": [94,50 ,"grimrider" ,0],
  716. "Тёмные гидры": [115,125,"foulhydra" ,0],
  717. "Тёмные горгульи": [21,30 ,"burbuly" ,1],
  718. "Титаны": [400,190,"titan" ,0],
  719. "Титаны шторма": [400,190,"stormtitan" ,0],
  720. "Тролли": [150,150,"troll" ,0],
  721. "Убийцы": [70,34 ,"slayer" ,0],
  722. "Умертвия": [165,95 ,"wight" ,0],
  723. "Феи": [12,5 ,"pp" ,1],
  724. "Фениксы": [600,777,"phoenix" ,1],
  725. "Фурии": [49,16 ,"fury" ,0],
  726. "Хобгоблины": [9,4 ,"hobgoblin" ,0],
  727. "Хозяева медведей": [36,30 ,"blackbearrider" ,0],
  728. "Хозяйки ночи": [185,100,"mistress" ,0],
  729. "Церберы": [41,15 ,"cerberus" ,0],
  730. "Циклопы": [172,85 ,"cyclop" ,0],
  731. "Циклопы-генералы": [187,100,"cyclopod_" ,0],
  732. "Циклопы-короли": [182,95 ,"cyclopking" ,0],
  733. "Циклопы-шаманы": [190,105,"cyclopshaman" ,0],
  734. "Чародеи-наёмники": [35,36 ,"mercwizard" ,0],
  735. "Чемпионы": [252,100,"champion" ,0],
  736. "Черные тролли": [180,180,"blacktroll" ,0],
  737. "Черти": [10,6 ,"familiar" ,0],
  738. "Чёрные драконы": [400,240,"blackdragon" ,1],
  739. "Чумные зомби": [15,17 ,"plaguezombie" ,0],
  740. "Шаманки": [66,30 ,"shamaness" ,0],
  741. "Штурмовые грифоны": [62,52 ,"battlegriffon" ,1],
  742. "Эльфийские лучники": [38,10 ,"elf" ,0],
  743. "Энты": [187,175,"ent" ,0],
  744. "Ядовитые пауки": [30,14 ,"spiderpois" ,0]
  745. };
  746. var n_monstrs = 0;
  747. for (var key in mob_rus_exp) {n_monstrs++} //считаем кол-во существ в базе
  748. if (skip_base.length*4 < n_monstrs) { //если существ стало больше, чем в хранящемся массиве с пропусками,
  749. skip_base = fill_hex_massive(Math.ceil(n_monstrs/4), "0"); //то расширяем массив вверх до кол-ва кратного 4 и сбрасываем hex массив
  750. }
  751. var skip_bin_base = hex_2_bin(skip_base); //создаем bin массив
  752. //****************************************************
  753. /** Библиотека юникода
  754. *
  755. * Реализует функции работы с юникодом.
  756. * @file lib_unicode.js
  757. * @version 1.1.0
  758. * @author DrunkenStranger
  759. * @link http://userscripts.org/users/362572
  760. * @license GPL
  761. */
  762. function uchar(s) {
  763. switch (s[0]) {
  764. case "А": return "\u0410";
  765. case "Б": return "\u0411";
  766. case "В": return "\u0412";
  767. case "Г": return "\u0413";
  768. case "Д": return "\u0414";
  769. case "Е": return "\u0415";
  770. case "Ж": return "\u0416";
  771. case "З": return "\u0417";
  772. case "И": return "\u0418";
  773. case "Й": return "\u0419";
  774. case "К": return "\u041a";
  775. case "Л": return "\u041b";
  776. case "М": return "\u041c";
  777. case "Н": return "\u041d";
  778. case "О": return "\u041e";
  779. case "П": return "\u041f";
  780. case "Р": return "\u0420";
  781. case "С": return "\u0421";
  782. case "Т": return "\u0422";
  783. case "У": return "\u0423";
  784. case "Ф": return "\u0424";
  785. case "Х": return "\u0425";
  786. case "Ц": return "\u0426";
  787. case "Ч": return "\u0427";
  788. case "Ш": return "\u0428";
  789. case "Щ": return "\u0429";
  790. case "Ъ": return "\u042a";
  791. case "Ы": return "\u042b";
  792. case "Ь": return "\u042c";
  793. case "Э": return "\u042d";
  794. case "Ю": return "\u042e";
  795. case "Я": return "\u042f";
  796. case "а": return "\u0430";
  797. case "б": return "\u0431";
  798. case "в": return "\u0432";
  799. case "г": return "\u0433";
  800. case "д": return "\u0434";
  801. case "е": return "\u0435";
  802. case "ж": return "\u0436";
  803. case "з": return "\u0437";
  804. case "и": return "\u0438";
  805. case "й": return "\u0439";
  806. case "к": return "\u043a";
  807. case "л": return "\u043b";
  808. case "м": return "\u043c";
  809. case "н": return "\u043d";
  810. case "о": return "\u043e";
  811. case "п": return "\u043f";
  812. case "р": return "\u0440";
  813. case "с": return "\u0441";
  814. case "т": return "\u0442";
  815. case "у": return "\u0443";
  816. case "ф": return "\u0444";
  817. case "х": return "\u0445";
  818. case "ц": return "\u0446";
  819. case "ч": return "\u0447";
  820. case "ш": return "\u0448";
  821. case "щ": return "\u0449";
  822. case "ъ": return "\u044a";
  823. case "ы": return "\u044b";
  824. case "ь": return "\u044c";
  825. case "э": return "\u044d";
  826. case "ю": return "\u044e";
  827. case "я": return "\u044f";
  828. case "Ё": return "\u0401";
  829. case "ё": return "\u0451";
  830. default: return s[0];
  831. }
  832. }
  833.  
  834. function ustring(s) {
  835. s = String(s);
  836. var result = "";
  837. for (var i = 0; i < s.length; i++)
  838. result += uchar(s[i]);
  839. return result;
  840. }
  841. //****************************************************
  842. function $uchar(s) {
  843. switch (s[0]) {
  844. case "\u0410": return "А";
  845. case "\u0411": return "Б";
  846. case "\u0412": return "В";
  847. case "\u0413": return "Г";
  848. case "\u0414": return "Д";
  849. case "\u0415": return "Е";
  850. case "\u0416": return "Ж";
  851. case "\u0417": return "З";
  852. case "\u0418": return "И";
  853. case "\u0419": return "Й";
  854. case "\u041a": return "К";
  855. case "\u041b": return "Л";
  856. case "\u041c": return "М";
  857. case "\u041d": return "Н";
  858. case "\u041e": return "О";
  859. case "\u041f": return "П";
  860. case "\u0420": return "Р";
  861. case "\u0421": return "С";
  862. case "\u0422": return "Т";
  863. case "\u0423": return "У";
  864. case "\u0424": return "Ф";
  865. case "\u0425": return "Х";
  866. case "\u0426": return "Ц";
  867. case "\u0427": return "Ч";
  868. case "\u0428": return "Ш";
  869. case "\u0429": return "Щ";
  870. case "\u042a": return "Ъ";
  871. case "\u042b": return "Ы";
  872. case "\u042c": return "Ь";
  873. case "\u042d": return "Э";
  874. case "\u042e": return "Ю";
  875. case "\u042f": return "Я";
  876. case "\u0430": return "а";
  877. case "\u0431": return "б";
  878. case "\u0432": return "в";
  879. case "\u0433": return "г";
  880. case "\u0434": return "д";
  881. case "\u0435": return "е";
  882. case "\u0436": return "ж";
  883. case "\u0437": return "з";
  884. case "\u0438": return "и";
  885. case "\u0439": return "й";
  886. case "\u043a": return "к";
  887. case "\u043b": return "л";
  888. case "\u043c": return "м";
  889. case "\u043d": return "н";
  890. case "\u043e": return "о";
  891. case "\u043f": return "п";
  892. case "\u0440": return "р";
  893. case "\u0441": return "с";
  894. case "\u0442": return "т";
  895. case "\u0443": return "у";
  896. case "\u0444": return "ф";
  897. case "\u0445": return "х";
  898. case "\u0446": return "ц";
  899. case "\u0447": return "ч";
  900. case "\u0448": return "ш";
  901. case "\u0449": return "щ";
  902. case "\u044a": return "ъ";
  903. case "\u044b": return "ы";
  904. case "\u044c": return "ь";
  905. case "\u044d": return "э";
  906. case "\u044e": return "ю";
  907. case "\u044f": return "я";
  908. case "\u0401": return "Ё";
  909. case "\u0451": return "ё";
  910. default: return s[0];
  911. }
  912. }
  913. function $ustring(s) {
  914. s = String(s);
  915. var result = "";
  916. for (var i = 0; i < s.length; i++) result += $uchar(s[i]);
  917. return result;
  918. }
  919. // ********* считывание уровня героя **********
  920. function getLevel() {
  921. if(url_cur.indexOf(url_home) == -1){ return; }
  922. for (var k = 0; k < all_tables.length; k++)
  923. {
  924. if (!all_tables[k]) continue;
  925. if (!all_tables[k].childNodes[0]) continue;
  926. if (!all_tables[k].childNodes[0].childNodes[0]) continue;
  927. if (!all_tables[k].childNodes[0].childNodes[0].childNodes[0]) continue;
  928. if (!all_tables[k].childNodes[0].childNodes[0].childNodes[0].innerHTML) continue;
  929.  
  930. var str_tbl_info = all_tables[k].childNodes[0].childNodes[0].childNodes[0].innerHTML;
  931.  
  932. if (str_tbl_info.indexOf(str_pl_lvl) > 0)
  933. {
  934. str_tbl_info = str_tbl_info.substring(str_tbl_info.indexOf(str_pl_lvl) + str_pl_lvl.length);
  935. pl_level = str_tbl_info.substring(0, str_tbl_info.search(/\D/));
  936. break;
  937. }
  938. }
  939. if(url_cur.indexOf(url_1_home) != -1)
  940. {
  941. GM_setValue("hunt_exp_pl_1_level", pl_level);
  942. return;
  943. }
  944. if(url_cur.indexOf(url_2_home) != -1)
  945. {
  946. GM_setValue("hunt_exp_pl_2_level", pl_level);
  947. return;
  948. }
  949. }
  950. // ***************************************************
  951. function needSkip(skip,mob,expirience,half) //нужно ли пропускать моба?
  952. {
  953. if ( (!skip_no_half) || (half) ) { //Если режим поиска половинок, а это не половинка, то пропускаем
  954. if (skip_mode) {
  955. if ((limit_exp == 0) || (expirience*1 <= limit_exp*1)) skip = false;
  956. } else {
  957. var n = 0;
  958. for (var key in mob_rus_exp) {
  959. if ((ustring(key) == mob) && (skip_bin_base[n] == "1")) { skip = false; return skip; }
  960. n++;
  961. }
  962. }
  963. }
  964. return skip;
  965. }
  966. //****************************************************
  967. function skip_hunt() { //пропустить охоту
  968. var x= document.querySelector("td >a[href*='ecostat.php']");
  969. if (x == null) return;
  970. document.title = str_auto_skip;
  971. setTimeout(function() { window.location.href = location.protocol+'//'+location.hostname+'/'+'map.php?action=skip'; }, 2000);
  972. }
  973. //****************************************************
  974. function skip_en() { //добавить ссылку на пропуск охот, если стоишь в заявке на бой или карточную игру
  975. var x = document.querySelectorAll("tr > td[colspan*='2']");
  976. if (x.length == 0) return;
  977. for (var k = 0; k < x.length; k++) {
  978. if (x[k].innerHTML == str_no_skip) {
  979. x[k].align = 'right';
  980. x[k].innerHTML ='<a href="map.php?action=skip">'+str_skip_enable+'</a>';
  981. }
  982. }
  983. }
  984. //****************************************************
  985. function link2arh_record() { //добавить ссылку на рекорд из архива
  986. var link_record, s, el;
  987. var x = document.querySelectorAll("td > a[href*='mid=']");
  988. if (x.length == 0) return;
  989. for (var k = 0; k < x.length; k++) {
  990. link_record = x[k].href;
  991. s = link_record.split('&mid');
  992. link_record = s[0]+'&show_archive=1&mid'+s[1];
  993. x[k].insertAdjacentHTML("afterEnd" ,'<br><a href="'+link_record+'"><img border="0" title="'+str_arh_record
  994. +'" src="http://dcdn.heroeswm.ru/i/s_knowledge.gif"></a>');
  995. }
  996. }
  997. // ***************************************************
  998. function showExperience() {
  999. skip_en();
  1000. if (show_archive) {link2arh_record();}
  1001. if(url_cur.indexOf(url_map) == -1){ return; }
  1002. 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;
  1003. var str_hunt, str_total_exp, next_level;//, min_kills, exp_min_kills;
  1004. var mob_name ="";
  1005. var str_dop ="";
  1006. var mob_exp = 0;
  1007. var temp = 0;
  1008. var hunt_available = false;
  1009. var half_hunt = false;
  1010. var diamand_hunt = false;
  1011. var half_diamond_hunt = false;
  1012. var skip_all_mob = true;
  1013. for (var k = 0; k < all_tables.length; k++)
  1014. {
  1015. if (all_tables[k].className == "wbwhite")
  1016. {
  1017. if (all_tables[k].childNodes[0].childNodes[0].childNodes[0].childNodes[0].tagName != "DIV") continue;
  1018. if (all_tables[k].childNodes[0].childNodes[0].children.length < 2) {break;}
  1019. my_td_danger = all_tables[k].childNodes[0].childNodes[0].childNodes[2];
  1020. if (!my_td_danger){ return; } //no hunt...
  1021.  
  1022. str_hunt = all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML;
  1023. if (str_hunt.indexOf("[1/2]") !=-1) {half_hunt = true} else {half_hunt = false}; //это половинка?
  1024. if (str_hunt.indexOf(str_diamond_search) !=-1) {diamand_hunt = true} else {diamand_hunt = false}; //это brilliant?
  1025. half_diamond_hunt = diamand_hunt || half_hunt;
  1026.  
  1027. mob_count = str_hunt.substring(str_hunt.indexOf("(")+1, str_hunt.indexOf(str_kol)-1);
  1028. mob_name = str_hunt.substring(str_hunt.indexOf(">")+1, str_hunt.indexOf("</"));
  1029. if (mob_rus_exp[$ustring(mob_name)] === undefined) continue;
  1030. if (show_HP)
  1031. {
  1032. mob_HP = mob_rus_exp[$ustring(mob_name)][1] * mob_count;
  1033. str_hunt = str_hunt.replace(str_kol,str_kol+' <font style="font-size:10px;color:#CD00CD">HP:<B>'+mob_HP+'</B></font>');
  1034. all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML = str_hunt;
  1035. }
  1036. mob_exp = mob_rus_exp[$ustring(mob_name)][0];
  1037. hunt_available = true;
  1038.  
  1039. total_exp = Math.round(mob_exp * mob_count / 5); //Полный опыт в одиночку
  1040. full_exp = total_exp;
  1041. next_count = (mob_count*1.3).toFixed(0); //Прирост при победе в одиночку
  1042.  
  1043. exp_with_helper = (total_exp / 2).toFixed(0); //Опыт с помощником (50/50)
  1044. next_half_count = (mob_count*Math.pow(1.3, 0.5)).toFixed(0); //Прирост при победе с помощником (50/50)
  1045.  
  1046. min_count = (mob_count / 5 - 0.5).toFixed(0); //Для минимального 5% прироста
  1047. exp_min_count = (Math.floor(mob_exp * min_count / 5)).toFixed(0); //Опыт при минимальном приросте
  1048. next_min_count = (mob_count*Math.pow(1.3, 0.2)).toFixed(0); //Прирост при убийстве <=20% будет ~5.4%
  1049. total_exp = total_exp > pl_level*500 ? pl_level*500 : total_exp; //Если опыт больше верхней отсечки по уровню
  1050. exp_with_helper = exp_with_helper > pl_level*500 ? pl_level*500 : exp_with_helper;
  1051. exp_min_count = exp_min_count > pl_level*500 ? pl_level*500 : exp_min_count;
  1052. if (pl_level > 2) { //Если опыт меньше нижней отсечки по уровню (3+ уровни)
  1053. total_exp = total_exp < pl_level*70 ? pl_level*70 : total_exp;
  1054. exp_with_helper = exp_with_helper < pl_level*35 ? pl_level*35 : exp_with_helper;
  1055. exp_min_count = exp_min_count < pl_level*14 ? pl_level*14 : exp_min_count;
  1056. }
  1057. total_exp = (total_exp * koef).toFixed(0);
  1058. exp_with_helper = (exp_with_helper * koef).toFixed(0);
  1059. exp_min_count = (exp_min_count * koef).toFixed(0);
  1060. //-------------- Вставим кусок кода ---------------
  1061. skip_all_mob = needSkip(skip_all_mob,mob_name,full_exp,half_diamond_hunt);
  1062. //alert(needSkip(true,mob_name,full_exp,half_hunt)+' skip_mode: '+skip_mode);
  1063. if ((!needSkip(true,mob_name,full_exp,half_diamond_hunt)) ){//&& (!skip_mode)) { //Если есть ли моб в нашем списке
  1064. all_tables[k].childNodes[0].childNodes[0].childNodes[1].style.background = "#D1FFD1";
  1065. }
  1066. //-------------------------------------------------
  1067. // total_exp - опыт с учетом коэф. перекача
  1068. str_total_exp = total_exp;
  1069. next_level = Number(pl_level)+1;
  1070. if (total_exp > max_exp && max_exp > 0) { all_tables[k].childNodes[0].style.background = '#FFA07A' ; }
  1071. if (total_exp != full_exp) str_dop = ustring(' (из ')+full_exp+ustring(')'); else str_dop ="";
  1072. 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>';
  1073. 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>';}
  1074.  
  1075. 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>'};
  1076.  
  1077. 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>'};
  1078.  
  1079. all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML = str_hunt + str_total_exp;
  1080. }
  1081. }
  1082. if (skip_all_mob && hunt_available) skip_hunt();
  1083. if (!skip_all_mob && hunt_available && ((limit_exp != 0) || (!skip_mode )) ) document.title = str_hunt_found;
  1084. }
  1085. //****************************************************
  1086. function helpers() { //анализ страницы групповых боев
  1087. if(url_cur.indexOf(url_war) == -1){ return; }
  1088. var ems, elem, elem2, str_hunt, mob_count, mob_name, total_exp, backgrn, sect, s_sect;
  1089. var dt = 3000;
  1090. // var alr = 0;
  1091. for (var k = 0; k < all_tables.length; k++)
  1092. {
  1093. if (all_tables[k].className == "wb")
  1094. {
  1095. ems = all_tables[k].querySelectorAll( "td > a[href*='map.php?cx']");
  1096. for (var i = 0; i < ems.length; i++) {
  1097. if (!ems[i].parentNode.parentNode.childNodes[6].childNodes[4]) {
  1098. elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[3].childNodes[0]; //odin v drugom sektore ili inoi level
  1099. } else if (!ems[i].parentNode.parentNode.childNodes[6].childNodes[6]) {
  1100. elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[5].childNodes[0]; //odin v moem sektore
  1101. elem2 = elem.parentNode.parentNode.childNodes[3].childNodes[0]; //
  1102. if ((beep_if_free) && (elem2.tagName == 'B')) {
  1103. new Audio("http://www.soundjay.com/button//button-46.mp3").play(); //button-46,47, beep-027
  1104. dt = 15000;
  1105. }
  1106. } else {
  1107. elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[6].childNodes[0]; //dvoe v drugom sektore
  1108. }
  1109. str_hunt = elem.innerHTML;
  1110. mob_count = str_hunt.substring(str_hunt.search(/\(/)+1, str_hunt.search(/\)/));
  1111. mob_name = str_hunt.substring(0, str_hunt.search(/\(/));
  1112. total_exp = Math.floor(mob_rus_exp[$ustring(mob_name)][0] * mob_count / 5);
  1113. backgrn = '';
  1114. if (elem.parentNode.parentNode.childElementCount != 5) {
  1115. s_sect = ems[i].href;
  1116. sect = s_sect.substring(s_sect.lastIndexOf("?")+1,s_sect.length);
  1117. s_sect =s_sect.replace("map.php?"+sect,"move_sector.php?id="+sectors[sect]);
  1118. ems[i].innerHTML += ustring('<br><font style="color:#FF3244;"><b>Перейти</b></font>');
  1119. ems[i].href = s_sect;
  1120. }
  1121. if (only_Gud_ExpUm && (total_exp< pl_level*133) ){ backgrn = ' background:#cfd';}
  1122. if (only_Gud_ExpUm && (total_exp< pl_level*70) ){ backgrn = ' background:#0f0';}
  1123. elem.innerHTML += '<font style="font-size:12px; color:#013220;'+ backgrn+'"><b>'+' '+total_exp+'</b></font>'+str_exp;
  1124. }
  1125. }
  1126. }
  1127. if (find_Hunt) setTimeout(function(){ window.location.href = location.protocol+'//'+location.hostname+'/'+'group_wars.php?filter=hunt'; }, dt);
  1128. }
  1129. //****************************************************
  1130. function hideHunt() { //режим гринпис - скрытие отображения охот
  1131. var tb;
  1132. if(url_cur.indexOf(url_map) == -1){ return; }
  1133. for (var k = 0; k < all_tables.length; k++)
  1134. {
  1135. tb = all_tables[k];
  1136. if (tb.className == "wbwhite")
  1137. {
  1138. if (tb.childNodes[0].childNodes[0].children.length < 2) {break;}
  1139. tb.parentNode.removeChild(tb.nextSibling);
  1140. tb.parentNode.removeChild(tb);
  1141. k--;
  1142. }
  1143. }
  1144. }
  1145. //****************************************************************************************
  1146. function add_archive() { //добавить ссылку на архив рекордов на странице рекордов
  1147. var ems, s_full, spl, s, s_url;
  1148. if (url_cur.indexOf('level') == -1) return;
  1149. if (url_cur.indexOf('show_archive=1') == -1)
  1150. {
  1151. if (url_cur.indexOf('mid') == -1)
  1152. {
  1153. s_url = url_cur+'&show_archive=1';
  1154. } else {
  1155. spl = url_cur.split('&mid');
  1156. s_url = spl[0]+'&show_archive=1&mid'+spl[1];
  1157. }
  1158. s = str_show_archive_r;
  1159. } else {
  1160. spl = url_cur.split('&show_archive=1');
  1161. s_url = spl[0]+spl[1];
  1162. s = str_hide_archive_r;
  1163. }
  1164. ems = document.querySelectorAll( "td > center > a[href*='plstats_hunters.php?level']");
  1165. if (ems.length != 0) {
  1166. s_full = '<br><center><a href="'+s_url+'"><b><font color="blue">'+s+'</font></b></a></center>';
  1167. ems[0].parentNode.insertAdjacentHTML("afterEnd" ,s_full);
  1168. }
  1169. }
  1170. //****************************************************
  1171. function hunt_hilight() { //заменяет ссылку в групповые бои на такую же с выделением свободных охот
  1172. var link_old = "group_wars.php";
  1173. var link_new = "group_wars.php?filter=hunt";
  1174. var nodeList = document.getElementsByTagName("a");
  1175. for (var i = 0; i < nodeList.length; i++)
  1176. {
  1177. if (nodeList[i].href.indexOf(link_old)!=-1)
  1178. {
  1179. nodeList[i].href = nodeList[i].href.replace(link_old,link_new);
  1180. return;
  1181. }
  1182. }
  1183. }
  1184. //****************************************************
  1185. getLevel();
  1186. showSettings();
  1187. show_List();
  1188. if (!grin_Pis) showExperience()
  1189. else hideHunt();
  1190. helpers();
  1191. hunt_hilight();
  1192. if (url_cur.indexOf('plstats_hunters') != -1) add_archive();
  1193. })();