icefireAlan6

cursors.io hack bot [icefireAlan6 create]­

Jan 19th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function init(view,value,attr){function Class(){attr.x=view.getUint16(value,true);value+=2;attr.y=view.getUint16(value,true);value+=2;attr.width=view.getUint16(value,true);value+=2;attr.height=view.getUint16(value,true);value+=2;}
  2. function done(){var color=view.getUint32(value,true).toString(16);for(;6>color.length;){color="0"+color;}
  3. value+=4;attr.color="#"+color;}
  4. var name=view.getUint8(value);value+=1;attr.type=name;switch(name){case 255:break;case 0:attr.x=view.getUint16(value,true);value+=2;attr.y=view.getUint16(value,true);value+=2;attr.size=view.getUint8(value);value+=1;attr.isCentered=!!view.getUint8(value);value+=1;name=read(view,value);attr.text=name[0];value=name[1];break;case 1:Class();var py=!attr.color;done();break;name=attr.x|0;var y=attr.y|0;var version=attr.width|0;var h=attr.height|0;if(py){py=y;for(;py<y+h;++py){var info=name;for(;info<name+version;++info){++tmp[info+400*py];}}}
  5. break;case 2:Class();attr.isBad=!!view.getUint8(value);value+=1;break;case 3:Class();attr.count=view.getUint16(value,true);value+=2;done();break;case 4:Class();attr.count=view.getUint16(value,true);value+=2;done();break;default:throw Error("Unknown object type "+name);;}
  6. return value;}
  7. function read(view,offset){var optsData="";var lo=0;var chunk=0;for(;0!=(chunk=view.getUint8(offset));++offset){lo<<=8;lo|=chunk;if(!(chunk&128)){optsData+=String.fromCharCode(lo);lo=0;}}
  8. if(0!=lo){optsData+=String.fromCharCode(lo);}
  9. return[optsData,offset+1];}
  10. function proc(data){var view=new DataView(data.buffer),v,index,parts,x;if(view.getUint8(0)==1){var push=function(view,element){return element+2+4*view.getUint16(element,true)};index=view.getUint16(1,true);index=push(view,3+8*index);v=view.getUint16(index,true);index+=2;parts=0;for(;parts<v;parts++){x=view.getUint32(index,true);item=0;a:for(;item<items.length;item++){if(items[item].id==x){items.splice(item,1);break a;}}
  11. index+=4;}
  12. v=view.getUint16(index,true);index+=2;parts=0;for(;parts<v;parts++){a:{item=view.getUint32(index,true);x=0;for(;x<items.length;x++){if(items[x].id==item){item=items[x];break a;}}
  13. item={id:item};items.push(item);}
  14. index+=4;index=init(view,index,item);}
  15. return;}
  16. items=[];head=[view.getUint16(1,true),view.getUint16(3,true)];v=view.getUint16(5,true);index=7;parts=0;for(;parts<v;parts++){item={};item.id=view.getUint32(index,true);index+=4;index=init(view,index,item);if(item.x>0)item.x--,item.width++;if(item.y>0)item.y--,item.height++;if(item.x+item.width<400)item.width++;if(item.y+item.height<300)item.height++;items.push(item);}}
  17. function dos(head){var gridX=400,gridY=300;var grid=[];visit=[];for(var i=0;i<gridY;i++){grid[i]=[];visit[i]=[];for(var j=0;j<gridX;j++)grid[i][j]=0,visit[i][j]=0;}
  18. items.forEach(function(d){if((d.type==1)||(d.type==2&&d.isBad))
  19. for(var j=0;j<d.height;j++)for(var i=0;i<d.width;i++)grid[d.y+j][d.x+i]=3});var bfs=[head],bfs2=[];while(bfs.length){bfs.forEach(function(dat){var x=dat[0],y=dat[1];if(grid[y][x]==3)return;grid[y][x]=3;for(var X=x+1;X<gridX&&!(grid[y][X]&1);X++){grid[y][X]|=1;if(!visit[y][X]){visit[y][X]=[x,y],bfs2.push([X,y]);}}
  20. for(var X=x-1;X>=0&&!(grid[y][X]&1);X--){grid[y][X]|=1;if(!visit[y][X]){visit[y][X]=[x,y],bfs2.push([X,y]);}}
  21. for(var Y=y+1;Y<gridY&&!(grid[Y][x]&2);Y++){grid[Y][x]|=2;if(!visit[Y][x]){visit[Y][x]=[x,y],bfs2.push([x,Y]);}}
  22. for(var Y=y-1;Y>=0&&!(grid[Y][x]&2);Y--){grid[Y][x]|=2;if(!visit[Y][x]){visit[Y][x]=[x,y],bfs2.push([x,Y]);}}});bfs=bfs2;bfs2=[];}
  23. console.log("DOS done");}
  24. var tmp=WebSocket.prototype.send;WebSocket.prototype.send=function(x){WebSocket.prototype.send=tmp;tmp=this;this.send=function(){};var t2=this.onmessage;this.onmessage=function(x){var msg=new Uint8Array(x.data);if(msg[0]==1||msg[0]==4){proc(msg);}
  25. return t2.call(this,x)}}
  26. var ff=navigator.userAgent.indexOf("Chrome")==-1;var num_1=1*prompt("sockets (DONT GO OVER 2 AS CURSORS.io HAS RESTRICTIONS NOW (WORKING ON FIX))",ff?190:25),num_2=0;var pool=[],cursors=[];for(var i=0;i<num_1;i++){pool.push(new WebSocket("ws://104.248.73.48:2828"));pool[pool.length-1].onopen=function(x){if(++num_2==num_1)alert("OK. remember to disable cursor lock. shift+click to deploy minion. ctrl+click to ignore pathfinding. click to move");}}
  27. canvas.onclick=function(e){var xy=[(e.layerX-(ff?canvas.offsetLeft:0))/2|0,(e.layerY-(ff?canvas.offsetTop:0))/2|0];console.log(xy);var mov=[];if(window["items"]&&!(xy[0]==head[0]&&xy[1]==head[1])&&!e.ctrlKey){dos(head);var xy2=xy.slice(0);while(visit[xy2[1]][xy2[0]]){mov.push(xy2);xy2=visit[xy2[1]][xy2[0]]}mov=mov.reverse();}else mov.push(xy);if(mov.length==0){console.log("NO MOV");return;}
  28. if(!e.shiftKey){head=xy;pool.forEach(function(x){move(x,mov)});move(tmp,mov);return;}
  29. var buf=new ArrayBuffer(9),q=new DataView(buf);q.setUint8(0,2,1);q.setUint16(1,xy[0],1);q.setUint16(3,xy[1],1);q.setInt32(5,-1,1);cursors.push(pool.pop());cursors[cursors.length-1].click=buf;move(cursors[cursors.length-1],mov);}
  30. function move(x,mov,i=0){if(i==0)x.rdy=0;if(i>=mov.length){x.rdy=1;return;}
  31. var buf=new ArrayBuffer(9),q=new DataView(buf);q.setUint8(0,2,1);q.setUint16(1,mov[i][0],1);q.setUint16(3,mov[i][1],1);q.setInt32(5,-1,1);WebSocket.prototype.send.call(x,buf);setTimeout(function(){move(x,mov,i+1)},100);}
  32. var lop=setInterval(function(){cursors.forEach(function(x){if(x.rdy)x.send(x.click)})},500);
Add Comment
Please, Sign In to add comment