Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 39.99 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Bot
  3. // @version 1.0
  4. // @description Bot z przechodzeniem przez mapki
  5. // @author
  6. // @match http://zemyna.margonem.pl
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. window.bot = new function () {
  11. // do czego to kurwa jest?xd - tego nie wiem co jest napisane do kolejnego komentarza - wylaczajac to nic sie nei dzieje
  12. //[aa!] preNewNpc to funkcja z silnika margo co dokładnie robi tego nie wiem z tego co widze autor bota napisuje te funkcje
  13.  
  14. const newNpcOldCopyAf = preNewNpc;//[aa!]tutaj do zmiennej lokalnej zapisuje orygialny kod funkcji preNewNpc z silnika margo
  15. preNewNpc = function (npcs) {
  16. //[aa!]a tutaj dodaje swój kod z tego co widze to ta funkcja jest uruchamiana przez silnik margo jak na mapie wykryty zostanie nowy npc
  17. for (var npc in npcs) {
  18. if (
  19. npcs[npc].del &&
  20. g.npc[npc] &&
  21. Math.abs(hero.x - g.npc[npc].x) + Math.abs(hero.y - g.npc[npc].y) > 13
  22. ) {
  23. delete npcs[npc];
  24. }
  25. }
  26. newNpcOldCopyAf(npcs);//[aa!] tutaj autor bota uruchamiamia zapisana wczesniej orygianlna funkcje preNewNpc
  27. };
  28.  
  29. //wylaczenie alertów i blokad, chwilowe rozwiazanie
  30. /*
  31. mAlert = function () {};
  32. if (
  33. typeof g == "undefined" &&
  34. document.location.href.indexOf("zemyna.margonem.pl") > -1
  35. ) {
  36. document.location.reload();
  37. }*/
  38. //obiekt z nazwami expowisk chuj wie co znaczy to oo pisze ignore grp i jak pobrac id
  39.  
  40. //autor bota w zmiennej expowiska definuje jakie mapy wchodzą w skład expowisk przez niego zdefinowanych, składnia obiejktu:
  41. /*
  42. expowiska = {
  43. 'nazwa expowiska np. mocne orki': {
  44. map: ['Dokładna nazw mapki z gry', 'kolejna mpka', 'itd.' ],//ta właściwość obowiązkowo do podania
  45. ignore_grp: ['id grupy mobów jakie mają być pomijane przez bota, id grupy monza odczytac na podstawie id ncp jest zdefiniowane w zmiennej g.npc['id moba'].grp,
  46. mobs_id: ['id mobów które branę so pod uwgę w pierszej kolejnosci przez algorytm wyznaczajacy najblizszego moba do jakiego ma isc bot']
  47. }
  48. }
  49. */
  50. let expowiska = {
  51. "Pizzeria(wszystkie levele)": {
  52. map: "Podziemia - p.1, Podziemia - p.2, Odnoga kanalu, Podziemia - p.1, Podziemia - p.3, Podziemia - p.1, Odnoga kanalu, Podziemia - p.2"
  53. },
  54. "Szczury w Ithan": {
  55. 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"
  56. },
  57. "Nekropolia": {
  58. map: "Grobowiec Rodziny Tywelta p.1, Grobowiec Rodziny Tywelta p.2"
  59. },
  60. "Demony": {
  61. map: "Podziemia Siedziby Maga p.3 - sala 1, Podziemia Siedziby Maga p.3 - sala 2"
  62. },
  63. "Gacki szare": {
  64. 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"
  65. },
  66. "Mrówki": {
  67. 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"
  68. },
  69. "Mulusy": {
  70. map: "Osada Mulusów, Pradawne Wzgórze Przodków"
  71. },
  72. "Orki": {
  73. 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"
  74. },
  75. "Ghule": {
  76. map: "Polana Scierwojadów, Wioska Ghuli"
  77. },
  78. "Wilcze plemie": {
  79. map: "Warczace Osuwiska, Wilcza Nora p.1, Wilcza Nora p.2, Wilcza Nora p.1",
  80. mobs_id: [71698]
  81. },
  82. "Pajaki": {
  83. map: "Rachminowa Jaskinia p.5, Rachminowa Jaskinia p.6 - rozlewisko, Rachminowa Jaskinia p.7 - bezdenna glebia, Rachminowa Jaskinia p.6 - rozlewisko"
  84. },
  85. "Koboldy": {
  86. map: "Lazurytowa Grota p.1, Lazurytowa Grota p.2, Lazurytowa Grota p.3, Lazurytowa Grota p.2"
  87. },
  88. "Galaretki(te za pszczólkami)": {
  89. map: "Prastara Kopalnia Eroch p.4 - sala 1, Prastara Kopalnia Eroch p.5"
  90. },
  91. "Szlak Thorpa": {
  92. 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"
  93. },
  94. "Biale mrówki": {
  95. 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"
  96. },
  97. "Moje demilsze": {
  98. 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"
  99. },
  100. "Demilisze-low": {
  101. 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"
  102. },
  103. "Demilisze-high": {
  104. 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"
  105. },
  106. "Alghule kolo tuzmer": {
  107. map: "Skalne Cmentarzysko p.1, Skalne Cmentarzysko p.2, Skalne Cmentarzysko p.3, Skalne Cmentarzysko p.2"
  108. },
  109. "Szkielety kolo tuzmer": {
  110. map: "Dolina Pustynnych Kregów, Sucha Dolina, Dolina Pustynnych Kregów, Plaskowyz Arpan, Dolina Pustynnych Kregów"
  111. },
  112. "Minosy": {
  113. map: "Labirynt Wykletych p.2 - sala 1, Labirynt Wykletych p.1, Labirynt Wykletych p.2 - sala 2, Labirynt Wykletych p.1",
  114. ignore_grp: [23]
  115. },
  116. "Erem pólnoc-poludnie": {
  117. 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",
  118. mobs_id: [34826]
  119. },
  120. "Grexy": {
  121. 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"
  122. },
  123. "Miski-low": {
  124. 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",
  125. mobs_id: [34843, 34826]
  126. },
  127. "Miski-high": {
  128. 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",
  129. mobs_id: [34843, 34826]
  130. },
  131. "Piraci - dwie jaskinie": {
  132. 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"
  133. },
  134. "Gorale": {
  135. map: "Wyjący Wawóz, Babi Wzgórek, Góralskie Przejście, Grota Halnego Wiatru p.1, Grota Halnego Wiatru p.2, Góralskie Przejście, Grota Halnego Wiatru p.2, Grota Halnego Wiatru p.1, Góralskie Przejście, Babi Wzgórek, Wyjący Wawóz "
  136. },
  137. "Mumie": {
  138. map: "Oaza Siedmiu Wichrów, Ciche Rumowiska, Dolina Suchych Łez, Ciche Rumowiska"
  139. },
  140. "Magradit-low": {
  141. 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"
  142. },
  143. "Magradit-high": {
  144. 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",
  145. ignore_grp: [4]
  146. },
  147. "Czerwone Orki": {
  148. map: "Orcza Wyzyna, Osada Czerwonych Orków, Siedziba Rady Orków"
  149. },
  150. "Kuznia Woundriela": {
  151. map: "Kuznia Worundriela p.7 - sala 3, Kuznia Worundriela p.7 - sala 4"
  152. },
  153. "Berserkerzy": {
  154. 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"
  155. },
  156. "Wiedzmy 150": {
  157. map: "Tristan, Sabatowe Góry, Wiedźmie Kotłowisko, Upiorna Droga, Wiedźmie Kotłowisko, Sabatowe Góry"
  158. },
  159. "Gobliny": {
  160. map: "Goblińskie lokum, Przedsionek Złych Goblinów, Lokum Złych Goblinów, Przedsionek Złych Goblinów"
  161. },
  162. "Kazamaty": {
  163. 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"
  164. },
  165. "Duchy - dla leszczy": {
  166. map: "Ruiny Tass Zhil, Przedsionek Grobowca, Ruiny Tass Zhil, Blota Sham Al",
  167. ignore_grp: [18]
  168. },
  169. "Duchy - dla koxów": {
  170. map: "Ruiny Tass Zhil, Przedsionek Grobowca, Tajemne Przejscie, Przeklety Grobowiec"
  171. },
  172. "Ogry":{
  173. map: "Ogrza Kawerna p.1. Ogrza Kawerna p.2, Ogrza Kawerna p.3, Ogrza Kawerna p.2"
  174. },
  175. "Ingotia": {
  176. map: "Wyspa Ingotia - południe, Jaskinia Rogogłowych - aula, Sala Nici Ocalenia p.6, Sala Białego Byka p.5, Sala Nici Ocalenia p.6, Komnata Przeklętego Daru p.5, Jaskinia Rogogłowych - aula, Sala Żądzy p.5, Hala Odszczepieńcó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 Żądzy p.5, Jaskinia Rogogłowych - aula, Komnata Przeklętego Daru p.5, Sala Nici Ocalenia p.6, Sala Białego Byka p.5, Sala Nici Ocalenia p.6, Jaskinia Rogogłowych - aula"
  177. },
  178. "SK dla leszczy": {
  179. map: "Nawiedzone Komnaty p.1, Nawiedzone Komnaty p.2, Sala Królewska, Nawiedzone Komnaty p.2"
  180. },
  181. "SK dla koxów": {
  182. map: "Nawiedzone Komnaty p.1, Nawiedzone Komnaty p.2, Sala Królewska, Komnata Czarnej Perły, Sala Królewska, Nawiedzone Komnaty p.2",
  183. ignore_grp: []
  184. },
  185. "Furby": {
  186. map: "Zapomniany Las, Rozległa Równina, Wzgórza Obłędu, Rozległa Równina, Dolina Gniewu, Terytorium Furii, Zapadlisko Zniewolonych, Terytorium Furii, Dolina Gniewu, Zalana Grota p.1, Dolina Gniewu, Rozległa Równina",
  187. ignore_grp: []
  188. },
  189. "Furbole bez 8GRP xD": {
  190. map: "Dolina Gniewu, Zalana Grota p.1, Zalana Grota p.2, Zalana Grota p.1, Dolina Gniewu, Terytorium Furii, Zapadlisko Zniewolonych, Terytorium Furii, Dolina Gniewu",
  191. ignore_grp: []
  192. },
  193. "Patrycjusze": {
  194. map: "Krypty Bezsennych p.1, Krypty Bezsennych p.2, Krypty Bezsennych p.2 - przejście - sala 1, Krypty Bezsennych p.2 - przejście - sala 2, Krypty Bezsennych p.2, Krypty Bezsennych p.3, Krypty Bezsennych p.2 - sala 2, Krypty Bezsennych p.1"
  195. },
  196. "Driady, Valmiry": {
  197. map: "Gvar Hamryd, Rozlewisko Kai, Przysiółek Valmirów, Rozlewisko Kai"
  198. },
  199. "Myszy": {
  200. map: "Szlamowe Kanały, Kanały Nithal"
  201. },
  202. "Sekta": {
  203. map: "Przedsionek Kultu, Tajemnicza Siedziba, Mroczne Komnaty, Przerażające Sypialnie, Mroczne Komnaty, Tajemnicza Siedziba, Sala Tysiąca Świec, Tajemnicza Siedziba, Lochy Kultu, Sale Rozdzierania, Lochy Kultu, Tajemnicza Siedziba"
  204. },
  205. "Pajaki": {
  206. map: "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"
  207. },
  208. "Maddoki": {
  209. 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, 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"
  210. },
  211. "Anuraki": {
  212. map: "Dolina Pelznacego Krzyku, Grzezawisko Rozpaczy, Zatrute Torfowiska, Gnijace Topielisko, Bagna Umarlych, Gnijace Topielisko, Zatrute Torfowiska, Grzezawisko Rozpaczy, Dolina Pelznacego Krzyku"
  213. },
  214. "Drzewce przy maho": {
  215. 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, Piaskowa Gestwina, Zródlo Zakorzenionego Ludu, Jaskinia Korzennego Czaru p.2 - sala 1, Jaskinia Korzennego Czaru p.3, Jaskinia Korzennego Czaru p.2 - sala 1, Jaskinia Korzennego Czaru p.1 - sala 1, Jaskinia Korzennego Czaru p.1 - sala 3, Jaskinia Korzennego Czaru p.1 - sala 4, Jaskinia Korzennego Czaru p.1 - sala 3, Jaskinia Korzennego Czaru p.1 - sala 1, Jaskinia Korzennego Czaru p.2 - sala 1, Zródlo Zakorzenionego Ludu, Regiel Zablakanych, Wawóz Zakorzenionych Dusz"
  216. },
  217. "Maho bez PIRAMIDY": {
  218. 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, Altepetl Mahoptekan"
  219. },
  220. "Maho + pirka":{
  221. map: "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, Altepetl Mahoptekan, Dolina Chmur"
  222. },
  223. "Maho + pirka i reszta": {
  224. 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"
  225. },
  226. "Wiedzmy +250": {
  227. map: "Potepione Zamczysko, Potepione Zamczysko - korytarz wejsciowy, Potepione Zamczysko - lochy zachodnie, Potepione Zamczysko - korytarz wejsciowy, Potepione Zamczysko - korytarz wejsciowy, Potepione Zamczysko - korytarz wschodni, Wieza Szlochów p.1, Potepione Zamczysko - korytarz wschodni, Potepione Zamczysko - korytarz wejsciowy, Potepione Zamczysko, Plugawe Pustkowie, Jeczywawóz, Pogranicze Wisielców, Jeczywawóz, Plugawe Pustkowie, Potepione Zamczysko"
  228. },
  229. "Katakumby poleglych": {
  230. 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"
  231. },
  232. "Pustynia Shaiharroud": {
  233. 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"
  234. },
  235. "RUDA": {
  236. map: "Zapomniany Las, Rozległa Równina, Dolina Gniewu, Zalana Grota p.1, Zalana Grota p.2"
  237. },
  238. "MAGUA": {
  239. map: "Głuchy Las, Zawodzące Kaskady, Skryty Azyl, Podziemne Źródło"
  240. },
  241. "198 thuzal": {
  242. map: "Grań Gawronich Piór, Błota Sham Al, Ruiny Tass Zhil, Przeklęty Grobowiec, Grobowiec Przeklętego Krakania - przedsionek"
  243. },
  244. "225 torneg": {
  245. map: "Zapomniany Las, Terytorium Furii, Zapadlisko Zniewolonych, Pajęczy Las, Grobowiec Przebiegłego Tkacza - przedsionek"
  246. },
  247. "225 archy": {
  248. map: "Dolina Pajęczych Korytarzy, Otchłań Pajęczych Sieci, Pajęczy Las, Grobowiec Przebiegłego Tkacza - przedsionek"
  249. },
  250. "KWIATY -> THUZAL":{
  251. map: "Lazurowe Wzgórze, Grań Gawronich Piór, Thuzal"
  252. },
  253. };
  254.  
  255. //algorytm A* chodzenie
  256. //główna klada bota wyznacza moba do ktorego powinna isc postac i zrwaca tablice kordow uzywaną do wykonanania
  257. //chodzenia w margo chodzi przekazujac do zmiennej globalnej road tablice kordow i postac idzie po koleji danymi kordami
  258. //oczywiście tablica kordów nie moze być byle jaka ;p jak chcesz przejsca z 1,1 do 1,4 to bedzie np postaci [[1,2],[1,3],[1,4]] czyli tak aby odleglosc pomiedzy kordami zawsze była 1
  259. //sam algoryt jest skomplokwany bo musi uwgledniac mieca przez ktore nie mozna przejsc przeszkody npc itp.
  260.  
  261. class AStar {
  262. constructor(
  263. collisionsString,
  264. width,
  265. height,
  266. start,
  267. end,
  268. additionalCollisions
  269. ) {
  270. this.width = width;
  271. this.height = height;
  272. this.collisions = this.parseCollisions(collisionsString, width, height);
  273. this.additionalCollisions = additionalCollisions || {};
  274. this.start = this.collisions[start.x][start.y];
  275. this.end = this.collisions[end.x][end.y];
  276. this.start.beginning = true;
  277. this.start.g = 0;
  278. this.start.f = heuristic(this.start, this.end);
  279. this.end.target = true;
  280. this.end.g = 0;
  281. this.addNeighbours();
  282. this.openSet = [];
  283. this.closedSet = [];
  284. this.openSet.push(this.start);
  285. }
  286.  
  287. parseCollisions(collisionsString, width, height) {
  288. const collisions = new Array(width);
  289. for (let w = 0; w < width; w++) {
  290. collisions[w] = new Array(height);
  291. for (let h = 0; h < height; h++) {
  292. collisions[w][h] = new Point(
  293. w,
  294. h,
  295. collisionsString.charAt(w + h * width) === "1"
  296. );
  297. }
  298. }
  299. return collisions;
  300. }
  301.  
  302. addNeighbours() {
  303. for (let i = 0; i < this.width; i++) {
  304. for (let j = 0; j < this.height; j++) {
  305. this.addPointNeighbours(this.collisions[i][j]);
  306. }
  307. }
  308. }
  309.  
  310. addPointNeighbours(point) {
  311. const x = point.x,
  312. y = point.y;
  313. const neighbours = [];
  314. if (x > 0) neighbours.push(this.collisions[x - 1][y]);
  315. if (y > 0) neighbours.push(this.collisions[x][y - 1]);
  316. if (x < this.width - 1) neighbours.push(this.collisions[x + 1][y]);
  317. if (y < this.height - 1) neighbours.push(this.collisions[x][y + 1]);
  318. point.neighbours = neighbours;
  319. }
  320.  
  321. anotherFindPath() {
  322. while (this.openSet.length > 0) {
  323. let currentIndex = this.getLowestF();
  324. let current = this.openSet[currentIndex];
  325. if (current === this.end) return this.reconstructPath();
  326. else {
  327. this.openSet.splice(currentIndex, 1);
  328. this.closedSet.push(current);
  329. for (const neighbour of current.neighbours) {
  330. if (this.closedSet.includes(neighbour)) continue;
  331. else {
  332. const tentative_score = current.g + 1;
  333. let isBetter = false;
  334. if (
  335. this.end == this.collisions[neighbour.x][neighbour.y] ||
  336. (!this.openSet.includes(neighbour) &&
  337. !neighbour.collision &&
  338. !this.additionalCollisions[neighbour.x + 256 * neighbour.y])
  339. ) {
  340. this.openSet.push(neighbour);
  341. neighbour.h = heuristic(neighbour, this.end);
  342. isBetter = true;
  343. } else if (
  344. tentative_score < neighbour.g &&
  345. !neighbour.collision
  346. ) {
  347. isBetter = true;
  348. }
  349. if (isBetter) {
  350. neighbour.previous = current;
  351. neighbour.g = tentative_score;
  352. neighbour.f = neighbour.g + neighbour.h;
  353. }
  354. }
  355. }
  356. }
  357. }
  358. }
  359.  
  360. getLowestF() {
  361. let lowestFIndex = 0;
  362. for (let i = 0; i < this.openSet.length; i++) {
  363. if (this.openSet[i].f < this.openSet[lowestFIndex].f) lowestFIndex = i;
  364. }
  365. return lowestFIndex;
  366. }
  367.  
  368. reconstructPath() {
  369. const path = [];
  370. let currentNode = this.end;
  371. while (currentNode !== this.start) {
  372. path.push(currentNode);
  373. currentNode = currentNode.previous;
  374. }
  375. return path;
  376. }
  377. } //koniec algorytm A
  378. //cos do chodzenia
  379. //nie coś do chodzenia ;p tylko klasa pomocnicza reprezentująca punt na mapie(siatce), właściwości x oraz y reprezentują kordy poozstałe właściwości to jakieś pomocnicznie zmienne wykorzystywane przez algorytm przy wyznaczaniu trasy
  380. class Point {
  381. constructor(x, y, collision) {
  382. this.x = x;
  383. this.y = y;
  384. this.collision = collision;
  385. this.g = 10000000;
  386. this.f = 10000000;
  387. this.neighbours = [];
  388. this.beginning = false;
  389. this.target = false;
  390. this.previous = undefined;
  391. }
  392. }
  393. // tez do chodzenia
  394. //jaką spomocnicza funkcja wygląda na to iż wylicza odlegość pomiędzy dwoma punktami(kordami) wykorzystwyana w algorytmie wyznaczajaacym trase z tego co widziałem auor bota wykorzystuję te funkcje
  395. //do sprawdzania czy polejne punkyty trasy sa od siebie w odpowiedniej odległosci zeby bot nie próbował skakać wiecej niż 1 kratke bo nie puści go silnik, po stronie serwera margo jest walidowana tranas przekazana w kodzie js
  396.  
  397. function heuristic(p1, p2) {
  398. return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);
  399. }
  400. //przechodzenie przez mapki
  401. //a to funkcja pomocnicza która zwraca tablice trasy do przejcie przez postać z biezacego punktu do punktu przekazanego w parametrach x, y
  402. function a_getWay(x, y) {
  403. return new AStar(
  404. map.col,
  405. map.x,
  406. map.y, {
  407. x: hero.x,
  408. y: hero.y
  409. }, {
  410. x: x,
  411. y: y
  412. },
  413. g.npccol
  414. ).anotherFindPath();
  415. }
  416. //chodzenie
  417. //kolejna pomocnicza funkcja korzystajaca z poprzedniej do zmiennej globalnej window.road przekazuje wyznaczona trase i magia postac w grze chodzi ;p
  418. function a_goTo(x, y) {
  419. let _road_ = a_getWay(x, y);
  420. if (!Array.isArray(_road_)) return;
  421. window.road = _road_;
  422. }
  423.  
  424. //localStorage dla ostatnich mapek - chyba zapisuje ostatnie mapki jakie ustawione byly?
  425. if (!localStorage.getItem(`a-b_lastmaps`)) {
  426. localStorage.setItem(`a-b_lastmaps`, JSON.stringify(new Array()));
  427. }
  428. //tego ponizej nie wiem czego sie tyczy
  429. //tu sa zdefiniowane globalne do bota przypisanie do zmiennej windows.strat wartości true uruchamia bota
  430. //pozostałe zmienne to jakieś pomcniczy szajs który autor wykorzystuje do
  431. let self = this;
  432. let blokada = false;//jakies blokady nie chce mi sie czytac kodu tego alborytmu bo tu straszny smietnik jest;p generalnie jakieś zabezpieczenie pewnie zeby bot nie atakował moba jak ktos inny bije
  433. let blokada2 = false;//jakies blokady nie chce mi sie czytac kodu tego alborytmu bo tu straszny smietnik jest;p
  434. let $m_id;// tu id moba kotrego ma zbic bot, wyznaczane przez algorytm
  435. let herolx,
  436. heroly,
  437. increment = 0;
  438.  
  439. let bolcka = false;
  440. let start = false;
  441.  
  442. g.loadQueue.push({
  443. fun: () => {
  444. start = true;
  445. }
  446. });
  447.  
  448. let deade = true;
  449. let globalArray = new Array();
  450. //dodawanie do globala? ale czego? ze ktos zaatakowal?
  451. function addToGlobal(id) {
  452. let npc = g.npc[id];
  453. if (npc.grp) {
  454. for (let i in g.npc) {
  455. if (g.npc[i].grp == npc.grp && !globalArray.includes(g.npc[i].id)) {
  456. globalArray.push(g.npc[i].id);
  457. }
  458. }
  459. } else if (!globalArray.includes(id)) {
  460. globalArray.push(id);
  461. }
  462. }
  463. //sprawdzenia grupy do czego?
  464. //funkcja pomocznicza a kurwa ie chce mi się pisać ;p sorra ta funkcja wyszukujue czy w odleglosci 1 kratki od bohatera jest mob ktorego moze zaaktakowac
  465. //
  466. function chceckBlockade() {
  467. for (let i in g.npc) {
  468. let n = g.npc[i];
  469. if (
  470. (n.type == 2 || n.type == 3) &&
  471. n.wt < 19 &&
  472. checkGrp(n.id) &&
  473. hero.lvl + 30 >= n.lvl &&
  474. Math.abs(hero.x - n.x) < 2 &&
  475. Math.abs(hero.y - n.y) < 2 &&
  476. checkHeroHp()
  477. ) {
  478. return _g(`fight&a=attack&ff=1&id=-${n.id}`);
  479. }
  480. }
  481. }
  482. /*
  483. //godzina zabicia wysylana na discord?
  484. function getTime() {
  485. let czas = new Date(),
  486. godzina = czas.getHours(),
  487. sekunda = czas.getSeconds(),
  488. minuta = czas.getMinutes();
  489. if (godzina < 10) godzina = `0${godzina}`;
  490. if (minuta < 10) minuta = `0${minuta}`;
  491. if (sekunda < 10) sekunda = `0${sekunda}`;
  492. return `${godzina}:${minuta}:${sekunda}`;
  493. }
  494. */
  495. //testowa opcja to do czego?xd
  496. setInterval(function () {
  497. if ($m_id) {
  498. $m_id = undefined;
  499. }
  500. }, 4000);
  501. // nwm co to dokladnie jest w niektorych przypadkach
  502. let $map_cords = undefined;
  503. this.PI = parseInput;
  504. parseInput = function (a) {
  505. let ret = self.PI.apply(this, arguments); //tutaj dodalem chwilowo poki nie daje rady xd
  506. if (!g.battle && !g.dead && start) {
  507. if (!$m_id && !bolcka) {
  508. $m_id = self.findBestMob();
  509. if (!$m_id && localStorage.getItem(`a-b_expowiska`)) {
  510. let tmp_naj1,
  511. tmp_naj2 = 9999;
  512. if (expowiska[localStorage.getItem(`a-b_expowiska`)].mobs_id) {
  513. let exP_mobs =
  514. expowiska[localStorage.getItem(`a-b_expowiska`)].mobs_id;
  515. for (let i in exP_mobs) {
  516. if (g.npc[exP_mobs[i]]) {
  517. tmp_naj1 = a_getWay(g.npc[exP_mobs[i]].x, g.npc[exP_mobs[i]].y)
  518. .length;
  519. if (tmp_naj1 < tmp_naj2) {
  520. tmp_naj2 = tmp_naj1;
  521. $m_id = exP_mobs[i];
  522. }
  523. }
  524. }
  525. }
  526. }
  527. blokada2 = false;
  528. blokada = false;
  529. }
  530. if ($m_id) {
  531. let mob = g.npc[$m_id];
  532. if (!mob) {
  533. $m_id = undefined;
  534. return ret;
  535. }
  536. if (
  537. Math.abs(hero.x - mob.x) < 2 &&
  538. Math.abs(hero.y - mob.y) < 2 &&
  539. !blokada
  540. ) {
  541. blokada = true;
  542. if (checkGrp(mob.id)) {
  543. _g(`fight&a=attack&ff=1&id=-${mob.id}`, function (res) {
  544. //sprawdzenie czy walczy z innym
  545. if (
  546. res.alert &&
  547. res.alert == `Przeciwnik walczy juz z kims innym`
  548. ) {
  549. addToGlobal(mob.id);
  550. $m_id = undefined;
  551. }
  552. });
  553. }
  554. setTimeout(function () {
  555. $m_id = undefined;
  556. }, 500);
  557. } else if (!blokada2 && !blokada) {
  558. a_goTo(mob.x, mob.y);
  559. blokada2 = true;
  560. }
  561. } else if (document.querySelector(`#a-b_maps`).value.length > 0) {
  562. //g.gwIds - obiekt id mapy i kordy -> 1: `1.13`
  563. //g.townname - obiekt id mapy i nazwa -> 1: `Ithan`
  564. $map_cords = self.findBestGw();
  565. if ($map_cords && !bolcka) {
  566. if (hero.x == $map_cords.x && hero.y == $map_cords.y) {
  567. _g(`walk`);
  568. } else {
  569. a_goTo($map_cords.x, $map_cords.y);
  570. bolcka = true;
  571. setTimeout(function () {
  572. bolcka = false;
  573. }, 2000);
  574. }
  575. }
  576. }
  577.  
  578. if (heroly == hero.y && herolx == herolx) {
  579. increment++;
  580. if (increment > 4) {
  581. chceckBlockade();
  582. increment = 0;
  583. $m_id = undefined;
  584. $map_cords = undefined;
  585. bolcka = false;
  586. }
  587. } else {
  588. heroly = hero.y;
  589. herolx = hero.x;
  590. increment = 0;
  591. }
  592. }
  593.  
  594. /*wylogowanie po dedzie na glówna
  595. if (g.dead && deade) {
  596. deade = false;
  597. document.location.href = `http://margonem.pl`;
  598. }
  599. */
  600. //rozpoczecie walki
  601. if (a.hasOwnProperty("f") && a.f.init == 1 && hero.clan > 0) {
  602. if (!Object.keys(a.f.w).some(id => id < 0)) {
  603. const team1 = [],
  604. team2 = [];
  605. for (let x of Object.values(a.f.w))
  606. (x.team == 1 && team1.push(`${x.name} ${x.lvl}${x.prof}`)) ||
  607. team2.push(`${x.name} ${x.lvl}${x.prof} `);
  608. if (
  609. a.f.myteam == 2 &&
  610. document.querySelector(`#a-b_maps`).value.indexOf(map.name) > -1
  611. ) {
  612. const msg = `Zostalem zaatakowany na mapie ${
  613. map.name
  614. } o godzinie ${getTime()}.\n${team1.join(", ")} vs. ${team2.join(
  615. ", "
  616. )}`;
  617. }
  618. }
  619. }
  620. return ret;
  621. };
  622. //ignorowanie grup z e2 ?
  623. function checkGrp(id) {
  624. if (g.npc[id].grp) {
  625. //tutaj
  626. if (
  627. !checke2(g.npc[id].grp) ||
  628. (expowiska[localStorage.getItem(`a-b_expowiska`)].ignore_grp &&
  629. expowiska[
  630. localStorage.getItem(`a-b_expowiska`)
  631. ].ignore_grp.includes(g.npc[id].grp))
  632. ) {
  633. return false;
  634. }
  635. }
  636. return true;
  637. }
  638. //funkcja z e2 ale po co xd
  639. function checke2(grpid) {
  640. for (let i in g.npc) {
  641. if (g.npc[i].grp == grpid && g.npc[i].wt > 19) {
  642. return false;
  643. }
  644. }
  645. return true;
  646. }
  647. // ?? nei wiem
  648. function checkHeroHp() {
  649. if ((hero.hp / hero.maxhp) * 100 > 70) {
  650. return true;
  651. }
  652. return false;
  653. }
  654. // najlepszy mob przy wyborze 2 opcji?
  655. this.findBestMob = function () {
  656. let b1,
  657. b2 = 9999,
  658. id;
  659. for (let i in g.npc) {
  660. let n = g.npc[i];
  661. let xxx;
  662. let min;
  663. let max;
  664. if (document.querySelector(`#a-b_mobs`).value.indexOf(`-`) > -1) {
  665. xxx = document.querySelector(`#a-b_mobs`).value.split(`-`);
  666. min = parseInt(xxx[0]);
  667. max = parseInt(xxx[1]);
  668. }
  669.  
  670. if (
  671. (n.type == 2 || n.type == 3) &&
  672. xxx &&
  673. n.lvl <= max &&
  674. n.lvl >= min &&
  675. checkGrp(n.id) &&
  676. !globalArray.includes(n.id) &&
  677. n.wt < 20
  678. ) {
  679. b1 = a_getWay(n.x, n.y);
  680. if (b1 == undefined) continue;
  681. if (b1.length < b2) {
  682. b2 = b1.length;
  683. id = n.id;
  684. }
  685. }
  686. }
  687. return id;
  688. };
  689. // ??
  690. if (!localStorage.getItem(`alksjd`)) { // o chuj chodzi z tym alksjd to jakas byle jaka nazwa/zmienna ktora moge se nazwac jak chce
  691. localStorage.setItem(`alksjd`, 0);
  692. }
  693. // ??najlepsza droga do innej mapki? Gw - getway?
  694. this.findBestGw = function () {
  695. let obj,
  696. txt = document.querySelector(`#a-b_maps`).value.split(`, `),
  697. inc = parseInt(localStorage.getItem(`alksjd`));
  698.  
  699. for (let i in g.townname) {
  700. //bo admini daja podwojna spacje w nazwach mapy??????
  701. if (txt[inc] == g.townname[i].replace(/ +(?= )/g, "")) {
  702. let c = g.gwIds[i].split(`.`);
  703. if (a_getWay(c[0], c[1]) == undefined) continue;
  704. obj = {
  705. x: c[0],
  706. y: c[1]
  707. };
  708. }
  709. if (obj) {
  710. return obj;
  711. }
  712. }
  713. inc++;
  714. if (inc > txt.length) {
  715. inc = 0;
  716. }
  717. localStorage.setItem(`alksjd`, parseInt(inc));
  718. };
  719.  
  720. this.initHTML = function () {
  721. //localStorage pozycji
  722. if (!localStorage.getItem(`a-b_position`)) {
  723. let tmpobj = {
  724. x: 0,
  725. y: 0
  726. };
  727. localStorage.setItem(`a-b_position`, JSON.stringify(tmpobj));
  728. }
  729. let position = JSON.parse(localStorage.getItem(`a-b_position`));
  730.  
  731. //boxy charakterystka raczej
  732. let box = document.createElement(`div`);
  733. box.id = `a-b_box`;
  734. box.setAttribute(`tip`, `Zlap i przenies :)`);
  735.  
  736. let input1 = document.createElement(`input`);
  737. input1.type = `text`;
  738. input1.id = `a-b_mobs`;
  739. input1.classList.add(`a-b_inputs`);
  740. input1.setAttribute(`tip`, `Wprowadz lvl mobków w postaci np. '50-70'`);
  741. box.appendChild(input1);
  742.  
  743. let input2 = document.createElement(`input`);
  744. input2.type = `text`;
  745. input2.id = `a-b_maps`;
  746. input2.classList.add(`a-b_inputs`);
  747. input2.setAttribute(`tip`, `Wprowadz nazwy map`);
  748. box.appendChild(input2);
  749.  
  750. let select = document.createElement(`select`);
  751. select.id = `a-b_list`;
  752. select.classList.add(`a-b_inputs`);
  753. select.setAttribute(`tip`,`Wybierz expowisko, aby dodatek wpisal mapy za Ciebie`);
  754. for (let i = 0; i < Object.keys(expowiska).length; i++) {
  755. let option = document.createElement(`option`);
  756. option.setAttribute(`value`, Object.keys(expowiska)[i]);
  757. option.text = Object.keys(expowiska)[i];
  758. select.appendChild(option);
  759. }
  760. box.appendChild(select);
  761.  
  762. document.body.appendChild(box);
  763.  
  764. let style = document.createElement(`style`);
  765. style.type = `text/css`;
  766. let css = `
  767. #a-b_box {
  768. position: absolute;
  769. border: 3px solid lime;
  770. padding: 5px;
  771. text-align: center;
  772. background: url(http://i.imgur.com/iQISZHL.png);
  773. cursor: grab;
  774. left: ${position.x}px;
  775. top: ${position.y}px;
  776. width: auto;
  777. height: auto;
  778. z-index: 390;
  779. }
  780. .a-b_inputs {
  781. -webkit-box-sizing: content-box;
  782. -moz-box-sizing: content-box;
  783. box-sizing: content-box;
  784. margin: 0 auto;
  785. margin-bottom: 3px;
  786. padding: 2px;
  787. cursor: pointer;
  788. border: 2px solid lime;
  789. -webkit-border-radius: 5px;
  790. border-radius: 5px;
  791. font: normal 16px/normal "Comic Sans MS", Times, serif;
  792. color: #000;
  793. -o-text-overflow: clip;
  794. text-overflow: clip;
  795. background: rgba(234,227,227,1);
  796. -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  797. box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  798. text-shadow: 1px 1px 0 rgba(255,255,255,0.66) ;
  799. display: block;
  800. }
  801. input[id=a-b_mobs] {
  802. text-align: center;
  803. }
  804. #a-b_blessingbox {
  805. border: 1px solid red;
  806. background: gray;
  807. height: 32px;
  808. width: 32px;
  809. margin: 0 auto;
  810. }
  811. `;
  812. style.appendChild(document.createTextNode(css));
  813. document.head.appendChild(style);
  814.  
  815. bB = () => {};
  816. //?? a to co robi
  817. var oldBattleMsgAFC = battleMsg;
  818. battleMsg = function (c, t) {
  819. var ret = oldBattleMsgAFC(c, t);
  820. if (c.search(/winner=/) >= 0) {
  821. $("#battleclose").click();
  822. }
  823. return ret;
  824. };
  825. //?? i to xd
  826. var oldFight = fight;
  827. fight = f => {
  828. oldFight(f);
  829. if (f.init) _g("fight&a=f");
  830. };
  831.  
  832. document.addEventListener("keyup", async function (e) {
  833. if (
  834. e.target.tagName != "INPUT" &&
  835. e.target.tagName != "TEXTAREA" &&
  836. e.which == 90 &&
  837. !g.battle
  838. ) {
  839. if (!g.engineStopped && parseInput !== window.bot.PI) {
  840. window.bot.copyPI = parseInput;
  841. parseInput = window.bot.PI;
  842. a_goTo(hero.x, hero.y);
  843. message("Bot zatrzymany");
  844. } else {
  845. parseInput = window.bot.copyPI;
  846. message("Bot uruchomiony");
  847. }
  848. }
  849. });
  850.  
  851. //localStorage dla mobów i mapek
  852. if (localStorage.getItem(`a-b_mobs`)) {
  853. input1.value = localStorage.getItem(`a-b_mobs`);
  854. }
  855. if (localStorage.getItem(`a-b_maps`)) {
  856. input2.value = localStorage.getItem(`a-b_maps`);
  857. }
  858. if (localStorage.getItem(`a-b_expowiska`)) {
  859. if (expowiska[localStorage.getItem(`a-b_expowiska`)]) {
  860. select.value = localStorage.getItem(`a-b_expowiska`);
  861. }
  862. }
  863. //listenery
  864. input1.addEventListener(`keyup`, () => {
  865. localStorage.setItem(`a-b_mobs`, input1.value);
  866. });
  867. input2.addEventListener(`keyup`, () => {
  868. localStorage.setItem(`a-b_maps`, input2.value);
  869. });
  870. select.addEventListener(`change`, () => {
  871. localStorage.setItem(`a-b_expowiska`, select.value);
  872. input2.value = expowiska[select.value].map;
  873. localStorage.setItem(`a-b_maps`, input2.value);
  874. localStorage.setItem(`alksjd`, 0);
  875. message(`Zapisano expowisko "${select.value}"`);
  876. });
  877.  
  878. $(`#a-b_box`).draggable({
  879. stop: () => {
  880. let tmpobj = {
  881. x: parseInt(document.querySelector(`#a-b_box`).style.left),
  882. y: parseInt(document.querySelector(`#a-b_box`).style.top)
  883. };
  884. localStorage.setItem(`a-b_position`, JSON.stringify(tmpobj));
  885. message(`Zapisano pozycje`);
  886. }
  887. });
  888. };
  889. this.initHTML();
  890. }();
  891.  
  892.  
  893. //Kod by Czogi
  894.  
  895. $("<button id='addMap'>Dodaj Mape</button>").appendTo("#a-b_box")
  896.  
  897. $("#addMap").click(function(){
  898. if($("#a-b_maps").val().split(", ").indexOf(map.name)==-1){
  899. if($("#a-b_maps").val()==""){
  900. $("#a-b_maps").val(map.name)
  901. } else {
  902. $("#a-b_maps").val($("#a-b_maps").val()+", "+map.name)
  903. }
  904. }
  905. localStorage.setItem(`a-b_maps`, $("#a-b_maps").val());})
  906.  
  907. $("<button id='setLvl'>Ustaw lvl</button>").appendTo("#a-b_box")
  908. $("#setLvl").click(function(){
  909. $("#a-b_mobs").val("");$("#a-b_mobs").val((hero.lvl-10)+"-"+(hero.lvl+15));
  910. localStorage.setItem(`a-b_mobs`, $("#a-b_mobs").val());
  911. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement