Greasy Fork is available in English.

hwm_GO_exp

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

Versión del día 30/7/2018. Echa un vistazo a la versión más reciente.

// ==UserScript==
// @name           hwm_GO_exp
// @description    Помощник ГО. (2018.07.31)
// @author         ElMarado (Based on script Mantens)
// @version        4.21
// @include        http://178.248.235.15/group_wars.php*
// @include        http://178.248.235.15/plstats_hunters.php*
// @include        http://178.248.235.15/home.php*
// @include        http://178.248.235.15/map.php*
// @include        http://*.heroeswm.ru/group_wars.php*
// @include        http://*.heroeswm.ru/plstats_hunters.php*
// @include        http://*.heroeswm.ru/home.php*
// @include        http://*.heroeswm.ru/map.php*
// @grant          GM_getValue
// @grant          GM_setValue
// @icon           https://app.box.com/representation/file_version_34029013909/image_2048/1.png?shared_name=hz97b2qwo2ycc5ospb7ccffn13w3ehc4
// @namespace https://greasyfork.org/users/14188
// ==/UserScript==
(function () {
var max_exp	= 0;
var version	= "4.21 (2018.07.31)";
var url_cur	= location.href;
var url_home	= "home.php";
var url_map	= "map.php";
var url_war	= "group_wars.php";
var url_1	= "www.heroeswm.ru";
var url_2	= "178.248.235.15";
var url_3	= "qrator.heroeswm.ru";
var url_1_home	= "www.heroeswm.ru/home.php";
var url_2_home	= "178.248.235.15/home.php";
var url_3_home	= "qrator.heroeswm.ru/home.php";
var str_url	= "https://greasyfork.org/ru/scripts/11692-hwm-go-exp";
var all_tables	= document.getElementsByTagName('table');
var short_button   	= GM_getValue("short_button"  , false);
var enable_Exp_Half   	= GM_getValue("enable_Exp_Half"  , true);
var enable_5_procent  	= GM_getValue("enable_5_procent" , false);
var only_Gud_ExpUm 	= GM_getValue("only_Gud_ExpUm", true);
var alarm_Green_Hunt	= GM_getValue("alarm_Green_Hunt", false);
var show_archive	= GM_getValue("show_archive", true);
var grin_Pis		= GM_getValue("grin_Pis", false);
var pic_enable		= GM_getValue("pic_enable", true);
var show_HP		= GM_getValue("show_HP", false);
if(url_cur.indexOf(url_1) != -1) {
	var pl_level	= GM_getValue("hunt_exp_pl_1_level", "none");	//ур.героя
	var koef	= GM_getValue("koef_dop_exp_1", 1.0);		//коэф перекача
	var limit_exp	= GM_getValue("limit_exp_1", 0);		//С какого порога опыта пропускать охоты
	var skip_mode	= GM_getValue("skip_mode_1", true);		//Пропускать по опыту или по списку: 1 - опыт, 0 - список
	var skip_base	= GM_getValue("skip_base_1", ""); 		//h база пропусков на существ: 0 - пропускать, 1 - оставить
//Пропускать по опыту или по имени
}
if(url_cur.indexOf(url_2) != -1) {
	var pl_level	= GM_getValue("hunt_exp_pl_2_level", "none");
	var koef	= GM_getValue("koef_dop_exp_2", 1.0);
	var limit_exp	= GM_getValue("limit_exp_2", 0);
	var skip_mode	= GM_getValue("skip_mode_2", true);
	var skip_base	= GM_getValue("skip_base_2", "");
}
if(url_cur.indexOf(url_3) != -1) {
	var pl_level	= GM_getValue("hunt_exp_pl_3_level", "none");
	var koef	= GM_getValue("koef_dop_exp_3", 1.0);
	var limit_exp	= GM_getValue("limit_exp_3", 0);
	var skip_mode	= GM_getValue("skip_mode_3", true);
	var skip_base	= GM_getValue("skip_base_3", "");
}
//********************
var str_pl_lvl		= ustring("Боевой уровень: ");
var str_kol		= ustring('шт.');
var str_sum_exp		= ustring("За них дадут <B> STR1dopSTR </B> опыта.  Потом их будет ~STR6 шт.");
var str_kill_now	= ustring("Убей сейчас! На STR9 уровне за них дадут <B> STR10 </B> опыта.");
var str_hlp_exp		= ustring("За убийство с помощником (50/50) Вам дадут <B> STR2 </B> опыта. В следующий раз предложат ~STR7 шт.");
var str_min_kol		= ustring("Для Min (~5%) прироста надо убить не более STR3 шт (STR4 опыта). В следующий раз предложат ~STR8 шт.");
var str_exp_helper	= ustring("Опыт помощника: [70..133]*Уровень*Набранная умка*[1.1-Зелье].");
var str_green_hunt 	= ustring("Выгодная охота");
var str_exp	 	= ustring("&nbspопыта.");
var str_settings_1	= ustring("&nbspНастройки ГО&nbsp");
var str_settings_2	= ustring("&nbspГО&nbsp");
var str_start		= ustring("Скрипт: Помощник ГО. Версия: ");
var str_show_1		= ustring("Отображать опыт с помощником, если убьёте по 50%");
var str_show_2		= ustring("Отображать сколько убить мобов для минимального прироста");
var str_show_3		= ustring("Отображать формулу опыта помощника (при выгодных охотах)");
var str_hilight		= ustring("Подсвечивать охоты с выгодной экспоумкой (на странице групповых боёв)");
var str_alarm_hunt	= ustring("Предупреждать если есть незаполненная выгодная охота (в групповых боях)");
var str_show_archive	= ustring("Отображать ссылки на рекорды из архива.");
var str_Grin_Pis	= ustring("Включить Грин Пис (скрывать предложения охот)");
var str_show_HP		= ustring("Отображать суммарное HP мобов.");
var str_short_button	= ustring("Сделать кнопку настроек короткую.");
var str_koef_0		= ustring("Текущий коэффициент перекача:&nbsp");
var str_koef_1		= ustring("Введите новый коэффициент перекача от 1.0 до 9.9999: ");
var str_skip_select_1	= ustring("Пропускать мобов: ");
var str_skip_select_2	= ustring("по опыту (1)");
var str_skip_select_3	= ustring("по списку (2)");
var str_skip_hunt	= ustring("Пропускать охоты с опытом больше чем:");
var str_title_1 	= ustring("Если значение 0, то опыт не учитывается.");
var str_pic_enable	= ustring("Отображать картинки существ в списке.")
var str_no_skip		= ustring("Вы уже в заявке!");
var str_skip_enable	= ustring("Пройти мимо");
var str_arh_record	= ustring("Рекорд из архива (до 01.03.2015)");
var str_need_skip	= ustring("ГO. Охоты можно пропустить.");
var str_auto_skip	= ustring("ГO. Охоту пропускаю.");
var str_hunt_found	= ustring("ГO. Охота найдена.");
var str_show_archive_r	= ustring("Архив рекордов до 01.03.2015");
var str_hide_archive_r	= ustring("Текущие рекорды");
var str_update		= ustring("Проверить обновление скрипта.");
var str_autor		= ustring("Сообщить автору о найденной ошибке.");
var str_url_aut		= ustring("/sms-create.php?mailto=ElMarado&subject=Скрипт: Помощник ГО v")+version+ustring(". Найдена ошибка:");
var str_zagl1_list	= ustring("Выберите существ для охоты. Всего ");
var str_zagl2_list	= ustring("существ.");
var str_all_mark	= ustring("Пометить всех");
var str_all_unmark	= ustring("Снять у всех");
//*************** Конвертация ********************************
function hex_2_bin(hex) {
var hex2bin = {
	0: "0000",	1: "0001",	2: "0010",	3: "0011",
	4: "0100",	5: "0101",	6: "0110",	7: "0111",
	8: "1000",	9: "1001",	A: "1010",	B: "1011",
	C: "1100",	D: "1101",	E: "1110",	F: "1111"
};
	var str_bin = "";
	for (var i=0; i<hex.length;i++) str_bin +=hex2bin[hex[i]];
	return str_bin;
}
//*************** Конвертация ********************************
function bin_2_hex(bin) {
var bin2hex = {
	"0000": "0",	"0001": "1",	"0010": "2",	"0011": "3",
	"0100": "4",	"0101": "5",	"0110": "6",	"0111": "7",
	"1000": "8",	"1001": "9",	"1010": "A",	"1011": "B",
	"1100": "C",	"1101": "D",	"1110": "E",	"1111": "F"
};
	var n_hex_sym = Math.ceil(bin.length/4);
	var str_hex = "";
	var sym4;
	for (var i=0; i< n_hex_sym; i++) {
		sym4 = bin.substr(i*4,4);
		str_hex += bin2hex[sym4];
	}
	return str_hex;
}
//***********************************************************
function fill_hex_massive (n, s) {
	var arr = "";
	for (var i = 0; i < n; i++) arr += s;
	return arr;
}
//***********************************************************
function show_List() {
	if (url_cur.indexOf('map.php') == -1) return;
	if (skip_mode) {						//если пропуск по опыту, то кнопку вызова списка не отображать
	        var elem = document.getElementById("get_list_go");
		if (elem != null) elem.parentNode.removeChild(elem);	//если кнопка уже есть, то её убрать.
		return;
	}
	var x2= document.querySelector("td >a[href*='ecostat.php']");
	if (x2 == null)	return;
	x2 = x2.parentNode;
	var str_settings = "\u21B4"; 
	var d = document.createElement('div');
	d.id="get_list_go";
	d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px 500px; text-align: center;');		//Положение кнопки, для вызова настроек
	d.innerHTML = '<style> .list_go * {font-size: 18px; color: #FFFF00;} .cell_list {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
	'<table class="list_go" width=20px> <tr height=20>' +								// Размер кнопки и фон, для вызова настроек
	'<td class="cell_list" style="cursor:pointer" id="set_list"><font style="font-size:14px;">'+str_settings+'</font></td>' +
	'</tr> </table>';
	x2.insertBefore(d,x2.firstChild); 									//Вставка куска
	addEvent( $("set_list"), "click", settings_list );							//Привязка к куску на клик вызов функции
//************
function list_close()
{
	var bg = $('bgOverlay');
	var bgc = $('bgCenter');
	bg.parentNode.removeChild(bg);
	bgc.parentNode.removeChild(bgc);
}
//************
function settings_list()
{
	var bg = $('bgOverlay');
	var bgc = $('bgCenter');
	var bg_height = ScrollHeight();
	if ( !bg )
	{
		bg = document.createElement('div');
		document.body.appendChild( bg );
		bgc = document.createElement('div');
		document.body.appendChild( bgc );
	}
	bg.id = 'bgOverlay';
	bg.style.position = 'absolute';
	bg.style.left = '0px';
	bg.style.width = '100%';
	bg.style.background = "#000000";
	bg.style.opacity = "0.5";
	bg.style.zIndex = "1100";
	bgc.id = 'bgCenter';
	bgc.style.position = 'absolute';
	bgc.style.left = ( ( ClientWidth() - 420 ) / 2 ) + 'px';
	bgc.style.width = '420px';
	bgc.style.height = '500px';
	bgc.style.overflow = 'auto';						//scrolling
	bgc.style.background = "#F6F3EA";
	bgc.style.zIndex = "1105";
	addEvent(bg, "click", list_close);                                      //клик вне окна
	//форма и внешний вид окно настроек
	var s_innerHTML = '<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>'+
	//заголовок окна настроек
	'<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>'+
	//пропуск охот по опыту
	'<tr><td colspan=2> <input type="submit" id="set_all_mark_ok"   value="'+str_all_mark  +'">'+
		 '<input type="submit" id="set_all_unmark_ok" value="'+str_all_unmark+'"></td></tr>';
	var n_m = 0;
	var s_bgcolor;
	var s_pic_out="";
	for (var key in mob_rus_exp) { //перебор существ из базы и выводим чекбоксы с именем существа
		if (skip_bin_base[n_m]=="1") s_bgcolor="style=background-color:#B0FFB0;"; else s_bgcolor="";
		if (pic_enable) s_pic_out = '<tr><td><img width="42" height="35" border="0" src="http://hwm.cdnvideo.ru/i/mon_pic_png/2x'+mob_rus_exp[$ustring(key)][2]+'ani.png"></td>';//выводим картинку
		s_innerHTML += s_pic_out+
		'<td '+s_bgcolor+' id=cell_'+n_m+'><label><input type=checkbox '+(skip_bin_base[n_m]=="1"?"checked":"")+' id=set_monstr_'+n_m+'>'+ 	//выводим чекбокс
		'<font style="font-size:16px; vertical-align:center">'+ustring(key)+'</font></label></td></tr>';					//выводим имя существа
		n_m++;
	}
	s_innerHTML +='</table>'; 								//концовка
	bgc.innerHTML = s_innerHTML;
	n_m = 0;
//********* назначение событий *******
	for (var key in mob_rus_exp) {	appendEvent(n_m++); } 					//назначаем на события на каждый чек бокс
	document.getElementById('set_all_mark_ok').onclick = function(){all_mark_ok("F")};	//Пометить все
	document.getElementById('set_all_unmark_ok').onclick = function(){all_mark_ok("0")};	//Сбросить все
	addEvent($("bt_close_tr2"),		"click", list_close);				//крестик в углу

	bg.style.top = '0px';
	bg.style.height = bg_height + 'px';
	bgc.style.top = ( window.pageYOffset + 155 ) + 'px';
	bg.style.display = '';
	bgc.style.display = '';
}
//********* обработчики полей ввода *******
	function appendEvent(n) { document.getElementById('set_monstr_'+n).onclick = function(){change_enable_mostr(n)};}
	function change_enable_mostr(n)	{						//Обработка чекбоксов с изменением массивов
		var s_bgcolor;
		skip_bin_base = skip_bin_base.substr(0,n)+ (1-skip_bin_base[n]) +skip_bin_base.substr(n+1);
		skip_base = bin_2_hex(skip_bin_base);
		if (skip_bin_base[n]=="1") s_bgcolor="#B0FFB0"; else s_bgcolor="";
		document.getElementById("cell_"+n).style.backgroundColor = s_bgcolor;
		if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_base_1", skip_base);
		if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_base_2", skip_base);
		if ( url_cur.indexOf(url_3) != -1) GM_setValue("skip_base_3", skip_base);
	}
	function all_mark_ok(zn){ 							//заполняем массив значением zn
		skip_base = fill_hex_massive(skip_base.length, zn);
		skip_bin_base = hex_2_bin(skip_base);
		var n = 0;
		var s_bgcolor;
		var bool = true;
		if (zn == "0") bool = false;
		for (var key in mob_rus_exp) {
			if (skip_bin_base[n]=="1") s_bgcolor="#B0FFB0"; else s_bgcolor="";
			document.getElementById("cell_"+n).style.backgroundColor = s_bgcolor;
			document.getElementById('set_monstr_'+n++).checked = bool;
		}
		if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_base_1", skip_base);
		if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_base_2", skip_base);
		if ( url_cur.indexOf(url_3) != -1) GM_setValue("skip_base_3", skip_base);
	}
//************
function $(id) { return document.querySelector("#"+id); }
function addEvent(elem, evType, fn) {
	if (elem.addEventListener) elem.addEventListener(evType, fn, false);
	else	if (elem.attachEvent) elem.attachEvent("on" + evType, fn);
		else elem["on" + evType] = fn;
}
function ClientWidth()	{return document.compatMode=='CSS1Compat' && document.documentElement?document.documentElement.clientWidth:document.body.clientWidth;}
function ScrollHeight()	{return Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);}
}
//************  Начало фрагментов кода от (C) Demin с моими вставками и комментариями **********************************
function showSettings() {
	if (url_cur.indexOf('map.php') == -1) return;
	var x1= document.querySelector("td >a[href*='ecostat.php']");
	if (x1 == null)	return;
	x1 = x1.parentNode;
	var str_settings, width_but, left_pos;
	if (short_button==0)	{ str_settings = str_settings_1; width_but = 80; left_pos = 393;}
	else 			{ str_settings = str_settings_2; width_but = 20; left_pos = 468;}
	var d = document.createElement('div');
	d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px '+left_pos+'px; text-align: center;');//Положение кнопки, для вызова настроек
	d.innerHTML = '<style> .hwm_go * {font-size: 12px; color: #FFFF00;} .cell_go {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
	'<table class="hwm_go" width='+width_but+'px> <tr height=20>' +								// Размер кнопки и фон, для вызова настроек
	'<td class="cell_go" style="cursor:pointer" id="set_go"><font style="font-size:12px;">'+str_settings+'</font></td>' +
	'</tr> </table>';
	x1.insertBefore(d,x1.firstChild); 									//Вставка куска
	addEvent( $("set_go"), "click", settings_go );								//Привязка к куску на клик вызов функции
//************
function settings_go_close()
{
	var bg = $('bgOverlay');
	var bgc = $('bgCenter');
	bg.parentNode.removeChild(bg);
	bgc.parentNode.removeChild(bgc);
}
//************
function settings_go()
{
	var bg = $('bgOverlay');
	var bgc = $('bgCenter');
	var bg_height = ScrollHeight();
	if ( !bg )
	{
		bg = document.createElement('div');
		document.body.appendChild( bg );
		bgc = document.createElement('div');
		document.body.appendChild( bgc );
	}
	bg.id = 'bgOverlay';
	bg.style.position = 'absolute';
	bg.style.left = '0px';
	bg.style.width = '100%';
	bg.style.background = "#000000";
	bg.style.opacity = "0.5";
	bg.style.zIndex = "1100";
	bgc.id = 'bgCenter';
	bgc.style.position = 'absolute';
	bgc.style.left = ( ( ClientWidth() - 600 ) / 2 ) + 'px';
	bgc.style.width = '600px';
	bgc.style.background = "#F6F3EA";
	bgc.style.zIndex = "1105";
	addEvent(bg, "click", settings_go_close);
	//форма и внешний вид окно настроек
	bgc.innerHTML = '<div style="border:1px solid #abc;padding:5px;margin:2px;"><div style="float:right;border:1px solid #abc;width:15px;height:15px;text-align:center;cursor:pointer;" id="bt_close_tr" title="Close">x</div><table>'+
	//заголовок окна настроек
	'<tr><td colspan=3><b>'+str_start+'<font style="color:#0070FF;">'+version+'</font></b><hr/></td></tr>' +
	//Опыт с помощником 50/50
	'<tr><td colspan=3><label><input type=checkbox '+(enable_Exp_Half=="1"?"checked":"")+' id=set_enable_Exp_Half title=""> '+str_show_1+'</label><br></td></tr>'+
        //кол-во для мин.прироста
	'<tr><td colspan=3><label><input type=checkbox '+(enable_5_procent=="1"?"checked":"")+' id=set_enable_5_procent title=""> '+str_show_2+'</label><br></td></tr>'+
        //подсвечивать выгодные охоты
	'<tr><td colspan=3><label><input type=checkbox '+(only_Gud_ExpUm=="1"?"checked":"")+' id=set_only_Gud_ExpUm title=""> '+str_hilight+'</label><br></td></tr>'+
        //Предупреждать если есть незапоненная выгодная охота. 
	'<tr><td colspan=3><label><input type=checkbox '+(alarm_Green_Hunt=="1"?"checked":"")+' id=set_alarm_Green_Hunt title=""> '+str_alarm_hunt+'</label><br></td></tr>'+
        //Рекорд из архива. 
	'<tr><td colspan=3><label><input type=checkbox '+(show_archive=="1"?"checked":"")+' id=set_show_archive title=""> '+str_show_archive+'</label><br></td></tr>'+
        //Суммарное HP. 
	'<tr><td colspan=3><label><input type=checkbox '+(show_HP=="1"?"checked":"")+' id=set_show_HP title=""> '+str_show_HP+'</label><br></td></tr>'+
        //Грин Пис. 
	'<tr><td colspan=3><label><input type=checkbox '+(grin_Pis=="1"?"checked":"")+' id=set_Grin_Pis title=""> '+str_Grin_Pis+'</label><br><hr/></td></tr>'+
	//коэфициент перекача
	'<tr><td colspan=3>'+str_koef_0+'<font style="color:#0070FF;"><b id=k_p>'+Number(koef).toFixed(4) +'</b></font><br></td></tr>' +
	'<tr><td colspan=3>'+str_koef_1+' <input id="set_koef" value="'+ Number(koef).toFixed(4) +'"size="4" maxlength="6"> <input type="submit" id="set_koef_ok" value="OK"><br><hr/></td></tr>'+
	//Выбор пропусков str_skip_select_3
	'<tr><td colspan=3>'+str_skip_select_1+
	'<label><input type=checkbox '+(skip_mode=="1"?"checked":"")+' id=set_skip_mode1 title="">'+str_skip_select_2+'</label>'+
	'<label><input type=checkbox '+(skip_mode=="0"?"checked":"")+' id=set_skip_mode2 title="">'+str_skip_select_3+'</label></td></tr>'+
	//пропуск охот по опыту
	'<tr><td width="52%">'+str_skip_hunt+'</td><td colspan=2 width="48%" align="left" title="'+str_title_1+'"> '+
	'<input id="set_limit_exp" value="'+limit_exp+'" size="3" maxlength="5"><input type="submit" id="set_limit_exp_ok" value="OK"></td></tr>'+
	'<tr><td colspan=3></td></tr>'+
        //Выбор Отображать картинки в списке или нет
	'<tr><td colspan=3><label><input type=checkbox '+(pic_enable=="1"?"checked":"")+' id=set_pic_enable title=""> '+str_pic_enable+'</label><br><hr/></td></tr>'+
        //Сделать кнопку настройки короткую/длинную
	'<tr><td colspan=3><label><input type=checkbox '+(short_button=="1"?"checked":"")+' id=set_short_button title=""> <font size="1" color="blue">'+str_short_button+'</font></label><br><hr/></td></tr>'+
	//ссылка на сайт скрипта
	'<tr><td><a href="'+str_url+'">'+str_update+'</a></td><td colspan=2 align="right"><a href="'+str_url_aut+'">'+str_autor+'</a></td></tr></table>'; //концовка
	//назначение вызова функция при событиях кнопок и чекбоксов 
	addEvent($("bt_close_tr"),		"click", settings_go_close);		//крестик в углу
	addEvent($("set_enable_Exp_Half"),	"click", change_enable_Exp_Half);	//чек-бокс
	addEvent($("set_enable_5_procent"),	"click", change_enable_5_procent);	//чек-бокс
	addEvent($("set_only_Gud_ExpUm"),	"click", change_only_Gud_ExpUm);	//чек-бокс
	addEvent($("set_alarm_Green_Hunt"),	"click", change_alarm_Green_Hunt);	//чек-бокс
	addEvent($("set_show_archive"),		"click", change_show_archive);		//чек-бокс
	addEvent($("set_show_HP"),		"click", change_show_HP);		//чек-бокс
	addEvent($("set_Grin_Pis"),		"click", change_Grin_Pis);		//чек-бокс
	addEvent($("set_short_button"),		"click", change_short_button);		//чек-бокс
	addEvent($("set_koef_ok"),		"click", change_koef);			//поле ввода
	addEvent($("set_limit_exp_ok"),		"click", change_limit_exp);		//поле ввода
	addEvent($("set_skip_mode1"),		"click", change_skip_mode);		//радио
	addEvent($("set_skip_mode2"),		"click", change_skip_mode);		//радио
	addEvent($("set_pic_enable"),		"click", change_pic_enable);		//чек-бокс
	bg.style.top = '0px';
	bg.style.height = bg_height + 'px';
	bgc.style.top = ( window.pageYOffset + 155 ) + 'px';
	bg.style.display = '';
	bgc.style.display = '';
}
//********* обработчики полей ввода *******
function change_skip_mode()
{
	skip_mode = !skip_mode; 
	document.getElementById('set_skip_mode1').checked = skip_mode;
	document.getElementById('set_skip_mode2').checked = !skip_mode;
	show_List();
	if ( url_cur.indexOf(url_1) != -1) GM_setValue("skip_mode_1", skip_mode);
	if ( url_cur.indexOf(url_2) != -1) GM_setValue("skip_mode_2", skip_mode);
	if ( url_cur.indexOf(url_3) != -1) GM_setValue("skip_mode_3", skip_mode);
}
function change_koef()
{
	if ( Number( $("set_koef").value ) >= 1 )  koef = $("set_koef").value; else koef = Number(1.0);
	document.getElementById('k_p').innerHTML = Number(koef).toFixed(4);
	if ( url_cur.indexOf(url_1) != -1) GM_setValue("koef_dop_exp_1", koef);
	if ( url_cur.indexOf(url_2) != -1) GM_setValue("koef_dop_exp_2", koef);
	if ( url_cur.indexOf(url_3) != -1) GM_setValue("koef_dop_exp_3", koef);
}
function change_limit_exp()
{
	if ( Number( $("set_limit_exp").value ) >= 0 )  limit_exp = Number($("set_limit_exp").value).toFixed(0); else limit_exp = 0;
	if ( url_cur.indexOf(url_1) != -1) GM_setValue("limit_exp_1", limit_exp);
	if ( url_cur.indexOf(url_2) != -1) GM_setValue("limit_exp_2", limit_exp);
	if ( url_cur.indexOf(url_3) != -1) GM_setValue("limit_exp_3", limit_exp);
}
//*********** обработчики чек-боксов *****
function change_enable_Exp_Half()	{GM_setValue("enable_Exp_Half",	enable_Exp_Half		= !enable_Exp_Half);}
function change_enable_5_procent()	{GM_setValue("enable_5_procent",enable_5_procent	= !enable_5_procent);}
function change_only_Gud_ExpUm()	{GM_setValue("only_Gud_ExpUm",	only_Gud_ExpUm		= !only_Gud_ExpUm);}
function change_alarm_Green_Hunt()	{GM_setValue("alarm_Green_Hunt",alarm_Green_Hunt	= !alarm_Green_Hunt);}
function change_show_archive()		{GM_setValue("show_archive",	show_archive		= !show_archive);}
function change_show_HP()		{GM_setValue("show_HP",		show_HP			= !show_HP);}
function change_Grin_Pis()		{GM_setValue("grin_Pis",	grin_Pis		= !grin_Pis);}
function change_pic_enable()		{GM_setValue("pic_enable",	pic_enable		= !pic_enable);}
function change_short_button()		{GM_setValue("short_button",short_button		= !short_button);
	if (short_button==0)	{ str_settings = str_settings_1; width_but = 80; left_pos = 393;}
	else 			{ str_settings = str_settings_2; width_but = 20; left_pos = 468;}
	d.setAttribute('style', 'position: absolute; margin: -5px 0px 0px '+left_pos+'px; text-align: center;');//Положение кнопки, для вызова настроек
	d.innerHTML = '<style> .hwm_go * {font-size: 12px; color: #FFFF00;} .cell_go {white-space: nowrap; height: 18px; background: #4190FF; font-weight: bold;} </style>' +
	'<table class="hwm_go" width='+width_but+'px> <tr height=20>' +						// Размер кнопки и фон, для вызова настроек
	'<td class="cell_go" style="cursor:pointer" id="set_go"><font style="font-size:12px;">'+str_settings+'</font></td>' +
	'</tr> </table>';
	addEvent( $("set_go"), "click", settings_go );								//Привязка к куску на клик вызов функции
}
//********** непонятно что, взято 1:1 у Demin ******
function $(id) { return document.querySelector("#"+id); }
function addEvent(elem, evType, fn) {
	if (elem.addEventListener) elem.addEventListener(evType, fn, false);
	else	if (elem.attachEvent) elem.attachEvent("on" + evType, fn);
		else elem["on" + evType] = fn;
}
function ClientWidth()	{return document.compatMode=='CSS1Compat' && document.documentElement?document.documentElement.clientWidth:document.body.clientWidth;}
function ScrollHeight()	{return Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);}
}
//************  Конец фрагментов кода от (C) Demin **********************************
var sectors =	{
		"cx=50&cy=50":1,	//Empire Capital
		"cx=51&cy=50":2,	//East River
		"cx=50&cy=49":3,	//Tiger Lake
		"cx=51&cy=49":4,	//Rogues' Wood
		"cx=50&cy=51":5,	//Wolf Dale
		"cx=50&cy=48":6,	//Peaceful Camp
		"cx=49&cy=51":7,	//Lizard Lowland
		"cx=49&cy=50":8,	//Green Wood
		"cx=49&cy=48":9,	//Eagle Nest
		"cx=50&cy=52":10,	//Portal Ruins
		"cx=51&cy=51":11,	//Dragon Caves
		"cx=49&cy=49":12,	//Shining Spring
		"cx=48&cy=49":13,	//Sunny Sity
		"cx=52&cy=50":14,	//Magma Mines
		"cx=52&cy=49":15,	//Bear Mountain
		"cx=52&cy=48":16,	//Fairy Trees
		"cx=53&cy=50":17,	//Harbour City (Port City)
		"cx=53&cy=49":18,	//Mithril Coast
		"cx=51&cy=52":19,	//GreatWall
		"cx=51&cy=53":20,	//Titans' Valley
		"cx=52&cy=53":21,	//Fishing Village
		"cx=52&cy=54":22,	//Kingdom Capital
		"cx=48&cy=48":23,	//Ungovernable Steppe
		"cx=51&cy=48":24,	//Crystal Garden
		"cx=53&cy=52":25,	//East Island
		"cx=49&cy=52":26,	//The Wilderness
		"cx=48&cy=50":27	//Sublime Arbor
		}
