hwm_GO_exp

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

Pada tanggal 30 Desember 2017. Lihat %(latest_version_link).

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name           hwm_GO_exp
// @description    Помощник ГО. (2017.12.31)
// @author         ElMarado (Based on script Mantens)
// @version        4.17
// @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://greatest.deepsurf.us/users/14188
// ==/UserScript==
(function () {
var max_exp	= 0;
var version	= "4.17 (2017.12.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://greatest.deepsurf.us/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"       ],
		"Лесные снайперы":		[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"          ],
		"Морские черти":		[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	,"succubusm"       ],
		"Сумеречные ведьмы":		[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.floor(mob_exp * mob_count / 5);					//Полный опыт в одиночку
			full_exp = total_exp;
			next_count		= (mob_count*1.3).toFixed(0);					//Прирост при победе в одиночку

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

			min_count		= (mob_count / 5 - 0.5).toFixed(0);				//Для минимального 5% прироста
                        exp_min_count	= (Math.floor(mob_exp * min_count / 5)).toFixed(0);			//Опыт при минимальном приросте
			next_min_count	= (mob_count*Math.pow(1.3, 0.2)).toFixed(0);				//Прирост при убийстве <=20% будет ~5.4%
			total_exp = total_exp > pl_level*500 ? pl_level*500 : total_exp;			//Если опыт больше верхней отсечки по уровню
			exp_with_helper = exp_with_helper > pl_level*500 ? pl_level*500 : exp_with_helper;
			exp_min_count = exp_min_count > pl_level*500 ? pl_level*500 : exp_min_count;
			if (pl_level > 2) { 									//Если опыт меньше нижней отсечки по уровню (3+ уровни)
				total_exp = total_exp < pl_level*70 ? pl_level*70 : total_exp; 
				exp_with_helper = exp_with_helper < pl_level*35 ? pl_level*35 : exp_with_helper;
				exp_min_count = exp_min_count < pl_level*14 ? pl_level*14 : exp_min_count;
			} 
                        total_exp = (total_exp * koef).toFixed(0);
                        exp_with_helper = (exp_with_helper * koef).toFixed(0);
                        exp_min_count = (exp_min_count * koef).toFixed(0);
//-------------- Вставим кусок кода ---------------
// total_exp - опыт с учетом коэф. перекача
                        skip_all_mob  = needSkip(skip_all_mob,mob_name,full_exp);
			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();
})();