HWM Map Move

HWM Mod - Перемещение по карте в один клик

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 Map Move
// @version 	2.2.5
// @description 	HWM Mod - Перемещение по карте в один клик
// @author 	xo4yxa
// @namespace	fix Mefistophel_Gr
// @homepage 	https://greasyfork.org/ru/scripts/9472-hwm-map-move
// @include 	http://*heroeswm.ru/map.php*
// @include 	http://178.248.235.15/map.php*
// @include 	http://*lordswm.com/map.php*
// @grant 		GM_getValue
// @grant 		GM_setValue
// @grant 		GM_deleteValue
// ==/UserScript==

// (c) 2008-2013, xo4yxa (http://www.heroeswm.ru/pl_info.php?id=130) 		- оригинальный скрипт
// 2014-2015, Mefistophel_Gr (http://www.heroeswm.ru/pl_info.php?id=2287844) 	- последняя модификация

(function() {

    var ver = '2.2.5'

    if (typeof GM_deleteValue != 'function') {
        this.GM_getValue=function (key,def) {return localStorage[key] || def;};
        this.GM_setValue=function (key,value) {return localStorage[key]=value;};
        this.GM_deleteValue=function (key) {return delete localStorage[key];};
    }

    var url = 'http://'+location.hostname;
    var url_cur = location.href;
    var url_ref = document.referrer;
    var url_upd = 'https://greasyfork.org/ru/scripts/9472-hwm-map-move';
    var str_send_sms = '/sms-create.php?mailto=Mefistophel_Gr&subject=Скрипт: HWM Map Move. Версия: '+ ver;

    // установка языковых параметров
    if( GM_getValue( "checklng" ) && GM_getValue( "checklng" ) == 1 ) {
        var check_lng_v = 1;    //русский
        var lng_main = 2 + 3;
        var lng_add = 1 + 3;
        var lng_set =   'Настройки';
        var lng_RG =    'Гильдия Рейнджеров';
        var lng_HG =    'Гильдия Охотников';
        var lng_MG =    'Гильдия Наёмников';
        var lng_TG =    'Гильдия Воров';
        var lng_skip =  'Пропустить охоту';
        var lng_dest =  'Пункт назначения';
        var lng_view =  'Осмотреть сектор: ';
        var lng_close =         'Закрыть';
        var lng_main_set =      'Основные Настройки';
        var lng_set_map =       ' Не отображать Flash-карту';
        var lng_set_view =      ' Отображать кнопки осмотра секторов';
        var lng_set_lang =      ' Установить - русский - основным языком в скрипте';
        var lng_set_return =    ' Сдавать задания Гильдии Наёмников с дороги';
        var lng_set_autoIn =    ' Автоматически вступать в бои Гильдии Рейнджеров';
        var lng_set_enterRG =   ' Заходить в Гильдию Рейнджеров';
        var lng_set_carriage =  'Ваш транспорт';
        var lng_set_shop =      'транспорт в магазине';
        var str_update =        'Проверить обновление';
        var str_error =         'Обратная связь';
    } else {
        var check_lng_v = 0 ;   //английский
        var lng_main = 1 + 3;
        var lng_add = 2 + 3;
        var lng_set =   'Settings';
        var lng_RG =    'Rangers\' Guild';
        var lng_HG =    'Hunters\' Guild';
        var lng_MG =    'Mercenaries\' Guild';
        var lng_TG =    'Thieves\' Guild';
        var lng_skip =  'Skip Hunting';
        var lng_dest =  'Destination';
        var lng_view =  'Inspect sector: ';
        var lng_close =         'Close';
        var lng_main_set =      'Main Settings';
        var lng_set_map =       ' Do not Display Flash-map';
        var lng_set_view =      ' Show the buttons for view sectors';
        var lng_set_lang =      ' Set the Main language - Russian';
        var lng_set_return =    ' Hand over the tasks of Mercenaries\' Guild after traveling';
        var lng_set_autoIn =    ' Automatically engage of the Rangers\' Guild';
        var lng_set_enterRG =   ' Заходить в Гильдию Рейнджеров';
        var lng_set_carriage =  'Your carriage';
        var lng_set_shop =      'carriage from the Shop';
        var str_update =        'Check update';
        var str_error =         'Feedback';
    }

    var coop = '<center style="font-size:10px;">&#169; <a href="'+ url +'/pl_info.php?id=130" target=_blank style="font-size:10px;">xo4yxa</a> 2011-13   |   <a href="'+ url +'/pl_info.php?id=2287844" target=_blank style="font-size:10px;">Mefistophel_Gr</a> 2014-15   |    <a href="https://greasyfork.org/ru/scripts/9472-hwm-map-move" target=_blank style="font-size:10px;">HWM Map Move</a> v.' + ver + '   |    <span style="text-decoration:underline;cursor:pointer;font-weight:bold;" id="hwmmm_options">'+ lng_set +'</span> <br><br> </center>';

    var els = document.querySelector("object > param[value*='map.swf']");
    if ( els ) { els = els.parentNode.querySelector("param[name='FlashVars']"); }
    if ( els ) {
        var pl =  els.value.split('=')[1].split(':');
        //if (pl[0].indexOf('*') != -1) { pl[0] = pl[0].split('*')[1]; }
        if (pl[0].indexOf('*') != -1) { var tt = pl[0].split('*'); pl[0] = tt[tt.length-1]; }
        //alert(els.getAttribute('value'));
    } else { return; }

    var road = new Array() ;
    var transp = GM_getValue( "transport", 3 ) ;

    // Время перемещения: Без транспорта, Слон, Буйвол, Конь, Единорог, Дракон, транспорт с Абу-Бекром
    var trtime = new Array ( 120, 84, 60, 36, 24, 12, 12 ) ; 	// по прямой
    var trtimed = new Array ( 169, 118, 84, 50, 33, 16, 16 ) ; 	// по диагонали
    var plgn = [ 2 , 6 , 16 , 21 ] ; 			// сектора с ГН

    var b = document.getElementsByTagName( 'body' ) ;

    // вступать в бой ГРж
    if( pl[14] == 0 && b[0].innerHTML.indexOf( 'ranger_attack.php' ) > 0 && ( GM_getValue( "checkgv" , 0 ) == 1 ) )
        window.location.href = url +'/ranger_attack.php' ;

    //если в столице и ГРж нонстоп
    /*
    if( pl[14] == 0 && pl[0] == 1 && ( GM_getValue( "checkgvn" , 0 ) == 1 ) && url_ref == url +'/map.php' )
        window.location.href = url + '/ranger_guild.php' ;
    */

    // если было задание ГН и пришли в сектор где есть ГН
    if( pl[14] == 0 && pl[13] == -1 && in_array( pl[0] , plgn ) && GM_getValue( "checkgn" , 0 ) == 1 )
        window.location.href = url +'/mercenary_guild.php' ;


    /* карта локаций
     -- x
    |
    y
      47   48   49   50   51   52   53   54
      --   --   --   --   --   --   --   --   --   --
    | 00 | 23 | 09 | 06 | 24 | 16 | 00 | 00 | 48 	//Непокор. степь, Орл. Гнездо, Мирн. Лагерь, Крист. Сад, Маг. Лес
      --   --   --   --   --   --   --   --   --   -- 
    | 00 | 13 | 12 | 03 | 04 | 15 | 18 | 00 | 49 	//Солн. Город, Сияющ. Родн., Тигр. Озеро, Лес Разбойн., Медв. Гора, Мифр. Берег
      --   --   --   --   --   --   --   --   --   --
    | 00 | 27 | 08 | 01 | 02 | 14 | 17 | 00 | 50 	//Великое Древо, Зел. Лес, Стол. Империи, Вост. Река, Магма Шахты, Порт. Город
      --   --   --   --   --   --   --   --   --   --
    | 00 | 00 | 07 | 05 | 11 | 00 | 00 | 00 | 51 	//Равнина Ящеров, Долина Волков, Пещеры Драконов
      --   --   --   --   --   --   --   --   --   --
    | 00 | 00 | 26 | 10 | 19 | 00 | 25 | 00 | 52 	//Дикие земли, Руины Портала, Великая Стена,   море  , Вост. Остров
      --   --   --   --   --   --   --   --   --   --
    | 00 | 00 | 00 | 00 | 20 | 21 | 00 | 00 | 53 	//Равнина Титанов, Рыбачье село
      --   --   --   --   --   --   --   --   --   --
    | 00 | 00 | 00 | 00 | 00 | 22 | 00 | 00 | 54 	//Замок Королевства
      --   --   --   --   --   --   --   --   --   --
    */

    // отрисовка карты
    var dm = document.createElement( 'div' );
    dm.innerHTML = '<br><center> <a href="'+ url +'/ranger_guild.php"> <img src="'+ url +'/i/houses/ranger.gif" border="0" title="'+ lng_RG +'"></a> <a href="'+ url +'/hunter_guild.php"> <img src="'+ url +'/i/houses/hunter.gif" border="0" title="'+ lng_HG +'"></a> <a href="'+ url +'/mercenary_guild.php"> <img src="'+ url +'/i/houses/merc.gif" border="0" title="'+ lng_MG +'"></a> <a href="'+ url +'/thief_guild.php"> <img src="'+ url +'/i/houses/thief.gif" border="0" title="'+ lng_TG +'"></a> &nbsp;&nbsp; <a href="'+ url +'/map.php?action=skip"> <img src="http://i.imgur.com/rDyCmwf.png" border="0" title="'+ lng_skip +'"></a></center> <table>' +
    '<tr>' +
    '<td><div id="loc_23"></div></td>' +
    '<td><div id="loc_9"></div></td>' +
    '<td><div id="loc_6"></div></td>' +
    '<td><div id="loc_24"></div></td>' +
    '<td><div id="loc_16"></div></td>' +
    '<td></td>' +
    '</tr>' +
    '<tr>' +
    '<td><div id="loc_13"></div></td>' +
    '<td><div id="loc_12"></div></td>' +
    '<td><div id="loc_3"></div></td>' +
    '<td><div id="loc_4"></div></td>' +
    '<td><div id="loc_15"></div></td>' +
    '<td><div id="loc_18"></div></td>' +
    '</tr>' +
    '<tr>' +
    '<td><div id="loc_27"></div></td>' +
    '<td><div id="loc_8"></div></td>' +
    '<td><div id="loc_1"></div></td>' +
    '<td><div id="loc_2"></div></td>' +
    '<td><div id="loc_14"></div></td>' +
    '<td><div id="loc_17"></div></td>' +
    '</tr>' +
    '<tr>' +
    '<td></td>' +
    '<td><div id="loc_7"></div></td>' +
    '<td><div id="loc_5"></div></td>' +
    '<td><div id="loc_11"></div></td>' +
    '<td></td>' +
    '<td></td>' +
    '</tr>' +
    '<tr>' +
    '<td><div id="loc_25"></div></td>' +
    '<td><div id="loc_26"></div></td>' +
    '<td><div id="loc_10"></div></td>' +
    '<td><div id="loc_19"></div></td>' +
    '<td></td>' +
    '<td></td>' +
    '</tr>' +
    '<tr>' +
    '<td></td>' +
    '<td></td>' +
    '<td></td>' +
    '<td><div id="loc_20"></div></td>' +
    '<td><div id="loc_21"></div></td>' +
    '<td></td>' +
    '</tr>' +
    '<tr>' +
    '<td></td>' +
    '<td></td>' +
    '<td></td>' +
    '<td></td>' +
    '<td><div id="loc_22"></div></td>' +
    '<td></td>' +
    '</tr>' +
    '</table><br>' +
    coop + '<br>' ;

    // cX_Y  координаты по карте
    var locX =
    {
        c50_50:	1,	//Empire Capital
        c51_50:	2,	//East River
        c50_49:	3,	//Tiger's Lake
        c51_49:	4,	//Rogue's Wood
        c50_51:	5,	//Wolf's Dale
        c50_48:	6,	//Peaceful Camp
        c49_51:	7,	//Lizard's Lowland
        c49_50:	8,	//Green Wood
        c49_48:	9,	//Eagle's Nest 	//Inferno portal 2
        c50_52:	10,	//Portal Ruins 	//Inferno portal 1
        c51_51:	11,	//Dragon's Caves
        c49_49:	12,	//Shining Spring
        c48_49:	13,	//Sunny City
        c52_50:	14,	//Magma Mines
        c52_49:	15,	//Bear' Mountain
        c52_48:	16,	//Fairy Trees
        c53_50:	17,	//Harbour City
        c53_49:	18,	//Mythril Coast 	//Inferno portal 3
        c51_52:	19,	//Great Wall
        c51_53:	20,	//Titans' Valley
        c52_53:	21,	//Fishing Village
        c52_54:	22,	//Kingdom Castle
        c48_48:	23,	//Ungovernable Steppe
        c51_48:	24,	//Crystal Garden
        c49_52:	25,	//East Island (Old Location)
        c49_52:	26,	//The Wilderness
        c48_50:	27	//Sublime Arbor

    }

    // Массив локаций
    var locArr = new Array(
    //  0i	1x	2y	3r	4ne			5nr
        [] ,
        [ 1 , 	50 ,	50 ,	1 ,	'Empire Capital' ,		'Столица Империи' ] ,
        [ 2 ,	51 ,	50 ,	1 ,	'East River' ,		'Восточная Река' ] ,
        [ 3 ,	50 ,	49 ,	1 ,	'Tiger\'s Lake' ,		'Тигриное Озеро' ] ,
        [ 4 ,	51 ,	49 ,	1 ,	'Rogue\'s Wood' ,		'Лес Разбойников' ] ,
        [ 5 ,	50 ,	51 ,	1 ,	'Wolf\'s Dale' ,		'Долина Волков' ] ,
        [ 6 ,	50 ,	48 ,	1 ,	'Peaceful Camp' ,		'Мирный Лагерь' ] ,
        [ 7 ,	49 ,	51 ,	1 ,	'Lizard\'s Lowland' ,		'Равнина Ящеров' ] ,
        [ 8 ,	49 ,	50 ,	1 ,	'Green Wood' ,		'Зелёный Лес' ] ,
        [ 9 ,	49 ,	48 ,	1 ,	'Eagle\'s Nest' ,		'Орлиное Гнездо' ] ,
        [ 10 ,	50 ,	52 ,	1 ,	'Portal\'s ruins' ,		'Руины Портала' ] ,
        [ 11 ,	51 ,	51 ,	1 ,	'Dragon\'s Caves' ,		'Пещеры Драконов' ] ,
        [ 12 ,	49 ,	49 ,	1 ,	'Shining Spring' ,		'Сияющий Родник' ] ,
        [ 13 ,	48 ,	49 ,	1 ,	'Sunny City' ,		'Солнечный Город' ] ,
        [ 14 ,	52 ,	50 ,	1 ,	'Magma Mines' ,		'Магма Шахты' ] ,
        [ 15 ,	52 ,	49 ,	1 ,	'Bear\' Mountain' ,		'Медвежья Гора' ] ,
        [ 16 ,	52 ,	48 ,	1 ,	'Fairy Trees' ,		'Магический Лес' ] ,
        [ 17 ,	53 ,	50 ,	1 ,	'Harbour City ' ,		'Портовый Город' ] ,
        [ 18 ,	53 ,	49 ,	1 ,	'Mythril Coast' ,		'Мифриловый Берег' ] ,
        [ 19 ,	51 ,	52 ,	1 ,	'Great Wall' ,		'Великая Стена' ] ,
        [ 20 ,	51 ,	53 ,	1 ,	'Titans\' Valley' ,		'Равнина Титанов' ] ,
        [ 21 ,	52 ,	53 ,	1 ,	'Fishing Village' ,		'Рыбачье Село' ] ,
        [ 22 ,	52 ,	54 ,	1 ,	'Kingdom Castle' ,		'Замок Королевства' ] ,
        [ 23 ,	48 ,	48 ,	1 ,	'Ungovernable Steppe' ,	'Непокорная Степь' ] ,
        [ 24 ,	51 ,	48 ,	1 ,	'Crystal Garden' ,		'Кристальный Сад' ] ,
        [ 25 ,	49 ,	52 ,	1 ,	'East Island' ,			'Восточный Остров' ] ,
        [ 26 ,	49 ,	52 ,	1 ,	'The Wilderness' ,		'Дикие Земли' ] ,
        [ 27 ,	48 ,	50 ,	1 ,	'Sublime Arbor' ,		'Великое Древо' ]
    )

    // location error
    // сначала путь берёт диагональ, а потом катет
    var locP =
    {
        l1_14: 11 ,
        l1_17: 11 ,
        l1_26: 5 ,
        l1_27: 8 ,

        l2_14: 15 ,
        l2_17: 15 ,
        l2_18: 15 ,
        l2_21: 11 ,
        l2_22: 11 ,
        l2_27: 1 ,

        l3_14: 4 ,
        l3_16: 4 ,
        l3_17: 4 ,
        l3_26: 1 ,
        l3_27: 12 ,

        l4_14: 15 ,
        l4_16: 15 ,
        l4_17: 15 ,
        l4_21: 2 ,
        l4_22: 2 ,
        l4_26: 2 ,
        l4_27: 3 ,

        l5_14: 11 ,
        l5_17: 11 ,
        l5_19: 10 ,
        l5_20: 10 ,
        l5_21: 10 ,
        l5_22: 10 ,
        l5_27: 8 ,

        l6_2: 4 ,
        l6_16: 4 ,
        l6_26: 3 ,
        l6_27: 12 ,

        l7_13: 8 ,
        l7_14: 5 ,
        l7_17: 5 ,
        l7_23: 8 ,
        l7_26: 5 ,

        l8_14: 5 ,
        l8_17: 5 ,
        l8_26: 5 ,

        l9_16: 3 ,
        l9_26: 3 ,

        l10_27: 5 ,

        l11_3: 2 ,
        l11_6: 2 ,
        l11_9: 2 ,
        l11_21: 19 ,
        l11_22: 19 ,
        l11_26: 10 ,
        l11_27: 5 ,

        l12_14: 3 ,
        l12_16: 3 ,
        l12_17: 3 ,
        l12_26: 1 ,

        l13_14: 12 ,
        l13_16: 12 ,
        l13_17: 12 ,

        l14_1: 11 ,
        l14_2: 15 ,
        l14_3: 15 ,
        l14_4: 15 ,
        l14_6: 15 ,
        l14_8: 11 ,
        l14_9: 15 ,
        l14_12: 15 ,
        l14_13: 15 ,
        l14_18: 15 ,
        l14_21: 11 ,
        l14_22: 11 ,
        l14_23: 15 ,
        l14_24: 15 ,
        l14_27: 11 ,

        //l15_6: 4 ,
        //l15_9: 4 ,
        l15_23: 24 ,
        l15_26: 2 ,
        l15_27: 4 ,

        l16_1: 15 ,
        l16_2: 15 ,
        l16_3: 15 ,
        l16_4: 15 ,
        l16_5: 15 ,
        l16_6: 15 ,
        l16_7: 15 ,
        l16_8: 15 ,
        l16_9: 15 ,
        l16_10: 15 ,
        l16_11: 15 ,
        l16_12: 15 ,
        l16_13: 15 ,
        l16_19: 15 ,
        l16_20: 15 ,
        l16_23: 15 ,
        l16_24: 15 ,
        l16_26: 15 ,
        l16_27: 15 ,

        l17_2: 15 ,
        l17_5: 14 ,
        l17_7: 14 ,
        l17_10: 14 ,
        l17_11: 14 ,
        l17_19: 14 ,
        l17_20: 14 ,
        l17_21: 14 ,
        l17_22: 14 ,
        l17_26: 14 ,
        l17_27: 14 ,

        l18_1: 15 ,
        l18_2: 15 ,
        l18_5: 15 ,
        l18_6: 15 ,
        l18_7: 15 ,
        l18_8: 15 ,
        l18_9: 15 ,
        l18_10: 17 ,
        l18_11: 17 ,
        l18_14: 17 ,
        l18_19: 17 ,
        l18_20: 17 ,
        l18_21: 17 ,
        l18_22: 17 ,
        l18_23: 15 ,
        l18_24: 15 ,
        l18_26: 17 ,
        l18_27: 15 ,

        l19_1: 11 ,
        l19_3: 11 ,
        l19_5: 10 ,
        l19_6: 11 ,
        l19_7: 10 ,
        l19_8: 10 ,
        l19_9: 11 ,
        l19_12: 10 ,
        l19_13: 10 ,
        l19_14: 11 ,
        l19_15: 11 ,
        l19_16: 11 ,
        l19_17: 11 ,
        l19_18: 11 ,
        l19_23: 10 ,
        l19_27: 10 ,

        l20_14: 19 ,
        l20_15: 19 ,
        l20_16: 19 ,
        l20_17: 19 ,
        l20_18: 19 ,
        l20_27: 10 ,

        l21_14: 19 ,
        l21_15: 19 ,
        l21_16: 19 ,
        l21_17: 19 ,
        l21_18: 19 ,
        l21_27: 19 ,

        l22_17: 21 ,
        l22_18: 21 ,
        l22_27: 20 ,

        l23_16: 15 ,
        l23_26: 1 ,
        l23_27: 13 ,

        l24_16: 15 ,
        l24_21: 2 ,
        l24_22: 2 ,
        l24_26: 2 ,
        l24_27: 3 ,

        l26_7: 5 ,
        l26_8: 5 ,
        l26_9: 5 ,
        l26_11: 10 ,
        l26_12: 5 ,
        l26_13: 5 ,
        l26_14: 10 ,
        l26_17: 10 ,
        l26_20: 10 ,
        l26_21: 10 ,
        l26_22: 10 ,
        l26_23: 5 ,
        l26_24: 5 , 
        l26_27: 5 , 

        l27_1: 8 ,
        l27_2: 8 ,
        l27_3: 12 ,
        l27_4: 12 ,
        l27_5: 7 ,
        l27_6: 12 ,
        l27_9: 12 ,
        l27_10: 7 ,
        l27_11: 7 ,
        l27_14: 11 ,
        l27_15: 4 ,
        l27_16: 15 ,
        l27_17: 15 ,
        l27_18: 12 ,
        l27_19: 10 ,
        l27_20: 10 ,
        l27_21: 20 ,
        l27_22: 20 ,
        l27_23: 13 ,
        l27_24: 12 ,
        l27_26: 8
    }

    init();

    function init() {
    try {
       nado = els.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode
    /*
    0 - cur place
    1 - view place
    2-10 - have move
    11 - gO
    12 - gV
    13 - gN
    14 - loc from move (only move)
    15 - last time move (only move)
    16 - all time move (only move)
    17 - ?
    18 - clan id
    19 - ?
    20 - ?
    */

    //+ отображение карты
        var vm = GM_getValue( "checkvm" ) ;
        if( vm == 1 ) {
             document.getElementsByName('movie')[2].parentNode.parentNode.style.display = 'none';
        } else {
            //ems.width = 500; 	// широкая карта, убрана в 1.16.4
        }
    //-

        // происходит передвижение
        if( pl[14] > 0 ) {
            div = document.createElement( 'div' );
            div.innerHTML = '<br><div style="text-align: center; font-weight:bold; color:#A52A2A;" id="hint_move"><i>'+ lng_dest +':</i> '+ locArr[pl[0]][lng_main] +' ('+ locArr[pl[0]][lng_add] +')</div><br>' + coop;
            nado.appendChild( div );
            $("hwmmm_options").addEventListener( "click", setting , false );

            var mTitle = document.title ;
            var start_time = new Date() ;
            update_time( start_time.getTime() , mTitle ) ;
        }
        // стоим в секторе
        else {
            nado.appendChild( dm ) ;
            $("hwmmm_options").addEventListener( "click", setting , false );
            for( l = 1 ; l < locArr.length; l++ ) {
                if(l!=25) {
                    var d = $( 'loc_' + l ) ;
                    d.parentNode.style.textAlign = 'center' ;
                    d.style.padding = '1px 3px' ;
                    d.style.fontSize = '11px' ;
                    d.parentNode.style.border = pl[1] == l ? '1px solid #00f' : '1px solid #abc' ;
                    // если текущий сектор
                    if( l == pl[0] ) {
                        d.style.fontWeight = 'bold' ;
                        d.parentNode.style.backgroundColor = 'FFF8DC' ;
                        if( pl[13] != 0 && l == pl[13] ) {
                            d.style.color = 'FF0000' ;
                        }
                        d.innerHTML = locArr[l][lng_main] ;
                    }
                    // если какой другой
                    else {
                        a = document.createElement( 'a' );
                        a.style.fontSize = '11px' ;
                        a.href = url +'/move_sector.php?id='+l ;
                        // если задание Наёмников
                        if( pl[13] != 0 && l == pl[13] ) {
                            a.style.color = 'FF0000' ;
                        }
                        a.innerHTML = locArr[l][lng_main] ;
                        a.setAttribute( 'tZ' , l ) ;

                        a.addEventListener( "mouseover", viewPath , false );
                        a.addEventListener( "mouseout", hidePath , false );

                        a.title = locArr[l][lng_main] + ' (' + getTimeL( pl[0] , l , 0 ) + ')' ;
                        d.appendChild( a );
                    }

                    if( pl[13] == -1 && in_array( l , plgn ) ) {
                        b = document.createElement( 'b' );
                        b.style.color = '#00F' ;
                        b.innerHTML = ' X' ;
                        d.appendChild( b ) ;
                    }

                    if( GM_getValue( "checkvs" ) ) {
                        if( pl[1] != l ) {
                            a = document.createElement( 'a' );
                            a.href = url +'/map.php?cx='+ locArr[l][1] +'&cy='+ locArr[l][2];
                            a.style.display = 'block' ;
                            a.style.width = '100%';
                            a.title = lng_view + locArr[l][lng_main] ;
                            vi = document.createElement( 'img' );
                            vi.src = "data:image/gif,GIF89a%10%00%10%00%D5%00%00B%40B%15%15%18((-PPUzz%7FHHJ%5D%5D_--.zz%7BWWX23%3BEHS%80%88%A2rx%8C%DA%DD%E7bj%80sx%87%88%8C%97%7D%85%98HO_%7D%85%97%88%8C%95psz%DC%DD%DF%D4%D5%D7x%7F%8C%2B-0%C2%DF%FF%DF%F4%FFMOPmop%EF%F1%F2%E7%F9%FF%EA%FD%FF%E7%FF%FF%13%15%15%E9%FF%FF%18%1A%1A%FA%FF%FFmoo%FC%FF%FF%FD%FF%FFZ%5B%5B%5D%5D%5B%40%3F%3F%FF%FF%FF%16%16%16%10%10%10%05%05%05%00%00%00%FF%FF%FF%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%01%00%002%00%2C%00%00%00%00%10%00%10%00%00%06%5C%40%99pH%2C%12%13%01%8D%80e%24%02ZP%A8%A2)k%C8%A2%D1As%01Ma'%CDF%D4%14%7D4!-%94%A8%95%BAJ%9A%07P%8B%E4mm%2C%D4H(%CA%A9%AC%A82%05%19%0C%14%041*%17%80E0%1D%18%8AD%2F%06%89%8FB%25'%1F%94B.%08-%992%23%1E%9ECA%00%3B" ;
                            vi.style.border = '0px' ;
                            a.appendChild( vi ) ;
                            d.parentNode.appendChild( a ) ;
                        }
                    }
                }
            }
        }
                        } catch(e) {
                           alert(e)
                        }
    }

    function update_time(start, title) {
        new_time = new Date();
        s = pl[15]-Math.round((new_time.getTime()-start)/1000.);
        m = 0; h = 0;
        if (s < 0) {
        } else {
          if (s > 59) {
            m = Math.floor(s/60);
            s = s-m*60;
          }
          if (m > 59) { 
            h = Math.floor(m/60);
            m = m-h*60;
          }
          if (s < 10) { s = "0"+s; }
          if (m < 10) { m = "0"+m; }
    //        document.title=" ["+h+":"+m+":"+s+"] " + title;
            document.title = " ["+m+":"+s+"] " + title;
            setTimeout (function () { update_time(start,title)}, 999);
        }
    }


    function setCheck(ch) {
        if( GM_getValue( ch ) && GM_getValue( ch ) == 1 )
            GM_setValue( ch , 0 );
        else
            GM_setValue( ch , 1 );
    }

    function setTransport(id) {
        $("transp"+transp).style.background="#F6F3EA";
        $("transp"+id).style.background="#0000ff";
        GM_setValue( "transport" , id );
        transp = id ;
    }

    function getTimeL( cz , mz , t ) {
    /*  cz	текущий сектор обсчёта
        mz	конечный сектор обсчёта
        t	сумма времени
    */
        // если прибыли в конечный пункт
        if (mz == cz) {
            var myT = new Date(t*1000)
            myTs = myT.getSeconds()
            return myT.getMinutes() + ':' + ( myTs < 10 ? '0' : '' ) + myTs ;
        }

        var nz = 0; 		// следующий сектор, к которому надо действительно двигаться

        var kC = locArr[cz]; 	//координаты текущие
        if (kC == undefined) return 0;
        var kM = locArr[mz]; 	//координаты назначения

        id1 = eval( 'locP.l' + cz + '_' + mz ) //id исключение

        // если есть исключения, следующий сектор будет равен ид исключения
        if (id1 && id1 > 0) {
            nz = id1 ;
        }

        // если исключения, то переназначаем координаты назначения
        if (nz != 0) var kM = locArr[nz] ;

        tx = kM[1] > kC[1] ? 1 : ( kM[1] == kC[1] ? 0 : -1 ) ;
        ty = kM[2] > kC[2] ? 1 : ( kM[2] == kC[2] ? 0 : -1 ) ;
        nx = parseInt( kC[1] ) + tx ;
        ny = parseInt( kC[2] ) + ty ;

    //    t = ( ty == 0 || tx == 0 ) ? t + 120 : t + 169 ;
        t = (ty == 0 || tx == 0) ? t + trtime[transp] : t + trtimed[transp] ;
        id = eval( 'locX.c' + nx + '_' + ny ) ;
    //    t = t + ' ' + id + '(' + nz + ')' ;

        return getTimeL( id , mz , t );
    }


    function viewPath() {
        mz = this.getAttribute( 'tz' );

        path (pl[0], mz);
        function path( cz , mz ) {
            if (mz == cz)	return ;
            var nz = 0; 			// следующий сектор, к которому надо действительно двигаться
            var kC = locArr[cz]; 		//координаты текущие
            var kM = locArr[mz]; 		//координаты назначения
            id1 = eval( 'locP.l' + cz + '_' + mz ) 	//ID исключение
            // если есть исключения, следующий сектор будет равен id исключения
            if (id1 && id1 > 0) {
                nz = id1;
            }

            // если исключения, то переназначаем координаты назначения
            if (nz != 0) var kM = locArr[nz];
            tx = kM[1] > kC[1] ? 1 : ( kM[1] == kC[1] ? 0 : -1 );
            ty = kM[2] > kC[2] ? 1 : ( kM[2] == kC[2] ? 0 : -1 );
            nx = parseInt( kC[1] ) + tx ;
            ny = parseInt( kC[2] ) + ty ;
            id = eval( 'locX.c' + nx + '_' + ny ) ;

            td = $('loc_'+id)
            td.parentNode.style.backgroundColor = 'F0E68C' ;
            road[road.length] = id ;
            path( id , mz );
        }
        return ;
    }

    function hidePath() {
        for (i = 0; i < road.length ; i ++) {
            $('loc_'+road[i]).parentNode.style.backgroundColor = 'DDD9CD' ;
        }
        road = new Array() ;
    }


    //+ закрытие форм
    function form_close() {
        bg = $('bgOverlay') ;
        bgc = $('bgCenter') ;
        if ( bg ) {
            bg.style.display = bgc.style.display = 'none' ;
        }
    }

    function open_transfer() {
        if ( location.href.match('lordswm') ) {
            window.location = "transfer.php?nick=Mefistophel_Gr&shortcomment=Transferred 10000 Gold 5 Diamonds";
        } else {
            window.location = "transfer.php?nick=Mefistophel_Gr&shortcomment=%CF%E5%F0%E5%E4%E0%ED%EE%2010000%20%C7%EE%EB%EE%F2%EE%205%20%C1%F0%E8%EB%EB%E8%E0%ED%F2%FB";
        }
    }

    //+ форма настроек
    function setting() {
        var bg = $('bgOverlay');
        var bgc = $('bgCenter');
        var bg_height = ScrollHeight();
        if( !bg ) {
            bg = document.createElement('div');
            document.body.appendChild( bg );
            bg.id = 'bgOverlay';
            bg.style.position = 'absolute';
            bg.style.left = '0';
            bg.style.width = '100%';
            bg.style.height = '100%';
            bg.style.background = "#000000";
            bg.style.opacity = "0.5";
            bg.style.zIndex = "1100";
            bg.addEventListener( "click", form_close , false );

            bgc = document.createElement('div');
            document.body.appendChild( bgc );
            bgc.id = 'bgCenter' ;
            bgc.style.position = 'absolute';
            bgc.style.width = '400px';
            bgc.style.background = "#F6F3EA";
            bgc.style.left = ( ( document.body.offsetWidth - 400 ) / 2 ) + 'px';
            bgc.style.zIndex = "1105";
        }

        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" title="'+ lng_close +'">x</div>    <div style="text-align: center; font-size: 14px; font-weight:bold; color:#6A5ACD;">HWM Map Move <font style="color:#008B00;">'+ ver +'</font></div><hr/> <table width="100%" cellspacing=0 cellpadding=0 border=0> <tr><td colspan=3 style="text-align:center; font-size: 13px; font-weight:bold;"><i>'+ lng_main_set +':</i></td></tr> <tr><td colspan=3><div><label style="cursor:pointer;"><input type="checkbox" id="id_check_vm">'+ lng_set_map +'</label></div>' + 
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_vs">'+ lng_set_view +'</label></div>' + 
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_lng" title=""lng ru>'+ lng_set_lang +'</label></div>' + 
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gn">'+ lng_set_return +'</label></div>' + 
        '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gv">'+ lng_set_autoIn +'</label></div>' + 
        /*'<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gvn">'+ lng_set_enterRG +'</label></div>' + * это было для строк 104-108 */
        '<hr/><div style="text-align: center;">'+ lng_set_carriage +' (<a href = "'+ url +'/shop.php?cat=transport" target=_blank>'+ lng_set_shop +'</a>):<br> <table border="0" width="54%" align="center"><tr><td style="padding:5px;cursor:pointer;" id="transp3"> <img src="'+ url +'/i/transport/3.jpg"></td> <td style="padding:5px;cursor:pointer;" id="transp4"> <img src="'+ url +'/i/transport/4.jpg"></td> <td style="padding:5px;cursor:pointer;" id="transp5"> <img src="'+ url +'/i/transport/5.jpg"></td> <td style="padding:5px;cursor:pointer;" id="transp6"> <img src="http://dcdn.heroeswm.ru/i/transport/104.jpg" alt="Abu-Bekr"></td></tr></table> </div><hr/> </td></tr> <tr><td width="48%" align="center"><a href="'+ url_upd +'" target=_blank>'+ str_update +'</a></td> <td width="48%" align="center"><a href="'+ str_send_sms +'" target=_blank>'+ str_error +'</a></td> <td width="4%" align="right"><a href="javascript:void(0);" id="open_transfer_id">?</a></td></tr> </table> </div>';

        $("transp"+transp).style.background="#0000ff";
        $("transp3").addEventListener( "click", function(){setTransport(3)} , false );
        $("transp4").addEventListener( "click", function(){setTransport(4)} , false );
        $("transp5").addEventListener( "click", function(){setTransport(5)} , false );
        $("transp6").addEventListener( "click", function(){setTransport(6)} , false );

        $("bt_close").addEventListener( "click", form_close , false );
        $("open_transfer_id").addEventListener( "click", open_transfer , false );	  //шутка

        var check_gv = $('id_check_gv')
        check_gv.checked = GM_getValue( "checkgv" , 0 ) == 1 ? 'checked' : '' ;
        check_gv.addEventListener( "click", function(){setCheck('checkgv')} , false );

        /*var check_gvn = $('id_check_gvn')
        check_gvn.checked = GM_getValue( "checkgvn" , 0 ) == 1 ? 'checked' : '' ;
        check_gvn.addEventListener( "click", function(){setCheck('checkgvn')} , false ); */

        var check_gn = $('id_check_gn')
        check_gn.checked = GM_getValue( "checkgn" , 0 ) == 1 ? 'checked' : '' ;
        check_gn.addEventListener( "click", function(){setCheck('checkgn')} , false );

        var check_vm = $('id_check_vm')
        check_vm.checked = GM_getValue( "checkvm" , 0 ) == 1 ? 'checked' : '' ;
        check_vm.addEventListener( "click", function(){setCheck('checkvm')} , false );

        var check_vs = $('id_check_vs')
        check_vs.checked = GM_getValue( "checkvs" , 0 ) == 1 ? 'checked' : '' ;
        check_vs.addEventListener( "click", function(){setCheck('checkvs')} , false );

        var check_lng = $('id_check_lng') ;
        check_lng.checked = check_lng_v == 1 ? 'checked' : '' ;
        check_lng.addEventListener( "click", function(){setCheck('checklng')} , false );

        bg.style.top = (-document.body.scrollTop)+'px';
        bgc.style.top = ( document.body.scrollTop + 100 ) + 'px';
        bg.style.display = bgc.style.display = 'block' ;
    }
    //-

    function ScrollHeight() {
        return Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
    }

    function getI( xpath ) {
        return document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
    }

    function $( id ) { return document.getElementById( id ); }

    function in_array(needle, haystack, strict) {
        var found = false, key, strict = !!strict;
        for (key in haystack) {
            if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
                found = true;
                break;
            }
        }
        return found;
    }

})();