Advertisement
Guest User

Untitled

a guest
Aug 31st, 2019
442
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.29 KB | None | 0 0
  1. // ==UserScript==
  2. // @name AntyPing 200
  3. // @version 1.88
  4. // @description Bot z przechodzeniem przez mapki
  5. // @author Adi Wilk
  6. // @match http://*.margonem.pl/
  7. // @grant none
  8. // ==/UserScript==
  9. window.adiwilkTestBot = new function () {
  10.  
  11. const newNpcOldCopyAf = preNewNpc;
  12. preNewNpc = function (npcs) {
  13. for (var npc in npcs) {
  14. if (
  15. npcs[npc].del &&
  16. g.npc[npc] &&
  17. Math.abs(hero.x - g.npc[npc].x) + Math.abs(hero.y - g.npc[npc].y) > 13
  18. ) {
  19. delete npcs[npc];
  20. }
  21. }
  22. newNpcOldCopyAf(npcs);
  23. };
  24.  
  25. //wylaczenie alertów i blokad, chwilowe rozwiazanie
  26. mAlert = function () {};
  27. if (
  28. typeof g == "undefined" &&
  29. document.location.href.indexOf("jaruna.margonem.pl") > -1
  30. ) {
  31. document.location.reload();
  32. }
  33. //obiekt z nazwami expowisk
  34. let expowiska = {
  35. "Pizzeria(wszystkie levele)": {
  36. map: "Podziemia - p.1, Podziemia - p.2, Odnoga kanalu, Podziemia - p.1, Podziemia - p.3, Podziemia - p.1, Odnoga kanalu, Podziemia - p.2"
  37. },
  38. "Szczury w Ithan": {
  39. map: "Archiwa, Zaplecze, Sklady, Przejscie pólnocno-wschodnie, Wschodnie skrzydlo murów, Przejscie poludniowo-wschodnie, Wschodnie skrzydlo murów, Przejscie pólnocno-wschodnie, Sklady, Zaplecze"
  40. },
  41. Nekropolia: {
  42. map: "Grobowiec Rodziny Tywelta p.1, Grobowiec Rodziny Tywelta p.2"
  43. },
  44. Demony: {
  45. map: "Podziemia Siedziby Maga p.3 - sala 1, Podziemia Siedziby Maga p.3 - sala 2"
  46. },
  47. "Gacki szare": {
  48. map: "Siedlisko Nietoperzy p.5, Siedlisko Nietoperzy p.4, Siedlisko Nietoperzy p.3, Siedlisko Nietoperzy p.2, Siedlisko Nietoperzy p.1, Siedlisko Nietoperzy p.2, Siedlisko Nietoperzy p.3, Siedlisko Nietoperzy p.4"
  49. },
  50. Mrówki: {
  51. map: "Kopiec Mrówek, Kopiec Mrówek p.1, Kopiec Mrówek p.2, Mrowisko p.2, Mrowisko p.1, Mrowisko, Mrowisko p.1, Mrowisko p.2, Kopiec Mrówek p.2, Kopiec Mrówek p.1"
  52. },
  53. Mulusy: {
  54. map: "Osada Mulusów, Pradawne Wzgórze Przodków"
  55. },
  56. Orki: {
  57. map: "Opuszczony Bastion, Podziemne Przejscie p.1, Podziemne Przejscie p.2, Zrujnowana Wieza, Opuszczony Bastion, Zrujnowana Wieza, Podziemne Przejscie p.2, Podziemne Przejscie p.1"
  58. },
  59. Ghule: {
  60. map: "Polana Scierwojadów, Wioska Ghuli"
  61. },
  62. "Wilcze plemie": {
  63. map: "Warczace Osuwiska, Wilcza Nora p.1, Wilcza Nora p.2, Wilcza Nora p.1",
  64. mobs_id: [71698]
  65. },
  66. Pajaki: {
  67. map: "Rachminowa Jaskinia p.5, Rachminowa Jaskinia p.6 - rozlewisko, Rachminowa Jaskinia p.7 - bezdenna glebia, Rachminowa Jaskinia p.6 - rozlewisko"
  68. },
  69. Koboldy: {
  70. map: "Lazurytowa Grota p.1, Lazurytowa Grota p.2, Lazurytowa Grota p.3, Lazurytowa Grota p.2"
  71. },
  72. "Galaretki(te za pszczólkami)": {
  73. map: "Prastara Kopalnia Eroch p.4 - sala 1, Prastara Kopalnia Eroch p.5"
  74. },
  75. "Szlak Thorpa": {
  76. map: "Szlak Thorpa p.1, Szlak Thorpa p.2, Szlak Thorpa p.3, Szlak Thorpa p.4, Szlak Thorpa p.5, Szlak Thorpa p.6, Szlak Thorpa p.5, Szlak Thorpa p.4, Szlak Thorpa p.3, Szlak Thorpa p.2"
  77. },
  78. "Biale mrówki": {
  79. map: "Szumiaca Gestwina, Grota Bialych Kosci p.1 - sala 2, Grota Bialych Kosci p.2 - sala 2, Grota Bialych Kosci p.3 - sala 2, Grota Bialych Kosci p.4, Grota Bialych Kosci p.3 - sala 1, Grota Bialych Kosci p.4, Grota Bialych Kosci p.3 - sala 2, Grota Bialych Kosci p.2 - sala 2, Grota Bialych Kosci p.1 - sala 2"
  80. },
  81. "Moje demilsze": {
  82. map: "Kopalnia Thudul-ultok p.4 - sala 2, Kopalnia Thudul-ultok p.4 - sala 1, Kopalnia Thudul-ultok p.4 - sala 2, Chodniki Erebeth p.4 - sala 2, Chodniki Erebeth p.4 - sala 1, Chodniki Erebeth p.4 - sala 2"
  83. },
  84. "Demilisze-low": {
  85. map: "Rachminowa Jaskinia p.3, Rachminowa Jaskinia p.4, Rachminowa Jaskinia p.4 - przepascie, Waski chodnik p.4, Chodniki Erebeth p.4 - sala 1, Chodniki Erebeth p.4 - sala 2, Chodniki Erebeth p.4 - sala 1, Waski chodnik p.4, Rachminowa Jaskinia p.4 - przepascie, Rachminowa Jaskinia p.4"
  86. },
  87. "Demilisze-high": {
  88. map: "Rachminowa Jaskinia p.4 - przepascie, Waski chodnik p.4, Chodniki Erebeth p.4 - sala 1, Chodniki Erebeth p.4 - sala 2, Kopalnia Thudul-ultok p.4 - sala 2, Kopalnia Thudul-ultok p.4 - sala 1, Kopalnia Thudul-ultok p.4 - sala 2, Chodniki Erebeth p.4 - sala 1, Waski chodnik p.4"
  89. },
  90. Minosy: {
  91. map: "Labirynt Wykletych p.2 - sala 1, Labirynt Wykletych p.1, Labirynt Wykletych p.2 - sala 2, Labirynt Wykletych p.1",
  92. ignore_grp: [23]
  93. },
  94. "Erem pólnoc-poludnie": {
  95. map: "Erem Czarnego Slonca - sala wejsciowa, Erem Czarnego Slonca p.1 s.1, Erem Czarnego Slonca - sala wejsciowa, Erem Czarnego Slonca p.2 s.1, Erem Czarnego Slonca p.2 s.2, Erem Czarnego Slonca - sala wejsciowa, Erem Czarnego Slonca p.1 s.2, Erem Czarnego Slonca - sala wejsciowa, Skaly Mroznych Spiewów, Erem Czarnego Slonca - poludnie, Erem Czarnego Slonca - lochy, Erem Czarnego Slonca - pólnoc, Skaly Mroznych Spiewów",
  96. mobs_id: [34826]
  97. },
  98. Grexy: {
  99. map: "Grota Samotnych Dusz p.1, Grota Samotnych Dusz p.2, Grota Samotnych Dusz p.3, Grota Samotnych Dusz p.4, Grota Samotnych Dusz p.5, Grota Samotnych Dusz p.4, Grota Samotnych Dusz p.3, Grota Samotnych Dusz p.2"
  100. },
  101. "Miski-low": {
  102. map: "Firnowa Grota p.1, Firnowa Grota p.2, Firnowa Grota p.2 s.1, Firnowa Grota p.2, Skaly Mroznych Spiewów, Lodowa Wyrwa p.2, Lodowa Wyrwa p.1 s.1, Skaly Mroznych Spiewów",
  103. mobs_id: [34843, 34826]
  104. },
  105. "Miski-high": {
  106. map: "Firnowa Grota p.1, Firnowa Grota p.2, Firnowa Grota p.2 s.1, Firnowa Grota p.2, Skaly Mroznych Spiewów, Lodowa Wyrwa p.2, Lodowa Wyrwa p.1 s.1, Lodowa Wyrwa p.1 s.2, Sala Lodowych Iglic, Lodowa Wyrwa p.1 s.2, Lodowa Wyrwa p.1 s.1, Skaly Mroznych Spiewów",
  107. mobs_id: [34843, 34826]
  108. },
  109. "Piraci - dwie jaskinie": {
  110. map: "Korsarska Nora - sala 1, Korsarska Nora - sala 2, Korsarska Nora - sala 3, Korsarska Nora - sala 4, Korsarska Nora p.1, Korsarska Nora - przejscie 2, Korsarska Nora - przejscie 3, Korsarska Nora p.2, Korsarska Nora - przejscie 3, Korsarska Nora - przejscie 2, Korsarska Nora - przejscie 1, Korsarska Nora p.2, Korsarska Nora - przejscie 1, Korsarska Nora - przejscie 2, Korsarska Nora p.2, Korsarska Nora - przejscie 2, Korsarska Nora p.1, Korsarska Nora - sala 4, Korsarska Nora - sala 3, Korsarska Nora - sala 2, Korsarska Nora - sala 1, Latarniane Wybrzeze, Ukryta Grota Morskich Diablów, Ukryta Grota Morskich Diablów - arsenal, Ukryta Grota Morskich Diablów, Ukryta Grota Morskich Diablów - siedziba, Ukryta Grota Morskich Diablów, Ukryta Grota Morskich Diablów - magazyn, Ukryta Grota Morskich Diablów, Ukryta Grota Morskich Diablów - skarbiec, Ukryta Grota Morskich Diablów, Latarniane Wybrzeze"
  111. },
  112. Mumie: {
  113. map: "Oaza Siedmiu Wichrów, Ciche Rumowiska, Oaza Siedmiu Wichrów, Ruiny Pustynnych Burz"
  114. },
  115. "Magradit-low": {
  116. map: "Magradit, Magradit - Góra Ognia, Wulkan Politraki p.4, Wulkan Politraki p.3 - sala 1, Wulkan Politraki p.3 - sala 2, Wulkan Politraki p.3 - sala 1, Wulkan Politraki p.4, Magradit - Góra Ognia"
  117. },
  118. "Magradit-high": {
  119. map: "Magradit, Magradit - Góra Ognia, Wulkan Politraki p.4, Skalna Wyrwa, Wulkan Politraki p.4, Wulkan Politraki p.3 - sala 1, Wulkan Politraki p.3 - sala 2, Wulkan Politraki p.3 - sala 1, Wulkan Politraki p.4, Skalna wyrwa, Magradit - Góra Ognia",
  120. ignore_grp: [4]
  121. },
  122. "Czerwone Orki": {
  123. map: "Orcza Wyzyna, Osada Czerwonych Orków, Siedziba Rady Orków"
  124. },
  125. "Kuznia Woundriela": {
  126. map: "Kuznia Worundriela p.7 - sala 3, Kuznia Worundriela p.7 - sala 4"
  127. },
  128. Berserkerzy: {
  129. map: "Grobowiec Przodków, Cenotaf Berserkerów p.1, Grobowiec Przodków, Czarcie Oparzeliska, Pustelnia Wojownika p.2, Pustelnia Wojownika p.1, Czarcie Oparzeliska, Szuwarowe Trzesawisko, Opuszczona Twierdza, Szuwarowe Trzesawisko, Czarcie Oparzeliska, Pustelnia Wojownika p.1, Pustelnia Wojownika p.2, Czarcie Oparzeliska, Grobowiec Przodków, Cenotaf Berserkerów p.1"
  130. },
  131. Gobliny: {
  132. map: "Przedsionek Zlych Goblinów, Goblinskie Lokum, Przedsionek Zlych Goblinów, Lokum Zlych Goblinów"
  133. },
  134. Kazamaty: {
  135. map: "Nawiedzone Kazamaty p.1, Nawiedzone Kazamaty p.2, Nawiedzone Kazamaty p.3, Nawiedzone Kazamaty p.4, Nawiedzone Kazamaty p.5, Nawiedzone Kazamaty p.6, Nawiedzone Kazamaty p.5, Nawiedzone Kazamaty p.4, Nawiedzone Kazamaty p.3, Nawiedzone Kazamaty p.2"
  136. },
  137. "Duchy - dla leszczy": {
  138. map: "Ruiny Tass Zhil, Przedsionek Grobowca, Ruiny Tass Zhil, Blota Sham Al",
  139. ignore_grp: [18]
  140. },
  141. "Duchy - dla koxów": {
  142. map: "Ruiny Tass Zhil, Przedsionek Grobowca, Tajemne Przejscie, Przeklety Grobowiec, Ruiny Tass Zhil, Blota Sham Al"
  143. },
  144. Ogry: {
  145. map: "Ogrza Kawerna p.1, Ogrza Kawerna p.2, Ogrza Kawerna p.3, Ogrza Kawerna p.2, Ogrza Kawerna p.1",
  146. ignore_grp: []
  147. },
  148. Ingotia: {
  149. map: "Wyspa Ingotia - poludnie, Jaskinia Rogoglowych - aula, Sala Nici Ocalenia p.6, Sala Bialego Byka p.5, Sala Nici Ocalenia p.6, Komnata Przekletego Daru p.5, Jaskinia Rogoglowych - aula, Sala Zadzy p.5, Hala Odszczepienców p.4, Sala Zadzy p.5, Komora Opuszczonych p.3, Jaskinia Rogoglowych - aula, Komnata Wygnanców p.3, Komora Budowniczego p.5, Komnata Wygnanców p.3, Jaskinia Rogoglowych p.2, Jaskinia Rogoglowych - aula, Jaskinia Rogoglowych p.1 - wyjscie, Wyspa Ingotia - pólnoc, Jaskinia Rogoglowych p.1 - wyjscie, Jaskinia Rogoglowych - aula, Jaskinia Rogoglowych p.2, Komnata Wygnanców p.3, Komora Budowniczego p.5, Komnata Wygnanców p.3, Jaskinia Rogoglowych - aula, Komora Opuszczonych p.3, Sala Zadzy p.5, Hala Odszczepienców p.4, Sala Zadzy p.5, Jaskinia Rogoglowych - aula, Komnata Przekletego Daru p.5, Sala Nici Ocalenia p.6, Sala Bialego Byka p.5, Sala Nici Ocalenia p.6, Jaskinia Rogoglowych - aula"
  150. },
  151. Furby: {
  152. map: "Zapomniany Las, Rozlegla Równina, Wzgórza Obledu, Rozlegla Równina, Dolina Gniewu, Terytorium Furii, Zapadlisko Zniewolonych, Terytorium Furii,Dolina Gniewu, Zalana Grota p.1, Dolina Gniewu, Rozlegla Równina",
  153. ignore_grp: []
  154. },
  155. Driady: {
  156. map: "Gran Gawronich Piór, Gvar Hamryd, Rozlewisko Kai, Gvar Hamryd1, Rozlewisko Kai1, Gvar Hamryd, Gran Gawronich Piór",
  157. ignore_grp: []
  158. },
  159. "SK dla leszczy": {
  160. map: "Nawiedzone Komnaty p.1, Nawiedzone Komnaty p.2, Sala Królewska, Nawiedzone Komnaty p.2"
  161. },
  162. "SK dla koxów": {
  163. map: "Nawiedzone Komnaty p.1, Nawiedzone Komnaty p.2, Sala Królewska, Komnata Czarnej Perly, Sala Królewska, Nawiedzone Komnaty p.2",
  164. ignore_grp: []
  165. },
  166. Patrycjusze: {
  167. map: "Krypty Bezsennych p.1, Krypty Bezsennych p.2, Krypty Bezsennych p.2 - przejscie - sala 1, Krypty Bezsennych p.2 - przejscie - sala 2, Krypty Bezsennych p.2, Krypty Bezsennych p.2 - przejscie - sala 2, Krypty Bezsennych p.2 - przejscie - sala 1, Krypty Bezsennych p.2, Krypty Bezsennych p.1, Krypty Bezsennych p.2 - sala 2, Krypty Bezsennych p.3, Krypty Bezsennych p.2 - sala 2"
  168. },
  169. Sekta: {
  170. map: "Przedsionek Kultu, Tajemnicza Siedziba, Mroczne Komnaty, Przerazajace Sypialnie, Mroczne Komnaty, Tajemnicza Siedziba, Sala Tysiaca Swiec, Tajemnicza Siedziba, Lochy Kultu, Sale Rozdzierania, Lochy Kultu, Tajemnicza Siedziba"
  171. },
  172. "sadol": {
  173. map: "Zapadlisko Zniewolonych, Pajeczy Las, Otchlan Pajeczych Sieci, Dolina Pajeczych Korytarzy, Arachnitopia p.1, Arachnitopia p.2, Arachnitopia p.3, Arachnitopia p.4, Arachnitopia p.5, Arachnitopia p.4, Arachnitopia p.3, Arachnitopia p.2, Arachnitopia p.1, Dolina Pajeczych Korytarzy, Otchlan Pajeczych Sieci, Pajeczy Las, Zapadlisko Zniewolonych",
  174. },
  175. "Pajaki": {
  176. map: "Pajeczy Las, Otchlan Pajeczych Sieci, Dolina Pajeczych Korytarzy, Arachnitopia p.1, Arachnitopia p.2, Arachnitopia p.3, Arachnitopia p.4, Arachnitopia p.5, Arachnitopia p.4, Arachnitopia p.3, Arachnitopia p.2, Arachnitopia p.1, Dolina Pajeczych Korytarzy, Otchlan Pajeczych Sieci, Pajeczy Las",
  177. },
  178. "Zakorzeniony Lud": {
  179. map: "Urwisko Zdrewnialych, Wawóz Zakorzenionych Dusz, Krzaczasta Grota p.2 - sala 2, Krzaczasta Grota p.2 - sala 3, Krzaczasta Grota p.2 - sala 1, Krzaczasta Grota p.2 - sala 3, Krzaczasta Grota p.1 - sala 3, Krzaczasta Grota p.1 - sala 2, Krzaczasta Grota p.1 - sala 1, Wawóz Zakorzenionych Dusz, Regiel Zablakanych, Zródlo Zakorzenionego Ludu, Regiel Zablakanych, Wawóz Zakorzenionych Dusz"
  180. },
  181. "Maddoki cale": {
  182. map: "Zawodzace Kaskady, Skryty Azyl, Zlota Dabrowa, Oslizgle Przejscie - sala 1, Oslizgle Przejscie - sala 2, Zlota Dabrowa, Mglisty Las, Grota porosnietych Stalagmitów - sala wyjsciowa, Grota porosnietych Stalagmitów - przejscie, Grota porosnietych Stalagmitów - sala boczna, Grota porosnietych, Stalagmitów - przejscie, Grota porosnietych Stalagmitów - sala glówna, Grota porosnietych Stalagmitów - przejscie, Grota porosnietych Stalagmitów - sala wyjsciowa, Mglisty Las, Zlota Dabrowa, Dolina Pelznacego Krzyku, Grzezawisko Rozpaczy, Zatrute Torfowiska, Gnijace Topielisko, Bagna Umarlych, Gnijace Topielisko, Zatrute Torfowiska, Grzezawisko Rozpaczy, Dolina Pelznacego Krzyku, Zlota Dabrowa, Mglisty Las, Grota porosnietych Stalagmitów - sala wyjsciowa, Grota porosnietych Stalagmitów - przejscie, Grota porosnietych Stalagmitów - sala glówna, Grota porosnietych Stalagmitów - przejscie, Grota porosnietych Stalagmitów - sala boczna, Grota porosnietych Stalagmitów - przejscie, Grota porosnietych Stalagmitów - sala wyjsciowa, Mglisty Las, Zlota Dabrowa, Oslizgle Przejscie - sala 2, Oslizgle Przejscie - sala 1, Zlota Dabrowa, Skryty Azyl"
  183. },
  184. "Mahopteki dla leszczy": {
  185. map: "Altepetl Mahoptekan, Niecka Xiuh Atl, Dolina Chmur, Niecka Xiuh Atl, Altepetl Mahoptekan, Dolina Chmur, Zlota Góra p.1, Zlota Góra p.2, Zlota Góra p.3, Zlota Góra p.2, Zlota Góra p.1, Dolina Chmur, Altepetl Mahoptekan, Mictlan p.1, Mictlan p.2, Mictlan p.3, Mictlan p.4, Mictlan p.5, Mictlan p.4, Mictlan p.3, Mictlan p.2, Mictlan p.1"
  186. },
  187. "Mahopteki-high": {
  188. map: "Altepetl Mahoptekan, Niecka Xiuh Atl, Dolina Chmur, Niecka Xiuh Atl, Altepetl Mahoptekan, Dolina Chmur, Zlota Góra p.1, Zlota Góra p.2, Zlota Góra p.3, Zlota Góra p.2, Zlota Góra p.1, Dolina Chmur, Altepetl Mahoptekan, Mictlan p.1, Mictlan p.2, Mictlan p.3, Mictlan p.4, Mictlan p.5, Mictlan p.6, Mictlan p.7, Mictlan p.8, Mictlan p.7, Mictlan p.6, Mictlan p.5, Mictlan p.4, Mictlan p.3, Mictlan p.2, Mictlan p.1"
  189. },
  190. "Katy zarobek": {
  191. map: "Katakumby Gwaltownej Smierci, Korytarz Porzuconych Marzen, Katakumby Opetanych Dusz, Katakumby Odnalezionych Skrytobójców, Korytarz Porzuconych Nadziei, Katakumby Opetanych Dusz, Zachodni Tunel Jazni, Katakumby Krwawych Wypraw, Wschodni Tunel Jazni"
  192. },
  193. "Pustynia Shairhoud?": {
  194. map: "Pustynia Shaiharrud - wschód, Jurta Nomadzka, Pustynia Shaiharrud - wschód, Grota Poswiecenia, Pustynia Shaiharrud - wschód, Namiot Pustynnych Smoków, Pustynia Shaiharrud - wschód, Pustynia Shaiharrud - zachód, Jaskinia Piaskowej Burzy s.1, Jaskinia Piaskowej Burzy s.2, Namiot Naznaczonych, Pustynia Shaiharrud - zachód, Namiot Piechoty Pilowej, Pustynia Shaiharrud - zachód, Jaskinia Szczek, Jurta Czcicieli, Pustynia Shaiharrud - zachód, Namiot Gwardii Smokoszczekich, Pustynia Shaiharrud - zachód, Sepiarnia, Pustynia Shaiharrud - zachód, Jaskinia Smoczej Paszczy p.1, Jaskinia Smoczej Paszczy p.2, Jaskinia Smoczej Paszczy p.1, Jurta Chaegda, Pustynia Shaiharrud - zachód, Smocze Skalisko, Jaskinia Odwagi, Smocze Skalisko, Urwisko Vapora, Smocze Skalisko, Pustynia Shaiharrud - zachód"
  195. }
  196. };
  197.  
  198. //algorytm A*
  199. class AStar {
  200. constructor(
  201. collisionsString,
  202. width,
  203. height,
  204. start,
  205. end,
  206. additionalCollisions
  207. ) {
  208. this.width = width;
  209. this.height = height;
  210. this.collisions = this.parseCollisions(collisionsString, width, height);
  211. this.additionalCollisions = additionalCollisions || {};
  212. this.start = this.collisions[start.x][start.y];
  213. this.end = this.collisions[end.x][end.y];
  214. this.start.beginning = true;
  215. this.start.g = 0;
  216. this.start.f = heuristic(this.start, this.end);
  217. this.end.target = true;
  218. this.end.g = 0;
  219. this.addNeighbours();
  220. this.openSet = [];
  221. this.closedSet = [];
  222. this.openSet.push(this.start);
  223. }
  224.  
  225. parseCollisions(collisionsString, width, height) {
  226. const collisions = new Array(width);
  227. for (let w = 0; w < width; w++) {
  228. collisions[w] = new Array(height);
  229. for (let h = 0; h < height; h++) {
  230. collisions[w][h] = new Point(
  231. w,
  232. h,
  233. collisionsString.charAt(w + h * width) === "1"
  234. );
  235. }
  236. }
  237. return collisions;
  238. }
  239.  
  240. addNeighbours() {
  241. for (let i = 0; i < this.width; i++) {
  242. for (let j = 0; j < this.height; j++) {
  243. this.addPointNeighbours(this.collisions[i][j]);
  244. }
  245. }
  246. }
  247.  
  248. addPointNeighbours(point) {
  249. const x = point.x,
  250. y = point.y;
  251. const neighbours = [];
  252. if (x > 0) neighbours.push(this.collisions[x - 1][y]);
  253. if (y > 0) neighbours.push(this.collisions[x][y - 1]);
  254. if (x < this.width - 1) neighbours.push(this.collisions[x + 1][y]);
  255. if (y < this.height - 1) neighbours.push(this.collisions[x][y + 1]);
  256. point.neighbours = neighbours;
  257. }
  258.  
  259. anotherFindPath() {
  260. while (this.openSet.length > 0) {
  261. let currentIndex = this.getLowestF();
  262. let current = this.openSet[currentIndex];
  263. if (current === this.end) return this.reconstructPath();
  264. else {
  265. this.openSet.splice(currentIndex, 1);
  266. this.closedSet.push(current);
  267. for (const neighbour of current.neighbours) {
  268. if (this.closedSet.includes(neighbour)) continue;
  269. else {
  270. const tentative_score = current.g + 1;
  271. let isBetter = false;
  272. if (
  273. this.end == this.collisions[neighbour.x][neighbour.y] ||
  274. (!this.openSet.includes(neighbour) &&
  275. !neighbour.collision &&
  276. !this.additionalCollisions[neighbour.x + 256 * neighbour.y])
  277. ) {
  278. this.openSet.push(neighbour);
  279. neighbour.h = heuristic(neighbour, this.end);
  280. isBetter = true;
  281. } else if (
  282. tentative_score < neighbour.g &&
  283. !neighbour.collision
  284. ) {
  285. isBetter = true;
  286. }
  287. if (isBetter) {
  288. neighbour.previous = current;
  289. neighbour.g = tentative_score;
  290. neighbour.f = neighbour.g + neighbour.h;
  291. }
  292. }
  293. }
  294. }
  295. }
  296. }
  297.  
  298. getLowestF() {
  299. let lowestFIndex = 0;
  300. for (let i = 0; i < this.openSet.length; i++) {
  301. if (this.openSet[i].f < this.openSet[lowestFIndex].f) lowestFIndex = i;
  302. }
  303. return lowestFIndex;
  304. }
  305.  
  306. reconstructPath() {
  307. const path = [];
  308. let currentNode = this.end;
  309. while (currentNode !== this.start) {
  310. path.push(currentNode);
  311. currentNode = currentNode.previous;
  312. }
  313. return path;
  314. }
  315. }
  316.  
  317. class Point {
  318. constructor(x, y, collision) {
  319. this.x = x;
  320. this.y = y;
  321. this.collision = collision;
  322. this.g = 10000000;
  323. this.f = 10000000;
  324. this.neighbours = [];
  325. this.beginning = false;
  326. this.target = false;
  327. this.previous = undefined;
  328. }
  329. }
  330.  
  331. function heuristic(p1, p2) {
  332. return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);
  333. }
  334.  
  335. function a_getWay(x, y) {
  336. return new AStar(
  337. map.col,
  338. map.x,
  339. map.y, {
  340. x: hero.x,
  341. y: hero.y
  342. }, {
  343. x: x,
  344. y: y
  345. },
  346. g.npccol
  347. ).anotherFindPath();
  348. }
  349.  
  350. function a_goTo(x, y) {
  351. let _road_ = a_getWay(x, y);
  352. if (!Array.isArray(_road_)) return;
  353. window.road = _road_;
  354. }
  355.  
  356. //localStorage dla ostatnich mapek
  357. if (!localStorage.getItem(`adi-bot_lastmaps`)) {
  358. localStorage.setItem(`adi-bot_lastmaps`, JSON.stringify(new Array()));
  359. }
  360.  
  361. let self = this;
  362. let blokada = false;
  363. let blokada2 = false;
  364. let $m_id;
  365. let herolx,
  366. heroly,
  367. increment = 0;
  368.  
  369. let bolcka = false;
  370. let start = false;
  371.  
  372. g.loadQueue.push({
  373. fun: () => {
  374. start = true;
  375. }
  376. });
  377.  
  378. let deade = true;
  379. let globalArray = new Array();
  380.  
  381. function addToGlobal(id) {
  382. let npc = g.npc[id];
  383. if (npc.grp) {
  384. for (let i in g.npc) {
  385. if (g.npc[i].grp == npc.grp && !globalArray.includes(g.npc[i].id)) {
  386. globalArray.push(g.npc[i].id);
  387. }
  388. }
  389. } else if (!globalArray.includes(id)) {
  390. globalArray.push(id);
  391. }
  392. }
  393.  
  394. function chceckBlockade() {
  395. for (let i in g.npc) {
  396. let n = g.npc[i];
  397. if (
  398. (n.type == 2 || n.type == 3) &&
  399. n.wt < 19 &&
  400. checkGrp(n.id) &&
  401. hero.lvl + 30 >= n.lvl &&
  402. Math.abs(hero.x - n.x) < 2 &&
  403. Math.abs(hero.y - n.y) < 2 &&
  404. checkHeroHp()
  405. ) {
  406. return _g(`fight&a=attack&ff=1&id=-${n.id}`);
  407. }
  408. }
  409. }
  410.  
  411. function getTime() {
  412. let czas = new Date(),
  413. godzina = czas.getHours(),
  414. sekunda = czas.getSeconds(),
  415. minuta = czas.getMinutes();
  416. if (godzina < 10) godzina = `0${godzina}`;
  417. if (minuta < 10) minuta = `0${minuta}`;
  418. if (sekunda < 10) sekunda = `0${sekunda}`;
  419. return `${godzina}:${minuta}:${sekunda}`;
  420. }
  421.  
  422. //testowa opcja
  423. setInterval(function () {
  424. if ($m_id) {
  425. $m_id = undefined;
  426. }
  427. }, 4000);
  428. let $map_cords = undefined;
  429. this.PI = parseInput;
  430. parseInput = function (a) {
  431. let ret = self.PI.apply(this, arguments); //tutaj dodalem chwilowo poki nie daje rady xd
  432. if (!g.battle && !g.dead && start) {
  433. if (!$m_id && !bolcka) {
  434. $m_id = self.findBestMob();
  435. if (!$m_id && localStorage.getItem(`adi-bot_expowiska`)) {
  436. let tmp_naj1,
  437. tmp_naj2 = 9999;
  438. if (expowiska[localStorage.getItem(`adi-bot_expowiska`)].mobs_id) {
  439. let exP_mobs =
  440. expowiska[localStorage.getItem(`adi-bot_expowiska`)].mobs_id;
  441. for (let i in exP_mobs) {
  442. if (g.npc[exP_mobs[i]]) {
  443. tmp_naj1 = a_getWay(g.npc[exP_mobs[i]].x, g.npc[exP_mobs[i]].y)
  444. .length;
  445. if (tmp_naj1 < tmp_naj2) {
  446. tmp_naj2 = tmp_naj1;
  447. $m_id = exP_mobs[i];
  448. }
  449. }
  450. }
  451. }
  452. }
  453. blokada2 = false;
  454. blokada = false;
  455. }
  456. if ($m_id) {
  457. let mob = g.npc[$m_id];
  458. if (!mob) {
  459. $m_id = undefined;
  460. return ret;
  461. }
  462. if (
  463. Math.abs(hero.x - mob.x) < 2 &&
  464. Math.abs(hero.y - mob.y) < 2 &&
  465. !blokada
  466. ) {
  467. blokada = true;
  468. if (checkGrp(mob.id)) {
  469. _g(`fight&a=attack&ff=1&id=-${mob.id}`, function (res) {
  470. //sprawdzenie czy walczy z innym
  471. if (
  472. res.alert &&
  473. res.alert == `Przeciwnik walczy juz z kims innym`
  474. ) {
  475. addToGlobal(mob.id);
  476. $m_id = undefined;
  477. }
  478. });
  479. }
  480. setTimeout(function () {
  481. $m_id = undefined;
  482. }, 500);
  483. } else if (!blokada2 && !blokada) {
  484. a_goTo(mob.x, mob.y);
  485. blokada2 = true;
  486. }
  487. } else if (document.querySelector(`#adi-bot_maps`).value.length > 0) {
  488. //g.gwIds - obiekt id mapy i kordy -> 1: `1.13`
  489. //g.townname - obiekt id mapy i nazwa -> 1: `Ithan`
  490. $map_cords = self.findBestGw();
  491. if ($map_cords && !bolcka) {
  492. if (hero.x == $map_cords.x && hero.y == $map_cords.y) {
  493. _g(`walk`);
  494. } else {
  495. a_goTo($map_cords.x, $map_cords.y);
  496. bolcka = true;
  497. setTimeout(function () {
  498. bolcka = false;
  499. }, 2000);
  500. }
  501. }
  502. }
  503.  
  504. if (heroly == hero.y && herolx == herolx) {
  505. increment++;
  506. if (increment > 4) {
  507. chceckBlockade();
  508. increment = 0;
  509. $m_id = undefined;
  510. $map_cords = undefined;
  511. bolcka = false;
  512. }
  513. } else {
  514. heroly = hero.y;
  515. herolx = hero.x;
  516. increment = 0;
  517. }
  518. }
  519.  
  520. //wylogowanie po dedzie na glówna
  521. if (g.dead && deade) {
  522. deade = false;
  523. document.location.href = `http://margonem.pl`;
  524. }
  525.  
  526. //rozpoczecie walki
  527. if (a.hasOwnProperty("f") && a.f.init == 1 && hero.clan > 0) {
  528. if (!Object.keys(a.f.w).some(id => id < 0)) {
  529. const team1 = [],
  530. team2 = [];
  531. for (let x of Object.values(a.f.w))
  532. (x.team == 1 && team1.push(`${x.name} ${x.lvl}${x.prof}`)) ||
  533. team2.push(`${x.name} ${x.lvl}${x.prof} `);
  534. if (
  535. a.f.myteam == 2 &&
  536. document.querySelector(`#adi-bot_maps`).value.indexOf(map.name) > -1
  537. ) {
  538. const msg = `Zostalem zaatakowany na mapie ${
  539. map.name
  540. } o godzinie ${getTime()}.\n${team1.join(", ")} vs. ${team2.join(
  541. ", "
  542. )}`;
  543. }
  544. }
  545. }
  546. return ret;
  547. };
  548.  
  549. function checkGrp(id) {
  550. if (g.npc[id].grp) {
  551. //tutaj
  552. if (
  553. !checke2(g.npc[id].grp) ||
  554. (expowiska[localStorage.getItem(`adi-bot_expowiska`)].ignore_grp &&
  555. expowiska[
  556. localStorage.getItem(`adi-bot_expowiska`)
  557. ].ignore_grp.includes(g.npc[id].grp))
  558. ) {
  559. return false;
  560. }
  561. }
  562. return true;
  563. }
  564.  
  565. function checke2(grpid) {
  566. for (let i in g.npc) {
  567. if (g.npc[i].grp == grpid && g.npc[i].wt > 19) {
  568. return false;
  569. }
  570. }
  571. return true;
  572. }
  573.  
  574. function checkHeroHp() {
  575. if ((hero.hp / hero.maxhp) * 100 > 70) {
  576. return true;
  577. }
  578. return false;
  579. }
  580.  
  581. this.findBestMob = function () {
  582. let b1,
  583. b2 = 9999,
  584. id;
  585. for (let i in g.npc) {
  586. let n = g.npc[i];
  587. let xxx;
  588. let min;
  589. let max;
  590. if (document.querySelector(`#adi-bot_mobs`).value.indexOf(`-`) > -1) {
  591. xxx = document.querySelector(`#adi-bot_mobs`).value.split(`-`);
  592. min = parseInt(xxx[0]);
  593. max = parseInt(xxx[1]);
  594. }
  595.  
  596. if (
  597. (n.type == 2 || n.type == 3) &&
  598. xxx &&
  599. n.lvl <= max &&
  600. n.lvl >= min &&
  601. checkGrp(n.id) &&
  602. !globalArray.includes(n.id) &&
  603. n.wt < 20
  604. ) {
  605. b1 = a_getWay(n.x, n.y);
  606. if (b1 == undefined) continue;
  607. if (b1.length < b2) {
  608. b2 = b1.length;
  609. id = n.id;
  610. }
  611. }
  612. }
  613. return id;
  614. };
  615.  
  616. if (!localStorage.getItem(`alksjd`)) {
  617. localStorage.setItem(`alksjd`, 0);
  618. }
  619.  
  620. this.findBestGw = function () {
  621. let obj,
  622. txt = document.querySelector(`#adi-bot_maps`).value.split(`, `),
  623. inc = parseInt(localStorage.getItem(`alksjd`));
  624.  
  625. for (let i in g.townname) {
  626. //bo admini daja podwojna spacje w nazwach mapy??????
  627. if (txt[inc] == g.townname[i].replace(/ +(?= )/g, "")) {
  628. let c = g.gwIds[i].split(`.`);
  629. if (a_getWay(c[0], c[1]) == undefined) continue;
  630. obj = {
  631. x: c[0],
  632. y: c[1]
  633. };
  634. }
  635. if (obj) {
  636. return obj;
  637. }
  638. }
  639. inc++;
  640. if (inc > txt.length) {
  641. inc = 0;
  642. }
  643. localStorage.setItem(`alksjd`, parseInt(inc));
  644. };
  645.  
  646. this.initHTML = function () {
  647. //localStorage pozycji
  648. if (!localStorage.getItem(`adi-bot_position`)) {
  649. let tmpobj = {
  650. x: 0,
  651. y: 0
  652. };
  653. localStorage.setItem(`adi-bot_position`, JSON.stringify(tmpobj));
  654. }
  655. let position = JSON.parse(localStorage.getItem(`adi-bot_position`));
  656.  
  657. //boxy
  658. let box = document.createElement(`div`);
  659. box.id = `adi-bot_box`;
  660. box.setAttribute(`tip`, `Zlap i przenies :)`);
  661.  
  662. let input1 = document.createElement(`input`);
  663. input1.type = `text`;
  664. input1.id = `adi-bot_mobs`;
  665. input1.classList.add(`adi-bot_inputs`);
  666. input1.setAttribute(`tip`, `Wprowadz lvl mobków w postaci np. '50-70'`);
  667. box.appendChild(input1);
  668.  
  669. let input2 = document.createElement(`input`);
  670. input2.type = `text`;
  671. input2.id = `adi-bot_maps`;
  672. input2.classList.add(`adi-bot_inputs`);
  673. input2.setAttribute(`tip`, `Wprowadz nazwy map`);
  674. box.appendChild(input2);
  675.  
  676. let select = document.createElement(`select`);
  677. select.id = `adi-bot_list`;
  678. select.classList.add(`adi-bot_inputs`);
  679. select.setAttribute(
  680. `tip`,
  681. `Wybierz expowisko, aby dodatek wpisal mapy za Ciebie`
  682. );
  683. for (let i = 0; i < Object.keys(expowiska).length; i++) {
  684. let option = document.createElement(`option`);
  685. option.setAttribute(`value`, Object.keys(expowiska)[i]);
  686. option.text = Object.keys(expowiska)[i];
  687. select.appendChild(option);
  688. }
  689. box.appendChild(select);
  690.  
  691. document.body.appendChild(box);
  692.  
  693. let style = document.createElement(`style`);
  694. style.type = `text/css`;
  695. let css = `
  696. #adi-bot_box {
  697. position: absolute;
  698. border: 2px solid red;
  699. padding: 5px;
  700. text-align: center;
  701. background: black;
  702. cursor: grab;
  703. left: ${position.x}px;
  704. top: ${position.y}px;
  705. width: auto;
  706. height: auto;
  707. z-index: 390;
  708. }
  709. .adi-bot_inputs {
  710. -webkit-box-sizing: content-box;
  711. -moz-box-sizing: content-box;
  712. box-sizing: content-box;
  713. margin: 0 auto;
  714. margin-bottom: 3px;
  715. padding: 2px;
  716. cursor: pointer;
  717. border: 2px solid #f76f6f;
  718. -webkit-border-radius: 5px;
  719. border-radius: 5px;
  720. font: normal 16px/normal "Times New Roman", Times, serif;
  721. color: rgba(0,142,198,1);
  722. -o-text-overflow: clip;
  723. text-overflow: clip;
  724. background: rgba(234,227,227,1);
  725. -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  726. box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  727. text-shadow: 1px 1px 0 rgba(255,255,255,0.66) ;
  728. display: block;
  729. }
  730. input[id=adi-bot_mobs] {
  731. text-align: center;
  732. }
  733. #adi-bot_blessingbox {
  734. border: 1px solid red;
  735. background: gray;
  736. height: 32px;
  737. width: 32px;
  738. margin: 0 auto;
  739. }
  740. `;
  741. style.appendChild(document.createTextNode(css));
  742. document.head.appendChild(style);
  743.  
  744. bB = () => {};
  745.  
  746. var oldBattleMsgAFC = battleMsg;
  747. battleMsg = function (c, t) {
  748. var ret = oldBattleMsgAFC(c, t);
  749. if (c.search(/winner=/) >= 0) {
  750. $("#battleclose").click();
  751. }
  752. return ret;
  753. };
  754.  
  755. var oldFight = fight;
  756. fight = f => {
  757. oldFight(f);
  758. if (f.init) _g("fight&a=f");
  759. };
  760.  
  761. document.addEventListener("keyup", async function (e) {
  762. if (
  763. e.target.tagName != "INPUT" &&
  764. e.target.tagName != "TEXTAREA" &&
  765. e.which == 90 &&
  766. !g.battle
  767. ) {
  768. if (!g.engineStopped && parseInput !== window.adiwilkTestBot.PI) {
  769. window.adiwilkTestBot.copyPI = parseInput;
  770. parseInput = window.adiwilkTestBot.PI;
  771. a_goTo(hero.x, hero.y);
  772. message("Bot zatrzymany");
  773. } else {
  774. parseInput = window.adiwilkTestBot.copyPI;
  775. message("Bot uruchomiony");
  776. }
  777. }
  778. });
  779.  
  780. //localStorage dla mobów i mapek
  781. if (localStorage.getItem(`adi-bot_mobs`)) {
  782. input1.value = localStorage.getItem(`adi-bot_mobs`);
  783. }
  784. if (localStorage.getItem(`adi-bot_maps`)) {
  785. input2.value = localStorage.getItem(`adi-bot_maps`);
  786. }
  787. if (localStorage.getItem(`adi-bot_expowiska`)) {
  788. if (expowiska[localStorage.getItem(`adi-bot_expowiska`)]) {
  789. select.value = localStorage.getItem(`adi-bot_expowiska`);
  790. }
  791. }
  792. //listenery
  793. input1.addEventListener(`keyup`, () => {
  794. localStorage.setItem(`adi-bot_mobs`, input1.value);
  795. });
  796. input2.addEventListener(`keyup`, () => {
  797. localStorage.setItem(`adi-bot_maps`, input2.value);
  798. });
  799. select.addEventListener(`change`, () => {
  800. localStorage.setItem(`adi-bot_expowiska`, select.value);
  801. input2.value = expowiska[select.value].map;
  802. localStorage.setItem(`adi-bot_maps`, input2.value);
  803. localStorage.setItem(`alksjd`, 0);
  804. message(`Zapisano expowisko "${select.value}"`);
  805. });
  806.  
  807. $(`#adi-bot_box`).draggable({
  808. stop: () => {
  809. let tmpobj = {
  810. x: parseInt(document.querySelector(`#adi-bot_box`).style.left),
  811. y: parseInt(document.querySelector(`#adi-bot_box`).style.top)
  812. };
  813. localStorage.setItem(`adi-bot_position`, JSON.stringify(tmpobj));
  814. message(`Zapisano pozycje`);
  815. }
  816. });
  817. };
  818. this.initHTML();
  819. }();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement