Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.87 KB | None | 0 0
  1. // ==UserScript==
  2. // @name expmanager
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.0
  5. // @description Od teraz nie musisz już klikać!
  6. // @author fanowej aka kox
  7. // @match http://gefion.margonem.pl/
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. window.adiwilkTestBot = new function () {
  12.  
  13. const newNpcOldCopyAf = preNewNpc;
  14. preNewNpc = function (npcs) {
  15. for (var npc in npcs) {
  16. if (
  17. npcs[npc].del &&
  18. g.npc[npc] &&
  19. Math.abs(hero.x - g.npc[npc].x) + Math.abs(hero.y - g.npc[npc].y) > 13
  20. ) {
  21. delete npcs[npc];
  22. }
  23. }
  24. newNpcOldCopyAf(npcs);
  25. };
  26.  
  27. //obiekt z nazwami expowisk
  28. let expowiska = {
  29. "Mrówki 20-29": {
  30. 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"
  31. },
  32. "Zbiry 29-31": {
  33. map: "Pagórki Łupieżców, Skład Grabieżców, Pagórki Łupieżców, Schowek na Łupy, Pagórki Łupieżców, Kamienna Kryjówka, Pagórki Łupieżców"
  34. },
  35. "Orki 31-40": {
  36. map: "Opuszczony Bastion, Podziemne Przejście p.1, Podziemne Przejście p.2, Zrujnowana Wieża, Opuszczony Bastion, Zrujnowana Wieża, Podziemne Przejście p.2, Podziemne Przejście p.1"
  37. },
  38. "Dziki 40-55": {
  39. map: "Racicowy Matecznik, Zbójecka Skarpa"
  40. },
  41. "Demilisze 55-70": {
  42. map: "Rachminowa Jaskinia p.4 - przepaście, Wąski 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, Wąski chodnik p.4"
  43. },
  44. "Magazynierzy 70-80": {
  45. map: "Magazyn Świątyni, Magazyn Świątyni p.2, Krypta Świątyni Andarum, Magazyn Świątyni p.2, Zbrojownia Andarum, Magazyn Świątyni p.2, Magazyn Świątyni"
  46. },
  47. "Erem 80-90": {
  48. map: "Erem Czarnego Słońca - sala wejściowa, Erem Czarnego Słońca p.1 s.1, Erem Czarnego Słońca - sala wejściowa, Erem Czarnego Słońca p.2 s.1, Erem Czarnego Słońca p.2 s.2, Erem Czarnego Słońca - sala wejściowa, Erem Czarnego Słońca p.1 s.2, Erem Czarnego Słońca - sala wejściowa, Skały Mroźnych Śpiewów, Erem Czarnego Słońca - południe, Erem Czarnego Słońca - lochy, Erem Czarnego Słońca - północ, Skały Mroźnych Śpiewów",
  49. mobs_id: [34826]
  50. },
  51. "Miśki 90-110": {
  52. 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",
  53. mobs_id: [34843, 34826]
  54. },
  55. "Magradit 110-130": {
  56. 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",
  57. ignore_grp: [4]
  58. },
  59. "Berki 130-150": {
  60. map: "Zaginiona Dolina, Arachnidowa Grota p.3, Arachnidowa Grota p.2, Arachnidowa Grota p.1, Zaginiona Dolina, Opuszczona Twierdza, Szuwarowe Trzęsawisko, Grobowiec Przodków, Cenotaf Berserkerów p.1, Grobowiec Przodków, Czarcie Oparzeliska, Pustelnia Wojownika p.2, Pustelnia Wojownika p.1, Czarcie Oparzeliska, Szuwarowe Trzęsawisko, Opuszczona Twierdza, Szuwarowe Trzęsawisko, Czarcie Oparzeliska, Pustelnia Wojownika p.1, Pustelnia Wojownika p.2, Czarcie Oparzeliska, Grobowiec Przodków, Cenotaf Berserkerów p.1"
  61. },
  62. "Duchy 150-160": {
  63. map: "Ruiny Tass Zhil, Przedsionek Grobowca, Tajemne Przejście, Przeklęty Grobowiec, Ruiny Tass Zhil, Błota Sham Al"
  64. },
  65. "Ingotia 160-170": {
  66. 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 Żądzy p.5, Komora Opuszczonych p.3, Jaskinia Rogogłowych - aula, Komnata Wygnańców p.3, Komora Budowniczego p.5, Komnata Wygnańców p.3, Jaskinia Rogogłowych p.2, Jaskinia Rogogłowych - aula, Jaskinia Rogogłowych p.1 - wyjście, Wyspa Ingotia - północ, Jaskinia Rogogłowych p.1 - wyjście, Jaskinia Rogogłowych - aula, Jaskinia Rogogłowych p.2, Komnata Wygnańców p.3, Komora Budowniczego p.5, Komnata Wygnańców p.3, Jaskinia Rogogłowych - aula, Komora Opuszczonych p.3, Sala Żądzy p.5, Hala Odszczepieńcó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",
  67. ignore_grp: []
  68. },
  69. "Furbole 170-180": {
  70. map: "Zapomniany Las, Rozległa Równina, Wzgórza Obłędu, Rozległa Równina, Dolina Gniewu, Zalana Grota p.1, Zalana Grota p.2, Zalana Grota p.1, Dolina Gniewu, Terytorium Furii, Zapadlisko Zniewolonych, Terytorium Furii, Dolina Gniewu",
  71. ignore_grp: []
  72. },
  73. "Patrycjusze 180-190": {
  74. 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, Krypty Bezsennych p.2 - przejście - sala 2, Krypty Bezsennych p.2 - przejście - sala 1, Krypty Bezsennych p.2"
  75. },
  76. "Sekta 190-210": {
  77. 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"
  78. },
  79. "Pająki 210-215": {
  80. 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"
  81. },
  82. "Maddoki-anuraki 215-235": {
  83. map: "Złota Dąbrowa, Oślizgłe Przejście - sala 1, Oślizgłe Przejście - sala 2, 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, 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 główna, Grota porośniętych Stalagmitów - przejście, Grota porośniętych Stalagmitów - sala wyjściowa, 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 główna, 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 wyjściowa, Mglisty Las, Złota Dąbrowa, Oślizgłe Przejście - sala 2, Oślizgłe Przejście - sala 1, Złota Dąbrowa"
  84. },
  85. "Maho-drzewa 235-252": {
  86. 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 Rwącej Rzeki p.1, Mictlan Rwącej Rzeki p.2, Mictlan Rwącej Rzeki p.3, Mictlan Rwącej Rzeki p.4, Mictlan Rwącej Rzeki p.5, Mictlan Rwącej Rzeki p.4, Mictlan Rwącej Rzeki p.3, Mictlan Rwącej Rzeki p.2, Mictlan Rwącej Rzeki p.1, Altepetl Mahoptekan, Źródło Zakorzenionego Ludu, Altepetl Mahoptekan"
  87. },
  88. "Katy 260-275": {
  89. map: "Katakumby Gwałtownej Śmierci, Korytarz Porzuconych Marzeń, Katakumby Opętanych Dusz, Katakumby Odnalezionych Skrytobójców, Korytarz Porzuconych Nadziei, Katakumby Opętanych Dusz, Zachodni Tunel Jaźni, Katakumby Krwawych Wypraw, Wschodni Tunel Jaźni"
  90. },
  91. "Pustynia 275-295": {
  92. map: "Pustynia Shaiharrud - wschód, Jurta Nomadzka, Pustynia Shaiharrud - wschód, Grota Poświęcenia, 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 Piłowej, Pustynia Shaiharrud - zachód, Jaskinia Szczęk, Jurta Czcicieli, Pustynia Shaiharrud - zachód, Namiot Gwardii Smokoszczękich, Pustynia Shaiharrud - zachód, Sępiarnia, 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"
  93. },
  94. "testowanie 252-260": {
  95. map: "Potępione Zamczysko, Potępione Zamczysko - korytarz wejściowy, Potępione Zamczysko - lochy zachodnie, Potępione Zamczysko - korytarz wejściowy, Potępione Zamczysko - lochy wschodnie, Potępione Zamczysko - korytarz wejściowy, Potępione Zamczysko - zachodnia komnata, Potępione Zamczysko - korytarz wejściowy, Potępione Zamczysko - wschodnia komnata, Potępione Zamczysko - korytarz wejściowy, Potępione Zamczysko, Plugawe Pustkowie, Zachodnie Zbocze, Plugawe Pustkowie, Jęczywąwóz, Pogranicze Wisielców, Jęczywąwóz, Plugawe Pustkowie, Zachodnie Zbocze, Potępione Zamczysko"
  96. }
  97. };
  98.  
  99. //algorytm A*
  100. class AStar {
  101. constructor(
  102. collisionsString,
  103. width,
  104. height,
  105. start,
  106. end,
  107. additionalCollisions
  108. ) {
  109. this.width = width;
  110. this.height = height;
  111. this.collisions = this.parseCollisions(collisionsString, width, height);
  112. this.additionalCollisions = additionalCollisions || {};
  113. this.start = this.collisions[start.x][start.y];
  114. this.end = this.collisions[end.x][end.y];
  115. this.start.beginning = true;
  116. this.start.g = 0;
  117. this.start.f = heuristic(this.start, this.end);
  118. this.end.target = true;
  119. this.end.g = 0;
  120. this.addNeighbours();
  121. this.openSet = [];
  122. this.closedSet = [];
  123. this.openSet.push(this.start);
  124. }
  125.  
  126. parseCollisions(collisionsString, width, height) {
  127. const collisions = new Array(width);
  128. for (let w = 0; w < width; w++) {
  129. collisions[w] = new Array(height);
  130. for (let h = 0; h < height; h++) {
  131. collisions[w][h] = new Point(
  132. w,
  133. h,
  134. collisionsString.charAt(w + h * width) === "1"
  135. );
  136. }
  137. }
  138. return collisions;
  139. }
  140.  
  141. addNeighbours() {
  142. for (let i = 0; i < this.width; i++) {
  143. for (let j = 0; j < this.height; j++) {
  144. this.addPointNeighbours(this.collisions[i][j]);
  145. }
  146. }
  147. }
  148.  
  149. addPointNeighbours(point) {
  150. const x = point.x,
  151. y = point.y;
  152. const neighbours = [];
  153. if (x > 0) neighbours.push(this.collisions[x - 1][y]);
  154. if (y > 0) neighbours.push(this.collisions[x][y - 1]);
  155. if (x < this.width - 1) neighbours.push(this.collisions[x + 1][y]);
  156. if (y < this.height - 1) neighbours.push(this.collisions[x][y + 1]);
  157. point.neighbours = neighbours;
  158. }
  159.  
  160. anotherFindPath() {
  161. while (this.openSet.length > 0) {
  162. let currentIndex = this.getLowestF();
  163. let current = this.openSet[currentIndex];
  164. if (current === this.end) return this.reconstructPath();
  165. else {
  166. this.openSet.splice(currentIndex, 1);
  167. this.closedSet.push(current);
  168. for (const neighbour of current.neighbours) {
  169. if (this.closedSet.includes(neighbour)) continue;
  170. else {
  171. const tentative_score = current.g + 1;
  172. let isBetter = false;
  173. if (
  174. this.end == this.collisions[neighbour.x][neighbour.y] ||
  175. (!this.openSet.includes(neighbour) &&
  176. !neighbour.collision &&
  177. !this.additionalCollisions[neighbour.x + 256 * neighbour.y])
  178. ) {
  179. this.openSet.push(neighbour);
  180. neighbour.h = heuristic(neighbour, this.end);
  181. isBetter = true;
  182. } else if (
  183. tentative_score < neighbour.g &&
  184. !neighbour.collision
  185. ) {
  186. isBetter = true;
  187. }
  188. if (isBetter) {
  189. neighbour.previous = current;
  190. neighbour.g = tentative_score;
  191. neighbour.f = neighbour.g + neighbour.h;
  192. }
  193. }
  194. }
  195. }
  196. }
  197. }
  198.  
  199. getLowestF() {
  200. let lowestFIndex = 0;
  201. for (let i = 0; i < this.openSet.length; i++) {
  202. if (this.openSet[i].f < this.openSet[lowestFIndex].f) lowestFIndex = i;
  203. }
  204. return lowestFIndex;
  205. }
  206.  
  207. reconstructPath() {
  208. const path = [];
  209. let currentNode = this.end;
  210. while (currentNode !== this.start) {
  211. path.push(currentNode);
  212. currentNode = currentNode.previous;
  213. }
  214. return path;
  215. }
  216. }
  217.  
  218. class Point {
  219. constructor(x, y, collision) {
  220. this.x = x;
  221. this.y = y;
  222. this.collision = collision;
  223. this.g = 10000000;
  224. this.f = 10000000;
  225. this.neighbours = [];
  226. this.beginning = false;
  227. this.target = false;
  228. this.previous = undefined;
  229. }
  230. }
  231.  
  232. function heuristic(p1, p2) {
  233. return Math.abs(p1.x - p2.x) + Math.abs(p1.y - p2.y);
  234. }
  235.  
  236. function a_getWay(x, y) {
  237. return new AStar(
  238. map.col,
  239. map.x,
  240. map.y, {
  241. x: hero.x,
  242. y: hero.y
  243. }, {
  244. x: x,
  245. y: y
  246. },
  247. g.npccol
  248. ).anotherFindPath();
  249. }
  250.  
  251. function a_goTo(x, y) {
  252. let _road_ = a_getWay(x, y);
  253. if (!Array.isArray(_road_)) return;
  254. window.road = _road_;
  255. }
  256.  
  257. //localStorage dla ostatnich mapek
  258. if (!localStorage.getItem(`adi-bot_lastmaps`)) {
  259. localStorage.setItem(`adi-bot_lastmaps`, JSON.stringify(new Array()));
  260. }
  261.  
  262. let self = this;
  263. let blokada = false;
  264. let blokada2 = false;
  265. let $m_id;
  266. let herolx,
  267. heroly,
  268. increment = 0;
  269.  
  270. let bolcka = false;
  271. let start = false;
  272.  
  273. g.loadQueue.push({
  274. fun: () => {
  275. start = true;
  276. }
  277. });
  278.  
  279. let deade = true;
  280. let globalArray = new Array();
  281.  
  282. function addToGlobal(id) {
  283. let npc = g.npc[id];
  284. if (npc.grp) {
  285. for (let i in g.npc) {
  286. if (g.npc[i].grp == npc.grp && !globalArray.includes(g.npc[i].id)) {
  287. globalArray.push(g.npc[i].id);
  288. }
  289. }
  290. } else if (!globalArray.includes(id)) {
  291. globalArray.push(id);
  292. }
  293. }
  294.  
  295. function chceckBlockade() {
  296. for (let i in g.npc) {
  297. let n = g.npc[i];
  298. if (
  299. (n.type == 2 || n.type == 3) &&
  300. n.wt < 19 &&
  301. checkGrp(n.id) &&
  302. hero.lvl + 30 >= n.lvl &&
  303. Math.abs(hero.x - n.x) < 2 &&
  304. Math.abs(hero.y - n.y) < 2 &&
  305. checkHeroHp()
  306. ) {
  307. return _g(`fight&a=attack&ff=1&id=-${n.id}`);
  308. }
  309. }
  310. }
  311.  
  312. function getTime() {
  313. let czas = new Date(),
  314. godzina = czas.getHours(),
  315. sekunda = czas.getSeconds(),
  316. minuta = czas.getMinutes();
  317. if (godzina < 10) godzina = `0${godzina}`;
  318. if (minuta < 10) minuta = `0${minuta}`;
  319. if (sekunda < 10) sekunda = `0${sekunda}`;
  320. return `${godzina}:${minuta}:${sekunda}`;
  321. }
  322.  
  323. //testowa opcja
  324. setInterval(function () {
  325. if ($m_id) {
  326. $m_id = undefined;
  327. }
  328. }, 4000);
  329. let $map_cords = undefined;
  330. this.PI = parseInput;
  331. parseInput = function (a) {
  332. let ret = self.PI.apply(this, arguments);
  333. if (!g.battle && !g.dead && start) {
  334. if (!$m_id && !bolcka) {
  335. $m_id = self.findBestMob();
  336. if (!$m_id && localStorage.getItem(`adi-bot_expowiska`)) {
  337. let tmp_naj1,
  338. tmp_naj2 = 9999;
  339. if (expowiska[localStorage.getItem(`adi-bot_expowiska`)].mobs_id) {
  340. let exP_mobs =
  341. expowiska[localStorage.getItem(`adi-bot_expowiska`)].mobs_id;
  342. for (let i in exP_mobs) {
  343. if (g.npc[exP_mobs[i]]) {
  344. tmp_naj1 = a_getWay(g.npc[exP_mobs[i]].x, g.npc[exP_mobs[i]].y)
  345. .length;
  346. if (tmp_naj1 < tmp_naj2) {
  347. tmp_naj2 = tmp_naj1;
  348. $m_id = exP_mobs[i];
  349. }
  350. }
  351. }
  352. }
  353. }
  354. blokada2 = false;
  355. blokada = false;
  356. }
  357. if ($m_id) {
  358. let mob = g.npc[$m_id];
  359. if (!mob) {
  360. $m_id = undefined;
  361. return ret;
  362. }
  363. if (
  364. Math.abs(hero.x - mob.x) < 2 &&
  365. Math.abs(hero.y - mob.y) < 2 &&
  366. !blokada
  367. ) {
  368. blokada = true;
  369. if (checkGrp(mob.id)) {
  370. _g(`fight&a=attack&ff=1&id=-${mob.id}`, function (res) {
  371. //sprawdzenie czy walczy z innym
  372. if (
  373. res.alert &&
  374. res.alert == `Przeciwnik walczy już z kimś innym.`
  375. ) {
  376. addToGlobal(mob.id);
  377. $m_id = undefined;
  378. }
  379. });
  380. }
  381. setTimeout(function () {
  382. $m_id = undefined;
  383. }, 500);
  384. } else if (!blokada2 && !blokada) {
  385. a_goTo(mob.x, mob.y);
  386. blokada2 = true;
  387. }
  388. } else if (document.querySelector(`#adi-bot_maps`).value.length > 0) {
  389. //g.gwIds - obiekt id mapy i kordy -> 1: `1.13`
  390. //g.townname - obiekt id mapy i nazwa -> 1: `Ithan`
  391. $map_cords = self.findBestGw();
  392. if ($map_cords && !bolcka) {
  393. if (hero.x == $map_cords.x && hero.y == $map_cords.y) {
  394. _g(`walk`);
  395. } else {
  396. a_goTo($map_cords.x, $map_cords.y);
  397. bolcka = true;
  398. setTimeout(function () {
  399. bolcka = false;
  400. }, 2000);
  401. }
  402. }
  403. }
  404.  
  405. if (heroly == hero.y && herolx == herolx) {
  406. increment++;
  407. if (increment > 4) {
  408. chceckBlockade();
  409. increment = 0;
  410. $m_id = undefined;
  411. $map_cords = undefined;
  412. bolcka = false;
  413. }
  414. } else {
  415. heroly = hero.y;
  416. herolx = hero.x;
  417. increment = 0;
  418. }
  419. }
  420.  
  421. //rozpoczecie walki
  422. if (a.hasOwnProperty("f") && a.f.init == 1 && hero.clan > 0) {
  423. if (!Object.keys(a.f.w).some(id => id < 0)) {
  424. const team1 = [],
  425. team2 = [];
  426. for (let x of Object.values(a.f.w))
  427. (x.team == 1 && team1.push(`${x.name} ${x.lvl}${x.prof}`)) ||
  428. team2.push(`${x.name} ${x.lvl}${x.prof} `);
  429. if (
  430. a.f.myteam == 2 &&
  431. document.querySelector(`#adi-bot_maps`).value.indexOf(map.name) > -1
  432. ) {
  433. const msg = `Zostałem zaatakowany na mapie ${
  434. map.name
  435. } o godzinie ${getTime()}.\n${team1.join(", ")} vs. ${team2.join(
  436. ", "
  437. )}`;
  438. }
  439. }
  440. }
  441. return ret;
  442. };
  443.  
  444. function checkGrp(id) {
  445. if (g.npc[id].grp) {
  446. //tutaj
  447. if (
  448. !checke2(g.npc[id].grp) ||
  449. (expowiska[localStorage.getItem(`adi-bot_expowiska`)].ignore_grp &&
  450. expowiska[
  451. localStorage.getItem(`adi-bot_expowiska`)
  452. ].ignore_grp.includes(g.npc[id].grp))
  453. ) {
  454. return false;
  455. }
  456. }
  457. return true;
  458. }
  459.  
  460. function checke2(grpid) {
  461. for (let i in g.npc) {
  462. if (g.npc[i].grp == grpid && g.npc[i].wt > 19) {
  463. return false;
  464. }
  465. }
  466. return true;
  467. }
  468.  
  469. function checkHeroHp() {
  470. if ((hero.hp / hero.maxhp) * 100 > 70) {
  471. return true;
  472. }
  473. return false;
  474. }
  475.  
  476. this.findBestMob = function () {
  477. let b1,
  478. b2 = 9999,
  479. id;
  480. for (let i in g.npc) {
  481. let n = g.npc[i];
  482. let xxx;
  483. let min;
  484. let max;
  485. if (document.querySelector(`#adi-bot_mobs`).value.indexOf(`-`) > -1) {
  486. xxx = document.querySelector(`#adi-bot_mobs`).value.split(`-`);
  487. min = parseInt(xxx[0]);
  488. max = parseInt(xxx[1]);
  489. }
  490.  
  491. if (
  492. (n.type == 2 || n.type == 3) &&
  493. xxx &&
  494. n.lvl <= max &&
  495. n.lvl >= min &&
  496. checkGrp(n.id) &&
  497. !globalArray.includes(n.id) &&
  498. n.wt < 20
  499. ) {
  500. b1 = a_getWay(n.x, n.y);
  501. if (b1 == undefined) continue;
  502. if (b1.length < b2) {
  503. b2 = b1.length;
  504. id = n.id;
  505. }
  506. }
  507. }
  508. return id;
  509. };
  510.  
  511. if (!localStorage.getItem(`alksjd`)) {
  512. localStorage.setItem(`alksjd`, 0);
  513. }
  514.  
  515. this.findBestGw = function () {
  516. let obj,
  517. txt = document.querySelector(`#adi-bot_maps`).value.split(`, `),
  518. inc = parseInt(localStorage.getItem(`alksjd`));
  519.  
  520. for (let i in g.townname) {
  521. //bo admini daja podwojna spacje w nazwach mapy
  522. if (txt[inc] == g.townname[i].replace(/ +(?= )/g, "")) {
  523. let c = g.gwIds[i].split(`.`);
  524. if (a_getWay(c[0], c[1]) == undefined) continue;
  525. obj = {
  526. x: c[0],
  527. y: c[1]
  528. };
  529. }
  530. if (obj) {
  531. return obj;
  532. }
  533. }
  534. inc++;
  535. if (inc > txt.length) {
  536. inc = 0;
  537. }
  538. localStorage.setItem(`alksjd`, parseInt(inc));
  539. };
  540.  
  541. this.initHTML = function () {
  542. //localStorage pozycji
  543. if (!localStorage.getItem(`adi-bot_position`)) {
  544. let tmpobj = {
  545. x: 0,
  546. y: 0
  547. };
  548. localStorage.setItem(`adi-bot_position`, JSON.stringify(tmpobj));
  549. }
  550. let position = JSON.parse(localStorage.getItem(`adi-bot_position`));
  551.  
  552. //boxy
  553. let box = document.createElement(`div`);
  554. box.id = `adi-bot_box`;
  555. box.setAttribute(`tip`, `Przenieś okno dodatku.`);
  556.  
  557. let input1 = document.createElement(`input`);
  558. input1.type = `text`;
  559. input1.id = `adi-bot_mobs`;
  560. input1.classList.add(`adi-bot_inputs`);
  561. input1.setAttribute(`tip`, `Uzupełnij przedział poziomowy mobów.`);
  562. box.appendChild(input1);
  563.  
  564. let input2 = document.createElement(`input`);
  565. input2.type = `text`;
  566. input2.id = `adi-bot_maps`;
  567. input2.classList.add(`adi-bot_inputs`);
  568. input2.setAttribute(`tip`, `Mapy przez które chodzi nasza postać.`);
  569. box.appendChild(input2);
  570.  
  571. let select = document.createElement(`select`);
  572. select.id = `adi-bot_list`;
  573. select.classList.add(`adi-bot_inputs`);
  574. select.setAttribute(
  575. `tip`,
  576. `Automatyczne uzupełnianie mapek.`
  577. );
  578. for (let i = 0; i < Object.keys(expowiska).length; i++) {
  579. let option = document.createElement(`option`);
  580. option.setAttribute(`value`, Object.keys(expowiska)[i]);
  581. option.text = Object.keys(expowiska)[i];
  582. select.appendChild(option);
  583. }
  584. box.appendChild(select);
  585.  
  586. document.body.appendChild(box);
  587.  
  588. let style = document.createElement(`style`);
  589. style.type = `text/css`;
  590. let css = `
  591. #adi-bot_box {
  592. position: absolute;
  593. border: 2px solid rgb(32, 32, 32);
  594. padding: 4px;
  595. text-align: center;
  596. background: url(https://i.imgur.com/5OUtHBM.png);
  597. cursor: grab;
  598. left: ${position.x}px;
  599. top: ${position.y}px;
  600. width: auto;
  601. height: auto;
  602. z-index: 500;
  603. }
  604. .adi-bot_inputs {
  605. -webkit-box-sizing: content-box;
  606. -moz-box-sizing: content-box;
  607. box-sizing: content-box;
  608. margin: 1 px;
  609. margin-bottom: 3px;
  610. padding: 3px;
  611. cursor: pointer;
  612. border: 2px solid rgb(32, 32, 32);
  613. -webkit-border-radius: 5px;
  614. border-radius: 5px;
  615. font: normal 11px/normal "Arial", Times, serif;
  616. color: #FFFFFF;
  617. -o-text-overflow: clip;
  618. text-overflow: clip;
  619. background: black;
  620. -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,0.2) inset;
  621. box-shadow: box-shadow: rgba(0, 0, 0, 0.8) 0px 0px 8px;
  622. text-shadow: ;
  623. display: block;
  624. }
  625. input[id=adi-bot_mobs] {
  626. text-align: center;
  627. }
  628.  
  629. `;
  630. style.appendChild(document.createTextNode(css));
  631. document.head.appendChild(style);
  632.  
  633. bB = () => {};
  634.  
  635. var oldBattleMsgAFC = battleMsg;
  636. battleMsg = function (c, t) {
  637. var ret = oldBattleMsgAFC(c, t);
  638. if (c.search(/winner=/) >= 0) {
  639. $("#battleclose").click();
  640. }
  641. return ret;
  642. };
  643.  
  644. var oldFight = fight;
  645. fight = f => {
  646. oldFight(f);
  647. if (f.init) _g("fight&a=f");
  648. };
  649.  
  650. document.addEventListener("keyup", async function (e) {
  651. if (
  652. e.target.tagName != "INPUT" &&
  653. e.target.tagName != "TEXTAREA" &&
  654. e.which == 90 &&
  655. !g.battle
  656. ) {
  657. if (!g.engineStopped && parseInput !== window.adiwilkTestBot.PI) {
  658. window.adiwilkTestBot.copyPI = parseInput;
  659. parseInput = window.adiwilkTestBot.PI;
  660. a_goTo(hero.x, hero.y);
  661. message("Dodatek wyłączony.");
  662. } else {
  663. parseInput = window.adiwilkTestBot.copyPI;
  664. message("Dodatek włączony.");
  665. }
  666. }
  667. });
  668.  
  669. //localStorage dla mobów i mapek
  670. if (localStorage.getItem(`adi-bot_mobs`)) {
  671. input1.value = localStorage.getItem(`adi-bot_mobs`);
  672. }
  673. if (localStorage.getItem(`adi-bot_maps`)) {
  674. input2.value = localStorage.getItem(`adi-bot_maps`);
  675. }
  676. if (localStorage.getItem(`adi-bot_expowiska`)) {
  677. if (expowiska[localStorage.getItem(`adi-bot_expowiska`)]) {
  678. select.value = localStorage.getItem(`adi-bot_expowiska`);
  679. }
  680. }
  681. //listenery
  682. input1.addEventListener(`keyup`, () => {
  683. localStorage.setItem(`adi-bot_mobs`, input1.value);
  684. });
  685. input2.addEventListener(`keyup`, () => {
  686. localStorage.setItem(`adi-bot_maps`, input2.value);
  687. });
  688. select.addEventListener(`change`, () => {
  689. localStorage.setItem(`adi-bot_expowiska`, select.value);
  690. input2.value = expowiska[select.value].map;
  691. localStorage.setItem(`adi-bot_maps`, input2.value);
  692. localStorage.setItem(`alksjd`, 0);
  693. message(`Zaktualizowano miejsce docelowe "${select.value}".`);
  694. });
  695.  
  696. $(`#adi-bot_box`).draggable({
  697. stop: () => {
  698. let tmpobj = {
  699. x: parseInt(document.querySelector(`#adi-bot_box`).style.left),
  700. y: parseInt(document.querySelector(`#adi-bot_box`).style.top)
  701. };
  702. localStorage.setItem(`adi-bot_position`, JSON.stringify(tmpobj));
  703. message(``);
  704. }
  705. });
  706. };
  707. this.initHTML();
  708. }();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement