vnx5

zM fleet class

May 5th, 2019
7,714
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // zursor master fleet class
  2. // updated may 26, 2019
  3. "use strict"
  4.  
  5. zM.dependenciesLoaded |= 0b000010;
  6.  
  7. zM.Fleet = class {
  8.     constructor (ip, port, ipv6, maxbots, startbots, name) {
  9.         console.log(startbots);
  10.         this.ip = ip;
  11.         this.port = port;
  12.         this.maxBots = maxbots;
  13.         this.startBots = startbots;
  14.         this.name = name;
  15.         this.ipv6 = ipv6;
  16.         this.cSel = 0;
  17.  
  18.         this.wsIp = 'ws://' + (this.ipv6?'['+this.ip+']':this.ip) + ':' + this.port;
  19.  
  20.         this.bots = [];
  21.  
  22.         this.ids = [];
  23.  
  24.         this.botsPinged = 0;
  25.         this.botsOpened = 0;
  26.         this.botsIds = 0;
  27.         this.botsLevels = 0;
  28.         this.botsBusy = 0;
  29.         this.botsDeployed = 0;
  30.         this.botsUpdated = 0;
  31.         this.verified = true;
  32.  
  33.         this.isHelping = false;
  34.  
  35.         this.el = {};
  36.  
  37.         this.helpers = [];
  38.  
  39.         var extF = this;
  40.  
  41.         this.helpIndex = 0;
  42.  
  43.         this.helpLoop = setInterval(()=>{
  44.             ++this.helpIndex;
  45.             if (this.isHelping && this.helpers.length > 0) {
  46.                 for (var i = 0; i < this.helpers.length; ++i) {
  47.                     this.helpers[i].toHelp = [];
  48.                     this.helpers[i].helping = true;
  49.                     if (this.helpers[i].socket.readyState != 1) this.helpers.splice(i--, 1);
  50.                 }
  51.                 var todo = [];
  52.                 var obj = this.bots[this.cSel].obj;
  53.                 for (var i = 0; i < obj.length; ++i) {
  54.                     if (obj[i].type === 4) todo.push(obj[i]);
  55.                 }
  56.                 var amount = todo.length / this.helpers.length;
  57.                 var j = 0;
  58.                 var count = amount;
  59.                 for (var i = 0; i < this.helpers.length; ++i) {
  60.                     for (; j < count | 0; ++j) {
  61.                         var obj = todo[j];
  62.                         var moves = zM.path(this.helpers[i].realX, this.helpers[i].realY, obj.x + (obj.w>>1), obj.y + (obj.h>>1), this.helpers[i].obj, this.helpers[i].grid);
  63.                         if ((this.helpers[i].realX === obj.x + (obj.w>>1) && this.helpers[i].realY === obj.y + (obj.h>>1)) ? true : moves.length > 1) this.helpers[i].toHelp.push(todo[j]);
  64.                     }
  65.                     count += amount;
  66.                 }
  67.                 var f = this;
  68.                 if (this.isHelping) for (var j = 0; j < this.helpers.length; ++j) {
  69.                     var index = this.helpIndex % this.helpers[j].toHelp.length;
  70.                     if (isNaN(index)) index = this.helpIndex % this.helpers[0].toHelp.length; // has nothing to do, copy off other bots
  71.                     if (isNaN(index)) index = 0; // still undefined, no buttons at all
  72.                     console.log(j, this.helpers[j]);
  73.                     console.log(index, this.helpers[j].toHelp[index]);
  74.                     if (this.helpers[j].toHelp.length <= index) continue;
  75.                     var moves = zM.path(this.helpers[j].realX, this.helpers[j].realY, this.helpers[j].toHelp[index].x + (this.helpers[j].toHelp[index].w>>1), this.helpers[j].toHelp[index].y + (this.helpers[j].toHelp[index].h>>1), this.helpers[j].obj, this.helpers[j].grid);
  76.                     moves.forEach(Y => {
  77.                         zM.packet.moveSocket([this.helpers[j].socket], Y[0], Y[1], [this.helpers[j]]);
  78.                     });
  79.                     for (var k = 0; k < 10; ++k) zM.packet.clickSocket([this.helpers[j].socket], this.helpers[j].toHelp[index].x + (this.helpers[j].toHelp[index].w>>1), this.helpers[j].toHelp[index].y + (this.helpers[j].toHelp[index].h>>1), [this.helpers[j]])
  80.                 }
  81.             }
  82.         },300);
  83.  
  84.         this.elTemplate = {
  85.             tab: '<div style="width: '
  86.         }
  87.  
  88.         setTimeout(()=>{for (var i = 0; i < startbots; ++i) this.bots.push(new zM.Bot(this));},300);
  89.     }
  90.  
  91.     createGUI(c) {
  92.         var temp = this.el = {
  93.             container: D.createElement('div'),
  94.             topbarOuter: D.createElement('div'),
  95.             topbar: D.createElement('div'),
  96.             tabNew: D.createElement('div'),
  97.             tabNewImg: D.createElement('img')
  98.         }
  99.  
  100.         temp.container.className = 'zM-fleet-gui-container';
  101.         c.appendChild(temp.container);
  102.  
  103.         temp.topbarOuter.className = 'zM-fleet-gui-topbarOuter';
  104.         temp.container.appendChild(temp.topbarOuter);
  105.  
  106.         temp.topbar.className = 'zM-fleet-gui-topbar';
  107.         temp.topbarOuter.appendChild(temp.topbar);
  108.  
  109.         temp.tabNew.className = 'zM-fleet-gui-tabNew';
  110.         temp.topbarOuter.appendChild(temp.tabNew);
  111.  
  112.         temp.tabNewImg.className = 'zM-fleet-gui-tabNewImg';
  113.         temp.tabNewImg.src = zMIMG.add.uri;
  114.         temp.tabNew.appendChild(temp.tabNewImg);
  115.  
  116.         temp.tabNew.addEventListener('click', ev => {
  117.             this.bots.push(new zM.Bot(this));
  118.         });
  119.  
  120.         this.updateTabs();
  121.     }
  122.  
  123.     updateTabs() {
  124.         this.el.container.style.display = 'block';
  125.         this.el.topbar.innerHTML = '';
  126.         this.el.topbarOuter.appendChild(this.el.tabNew);
  127.         this.el.tabNew.appendChild(this.el.tabNewImg);
  128.         var nb = [];
  129.         for (var i = 0; i < this.bots.length; ++i) {
  130.             if (this.bots[i].socket.readyState == 1) nb.push(this.bots[i]);
  131.         }
  132.         for (var i = 0; i < nb.length; ++i) {
  133.             var b = nb[i];
  134.             this.el.topbar.innerHTML += `<div style="position: absolute;    top: 0px;    left: ${100/nb.length*i}%;    width: ${100/nb.length}%;    height: 35px;    border-right: 1px solid #fffc;    background-color: ${i === this.cSel ? '#fff3' : '#fff0'};transition: 0.3s;"><div style="position: absolute;    top: 0px;    left: 0px;    width: 100%;    height: 35px;    background-color: #0000;    transition: 0.3s;" onmouseenter="this.style.backgroundColor = '#0003';" onmouseout="this.style.backgroundColor = '#0000'" onclick="zM.fleet[zM.fSel].cSel = ${i}; zM.fleet[zM.fSel].updateTabs()"><div style="color:#fffc;font-family:\'Nova Flat\',Montserrat,sans-serif;font-weight:300;padding:8px;pointer-events:none;white-space:nowrap;overflow-x:hidden;user-select:none;">${eval(`zM.fleet[zM.fSel].cSel === ${i} ? '(Selected)' : ''`)} #${i} / ID ${b.id} / LVL ${b.level}</div></div></div>`;
  135.         }
  136.     }
  137.  
  138.     /* depreciated, only solves for selected bot
  139.     startTickLoop() {
  140.         this.tickLoop = setInterval(()=>{
  141.             var b = this.bots[this.cSel];
  142.  
  143.             var toMove = [];
  144.             for (var i = 0; i < this.bots.length; ++i) {
  145.                 if (this.bots[i].level === b.level) if (zM.useWallhack) toMove.push(this.bots[i].socket);
  146.             }
  147.  
  148.             if (zM.useWallhack) {
  149.                 var moves = zM.path(b.realX, b.realY, zM.pos.mouseX>>1, zM.pos.mouseY>>1, b.obj);
  150.                 moves.forEach(Y => {
  151.                     zM.packet.moveSocket(toMove, Y[0], Y[1]);
  152.                 });
  153.             } else {
  154.                 zM.packet.moveSocket(toMove, zM.pos.mouseX>>1, zM.pos.mouseY>>1);
  155.             }
  156.  
  157.             for (;-1<zM.clickQueue;--zM.clickQueue) zM.packet.clickSocket(toMove, zM.pos.mouseX>>1, zM.pos.mouseY>>1);
  158.  
  159.             if (zM.drawing) zM.packet.drawSocket(toMove, zM.pos.lastMouseX>>1, zM.pos.lastMouseY>>1, zM.pos.mouseX>>1, zM.pos.mouseY>>1);
  160.  
  161.             zM.pos.lastMouseX = zM.pos.mouseX;
  162.             zM.pos.lastMouseY = zM.pos.mouseY;
  163.         }, 50);
  164.     }*/
  165.  
  166.     // alternative, solves for each bot- causes lots of lag without grid
  167.     startTickLoop() {
  168.         this.tickLoop = setInterval(()=>{
  169.             for (var i = 0; i < zM.fleet.length; ++i) {
  170.                 if (zM.fleet[i] === this) break;
  171.             }
  172.            
  173.             if (i !== zM.fSel) return;
  174.             var b = this.bots[this.cSel];
  175.  
  176.             var toMoveSocket = [];
  177.             var toMove = [];
  178.             for (var i = 0; i < this.bots.length; ++i) {
  179.                 // disconnect after 90 min of AFK, should bypass any bans from AFKing
  180.                 if (Date.now() - this.bots[i].packets.lastSent > 5400000) this.bots[i].socket.close();
  181.                 if (
  182.                     this.bots[i].level === b.level &&
  183.                     !this.bots[i].helping && !this.bots[i].deployed
  184.                 ) toMove.push(this.bots[i]), toMoveSocket.push(this.bots[i].socket);
  185.             }
  186.  
  187.             if (zM.movement) {
  188.                 if (zM.useWallhack) {
  189.                     // solve first
  190.                     toMove.forEach(X => {
  191.                         // random here is anti-idle disconnect
  192.                         if (!(X.realX === zM.pos.mouseX>>1 && X.realY === zM.pos.mouseY>>1) || (Math.random() >= 0.99 && zM.antiIdle)) {
  193.                             var moves = zM.path(X.realX, X.realY, zM.pos.mouseX>>1, zM.pos.mouseY>>1, b.obj, b.grid);
  194.                             X.toDo = moves;
  195.                             X.realX = zM.pos.mouseX>>1;
  196.                             X.realY = zM.pos.mouseY>>1;
  197.                         }
  198.                     });
  199.  
  200.                     // then send packets synchronized, all together
  201.                     var count = 0;
  202.                     for (var i = 0; i < toMove.length; ++i) count = Math.max(count, toMove[i].toDo.length);
  203.                     for (var i = 0; i < count; ++i) {
  204.                         toMove.forEach(X => {
  205.                             if (i >= X.toDo.length) return;
  206.                             zM.packet.moveSocket([X.socket], X.toDo[i][0], X.toDo[i][1], [X]);
  207.                         });
  208.                     }
  209.                 } else {
  210.                     zM.packet.moveSocket(toMoveSocket, zM.pos.mouseX>>1, zM.pos.mouseY>>1, toMove);
  211.                 }
  212.             } else {
  213.                 if (zM.clickQueue >= 1) {
  214.                     toMove.forEach(X => {
  215.                         var moves = zM.path(X.realX, X.realY, zM.pos.mouseX>>1, zM.pos.mouseY>>1, b.obj, b.grid);
  216.                         moves.forEach(Y => {
  217.                             zM.packet.moveSocket([X.socket], Y[0], Y[1], [X]);
  218.                         });
  219.                     });
  220.                 }
  221.                 if (zM.antiIdle) {
  222.                     toMove.forEach(X => {
  223.                         // random here is anti-idle disconnect, if movement is disabled.
  224.                         if (Date.now() - X.packets.lastSent > 10000) zM.packet.moveSocket([X.socket], X.realX, X.realY, [X]);
  225.                     });
  226.                 }
  227.             }
  228.  
  229.             for (;0<zM.clickQueue;--zM.clickQueue) zM.packet.clickSocket(toMoveSocket, zM.pos.mouseX>>1, zM.pos.mouseY>>1, toMove);
  230.            
  231.             if (zM.drawing && zM.movement) zM.packet.drawSocket(toMoveSocket, zM.pos.lastMouseX>>1, zM.pos.lastMouseY>>1, zM.pos.mouseX>>1, zM.pos.mouseY>>1, toMove);
  232.  
  233.             zM.pos.lastMouseX = zM.pos.mouseX;
  234.             zM.pos.lastMouseY = zM.pos.mouseY;
  235.         }, 50);
  236.     }
  237. }
Add Comment
Please, Sign In to add comment