Advertisement
Keifanel

Untitled

Feb 14th, 2020
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //znaleźć najbliższą e2 w g.npc max 20 kratek od postaci
  2. //po naciśnięciu przycisku "r" postać automatycznie podchodzi i atakuje
  3. //nie powinien być uznany jako bot ponieważ manualnie naciskam i robie to samo co jakbym nacisnął prawym na e2
  4. //mógłbym to napisać ładniej ale głowa mnie bolała fest jak to pisałem więc jest jak jest
  5. var checker;
  6. var mob;
  7. var eX;
  8. var eY;
  9. var times = 0;
  10.  
  11. //proste sprawdzenie długości odcinka wzorem |z|=sqrt(x^2+y^2) (ale tu nie potrzeba Math.abs() bo koordynaty zawsze będą dodatnie (bo takie są w margonem))
  12. function distance(x, y) {
  13.     return Math.sqrt((x - Engine.hero.rx) * (x - Engine.hero.rx) + (y - Engine.hero.ry) * (y - Engine.hero.ry));
  14. }
  15. //funkcja ze stackoverflow do porównania dwóch liczb bo coś mi sie udawało inaczej, ale tam niżej jest zrobione bez niej też więc TODO
  16. Number.prototype.between = function (a, b) {
  17.     var min = Math.min(a, b),
  18.         max = Math.max(a, b);
  19.  
  20.     return this > min && this < max;
  21. };
  22.  
  23. //brzydka funkcja do sprawdzania czy ide do e2
  24. function checkIfMoving() {
  25.     //jeśli stoje i jestem w okolicy 1 kratki od moba usuwam setInterval do tej funkcji i atakuje moba
  26.     if (Engine.hero.stop && Engine.hero.autoPath.endNode.x.between(eX - 2, eX + 2) && Engine.hero.autoPath.endNode.y.between(eY - 2, eY + 2)) {
  27.         clearInterval(checker);
  28.         _g("fight&a=attack&ff=1&id=-" + mob);
  29.         times = 0;
  30.         return true;
  31.  
  32.     }
  33.     //jeśli sie rusze (.autoPath.endNode.x/y nie będzie w okolicy tych kratek z wyżej) to przerywa setInterval
  34.     else if ((Engine.hero.autoPath.endNode.x < eX - 1 && Engine.hero.autoPath.endNode.x > eX + 1) || (Engine.hero.autoPath.endNode.y < eY - 1 && Engine.hero.autoPath.endNode.y > eY + 1)) {
  35.         clearInterval(checker);
  36.         message("Przerwano atak");
  37.     }
  38.     //jeśli za długo bym szedł (+/- 10s) to setInterval sie przerwie
  39.     else if (times > 20) {
  40.         clearInterval(checker);
  41.         times = 0;
  42.     }
  43.     //tutaj to sprwadzanie ile sekund
  44.     else {
  45.         times += 1;
  46.     }
  47. }
  48. //a tu jakiś bool żeby mi łatwiej było sprawdzać czy e2 jest ale nie potrzebuje tego
  49. var fail = true;
  50.  
  51. function e2() {
  52.  
  53.     $(document).keypress(function (e) {
  54.         if (e.keyCode == 122 && e.target.tagName != "INPUT" && e.target.tagName != "TEXTAREA") {
  55.             //klasyk, przeszukuje wszystkie npc i sprawdzam czy ich wt jest większe niż 19 i mniejsze niż 30 (wartości dla E2), jeśli jest to zmieniam boola i sobie zapisuje koordy e2
  56.             for (i in Engine.npcs.getDrawableList()) {
  57.                 if (Engine.npcs.getDrawableList()[i].d.wt > 19 && Engine.npcs.getDrawableList()[i].d.wt < 30) {
  58.                     mob = Engine.npcs.getDrawableList()[i].d.id;
  59.                     eX = Engine.npcs.getDrawableList()[i].d.x;
  60.                     eY = Engine.npcs.getDrawableList()[i].d.y;
  61.                     fail = false;
  62.                 }
  63.             }
  64.             if (Engine.npcs.getDrawableList().length == 0 || fail) {
  65.                 message("Nie znaleziono E2");
  66.             }
  67.             //jeśli dystans jest mniejszy niż 10 i e2 istnieje(?) to podchodze do niego i odpalam funkcje z do sprawdzania czy jestem obok e2
  68.             if (distance(eX, eY) < 10 && !fail) {
  69.                 console.log(mob);
  70.                 Engine.hero.autoGoTo({
  71.                     x: eX,
  72.                     y: eY
  73.                 });
  74.                 checker = setInterval(checkIfMoving, 1000);
  75.                 fail = true;
  76.             }
  77.         }
  78.     });
  79. }
  80.  
  81. e2();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement