HWM Map Move

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

目前为 2015-04-24 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name HWM Map Move
  3. // @version 2.02.3
  4. // @description HWM Mod - Перемещение по карте в один клик
  5. // @namespace xo4yxa & fix Mefistophel_Gr
  6. // @homepage http://hwm.xo4yxa.ru/js/mapmove/
  7. // @include http://*heroeswm.ru/map.php*
  8. // @include http://*lordswm.com/map.php*
  9. // @include http://178.248.235.15/map.php*
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @grant GM_deleteValue
  13. // ==/UserScript==
  14.  
  15. // (c) 2008-2013, xo4yxa - оригинальный скрипт
  16. // 2014-2015, Mefistophel_Gr - последняя модификация
  17.  
  18. (function() {
  19.  
  20. var ver = '2.02.3'
  21.  
  22. if (typeof GM_getValue != 'function') {
  23. this.GM_getValue=function (key,def) {return localStorage[key] || def;};
  24. this.GM_setValue=function (key,value) {return localStorage[key]=value;};
  25. this.GM_deleteValue=function (key) {return delete localStorage[key];};
  26. }
  27.  
  28. var coop = '<center style="font-size:10px;">&#169; <a href="http://www.heroeswm.ru/pl_info.php?id=130" target=_blank style="font-size:10px;">xo4yxa</a> 2011-13 | <a href="http://www.heroeswm.ru/pl_info.php?id=2287844" target=_blank style="font-size:10px;">Mefistophel_Gr</a> 2014-15 | <a href="http://heroeswm.ru/forum_messages.php?tid=1401609&page=last" 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">Настройки</span> <br><br> </center>' ;
  29.  
  30. var url = 'http://www.heroeswm.ru/' ;
  31. var url_cur = location.href ;
  32. var url_ref = document.referrer ;
  33. //var ems = getI( "//embed[@name='map']" ).snapshotItem(0) ;
  34. //var pl = ems.getAttribute( 'FlashVars' ).split('=')[1].split(':') ;
  35. var ems;
  36. var els = document.getElementsByTagName('param');
  37. for (var i = 0; i < els.length; i++) {
  38. var el = els[i];
  39. if (el.getAttribute('value').contains('map.swf')) {
  40. ems = els[i+1];
  41. break;
  42. }
  43. }
  44.  
  45. var pl = ems.getAttribute( 'value' ).split('=')[1].split(':') ;
  46. var road = new Array() ;
  47. var transp = GM_getValue( "transport" , 3 ) ;
  48.  
  49. var trtime = new Array( 120 , 84 , 60 , 36 , 24 , 12 ) ; // время перемещения по прямой
  50. var trtimed = new Array( 169 , 118 , 84 , 50 , 33 , 16 ) ; // время перемещения по диагонали
  51. var plgn = [ 2 , 6 , 16 , 21 ] ; // сектора с ГН
  52.  
  53. var b = document.getElementsByTagName( 'body' ) ;
  54.  
  55. // вступать в бой ГРж
  56. if( pl[14] == 0 && b[0].innerHTML.indexOf( 'ranger_attack.php' ) > 0 && ( GM_getValue( "checkgv" , 0 ) == 1 ) )
  57. window.location.href = url + 'ranger_attack.php' ;
  58.  
  59. //если в столице и ГРж нонстоп
  60. /*
  61. if( pl[14] == 0 && pl[0] == 1 && ( GM_getValue( "checkgvn" , 0 ) == 1 ) && url_ref == 'http://www.heroeswm.ru/map.php' )
  62. window.location.href = url + 'ranger_guild.php' ;
  63. */
  64.  
  65. // если было задание ГН и пришли в сектор где есть ГН
  66. if( pl[14] == 0 && pl[13] == -1 && in_array( pl[0] , plgn ) && GM_getValue( "checkgn" , 0 ) == 1 )
  67. window.location.href = url + 'mercenary_guild.php' ;
  68.  
  69.  
  70. /* карта локаций
  71. -- x
  72. |
  73. y
  74. 47 48 49 50 51 52 53 54
  75. -- -- -- -- -- -- -- -- -- --
  76. | 00 | 23 | 09 | 06 | 24 | 16 | 00 | 00 | 48 //Непокор. степь, Орл. Гнездо, Мирн. Лагерь, Крист. Сад, Маг. Лес
  77. -- -- -- -- -- -- -- -- -- --
  78. | 00 | 13 | 12 | 03 | 04 | 15 | 18 | 00 | 49 //Солн. Город, Сияющ. Родн., Тигр. Озеро, Лес Разбойн., Медв. Гора, Мифр. Берег
  79. -- -- -- -- -- -- -- -- -- --
  80. | 00 | 27 | 08 | 01 | 02 | 14 | 17 | 00 | 50 //Великое Древо, Зел. Лес, Стол. Империи, Вост. Река, Магма Шахты, Порт. Город
  81. -- -- -- -- -- -- -- -- -- --
  82. | 00 | 00 | 07 | 05 | 11 | 00 | 00 | 00 | 51 //Равнина Ящеров, Долина Волков, Пещеры Драконов
  83. -- -- -- -- -- -- -- -- -- --
  84. | 00 | 00 | 26 | 10 | 19 | 00 | 25 | 00 | 52 //Дикие земли, Руины Портала, Великая Стена, море , Вост. Остров
  85. -- -- -- -- -- -- -- -- -- --
  86. | 00 | 00 | 00 | 00 | 20 | 21 | 00 | 00 | 53 //Равнина Титанов, Рыбачье село
  87. -- -- -- -- -- -- -- -- -- --
  88. | 00 | 00 | 00 | 00 | 00 | 22 | 00 | 00 | 54 //Замок Королевства
  89. -- -- -- -- -- -- -- -- -- --
  90. */
  91.  
  92. // отрисовка карты
  93. var dm = document.createElement( 'div' );
  94. 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> &nbsp;&nbsp; <a href="http://www.heroeswm.ru/map.php?action=skip"><img src="http://i.imgur.com/rDyCmwf.png" border="0" title="Пропустить охоту"></a></center> <table>' +
  95. '<tr>' +
  96. '<td><div id="loc_23"></div></td>' +
  97. '<td><div id="loc_9"></div></td>' +
  98. '<td><div id="loc_6"></div></td>' +
  99. '<td><div id="loc_24"></div></td>' +
  100. '<td><div id="loc_16"></div></td>' +
  101. '<td></td>' +
  102. '</tr>' +
  103. '<tr>' +
  104. '<td><div id="loc_13"></div></td>' +
  105. '<td><div id="loc_12"></div></td>' +
  106. '<td><div id="loc_3"></div></td>' +
  107. '<td><div id="loc_4"></div></td>' +
  108. '<td><div id="loc_15"></div></td>' +
  109. '<td><div id="loc_18"></div></td>' +
  110. '</tr>' +
  111. '<tr>' +
  112. '<td><div id="loc_27"></div></td>' +
  113. '<td><div id="loc_8"></div></td>' +
  114. '<td><div id="loc_1"></div></td>' +
  115. '<td><div id="loc_2"></div></td>' +
  116. '<td><div id="loc_14"></div></td>' +
  117. '<td><div id="loc_17"></div></td>' +
  118. '</tr>' +
  119. '<tr>' +
  120. '<td></td>' +
  121. '<td><div id="loc_7"></div></td>' +
  122. '<td><div id="loc_5"></div></td>' +
  123. '<td><div id="loc_11"></div></td>' +
  124. '<td></td>' +
  125. '<td></td>' +
  126. '</tr>' +
  127. '<tr>' +
  128. '<td><div id="loc_25"></div></td>' +
  129. '<td><div id="loc_26"></div></td>' +
  130. '<td><div id="loc_10"></div></td>' +
  131. '<td><div id="loc_19"></div></td>' +
  132. '<td></td>' +
  133. '<td></td>' +
  134. '</tr>' +
  135. '<tr>' +
  136. '<td></td>' +
  137. '<td></td>' +
  138. '<td></td>' +
  139. '<td><div id="loc_20"></div></td>' +
  140. '<td><div id="loc_21"></div></td>' +
  141. '<td></td>' +
  142. '</tr>' +
  143. '<tr>' +
  144. '<td></td>' +
  145. '<td></td>' +
  146. '<td></td>' +
  147. '<td></td>' +
  148. '<td><div id="loc_22"></div></td>' +
  149. '<td></td>' +
  150. '</tr>' +
  151. '</table><br>' +
  152. coop + '<br>' ;
  153.  
  154. if( GM_getValue( "checklng" ) && GM_getValue( "checklng" ) == 1 ) {
  155. var check_lng_v = 1 ;
  156. var lng = 2 + 3 ;
  157. } else {
  158. var check_lng_v = 0 ;
  159. var lng = 1 + 3 ;
  160. }
  161.  
  162.  
  163. // cX_Y координаты по карте
  164. var locX =
  165. {
  166. c50_50: 1, //Empire Capital
  167. c51_50: 2, //East River
  168. c50_49: 3, //Tiger's Lake
  169. c51_49: 4, //Rogue's Wood
  170. c50_51: 5, //Wolf's Dale
  171. c50_48: 6, //Peaceful Camp
  172. c49_51: 7, //Lizard's Lowland
  173. c49_50: 8, //Green Wood
  174. c49_48: 9, //Eagle's Nest //Inferno portal 2
  175. c50_52: 10, //Portal Ruins //Inferno portal 1
  176. c51_51: 11, //Dragon's Caves
  177. c49_49: 12, //Shining Spring
  178. c48_49: 13, //Sunny City
  179. c52_50: 14, //Magma Mines
  180. c52_49: 15, //Bear' Mountain
  181. c52_48: 16, //Fairy Trees
  182. c53_50: 17, //Harbour City
  183. c53_49: 18, //Mythril Coast //Inferno portal 3
  184. c51_52: 19, //Great Wall
  185. c51_53: 20, //Titans' Valley
  186. c52_53: 21, //Fishing Village
  187. c52_54: 22, //Kingdom Castle
  188. c48_48: 23, //Ungovernable Steppe
  189. c51_48: 24, //Crystal Garden
  190. c49_52: 25, //Empty //East Island (Old Location)
  191. c49_52: 26, //The Wilderness
  192. c48_50: 27 //Sublime Arbor
  193.  
  194. }
  195.  
  196. // Массив локаций
  197. var locArr = new Array(
  198. // 0i 1x 2y 3r 4ne 5nr
  199. [] ,
  200. [ 1 , 50 , 50 , 1 , 'Empire Capital' , 'Столица Империи' ] ,
  201. [ 2 , 51 , 50 , 1 , 'East River' , 'Восточная Река' ] ,
  202. [ 3 , 50 , 49 , 1 , 'Tiger\'s Lake' , 'Тигриное Озеро' ] ,
  203. [ 4 , 51 , 49 , 1 , 'Rogue\'s Wood' , 'Лес Разбойников' ] ,
  204. [ 5 , 50 , 51 , 1 , 'Wolf\'s Dale' , 'Долина Волков' ] ,
  205. [ 6 , 50 , 48 , 1 , 'Peaceful Camp' , 'Мирный Лагерь' ] ,
  206. [ 7 , 49 , 51 , 1 , 'Lizard\'s Lowland' , 'Равнина Ящеров' ] ,
  207. [ 8 , 49 , 50 , 1 , 'Green Wood' , 'Зелёный Лес' ] ,
  208. [ 9 , 49 , 48 , 1 , 'Eagle\'s Nest' , 'Орлиное Гнездо' ] ,
  209. [ 10 , 50 , 52 , 1 , 'Portal\'s ruins' , 'Руины Портала' ] ,
  210. [ 11 , 51 , 51 , 1 , 'Dragon\'s Caves' , 'Пещеры Драконов' ] ,
  211. [ 12 , 49 , 49 , 1 , 'Shining Spring' , 'Сияющий Родник' ] ,
  212. [ 13 , 48 , 49 , 1 , 'Sunny City' , 'Солнечный Город' ] ,
  213. [ 14 , 52 , 50 , 1 , 'Magma Mines' , 'Магма Шахты' ] ,
  214. [ 15 , 52 , 49 , 1 , 'Bear\' Mountain' , 'Медвежья Гора' ] ,
  215. [ 16 , 52 , 48 , 1 , 'Fairy Trees' , 'Магический Лес' ] ,
  216. [ 17 , 53 , 50 , 1 , 'Harbour City ' , 'Портовый Город' ] ,
  217. [ 18 , 53 , 49 , 1 , 'Mythril Coast' , 'Мифриловый Берег' ] ,
  218. [ 19 , 51 , 52 , 1 , 'Great Wall' , 'Великая Стена' ] ,
  219. [ 20 , 51 , 53 , 1 , 'Titans\' Valley' , 'Равнина Титанов' ] ,
  220. [ 21 , 52 , 53 , 1 , 'Fishing Village' , 'Рыбачье Село' ] ,
  221. [ 22 , 52 , 54 , 1 , 'Kingdom Castle' , 'Замок Королевства' ] ,
  222. [ 23 , 48 , 48 , 1 , 'Ungovernable Steppe' , 'Непокорная Степь' ] ,
  223. [ 24 , 51 , 48 , 1 , 'Crystal Garden' , 'Кристальный Сад' ] ,
  224. [ 25 , 49 , 52 , 1 , 'Empty' , 'Пусто' ] ,
  225. [ 26 , 49 , 52 , 1 , 'The Wilderness' , 'Дикие Земли' ] ,
  226. [ 27 , 48 , 50 , 1 , 'Sublime Arbor' , 'Великое Древо' ]
  227. )
  228.  
  229. // location error
  230. // сначала путь берёт диагональ, а потом катет
  231. var locP =
  232. {
  233. l1_14: 11 ,
  234. l1_17: 11 ,
  235. l1_26: 5 ,
  236. l1_27: 8 ,
  237.  
  238. l2_14: 15 ,
  239. l2_17: 15 ,
  240. l2_18: 15 ,
  241. l2_21: 11 ,
  242. l2_22: 11 ,
  243. l2_27: 1 ,
  244.  
  245. l3_14: 4 ,
  246. l3_16: 4 ,
  247. l3_17: 4 ,
  248. l3_26: 1 ,
  249. l3_27: 12 ,
  250.  
  251. l4_14: 15 ,
  252. l4_16: 15 ,
  253. l4_17: 15 ,
  254. l4_21: 2 ,
  255. l4_22: 2 ,
  256. l4_26: 2 ,
  257. l4_27: 3 ,
  258.  
  259. l5_14: 11 ,
  260. l5_17: 11 ,
  261. l5_19: 10 ,
  262. l5_20: 10 ,
  263. l5_21: 10 ,
  264. l5_22: 10 ,
  265. l5_27: 8 ,
  266.  
  267. l6_2: 4 ,
  268. l6_16: 4 ,
  269. l6_26: 3 ,
  270. l6_27: 12 ,
  271.  
  272. l7_13: 8 ,
  273. l7_14: 5 ,
  274. l7_17: 5 ,
  275. l7_23: 8 ,
  276. l7_26: 5 ,
  277.  
  278. l8_14: 5 ,
  279. l8_17: 5 ,
  280. l8_26: 5 ,
  281.  
  282. l9_16: 3 ,
  283. l9_26: 3 ,
  284.  
  285. l10_27: 7 ,
  286.  
  287. l11_3: 2 ,
  288. l11_6: 2 ,
  289. l11_9: 2 ,
  290. l11_21: 19 ,
  291. l11_22: 19 ,
  292. l11_26: 10 ,
  293. l11_27: 5 ,
  294.  
  295. l12_14: 3 ,
  296. l12_16: 3 ,
  297. l12_17: 3 ,
  298. l12_26: 1 ,
  299.  
  300. l13_14: 12 ,
  301. l13_16: 12 ,
  302. l13_17: 12 ,
  303.  
  304. l14_1: 11 ,
  305. l14_2: 15 ,
  306. l14_3: 15 ,
  307. l14_4: 15 ,
  308. l14_6: 15 ,
  309. l14_8: 11 ,
  310. l14_9: 15 ,
  311. l14_12: 15 ,
  312. l14_13: 15 ,
  313. l14_18: 15 ,
  314. l14_21: 11 ,
  315. l14_22: 11 ,
  316. l14_23: 15 ,
  317. l14_24: 15 ,
  318. l14_27: 11 ,
  319.  
  320. // l15_6: 4 ,
  321. // l15_9: 4 ,
  322. l15_23: 24 ,
  323. l15_26: 2 ,
  324. l15_27: 4 ,
  325.  
  326. l16_1: 15 ,
  327. l16_2: 15 ,
  328. l16_3: 15 ,
  329. l16_4: 15 ,
  330. l16_5: 15 ,
  331. l16_6: 15 ,
  332. l16_7: 15 ,
  333. l16_8: 15 ,
  334. l16_9: 15 ,
  335. l16_10: 15 ,
  336. l16_11: 15 ,
  337. l16_12: 15 ,
  338. l16_13: 15 ,
  339. l16_19: 15 ,
  340. l16_20: 15 ,
  341. l16_23: 15 ,
  342. l16_24: 15 ,
  343. l16_26: 15 ,
  344. l16_27: 15 ,
  345.  
  346. l17_2: 15 ,
  347. l17_5: 14 ,
  348. l17_7: 14 ,
  349. l17_10: 14 ,
  350. l17_11: 14 ,
  351. l17_19: 14 ,
  352. l17_20: 14 ,
  353. l17_21: 14 ,
  354. l17_22: 14 ,
  355. l17_26: 14 ,
  356. l17_27: 14 ,
  357.  
  358. l18_1: 15 ,
  359. l18_2: 15 ,
  360. l18_5: 15 ,
  361. l18_6: 15 ,
  362. l18_7: 15 ,
  363. l18_8: 15 ,
  364. l18_9: 15 ,
  365. l18_10: 17 ,
  366. l18_11: 17 ,
  367. l18_14: 17 ,
  368. l18_19: 17 ,
  369. l18_20: 17 ,
  370. l18_21: 17 ,
  371. l18_22: 17 ,
  372. l18_23: 15 ,
  373. l18_24: 15 ,
  374. l18_26: 17 ,
  375. l18_27: 15 ,
  376.  
  377. l19_1: 11 ,
  378. l19_3: 11 ,
  379. l19_5: 10 ,
  380. l19_6: 11 ,
  381. l19_7: 10 ,
  382. l19_8: 10 ,
  383. l19_9: 11 ,
  384. l19_12: 10 ,
  385. l19_13: 10 ,
  386. l19_14: 11 ,
  387. l19_15: 11 ,
  388. l19_16: 11 ,
  389. l19_17: 11 ,
  390. l19_18: 11 ,
  391. l19_23: 10 ,
  392. l19_27: 5 ,
  393.  
  394. l20_14: 19 ,
  395. l20_15: 19 ,
  396. l20_16: 19 ,
  397. l20_17: 19 ,
  398. l20_18: 19 ,
  399. l20_27: 19 ,
  400.  
  401. l21_14: 19 ,
  402. l21_15: 19 ,
  403. l21_16: 19 ,
  404. l21_17: 19 ,
  405. l21_18: 19 ,
  406. l21_27: 20 ,
  407.  
  408. l22_17: 21 ,
  409. l22_18: 21 ,
  410. l22_27: 20 ,
  411.  
  412. l23_16: 15 ,
  413. l23_26: 1 ,
  414. l23_27: 13 ,
  415.  
  416. l24_16: 15 ,
  417. l24_21: 2 ,
  418. l24_22: 2 ,
  419. l24_26: 2 ,
  420. l24_27: 3 ,
  421.  
  422. l26_7: 5 ,
  423. l26_8: 5 ,
  424. l26_9: 5 ,
  425. l26_11: 10 ,
  426. l26_12: 5 ,
  427. l26_13: 5 ,
  428. l26_14: 10 ,
  429. l26_17: 10 ,
  430. l26_20: 10 ,
  431. l26_21: 10 ,
  432. l26_22: 10 ,
  433. l26_23: 5 ,
  434. l26_24: 5 ,
  435. l26_27: 5 ,
  436.  
  437. l27_1: 8 ,
  438. l27_2: 8 ,
  439. l27_3: 12 ,
  440. l27_4: 12 ,
  441. l27_5: 7 ,
  442. l27_6: 12 ,
  443. l27_9: 12 ,
  444. l27_10: 7 ,
  445. l27_11: 7 ,
  446. l27_14: 11 ,
  447. l27_15: 4 ,
  448. l27_16: 15 ,
  449. l27_17: 15 ,
  450. l27_18: 12 ,
  451. l27_19: 10 ,
  452. l27_20: 10 ,
  453. l27_21: 20 ,
  454. l27_22: 20 ,
  455. l27_23: 13 ,
  456. l27_24: 12 ,
  457. l27_26: 8
  458.  
  459. }
  460.  
  461.  
  462. init();
  463.  
  464. function init() {
  465. try {
  466. var el = ems;
  467. nado = el.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode
  468. /*
  469. 0 - cur place
  470. 1 - view place
  471. 2-10 - have move
  472. 11 - gO
  473. 12 - gV
  474. 13 - gN
  475. 14 - loc from move (only move)
  476. 15 - last time move (only move)
  477. 16 - all time move (only move)
  478. 17 - ?
  479. 18 - clan id
  480. 19 - ?
  481. 20 - ?
  482. */
  483.  
  484. //+ отображение карты
  485. var vm = GM_getValue( "checkvm" ) ;
  486. if( vm == 1 ) {
  487. //ems.style.display = 'none' ; //старый формат
  488. document.getElementsByName('movie')[2].parentNode.parentNode.style.display = 'none';
  489. } else {
  490. // ems.width = 500; // широкая карта, убрана в 1.16.4
  491. }
  492. //-
  493.  
  494. // происходит передвижение
  495. if( pl[14] > 0 ) {
  496. div = document.createElement( 'div' );
  497. div.innerHTML = '<br><center><div id="hint_move">Пункт назначения: <b>' + locArr[pl[0]][lng] + '</b></center></div><br>' + coop ;
  498. nado.appendChild( div );
  499. $("hwmmm_options").addEventListener( "click", setting , false );
  500.  
  501. var mTitle = document.title ;
  502. var start_time = new Date() ;
  503. update_time( start_time.getTime() , mTitle ) ;
  504. }
  505. // стоим в секторе
  506. else {
  507. nado.appendChild( dm ) ;
  508. $("hwmmm_options").addEventListener( "click", setting , false );
  509. for( l = 1 ; l < locArr.length; l++ ) {
  510. if(l!=25) {
  511. var d = $( 'loc_' + l ) ;
  512. d.parentNode.style.textAlign = 'center' ;
  513. d.style.padding = '1px 3px' ;
  514. d.style.fontSize = '11px' ;
  515. d.parentNode.style.border = pl[1] == l ? '1px solid #00f' : '1px solid #abc' ;
  516. // если текущий сектор
  517. if( l == pl[0] ) {
  518. d.style.fontWeight = 'bold' ;
  519. d.parentNode.style.backgroundColor = 'FFF8DC' ;
  520. if( pl[13] != 0 && l == pl[13] ) {
  521. d.style.color = 'FF0000' ;
  522. }
  523. d.innerHTML = locArr[l][lng] ;
  524. }
  525. // если какой другой
  526. else {
  527. a = document.createElement( 'a' );
  528. a.style.fontSize = '11px' ;
  529. a.href = 'http://www.heroeswm.ru/move_sector.php?id='+l ;
  530. // если задание Наёмников
  531. if( pl[13] != 0 && l == pl[13] ) {
  532. a.style.color = 'FF0000' ;
  533. }
  534. a.innerHTML = locArr[l][lng] ;
  535. a.setAttribute( 'tZ' , l ) ;
  536.  
  537. a.addEventListener( "mouseover", viewPath , false );
  538. a.addEventListener( "mouseout", hidePath , false );
  539.  
  540. a.title = locArr[l][lng] + ' (' + getTimeL( pl[0] , l , 0 ) + ')' ;
  541. d.appendChild( a );
  542. }
  543.  
  544. if( pl[13] == -1 && in_array( l , plgn ) ) {
  545. b = document.createElement( 'b' );
  546. b.style.color = '#00F' ;
  547. b.innerHTML = ' X' ;
  548. d.appendChild( b ) ;
  549. }
  550.  
  551. if( GM_getValue( "checkvs" ) ) {
  552. if( pl[1] != l ) {
  553. a = document.createElement( 'a' );
  554. a.href= 'http://www.heroeswm.ru/map.php?cx=' + locArr[l][1] + '&cy=' + locArr[l][2] ;
  555. a.style.display = 'block' ;
  556. a.style.width = '100%';
  557. a.title = 'Осмотреть сектор '+locArr[l][lng] ;
  558. vi = document.createElement( 'img' );
  559. 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" ;
  560. vi.style.border = '0px' ;
  561. a.appendChild( vi ) ;
  562. d.parentNode.appendChild( a ) ;
  563. }
  564. }
  565. }
  566. }
  567. }
  568. } catch(e) {
  569. alert(e)
  570. }
  571. }
  572.  
  573. function update_time( start , title ) {
  574. new_time=new Date();
  575. s=pl[15]-Math.round((new_time.getTime()-start)/1000.);
  576. m=0;h=0;
  577. if(s<0) {
  578. } else {
  579. if(s>59) {
  580. m=Math.floor(s/60);
  581. s=s-m*60;
  582. }
  583. if(m>59) {
  584. h=Math.floor(m/60);
  585. m=m-h*60;
  586. }
  587. if(s<10) { s="0"+s; }
  588. if(m<10) { m="0"+m; }
  589. // document.title=" ["+h+":"+m+":"+s+"] " + title;
  590. document.title=" ["+m+":"+s+"] " + title;
  591. setTimeout( function(){ update_time(start,title)},999);
  592. }
  593. }
  594.  
  595.  
  596. function setCheck(ch) {
  597. if( GM_getValue( ch ) && GM_getValue( ch ) == 1 )
  598. GM_setValue( ch , 0 );
  599. else
  600. GM_setValue( ch , 1 );
  601. }
  602.  
  603. function setTransport(id) {
  604. $("transp"+transp).style.background="#F6F3EA";
  605. $("transp"+id).style.background="#0000ff";
  606. GM_setValue( "transport" , id );
  607. transp = id ;
  608. }
  609.  
  610. function getTimeL( cz , mz , t ) {
  611. /* cz текущий сектор обсчёта
  612. mz конечный сектор обсчёта
  613. t сумма времени
  614. */
  615. // если прибыли в конечный пункт
  616. if( mz == cz ) {
  617. var myT = new Date(t*1000)
  618. myTs = myT.getSeconds()
  619. return myT.getMinutes() + ':' + ( myTs < 10 ? '0' : '' ) + myTs ;
  620. }
  621.  
  622. var nz = 0; // следующий сектор, к которому надо действительно двигаться
  623.  
  624. var kC = locArr[cz]; //координаты текущие
  625. if(kC == undefined) return 0;
  626. var kM = locArr[mz]; //координаты назначения
  627.  
  628. id1 = eval( 'locP.l' + cz + '_' + mz ) //id исключение
  629.  
  630. // если есть исключения, следующий сектор будет равен ид исключения
  631. if( id1 && id1 > 0 ) {
  632. nz = id1 ;
  633. }
  634.  
  635. // если исключения, то переназначаем координаты назначения
  636. if( nz != 0 ) var kM = locArr[nz] ;
  637.  
  638. tx = kM[1] > kC[1] ? 1 : ( kM[1] == kC[1] ? 0 : -1 ) ;
  639. ty = kM[2] > kC[2] ? 1 : ( kM[2] == kC[2] ? 0 : -1 ) ;
  640. nx = parseInt( kC[1] ) + tx ;
  641. ny = parseInt( kC[2] ) + ty ;
  642.  
  643. // t = ( ty == 0 || tx == 0 ) ? t + 120 : t + 169 ;
  644. t = ( ty == 0 || tx == 0 ) ? t + trtime[transp] : t + trtimed[transp] ;
  645. id = eval( 'locX.c' + nx + '_' + ny ) ;
  646. // t = t + ' ' + id + '(' + nz + ')' ;
  647.  
  648. return getTimeL( id , mz , t );
  649. }
  650.  
  651.  
  652. function viewPath() {
  653. mz = this.getAttribute( 'tz' ) ;
  654.  
  655. path( pl[0] , mz ) ;
  656. function path( cz , mz ) {
  657. if ( mz == cz ) return ;
  658. var nz = 0; // следующий сектор, к которому надо действительно двигаться
  659. var kC = locArr[cz]; //координаты текущие
  660. var kM = locArr[mz]; //координаты назначения
  661. id1 = eval( 'locP.l' + cz + '_' + mz ) //ID исключение
  662. // если есть исключения, следующий сектор будет равен id исключения
  663. if( id1 && id1 > 0 ) {
  664. nz = id1 ;
  665. }
  666.  
  667. // если исключения, то переназначаем координаты назначения
  668. if( nz != 0 ) var kM = locArr[nz] ;
  669. tx = kM[1] > kC[1] ? 1 : ( kM[1] == kC[1] ? 0 : -1 ) ;
  670. ty = kM[2] > kC[2] ? 1 : ( kM[2] == kC[2] ? 0 : -1 ) ;
  671. nx = parseInt( kC[1] ) + tx ;
  672. ny = parseInt( kC[2] ) + ty ;
  673. id = eval( 'locX.c' + nx + '_' + ny ) ;
  674.  
  675. td = $('loc_'+id)
  676. td.parentNode.style.backgroundColor = 'F0E68C' ;
  677. road[road.length] = id ;
  678. path( id , mz );
  679. }
  680. return ;
  681. }
  682.  
  683. function hidePath() {
  684. for( i = 0; i < road.length ; i ++ ) {
  685. $('loc_'+road[i]).parentNode.style.backgroundColor = 'DDD9CD' ;
  686. }
  687. road = new Array() ;
  688. }
  689.  
  690.  
  691. //+ закрытие форм
  692. function form_close() {
  693. bg = $('bgOverlay') ;
  694. bgc = $('bgCenter') ;
  695. if( bg ) {
  696. bg.style.display = bgc.style.display = 'none' ;
  697. }
  698. }
  699. //-
  700.  
  701.  
  702. //+ форма настроек
  703. function setting() {
  704. bg = $('bgOverlay') ;
  705. bgc = $('bgCenter') ;
  706. if( !bg ) {
  707. bg = document.createElement('div') ;
  708. bg.id = 'bgOverlay' ;
  709. document.body.appendChild( bg );
  710. bg.style.position = 'absolute' ;
  711. bg.style.left = '0';
  712. bg.style.width = '100%';
  713. bg.style.height = '100%';
  714. bg.style.background = "#000000";
  715. bg.style.opacity = "0.5";
  716. bg.addEventListener( "click", form_close , false );
  717.  
  718. bgc = document.createElement('div') ;
  719. bgc.id = 'bgCenter' ;
  720. document.body.appendChild( bgc );
  721. bgc.style.position = 'absolute' ;
  722. bgc.style.width = '400px';
  723. bgc.style.background = "#F6F3EA";
  724. bgc.style.left = ( ( document.body.offsetWidth - 400 ) / 2 ) + 'px' ;
  725. }
  726.  
  727. 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="Закрыть">x</div> <center><table> <tr><td><b>Настройки:</b></td></tr><tr><td><div><label style="cursor:pointer;"><input type="checkbox" id="id_check_vm"> Не отображать flash-карту</lable></div>' +
  728. '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_vs"> Отображать кнопки осмотра секторов</lable></div>' +
  729. '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_lng" title=""lng ru> Названия секторов по-русски</lable></div>' +
  730. '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gn"> Сдавать задания Гильдии Наёмников с дороги</lable></div>' +
  731. '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gv"> Автоматически вступать в бои Гильдии Рейнджеров</lable></div>' +
  732. '<div><label style="cursor:pointer;"><input type="checkbox" id="id_check_gvn"> Заходить в Гильдию Рейнджеров</lable></div><br><div>Ваш транспорт (<a href="http://www.heroeswm.ru/shop.php?cat=transport">транспорт в магазине</a>):<br><table><tr><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>' ;
  733.  
  734. $("transp"+transp).style.background="#0000ff";
  735. $("transp3").addEventListener( "click", function(){setTransport(3)} , false );
  736. $("transp4").addEventListener( "click", function(){setTransport(4)} , false );
  737. $("transp5").addEventListener( "click", function(){setTransport(5)} , false );
  738.  
  739. $("bt_close").addEventListener( "click", form_close , false );
  740.  
  741. var check_gv = $('id_check_gv')
  742. check_gv.checked = GM_getValue( "checkgv" , 0 ) == 1 ? 'checked' : '' ;
  743. check_gv.addEventListener( "click", function(){setCheck('checkgv')} , false );
  744.  
  745. var check_gvn = $('id_check_gvn')
  746. check_gvn.checked = GM_getValue( "checkgvn" , 0 ) == 1 ? 'checked' : '' ;
  747. check_gvn.addEventListener( "click", function(){setCheck('checkgvn')} , false );
  748.  
  749. var check_gn = $('id_check_gn')
  750. check_gn.checked = GM_getValue( "checkgn" , 0 ) == 1 ? 'checked' : '' ;
  751. check_gn.addEventListener( "click", function(){setCheck('checkgn')} , false );
  752.  
  753. var check_vm = $('id_check_vm')
  754. check_vm.checked = GM_getValue( "checkvm" , 0 ) == 1 ? 'checked' : '' ;
  755. check_vm.addEventListener( "click", function(){setCheck('checkvm')} , false );
  756.  
  757. var check_vs = $('id_check_vs')
  758. check_vs.checked = GM_getValue( "checkvs" , 0 ) == 1 ? 'checked' : '' ;
  759. check_vs.addEventListener( "click", function(){setCheck('checkvs')} , false );
  760.  
  761. var check_lng = $('id_check_lng') ;
  762. check_lng.checked = check_lng_v == 1 ? 'checked' : '' ;
  763. check_lng.addEventListener( "click", function(){setCheck('checklng')} , false );
  764.  
  765. bg.style.top = (-document.body.scrollTop)+'px';
  766. bgc.style.top = ( document.body.scrollTop + 100 ) + 'px';
  767. bg.style.display = bgc.style.display = 'block' ;
  768. }
  769. //-
  770.  
  771.  
  772. function getI( xpath ) {
  773. return document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
  774. }
  775.  
  776. function $( id ) { return document.getElementById( id ); }
  777.  
  778. function in_array(needle, haystack, strict) {
  779. var found = false, key, strict = !!strict;
  780. for (key in haystack) {
  781. if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
  782. found = true;
  783. break;
  784. }
  785. }
  786. return found;
  787. }
  788.  
  789. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址