// (c) 2008-2010, xo4yxa
// (c) 2014, Ded Moroz
//
// ==UserScript==
// @name hwmmapmove
// @namespace ded_moroz
// @description перемещение по карте в один клик, скрипт для ГВД
// @version 2.4
// @homepage https://greasyfork.org/users/7571-ded-moroz
// @include http://www.heroeswm.ru/map.php*
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// ==/UserScript==
if( !this.GM_getValue || ( this.GM_getValue.toString && this.GM_getValue.toString().indexOf("not supported")>-1 ) )
{
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 ver = '2.4'
var coop = '<center style="font-size:10px;">© <a href="http://www.heroeswm.ru/pl_info.php?id=130" style="font-size:10px;">xo4yxa</a>, <a href="mailto:[email protected]" style="font-size:10px;" target="_top">Ded Moroz</a> <a href="https://greasyfork.org/users/7571-ded-moroz" style="font-size:10px;">hwm map move</a> v. ' + ver + '. <span style="text-decoration:underline;cursor:pointer;font-weight:bold;" id="hwmmm_options">Настройки</span></center>' ;
var url = 'http://www.heroeswm.ru/' ;
var url_cur = location.href ;
var url_ref = document.referrer ;
var els = document.getElementsByTagName('param');
for (i = 0; i < els.length; i++)
{
if (els[i].getAttribute('value').contains('map.swf'))
{
var pl = els[i+1].getAttribute('value').split('=')[1].split(':') ;
var ems = els[i+1].parentNode;
var map_swf = els[i].getAttribute('value');
break;
}
}
var road = new Array() ;
var transp;
if (pl[17] == 0)
{
transp = GM_getValue( "transport" , 0 );
if (transp >= 3)
{
// set default simple transport
GM_setValue( "transport" , 0 );
transp = 0;
}
}
else
{
transp = GM_getValue( "transport" , 3 );
if (transp < 3)
{
// set default advanced transport
GM_setValue( "transport" , 3 );
transp = 3;
}
}
var trtime = new Array( 120 , 84 , 60 , 36 , 24 , 12 ) ; // время перемещения по прямой
var trtimed = new Array( 169 , 118 , 84 , 50 , 33 , 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 == 'http://www.heroeswm.ru/map.php' )
window.location.href = url + 'ranger_guild.php' ;
*/
// если было задание ГН и пришли в сектор где есть ГН
if( pl[14] == 0 && pl[13] == -1 && plgn.indexOf(pl[0]) != -1 && 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 | 00 | 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="http://www.heroeswm.ru/ranger_guild.php"><img src="http://im.heroeswm.ru/i/houses/ranger.gif" border="0" title="Гильдия Рейнджеров"></a> <a href="http://www.heroeswm.ru/hunter_guild.php"><img src="http://im.heroeswm.ru/i/houses/hunter.gif" border="0" title="Гильдия Охотников"></a> <a href="http://www.heroeswm.ru/mercenary_guild.php"><img src="http://im.heroeswm.ru/i/houses/merc.gif" border="0" title="Гильдия Наёмников"></a> <a href="http://www.heroeswm.ru/thief_guild.php"><img src="http://im.heroeswm.ru/i/houses/thief.gif" border="0" title="Гильдия Воров"></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></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>' ;
if( GM_getValue( "checklng" ) && GM_getValue( "checklng" ) == 1 )
{
var check_lng_v = 1 ;
var lng = 2 + 3 ;
} else
{
var check_lng_v = 0 ;
var lng = 1 + 3 ;
}
// 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 , //Inferno portal 2//Eagle's Nest
c50_52: 10, //Inferno portal 1//Portal's ruins
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, //Port City
c53_49: 18, //Mythril Coast
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: 26, //The Wilderness
c48_50: 27 //Sublime Arbor
}
// locations array
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 , 'Port 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' , 'Кристальный Сад' ] ,
[] ,
[ 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 ,
l2_14: 15 ,
l2_18: 15 ,
l2_17: 15 ,
l2_21: 11 ,
l2_22: 11 ,
l3_14: 4 ,
l3_16: 4 ,
l3_17: 4 ,
l3_26: 5 ,
l4_14: 15 ,
l4_16: 15 ,
l4_17: 15 ,
l4_21: 2 ,
l4_22: 2 ,
l5_14: 11 ,
l5_17: 11 ,
l5_19: 10 ,
l5_20: 10 ,
l5_21: 10 ,
l5_22: 10 ,
l6_2: 4 ,
l6_16: 4 ,
l6_26: 5 ,
l7_14: 5 ,
l7_17: 5 ,
l7_26: 5 ,
l8_14: 5 ,
l8_17: 5 ,
l8_26: 5 ,
l9_16: 3 ,
l11_21: 19 ,
l11_22: 19 ,
l12_14: 3 ,
l12_16: 3 ,
l12_17: 3 ,
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_27: 11 ,
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 ,
l18_1: 15 ,
l18_2: 15 ,
l18_5: 15 ,
l18_6: 15 ,
l18_7: 15 ,
l18_8: 15 ,
l18_9: 15 ,
l18_10: 15 ,
l18_11: 15 ,
l18_14: 15 ,
l18_19: 15 ,
l18_20: 15 ,
l18_21: 15 ,
l18_22: 15 ,
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: 11 ,
l19_13: 11 ,
l19_14: 11 ,
l19_15: 11 ,
l19_16: 11 ,
l19_17: 11 ,
l19_18: 11 ,
l20_14: 19 ,
l20_15: 19 ,
l20_16: 19 ,
l20_17: 19 ,
l20_18: 19 ,
l21_14: 19 ,
l21_15: 19 ,
l21_16: 19 ,
l21_17: 19 ,
l21_18: 19 ,
l22_17: 21 ,
l22_18: 21 ,
l23_16: 15 ,
l24_16: 15 ,
l24_21: 2 ,
l24_22: 2 ,
l26_7: 5 ,
l26_8: 5 ,
l26_9: 5 ,
l26_12: 5 ,
l26_13: 5 ,
l26_20: 10 ,
l26_21: 10 ,
l26_22: 10 ,
l26_23: 5 ,
l26_27: 5
}
/* ! Map checks enabled by default. Do NOT change it unless you know what you are doing. */
var map_swf_passed = false;
if (pl[17] == 0)
{
GM_xmlhttpRequest({
method: "GET",
url: map_swf,
onload: function (response)
{
old_size = 220039;
old_hash = "b441f0ac541408a809ec907b54cc0060";
new_size = response.responseText.length;
if (new_size == old_size)
{
new_hash = CryptoJS.MD5(response.responseText);
if (new_hash == old_hash) map_swf_passed = true;
}
if (map_swf_passed)
{
if (GM_getValue( "hwm_map_move" ) == 1) getCXY();
else init();
}
else
{
if (new_size != old_size) console.log("New map size: " + response.responseText.length + "\nOld map size: " + old_size);
else console.log("New map hash: " + new_hash + "\nOld map hash: " + old_hash);
dm.innerHTML += "<center style='font-size:10px;color:red;'>Карта была изменена, генерация ссылок отключена</center>";
init();
}
}
});
}
else
{
init();
}
function init()
{
var el = ems;
nado = el.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 - have advanced transport
18 - magic number for moving
19 - ?
20 - clan id
*/
//+ отображение карты
var vm = GM_getValue( "checkvm" ) ;
if( vm == 1 )
{
ems.style.display = 'none' ;
} else
{
// широкая карта, убрана в 1.16.4
// ems.width = 500;
}
//-
if( pl[14] > 0 )
// происходит передвижение
{
var mz = GM_getValue( "hwm_map_move_mz" ) ;
if( pl[0] != mz )
{
var stop = ' [<a href="javascript: void(0)" id="a_stop_move">stop</a>]' ;
div = document.createElement( 'div' );
div.innerHTML = '<br><div id="hint_move">Пункт назначения: <b>' + locArr[mz][lng] + '</b>' + stop + '</div><br>' + coop ;
link = document.getElementsByTagName('a');
link = link[link.length-1].parentNode;
link.appendChild(div);
$('a_stop_move').addEventListener( "click", setStop , false );
if (!map_swf_passed) setStop();
}
else
{
div = document.createElement( 'div' );
div.innerHTML = '<br><div id="hint_move">Пункт назначения: <b>' + locArr[pl[0]][lng] + '</b></div><br>' + coop ;
link = document.getElementsByTagName('a');
link = link[link.length-1].parentNode;
link.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++ )
{
var d = $( 'loc_' + l ) ;
if (d == null) continue ;
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] ;
} else
// если какой другой
{
a = document.createElement( 'a' );
a.style.fontSize = '11px' ;
a.href = 'http://www.heroeswm.ru/move_sector.php?id='+l ;
if( pl[13] != 0 && l == pl[13] )
// если здание наемников
{
a.style.color = 'FF0000' ;
}
a.innerHTML = locArr[l][lng] ;
a.setAttribute( 'tZ' , l ) ;
if (map_swf_passed && pl[17] == 0)
{
a.href = 'javascript: void(0)' ;
a.addEventListener( "click", setMXY , false );
}
a.addEventListener( "mouseover", viewPath , false );
a.addEventListener( "mouseout", hidePath , false );
d.appendChild( a );
}
if( pl[13] == -1 && plgn.indexOf(l) != -1 )
{
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= 'http://www.heroeswm.ru/map.php?cx=' + locArr[l][1] + '&cy=' + locArr[l][2] ;
a.style.display = 'block' ;
a.style.width = '100%';
a.title = 'Осмотреть сектор '+locArr[l][lng] ;
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 ) ;
}
}
}
}
}
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 move( cz , mz )
{
if( pl[14] != 0 )
// если на странице перемещения
{
init();
return ;
}
if( mz == cz )
// если прибыли в конечный пункт
{
GM_setValue( "hwm_map_move" , 0 ) ;
GM_setValue( "hwm_map_move_mz" , 0 ) ;
if( pl[13] == -1 && plgn.indexOf(cz) != -1 && ( GM_getValue( "checkgn" ) && GM_getValue( "checkgn" ) == 1 ) )
// если было задание ГН и пришли в сектор где есть ГН
{
window.location.href = url + 'mercenary_guild.php' ;
return ;
}
init();
return ;
}
if( pl[11] != '' && ( GM_getValue( "checkgo" ) && GM_getValue( "checkgo" ) == 1 ) )
// есть охота, пить тоже
{
GM_setValue( "hwm_map_move" , 0 ) ;
GM_setValue( "hwm_map_move_mz" , 0 ) ;
return ;
}
id0 = cz
idN = mz
id1 = eval( 'locP.l' + id0 + '_' + idN ) //Ид исключение
if( id1 && id1 > 0 )
{
go(id1);
return;
}
var kC = locArr[id0] ; //координаты текущие
var kM = locArr[idN] ; //координаты назначения
if( kC[3] != kM[3] )
{
move( cz , eC ) ;
return ;
}
nx = kM[1] > kC[1] ? parseInt(kC[1]) + 1 : ( kM[1] == kC[1] ? kC[1] : parseInt(kC[1]) - 1 ) ;
ny = kM[2] > kC[2] ? parseInt(kC[2]) + 1 : ( kM[2] == kC[2] ? kC[2] : parseInt(kC[2]) - 1 ) ;
id = eval( 'locX.c' + nx + '_' + ny ) ;
go(id);
}
function go(to)
{
rand = ((pl[0] * 153 + to * 234) % 333 * 234 + pl[18] % 346234 - 142) % 10000 / 10000;
// check if the move is legal
if (pl.slice(2, 11).indexOf(to.toString()) != -1)
{
window.location.href = url + 'move_sector.php?id=' + to + '&rand=' + rand;
}
else
{
alert('Cant move from ' + pl[0] + ' to ' + to);
}
}
function setMXY()
{
GM_setValue( "hwm_map_move_mz" , this.getAttribute( 'tz' ) )
GM_setValue( "hwm_map_move" , 1 ) ;
getCXY();
}
function getCXY()
{
move( pl[0] , GM_getValue( "hwm_map_move_mz" ) ) ;
}
function setStop()
{
GM_setValue( "hwm_map_move" , 0 ) ;
GM_setValue( "hwm_map_move_mz" , 0 ) ;
$('hint_move').innerHTML = 'Конечный пункт назначения <b>' + locArr[pl[0]][lng] + '</b>' ;
}
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 viewPath()
{
mz = this.getAttribute( 'tz' ) ;
this.title = locArr[mz][lng] + ' (' + path( pl[0] , mz , 0 ) + ')' ;
function path( 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] ; //координаты текущие
var kM = locArr[mz] ; //координаты назначения
id1 = eval( 'locP.l' + cz + '_' + mz ) //Ид исключение
// если есть исключения, следующий сектор будет равен ид исключения
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 ) ;
t = ( ty == 0 || tx == 0 ) ? t + trtime[transp] : t + trtimed[transp] ;
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 ;
return path( id , mz , t );
}
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 setting()
{
bg = $('bgOverlay') ;
bgc = $('bgCenter') ;
if( !bg )
{
bg = document.createElement('div') ;
bg.id = 'bgOverlay' ;
document.body.appendChild( bg );
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.addEventListener( "click", form_close , false );
bgc = document.createElement('div') ;
bgc.id = 'bgCenter' ;
document.body.appendChild( bgc );
bgc.style.position = 'absolute' ;
bgc.style.width = '400px';
bgc.style.background = "#F6F3EA";
bgc.style.left = ( ( document.body.offsetWidth - 400 ) / 2 ) + 'px' ;
}
text = '<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="Close">x</div><center><table><tr><td><b>Настройки</b></td></tr><tr><td><div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gn"> сдавать задания Гильдии Наемников</lable></div>' +
'<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gv"> вступать в бои Гильдии Рейнджеров</lable></div>' +
'<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gvn"> заходить в Гильдию Рейнджеров с дороги</lable></div>' +
'<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_lng" title=""lng ru> название секторов по-русски</lable></div>' +
'<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_vm"> не отображать flash-карту</lable></div>' +
'<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_vs"> отображать кнопки осмотра секторов</lable></div><br><div>Ваш транспорт (<a href="http://www.heroeswm.ru/shop.php?cat=transport">транспорт в магазине</a>):<br><table><tr>' ;
spl_transp = '<td style="padding:5px;cursor:pointer;" id="transp0"><img src="https://cdn1.iconfinder.com/data/icons/disable-sign/300/Leader-dog-48.png"></td><td style="padding:5px;cursor:pointer;" id="transp1"><img src="http://www.heroeswm.ru/i/transport/1.jpg"></td><td style="padding:5px;cursor:pointer;" id="transp2"><img src="http://www.heroeswm.ru/i/transport/2.jpg"></td></tr></table></div></td></tr></table></center></div>' ;
adv_transp = '<td style="padding:5px;cursor:pointer;" id="transp3"><img src="http://www.heroeswm.ru/i/transport/3.jpg"></td><td style="padding:5px;cursor:pointer;" id="transp4"><img src="http://www.heroeswm.ru/i/transport/4.jpg"></td><td style="padding:5px;cursor:pointer;" id="transp5"><img src="http://www.heroeswm.ru/i/transport/5.jpg"></td></tr></table></div></td></tr></table></center></div>' ;
if (pl[17] == 0)
{
bgc.innerHTML = text + spl_transp;
$("transp0").addEventListener( "click", function(){setTransport(0)} , false );
$("transp1").addEventListener( "click", function(){setTransport(1)} , false );
$("transp2").addEventListener( "click", function(){setTransport(2)} , false );
}
else
{
bgc.innerHTML = text + adv_transp;
$("transp3").addEventListener( "click", function(){setTransport(3)} , false );
$("transp4").addEventListener( "click", function(){setTransport(4)} , false );
$("transp5").addEventListener( "click", function(){setTransport(5)} , false );
}
$("transp"+transp).style.background="#0000ff";
$("bt_close").addEventListener( "click", form_close , 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 + 150 ) + 'px';
bg.style.display = bgc.style.display = 'block' ;
}
//-
function $( id ) { return document.getElementById( id ); }
/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS=CryptoJS||function(s,p){var m={},l=m.lib={},n=function(){},r=l.Base={extend:function(b){n.prototype=this;var h=new n;b&&h.mixIn(b);h.hasOwnProperty("init")||(h.init=function(){h.$super.init.apply(this,arguments)});h.init.prototype=h;h.$super=this;return h},create:function(){var b=this.extend();b.init.apply(b,arguments);return b},init:function(){},mixIn:function(b){for(var h in b)b.hasOwnProperty(h)&&(this[h]=b[h]);b.hasOwnProperty("toString")&&(this.toString=b.toString)},clone:function(){return this.init.prototype.extend(this)}},
q=l.WordArray=r.extend({init:function(b,h){b=this.words=b||[];this.sigBytes=h!=p?h:4*b.length},toString:function(b){return(b||t).stringify(this)},concat:function(b){var h=this.words,a=b.words,j=this.sigBytes;b=b.sigBytes;this.clamp();if(j%4)for(var g=0;g<b;g++)h[j+g>>>2]|=(a[g>>>2]>>>24-8*(g%4)&255)<<24-8*((j+g)%4);else if(65535<a.length)for(g=0;g<b;g+=4)h[j+g>>>2]=a[g>>>2];else h.push.apply(h,a);this.sigBytes+=b;return this},clamp:function(){var b=this.words,h=this.sigBytes;b[h>>>2]&=4294967295<<
32-8*(h%4);b.length=s.ceil(h/4)},clone:function(){var b=r.clone.call(this);b.words=this.words.slice(0);return b},random:function(b){for(var h=[],a=0;a<b;a+=4)h.push(4294967296*s.random()|0);return new q.init(h,b)}}),v=m.enc={},t=v.Hex={stringify:function(b){var a=b.words;b=b.sigBytes;for(var g=[],j=0;j<b;j++){var k=a[j>>>2]>>>24-8*(j%4)&255;g.push((k>>>4).toString(16));g.push((k&15).toString(16))}return g.join("")},parse:function(b){for(var a=b.length,g=[],j=0;j<a;j+=2)g[j>>>3]|=parseInt(b.substr(j,
2),16)<<24-4*(j%8);return new q.init(g,a/2)}},a=v.Latin1={stringify:function(b){var a=b.words;b=b.sigBytes;for(var g=[],j=0;j<b;j++)g.push(String.fromCharCode(a[j>>>2]>>>24-8*(j%4)&255));return g.join("")},parse:function(b){for(var a=b.length,g=[],j=0;j<a;j++)g[j>>>2]|=(b.charCodeAt(j)&255)<<24-8*(j%4);return new q.init(g,a)}},u=v.Utf8={stringify:function(b){try{return decodeURIComponent(escape(a.stringify(b)))}catch(g){throw Error("Malformed UTF-8 data");}},parse:function(b){return a.parse(unescape(encodeURIComponent(b)))}},
g=l.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new q.init;this._nDataBytes=0},_append:function(b){"string"==typeof b&&(b=u.parse(b));this._data.concat(b);this._nDataBytes+=b.sigBytes},_process:function(b){var a=this._data,g=a.words,j=a.sigBytes,k=this.blockSize,m=j/(4*k),m=b?s.ceil(m):s.max((m|0)-this._minBufferSize,0);b=m*k;j=s.min(4*b,j);if(b){for(var l=0;l<b;l+=k)this._doProcessBlock(g,l);l=g.splice(0,b);a.sigBytes-=j}return new q.init(l,j)},clone:function(){var b=r.clone.call(this);
b._data=this._data.clone();return b},_minBufferSize:0});l.Hasher=g.extend({cfg:r.extend(),init:function(b){this.cfg=this.cfg.extend(b);this.reset()},reset:function(){g.reset.call(this);this._doReset()},update:function(b){this._append(b);this._process();return this},finalize:function(b){b&&this._append(b);return this._doFinalize()},blockSize:16,_createHelper:function(b){return function(a,g){return(new b.init(g)).finalize(a)}},_createHmacHelper:function(b){return function(a,g){return(new k.HMAC.init(b,
g)).finalize(a)}}});var k=m.algo={};return m}(Math);
(function(s){function p(a,k,b,h,l,j,m){a=a+(k&b|~k&h)+l+m;return(a<<j|a>>>32-j)+k}function m(a,k,b,h,l,j,m){a=a+(k&h|b&~h)+l+m;return(a<<j|a>>>32-j)+k}function l(a,k,b,h,l,j,m){a=a+(k^b^h)+l+m;return(a<<j|a>>>32-j)+k}function n(a,k,b,h,l,j,m){a=a+(b^(k|~h))+l+m;return(a<<j|a>>>32-j)+k}for(var r=CryptoJS,q=r.lib,v=q.WordArray,t=q.Hasher,q=r.algo,a=[],u=0;64>u;u++)a[u]=4294967296*s.abs(s.sin(u+1))|0;q=q.MD5=t.extend({_doReset:function(){this._hash=new v.init([1732584193,4023233417,2562383102,271733878])},
_doProcessBlock:function(g,k){for(var b=0;16>b;b++){var h=k+b,w=g[h];g[h]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360}var b=this._hash.words,h=g[k+0],w=g[k+1],j=g[k+2],q=g[k+3],r=g[k+4],s=g[k+5],t=g[k+6],u=g[k+7],v=g[k+8],x=g[k+9],y=g[k+10],z=g[k+11],A=g[k+12],B=g[k+13],C=g[k+14],D=g[k+15],c=b[0],d=b[1],e=b[2],f=b[3],c=p(c,d,e,f,h,7,a[0]),f=p(f,c,d,e,w,12,a[1]),e=p(e,f,c,d,j,17,a[2]),d=p(d,e,f,c,q,22,a[3]),c=p(c,d,e,f,r,7,a[4]),f=p(f,c,d,e,s,12,a[5]),e=p(e,f,c,d,t,17,a[6]),d=p(d,e,f,c,u,22,a[7]),
c=p(c,d,e,f,v,7,a[8]),f=p(f,c,d,e,x,12,a[9]),e=p(e,f,c,d,y,17,a[10]),d=p(d,e,f,c,z,22,a[11]),c=p(c,d,e,f,A,7,a[12]),f=p(f,c,d,e,B,12,a[13]),e=p(e,f,c,d,C,17,a[14]),d=p(d,e,f,c,D,22,a[15]),c=m(c,d,e,f,w,5,a[16]),f=m(f,c,d,e,t,9,a[17]),e=m(e,f,c,d,z,14,a[18]),d=m(d,e,f,c,h,20,a[19]),c=m(c,d,e,f,s,5,a[20]),f=m(f,c,d,e,y,9,a[21]),e=m(e,f,c,d,D,14,a[22]),d=m(d,e,f,c,r,20,a[23]),c=m(c,d,e,f,x,5,a[24]),f=m(f,c,d,e,C,9,a[25]),e=m(e,f,c,d,q,14,a[26]),d=m(d,e,f,c,v,20,a[27]),c=m(c,d,e,f,B,5,a[28]),f=m(f,c,
d,e,j,9,a[29]),e=m(e,f,c,d,u,14,a[30]),d=m(d,e,f,c,A,20,a[31]),c=l(c,d,e,f,s,4,a[32]),f=l(f,c,d,e,v,11,a[33]),e=l(e,f,c,d,z,16,a[34]),d=l(d,e,f,c,C,23,a[35]),c=l(c,d,e,f,w,4,a[36]),f=l(f,c,d,e,r,11,a[37]),e=l(e,f,c,d,u,16,a[38]),d=l(d,e,f,c,y,23,a[39]),c=l(c,d,e,f,B,4,a[40]),f=l(f,c,d,e,h,11,a[41]),e=l(e,f,c,d,q,16,a[42]),d=l(d,e,f,c,t,23,a[43]),c=l(c,d,e,f,x,4,a[44]),f=l(f,c,d,e,A,11,a[45]),e=l(e,f,c,d,D,16,a[46]),d=l(d,e,f,c,j,23,a[47]),c=n(c,d,e,f,h,6,a[48]),f=n(f,c,d,e,u,10,a[49]),e=n(e,f,c,d,
C,15,a[50]),d=n(d,e,f,c,s,21,a[51]),c=n(c,d,e,f,A,6,a[52]),f=n(f,c,d,e,q,10,a[53]),e=n(e,f,c,d,y,15,a[54]),d=n(d,e,f,c,w,21,a[55]),c=n(c,d,e,f,v,6,a[56]),f=n(f,c,d,e,D,10,a[57]),e=n(e,f,c,d,t,15,a[58]),d=n(d,e,f,c,B,21,a[59]),c=n(c,d,e,f,r,6,a[60]),f=n(f,c,d,e,z,10,a[61]),e=n(e,f,c,d,j,15,a[62]),d=n(d,e,f,c,x,21,a[63]);b[0]=b[0]+c|0;b[1]=b[1]+d|0;b[2]=b[2]+e|0;b[3]=b[3]+f|0},_doFinalize:function(){var a=this._data,k=a.words,b=8*this._nDataBytes,h=8*a.sigBytes;k[h>>>5]|=128<<24-h%32;var l=s.floor(b/
4294967296);k[(h+64>>>9<<4)+15]=(l<<8|l>>>24)&16711935|(l<<24|l>>>8)&4278255360;k[(h+64>>>9<<4)+14]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;a.sigBytes=4*(k.length+1);this._process();a=this._hash;k=a.words;for(b=0;4>b;b++)h=k[b],k[b]=(h<<8|h>>>24)&16711935|(h<<24|h>>>8)&4278255360;return a},clone:function(){var a=t.clone.call(this);a._hash=this._hash.clone();return a}});r.MD5=t._createHelper(q);r.HmacMD5=t._createHmacHelper(q)})(Math);