Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // zursor master fleet class
- // updated may 26, 2019
- "use strict"
- zM.dependenciesLoaded |= 0b000010;
- zM.Fleet = class {
- constructor (ip, port, ipv6, maxbots, startbots, name) {
- console.log(startbots);
- this.ip = ip;
- this.port = port;
- this.maxBots = maxbots;
- this.startBots = startbots;
- this.name = name;
- this.ipv6 = ipv6;
- this.cSel = 0;
- this.wsIp = 'ws://' + (this.ipv6?'['+this.ip+']':this.ip) + ':' + this.port;
- this.bots = [];
- this.ids = [];
- this.botsPinged = 0;
- this.botsOpened = 0;
- this.botsIds = 0;
- this.botsLevels = 0;
- this.botsBusy = 0;
- this.botsDeployed = 0;
- this.botsUpdated = 0;
- this.verified = true;
- this.isHelping = false;
- this.el = {};
- this.helpers = [];
- var extF = this;
- this.helpIndex = 0;
- this.helpLoop = setInterval(()=>{
- ++this.helpIndex;
- if (this.isHelping && this.helpers.length > 0) {
- for (var i = 0; i < this.helpers.length; ++i) {
- this.helpers[i].toHelp = [];
- this.helpers[i].helping = true;
- if (this.helpers[i].socket.readyState != 1) this.helpers.splice(i--, 1);
- }
- var todo = [];
- var obj = this.bots[this.cSel].obj;
- for (var i = 0; i < obj.length; ++i) {
- if (obj[i].type === 4) todo.push(obj[i]);
- }
- var amount = todo.length / this.helpers.length;
- var j = 0;
- var count = amount;
- for (var i = 0; i < this.helpers.length; ++i) {
- for (; j < count | 0; ++j) {
- var obj = todo[j];
- 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);
- 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]);
- }
- count += amount;
- }
- var f = this;
- if (this.isHelping) for (var j = 0; j < this.helpers.length; ++j) {
- var index = this.helpIndex % this.helpers[j].toHelp.length;
- if (isNaN(index)) index = this.helpIndex % this.helpers[0].toHelp.length; // has nothing to do, copy off other bots
- if (isNaN(index)) index = 0; // still undefined, no buttons at all
- console.log(j, this.helpers[j]);
- console.log(index, this.helpers[j].toHelp[index]);
- if (this.helpers[j].toHelp.length <= index) continue;
- 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);
- moves.forEach(Y => {
- zM.packet.moveSocket([this.helpers[j].socket], Y[0], Y[1], [this.helpers[j]]);
- });
- 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]])
- }
- }
- },300);
- this.elTemplate = {
- tab: '<div style="width: '
- }
- setTimeout(()=>{for (var i = 0; i < startbots; ++i) this.bots.push(new zM.Bot(this));},300);
- }
- createGUI(c) {
- var temp = this.el = {
- container: D.createElement('div'),
- topbarOuter: D.createElement('div'),
- topbar: D.createElement('div'),
- tabNew: D.createElement('div'),
- tabNewImg: D.createElement('img')
- }
- temp.container.className = 'zM-fleet-gui-container';
- c.appendChild(temp.container);
- temp.topbarOuter.className = 'zM-fleet-gui-topbarOuter';
- temp.container.appendChild(temp.topbarOuter);
- temp.topbar.className = 'zM-fleet-gui-topbar';
- temp.topbarOuter.appendChild(temp.topbar);
- temp.tabNew.className = 'zM-fleet-gui-tabNew';
- temp.topbarOuter.appendChild(temp.tabNew);
- temp.tabNewImg.className = 'zM-fleet-gui-tabNewImg';
- temp.tabNewImg.src = zMIMG.add.uri;
- temp.tabNew.appendChild(temp.tabNewImg);
- temp.tabNew.addEventListener('click', ev => {
- this.bots.push(new zM.Bot(this));
- });
- this.updateTabs();
- }
- updateTabs() {
- this.el.container.style.display = 'block';
- this.el.topbar.innerHTML = '';
- this.el.topbarOuter.appendChild(this.el.tabNew);
- this.el.tabNew.appendChild(this.el.tabNewImg);
- var nb = [];
- for (var i = 0; i < this.bots.length; ++i) {
- if (this.bots[i].socket.readyState == 1) nb.push(this.bots[i]);
- }
- for (var i = 0; i < nb.length; ++i) {
- var b = nb[i];
- 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>`;
- }
- }
- /* depreciated, only solves for selected bot
- startTickLoop() {
- this.tickLoop = setInterval(()=>{
- var b = this.bots[this.cSel];
- var toMove = [];
- for (var i = 0; i < this.bots.length; ++i) {
- if (this.bots[i].level === b.level) if (zM.useWallhack) toMove.push(this.bots[i].socket);
- }
- if (zM.useWallhack) {
- var moves = zM.path(b.realX, b.realY, zM.pos.mouseX>>1, zM.pos.mouseY>>1, b.obj);
- moves.forEach(Y => {
- zM.packet.moveSocket(toMove, Y[0], Y[1]);
- });
- } else {
- zM.packet.moveSocket(toMove, zM.pos.mouseX>>1, zM.pos.mouseY>>1);
- }
- for (;-1<zM.clickQueue;--zM.clickQueue) zM.packet.clickSocket(toMove, zM.pos.mouseX>>1, zM.pos.mouseY>>1);
- if (zM.drawing) zM.packet.drawSocket(toMove, zM.pos.lastMouseX>>1, zM.pos.lastMouseY>>1, zM.pos.mouseX>>1, zM.pos.mouseY>>1);
- zM.pos.lastMouseX = zM.pos.mouseX;
- zM.pos.lastMouseY = zM.pos.mouseY;
- }, 50);
- }*/
- // alternative, solves for each bot- causes lots of lag without grid
- startTickLoop() {
- this.tickLoop = setInterval(()=>{
- for (var i = 0; i < zM.fleet.length; ++i) {
- if (zM.fleet[i] === this) break;
- }
- if (i !== zM.fSel) return;
- var b = this.bots[this.cSel];
- var toMoveSocket = [];
- var toMove = [];
- for (var i = 0; i < this.bots.length; ++i) {
- // disconnect after 90 min of AFK, should bypass any bans from AFKing
- if (Date.now() - this.bots[i].packets.lastSent > 5400000) this.bots[i].socket.close();
- if (
- this.bots[i].level === b.level &&
- !this.bots[i].helping && !this.bots[i].deployed
- ) toMove.push(this.bots[i]), toMoveSocket.push(this.bots[i].socket);
- }
- if (zM.movement) {
- if (zM.useWallhack) {
- // solve first
- toMove.forEach(X => {
- // random here is anti-idle disconnect
- if (!(X.realX === zM.pos.mouseX>>1 && X.realY === zM.pos.mouseY>>1) || (Math.random() >= 0.99 && zM.antiIdle)) {
- var moves = zM.path(X.realX, X.realY, zM.pos.mouseX>>1, zM.pos.mouseY>>1, b.obj, b.grid);
- X.toDo = moves;
- X.realX = zM.pos.mouseX>>1;
- X.realY = zM.pos.mouseY>>1;
- }
- });
- // then send packets synchronized, all together
- var count = 0;
- for (var i = 0; i < toMove.length; ++i) count = Math.max(count, toMove[i].toDo.length);
- for (var i = 0; i < count; ++i) {
- toMove.forEach(X => {
- if (i >= X.toDo.length) return;
- zM.packet.moveSocket([X.socket], X.toDo[i][0], X.toDo[i][1], [X]);
- });
- }
- } else {
- zM.packet.moveSocket(toMoveSocket, zM.pos.mouseX>>1, zM.pos.mouseY>>1, toMove);
- }
- } else {
- if (zM.clickQueue >= 1) {
- toMove.forEach(X => {
- var moves = zM.path(X.realX, X.realY, zM.pos.mouseX>>1, zM.pos.mouseY>>1, b.obj, b.grid);
- moves.forEach(Y => {
- zM.packet.moveSocket([X.socket], Y[0], Y[1], [X]);
- });
- });
- }
- if (zM.antiIdle) {
- toMove.forEach(X => {
- // random here is anti-idle disconnect, if movement is disabled.
- if (Date.now() - X.packets.lastSent > 10000) zM.packet.moveSocket([X.socket], X.realX, X.realY, [X]);
- });
- }
- }
- for (;0<zM.clickQueue;--zM.clickQueue) zM.packet.clickSocket(toMoveSocket, zM.pos.mouseX>>1, zM.pos.mouseY>>1, toMove);
- 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);
- zM.pos.lastMouseX = zM.pos.mouseX;
- zM.pos.lastMouseY = zM.pos.mouseY;
- }, 50);
- }
- }
Add Comment
Please, Sign In to add comment