//****************************************************
var mob_rus_exp = {//238 существ. Cтруктура: Опыт,HP
		"Адепты":			[121,80	,"zealot"          ],
		"Адские жеребцы":		[136,50	,"nightmare"       ],
		"Адские жнецы":			[250,99	,"zhryak"          ],
		"Адские псы":			[33,15	,"demondog"        ],
		"Ангелы":			[330,180,"angel"           ],
		"Арбалетчики":			[19,10	,"marksman"        ],
		"Архангелы":			[390,220,"archangel"       ],
		"Архидемоны":			[312,211,"archdemon"       ],
		"Архидьяволы":			[311,199,"archdevil"       ],
		"Архиличи":			[110,55	,"archlich"        ],
		"Архимаги":			[70,30	,"archmage"        ],
		"Ассасины":			[33,14	,"assasin"         ],
		"Астральные драконы":		[310,150,"ghostdragon"     ],
		"Баньши":			[205,110,"banshee"         ],
		"Бегемоты":			[350,210,"behemoth"        ],
		"Берсерки":			[42,25	,"berserker"       ],
		"Бестии":			[30,16	,"maiden"          ],
		"Бесы":				[6,4	,"imp"             ],
		"Бехолдеры":			[33,22	,"beholder"        ],
		"Боевые грифоны":		[45,35	,"battlegriffin"   ],
		"Боевые единороги":		[135,77	,"silverunicorn"   ],
		"Боевые кентавры":		[21,10	,"mcentaur"        ],
		"Боевые маги":			[72,29	,"battlemage"      ],
		"Вампиры":			[68,30	,"vampire"         ],
		"Вармонгеры":			[36,20	,"warmong"         ],
		"Ведьмы-призраки":		[30,20	,"cursed_"         ],
		"Великие левиафаны":		[300,250,"upleviathan"     ],
		"Верховные друиды":		[101,38	,"ddeld"           ],
		"Вестники смерти":		[205,100,"wraith"          ],
		"Виверны":			[170,90	,"wyvern"          ],
		"Визири джиннов":		[110,50	,"djinn_vizier"    ],
		"Владычицы тени":		[185,90	,"matriarch"       ],
		"Водные элементали":		[57,43	,"water"           ],
		"Вожаки":			[100,48	,"chieftain"       ],
		"Воздушные элементали":		[59,30	,"air"             ],
		"Воины-наёмники":		[25,24	,"mercfootman"     ],
		"Воители":			[12,12	,"shieldguard"     ],
		"Воры-колдуны":			[35,30	,"thiefmage"       ],
		"Воры-разведчики":		[35,45	,"thiefwarrior"    ],
		"Воры-убийцы":			[35,40	,"thiefarcher"     ],
		"Высшие ангелы":		[390,220,"seraph2"         ],
		"Высшие вампиры":		[70,35	,"vampirelord"     ],
		"Высшие личи":			[100,55	,"masterlich"      ],
		"Гарпии":			[29,15	,"harpy"           ],
		"Гарпии-ведьмы":		[45,15	,"harpyhag"        ],
		"Гарпунеры":			[18,10	,"harpooner"       ],
		"Гигантские ящеры":		[25,25	,"lizard_"         ],
		"Гидры":			[108,80	,"hydra"           ],
		"Глубоководные черти":		[140,105,"upseamonster"    ],
		"Гниющие зомби":		[17,23	,"rotzombie"       ],
		"Гоблины":			[5,3	,"goblin"          ],
		"Гоблины-лучники":		[9,3	,"goblinarcher"    ],
		"Гоблины-маги":			[9,3	,"goblinmag"       ],
		"Гоблины-трапперы":		[15,7	,"trapper"         ],
		"Гоги":				[13,13	,"gog"             ],
		"Големы смерти":		[329,350,"dgolem"          ],
		"Головорезы":			[6,8	,"brute"           ],
		"Горные стражи":		[24,12	,"mountaingr"      ],
		"Гремлины":			[5,5	,"gremlin"         ],
		"Гремлины-вредители":		[9,6	,"saboteurgremlin" ],
		"Грифоны":			[59,30	,"griffon"         ],
		"Громовержцы":			[162,120,"thunderlord"     ],
		"Демонессы":			[67,30	,"succubusm"       ],
		"Детёныши ящера":		[13,13	,"smalllizard_"    ],
		"Джинны":			[103,40	,"djinn"           ],
		"Джинны-султаны":		[110,45	,"djinn_sultan"    ],
		"Дикие энты":			[210,175,"savageent"       ],
		"Дочери земли":			[72,35	,"eadaughter"      ],
		"Дочери неба":			[75,35	,"sdaughter"       ],
		"Древние бегемоты":		[390,250,"abehemoth"       ],
		"Древние энты":			[210,181,"ancienent"       ],
		"Дриады":			[20,6	,"sprite"          ],
		"Друиды":			[74,34	,"dd_"             ],
		"Духи":				[27,20	,"poltergeist"     ],
		"Дьяволы":			[245,166,"devil"           ],
		"Дьяволята":			[10,6	,"vermin"          ],
		"Единороги":			[124,57	,"unicorn"         ],
		"Железные големы":		[33,18	,"golem"           ],
		"Жрецы рун":			[59,60	,"runepriest"      ],
		"Защитники веры":		[20,23	,"vindicator"      ],
		"Защитники гор":		[7,7	,"defender"        ],
		"Зелёные драконы":		[350,200,"greendragon"     ],
		"Земные элементали":		[63,75	,"earth"           ],
		"Злобные глаза":		[33,22	,"evileye"         ],
		"Злой Петушок 2017":		[60,77	,"rooster"         ],
		"Зомби":			[11,17	,"zombie"          ],
		"Изумрудные драконы":		[400,200,"emeralddragon"   ],
		"Имперские грифоны":		[62,35	,"impergriffin"    ],
		"Инквизиторы":			[121,80	,"inquisitor"      ],
		"Искусительницы":		[65,26	,"seducer"         ],
		"Ифриты":			[200,90	,"efreeti"         ],
		"Ифриты султаны":		[250,100,"efreetisultan"   ],
		"Каменные горгульи":		[16,15	,"gargoly"         ],
		"Камнегрызы":			[67,55	,"kamnegryz"       ],
		"Камнееды":			[56,45	,"kamneed"         ],
		"Кентавры":			[13,6	,"fcentaur"        ],
		"Князья вампиров":		[70,40	,"vampireprince"   ],
		"Колоссы":			[350,175,"colossus"        ],
		"Кони преисподней":		[138,66	,"hellstallion"    ],
		"Костоломы":			[27,20	,"brawler"         ],
		"Костяные драконы":		[280,150,"bonedragon"      ],
		"Кочевые кентавры":		[20,9	,"ncentaur"        ],
		"Кошмары":			[140,66	,"stallion"        ],
		"Красные драконы":		[400,235,"reddragon"       ],
		"Крестьяне":			[5,4	,"paesant"         ],
		"Кристальные драконы":		[400,200,"crystaldragon"   ],
		"Кровавые ящеры":		[30,35	,"redlizard_"      ],
		"Кровоглазые циклопы":		[500,235,"bloodeyecyc"     ],
		"Кшатрии ракшасы":		[162,135,"rakshasa_kshatra"],
		"Лазутчики":			[20,10	,"scout"           ],
		"Латники":			[21,26	,"swordman"        ],
		"Левиафаны":			[250,200,"leviathan"       ],
		"Лепреконы":			[11,7	,"lepr"            ],
		"Лесные снайперы":		[42,12	,"arcaneelf"       ],
		"Личи":				[87,50	,"lich"            ],
		"Ловчие":			[34,15	,"stalker"         ],
		"Лучники":			[15,7	,"archer"          ],
		"Маги":				[63,18	,"mage"            ],
		"Магма драконы":		[329,280,"magmadragon"     ],
		"Магнитные големы":		[57,28	,"magneticgolem"   ],
		"Магоги":			[16,13	,"magog"           ],
		"Мастера копья":		[17,12	,"skirmesher"      ],
		"Мастера лука":			[42,14	,"hunterelf"       ],
		"Мегеры":			[49,24	,"bloodsister"     ],
		"Медведи":			[22,22	,"bear"            ],
		"Метатели копья":		[11,10	,"spearwielder"    ],
		"Минотавры":			[39,31	,"minotaur"        ],
		"Минотавры-стражи":		[56,35	,"minotaurguard_"  ],
		"Минотавры-надсмотрщики":	[56,40	,"taskmaster"      ],
		"Могильные големы":		[400,400,"dgolemup"        ],
		"Монахи":			[101,54	,"priest"          ],
		"Морские дьяволы":		[300,190,"piratemonster"   ],
		"Морские черти":		[120,90	,"seamonster"      ],
		"Мумии":			[115,50	,"mummy"           ],
		"Мумии фараонов":		[135,70	,"pharaoh"         ],
		"Мятежники":			[10,7	,"enforcer"        ],
		"Наездники на волках":		[20,10	,"wolfrider"       ],
		"Наездники на гиенах":		[31,13	,"hyenarider"      ],
		"Наездники на кабанах":		[31,14	,"boarrider"       ],
		"Наездники на медведях":	[24,25	,"bearrider"       ],
		"Наездники на ящерах":		[65,40	,"lizardrider"     ],
		"Налётчики на волках":		[31,12	,"hobwolfrider"    ],
		"Нимфы":			[20,6	,"dryad_"          ],
		"Обсидиановые горгульи":	[26,20	,"obsgargoly"      ],
		"Огненные гончие":		[36,15	,"firehound"       ],
		"Огненные демоны":		[23,13	,"fdemon"          ],
		"Огненные драконы":		[255,230,"firedragon"      ],
		"Огненные птицы":		[117,65	,"firebird_"       ],
		"Огненные элементали":		[60,43	,"fire"            ],
		"Огры":				[60,50	,"ogre"            ],
		"Огры-ветераны":		[75,70	,"ogrebrutal"      ],
		"Огры-маги":			[74,65	,"ogremagi"        ],
		"Огры-шаманы":			[74,55	,"ogreshaman"      ],
		"Ополченцы":			[7,6	,"conscript"       ],
		"Орки":				[29,12	,"orc"             ],
		"Орки-вожди":			[38,18	,"orcchief"        ],
		"Орки-тираны":			[38,20	,"orcrubak"        ],
		"Орки-шаманы":			[33,13	,"orcshaman"       ],
		"Паладины":			[262,100,"paladin"         ],
		"Палачи":			[83,40	,"executioner"     ],
		"Пауки":			[15,9	,"spider"          ],
		"Пехотинцы":			[17,16	,"footman"         ],
		"Пещерные владыки":		[195,120,"pitlord_"        ],
		"Пещерные гидры":		[115,125,"deephydra"       ],
		"Пещерные демоны":		[157,110,"pitfiend_"       ],
		"Пещерные отродья":		[165,140,"pitspawn"        ],
		"Привидения":			[26,8	,"ghost"           ],
		"Призраки":			[27,19	,"spectre"         ],
		"Призрачные драконы":		[310,160,"spectraldragon"  ],
		"Принцессы ракшас":		[155,120,"rakshas"         ],
		"Проворные наездники":		[94,50	,"briskrider"      ],
		"Проклятые бегемоты":		[400,250,"dbehemoth"       ],
		"Птицы грома":			[115,65	,"thunderbird"     ],
		"Птицы тьмы":			[120,60	,"darkbird"        ],
		"Раджи ракшас":			[160,140,"rakshasa_raja"   ],
		"Рогатые демоны":		[14,13	,"hdemon"          ],
		"Рогатые жнецы":		[200,99	,"rapukk"          ],
		"Роки":				[104,55	,"roc"             ],
		"Рыцари":			[232,90	,"knight"          ],
		"Рыцари смерти":		[190,100,"deadknight"      ],
		"Рыцари тьмы":			[160,90	,"blackknight"     ],
		"Светлые единороги":		[135,80	,"pristineunicorn" ],
		"Свирепые бегемоты":		[410,280,"dbehemoth"       ],
		"Свободные циклопы":		[700,225,"untamedcyc"      ],
		"Сирены":			[60,20	,"siren"           ],
		"Сирены-искусительницы":	[70,24	,"upsiren"         ],
		"Скелеты":			[6,4	,"sceleton"        ],
		"Скелеты-арбалетчики":		[12,6	,"skmarksman"      ],
		"Скелеты-воины":		[10,5	,"sceletonwar"     ],
		"Скелеты-лучники":		[10,4	,"sceletonarcher"  ],
		"Стальные големы":		[54,24	,"steelgolem"      ],
		"Старейшины рун":		[100,70	,"runepatriarch"   ],
		"Старшие гремлины":		[9,6	,"mastergremlin"   ],
		"Старшие демоны":		[20,13	,"jdemon"          ],
		"Старшие друиды":		[101,34	,"ddhigh"          ],
		"Степные бойцы":		[23,12	,"mauler"          ],
		"Степные воины":		[21,12	,"warrior"         ],
		"Степные волки":		[20,25	,"swolf"           ],
		"Степные гоблины":		[5,3	,"goblinus"        ],
		"Степные циклопы":		[390,220,"cyclopus"        ],
		"Стихийные горгульи":		[25,16	,"elgargoly"       ],
		"Стрелки":			[16,8	,"crossbowman"     ],
		"Стрелки-наёмники":		[15,8	,"mercarcher"      ],
		"Суккубы":			[61,20	,"succub"	   ],
		"Сумеречные ведьмы":		[157,80	,"witch"           ],
		"Сумеречные драконы":		[350,200,"shadowdragon"    ],
		"Танцующие с ветром":		[33,14	,"winddancer"      ],
		"Танцующие с клинками":		[20,12	,"dancer"          ],
		"Танцующие со смертью":		[33,12	,"bladedancer"     ],
		"Таны":				[131,100,"thane"           ],
		"Тёмные виверны":		[195,105,"foulwyvern"      ],
		"Тёмные всадники":		[94,50	,"grimrider"       ],
		"Тёмные гидры":			[115,125,"foulhydra"       ],
		"Титаны":			[400,190,"titan"           ],
		"Титаны шторма":		[400,190,"stormtitan"      ],
		"Тролли":			[150,150,"troll"           ],
		"Убийцы":			[70,34	,"slayer"          ],
		"Умертвия":			[165,95	,"wight"           ],
		"Феи":				[12,5	,"pp"              ],
		"Фениксы":			[600,777,"phoenix"         ],
		"Фурии":			[49,16	,"fury"            ],
		"Хобгоблины":			[9,4	,"hobgoblin"       ],
		"Хозяева медведей":		[36,30	,"blackbearrider"  ],
		"Хозяйки ночи":			[185,100,"mistress"        ],
		"Церберы":			[41,15	,"cerberus"        ],
		"Циклопы":			[172,85	,"cyclop"          ],
		"Циклопы-генералы":		[187,100,"cyclopod_"       ],
		"Циклопы-короли":		[182,95	,"cyclopking"      ],
		"Циклопы-шаманы":		[190,105,"cyclopshaman"    ],
		"Чародеи-наёмники":		[35,36	,"mercwizard"      ],
		"Чемпионы":			[252,100,"champion"        ],
		"Черные тролли":		[180,180,"blacktroll"      ],
		"Черти":			[10,6	,"familiar"        ],
		"Чёрные драконы":		[400,240,"blackdragon"     ],
		"Чумные зомби":			[15,17	,"plaguezombie"    ],
		"Шаманки":			[66,30	,"shamaness"       ],
		"Штурмовые грифоны":		[62,52	,"battlegriffon"   ],
		"Эльфийские лучники":		[38,10	,"elf"             ],
		"Энты":				[187,175,"ent"             ],
		"Ядовитые пауки":		[30,14	,"spiderpois"      ]
};
var n_monstrs	= 0; 
for (var key in mob_rus_exp) {n_monstrs++} 				//считаем кол-во существ в базе
if (skip_base.length*4 < n_monstrs) {					//если существ стало больше, чем в хранящемся массиве с пропусками,
	skip_base = fill_hex_massive(Math.ceil(n_monstrs/4), "0");	//то расширяем массив вверх до кол-ва кратного 4 и сбрасываем hex массив
}
var skip_bin_base = hex_2_bin(skip_base);				//создаем bin массив
//****************************************************
/** Библиотека юникода
*
* Реализует функции работы с юникодом.
* @file lib_unicode.js
* @version 1.1.0
* @author DrunkenStranger
* @link http://userscripts.org/users/362572
* @license GPL
*/
function uchar(s) {
    switch (s[0]) {
        case "А": return "\u0410";
        case "Б": return "\u0411";
        case "В": return "\u0412";
        case "Г": return "\u0413";
        case "Д": return "\u0414";
        case "Е": return "\u0415";
        case "Ж": return "\u0416";
        case "З": return "\u0417";
        case "И": return "\u0418";
        case "Й": return "\u0419";
        case "К": return "\u041a";
        case "Л": return "\u041b";
        case "М": return "\u041c";
        case "Н": return "\u041d";
        case "О": return "\u041e";
        case "П": return "\u041f";
        case "Р": return "\u0420";
        case "С": return "\u0421";
        case "Т": return "\u0422";
        case "У": return "\u0423";
        case "Ф": return "\u0424";
        case "Х": return "\u0425";
        case "Ц": return "\u0426";
        case "Ч": return "\u0427";
        case "Ш": return "\u0428";
        case "Щ": return "\u0429";
        case "Ъ": return "\u042a";
        case "Ы": return "\u042b";
        case "Ь": return "\u042c";
        case "Э": return "\u042d";
        case "Ю": return "\u042e";
        case "Я": return "\u042f";
        case "а": return "\u0430";
        case "б": return "\u0431";
        case "в": return "\u0432";
        case "г": return "\u0433";
        case "д": return "\u0434";
        case "е": return "\u0435";
        case "ж": return "\u0436";
        case "з": return "\u0437";
        case "и": return "\u0438";
        case "й": return "\u0439";
        case "к": return "\u043a";
        case "л": return "\u043b";
        case "м": return "\u043c";
        case "н": return "\u043d";
        case "о": return "\u043e";
        case "п": return "\u043f";
        case "р": return "\u0440";
        case "с": return "\u0441";
        case "т": return "\u0442";
        case "у": return "\u0443";
        case "ф": return "\u0444";
        case "х": return "\u0445";
        case "ц": return "\u0446";
        case "ч": return "\u0447";
        case "ш": return "\u0448";
        case "щ": return "\u0449";
        case "ъ": return "\u044a";
        case "ы": return "\u044b";
        case "ь": return "\u044c";
        case "э": return "\u044d";
        case "ю": return "\u044e";
        case "я": return "\u044f";
        case "Ё": return "\u0401";
        case "ё": return "\u0451";
        default: return s[0];
    }
}

