HWM Map Move

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

目前为 2015-11-20 提交的版本,查看 最新版本

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