hwm_GO_exp

Helper to guild of Hunters (2015.06.22)

As of 14.08.2015. See апошняя версія.

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

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

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

		if (str_tbl_info.indexOf(str_pl_lvl) > 0)
		{
			str_tbl_info = str_tbl_info.substring(str_tbl_info.indexOf(str_pl_lvl) + str_pl_lvl.length);
			pl_level = str_tbl_info.substring(0, str_tbl_info.search(/\D/));
			break;
		}
	}
	if(url_cur.indexOf(url_1_home) != -1)
	{
		GM_setValue("hunt_exp_pl_1_level", pl_level);
		return;
	 }
	if(url_cur.indexOf(url_2_home) != -1)
	{
		GM_setValue("hunt_exp_pl_2_level", pl_level);
		return;
	 }
	if(url_cur.indexOf(url_3_home) != -1)
	{
		GM_setValue("hunt_exp_pl_3_level", pl_level);
		return;
	 }
}
// ***************************************************
function needSkip(skip,mob,expirience)
{
//	alert(mob+': '+expirience+'<='+limit_exp+'. Onb|T CMOTPETb?: '+skip_mode);
	if (skip_mode) {
		if ((limit_exp == 0) || (expirience*1 <= limit_exp*1)) skip = false;
	}  else {
		if (google_str.length == 0) { skip = false; return skip; }
		var str_mob = mob.replace(/\s+/g, ''); //удаляем все пробелы в имени
		str_mob = str_mob.toLocaleLowerCase();
		var google_array = google_str.split(" ");              
		for (var i in google_array) {
			if (str_mob.indexOf(google_array[i]) != -1) skip = false;
		}
	}
	return skip;
}
//****************************************************
function skip_hunt(hunt) {
	var x= document.querySelector("td >a[href*='ecostat.php']");
	if (x == null)	return;
	document.title = str_skip;
	setTimeout(function() { window.location.href = 'http://'+location.hostname+'/'+'map.php?action=skip'; }, 3000);
}
// ***************************************************
function showExperience() {
	if(url_cur.indexOf(url_map) == -1){ return; }
	var my_td_danger,  total_exp, full_exp, next_count, exp_with_helper, next_half_count, min_count, exp_min_count, next_min_count;   
	var str_hunt, str_total_exp, next_level;//, min_kills, exp_min_kills;
	var mob_name ="";
	var str_dop ="";
	var mob_exp = 0;
	var temp = 0;
	var hunt_available = false;
	var skip_all_mob = true;
	for (var k = 0; k < all_tables.length; k++)
	{
		if (all_tables[k].className == "wbwhite")
		{
			if (all_tables[k].childNodes[0].childNodes[0].children.length < 2) {break;}
			my_td_danger = all_tables[k].childNodes[0].childNodes[0].childNodes[2];
			if (!my_td_danger){ return; } //no hunt...

			str_hunt = all_tables[k].childNodes[0].childNodes[0].childNodes[1].innerHTML;
			mob_count = str_hunt.substring(str_hunt.indexOf("(")+1, str_hunt.indexOf(ustring('шт.'))-1);
			mob_name = str_hunt.substring(str_hunt.indexOf(">")+1, str_hunt.indexOf("</"));
			mob_exp = mob_rus_exp[$ustring(mob_name)];
			hunt_available = true;

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

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

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

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

                        if (enable_5_procent) {str_total_exp = str_total_exp + '<font style="font-size:10px;color:#007FFF"><i><center>'+str_min_kol.replace('STR3', min_count).replace('STR4', exp_min_count).replace('STR8', next_min_count)+'</center></i></font>'};

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