SHARE
TWEET

Untitled

a guest Oct 21st, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. // @match        http://stark.margonem.pl
  8. // @grant        none
  9. // ==/UserScript==
  10.  
  11. window.bot = new function () {
  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) { //[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
  16.     for (var npc in npcs) {
  17.       if (
  18.         npcs[npc].del &&
  19.         g.npc[npc] &&
  20.         Math.abs(hero.x - g.npc[npc].x) + Math.abs(hero.y - g.npc[npc].y) > 13
  21.       ) {
  22.         delete npcs[npc];
  23.       }
  24.     }
  25.     newNpcOldCopyAf(npcs); //[aa!] tutaj autor bota uruchamiamia zapisana wczesniej orygianlna funkcje preNewNpc
  26.   };
  27.  
  28.   //wylaczenie alertów i blokad,  chwilowe rozwiazanie
  29.   /*
  30.   mAlert = function () {};
  31.   if (
  32.     typeof g == "undefined" &&
  33.     document.location.href.indexOf("zemyna.margonem.pl") > -1
  34.   ) {
  35.     document.location.reload();
  36.   }*/
  37.  //autor bota w zmiennej expowiska definuje jakie mapy wchodzą w skład expowisk przez niego zdefinowanych, składnia obiejktu:
  38. /*
  39.     expowiska = {
  40.         'nazwa expowiska np. mocne orki': {
  41.             map: ['Dokładna nazw mapki z gry', 'kolejna mpka', 'itd.' ],//ta właściwość obowiązkowo do podania
  42.             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,
  43.             mobs_id: ['id mobów które branę so pod uwgę w pierszej kolejnosci przez algorytm wyznaczajacy najblizszego moba do jakiego ma isc bot']
  44.         }
  45.     }
  46. */
  47.  // pobranie id grupy <div class="npc" id="npc36923"... w konsoli wpisac g.npc['id moba(wpisac sam numer)'].grp i pobrac numer
  48.   let expowiska = {
  49.     "Pizzeria(wszystkie levele)": {
  50.       map: "Podziemia - p.1, Podziemia - p.2, Odnoga kanalu, Podziemia - p.1, Podziemia - p.3, Podziemia - p.1, Odnoga kanału, Podziemia - p.2"
  51.     },
  52.     "Szczury w Ithan": {
  53.       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"
  54.     },
  55.     "Nekropolia": {
  56.       map: "Grobowiec Rodziny Tywelta p.1, Grobowiec Rodziny Tywelta p.2"
  57.     },
  58.     "Demony": {
  59.       map: "Podziemia Siedziby Maga p.3 - sala 1, Podziemia Siedziby Maga p.3 - sala 2"
  60.     },
  61.     "Gacki szare": {
  62.       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"
  63.     },
  64.     "Mrówki": {
  65.       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"
  66.     },
  67.     "Mulusy": {
  68.       map: "Osada Mulusów, Pradawne Wzgórze Przodków"
  69.     },
  70.     "Orki": {
  71.       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"
  72.     },
  73.     "Ghule": {
  74.       map: "Polana Scierwojadów, Wioska Ghuli"
  75.     },
  76.     "Wilcze plemie": {
  77.       map: "Warczace Osuwiska, Wilcza Nora p.1, Wilcza Nora p.2, Wilcza Nora p.1",
  78.       mobs_id: [71698]
  79.     },
  80.     "Sosnowe Pajaki": {
  81.       map: "Rachminowa Jaskinia p.5, Rachminowa Jaskinia p.6 - rozlewisko, Rachminowa Jaskinia p.7 - bezdenna glebia, Rachminowa Jaskinia p.6 - rozlewisko"
  82.     },
  83.     "Koboldy": {
  84.       map: "Lazurytowa Grota p.1, Lazurytowa Grota p.2, Lazurytowa Grota p.3, Lazurytowa Grota p.2"
  85.     },
  86.     "Galaretki(te za pszczólkami)": {
  87.       map: "Prastara Kopalnia Eroch p.4 - sala 1, Prastara Kopalnia Eroch p.5"
  88.     },
  89.     "Szlak Thorpa": {
  90.       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"
  91.     },
  92.     "Biale mrówki": {
  93.       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"
  94.     },
  95.     "Demilsze": {
  96.       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"
  97.     },
  98.     "Demilisze-low": {
  99.       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"
  100.     },
  101.     "Demilisze-high": {
  102.       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"
  103.     },
  104.        "Alghule kolo tuzmer": {
  105.       map: "Skalne Cmentarzysko p.1, Skalne Cmentarzysko p.2, Skalne Cmentarzysko p.3, Skalne Cmentarzysko p.2"
  106.     },
  107.        "Szkielety kolo tuzmer": {
  108.       map: "Dolina Pustynnych Kregów, Sucha Dolina, Dolina Pustynnych Kregów, Plaskowyz Arpan, Dolina Pustynnych Kregów"
  109.     },
  110.     "Minosy": {
  111.       map: "Labirynt Wykletych p.2 - sala 1, Labirynt Wykletych p.1, Labirynt Wykletych p.2 - sala 2, Labirynt Wykletych p.1",
  112.       ignore_grp: [23]
  113.     },
  114.     "Erem pólnoc-poludnie": {
  115.       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",
  116.       mobs_id: [34826]
  117.     },
  118.     "Grexy": {
  119.       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"
  120.     },
  121.     "Miski-low": {
  122.       map: "Firnowa Grota p.1, Firnowa Grota p.2, Firnowa Grota p.2 s.1, Firnowa Grota p.2, Skały Mroźnych Śpiewów, Lodowa Wyrwa p.2, Lodowa Wyrwa p.1 s.1, Skały Mroźnych Śpiewów",
  123.       mobs_id: [34843, 34826]
  124.     },
  125.     "Miski-high": {
  126.       map: "Firnowa Grota p.1, Firnowa Grota p.2, Firnowa Grota p.2 s.1, Firnowa Grota p.2, Skały Mroźnych Śpiewó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, Skały Mroźnych Śpiewów",
  127.       mobs_id: [34843, 34826]
  128.     },
  129.     "Piraci - dwie jaskinie": {
  130.       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 - przejście 3, Korsarska Nora - przejście 2, Korsarska Nora - przejście 1, Korsarska Nora p.2, Korsarska Nora - przejście 1, Korsarska Nora - przejście 2, Korsarska Nora p.2, Korsarska Nora - przejście 2, Korsarska Nora p.1, Korsarska Nora - sala 4, Korsarska Nora - sala 3, Korsarska Nora - sala 2, Korsarska Nora - sala 1, Latarniane Wybrzeże, Ukryta Grota Morskich Diabłów, Ukryta Grota Morskich Diabłów - arsenał, Ukryta Grota Morskich Diabłów, Ukryta Grota Morskich Diabłów - siedziba, Ukryta Grota Morskich Diabłów, Ukryta Grota Morskich Diabłów - magazyn, Ukryta Grota Morskich Diabłów, Ukryta Grota Morskich Diabłów - skarbiec, Ukryta Grota Morskich Diabłów, Latarniane Wybrzeże"
  131.     },
  132.     "Gorale": {
  133.       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 "
  134.     },
  135.     "Mumie": {
  136.       map: "Oaza Siedmiu Wichrów, Ciche Rumowiska, Dolina Suchych Łez, Ciche Rumowiska"
  137.     },
  138.     "Magradit-low": {
  139.       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"
  140.     },
  141.     "Magradit-high": {
  142.       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",
  143.       ignore_grp: [4]
  144.     },
  145.     "Czerwone Orki": {
  146.       map: "Orcza Wyżyna, Osada Czerwonych Orków, Siedziba Rady Orków"
  147.     },
  148.     "Kuznia Woundriela": {
  149.       map: "Kuźnia Worundriela p.7 - sala 3, Kuźnia Worundriela p.7 - sala 4"
  150.     },
  151.     "Berserkerzy": {
  152.       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"
  153.     },
  154.      "Wiedzmy 150": {
  155.       map: "Tristan, Sabatowe Góry, Wiedźmie Kotłowisko, Upiorna Droga, Wiedźmie Kotłowisko, Sabatowe Góry"
  156.     },
  157.     "Gobliny": {
  158.       map: "Goblińskie lokum, Przedsionek Złych Goblinów, Lokum Złych Goblinów, Przedsionek Złych Goblinów",
  159.         ignore_grp: [6]
  160.     },
  161.     "Kazamaty": {
  162.       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"
  163.     },
  164.     "Duchy - dla leszczy": {
  165.       map: "Ruiny Tass Zhil, Przedsionek Grobowca, Ruiny Tass Zhil, Blota Sham Al"
  166.     },
  167.     "Duchy - dla koxów": {
  168.       map: "Ruiny Tass Zhil, Przedsionek Grobowca, Tajemne Przejscie, Przeklety Grobowiec"
  169.     },
  170.     "Ogry":{
  171.       map: "Ogrza Kawerna p.1. Ogrza Kawerna p.2, Ogrza Kawerna p.3, Ogrza Kawerna p.2"
  172.     },
  173.     "Ingotia": {
  174.       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"
  175.     },
  176.     "SK dla leszczy": {
  177.       map: "Nawiedzone Komnaty p.1, Nawiedzone Komnaty p.2, Sala Królewska, Nawiedzone Komnaty p.2"
  178.     },
  179.     "SK dla koxów": {
  180.       map: "Nawiedzone Komnaty p.1, Nawiedzone Komnaty p.2, Sala Królewska, Komnata Czarnej Perły, Sala Królewska, Nawiedzone Komnaty p.2"
  181.     },
  182.       "Furby całe": {
  183.       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"
  184.     },
  185.     "Furbole wezsze": {
  186.       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"
  187.     },
  188.       "Patrycjusze bez p3": {
  189.       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.2 - przejście - sala 2, Krypty Bezsennych p.2 - przejście - sala 1, Krypty Bezsennych p.2, Krypty Bezsennych p.1"
  190.     },
  191.     "Patrycjusze cale": {
  192.       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"
  193.     },
  194.      "Driady, Valmiry": {
  195.       map: "Gvar Hamryd, Rozlewisko Kai, Przysiółek Valmirów, Rozlewisko Kai"
  196.     },
  197.     "Myszy": {
  198.       map: "Szlamowe Kanały, Kanały Nithal"
  199.     },
  200.     "Sekta": {
  201.       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"
  202.     },
  203.     "Pajaki poczatek": {
  204.       map: "Dolina Pajęczych Korytarzy, Otchłań Pajęczych Sieci, Pajęczy Las, Zapadlisko Zniewolonych, Pajęczy Las, Otchłań Pajęczych Sieci"
  205.     },
  206.     "Pajaki +archy": {
  207.       map: "Dolina Pajęczych 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"
  208.     },
  209.     "Maddoki": {
  210.       map: "Głuchy Las, Zawodzące Kaskady, Skryty Azyl, Złota Dąbrowa, Oślizgłe Przejście - sala 1, Oślizgłe Przejście - sala 2, Złota Dąbrowa, Mglisty Las, Grota porośniętych Stalagmitów - sala wyjściowa, Grota porośniętych Stalagmitów - przejście, Grota porośniętych Stalagmitów - sala boczna, Grota porośniętych Stalagmitów - przejście, Grota porośniętych Stalagmitów - sala glówna"
  211.     },
  212.           "Anuraki": {
  213.       map: "Złota Dąbrowa, Dolina Pełznącego Krzyku, Grzęzawisko Rozpaczy, Zatrute Torfowiska, Gnijące Topielisko, Bagna Umarłych, Gnijące Topielisko, Zatrute Torfowiska, Grzęzawisko Rozpaczy, Dolina Pełznącego Krzyku"
  214.     },
  215.     "Drzewce przy maho": {
  216.       map: "Urwisko Zdrewniałych, 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 Zabłąkanych, Źródło Zakorzenionego Ludu, Piaskowa Gęstwina, Źródło 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, Źródło Zakorzenionego Ludu, Regiel Zabłąkanych, Wawóz Zakorzenionych Dusz"
  217.     },
  218.     "Maho bez PIRAMIDY": {
  219.       map: "Altepetl Mahoptekan, Niecka Xiuh Atl, Dolina Chmur, Niecka Xiuh Atl, Altepetl Mahoptekan, Dolina Chmur, Złota Góra p.1, Złota Góra p.2, Złota Góra p.3, Złota Góra p.2, Złota Góra p.1, Dolina Chmur, Altepetl Mahoptekan, Mictlan p.1, Altepetl Mahoptekan"
  220.     },
  221.       "Maho + pirka":{
  222.       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"
  223.     },
  224.     "Maho + pirka i reszta": {
  225.       map: "Altepetl Mahoptekan, Niecka Xiuh Atl, Dolina Chmur, Niecka Xiuh Atl, Altepetl Mahoptekan, Dolina Chmur, Złota Góra p.1, Złota Góra p.2, Złota Góra p.3, Złota Góra p.2, Złota 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"
  226.     },
  227.     "Wiedzmy +250": {
  228.       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"
  229.     },
  230.     "Katakumby poleglych": {
  231.       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"
  232.     },
  233.     "Pustynia Shaiharroud": {
  234.       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"
  235.     },
  236.     "RUDA": {
  237.       map: "Zapomniany Las, Rozległa Równina, Dolina Gniewu, Zalana Grota p.1, Zalana Grota p.2"
  238.     },
  239.     "MAGUA": {
  240.       map: "Głuchy Las, Zawodzące Kaskady, Skryty Azyl, Podziemne Źródło"
  241.     },
  242.     "198 thuzal": {
  243.       map: "Grań Gawronich Piór, Błota Sham Al, Ruiny Tass Zhil, Przeklęty Grobowiec, Grobowiec Przeklętego Krakania - przedsionek"
  244.     },
  245.     "225 torneg": {
  246.       map: "Zapomniany Las, Terytorium Furii, Zapadlisko Zniewolonych, Pajęczy Las, Grobowiec Przebiegłego Tkacza - przedsionek"
  247.     },
  248.     "225 archy": {
  249.       map: "Dolina Pajęczych Korytarzy, Otchłań Pajęczych Sieci, Pajęczy Las, Grobowiec Przebiegłego Tkacza - przedsionek"
  250.     },
  251.     "KWIATY -> THUZAL":{
  252.         map: "Lazurowe Wzgórze, Grań Gawronich Piór, Thuzal"
  253.     },
  254.   };
  255.  
  256.   //algorytm A* chodzenie
  257.   //główna klada bota wyznacza moba do ktorego powinna isc postac i zrwaca tablice kordow uzywaną do wykonanania
  258.   //chodzenia w margo chodzi przekazujac do zmiennej globalnej road tablice kordow i postac idzie po koleji danymi kordami
  259.   //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
  260.   //sam algoryt jest skomplokwany bo musi uwgledniac mieca przez ktore nie mozna przejsc przeszkody npc itp.
  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.   }
  378. //koniec algorytm A
  379.  
  380. //dalej cos z chodzeniem
  381. //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
  382.   class Point {
  383.     constructor(x, y, collision) {
  384.       this.x = x;
  385.       this.y = y;
  386.       this.collision = collision;
  387.       this.g = 10000000;
  388.       this.f = 10000000;
  389.       this.neighbours = [];
  390.       this.beginning = false;
  391.       this.target = false;
  392.       this.previous = undefined;
  393.     }
  394.   }
  395. // tez do chodzenia
  396. //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
  397. //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
  398.   function heuristic(p1, p2) {
  399.     return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);
  400.   }
  401. //przechodzenie przez mapki
  402. //a to funkcja pomocnicza która zwraca tablice trasy do przejcie przez postać z biezacego punktu do punktu przekazanego w parametrach x, y
  403.   function a_getWay(x, y) {
  404.     return new AStar(
  405.       map.col,
  406.       map.x,
  407.       map.y, {
  408.         x: hero.x,
  409.         y: hero.y
  410.       }, {
  411.         x: x,
  412.         y: y
  413.       },
  414.       g.npccol
  415.     ).anotherFindPath();
  416.   }
  417. //chodzenie
  418. //kolejna pomocnicza funkcja korzystajaca z poprzedniej do zmiennej globalnej window.road przekazuje wyznaczona trase i magia postac w grze chodzi ;p
  419.   function a_goTo(x, y) {
  420.     let _road_ = a_getWay(x, y);
  421.     if (!Array.isArray(_road_)) return;
  422.     window.road = _road_;
  423.   }
  424.  
  425.   //localStorage dla ostatnich mapek - zapisuje ostatnie mapki jakie ustawione byly
  426.   if (!localStorage.getItem(`a-b_lastmaps`)) {
  427.     localStorage.setItem(`a-b_lastmaps`, JSON.stringify(new Array()));
  428.   }
  429.  
  430.  
  431. //tu sa zdefiniowane globalne do bota przypisanie do zmiennej windows.strat wartości true uruchamia bota
  432.   let self = this;
  433.   let blokada = false; //jakieś zabezpieczenie pewnie zeby bot nie atakował moba jak ktos inny bije
  434.   let blokada2 = false;
  435.   let $m_id; // tu id moba kotrego ma zbic bot, wyznaczane przez algorytm
  436.   let herolx,
  437.     heroly,
  438.     increment = 0;
  439.  
  440.   let bolcka = false;
  441.   let start = false;
  442.  
  443.   g.loadQueue.push({
  444.     fun: () => {
  445.       start = true;
  446.     }
  447.   });
  448.  
  449.   let deade = true;
  450.   let globalArray = new Array();
  451. //dodawanie do globala?
  452.   function addToGlobal(id) {
  453.     let npc = g.npc[id];
  454.     if (npc.grp) {
  455.       for (let i in g.npc) {
  456.         if (g.npc[i].grp == npc.grp && !globalArray.includes(g.npc[i].id)) {
  457.           globalArray.push(g.npc[i].id);
  458.         }
  459.       }
  460.     } else if (!globalArray.includes(id)) {
  461.       globalArray.push(id);
  462.     }
  463.   }
  464. //funkcja wyszukujue czy w odleglosci 1 kratki od bohatera jest mob ktorego moze zaaktakowac
  465.   function chceckBlockade() {
  466.     for (let i in g.npc) {
  467.       let n = g.npc[i];
  468.       if (
  469.         (n.type == 2 || n.type == 3) &&
  470.         n.wt < 19 &&
  471.         checkGrp(n.id) &&
  472.         hero.lvl + 30 >= n.lvl &&
  473.         Math.abs(hero.x - n.x) < 2 &&
  474.         Math.abs(hero.y - n.y) < 2 &&
  475.         checkHeroHp()
  476.       ) {
  477.         return _g(`fight&a=attack&ff=1&id=-${n.id}`);
  478.       }
  479.     }
  480.   }
  481. /*
  482. //godzina zabicia wysylana na discord?
  483.   function getTime() {
  484.     let czas = new Date(),
  485.       godzina = czas.getHours(),
  486.       sekunda = czas.getSeconds(),
  487.       minuta = czas.getMinutes();
  488.     if (godzina < 10) godzina = `0${godzina}`;
  489.     if (minuta < 10) minuta = `0${minuta}`;
  490.     if (sekunda < 10) sekunda = `0${sekunda}`;
  491.     return `${godzina}:${minuta}:${sekunda}`;
  492.   }
  493. */
  494.   //testowa opcja to do czego?xd
  495.   setInterval(function () {
  496.     if ($m_id) {
  497.       $m_id = undefined;
  498.     }
  499.   }, 4000);
  500. // nwm co to dokladnie jest w niektorych przypadkach
  501.   let $map_cords = undefined;
  502.   this.PI = parseInput;
  503.   parseInput = function (a) {
  504.     let ret = self.PI.apply(this, arguments); //tutaj dodalem chwilowo poki nie daje rady xd
  505.     if (!g.battle && !g.dead && start) {
  506.       if (!$m_id && !bolcka) {
  507.         $m_id = self.findBestMob();
  508.         if (!$m_id && localStorage.getItem(`a-b_expowiska`)) {
  509.           let tmp_naj1,
  510.             tmp_naj2 = 9999;
  511.           if (expowiska[localStorage.getItem(`a-b_expowiska`)].mobs_id) {
  512.             let exP_mobs =
  513.               expowiska[localStorage.getItem(`a-b_expowiska`)].mobs_id;
  514.             for (let i in exP_mobs) {
  515.               if (g.npc[exP_mobs[i]]) {
  516.                 tmp_naj1 = a_getWay(g.npc[exP_mobs[i]].x, g.npc[exP_mobs[i]].y)
  517.                   .length;
  518.                 if (tmp_naj1 < tmp_naj2) {
  519.                   tmp_naj2 = tmp_naj1;
  520.                   $m_id = exP_mobs[i];
  521.                 }
  522.               }
  523.             }
  524.           }
  525.         }
  526.         blokada2 = false;
  527.         blokada = false;
  528.       }
  529.       if ($m_id) {
  530.         let mob = g.npc[$m_id];
  531.         if (!mob) {
  532.           $m_id = undefined;
  533.           return ret;
  534.         }
  535.         if (
  536.           Math.abs(hero.x - mob.x) < 2 &&
  537.           Math.abs(hero.y - mob.y) < 2 &&
  538.           !blokada
  539.         ) {
  540.           blokada = true;
  541.           if (checkGrp(mob.id)) {
  542.             _g(`fight&a=attack&ff=1&id=-${mob.id}`, function (res) {
  543.               //sprawdzenie czy walczy z innym
  544.               if (
  545.                 res.alert &&
  546.                 res.alert == `Przeciwnik walczy juz z kims innym`
  547.               ) {
  548.                 addToGlobal(mob.id);
  549.                 $m_id = undefined;
  550.               }
  551.             });
  552.           }
  553.           setTimeout(function () {
  554.             $m_id = undefined;
  555.           }, 500);
  556.         } else if (!blokada2 && !blokada) {
  557.           a_goTo(mob.x, mob.y);
  558.           blokada2 = true;
  559.         }
  560.       } else if (document.querySelector(`#a-b_maps`).value.length > 0) {
  561.         //g.gwIds - obiekt id mapy i kordy -> 1: `1.13`
  562.         //g.townname - obiekt id mapy i nazwa -> 1: `Ithan`
  563.         $map_cords = self.findBestGw();
  564.         if ($map_cords && !bolcka) {
  565.           if (hero.x == $map_cords.x && hero.y == $map_cords.y) {
  566.             _g(`walk`);
  567.           } else {
  568.             a_goTo($map_cords.x, $map_cords.y);
  569.             bolcka = true;
  570.             setTimeout(function () {
  571.               bolcka = false;
  572.             }, 2000);
  573.           }
  574.         }
  575.       }
  576.  
  577.       if (heroly == hero.y && herolx == herolx) {
  578.         increment++;
  579.         if (increment > 4) {
  580.           chceckBlockade();
  581.           increment = 0;
  582.           $m_id = undefined;
  583.           $map_cords = undefined;
  584.           bolcka = false;
  585.         }
  586.       } else {
  587.         heroly = hero.y;
  588.         herolx = hero.x;
  589.         increment = 0;
  590.       }
  591.     }
  592.  
  593.     /*wylogowanie po dedzie na glówna
  594.     if (g.dead && deade) {
  595.       deade = false;
  596.       document.location.href = `http://margonem.pl`;
  597.     }
  598.     */
  599.     //rozpoczecie walki
  600.     if (a.hasOwnProperty("f") && a.f.init == 1 && hero.clan > 0) {
  601.       if (!Object.keys(a.f.w).some(id => id < 0)) {
  602.         const team1 = [],
  603.           team2 = [];
  604.         for (let x of Object.values(a.f.w))
  605.           (x.team == 1 && team1.push(`${x.name} ${x.lvl}${x.prof}`)) ||
  606.           team2.push(`${x.name} ${x.lvl}${x.prof} `);
  607.         if (
  608.           a.f.myteam == 2 &&
  609.           document.querySelector(`#a-b_maps`).value.indexOf(map.name) > -1
  610.         ) {
  611.           const msg = `Zostalem zaatakowany na mapie ${
  612.             map.name
  613.           } o godzinie ${getTime()}.\n${team1.join(", ")} vs. ${team2.join(
  614.             ", "
  615.           )}`;
  616.         }
  617.       }
  618.     }
  619.     return ret;
  620.   };
  621. //ignorowanie grup z e2 ?
  622.   function checkGrp(id) {
  623.     if (g.npc[id].grp) {
  624.       //tutaj
  625.       if (
  626.         !checke2(g.npc[id].grp) ||
  627.         (expowiska[localStorage.getItem(`a-b_expowiska`)].ignore_grp &&
  628.           expowiska[
  629.             localStorage.getItem(`a-b_expowiska`)
  630.           ].ignore_grp.includes(g.npc[id].grp))
  631.       ) {
  632.         return false;
  633.       }
  634.     }
  635.     return true;
  636.   }
  637. //funkcja z e2
  638.   function checke2(grpid) {
  639.     for (let i in g.npc) {
  640.       if (g.npc[i].grp == grpid && g.npc[i].wt > 19) {
  641.         return false;
  642.       }
  643.     }
  644.     return true;
  645.   }
  646. // ??
  647.   function checkHeroHp() {
  648.     if ((hero.hp / hero.maxhp) * 100 > 70) {
  649.       return true;
  650.     }
  651.     return false;
  652.   }
  653. // najlepszy mob
  654.   this.findBestMob = function () {
  655.     let b1,
  656.       b2 = 9999,
  657.       id;
  658.     for (let i in g.npc) {
  659.       let n = g.npc[i];
  660.       let xxx;
  661.       let min;
  662.       let max;
  663.       if (document.querySelector(`#a-b_mobs`).value.indexOf(`-`) > -1) {
  664.         xxx = document.querySelector(`#a-b_mobs`).value.split(`-`);
  665.         min = parseInt(xxx[0]);
  666.         max = parseInt(xxx[1]);
  667.       }
  668.  
  669.       if (
  670.         (n.type == 2 || n.type == 3) &&
  671.         xxx &&
  672.         n.lvl <= max &&
  673.         n.lvl >= min &&
  674.         checkGrp(n.id) &&
  675.         !globalArray.includes(n.id) &&
  676.         n.wt < 20
  677.       ) {
  678.         b1 = a_getWay(n.x, n.y);
  679.         if (b1 == undefined) continue;
  680.         if (b1.length < b2) {
  681.           b2 = b1.length;
  682.           id = n.id;
  683.         }
  684.       }
  685.     }
  686.     return id;
  687.   };
  688.  
  689.   if (!localStorage.getItem(`alksjd`)) {
  690.     localStorage.setItem(`alksjd`, 0);
  691.   }
  692.  
  693.   this.findBestGw = function () {
  694.     let obj,
  695.       txt = document.querySelector(`#a-b_maps`).value.split(`, `),
  696.       inc = parseInt(localStorage.getItem(`alksjd`));
  697.  
  698.     for (let i in g.townname) {
  699.       //bo admini daja podwojna spacje w nazwach mapy??????
  700.       if (txt[inc] == g.townname[i].replace(/ +(?= )/g, "")) {
  701.         let c = g.gwIds[i].split(`.`);
  702.         if (a_getWay(c[0], c[1]) == undefined) continue;
  703.         obj = {
  704.           x: c[0],
  705.           y: c[1]
  706.         };
  707.       }
  708.       if (obj) {
  709.         return obj;
  710.       }
  711.     }
  712.     inc++;
  713.     if (inc > txt.length) {
  714.       inc = 0;
  715.     }
  716.     localStorage.setItem(`alksjd`, parseInt(inc));
  717.   };
  718.  
  719.   this.initHTML = function () {
  720.    
  721.     if (!localStorage.getItem(`a-b_position`)) {
  722.       let tmpobj = {
  723.         x: 0,
  724.         y: 0
  725.       };
  726.       localStorage.setItem(`a-b_position`, JSON.stringify(tmpobj));
  727.     }
  728.     let position = JSON.parse(localStorage.getItem(`a-b_position`));
  729.  
  730.     //boxy
  731.     let box = document.createElement(`div`);
  732.     box.id = `a-b_box`;
  733.     box.setAttribute(`tip`, `Zlap i przenies :)`);
  734.  
  735.     let input1 = document.createElement(`input`);
  736.     input1.type = `text`;
  737.     input1.id = `a-b_mobs`;
  738.     input1.classList.add(`a-b_inputs`);
  739.     input1.setAttribute(`tip`, `Wprowadz lvl mobków w postaci np. '50-70'`);
  740.     box.appendChild(input1);
  741.  
  742.     let input2 = document.createElement(`input`);
  743.     input2.type = `text`;
  744.     input2.id = `a-b_maps`;
  745.     input2.classList.add(`a-b_inputs`);
  746.     input2.setAttribute(`tip`, `Wprowadz nazwy map`);
  747.     box.appendChild(input2);
  748.  
  749.     let select = document.createElement(`select`);
  750.     select.id = `a-b_list`;
  751.     select.classList.add(`a-b_inputs`);
  752.     select.setAttribute(`tip`,`Wybierz expowisko, aby dodatek wpisal mapy za Ciebie`);
  753.     for (let i = 0; i < Object.keys(expowiska).length; i++) {
  754.       let option = document.createElement(`option`);
  755.       option.setAttribute(`value`, Object.keys(expowiska)[i]);
  756.       option.text = Object.keys(expowiska)[i];
  757.       select.appendChild(option);
  758.     }
  759.     box.appendChild(select);
  760.  
  761.     document.body.appendChild(box);
  762.  
  763.     let style = document.createElement(`style`);
  764.     style.type = `text/css`;
  765.     let css = `
  766.             #a-b_box {
  767.                position: absolute;
  768.                border: 3px solid lime;
  769.               padding: 5px;
  770.               text-align: center;
  771.                background: url(http://i.imgur.com/iQISZHL.png);
  772.                cursor: grab;
  773.                left: ${position.x}px;
  774.                top: ${position.y}px;
  775.               width: auto;
  776.                height: auto;
  777.                z-index: 390;
  778.              }
  779.             .a-b_inputs {
  780.                 -webkit-box-sizing: content-box;
  781.                 -moz-box-sizing: content-box;
  782.                 box-sizing: content-box;
  783.                 margin: 0 auto;
  784.                 margin-bottom: 3px;
  785.                 padding: 2px;
  786.                 cursor: pointer;
  787.                 border: 2px solid lime;
  788.                 -webkit-border-radius: 5px;
  789.                 border-radius: 5px;
  790.                 font: normal 16px/normal "Comic Sans MS", Times, serif;
  791.                 color: #000;
  792.                 -o-text-overflow: clip;
  793.                 text-overflow: clip;
  794.                 background: rgba(234,227,227,1);
  795.                 -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  796.                 box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  797.                 text-shadow: 1px 1px 0 rgba(255,255,255,0.66) ;
  798.                 display: block;
  799.               }
  800.               input[id=a-b_mobs] {
  801.                   text-align: center;
  802.               }
  803.               #a-b_blessingbox {
  804.                   border: 1px solid red;
  805.                   background: gray;
  806.                   height: 32px;
  807.                   width: 32px;
  808.                   margin: 0 auto;
  809.               }
  810.         `;
  811.     style.appendChild(document.createTextNode(css));
  812.     document.head.appendChild(style);
  813.  
  814.     bB = () => {};
  815. //?? a to co robi
  816.     var oldBattleMsgAFC = battleMsg;
  817.     battleMsg = function (c, t) {
  818.       var ret = oldBattleMsgAFC(c, t);
  819.       if (c.search(/winner=/) >= 0) {
  820.         $("#battleclose").click();
  821.       }
  822.       return ret;
  823.     };
  824. //?? i to xd
  825.     var oldFight = fight;
  826.     fight = f => {
  827.       oldFight(f);
  828.       if (f.init) _g("fight&a=f");
  829.     };
  830.  
  831.     document.addEventListener("keyup", async function (e) {
  832.       if (
  833.         e.target.tagName != "INPUT" &&
  834.         e.target.tagName != "TEXTAREA" &&
  835.         e.which == 90 &&
  836.         !g.battle
  837.       ) {
  838.         if (!g.engineStopped && parseInput !== window.bot.PI) {
  839.           window.bot.copyPI = parseInput;
  840.           parseInput = window.bot.PI;
  841.           a_goTo(hero.x, hero.y);
  842.           message("Bot zatrzymany");
  843.         } else {
  844.           parseInput = window.bot.copyPI;
  845.           message("Bot uruchomiony");
  846.         }
  847.       }
  848.     });
  849.  
  850.     //localStorage dla mobów i mapek
  851.     if (localStorage.getItem(`a-b_mobs`)) {
  852.       input1.value = localStorage.getItem(`a-b_mobs`);
  853.     }
  854.     if (localStorage.getItem(`a-b_maps`)) {
  855.       input2.value = localStorage.getItem(`a-b_maps`);
  856.     }
  857.     if (localStorage.getItem(`a-b_expowiska`)) {
  858.       if (expowiska[localStorage.getItem(`a-b_expowiska`)]) {
  859.         select.value = localStorage.getItem(`a-b_expowiska`);
  860.       }
  861.     }
  862.     //listenery
  863.     input1.addEventListener(`keyup`, () => {
  864.       localStorage.setItem(`a-b_mobs`, input1.value);
  865.     });
  866.     input2.addEventListener(`keyup`, () => {
  867.       localStorage.setItem(`a-b_maps`, input2.value);
  868.     });
  869.     select.addEventListener(`change`, () => {
  870.       localStorage.setItem(`a-b_expowiska`, select.value);
  871.       input2.value = expowiska[select.value].map;
  872.       localStorage.setItem(`a-b_maps`, input2.value);
  873.       localStorage.setItem(`alksjd`, 0);
  874.       message(`Zapisano expowisko "${select.value}"`);
  875.     });
  876.  
  877.     $(`#a-b_box`).draggable({
  878.       stop: () => {
  879.         let tmpobj = {
  880.           x: parseInt(document.querySelector(`#a-b_box`).style.left),
  881.           y: parseInt(document.querySelector(`#a-b_box`).style.top)
  882.         };
  883.         localStorage.setItem(`a-b_position`, JSON.stringify(tmpobj));
  884.         message(`Zapisano pozycje`);
  885.       }
  886.     });
  887.   };
  888.   this.initHTML();
  889. }();
  890.  
  891.  
  892. //Kod by Czogi
  893.  
  894. $("<button id='addMap'>Dodaj Mape</button>").appendTo("#a-b_box")
  895.  
  896. $("#addMap").click(function(){
  897. if($("#a-b_maps").val().split(", ").indexOf(map.name)==-1){
  898.     if($("#a-b_maps").val()==""){
  899.         $("#a-b_maps").val(map.name)
  900.     } else {
  901.             $("#a-b_maps").val($("#a-b_maps").val()+", "+map.name)
  902.         }
  903. }
  904. localStorage.setItem(`a-b_maps`, $("#a-b_maps").val());})
  905.  
  906. $("<button id='setLvl'>Ustaw lvl</button>").appendTo("#a-b_box")
  907. $("#setLvl").click(function(){
  908.     $("#a-b_mobs").val("");$("#a-b_mobs").val((hero.lvl-10)+"-"+(hero.lvl+15));
  909.     localStorage.setItem(`a-b_mobs`, $("#a-b_mobs").val());
  910. })
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top