function ustring(s) {
    s = String(s);
    var result = "";
    for (var i = 0; i < s.length; i++)
        result += uchar(s[i]);
    return result;
}
//****************************************************
function $uchar(s) {
    switch (s[0]) {
        case "\u0410": return "А";
        case "\u0411": return "Б";
        case "\u0412": return "В";
        case "\u0413": return "Г";
        case "\u0414": return "Д";
        case "\u0415": return "Е";
        case "\u0416": return "Ж";
        case "\u0417": return "З";
        case "\u0418": return "И";
        case "\u0419": return "Й";
        case "\u041a": return "К";
        case "\u041b": return "Л";
        case "\u041c": return "М";
        case "\u041d": return "Н";
        case "\u041e": return "О";
        case "\u041f": return "П";
        case "\u0420": return "Р";
        case "\u0421": return "С";
        case "\u0422": return "Т";
        case "\u0423": return "У";
        case "\u0424": return "Ф";
        case "\u0425": return "Х";
        case "\u0426": return "Ц";
        case "\u0427": return "Ч";
        case "\u0428": return "Ш";
        case "\u0429": return "Щ";
        case "\u042a": return "Ъ";
        case "\u042b": return "Ы";
        case "\u042c": return "Ь";
        case "\u042d": return "Э";
        case "\u042e": return "Ю";
        case "\u042f": return "Я";
        case "\u0430": return "а";
        case "\u0431": return "б";
        case "\u0432": return "в";
        case "\u0433": return "г";
        case "\u0434": return "д";
        case "\u0435": return "е";
        case "\u0436": return "ж";
        case "\u0437": return "з";
        case "\u0438": return "и";
        case "\u0439": return "й";
        case "\u043a": return "к";
        case "\u043b": return "л";
        case "\u043c": return "м";
        case "\u043d": return "н";
        case "\u043e": return "о";
        case "\u043f": return "п";
        case "\u0440": return "р";
        case "\u0441": return "с";
        case "\u0442": return "т";
        case "\u0443": return "у";
        case "\u0444": return "ф";
        case "\u0445": return "х";
        case "\u0446": return "ц";
        case "\u0447": return "ч";
        case "\u0448": return "ш";
        case "\u0449": return "щ";
        case "\u044a": return "ъ";
        case "\u044b": return "ы";
        case "\u044c": return "ь";
        case "\u044d": return "э";
        case "\u044e": return "ю";
        case "\u044f": return "я";
        case "\u0401": return "Ё";
        case "\u0451": return "ё";
        default: return s[0];
    }
}
function $ustring(s) {
    s = String(s);
    var result = "";
    for (var i = 0; i < s.length; i++) result += $uchar(s[i]);
    return result;
}
// ********* считывание уровня героя **********
function getLevel() {
	if(url_cur.indexOf(url_home) == -1){ return; }
	
	for (var k = 0; k < all_tables.length; k++)
	{
                if (!all_tables[k]) continue;
                if (!all_tables[k].childNodes[0]) continue;
                if (!all_tables[k].childNodes[0].childNodes[0]) continue;
                if (!all_tables[k].childNodes[0].childNodes[0].childNodes[0]) continue;
                if (!all_tables[k].childNodes[0].childNodes[0].childNodes[0].innerHTML) continue;

		var str_tbl_info = all_tables[k].childNodes[0].childNodes[0].childNodes[0].innerHTML;

		if (str_tbl_info.indexOf(str_pl_lvl) > 0)
		{
			str_tbl_info = str_tbl_info.substring(str_tbl_info.indexOf(str_pl_lvl) + str_pl_lvl.length);
			pl_level = str_tbl_info.substring(0, str_tbl_info.search(/\D/));
			break;
		}
	}
	if(url_cur.indexOf(url_1_home) != -1)
	{
		GM_setValue("hunt_exp_pl_1_level", pl_level);
		return;
	 }
	if(url_cur.indexOf(url_2_home) != -1)
	{
		GM_setValue("hunt_exp_pl_2_level", pl_level);
		return;
	 }
	if(url_cur.indexOf(url_3_home) != -1)
	{
		GM_setValue("hunt_exp_pl_3_level", pl_level);
		return;
	 }
}
// ***************************************************
function needSkip(skip,mob,expirience)
{
//нужно ли пропускать моба?
	if (skip_mode) {
		if ((limit_exp == 0) || (expirience*1 <= limit_exp*1)) skip = false;
	}  else {
		var n = 0;
		for (var key in mob_rus_exp) {
			if ((ustring(key) == mob) && (skip_bin_base[n] == "1")) { skip = false; return skip; }
			n++;
		}
	}
	return skip;
}
//****************************************************
function skip_hunt() {
	var x= document.querySelector("td >a[href*='ecostat.php']");
	if (x == null)	return;
	document.title = str_auto_skip;
	setTimeout(function() { window.location.href = 'http://'+location.hostname+'/'+'map.php?action=skip'; }, 3000);
}
//****************************************************
function skip_en() {
	var x = document.querySelectorAll("tr > td[colspan*='2']");
	if (x.length == 0) return;
	for (var k = 0; k < x.length; k++) {
		if (x[k].innerHTML == str_no_skip) {
			x[k].align = 'right';
			x[k].innerHTML ='<a href="map.php?action=skip">'+str_skip_enable+'</a>';
		}
	}
}
//****************************************************
function link2arh_record() {
	var link_record, s, el;
	var x = document.querySelectorAll("td > a[href*='mid=']");
	if (x.length == 0) return;
	for (var k = 0; k < x.length; k++) {
		link_record = x[k].href;
		s = link_record.split('&mid');
		link_record = s[0]+'&show_archive=1&mid'+s[1];
		x[k].insertAdjacentHTML("afterEnd" ,'<br><a href="'+link_record+'"><img border="0" title="'+str_arh_record
			+'" src="http://dcdn.heroeswm.ru/i/s_knowledge.gif"></a>');
	}
}
// ***************************************************
function showExperience() {
	skip_en();
	if (show_archive) {link2arh_record();}
	if(url_cur.indexOf(url_map) == -1){ return; }
	var my_td_danger,  total_exp, full_exp, next_count, exp_with_helper, next_half_count, min_count, exp_min_count, next_min_count, mob_HP;   
	var str_hunt, str_total_exp, next_level;//, min_kills, exp_min_kills;
	var mob_name ="";
	var str_dop ="";
	var mob_exp = 0;
	var temp = 0;
	var hunt_available = false;
	var skip_all_mob = true;
	for (var k = 0; k < all_tables.length; k++)
	{
		if (all_tables[k].className == "wbwhite")
		{
			if (all_tables[k].childNodes[0].childNodes[0].childNodes[0].childNodes[0].tagName != "DIV") continue;
//alert();
			if (all_tables[k].childNodes[0].childNodes[0].children.length < 2) {break;}
			my_td_danger = all_tables[k].childNodes[0].childNodes[0].childNodes[2];
			if (!my_td_danger){ return; } //no hunt...

			str_hunt = all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML;
			mob_count = str_hunt.substring(str_hunt.indexOf("(")+1, str_hunt.indexOf(str_kol)-1);
			mob_name = str_hunt.substring(str_hunt.indexOf(">")+1, str_hunt.indexOf("</"));
			if (show_HP) 
			{
				mob_HP = mob_rus_exp[$ustring(mob_name)][1] * mob_count;
				str_hunt = str_hunt.replace(str_kol,str_kol+' <font style="font-size:10px;color:#CD00CD">HP:<B>'+mob_HP+'</B></font>');
				all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML = str_hunt;
			}
			mob_exp = mob_rus_exp[$ustring(mob_name)][0];
			hunt_available = true;

			total_exp = Math.round(mob_exp * mob_count / 5);					//Полный опыт в одиночку
			full_exp = total_exp;
			next_count		= (mob_count*1.3).toFixed(0);					//Прирост при победе в одиночку

                        exp_with_helper	= (total_exp / 2).toFixed(0);						//Опыт с помощником (50/50)
			next_half_count	= (mob_count*Math.pow(1.3, 0.5)).toFixed(0);				//Прирост при победе с помощником (50/50)

			min_count		= (mob_count / 5 - 0.5).toFixed(0);				//Для минимального 5% прироста
                        exp_min_count	= (Math.floor(mob_exp * min_count / 5)).toFixed(0);			//Опыт при минимальном приросте
			next_min_count	= (mob_count*Math.pow(1.3, 0.2)).toFixed(0);				//Прирост при убийстве <=20% будет ~5.4%
			total_exp = total_exp > pl_level*500 ? pl_level*500 : total_exp;			//Если опыт больше верхней отсечки по уровню
			exp_with_helper = exp_with_helper > pl_level*500 ? pl_level*500 : exp_with_helper;
			exp_min_count = exp_min_count > pl_level*500 ? pl_level*500 : exp_min_count;
			if (pl_level > 2) { 									//Если опыт меньше нижней отсечки по уровню (3+ уровни)
				total_exp = total_exp < pl_level*70 ? pl_level*70 : total_exp; 
				exp_with_helper = exp_with_helper < pl_level*35 ? pl_level*35 : exp_with_helper;
				exp_min_count = exp_min_count < pl_level*14 ? pl_level*14 : exp_min_count;
			} 
                        total_exp = (total_exp * koef).toFixed(0);
                        exp_with_helper = (exp_with_helper * koef).toFixed(0);
                        exp_min_count = (exp_min_count * koef).toFixed(0);
//-------------- Вставим кусок кода ---------------
// total_exp - опыт с учетом коэф. перекача
                        skip_all_mob  = needSkip(skip_all_mob,mob_name,full_exp);
			if ((!needSkip(true,mob_name,full_exp)) && (!skip_mode)) {				 //Если есть ли моб в нашем списке
				all_tables[k].childNodes[0].childNodes[0].childNodes[1].style.background = "#D1FFD1";
			}
//-------------------------------------------------
			str_total_exp = total_exp;
			next_level = Number(pl_level)+1;
			if (total_exp > max_exp && max_exp > 0) { all_tables[k].childNodes[0].style.background = '#FFA07A' ; }
			if (total_exp != full_exp) str_dop = ustring(' (из ')+full_exp+ustring(')'); else str_dop ="";
			str_total_exp ='<br> <font style="font-size:10px;color:#0000CD">'+str_sum_exp.replace('STR1', str_total_exp).replace('dopSTR', str_dop).replace('STR6', next_count)+'</font>';
			if ((total_exp < next_level*70) && (pl_level > 1))  {str_total_exp +='<br> <font style="color:#0000CD">'+str_kill_now.replace('STR9', next_level).replace('STR10',next_level*70)+'</font>';}

                        if (enable_Exp_Half) {str_total_exp = str_total_exp + '<br> <font style="font-size:10px;color:#CD00CD">'+str_hlp_exp.replace('STR2', exp_with_helper).replace('STR7', next_half_count)+'</font>'};

                        if (enable_5_procent) {str_total_exp = str_total_exp + '<font style="font-size: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>'};

			all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML = str_hunt + str_total_exp;
		}
	}
	if (skip_all_mob && hunt_available) skip_hunt();
	if (!skip_all_mob && hunt_available && ((limit_exp != 0) || (!skip_mode )) ) document.title = str_hunt_found;
}
//****************************************************
function helpers() {
	if(url_cur.indexOf(url_war) == -1){ return; }
	var ems, elem, elem2, str_hunt, mob_count, mob_name, total_exp, backgrn, sect, s_sect;
	var alr = 0;
	for (var k = 0; k < all_tables.length; k++)
	{
		if (all_tables[k].className == "wb")
		{
	                ems = all_tables[k].querySelectorAll( "td > a[href*='map.php?cx']");
			for (var i = 0; i < ems.length; i++) {
				if (!ems[i].parentNode.parentNode.childNodes[6].childNodes[4]) {
		 			elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[3].childNodes[0]; //odin v drugom sektore ili inoi level
				} else if (!ems[i].parentNode.parentNode.childNodes[6].childNodes[6]) {
		 			elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[5].childNodes[0]; //odin v moem sektore
		 			elem2 = ems[i].parentNode.parentNode.childNodes[6].childNodes[4]; //odin v moem sektore
				}  else {
		 			elem = ems[i].parentNode.parentNode.childNodes[6].childNodes[6].childNodes[0]; //dvoe v drugom sektore
				}
				str_hunt = elem.innerHTML;
			 	mob_count = str_hunt.substring(str_hunt.search(/\(/)+1, str_hunt.search(/\)/));
			 	mob_name = str_hunt.substring(0, str_hunt.search(/\(/));
				total_exp = Math.floor(mob_rus_exp[$ustring(mob_name)][0] * mob_count / 5);
				backgrn = '';
				if (elem.parentNode.parentNode.childElementCount != 5) {
                                	s_sect = ems[i].href;
				        sect = s_sect.substring(s_sect.lastIndexOf("?")+1,s_sect.length);
					s_sect =s_sect.replace("map.php?"+sect,"move_sector.php?id="+sectors[sect]);
					ems[i].innerHTML += ustring('<br><font style="color:#FF3244;"><b>Перейти</b></font>');
					ems[i].href = s_sect;
				}
				if (only_Gud_ExpUm && (total_exp< pl_level*133) ){ backgrn = ' background:#cfd';}
				if (only_Gud_ExpUm && (total_exp< pl_level*70)  ){ backgrn = ' background:#0f0';}
				if (alarm_Green_Hunt    && (total_exp< pl_level*133) && (elem.parentNode.parentNode.childElementCount != 5)){ alr = 1;}
				elem.innerHTML += '<font style="font-size:12px; color:#013220;'+ backgrn+'"><b>'+' '+total_exp+'</b></font>'+str_exp;
			}
		}
	} 
	if (alr == 1) alert(str_green_hunt);
	if (alarm_Green_Hunt) setTimeout(function(){ window.location.href = 'http://'+location.hostname+'/'+'group_wars.php?filter=hunt'; }, 5000);
}
//****************************************************
function hideHunt() {
var tb;
	if(url_cur.indexOf(url_map) == -1){ return; }
	for (var k = 0; k < all_tables.length; k++)
	{
		tb = all_tables[k];
		if (tb.className == "wbwhite")
		{
			if (tb.childNodes[0].childNodes[0].children.length < 2) {break;}
			tb.parentNode.removeChild(tb.nextSibling);
			tb.parentNode.removeChild(tb);
			k--;
		}
	}
}
//****************************************************************************************
function add_archive() {
	var ems, s_full, spl, s, s_url;
	if (url_cur.indexOf('level') == -1) return;
	if (url_cur.indexOf('show_archive=1') == -1)
	{	
		if (url_cur.indexOf('mid') == -1) 
		{ 
			s_url = url_cur+'&show_archive=1';
		} else {
			spl = url_cur.split('&mid');
			s_url = spl[0]+'&show_archive=1&mid'+spl[1];
		}
		s = str_show_archive_r;
	} else {
		spl = url_cur.split('&show_archive=1');
		s_url = spl[0]+spl[1];
		s = str_hide_archive_r;
	}
	ems = document.querySelectorAll( "td > center > a[href*='plstats_hunters.php?level']");
	if (ems.length != 0) {
		s_full = '<br><center><a href="'+s_url+'"><b><font color="blue">'+s+'</font></b></a></center>';
		ems[0].parentNode.insertAdjacentHTML("afterEnd" ,s_full);
	}
}
//****************************************************
getLevel();
showSettings();
show_List();
if (!grin_Pis) showExperience()
else hideHunt();
helpers();
if (url_cur.indexOf('plstats_hunters') != -1) add_archive();
})();