Greasy Fork 支持简体中文。

PathCreator

Create path has never been so easy

目前為 2018-01-28 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name PathCreator
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.3.2
  5. // @description Create path has never been so easy
  6. // @author Drigtime
  7. // @match https://dofus-map.com/
  8. // @run-at document-idle
  9. // @require https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
  10. // @require https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js
  11. // @grant GM_setValue
  12. // @grant GM_getValue
  13. // ==/UserScript==
  14.  
  15. (function () {
  16. var icon = {
  17. top: {
  18. move: L.icon({
  19. iconUrl: 'https://svgshare.com/i/54N.svg',
  20. className: 'top-arrow'
  21. }),
  22. gather: L.icon({
  23. iconUrl: 'https://svgshare.com/i/556.svg',
  24. className: 'top-arrow'
  25. }),
  26. fight: L.icon({
  27. iconUrl: 'https://svgshare.com/i/53n.svg',
  28. className: 'top-arrow'
  29. }),
  30. bank: L.icon({
  31. iconUrl: 'https://svgshare.com/i/54G.svg',
  32. className: 'top-arrow'
  33. }),
  34. phoenix: L.icon({
  35. iconUrl: 'https://svgshare.com/i/54x.svg',
  36. className: 'top-arrow'
  37. }),
  38. },
  39. left: {
  40. move: L.icon({
  41. iconUrl: 'https://svgshare.com/i/54m.svg',
  42. className: 'left-arrow'
  43. }),
  44. gather: L.icon({
  45. iconUrl: 'https://svgshare.com/i/555.svg',
  46. className: 'left-arrow'
  47. }),
  48. fight: L.icon({
  49. iconUrl: 'https://svgshare.com/i/54H.svg',
  50. className: 'left-arrow'
  51. }),
  52. bank: L.icon({
  53. iconUrl: 'https://svgshare.com/i/54v.svg',
  54. className: 'left-arrow'
  55. }),
  56. phoenix: L.icon({
  57. iconUrl: 'https://svgshare.com/i/557.svg',
  58. className: 'left-arrow'
  59. }),
  60. },
  61. bottom: {
  62. move: L.icon({
  63. iconUrl: 'https://svgshare.com/i/51x.svg',
  64. className: 'bottom-arrow'
  65. }),
  66. gather: L.icon({
  67. iconUrl: 'https://svgshare.com/i/54b.svg',
  68. className: 'bottom-arrow'
  69. }),
  70. fight: L.icon({
  71. iconUrl: 'https://svgshare.com/i/54o.svg',
  72. className: 'bottom-arrow'
  73. }),
  74. bank: L.icon({
  75. iconUrl: 'https://svgshare.com/i/53x.svg',
  76. className: 'bottom-arrow'
  77. }),
  78. phoenix: L.icon({
  79. iconUrl: 'https://svgshare.com/i/54q.svg',
  80. className: 'bottom-arrow'
  81. }),
  82. },
  83. right: {
  84. move: L.icon({
  85. iconUrl: 'https://svgshare.com/i/53t.svg',
  86. className: 'right-arrow'
  87. }),
  88. gather: L.icon({
  89. iconUrl: 'https://svgshare.com/i/54p.svg',
  90. className: 'right-arrow'
  91. }),
  92. fight: L.icon({
  93. iconUrl: 'https://svgshare.com/i/527.svg',
  94. className: 'right-arrow'
  95. }),
  96. bank: L.icon({
  97. iconUrl: 'https://svgshare.com/i/54w.svg',
  98. className: 'right-arrow'
  99. }),
  100. phoenix: L.icon({
  101. iconUrl: 'https://svgshare.com/i/543.svg',
  102. className: 'right-arrow'
  103. }),
  104. },
  105. havenbag: {
  106. move: L.icon({
  107. iconUrl: 'https://svgshare.com/i/58M.svg',
  108. className: 'havenbag-icon'
  109. }),
  110. gather: L.icon({
  111. iconUrl: 'https://svgshare.com/i/58N.svg',
  112. className: 'havenbag-icon'
  113. }),
  114. fight: L.icon({
  115. iconUrl: 'https://svgshare.com/i/5BW.svg',
  116. className: 'havenbag-icon'
  117. }),
  118. bank: L.icon({
  119. iconUrl: 'https://svgshare.com/i/5BL.svg',
  120. className: 'havenbag-icon'
  121. }),
  122. phoenix: L.icon({
  123. iconUrl: 'https://svgshare.com/i/5BB.svg',
  124. className: 'havenbag-icon'
  125. }),
  126. }
  127. };
  128.  
  129. function preloader() {
  130. if (document.images) {
  131. var img1 = new Image();
  132. var img2 = new Image();
  133. var img3 = new Image();
  134. var img4 = new Image();
  135. var img5 = new Image();
  136. var img6 = new Image();
  137. var img7 = new Image();
  138. var img8 = new Image();
  139. var img9 = new Image();
  140. var img10 = new Image();
  141. var img11 = new Image();
  142. var img12 = new Image();
  143. var img13 = new Image();
  144. var img14 = new Image();
  145. var img15 = new Image();
  146. var img16 = new Image();
  147. var img17 = new Image();
  148. var img18 = new Image();
  149. var img19 = new Image();
  150. var img20 = new Image();
  151. var img21 = new Image();
  152. var img22 = new Image();
  153. var img23 = new Image();
  154. var img24 = new Image();
  155. var img25 = new Image();
  156.  
  157. img1.src = "https://svgshare.com/i/54N.svg";
  158. img2.src = "https://svgshare.com/i/54m.svg";
  159. img3.src = "https://svgshare.com/i/51x.svg";
  160. img4.src = "https://svgshare.com/i/53t.svg";
  161. img5.src = "https://svgshare.com/i/556.svg";
  162. img6.src = "https://svgshare.com/i/555.svg";
  163. img7.src = "https://svgshare.com/i/54b.svg";
  164. img8.src = "https://svgshare.com/i/54p.svg";
  165. img9.src = "https://svgshare.com/i/53n.svg";
  166. img10.src = "https://svgshare.com/i/54H.svg";
  167. img11.src = "https://svgshare.com/i/54o.svg";
  168. img12.src = "https://svgshare.com/i/527.svg";
  169. img13.src = "https://svgshare.com/i/54G.svg";
  170. img14.src = "https://svgshare.com/i/54w.svg";
  171. img15.src = "https://svgshare.com/i/54v.svg";
  172. img16.src = "https://svgshare.com/i/53x.svg";
  173. img17.src = "https://svgshare.com/i/54x.svg";
  174. img18.src = "https://svgshare.com/i/557.svg";
  175. img19.src = "https://svgshare.com/i/54q.svg";
  176. img20.src = "https://svgshare.com/i/543.svg";
  177. img21.src = "https://svgshare.com/i/58M.svg";
  178. img22.src = "https://svgshare.com/i/58N.svg";
  179. img23.src = "https://svgshare.com/i/5BW.svg";
  180. img24.src = "https://svgshare.com/i/5BL.svg";
  181. img25.src = "https://svgshare.com/i/5BB.svg";
  182. }
  183. }
  184.  
  185. function addLoadEvent(func) {
  186. var oldonload = window.onload;
  187. if (typeof window.onload != 'function') {
  188. window.onload = func;
  189. } else {
  190. window.onload = function () {
  191. if (oldonload) {
  192. oldonload();
  193. }
  194. func();
  195. };
  196. }
  197. }
  198. addLoadEvent(preloader);
  199.  
  200. var actualMap;
  201. var pathData = [];
  202. var bankData = [];
  203. var phenixData = [];
  204. var havenBagData = [];
  205.  
  206. var ressources = [
  207. [1, "Frêne"],
  208. [8, "Chêne"],
  209. [17, "Fer"],
  210. [24, "Argent"],
  211. [25, "Or"],
  212. [26, "Pierre de Bauxite"],
  213. [28, "If"],
  214. [29, "Ebène"],
  215. [30, "Orme"],
  216. [31, "Erable"],
  217. [32, "Charme"],
  218. [33, "Châtaignier"],
  219. [34, "Noyer"],
  220. [35, "Merisier"],
  221. [37, "Pierre de Kobalte"],
  222. [38, "Blé"],
  223. [39, "Houblon"],
  224. [42, "Lin"],
  225. [43, "Orge"],
  226. [44, "Seigle"],
  227. [45, "Avoine"],
  228. [46, "Chanvre"],
  229. [47, "Malt"],
  230. [48, "Tas de patates"],
  231. [52, "Etain"],
  232. [53, "Pierre Cuivrée"],
  233. [54, "Manganèse"],
  234. [55, "Bronze"],
  235. [61, "Edelweiss"],
  236. [63, "Froment"],
  237. [64, "Epeautre"],
  238. [65, "Sorgho"],
  239. [66, "Menthe Sauvage"],
  240. [67, "Trèfle à 5 feuilles"],
  241. [68, "Orchidée Freyesque"],
  242. [71, "Greuvette"],
  243. [72, "Somoon Agressif"],
  244. [73, "Pwoulpe"],
  245. [74, "Truite"],
  246. [75, "Goujon"],
  247. [76, "Poisson-Chaton"],
  248. [77, "Crabe"],
  249. [78, "Poisson Pané"],
  250. [79, "Carpe d'Iem"],
  251. [80, "Truite Vaseuse"],
  252. [81, "Sardine Brillante"],
  253. [82, "Coton"],
  254. [84, "Puits"],
  255. [98, "Bombu"],
  256. [99, "Ombre étrange"],
  257. [100, "Pichon"],
  258. [101, "Oliviolet"],
  259. [102, "Machine de force"],
  260. [104, "Koinkoin"],
  261. [108, "Bambou"],
  262. [109, "Bambou sombre"],
  263. [110, "Bambou sacré"],
  264. [111, "Riz"],
  265. [112, "Pandouille"],
  266. [113, "Dolomite"],
  267. [114, "Silicate"],
  268. [121, "Kaliptus"],
  269. [131, "Perce-neige"],
  270. [132, "Poisskaille"],
  271. [133, "Tremble"],
  272. [134, "Frostiz"],
  273. [135, "Obsidienne"],
  274. [136, "Coquillage"],
  275. [137, "Machine à coudre de Poss'Ybel"],
  276. [138, "Fabrique"],
  277. [141, "Établi de mauvaise qualité"],
  278. [142, "Machine à coudre de mauvaise qualité"],
  279. [143, "Machine à jouets"],
  280. [144, "Pressoir à poisson"],
  281. [146, "Paquet Cadeau"],
  282. [167, "Arène"],
  283. [168, "Banque"],
  284. [169, "Bar Akouda"],
  285. [170, "Bibliothèque"],
  286. [171, "Boutiques de Nowel"],
  287. [172, "Dojo"],
  288. [173, "Église"],
  289. [174, "Épicerie"],
  290. [175, "Fabricant de skis"],
  291. [176, "Hôtel de ville"],
  292. [177, "Hôtel des métiers"],
  293. [178, "Kanojedo"],
  294. [179, "Kolizéum"],
  295. [180, "Milice"],
  296. [181, "Médecin de Frigost"],
  297. [206, "Sous-marin Steamer"],
  298. [207, "Autel"],
  299. [208, "Krosmaster"],
  300. [219, "Métier d'Avenir"],
  301. [220, "Tonneau d'explosifs"],
  302. [221, "Fleur de Sutol"],
  303. [222, "Barbecue"],
  304. [223, "Cawotte fraîche"],
  305. [224, "Alambic patiné de l'hôtel des métiers"],
  306. [225, "Bouteille de Rhum"],
  307. [226, "Ascenseur"],
  308. [227, "Champignon"],
  309. [230, "Portail des Bworks"],
  310. [231, "Distributeur de missions"],
  311. [232, "Portail"],
  312. [234, "Glaçon"],
  313. [235, "Aller vers"],
  314. [236, "Pupitre"],
  315. [253, "Portail Eliotrope"],
  316. [254, "Ortie"],
  317. [255, "Sauge"],
  318. [256, "Ginseng"],
  319. [257, "Belladone"],
  320. [258, "Mandragore"],
  321. [259, "Noisetier"],
  322. [260, "Maïs"],
  323. [261, "Millet"],
  324. [262, "Bloc de pierre"],
  325. [263, "Brochet"],
  326. [264, "Kralamoure"],
  327. [265, "Anguille"],
  328. [266, "Dorade Grise"],
  329. [267, "Perche"],
  330. [268, "Raie"],
  331. [269, "Lotte"],
  332. [270, "Requin Marteau-Faucille"],
  333. [271, "Bar Rikain"],
  334. [272, "Morue"],
  335. [273, "Tanche"],
  336. [274, "Espadon"],
  337. [275, "Enclume de Mulic Bere"],
  338. [276, "Établi de Mulic Bere"],
  339. [278, "Assembleur de Mulic Bere"],
  340. [280, "Plate-forme Huppermage"],
  341. [281, "Trèfle à 4 feuilles"],
  342. [282, "Indiquer une sortie"],
  343. [283, "Chathon"],
  344. [284, "Escalier"],
  345. [285, "Porte blindée"],
  346. [287, "Aquajou"],
  347. [288, "Salikrone"],
  348. [289, "Quisnoa"],
  349. [290, "Patelle"],
  350. [291, "Écume de mer"],
  351. [293, "Écume de mer"],
  352. [294, "Aquajou"],
  353. [295, "Salikrone"],
  354. [296, "Quisnoa"],
  355. [297, "Patelle"],
  356. [299, "Œufs frais"]
  357. ];
  358. var picker = 4;
  359. var gatherData = [];
  360. var loadingFile = false;
  361. var havenToggle = false;
  362.  
  363. var css = document.createElement('style');
  364. css.type = 'text/css';
  365. css.textContent = 'body{font-family:"Open Sans",sans-serif!important;font-size:12px!important}#pathcreator{background:#212121;border-radius:5px;padding:10px;color:#fff;box-shadow:0 0 10px 0 rgba(0,0,0,0.6);font-family:arial;opacity:.95}.path-selector{padding-top:.5rem!important;padding-left:1rem!important;margin-right:0!important;margin-left:0!important}.no-gutters{margin-right:0!important;margin-left:0!important}.col-xs-6,.col-xs-12{padding-right:0!important;padding-left:0!important}.checkbox{padding-left:20px;margin-top:0!important;margin-bottom:5px!important}.checkbox label{display:inline-block;position:relative;padding-left:5px!important}.checkbox label::before{content:"";display:inline-block;position:absolute;width:17px;height:17px;left:0;margin-left:-20px;border:1px solid #ccc;border-radius:3px;background-color:#fff;-webkit-transition:border .15s ease-in-out,color .15s ease-in-out;-o-transition:border .15s ease-in-out,color .15s ease-in-out;transition:border .15s ease-in-out,color .15s ease-in-out}.checkbox label::after{display:inline-block;position:absolute;width:16px;height:16px;left:0;top:0;margin-left:-20px;padding-left:3px;padding-top:1px;font-size:11px;color:#555}.checkbox input[type="checkbox"]{opacity:0}.checkbox input[type="checkbox"]:checked + label::after{font-family:"FontAwesome";content:"\\f00c"}.checkbox input[type="checkbox"]:disabled + label{opacity:.65}.checkbox input[type="checkbox"]:disabled + label::before{background-color:#eee;cursor:not-allowed}.checkbox.checkbox-circle label::before{border-radius:50%}.checkbox.checkbox-inline{margin-top:0}.checkbox-primary input[type="checkbox"]:checked + label::before{background-color:#428bca;border-color:#428bca}.checkbox-primary input[type="checkbox"]:checked + label::after{color:#fff}.radio{padding-left:20px;margin-top:0!important;margin-bottom:5px!important}.radio label{display:inline-block;position:relative;padding-left:5px!important}.radio label::before{content:"";display:inline-block;position:absolute;width:17px;height:17px;left:0;margin-left:-20px;border:1px solid #ccc;border-radius:50%;background-color:#fff;-webkit-transition:border .15s ease-in-out;-o-transition:border .15s ease-in-out;transition:border .15s ease-in-out}.radio label::after{display:inline-block;position:absolute;content:" ";width:11px;height:11px;left:3px;top:3px;margin-left:-20px;border-radius:50%;background-color:#555;-webkit-transform:scale(0,0);-ms-transform:scale(0,0);-o-transform:scale(0,0);transform:scale(0,0);-webkit-transition:-webkit-transform .1s cubic-bezier(0.8,-0.33,0.2,1.33);-moz-transition:-moz-transform .1s cubic-bezier(0.8,-0.33,0.2,1.33);-o-transition:-o-transform .1s cubic-bezier(0.8,-0.33,0.2,1.33);transition:transform .1s cubic-bezier(0.8,-0.33,0.2,1.33)}.radio input[type="radio"]{opacity:0}.radio input[type="radio"]:checked + label::after{-webkit-transform:scale(1,1);-ms-transform:scale(1,1);-o-transform:scale(1,1);transform:scale(1,1)}.radio input[type="radio"]:disabled + label{opacity:.65}.radio input[type="radio"]:disabled + label::before{cursor:not-allowed}.radio.radio-inline{margin-top:0}.radio-primary input[type="radio"] + label::after{background-color:#428bca}.radio-primary input[type="radio"]:checked + label::before{border-color:#428bca}.radio-primary input[type="radio"]:checked + label::after{background-color:#428bca}.radio-danger input[type="radio"] + label::after{background-color:#d9534f}.radio-danger input[type="radio"]:checked + label::before{border-color:#d9534f}.radio-danger input[type="radio"]:checked + label::after{background-color:#d9534f}.radio-phenix input[type="radio"] + label::after,.radio-phenix input[type="radio"]:checked + label::after{background-color:#ab37c8}.radio-phenix input[type="radio"]:checked + label::before{border-color:#ab37c8}.radio-success input[type="radio"] + label::after{background-color:#5cb85c}.radio-success input[type="radio"]:checked + label::before{border-color:#5cb85c}.radio-success input[type="radio"]:checked + label::after{background-color:#5cb85c}.btn-flex{display:flex!important;align-items:stretch;align-content:stretch}.btn-flex .btn:first-child{flex-grow:1}.btn{outline:none!important}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover,.btn-dark:focus,.btn-dark:active,.btn-dark.active,.open .dropdown-toggle.btn-dark{color:#fff;background-color:#23272b;border-color:#343a40}.btn-dark:active,.btn-dark.active,.open .dropdown-toggle.btn-dark{background-image:none}.btn-dark.disabled,.btn-dark[disabled],fieldset[disabled] .btn-dark,.btn-dark.disabled:hover,.btn-dark[disabled]:hover,fieldset[disabled] .btn-dark:hover,.btn-dark.disabled:focus,.btn-dark[disabled]:focus,fieldset[disabled] .btn-dark:focus,.btn-dark.disabled:active,.btn-dark[disabled]:active,fieldset[disabled] .btn-dark:active,.btn-dark.disabled.active,.btn-dark[disabled].active,fieldset[disabled] .btn-dark.active{background-color:#343a40;border-color:#343a40}.btn-dark .badge{color:#343a40;background-color:#fff}.btn-flex{display:flex;align-items:stretch;align-content:stretch}.btn-flex .btn:first-child{flex-grow:1}.btn{outline:none!important}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover,.btn-dark:focus,.btn-dark:active,.btn-dark.active,.open .dropdown-toggle.btn-dark{color:#fff;background-color:#23272b;border-color:#343a40}.btn-dark:active,.btn-dark.active,.open .dropdown-toggle.btn-dark{background-image:none}.btn-dark.disabled,.btn-dark[disabled],fieldset[disabled] .btn-dark,.btn-dark.disabled:hover,.btn-dark[disabled]:hover,fieldset[disabled] .btn-dark:hover,.btn-dark.disabled:focus,.btn-dark[disabled]:focus,fieldset[disabled] .btn-dark:focus,.btn-dark.disabled:active,.btn-dark[disabled]:active,fieldset[disabled] .btn-dark:active,.btn-dark.disabled.active,.btn-dark[disabled].active,fieldset[disabled] .btn-dark.active{background-color:#343a40;border-color:#343a40}.btn-dark .badge{color:#343a40;background-color:#fff}#mapContainer[data-zoom="7"] .top-arrow{width:145px;margin-left:528.5px}#mapContainer[data-zoom="6"] .top-arrow{width:75px;margin-left:262.5px}#mapContainer[data-zoom="5"] .top-arrow{width:36px;margin-left:131.5px}#mapContainer[data-zoom="4"] .top-arrow{width:19px;margin-left:65.75px}#mapContainer[data-zoom="3"] .top-arrow{width:15px;margin-left:30.13px}#mapContainer[data-zoom="2"] .top-arrow{width:9.9px;margin-left:13.86px}#mapContainer[data-zoom="1"] .top-arrow{width:7px;margin-left:5.91px}#mapContainer[data-zoom="0"] .top-arrow{width:5.38px;margin-left:5.01px}#mapContainer[data-zoom="7"] .havenbag-icon{width:500.83px;margin-left:350.5833333px;margin-top:135.8px}#mapContainer[data-zoom="6"] .havenbag-icon{width:250px;margin-left:175px;margin-top:67.5px}#mapContainer[data-zoom="5"] .havenbag-icon{width:124.58px;margin-left:87.20833333px;margin-top:33.35px}#mapContainer[data-zoom="4"] .havenbag-icon{width:61.88px;margin-left:43.3125px;margin-top:16.28px}#mapContainer[data-zoom="3"] .havenbag-icon{width:30.52px;margin-left:21.36458333px;margin-top:7.74px}#mapContainer[data-zoom="2"] .havenbag-icon{width:14.84px;margin-left:10.390625px;margin-top:3.47px}#mapContainer[data-zoom="1"] .havenbag-icon{width:7.01px;margin-left:4.903645833px;margin-top:1.33px}#mapContainer[data-zoom="0"] .havenbag-icon{width:3.09px;margin-left:2.16015625px;margin-top:.27px}#mapContainer[data-zoom="7"] .left-arrow{width:324.26px;margin-top:356.5px}#mapContainer[data-zoom="6"] .left-arrow{width:161.59px;margin-top:177.75px}#mapContainer[data-zoom="5"] .left-arrow{width:80.53px;margin-top:88.38px}#mapContainer[data-zoom="4"] .left-arrow{width:40.13px;margin-top:44.19px}#mapContainer[data-zoom="3"] .left-arrow{width:30.87px;margin-top:19.34px}#mapContainer[data-zoom="2"] .left-arrow{width:23.75px;margin-top:7.42px}#mapContainer[data-zoom="1"] .left-arrow{width:18.27px;margin-top:1.86px}#mapContainer[data-zoom="0"] .left-arrow{width:14.05px;margin-top:1px}#mapContainer[data-zoom="7"] .right-arrow{width:324.26px;margin-left:878.74px;margin-top:356.5px}#mapContainer[data-zoom="6"] .right-arrow{width:161.59px;margin-left:439.41px;margin-top:177.75px}#mapContainer[data-zoom="5"] .right-arrow{width:80.53px;margin-left:219.47px;margin-top:88.38px}#mapContainer[data-zoom="4"] .right-arrow{width:40.13px;margin-left:110.37px;margin-top:44.19px}#mapContainer[data-zoom="3"] .right-arrow{width:30.87px;margin-left:43.38px;margin-top:19.34px}#mapContainer[data-zoom="2"] .right-arrow{width:23.75px;margin-left:12.88px;margin-top:7.42px}#mapContainer[data-zoom="1"] .right-arrow{width:18.27px;margin-left:1px;margin-top:1.86px}#mapContainer[data-zoom="0"] .right-arrow{width:14.05px;margin-left:1px;margin-top:1px}#mapContainer[data-zoom="7"] .bottom-arrow{width:145px;margin-left:528.5px;margin-top:648.2px}#mapContainer[data-zoom="6"] .bottom-arrow{width:75px;margin-left:262.5px;margin-top:319.5px}#mapContainer[data-zoom="5"] .bottom-arrow{width:36px;margin-left:131.5px;margin-top:160.91px}#mapContainer[data-zoom="4"] .bottom-arrow{width:19px;margin-left:65.75px;margin-top:78.02px}#mapContainer[data-zoom="3"] .bottom-arrow{width:15px;margin-left:30.13px;margin-top:31.09px}#mapContainer[data-zoom="2"] .bottom-arrow{width:9.9px;margin-left:13.86px;margin-top:11.59px}#mapContainer[data-zoom="1"] .bottom-arrow{width:7px;margin-left:5.91px;margin-top:3px}#mapContainer[data-zoom="0"] .bottom-arrow{width:5.38px;margin-left:5.01px;margin-top:0}#mapContainer[data-zoom="7"] .leaflet-popup{margin-left:601px}#mapContainer[data-zoom="6"] .leaflet-popup{margin-left:3005px}#mapContainer[data-zoom="5"] .leaflet-popup{margin-left:149.5px}#mapContainer[data-zoom="4"] .leaflet-popup{margin-left:74.25px}#mapContainer[data-zoom="3"] .leaflet-popup{margin-left:36.625px}#mapContainer[data-zoom="2"] .leaflet-popup{margin-left:17.8125px}#mapContainer[data-zoom="1"] .leaflet-popup{margin-left:8.40625px}#mapContainer[data-zoom="0"] .leaflet-popup{margin-left:3.703125px}';
  366. document.getElementsByTagName('head')[0].appendChild(css);
  367. var contenu = '';
  368. contenu = `
  369. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
  370. <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
  371. <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/flag-icon-css/2.9.0/css/flag-icon.css">
  372. <div id="pathcreator" class="container" style="width: 186px;">
  373. <div class="row no-gutters" style="text-align: right; margin-right: 0rem;">
  374. <div class="btn-group">
  375. <button type="button" class="btn dropdown-toggle btn-dark" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><div id="keyboardLayout" class="fa fa-keyboard-o"></div>
  376. </button>
  377. <ul class="dropdown-menu dropdown-menu-right">
  378. <li><a class="dropdown-item" href="#" id="azerty">
  379. <span class="fa fa-keyboard-o"></span> AZERTY</a></li>
  380. <li><a class="dropdown-item" href="#" id="qwerty">
  381. <span class="fa fa-keyboard-o"></span> QWERTY</a></li>
  382. </ul>
  383. </div>
  384. <div class="btn-group">
  385. <button type="button" class="btn dropdown-toggle btn-dark" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><div id="languageDisplayer" class="flag-icon flag-icon-fr"></div>
  386. </button>
  387. <ul class="dropdown-menu dropdown-menu-right">
  388. <li><a class="dropdown-item" href="#" id="fr">
  389. <span class="flag-icon flag-icon-fr"></span> Français</a></li>
  390. <li><a class="dropdown-item" href="#" id="en">
  391. <span class="flag-icon flag-icon-gb"></span> English</a></li>
  392. <li><a class="dropdown-item" href="#" id="es">
  393. <span class="flag-icon flag-icon-es"></span> Español</a></li>
  394. </ul>
  395. </div>
  396. </div>
  397. <div class="path-selector">
  398. <div class="row no-gutters">
  399. <div class="col-xs-6">
  400. <div class="checkbox checkbox-primary">
  401. <input type="checkbox" id="pathTop">
  402. <label id="top" for="pathTop">Haut</label>
  403. </div>
  404. </div>
  405. <div class="col-xs-6">
  406. <div class="checkbox checkbox-primary">
  407. <input type="checkbox" id="pathBottom">
  408. <label id="bottom" for="pathBottom">Bas</label>
  409. </div>
  410. </div>
  411. </div>
  412. <div class="row no-gutters">
  413. <div class="col-xs-6">
  414. <div class="checkbox checkbox-primary">
  415. <input type="checkbox" id="pathLeft">
  416. <label id="left" for="pathLeft">Gauche</label>
  417. </div>
  418. </div>
  419. <div class="col-xs-6">
  420. <div class="checkbox checkbox-primary">
  421. <input type="checkbox" id="pathRight">
  422. <label id="right" for="pathRight">Droite</label>
  423. </div>
  424. </div>
  425. </div>
  426. <div class="row no-gutters">
  427. <div class="col-xs-12">
  428. <div class="checkbox checkbox-primary">
  429. <input type="checkbox" id="pathHavenBag">
  430. <label id="havenBag" for="pathHavenBag">Havre-sac</label>
  431. </div>
  432. </div>
  433. </div>
  434. </div>
  435. <hr style="border-top: 3px solid #111;margin-top:7px;margin-bottom:7px;" />
  436. <form>
  437. <div class="path-selector">
  438. <div class="row no-gutters">
  439. <div class="col-xs-6">
  440. <div class="radio radio-success">
  441. <input type="radio" id="gather" name="radioOption">
  442. <label id="tdgather" for="gather">Recolte</label>
  443. </div>
  444. </div>
  445. <div class="col-xs-6">
  446. <div class="radio radio-danger">
  447. <input type="radio" id="fight" name="radioOption">
  448. <label id="tdfight" for="fight">Combat</label>
  449. </div>
  450. </div>
  451. </div>
  452. <div class="row no-gutters">
  453. <div class="col-xs-6">
  454. <div class="radio radio-primary">
  455. <input type="radio" id="bank" name="radioOption">
  456. <label id="tdbank" for="bank">Banque</label>
  457. </div>
  458. </div>
  459. <div class="col-xs-6">
  460. <div class="radio radio-phenix">
  461. <input type="radio" id="phenix" name="radioOption">
  462. <label id="tdphoenix" for="phenix">Phenix</label>
  463. </div>
  464. </div>
  465. </div>
  466. <div class="row no-gutters">
  467. <div class="col-xs-12">
  468. <div class="radio">
  469. <input type="radio" id="move" name="radioOption" checked>
  470. <label id="tdMove" for="move">Deplacement</label>
  471. </div>
  472. </div>
  473. </div>
  474. </div>
  475. </form>
  476. <hr style="border-top: 3px solid #111;margin-top:7px;margin-bottom:7px;" />
  477. <p style="text-align: center;" id="restogather">Ressources à récolter</p>
  478. <div id="ressourcePickerBot" style="text-align: center;"><span id="ressourcePickerCreator" class="pickRessource" style="background-color: #0000008a; background-position: -260px 0px;">+</span></div>
  479. <hr style="border-top: 3px solid #111;margin-top:7px;margin-bottom:7px;" />
  480. <div class="btn-group btn-flex" style="margin-bottom: .5rem">
  481. <button type="button" class="btn btn-dark" id="saveFile">Sauvegarder</button>
  482. <button type="button" class="btn btn-dark dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  483. <span class="caret"></span>
  484. </button>
  485. <div class="dropdown-menu dropdown-menu-right">
  486. <input type="text" style="color: black;" placeholder="Nom du trajet" id="fileName">
  487. </div>
  488. </div>
  489. <button class="btn btn-dark btn-block" id="deletePath">Supprimer</button>
  490. <label class="btn btn-dark btn-block btn-file"><div id="loadAFile">Charger</div><input id="file" type="file" style="display: none;">
  491. </label>
  492. </div>
  493. <!-- Modal -->
  494. <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" style="top: 300px;">
  495. <div class="modal-dialog" role="document">
  496. <div class="modal-content">
  497. <div class="modal-header">
  498. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  499. <h4 class="modal-title" id="myModalLabel">Zaap : </h4>
  500. </div>
  501. <div class="modal-body">
  502. <label>Zaap d'arrivée :</label>
  503. <select class="form-control" id="sel1">
  504. <option value='{"map": "4,-19", "mapid": "84674563"}'>Astrub | 4,-19</option>
  505. <option value='{"map": "-32,-56", "mapid": "147768"}'>Bonta | -32,-56</option>
  506. <option value='{"map": "-26,35", "mapid": "144419"}'>Brâkmar | -26,35</option>
  507. <option value='{"map": "-1,13", "mapid": "88212746"}'>Amakna (Bord de la forêt maléfique) | -1,13</option>
  508. <option value='{"map": "3,-5", "mapid": "68552706"}'>Amakna (Château d'Amakna) | 3,-5</option>
  509. <option value='{"map": "5,7", "mapid": "88082704"}'>Amakna (Coins des Bouftous) | 5,7</option>
  510. <option value='{"map": "7,-4", "mapid": "68419587"}'>Amakna (Port de Madrestam) | 7,-4</option>
  511. <option value='{"map": "-2,0", "mapid": "88213271"}'>Amakna (Village d'Amakna) | -2,0</option>
  512. <option value='{"map": "-1,24", "mapid": "88212481"}'>Amakna (Plaîne des Scarafeuilles) | -1,24</option>
  513. <option value='{"map": "10,22", "mapid": "88085249"}'>Baie de Sufokia (Rivage Sufokien) | 10,22</option>
  514. <option value='{"map": "13,26", "mapid": "95422468"}'>Baie de Sufokia (Sufokia) | 13,26</option>
  515. <option value='{"map": "-46,18", "mapid": "154642"}'le d'Otomaïl (Village côtier) | -46,18</option>
  516. <option value='{"map": "-79,-41", "mapid": "54172969"}'le de Frigost (La Bourgade) | -79,-41</option>
  517. <option value='{"map": "-77,-73", "mapid": "54172489"}'le de Frigost (Village enseveli) | -77,-73</option>
  518. <option value='{"map": "35,12", "mapid": "156762120"}'le de Moon (Plage de la Tortue) | 35,12</option>
  519. <option value='{"map": "-16,1", "mapid": "73400320"}'>Montagne des Koalaks (Village des Eleveurs) | -16,1</option>
  520. <option value='{"map": "26,-37", "mapid": "13605"}'>Pandala Neutre (Faubourgs de Pandala) | 26,-37</option>
  521. <option value='{"map": "29,-49", "mapid": "15153"}'>Pandala Feu (Village de Feudala) | 29,-49</option>
  522. <option value='{"map": "-27,-36", "mapid": "142087694"}'>Plaine de Cania (Champs de Cania) | -27,-36</option>
  523. <option value='{"map": "-3,-42", "mapid": "156240386"}'>Plaine de Cania (Lac de Cania) | -3,-42</option>
  524. <option value='{"map": "-13,-28", "mapid": "165152263"}'>Plaine de Cania (Massif de Cania) | -13,-28</option>
  525. <option value='{"map": "-5,-23", "mapid": "84806401"}'>Plaine de Cania (Plaine des Porkass) | -5,-23</option>
  526. <option value='{"map": "-17,-47", "mapid": "147590153"}'>Plaine de Cania (Plaines Rocheuses) | -17,-47</option>
  527. <option value='{"map": "-20,-20", "mapid": "164364304"}'>Plaine de Cania (Route Rocailleuse) | -20,-20</option>
  528. <option value='{"map": "15,-58", "mapid": "173278210"}'>Saharach (Dunes des ossements) | 15,-58</option>
  529. <option value='{"map": "-25,12", "mapid": "171967506"}'>Landes de Sidimote (Route des Roulottes) | -25,12</option>
  530. </select>
  531. </div>
  532. <div class="modal-footer">
  533. <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
  534. <button type="button" class="btn btn-primary">Valider</button>
  535. </div>
  536. </div>
  537. </div>
  538. </div>`;
  539. $('#pickRessourceContainer').append(contenu);
  540.  
  541.  
  542. function checkMaps(mapcoord, array) {
  543. for (let key = 0; key < array.length; key++) {
  544. if (array[key][0] == mapcoord) {
  545. return true;
  546. }
  547. }
  548. return false;
  549. }
  550.  
  551. function getMapIndex(mapcoord, array) {
  552. for (let key = 0; key < array.length; key++) {
  553. if (array[key][0] == mapcoord) {
  554. return key;
  555. }
  556. }
  557. }
  558.  
  559. function onMapClick() {
  560.  
  561. if (!loadingFile)
  562. actualMap = $('#mapCoordinates').text();
  563.  
  564. if ($('#pathHavenBag').is(":checked")) {
  565. $('#pathTop').prop('checked', false);
  566. $('#pathLeft').prop('checked', false);
  567. $('#pathBottom').prop('checked', false);
  568. $('#pathRight').prop('checked', false);
  569. if (!havenToggle) {
  570. if (!checkMaps(actualMap.split(', ')[0] + ',' + actualMap.split(', ')[1], havenBagData)) {
  571. havenToggle = true;
  572. $('#exampleModal').appendTo("body").modal('show');
  573. return;
  574. } else {
  575. havenBagData.splice(getMapIndex(actualMap.split(', ')[0] + ',' + actualMap.split(', ')[1], havenBagData), 1);
  576. }
  577. } else {
  578. havenToggle = false;
  579. }
  580. }
  581. if ($('#bank').is(":checked")) {
  582. if (!checkMaps(actualMap, bankData)) {
  583. if ($('#pathHavenBag').is(":checked")) {
  584. if (checkMaps(actualMap, pathData)) {
  585. removeArrow(getMapIndex(actualMap, pathData), pathData);
  586. deleteEmptyPath(pathData);
  587. return;
  588. } else if (checkMaps(actualMap, phenixData)) {
  589. removeArrow(getMapIndex(actualMap, phenixData), phenixData);
  590. deleteEmptyPath(phenixData);
  591. return;
  592. }
  593. }
  594. bankData.push([actualMap, false, undefined, false, undefined, false, undefined, false, undefined, false, undefined, false]);
  595. createMarker(getMapIndex(actualMap, bankData), bankData);
  596. deleteEmptyPath(bankData);
  597. } else {
  598. removeArrow(getMapIndex(actualMap, bankData), bankData);
  599. deleteEmptyPath(bankData);
  600. }
  601. console.clear();
  602. for (let key in bankData) {
  603. console.log(key + ', map : ' + bankData[key][0] + ', top : ' + bankData[key][1] + ', bottom : ' + bankData[key][5] + ', right : ' + bankData[key][7] + ', left : ' + bankData[key][3] + ', havenbag : ' + bankData[key][9]);
  604. }
  605. } else if ($('#phenix').is(":checked")) {
  606. if (!checkMaps(actualMap, phenixData)) {
  607. if ($('#pathHavenBag').is(":checked")) {
  608. if (checkMaps(actualMap, pathData)) {
  609. removeArrow(getMapIndex(actualMap, pathData), pathData);
  610. deleteEmptyPath(pathData);
  611. return;
  612. } else if (checkMaps(actualMap, bankData)) {
  613. removeArrow(getMapIndex(actualMap, bankData), bankData);
  614. deleteEmptyPath(bankData);
  615. return;
  616. }
  617. }
  618. phenixData.push([actualMap, false, undefined, false, undefined, false, undefined, false, undefined, false, undefined, false]);
  619. createMarker(getMapIndex(actualMap, phenixData), phenixData);
  620. deleteEmptyPath(phenixData);
  621. } else {
  622. removeArrow(getMapIndex(actualMap, phenixData), phenixData);
  623. deleteEmptyPath(phenixData);
  624. }
  625. console.clear();
  626. for (let key in phenixData) {
  627. console.log(key + ', map : ' + phenixData[key][0] + ', top : ' + phenixData[key][1] + ', bottom : ' + phenixData[key][5] + ', right : ' + phenixData[key][7] + ', left : ' + phenixData[key][3] + ', havenbag : ' + phenixData[key][9]);
  628. }
  629. } else {
  630. if (!checkMaps(actualMap, pathData)) {
  631. if ($('#pathHavenBag').is(":checked")) {
  632. if (checkMaps(actualMap, bankData)) {
  633. removeArrow(getMapIndex(actualMap, bankData), bankData);
  634. deleteEmptyPath(bankData);
  635. return;
  636. } else if (checkMaps(actualMap, phenixData)) {
  637. removeArrow(getMapIndex(actualMap, phenixData), phenixData);
  638. deleteEmptyPath(phenixData);
  639. return;
  640. }
  641. }
  642. pathData.push([actualMap, false, undefined, false, undefined, false, undefined, false, undefined, false, undefined, false, false]);
  643. createMarker(getMapIndex(actualMap, pathData), pathData);
  644. deleteEmptyPath(pathData);
  645. } else {
  646. removeArrow(getMapIndex(actualMap, pathData), pathData);
  647. deleteEmptyPath(pathData);
  648. }
  649. console.clear();
  650. for (let key in pathData) {
  651. console.log(key + ', map : ' + pathData[key][0] + ', top : ' + pathData[key][1] + ', bottom : ' + pathData[key][5] + ', right : ' + pathData[key][7] + ', left : ' + pathData[key][3] + ', havenbag : ' + pathData[key][9] + ', gather : ' + pathData[key][11] + ', fight : ' + pathData[key][12]);
  652. }
  653. }
  654. }
  655.  
  656. function deleteEmptyPath(array) {
  657. if (!array[getMapIndex(actualMap, array)][1] && !array[getMapIndex(actualMap, array)][3] && !array[getMapIndex(actualMap, array)][5] && !array[getMapIndex(actualMap, array)][7] && !array[getMapIndex(actualMap, array)][9]) {
  658. array.splice(getMapIndex(actualMap, array), 1);
  659. }
  660. }
  661.  
  662. function removeArrow(key, array) {
  663. removeArrowWay(key, array, "pathTop", 2, "top", 1);
  664. removeArrowWay(key, array, "pathLeft", 4, "left", 3);
  665. removeArrowWay(key, array, "pathBottom", 6, "bottom", 5);
  666. removeArrowWay(key, array, "pathRight", 8, "right", 7);
  667. removeArrowWay(key, array, "pathHavenBag", 10, "havenbag", 9);
  668. }
  669.  
  670. function removeArrowWay(key, array, className, wayMarker, iconType, wayToggle) {
  671. if ($('#' + className).is(":checked")) {
  672. if (array[key][wayMarker] !== undefined) {
  673. array[key][wayToggle] = false;
  674. map.removeLayer(array[key][wayMarker]);
  675. array[key][wayMarker] = undefined;
  676. } else createMarkerWay(key, array, className, wayMarker, iconType, wayToggle);
  677. }
  678. }
  679.  
  680. function createMarker(key, array) {
  681. createMarkerWay(key, array, "pathTop", 2, "top", 1);
  682. createMarkerWay(key, array, "pathLeft", 4, "left", 3);
  683. createMarkerWay(key, array, "pathBottom", 6, "bottom", 5);
  684. createMarkerWay(key, array, "pathRight", 8, "right", 7);
  685. createMarkerWay(key, array, "pathHavenBag", 10, "havenbag", 9);
  686. }
  687.  
  688. function createMarkerWay(key, array, className, wayMarker, iconType, wayToggle) {
  689. if ($('#' + className).is(":checked")) {
  690. if ($('#gather').is(":checked")) {
  691. if (iconType == "havenbag") {
  692. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1]), {
  693. interactive: true,
  694. zIndexOffset: 5000,
  695. icon: icon[iconType].gather
  696. }).addTo(map).bindPopup('Téléportation au zaap map : ' + havenBagData[havenBagData.length - 1][1] + ' | mapID : ' + havenBagData[havenBagData.length - 1][2]);
  697. } else {
  698. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1]), {
  699. interactive: false,
  700. zIndexOffset: 5000,
  701. icon: icon[iconType].gather
  702. }).addTo(map);
  703. }
  704. array[key][11] = true;
  705. } else if ($('#fight').is(":checked")) {
  706. if (iconType == "havenbag") {
  707. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1]), {
  708. interactive: true,
  709. zIndexOffset: 5000,
  710. icon: icon[iconType].fight
  711. }).addTo(map).bindPopup('Téléportation au zaap map : ' + havenBagData[havenBagData.length - 1][1] + ' | mapID : ' + havenBagData[havenBagData.length - 1][2]);
  712. } else {
  713. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1]), {
  714. interactive: false,
  715. zIndexOffset: 5000,
  716. icon: icon[iconType].fight
  717.  
  718. }).addTo(map);
  719. }
  720. array[key][12] = true;
  721. } else if ($('#bank').is(":checked")) {
  722. if (iconType == "right" || iconType == "left") {
  723. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1] * 1 + (0.2)), {
  724. interactive: false,
  725. zIndexOffset: 4500,
  726. icon: icon[iconType].bank
  727. }).addTo(map);
  728. } else if (iconType == "top" || iconType == "bottom") {
  729. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0] * 1 + (0.1), actualMap.split(", ")[1]), {
  730. interactive: false,
  731. zIndexOffset: 4500,
  732. icon: icon[iconType].bank
  733. }).addTo(map);
  734. } else if (iconType == "havenbag") {
  735. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1]), {
  736. interactive: true,
  737. zIndexOffset: 5000,
  738. icon: icon[iconType].bank
  739. }).addTo(map).bindPopup('Téléportation au zaap map : ' + havenBagData[havenBagData.length - 1][1] + ' | mapID : ' + havenBagData[havenBagData.length - 1][2]);
  740. }
  741. array[key][11] = true;
  742. } else if ($('#phenix').is(":checked")) {
  743. if (iconType == "right" || iconType == "left") {
  744. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1] * 1 - (0.2)), {
  745. interactive: false,
  746. zIndexOffset: 4000,
  747. icon: icon[iconType].phoenix
  748. }).addTo(map);
  749. } else if (iconType == "top" || iconType == "bottom") {
  750. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0] * 1 - (0.1), actualMap.split(", ")[1]), {
  751. interactive: false,
  752. zIndexOffset: 4000,
  753. icon: icon[iconType].phoenix
  754. }).addTo(map);
  755. } else if (iconType == "havenbag") {
  756. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1]), {
  757. interactive: true,
  758. zIndexOffset: 5000,
  759. icon: icon[iconType].phoenix
  760. }).addTo(map).bindPopup('Téléportation au zaap map : ' + havenBagData[havenBagData.length - 1][1] + ' | mapID : ' + havenBagData[havenBagData.length - 1][2]);
  761. }
  762. array[key][11] = true;
  763. } else {
  764. if (iconType == "havenbag") {
  765. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1]), {
  766. interactive: true,
  767. zIndexOffset: 5000,
  768. icon: icon[iconType].move
  769. }).addTo(map).bindPopup('Téléportation au zaap map : ' + havenBagData[havenBagData.length - 1][1] + ' | mapID : ' + havenBagData[havenBagData.length - 1][2]);
  770. } else {
  771. array[key][wayMarker] = L.marker(dofusXYToMapXY(actualMap.split(", ")[0], actualMap.split(", ")[1]), {
  772. interactive: false,
  773. zIndexOffset: 5000,
  774. icon: icon[iconType].move
  775. }).addTo(map);
  776. }
  777. }
  778. array[key][wayToggle] = true;
  779. }
  780. }
  781.  
  782. function newRessourcePicker() {
  783. $('#ressourcePickerBot').prepend('<span id="pickRessource' + picker + '" class="pickRessource ressourceColor1" onclick="clickOnTypePicker(\'' + picker + '\');" data-name="" data-ressourceid=""' +
  784. 'style="background-position: -260px 0px; line-height: 49px !important; width: 49px !important; margin: 2px !important; height: 49px !important;">?</span>');
  785. gatherData.push('pickRessource' + picker);
  786. picker += 1;
  787. }
  788.  
  789. function pathGenerator(index, array) {
  790. var path = "";
  791. if (index !== undefined) {
  792. if (array.length !== 0) {
  793. if (array[index][9])
  794. path = "havenbag";
  795. else {
  796. if (array[index][1])
  797. path = "top";
  798. if (array[index][5])
  799. path += (path === "" ? "" : "|") + "bottom";
  800. if (array[index][3])
  801. path += (path === "" ? "" : "|") + "left";
  802. if (array[index][7])
  803. path += (path === "" ? "" : "|") + "right";
  804. }
  805. return path;
  806. }
  807. }
  808. }
  809.  
  810. function afterPhenix(map) {
  811. for (let index = 0; index < pathData.length; index++) {
  812. if (map == pathData[index][0]) {
  813. return index;
  814. }
  815. }
  816. }
  817.  
  818. function gatherFigh(index) {
  819. var path = "";
  820. if (pathData[index][11])
  821. path = ", gather = true";
  822. if (pathData[index][12])
  823. path += ", fight = true";
  824. return path;
  825. }
  826.  
  827. function addGather() {
  828. let res = "";
  829. for (let index = 0; index < gatherData.length; index++) {
  830. let str = $('#' + gatherData[index]).outerHTML;
  831. let regex = /data-name=\"(.*?)\"/g;
  832. let matche = regex.exec(str);
  833. for (let i = 0; i < ressources.length; i++) {
  834. if (ressources[i][1] == matche[1]) {
  835. res += '\t' + ressources[i][0] + ',' + ' -- ' + ressources[i][1] + '\r\n';
  836. }
  837. }
  838. }
  839. return res;
  840. }
  841.  
  842. function havenbagCheck(option) {
  843. for (let index = 0; index < havenBagData.length; index++) {
  844. if (havenBagData[index][option]) {
  845. return true;
  846. }
  847. }
  848. return false;
  849. }
  850.  
  851. function generate() {
  852. var firstIf = false;
  853. var txt = "-- Generated On Dofus-Map with Drigtime's SwiftPath Script Maker --\r\n";
  854. txt += "GATHER = {\r\n";
  855. txt += addGather();
  856. txt += "} -- Les éléments à récolter\r\n" +
  857. "OPEN_BAGS = true -- Ouvrir les sacs de ressources au fur et à mesure\r\n" +
  858. "AUTO_DELETE = { } -- Les éléments à supprimer\r\n\r\n" +
  859. "MAX_MONSTERS = 8 -- Le nombre maximum de monstres dans un groupe à combattre.\r\n" +
  860. "MIN_MONSTERS = 1 -- Le nombre minimum de monstres dans un groupe à combattre.\r\n\r\n" +
  861. "FORBIDDEN_MONSTERS = { } -- Monstres interdits\r\n" +
  862. "FORCE_MONSTERS = { } -- Monstres obligatoires\r\n\r\n" +
  863. "MAX_COMBAT = 800 -- Nombre de combats maximum\r\n" +
  864. "\r\nfunction move()\r\n";
  865. if (havenbagCheck(3)) {
  866. txt += "\tif map:onMap(\"0,0\") then\r\n";
  867. firstIf = false;
  868. for (let index = 0; index < havenBagData.length; index++) {
  869. if (havenBagData[index][3]) {
  870. if (!firstIf) {
  871. txt += "\t\tif actualMap == \"" + havenBagData[index][0] + "\" then\r\n\t\t\tmap:changeMap(\"zaap(" + havenBagData[index][2] + ")\")\r\n";
  872. firstIf = true;
  873. } else
  874. txt += "\t\telseif actualMap == \"" + havenBagData[index][0] + "\" then\r\n\t\t\tmap:changeMap(\"zaap(" + havenBagData[index][2] + ")\")\r\n";
  875. }
  876. }
  877. txt += "\t\tend\r\n" +
  878. "\telse\r\n" +
  879. "\t\tactualMap = map:currentMap()\r\n" +
  880. "\tend\r\n";
  881. }
  882. txt += "\treturn {\r\n" +
  883. "\t\t{map = \"83887104\", path = \"396\"}, --Interieur banque Astrub vers Sortie--\r\n" +
  884. "\t\t{map = \"54534165\", path = \"424\"}, --Interieur banque Frigost vers Sortie--\r\n" +
  885. "\t\t{map = \"2885641\", path = \"424\"}, --Interieur banque Bonta vers Sortie--\r\n" +
  886. "\t\t{map = \"99095051\", path = \"410\"}, --Interieur banque Amakna vers Sortie--\r\n" +
  887. "\t\t{map = \"8912911\", path = \"424\"}, --Interieur banque Brakmar vers Sortie--\r\n" +
  888. "\t\t{map = \"91753985\", path = \"396\"}, --Interieur banque Sufokia vers Sortie--\r\n" +
  889. "\t\t{map = \"86511105\", door = \"452\"}, --Interieur banque Ottomaï vers Sortie--\r\n" +
  890. "\t\t{map = \"8129542\", path = \"409\"}, --Interieur banque Pandala vers Sortie--\r\n" +
  891. "\t\t{map = \"84935175\", path = \"425\"}, --Interieur banque Montagne Koalak vers Sortie--\r\n";
  892. for (let key in pathData) {
  893. txt += '\t\t{map = "' + pathData[key][0].replace(" ", "") + '", path = "' + pathGenerator(key, pathData) + '"' + gatherFigh(key) + '},\r\n';
  894. }
  895. txt += "\t}\r\nend\r\n\r\nfunction bank()\r\n";
  896. if (havenbagCheck(4)) {
  897. txt += "\tif map:onMap(\"0,0\") then\r\n";
  898. firstIf = false;
  899. for (let index = 0; index < havenBagData.length; index++) {
  900. if (havenBagData[index][4]) {
  901. if (!firstIf) {
  902. txt += "\t\tif actualMap == \"" + havenBagData[index][0] + "\" then\r\n\t\t\tmap:changeMap(\"zaap(" + havenBagData[index][2] + ")\")\r\n";
  903. firstIf = true;
  904. } else
  905. txt += "\t\telseif actualMap == \"" + havenBagData[index][0] + "\" then\r\n\t\t\tmap:changeMap(\"zaap(" + havenBagData[index][2] + ")\")\r\n";
  906. }
  907. }
  908. txt += "\t\tend\r\n" +
  909. "\telse\r\n" +
  910. "\t\tactualMap = map:currentMap()\r\n" +
  911. "\tend\r\n";
  912. }
  913. txt += "\treturn {\r\n";
  914. for (let key in bankData) {
  915. txt += '\t\t{map = "' + bankData[key][0].replace(" ", "") + '", path = "' + pathGenerator(key, bankData) + '"},\r\n';
  916. }
  917. txt += "\t\t{map = \"84674566\", door = \"303\"}, --Devant banque Astrub--\r\n" +
  918. "\t\t{map = \"83887104\", path = \"396\", npcBank = true}, --Banque Astrub--\r\n" +
  919. "\t\t{map = \"54172457\", door = \"358\"}, --Devant banque Frigost--\r\n" +
  920. "\t\t{map = \"54534165\", path = \"424\", npcBank = true}, --Banque Frigost--\r\n" +
  921. "\t\t{map = \"147254\", door = \"383\"}, --Devant banque Bonta--\r\n" +
  922. "\t\t{map = \"2885641\", path = \"424\", npcBank = true}, --Banque Bonta--\r\n" +
  923. "\t\t{map = \"88081177\", door = \"216\"}, --Devant banque Amakna--\r\n" +
  924. "\t\t{map = \"99095051\", path = \"410\", npcBank = true}, --Banque Amakna--\r\n" +
  925. "\t\t{map = \"144931\", door = \"248\"}, --Devant banque Brakmar--\r\n" +
  926. "\t\t{map = \"8912911\", path = \"424\", npcBank = true}, --Banque Brakmar--\r\n" +
  927. "\t\t{map = \"90703872\", door = \"302\"}, --Devant banque Sufokia --\r\n" +
  928. "\t\t{map = \"91753985\", path = \"494\", npcBank = true}, --Banque Sufokia--\r\n" +
  929. "\t\t{map = \"155157\", door = \"355\"}, --Devant banque Ottomaï--\r\n" +
  930. "\t\t{map = \"86511105\", door = \"452\", npcBank = true}, --Banque Ottomaï--\r\n" +
  931. "\t\t{map = \"12580\", door = \"284\"}, --Devant banque Pandala--\r\n" +
  932. "\t\t{map = \"8129542\", path = \"409\", npcBank = true}, --Banque Pandala--\r\n" +
  933. "\t\t{map = \"73400323\", door = \"330\"}, --Devant banque Montagne Koalak--\r\n" +
  934. "\t\t{map = \"84935175\", path = \"425\", npcBank = true}, --Banque Montagne Koalak--\r\n\t}\r\nend\r\n" +
  935. "\r\n\r\nfunction phenix()\r\n";
  936. if (havenbagCheck(5)) {
  937. txt += "\tif map:onMap(\"0,0\") then\r\n";
  938. firstIf = false;
  939. for (let index = 0; index < havenBagData.length; index++) {
  940. if (havenBagData[index][5]) {
  941. if (!firstIf) {
  942. txt += "\t\tif actualMap == \"" + havenBagData[index][0] + "\" then\r\n\t\t\tmap:changeMap(\"zaap(" + havenBagData[index][2] + ")\")\r\n";
  943. firstIf = true;
  944. } else
  945. txt += "\t\telseif actualMap == \"" + havenBagData[index][0] + "\" then\r\n\t\t\tmap:changeMap(\"zaap(" + havenBagData[index][2] + ")\")\r\n";
  946. }
  947. }
  948. txt += "\t\tend\r\n" +
  949. "\telse\r\n" +
  950. "\t\tactualMap = map:currentMap()\r\n" +
  951. "\tend\r\n";
  952. }
  953. txt += "\treturn {\r\n";
  954. for (let key in phenixData) {
  955. txt += '\t\t{map = "' + phenixData[key][0].replace(" ", "") + '", path = "' + pathGenerator(key, phenixData) + '"},\r\n';
  956. }
  957. txt += "\t\t{map = \"12,12\", phenix = \"184\", path = \"" + pathGenerator(afterPhenix("12, 12"), pathData) + "\"},\r\n" +
  958. "\t\t{map = \"7,36\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("7, 36"), pathData) + "\"},\r\n" +
  959. "\t\t{map = \"22,22\", phenix = \"272\", path = \"" + pathGenerator(afterPhenix("22, 22"), pathData) + "\"},\r\n" +
  960. "\t\t{map = \"10,19\", phenix = \"192\", path = \"" + pathGenerator(afterPhenix("10, 19"), pathData) + "\"},\r\n" +
  961. "\t\t{map = \"5,1\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("5, 1"), pathData) + "\"},\r\n" +
  962. "\t\t{map = \"2,-1\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("2, -1"), pathData) + "\"},\r\n" +
  963. "\t\t{map = \"13,-7\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("13, -7"), pathData) + "\"},\r\n" +
  964. "\t\t{map = \"5,-9\", phenix = \"116\", path = \"" + pathGenerator(afterPhenix("5, -9"), pathData) + "\"},\r\n" +
  965. "\t\t{map = \"2,-12\", phenix = \"272\", path = \"" + pathGenerator(afterPhenix("2, -12"), pathData) + "\"},\r\n" +
  966. "\t\t{map = \"-6,-12\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-6, -12"), pathData) + "\"},\r\n" +
  967. "\t\t{map = \"36,10\", phenix = \"330\", path = \"" + pathGenerator(afterPhenix("36, 10"), pathData) + "\"},\r\n" +
  968. "\t\t{map = \"25,-4\", phenix = \"450\", path = \"" + pathGenerator(afterPhenix("25, -4"), pathData) + "\"},\r\n" +
  969. "\t\t{map = \"27,-33\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("27, -33"), pathData) + "\"},\r\n" +
  970. "\t\t{map = \"24,-43\", phenix = \"245\", path = \"" + pathGenerator(afterPhenix("24, -43"), pathData) + "\"},\r\n" +
  971. "\t\t{map = \"17,-36\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("17, -36"), pathData) + "\"},\r\n" +
  972. "\t\t{map = \"-13,-29\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-13, -29"), pathData) + "\"},\r\n" +
  973. "\t\t{map = \"-10,-54\", phenix = \"342\", path = \"" + pathGenerator(afterPhenix("-10, -54"), pathData) + "\"},\r\n" +
  974. "\t\t{map = \"-33,-56\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-33, -56"), pathData) + "\"},\r\n" +
  975. "\t\t{map = \"-10,13\", phenix = \"354\", path = \"" + pathGenerator(afterPhenix("-10, 13"), pathData) + "\"},\r\n" +
  976. "\t\t{map = \"-14,31\", phenix = \"243\", path = \"" + pathGenerator(afterPhenix("-14, 31"), pathData) + "\"},\r\n" +
  977. "\t\t{map = \"-26,34\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-26, 34"), pathData) + "\"},\r\n" +
  978. "\t\t{map = \"-26,36\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-26, 36"), pathData) + "\"},\r\n" +
  979. "\t\t{map = \"-55,40\", phenix = \"240\", path = \"" + pathGenerator(afterPhenix("-55, 40"), pathData) + "\"},\r\n" +
  980. "\t\t{map = \"-58,18\", phenix = \"354\", path = \"" + pathGenerator(afterPhenix("-58, 18"), pathData) + "\"},\r\n" +
  981. "\t\t{map = \"-60,-3\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-60, -3"), pathData) + "\"},\r\n" +
  982. "\t\t{map = \"-43,0\", phenix = \"259\", path = \"" + pathGenerator(afterPhenix("-43, 0"), pathData) + "\"},\r\n" +
  983. "\t\t{map = \"-41,-17\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-41, -17"), pathData) + "\"},\r\n" +
  984. "\t\t{map = \"-43,-19\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-43, -19"), pathData) + "\"},\r\n" +
  985. "\t\t{map = \"-53,-40\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-53, -40"), pathData) + "\"},\r\n" +
  986. "\t\t{map = \"-67,-44\", phenix = \"219\", path = \"" + pathGenerator(afterPhenix("-67 ,-44"), pathData) + "\"},\r\n" +
  987. "\t\t{map = \"-60,-79\", phenix = \"0\", path = \"" + pathGenerator(afterPhenix("-60, -79"), pathData) + "\"}\r\n\t}\r\nend\r\n";
  988.  
  989. saveTextAsFile(txt);
  990. }
  991.  
  992. function saveTextAsFile(txt) {
  993. var textToSaveAsBlob = new Blob([txt], {
  994. type: "text/plain"
  995. });
  996. var textToSaveAsURL = window.URL.createObjectURL(textToSaveAsBlob);
  997. var fileNameToSaveAs;
  998. if ($('#fileName').val() == "") fileNameToSaveAs = "Trajet.lua";
  999. else fileNameToSaveAs = $('#fileName').val() + ".lua";
  1000. var downloadLink = document.createElement("a");
  1001. downloadLink.download = fileNameToSaveAs;
  1002. downloadLink.innerHTML = "Download File";
  1003. downloadLink.href = textToSaveAsURL;
  1004. downloadLink.style.display = "none";
  1005. document.body.appendChild(downloadLink);
  1006. downloadLink.click();
  1007. }
  1008.  
  1009. function deletePath() {
  1010. for (let index = 0; index < pathData.length; index) {
  1011. if (pathData[index][2]) map.removeLayer(pathData[index][2]);
  1012. if (pathData[index][4]) map.removeLayer(pathData[index][4]);
  1013. if (pathData[index][6]) map.removeLayer(pathData[index][6]);
  1014. if (pathData[index][8]) map.removeLayer(pathData[index][8]);
  1015. if (pathData[index][10]) map.removeLayer(pathData[index][10]);
  1016. pathData.splice(index, 1);
  1017. }
  1018. for (let index = 0; index < bankData.length; index) {
  1019. if (bankData[index][2]) map.removeLayer(bankData[index][2]);
  1020. if (bankData[index][4]) map.removeLayer(bankData[index][4]);
  1021. if (bankData[index][6]) map.removeLayer(bankData[index][6]);
  1022. if (bankData[index][8]) map.removeLayer(bankData[index][8]);
  1023. if (bankData[index][10]) map.removeLayer(bankData[index][10]);
  1024. bankData.splice(index, 1);
  1025. }
  1026. for (let index = 0; index < phenixData.length; index) {
  1027. if (phenixData[index][2]) map.removeLayer(phenixData[index][2]);
  1028. if (phenixData[index][4]) map.removeLayer(phenixData[index][4]);
  1029. if (phenixData[index][6]) map.removeLayer(phenixData[index][6]);
  1030. if (phenixData[index][8]) map.removeLayer(phenixData[index][8]);
  1031. if (phenixData[index][10]) map.removeLayer(phenixData[index][10]);
  1032. phenixData.splice(index, 1);
  1033. }
  1034. console.clear();
  1035. }
  1036.  
  1037. function languageSelector(params) {
  1038. switch (params) {
  1039. case "fr":
  1040. $('#top').empty().append('Haut');
  1041. $('#bottom').empty().append('Bas');
  1042. $('#left').empty().append('Gauche');
  1043. $('#right').empty().append('Droite');
  1044. $('#havenBag').empty().append('Havre-sac');
  1045. $('#tdgather').empty().append('Récolte');
  1046. $('#tdfight').empty().append('Combat');
  1047. $('#tdbank').empty().append('Banque');
  1048. $('#tdphoenix').empty().append('Phenix');
  1049. $('#tdMove').empty().append('Deplacement');
  1050. $('#restogather').empty().append('Ressources à récolter :');
  1051. $('#saveFile').empty().append('Sauvegarder');
  1052. $('#fileName').attr('placeholder', 'Nom du fichier');
  1053. $('#deletePath').empty().append('Supprimer');
  1054. $('#loadAFile').empty().append('Charger');
  1055. $('#languageDisplayer').addClass('flag-icon-fr');
  1056. $('#languageDisplayer').removeClass('flag-icon-es');
  1057. $('#languageDisplayer').removeClass('flag-icon-gb');
  1058. GM_setValue("language", "fr");
  1059. break;
  1060. case "en":
  1061. $('#top').empty().append('Top');
  1062. $('#bottom').empty().append('Bottom');
  1063. $('#left').empty().append('Left');
  1064. $('#right').empty().append('Right');
  1065. $('#havenBag').empty().append('Haven bag');
  1066. $('#tdgather').empty().append('Gather');
  1067. $('#tdfight').empty().append('Fight');
  1068. $('#tdbank').empty().append('Bank');
  1069. $('#tdphoenix').empty().append('Phoenix');
  1070. $('#tdMove').empty().append('Move');
  1071. $('#restogather').empty().append('Resources to gather :');
  1072. $('#saveFile').empty().append('Save');
  1073. $('#fileName').attr('placeholder', 'Name of the file');
  1074. $('#deletePath').empty().append('Delete');
  1075. $('#loadAFile').empty().append('Load');
  1076. $('#languageDisplayer').removeClass('flag-icon-fr');
  1077. $('#languageDisplayer').removeClass('flag-icon-es');
  1078. $('#languageDisplayer').addClass('flag-icon-gb');
  1079. GM_setValue("language", "en");
  1080. break;
  1081. case "es":
  1082. $('#top').empty().append('Arriba');
  1083. $('#bottom').empty().append('Abajo');
  1084. $('#left').empty().append('Izquierda');
  1085. $('#right').empty().append('Derecho');
  1086. $('#havenBag').empty().append('Merkasako');
  1087. $('#tdgather').empty().append('Cosecha');
  1088. $('#tdfight').empty().append('Lucha');
  1089. $('#tdbank').empty().append('Banco');
  1090. $('#tdphoenix').empty().append('Fénix');
  1091. $('#tdMove').empty().append('Desplazamiento');
  1092. $('#restogather').empty().append('Recursos para cosechar :');
  1093. $('#saveFile').empty().append('Salvar');
  1094. $('#fileName').attr('placeholder', 'Nombre del archivo');
  1095. $('#deletePath').empty().append('Borrar');
  1096. $('#loadAFile').empty().append('Carga');
  1097. $('#languageDisplayer').removeClass('flag-icon-fr');
  1098. $('#languageDisplayer').addClass('flag-icon-es');
  1099. $('#languageDisplayer').removeClass('flag-icon-gb');
  1100. GM_setValue("language", "es");
  1101. break;
  1102. default:
  1103. $('#top').empty().append('Haut');
  1104. $('#bottom').empty().append('Bas');
  1105. $('#left').empty().append('Gauche');
  1106. $('#right').empty().append('Droite');
  1107. $('#tdgather').empty().append('Récolte');
  1108. $('#tdfight').empty().append('Combat');
  1109. $('#tdbank').empty().append('Banque');
  1110. $('#tdphoenix').empty().append('Phenix');
  1111. $('#tdMove').empty().append('Deplacement');
  1112. $('#restogather').empty().append('Ressources à récolter :');
  1113. $('#saveFile').empty().append('Sauvegarder');
  1114. $('#fileName').attr('placeholder', 'Nom du fichier');
  1115. $('#deletePath').empty().append('Supprimer');
  1116. $('#loadAFile').empty().append('Charger');
  1117. $('#languageDisplayer').addClass('flag-icon-fr');
  1118. $('#languageDisplayer').removeClass('flag-icon-es');
  1119. $('#languageDisplayer').removeClass('flag-icon-gb');
  1120. GM_setValue("language", "fr");
  1121. break;
  1122. }
  1123. }
  1124. languageSelector(GM_getValue("language"));
  1125.  
  1126. $('#file').change(function () {
  1127. var file = this.files[0];
  1128. var content;
  1129. var reader = new FileReader();
  1130. reader.onload = function (progressEvent) {
  1131. // Entire file
  1132. content = this.result;
  1133. let regexPath = /function move\(\)[\s\S]+?return.*?{\r\n([\s\S]+?)}\r\n.*end/g;
  1134. let regexBank = /function bank\(\)[\s\S]+?return.*?{\r\n([\s\S]+?)}\r\n.*end/g;
  1135. let regexPhenix = /function phenix\(\)[\s\S]+?return.*?{\r\n([\s\S]+?)}\r\n.*end/g;
  1136. let result;
  1137. let matche = regexBank.exec(content);
  1138. loadingFile = true;
  1139. $('#pathTop').prop('checked', false);
  1140. $('#pathLeft').prop('checked', false);
  1141. $('#pathBottom').prop('checked', false);
  1142. $('#pathRight').prop('checked', false);
  1143. $('#pathHavenBag').prop('checked', false);
  1144. if (matche !== null) {
  1145. result = matche[1];
  1146. result = result.split('\r\n');
  1147. for (let index = 0; index < result.length; index++) {
  1148. matche = /map.?=.?"(.*?)"/g.exec(result[index]);
  1149. if (matche !== null) actualMap = matche[1];
  1150. actualMap = actualMap.replace(/,/g, ", ");
  1151. if (/(-|)[0-9]+?,\s(-|)[0-9]+?/g.exec(actualMap)) {
  1152. matche = /top/g.exec(result[index]);
  1153. if (matche !== null) $('#pathTop').prop('checked', true);
  1154. matche = /left/g.exec(result[index]);
  1155. if (matche !== null) $('#pathLeft').prop('checked', true);
  1156. matche = /bottom/g.exec(result[index]);
  1157. if (matche !== null) $('#pathBottom').prop('checked', true);
  1158. matche = /right/g.exec(result[index]);
  1159. if (matche !== null) $('#pathRight').prop('checked', true);
  1160. $('#bank').prop('checked', true);
  1161. onMapClick();
  1162. $('#pathTop').prop('checked', false);
  1163. $('#pathLeft').prop('checked', false);
  1164. $('#pathBottom').prop('checked', false);
  1165. $('#pathRight').prop('checked', false);
  1166. }
  1167. }
  1168. }
  1169. matche = regexPath.exec(content);
  1170. if (matche !== null) {
  1171. result = matche[1];
  1172. result = result.split('\r\n');
  1173. for (let index = 0; index < result.length; index++) {
  1174. matche = /map.?=.?"(.*?)"/g.exec(result[index]);
  1175. if (matche !== null) actualMap = matche[1];
  1176. actualMap = actualMap.replace(/,/g, ", ");
  1177. if (/(-|)[0-9]+?,\s(-|)[0-9]+?/g.exec(actualMap)) {
  1178. matche = /top/g.exec(result[index]);
  1179. if (matche !== null) $('#pathTop').prop('checked', true);
  1180. matche = /left/g.exec(result[index]);
  1181. if (matche !== null) $('#pathLeft').prop('checked', true);
  1182. matche = /bottom/g.exec(result[index]);
  1183. if (matche !== null) $('#pathBottom').prop('checked', true);
  1184. matche = /right/g.exec(result[index]);
  1185. if (matche !== null) $('#pathRight').prop('checked', true);
  1186. matche = /gather/g.exec(result[index]);
  1187. if (matche !== null) $('#gather').prop('checked', true);
  1188. matche = /fight/g.exec(result[index]);
  1189. if (matche !== null) $('#fight').prop('checked', true);
  1190. onMapClick();
  1191. $('#pathTop').prop('checked', false);
  1192. $('#pathLeft').prop('checked', false);
  1193. $('#pathBottom').prop('checked', false);
  1194. $('#pathRight').prop('checked', false);
  1195. $('#gather').prop('checked', false);
  1196. $('#fight').prop('checked', false);
  1197. }
  1198. }
  1199. }
  1200. matche = regexPhenix.exec(content);
  1201. if (matche !== null) {
  1202. result = matche[1];
  1203. result = result.split('\r\n');
  1204. for (let index = 0; index < result.length; index++) {
  1205. matche = /map.?=.?"(.*?)"/g.exec(result[index]);
  1206. if (matche !== null) actualMap = matche[1];
  1207. actualMap = actualMap.replace(/,/g, ", ");
  1208. if (/(-|)[0-9]+?,\s(-|)[0-9]+?/g.exec(actualMap)) {
  1209. matche = /top/g.exec(result[index]);
  1210. if (matche !== null) $('#pathTop').prop('checked', true);
  1211. matche = /left/g.exec(result[index]);
  1212. if (matche !== null) $('#pathLeft').prop('checked', true);
  1213. matche = /bottom/g.exec(result[index]);
  1214. if (matche !== null) $('#pathBottom').prop('checked', true);
  1215. matche = /right/g.exec(result[index]);
  1216. if (matche !== null) $('#pathRight').prop('checked', true);
  1217. $('#phenix').prop('checked', true);
  1218. onMapClick();
  1219. $('#pathTop').prop('checked', false);
  1220. $('#pathLeft').prop('checked', false);
  1221. $('#pathBottom').prop('checked', false);
  1222. $('#pathRight').prop('checked', false);
  1223. }
  1224. }
  1225. }
  1226. $('#move').prop('checked', true);
  1227. loadingFile = false;
  1228. };
  1229. reader.readAsText(file);
  1230. });
  1231.  
  1232. $(document).keypress(function (evt) {
  1233. var keyCode = evt.key;
  1234. if (GM_getValue("keyboardLayout", "azerty") == "azerty") {
  1235. switch (keyCode) {
  1236. case "z":
  1237. if (!$('#pathTop').is(":checked"))
  1238. $('#pathTop').prop('checked', true);
  1239. else
  1240. $('#pathTop').prop('checked', false);
  1241. break;
  1242. case "q":
  1243. if (!$('#pathLeft').is(":checked"))
  1244. $('#pathLeft').prop('checked', true);
  1245. else
  1246. $('#pathLeft').prop('checked', false);
  1247. break;
  1248. case "s":
  1249. if (!$('#pathBottom').is(":checked"))
  1250. $('#pathBottom').prop('checked', true);
  1251. else
  1252. $('#pathBottom').prop('checked', false);
  1253. break;
  1254. case "d":
  1255. if (!$('#pathRight').is(":checked"))
  1256. $('#pathRight').prop('checked', true);
  1257. else
  1258. $('#pathRight').prop('checked', false);
  1259. break;
  1260. case "a":
  1261. if (!$('#pathHavenBag').is(":checked"))
  1262. $('#pathHavenBag').prop('checked', true);
  1263. else
  1264. $('#pathHavenBag').prop('checked', false);
  1265. break;
  1266. default:
  1267. break;
  1268. }
  1269. } else if (GM_getValue("keyboardLayout", "azerty") == "qwerty") {
  1270. switch (keyCode) {
  1271. case "w":
  1272. if (!$('#pathTop').is(":checked"))
  1273. $('#pathTop').prop('checked', true);
  1274. else
  1275. $('#pathTop').prop('checked', false);
  1276. break;
  1277. case "a":
  1278. if (!$('#pathLeft').is(":checked"))
  1279. $('#pathLeft').prop('checked', true);
  1280. else
  1281. $('#pathLeft').prop('checked', false);
  1282. break;
  1283. case "s":
  1284. if (!$('#pathBottom').is(":checked"))
  1285. $('#pathBottom').prop('checked', true);
  1286. else
  1287. $('#pathBottom').prop('checked', false);
  1288. break;
  1289. case "d":
  1290. if (!$('#pathRight').is(":checked"))
  1291. $('#pathRight').prop('checked', true);
  1292. else
  1293. $('#pathRight').prop('checked', false);
  1294. break;
  1295. case "q":
  1296. if (!$('#pathHavenBag').is(":checked"))
  1297. $('#pathHavenBag').prop('checked', true);
  1298. else
  1299. $('#pathHavenBag').prop('checked', false);
  1300. break;
  1301. default:
  1302. break;
  1303. }
  1304. }
  1305. });
  1306.  
  1307. $('#exampleModal').on('click', '.btn-primary', function () {
  1308. let e = $('#sel1 option:selected');
  1309. var objMap = JSON.parse(e.val());
  1310. if ($('#move').is(":checked") || $('#gather').is(":checked") || $('#fight').is(":checked"))
  1311. havenBagData.push([actualMap.split(", ")[0] + "," + actualMap.split(", ")[1], objMap.map, objMap.mapid, true, false, false]);
  1312. else if ($('#bank').is(":checked"))
  1313. havenBagData.push([actualMap.split(", ")[0] + "," + actualMap.split(", ")[1], objMap.map, objMap.mapid, false, true, false]);
  1314. else if ($('#phenix').is(":checked"))
  1315. havenBagData.push([actualMap.split(", ")[0] + "," + actualMap.split(", ")[1], objMap.map, objMap.mapid, false, false, true]);
  1316. $('#exampleModal').modal('hide');
  1317. onMapClick();
  1318. });
  1319. $('#exampleModal').on('click', '.btn-secondary', function () {
  1320. havenToggle = false;
  1321. $('#exampleModal').modal('hide');
  1322. });
  1323. $('#exampleModal').on('click', '.close', function () {
  1324. havenToggle = false;
  1325. $('#exampleModal').modal('hide');
  1326. });
  1327.  
  1328. function LMap() {
  1329. if (map) {
  1330. map.on('click', onMapClick);
  1331. } else {
  1332. setTimeout(function () {
  1333. LMap();
  1334. }, 50);
  1335. }
  1336. }
  1337. LMap();
  1338.  
  1339. $('#saveFile').on("click", generate);
  1340. $('#ressourcePickerCreator').on("click", newRessourcePicker);
  1341. $('#deletePath').on("click", deletePath);
  1342. $('#fr').on("click", function () {
  1343. languageSelector("fr");
  1344. });
  1345. $('#en').on("click", function () {
  1346. languageSelector("en");
  1347. });
  1348. $('#es').on("click", function () {
  1349. languageSelector("es");
  1350. });
  1351. $('#azerty').on("click", function () {
  1352. GM_setValue("keyboardLayout", "azerty");
  1353. });
  1354. $('#qwerty').on("click", function () {
  1355. GM_setValue("keyboardLayout", "qwerty");
  1356. });
  1357. })();