Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //znaleźć najbliższą e2 w g.npc max 20 kratek od postaci
- //po naciśnięciu przycisku "r" postać automatycznie podchodzi i atakuje
- //nie powinien być uznany jako bot ponieważ manualnie naciskam i robie to samo co jakbym nacisnął prawym na e2
- //mógłbym to napisać ładniej ale głowa mnie bolała fest jak to pisałem więc jest jak jest
- var checker;
- var mob;
- var eX;
- var eY;
- var times = 0;
- //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))
- function distance(x, y) {
- return Math.sqrt((x - Engine.hero.rx) * (x - Engine.hero.rx) + (y - Engine.hero.ry) * (y - Engine.hero.ry));
- }
- //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
- Number.prototype.between = function (a, b) {
- var min = Math.min(a, b),
- max = Math.max(a, b);
- return this > min && this < max;
- };
- //brzydka funkcja do sprawdzania czy ide do e2
- function checkIfMoving() {
- //jeśli stoje i jestem w okolicy 1 kratki od moba usuwam setInterval do tej funkcji i atakuje moba
- if (Engine.hero.stop && Engine.hero.autoPath.endNode.x.between(eX - 2, eX + 2) && Engine.hero.autoPath.endNode.y.between(eY - 2, eY + 2)) {
- clearInterval(checker);
- _g("fight&a=attack&ff=1&id=-" + mob);
- times = 0;
- return true;
- }
- //jeśli sie rusze (.autoPath.endNode.x/y nie będzie w okolicy tych kratek z wyżej) to przerywa setInterval
- 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)) {
- clearInterval(checker);
- message("Przerwano atak");
- }
- //jeśli za długo bym szedł (+/- 10s) to setInterval sie przerwie
- else if (times > 20) {
- clearInterval(checker);
- times = 0;
- }
- //tutaj to sprwadzanie ile sekund
- else {
- times += 1;
- }
- }
- //a tu jakiś bool żeby mi łatwiej było sprawdzać czy e2 jest ale nie potrzebuje tego
- var fail = true;
- function e2() {
- $(document).keypress(function (e) {
- if (e.keyCode == 122 && e.target.tagName != "INPUT" && e.target.tagName != "TEXTAREA") {
- //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
- for (i in Engine.npcs.getDrawableList()) {
- if (Engine.npcs.getDrawableList()[i].d.wt > 19 && Engine.npcs.getDrawableList()[i].d.wt < 30) {
- mob = Engine.npcs.getDrawableList()[i].d.id;
- eX = Engine.npcs.getDrawableList()[i].d.x;
- eY = Engine.npcs.getDrawableList()[i].d.y;
- fail = false;
- }
- }
- if (Engine.npcs.getDrawableList().length == 0 || fail) {
- message("Nie znaleziono E2");
- }
- //jeśli dystans jest mniejszy niż 10 i e2 istnieje(?) to podchodze do niego i odpalam funkcje z do sprawdzania czy jestem obok e2
- if (distance(eX, eY) < 10 && !fail) {
- console.log(mob);
- Engine.hero.autoGoTo({
- x: eX,
- y: eY
- });
- checker = setInterval(checkIfMoving, 1000);
- fail = true;
- }
- }
- });
- }
- e2();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement