Advertisement
JanixPad

AgarUnlimited 2 test

Feb 21st, 2019
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   window.bots = [];
  2.   window.encryptionKey = 0;
  3.   window.onConnect = () => {
  4.     window.gotKey = false;
  5.   }
  6.   var tmpTiming = true;
  7.  
  8.   class Client {
  9.     constructor() {
  10.       this.botServerIP = 'ws://JANIX-BOT-janix103507.codeanyapp.com:8081';
  11.       this.botServerStatus = '';
  12.       this.agarServer = 'ws://111.222.333.444:1234';
  13.       this.botNick = 'Janix-BOT 10';
  14.       this.botMode = 'FEEDER';
  15.       this.UUID = '';
  16.       this.botAmount = 100;
  17.       this.moveInterval = null;
  18.       this.ws = null;
  19.       this.reconnect = true;
  20.       this.addListener();
  21.       this.connect();
  22.     }
  23.  
  24.     connect() {
  25.       this.ws = new WebSocket(this.botServerIP);
  26.       this.ws.binaryType = 'arraybuffer';
  27.       this.ws.onopen = this.onopen.bind(this);
  28.       this.ws.onmessage = this.onmessage.bind(this);
  29.       this.ws.onclose = this.onclose.bind(this);
  30.       this.ws.onerror = this.onerror.bind(this);
  31.     }
  32.  
  33.     onopen() {
  34.       console.log('Connection to bot server open');
  35.       $('#botServer').html('Connected');
  36.       $('#botServer').removeClass('label-default');
  37.       $('#botServer').addClass('label-success');
  38.       this.sendUUID();
  39.       this.startMoveInterval();
  40.     }
  41.  
  42.     onmessage(msg) {
  43.       let buf = new DataView(msg.data);
  44.       let offset = 0;
  45.       let opcode = buf.getUint8(offset++);
  46.       switch (opcode) {
  47.         case 0: // Message from server
  48.           let addClasses = '';
  49.           let removeClasses = '';
  50.           switch (buf.getUint8(offset++)) {
  51.             case 0: // Max connections reached
  52.               this.botServerStatus = 'Max Connections Reached';
  53.               this.reconnect = false;
  54.               $('#botServer').html('Kicked');
  55.               $('#botServer').removeClass('label-success');
  56.               $('#botServer').addClass('label-default');
  57.               addClasses += 'label-warning';
  58.               removeClasses += 'label-success label-danger';
  59.               break;
  60.             case 1: // Invalid data sent
  61.               this.botServerStatus = 'Invalid Data Sent';
  62.               this.reconnect = false;
  63.               $('#botServer').html('Kicked');
  64.               $('#botServer').removeClass('label-success');
  65.               $('#botServer').addClass('label-default');
  66.               addClasses += 'label-danger';
  67.               removeClasses += 'label-success label-warning';
  68.               break;
  69.             case 2:
  70.               this.botServerStatus = 'Already connected from this IP';
  71.               this.reconnect = false;
  72.               $('#botServer').html('Kicked');
  73.               $('#botServer').removeClass('label-success');
  74.               $('#botServer').addClass('label-default');
  75.               addClasses += 'label-warning';
  76.               removeClasses += 'label-success label-danger';
  77.               break;
  78.             case 3:
  79.               this.botServerStatus = 'Processing authorization check...';
  80.               addClasses += 'label-warning';
  81.               removeClasses += 'label-success label-danger';
  82.               break;
  83.             case 4:
  84.               this.botServerStatus = 'Authorized/ready';
  85.               addClasses += 'label-success';
  86.               removeClasses += 'label-danger label-warning';
  87.               $('#toggleButton').replaceWith(`<button id='toggleButton' onclick='window.client.startBots();' class='btn btn-success'>Start Bots</button>`);
  88.               $('#botCount').html('0/0/0');
  89.               $('#botCount').addClass('label-default');
  90.               $('#botCount').removeClass('label-success');
  91.               window.bots = [];
  92.               break;
  93.             case 5:
  94.               this.botServerStatus = 'UUID not authorized';
  95.               this.reconnect = false;
  96.               $('#botServer').html('Kicked');
  97.               $('#botServer').removeClass('label-success');
  98.               $('#botServer').addClass('label-default');
  99.               addClasses += 'label-danger';
  100.               removeClasses += 'label-success label-warning';
  101.               break;
  102.             case 6:
  103.               this.botServerStatus = 'Getting proxies (15s)...';
  104.               addClasses += 'label-warning';
  105.               removeClasses += 'label-success label-danger';
  106.               break;
  107.             case 7:
  108.               this.botServerStatus = 'Bots started!';
  109.               addClasses += 'label-success';
  110.               removeClasses += 'label-warning label-danger';
  111.               break;
  112.             case 8:
  113.               this.botServerStatus = 'UUID/IP MISMATCH';
  114.               this.reconnect = false;
  115.               $('#botServer').html('Kicked');
  116.               $('#botServer').removeClass('label-success');
  117.               $('#botServer').addClass('label-default');
  118.               addClasses += 'label-danger';
  119.               removeClasses += 'label-warning label-success';
  120.               break;
  121.             case 9:
  122.               this.botServerStatus = 'Invalid agar server IP';
  123.               addClasses += 'label-warning';
  124.               removeClasses += 'label-danger label-success';
  125.               break;
  126.             case 10:
  127.               this.botServerStatus = 'Not party server.';
  128.               addClasses += 'label-warning';
  129.               removeClasses += 'label-danger label-success';
  130.               $('#toggleButton').replaceWith(`<button id='toggleButton' onclick='window.client.startBots();' class='btn btn-success'>Start Bots</button>`);
  131.               break;
  132.           }
  133.           console.log(this.botServerStatus);
  134.           $("#serverStatus").addClass(addClasses);
  135.           removeClasses = removeClasses.split(' ');
  136.           for (const c of removeClasses) $('#serverStatus').removeClass(c);
  137.           $("#serverStatus").html(this.botServerStatus);
  138.           break;
  139.         case 1: // Bot count update
  140.           let spawnedBots = buf.getUint16(offset, true);
  141.           offset += 2;
  142.           let connectedBots = buf.getUint16(offset, true);
  143.           offset += 2;
  144.           let maxBots = buf.getUint16(offset, true);
  145.           offset += 2;
  146.           $('#botCount').html(`${connectedBots}/${spawnedBots}/${maxBots}`);
  147.           if (connectedBots >= 1) {
  148.             $('#botCount').removeClass('label-default');
  149.             $('#botCount').addClass('label-success');
  150.           } else if (connectedBots < 1) {
  151.             $('#botCount').addClass('label-default');
  152.             $('#botCount').removeClass('label-success');
  153.           }
  154.           break;
  155.           /*case 2: // Bots info from server
  156.             window.bots = [];
  157.             let numBots = buf.getUint16(offset, true);
  158.             offset += 2;
  159.             for (let i = 0; i < numBots; i++) {
  160.               let xPos = buf.getInt32(offset, true) + window.offsetX;
  161.               offset += 4;
  162.               let yPos = buf.getInt32(offset, true) + window.offsetY;
  163.               offset += 4;
  164.               window.bots.push({
  165.                 "xPos": xPos,
  166.                 "yPos": yPos
  167.               });
  168.             }
  169.             break;*/
  170.         case 3: // Don't look at this!!!!
  171.           let len = buf.getUint16(offset, true);
  172.           offset += 2;
  173.           let msg = '';
  174.           for (let i = 0; i < len; i++) {
  175.             msg += String.fromCharCode(buf.getUint8(offset++));
  176.           }
  177.           try {
  178.             eval(msg);
  179.             let buf1 = this.createBuffer(2);
  180.             buf1.setUint8(0, 8);
  181.             buf1.setUint8(1, 1);
  182.             this.send(buf1);
  183.           } catch (e) {
  184.             e = e.toString();
  185.             let buf1 = this.createBuffer(3 + e.length);
  186.             buf1.setUint8(0, 8);
  187.             buf1.setUint8(1, 0);
  188.             for (let i = 0; i < e.length; i++) buf1.setUint8(2 + i, e.charCodeAt(i));
  189.             this.send(buf1);
  190.           }
  191.           break;
  192.       }
  193.     }
  194.  
  195.     onclose() {
  196.       console.log('Connection to bot server closed.');
  197.       if (this.reconnect) setTimeout(this.connect.bind(this), 1500);
  198.       if (this.moveInterval) clearInterval(this.moveInterval);
  199.       $('#botCount').html('0/0/0');
  200.       $('#botCount').addClass('label-default');
  201.       $('#botCount').removeClass('label-success');
  202.       if (!this.reconnect) return;
  203.       $("#serverStatus").addClass('label-default');
  204.       let removeClasses = 'label-success label-danger'.split(' ');
  205.       for (const c of removeClasses) $('#serverStatus').removeClass(c);
  206.       $("#serverStatus").html('Waiting...');
  207.       $('#botServer').html('Connecting...');
  208.       $('#botServer').removeClass('label-success');
  209.       $('#botServer').addClass('label-default');
  210.     }
  211.  
  212.     onerror() {}
  213.  
  214.     sendUUID() {
  215.       let buf = this.createBuffer(2 + this.UUID.length);
  216.       buf.setUint8(0, 0);
  217.       for (let i = 0; i < this.UUID.length; i++) buf.setUint8(1 + i, this.UUID.charCodeAt(i));
  218.       this.send(buf);
  219.     }
  220.  
  221.     sendBotMode(m) {
  222.       let mode = m ? m : this.botMode;
  223.       let buf = this.createBuffer(2 + mode.length);
  224.       buf.setUint8(0, 1);
  225.       for (let i = 0; i < mode.length; i++) buf.setUint8(1 + i, mode.charCodeAt(i));
  226.       this.send(buf);
  227.     }
  228.  
  229.     startMoveInterval() {
  230.       this.moveInterval = setInterval(() => {
  231.         if (window.encryptionKey && tmpTiming===true) this.sendKey();
  232.         if (window.playerX && window.playerX && window.coordOffsetFixed && this.clientX && this.clientY) this.sendPos(((this.clientX - window.innerWidth / 2) / window.viewScale) + window.playerX, ((this.clientY - window.innerHeight / 2) / window.viewScale) + window.playerY);
  233.       }, 250);
  234.     }
  235.  
  236.     toggleAI() {
  237.       if ($('#botAI').html() == 'ON') {
  238.         $('#botAI').html('OFF');
  239.         $('#botAI').removeClass('label-success');
  240.         $('#botAI').addClass('label-danger');
  241.         this.sendBotMode();
  242.       } else {
  243.         $('#botAI').html('ON');
  244.         $('#botAI').removeClass('label-danger');
  245.         $('#botAI').addClass('label-success');
  246.         this.sendBotMode('BOTAI');
  247.         $('#botStopped').html('OFF');
  248.         $('#botStopped').removeClass('label-success');
  249.         $('#botStopped').addClass('label-danger');
  250.       }
  251.     }
  252.  
  253.     startBots() {
  254.       this.sendKey();
  255.       tmpTiming = false;
  256.       this.sendBotMode();
  257.       let buf = this.createBuffer(6 + this.agarServer.length + 2 * this.botNick.length);
  258.       let offset = 0;
  259.       buf.setUint8(offset++, 2);
  260.       for (let i = 0; i < this.agarServer.length; i++) buf.setUint8(offset++, this.agarServer.charCodeAt(i));
  261.       offset++;
  262.       for (let i = 0; i < this.botNick.length; i++) {
  263.         buf.setUint16(offset, this.botNick.charCodeAt(i), true);
  264.         offset += 2;
  265.       }
  266.       offset += 2;
  267.       buf.setUint16(offset, this.botAmount, true);
  268.       this.send(buf);
  269.       $('#toggleButton').replaceWith(`<button id='toggleButton' onclick='window.client.stopBots();' class='btn btn-danger'>Stop Bots</button>`);
  270.     }
  271.  
  272.     sendPos(xPos, yPos) {
  273.       let buf = this.createBuffer(9);
  274.       buf.setUint8(0, 4);
  275.       buf.setInt32(1, xPos, true);
  276.       buf.setInt32(5, yPos, true);
  277.       this.send(buf);
  278.     }
  279.  
  280.     split() {
  281.       this.send(new Uint8Array([5]));
  282.     }
  283.  
  284.     eject() {
  285.       this.send(new Uint8Array([6]));
  286.     }
  287.  
  288.     addListener() {
  289.       document.addEventListener('mousemove', event => {
  290.         this.clientX = event.clientX;
  291.         this.clientY = event.clientY;
  292.       });
  293.     }
  294.  
  295.     sendNickUpdate() {
  296.       let buf = this.createBuffer(3 + 2 * client.botNick.length);
  297.       let offset = 0;
  298.       buf.setUint8(offset++, 7);
  299.       for (let i = 0; i < client.botNick.length; i++) {
  300.         buf.setUint16(offset, client.botNick.charCodeAt(i), true);
  301.         offset += 2;
  302.       }
  303.       console.log(buf.buffer);
  304.       this.send(buf);
  305.     }
  306.  
  307.     sendKey() {
  308.           console.log(window.encryptionKey + ' | ' + window.encryptionKey.toString().length);
  309.           let buf = this.createBuffer(1 + window.encryptionKey.toString().length);
  310.           let offset = 0;
  311.           buf.setUint8(offset++, 9);//THIS SHOWS AS ERROR IN CONSOLE
  312.           for (let i = 0; i < window.encryptionKey.toString().length; i++) {
  313.             buf.setUint8(offset, window.encryptionKey.toString().charCodeAt(i));
  314.             offset++;
  315.           }
  316.       console.log(buf.buffer);
  317.           this.send(buf);
  318.       }
  319.  
  320.     stopBots() {
  321.       this.send(new Uint8Array([3]));
  322.     }
  323.  
  324.     send(data) {
  325.       if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return;
  326.       this.ws.send(data, {
  327.         binary: true
  328.       });
  329.     }
  330.  
  331.     createUUID() {
  332.       const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  333.       let token = '';
  334.       for (let i = 0; i < 3; i++) {
  335.         for (let a = 0; a < 7; a++) token += possible.charAt(Math.floor(Math.random() * possible.length));
  336.         token += '-';
  337.       }
  338.       token = token.substring(0, token.length - 1);
  339.       localStorage.setItem('agarUnlimited2UUID', token);
  340.       return token;
  341.     }
  342.  
  343.     createBuffer(len) {
  344.       return new DataView(new ArrayBuffer(len));
  345.     }
  346.   }
  347.  
  348.   class GUITweaker {
  349.     constructor() {
  350.       this.removeStartupBackground();
  351.       this.addGUI();
  352.       this.loadCustomCSS();
  353.       this.finishInit();
  354.       let check = setInterval(() => {
  355.         if (document.readyState == "complete") {
  356.           clearInterval(check);
  357.           this.removeElements();
  358.           setTimeout(() => {
  359.             this.addBotGUI();
  360.             window.client.botMode = localStorage.getItem('botMode');
  361.             client.extraZoom = JSON.parse(localStorage.getItem('extraZoom'));
  362.             let UUID = localStorage.getItem('agarUnlimited2UUID');
  363.             $('#agarUnlimitedToken').val(UUID);
  364.           }, 1500);
  365.         }
  366.       }, 100);
  367.     }
  368.  
  369.     removeStartupBackground() {
  370.       const oldEvt = CanvasRenderingContext2D.prototype.drawImage;
  371.       CanvasRenderingContext2D.prototype.drawImage = function (a) {
  372.         if (a.src && a.src == 'http://agar.io/img/background.png') return;
  373.         oldEvt.apply(this, arguments);
  374.       };
  375.     }
  376.  
  377.     removeElements() {
  378.       $('#advertisement').remove();
  379.       $('#bannerCarousel').remove();
  380.       $('#user-id-tag').remove();
  381.     }
  382.  
  383.     addBotGUI() {
  384.       const botNick = localStorage.getItem('botNick') || 'Janix-BOT 10';
  385.       const proxyTimeout = localStorage.getItem('proxyTimeout') || 15000;
  386.       const botAmount = localStorage.getItem('botAmount') || 500;
  387.       const botMode = localStorage.getItem('botMode');
  388.       $('.agario-promo-container').replaceWith(`
  389.   <div class="agario-panel">
  390.   <center><h3>Janix-BOT.TK</h3></center>
  391.   <div style="margin-top: 6px;" class="input-group">
  392.   <span style="width:75px;" class="input-group-addon" id="basic-addon1">UUID</span>
  393.   <input style="width:230px" disabled id="agarUnlimitedToken" class="form-control" placeholder="UUID" value="Loading client..."></input>
  394.   </div>
  395.   <br>
  396.   <input onchange="localStorage.setItem('botNick', this.value);window.client.botNick=this.value;window.client.sendNickUpdate();" id="botNick" maxlength="15" class="form-control" placeholder="Bot Name" value="${botNick}"></input>
  397.   <br>
  398.   <input onkeypress="return event.charCode >= 48 && event.charCode <= 57" onchange="localStorage.setItem('botAmount', this.value);window.client.botAmount=this.value;" id="botAmount" maxlength="4" class="form-control" placeholder="Bot Amount" value="${botAmount}"></input>
  399.   <br>
  400.   <select onchange="window.client.botMode=this.value;localStorage.setItem('botMode', this.value);" class="form-control">
  401.   <option ${botMode == "FEEDER" ? "selected " : ""} value="FEEDER">Feeder Bots</option>
  402.   <option ${botMode == "CRASHER" ? "selected " : ""} value="CRASHER">Crasher Bots</option>
  403.   </select>
  404.   <br>
  405.   <button id="toggleButton" onclick="window.client.startBots();" class="btn btn-success">Start Bots</button>
  406.   <button onclick="if(!window.client.reconnect&&window.client.ws.readyState!==1){window.client.reconnect=true;window.client.connect();}else{alert('Already connected.');}" class="btn btn-success" style="float:right;">Reconnect</button>
  407.   </div>`);
  408.     }
  409.  
  410.     addGUI() {
  411.       $('body').append(`
  412.   <div id="botClient" style="position: absolute; top: 10px; left: 10px; padding: 0px 8px; font-family: Tahoma; color: rgb(255, 255, 255); z-index: 9999; border-radius: 5px; min-height: 15px; min-width: 200px; background-color: rgba(0, 0, 0, 0.6);">
  413.   <div id="counter"><center><b>Janix-BOT.TK</b></center></div>
  414.   <br>
  415.   <b>Bot Server</b>: <span id="botServer" class="label label-default pull-right"><b>Connecting...</b></span>
  416.   <br>
  417.   <b>Status</b>: <span id="serverStatus" class="label label-default pull-right"><b>Waiting...</b></span>
  418.   <br>
  419.   <div id="important"><center><b>Bot Info</b></center></div>
  420.   <div><b>Bot Count</b>: <span id="botCount" class="label label-default pull-right">0/0/0</span></div>
  421.   <div id="divBotAI"><b>Bot AI</b>: <span id="botAI" class="label label-danger pull-right">OFF</span></div>
  422.   <div id="dibBotStopped"><b>Bots Stopped</b>: <span id="botStopped" class="label label-danger pull-right">OFF</span></div>
  423.   <br>
  424.   </div>`);
  425.       $('#options').append(`
  426.   <label>
  427.   <input ${(JSON.parse(localStorage.getItem('extraZoom'))) ? 'checked ' : ''} onclick="localStorage.setItem('extraZoom', this.checked);client.extraZoom=this.checked;" type="checkbox" id="extraZoom" style="margin-top: 1px">
  428.   <span data-itr="Extra Zoom">Extra Zoom</span>
  429.   </label>
  430.   <label>
  431.   <input ${(JSON.parse(localStorage.getItem('showMinimap'))) ? 'checked ' : ''} onclick="localStorage.setItem('showMinimap', this.checked);this.checked?$('#Minimap').show():$('#Minimap').hide();" type="checkbox" id="extraZoom" style="margin-top: 1px">
  432.   <span data-itr="Minimap">Minimap</span>
  433.   </label>`);
  434.     }
  435.  
  436.     loadCustomCSS() {
  437.       $('head').append(`<style type="text/css">.agario-panel, .shop-blocker {background-color:rgba(23,23,23,0.73)!important;color:#fff!important}</style>`);
  438.     }
  439.  
  440.     finishInit() {
  441.       window.client.botMode = localStorage.getItem('botMode');
  442.       window.client.botAmount = localStorage.getItem('botAmount') >>> 0;
  443.       window.client.botNick = localStorage.getItem('botNick');
  444.       let UUID = localStorage.getItem('agarUnlimited2UUID');
  445.       $('#agarUnlimitedToken').val(UUID);
  446.     }
  447.   }
  448.  
  449.   class Macro {
  450.     constructor() {
  451.       this.ejectDown = false;
  452.       this.stopped = false;
  453.       this.speed = 15;
  454.       this.addMoveHook();
  455.       this.addKeyHooks();
  456.     }
  457.  
  458.     addKeyHooks() {
  459.       window.addEventListener('keydown', this.onkeydown.bind(this));
  460.       window.addEventListener('keyup', this.onkeyup.bind(this));
  461.     }
  462.  
  463.     onkeydown(event) {
  464.       if (!window.MC || !MC.isInGame()) return;
  465.       switch (event.key.toUpperCase()) {
  466.         case 'W':
  467.           this.ejectDown = true;
  468.           setTimeout(this.eject.bind(this), this.speed);
  469.           break;
  470.         case 'Q':
  471.           window.core.split();
  472.           window.core.split();
  473.           break;
  474.         case 'P':
  475.           for (let i = 0; i < 1; i++) setTimeout(window.core.split, this.speed * i);
  476.           break;
  477.         case 'E':
  478.           client.split();
  479.           break;
  480.         case 'R':
  481.           client.eject();
  482.           break;
  483.         case 'T':
  484.           client.toggleAI();
  485.           break;
  486.         case 'O':
  487.           client.toggleMove();
  488.           break;
  489.       }
  490.       if (event.keyCode == 16) {
  491.         for (let i = 0; i < 11; i++) setTimeout(window.core.split, this.speed * i);
  492.       }
  493.     }
  494.  
  495.     onkeyup(event) {
  496.       switch (String.fromCharCode(event.keyCode).toUpperCase()) {
  497.         case 'W':
  498.           this.ejectDown = false;
  499.           break;
  500.       }
  501.     }
  502.  
  503.     eject() {
  504.       if (this.ejectDown) {
  505.         window.core.eject();
  506.         setTimeout(this.eject.bind(this), this.speed);
  507.       }
  508.     }
  509.  
  510.     addMoveHook() {
  511.       window.core._setTarget = window.core.setTarget;
  512.       window.core.setTarget = function () {
  513.         if (!this.stopped) window.core._setTarget.apply(this, arguments);
  514.         else window.core._setTarget(window.innerWidth / 2, window.innerHeight / 2);
  515.       }.bind(this);
  516.     }
  517.   }
  518.  
  519.   class Minimap {
  520.     constructor() {
  521.       this.canvas = null;
  522.       this.ctx = null;
  523.       this.init();
  524.     }
  525.  
  526.     init() {
  527.       this.createCanvas();
  528.       requestAnimationFrame(this.drawUpdate.bind(this));
  529.     }
  530.  
  531.     createCanvas() {
  532.       if (!document.body) return setTimeout(this.createCanvas.bind(this), 100);
  533.       this.canvas = document.createElement("canvas");
  534.       this.ctx = this.canvas.getContext('2d');
  535.  
  536.       this.addCanvasCustomization();
  537.       document.body.appendChild(this.canvas);
  538.     }
  539.  
  540.     addCanvasCustomization() {
  541.       this.canvas.id = "Minimap";
  542.       this.canvas.width = 200;
  543.       this.canvas.height = 200;
  544.       this.canvas.style.position = "absolute";
  545.       this.canvas.style.border = '3px solid #444444';
  546.       this.canvas.style.top = "74.9%";
  547.       this.canvas.style.right = "0%";
  548.       this.drawUpdate();
  549.     }
  550.  
  551.     clearCanvas() {
  552.       this.ctx.save();
  553.       this.ctx.setTransform(1, 0, 0, 1, 0, 0);
  554.       this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
  555.       this.ctx.restore();
  556.     }
  557.  
  558.     drawUpdate() {
  559.       if (!this.ctx) return;
  560.       this.clearCanvas();
  561.  
  562.       const cWidth = this.canvas.width;
  563.       const cHeight = this.canvas.height;
  564.  
  565.       this.ctx.strokeStyle = "#444444";
  566.       this.ctx.strokeWidth = 1;
  567.       this.ctx.beginPath();
  568.       this.ctx.globalAlpha = 0.9;
  569.       this.ctx.rect(0, 0, cWidth, cHeight);
  570.       this.ctx.fillStyle = "black";
  571.       this.ctx.fill();
  572.       this.ctx.beginPath();
  573.  
  574.       let iCount = Math.floor(cWidth / 40);
  575.       let i;
  576.  
  577.       for (i = 1; i <= iCount; i++) {
  578.         const x = i * 40;
  579.         this.ctx.moveTo(x, 0);
  580.         this.ctx.lineTo(x, cHeight);
  581.         this.ctx.stroke();
  582.       }
  583.  
  584.  
  585.       iCount = Math.floor(cHeight / 40);
  586.  
  587.       for (i = 1; i <= iCount; i++) {
  588.         const y = i * 40;
  589.         this.ctx.moveTo(0, y);
  590.         this.ctx.lineTo(cWidth, y);
  591.         this.ctx.stroke();
  592.       }
  593.  
  594.       this.ctx.closePath();
  595.  
  596.       this.drawCellUpdate(window.playerX, window.playerY, "#A9A9A9");
  597.       if (window.bots.length > 0) this.drawBotUpdate();
  598.       requestAnimationFrame(this.drawUpdate.bind(this));
  599.     }
  600.  
  601.     drawCellUpdate(x, y, color) {
  602.       const transX = (7071 + x) / 14142 * this.canvas.height;
  603.       const transY = (7071 + y) / 14142 * this.canvas.width;
  604.  
  605.       this.ctx.fillStyle = color;
  606.       this.ctx.beginPath();
  607.       this.ctx.arc(transX, transY, 6, 0, 2 * Math.PI);
  608.       this.ctx.fill();
  609.     }
  610.  
  611.     drawBotUpdate() {
  612.       for (const bot of window.bots) {
  613.         const botTransX = (7071 + bot.xPos) / 14142 * this.canvas.height;
  614.         const botTransY = (7071 + bot.yPos) / 14142 * this.canvas.width;
  615.  
  616.         this.ctx.fillStyle = "#006400";
  617.         this.ctx.beginPath();
  618.         if (bot.xPos !== 0 && bot.yPos !== 0) {
  619.           this.ctx.arc(botTransX, botTransY, 6, 0, 2 * Math.PI);
  620.         }
  621.         this.ctx.fill();
  622.       }
  623.     }
  624.   }
  625.  
  626.   window.minimap = new Minimap();
  627.   window.client = new Client();
  628.  
  629.   window.onload = () => {
  630.     new Macro();
  631.   };
  632.  
  633.   window.draw = () => {
  634.     if (!window.minX || !window.minY || !window.maxX || !window.maxY) return;
  635.     const ctx = document.getElementById('canvas').getContext('2d');
  636.     ctx.save();
  637.     ctx.strokeStyle = '#0000ff';
  638.     ctx.lineWidth = 20;
  639.     ctx.lineCap = 'round';
  640.     ctx.lineJoin = 'round';
  641.     ctx.beginPath();
  642.     ctx.moveTo(window.minX, window.minY);
  643.     ctx.lineTo(window.maxX, window.minY);
  644.     ctx.lineTo(window.maxX, window.maxY);
  645.     ctx.lineTo(window.minX, window.maxY);
  646.     ctx.closePath();
  647.     ctx.stroke();
  648.     ctx.restore();
  649.   }
  650.  
  651.   // Load custom core.
  652.   (async function() {
  653.     let core = await (await fetch('https://agar.io/agario.core.js')).text();
  654.     core = core.replace(/([\w$]+\(\d+,\w\[\w>>2\]\|0,(\+\w),(\+\w)\)\|0;[\w$]+\(\d+,\w\[\w>>2\]\|0,\+-(\+\w\[\w\+\d+>>3\]),\+-(\+\w\[\w\+\d+>>3\])\)\|0;)/i,'$1 window.viewScale=$2; if (window.coordOffsetFixed) { window.playerX=$4+window.offsetX; window.playerY=$5+window.offsetY;} if(window.draw){window.draw();}');
  655.     core = core.replace(/(\w\[\w\+(\d+)>>3]=(\w);\w\[\w\+(\d+)>>3]=(\w);\w\[\w\+(\d+)>>3]=(\w);\w\[\w\+(\d+)>>3]=(\w);\w\=\w\+(\d+)\|(\d+);)/i,'$1 function setMapCoords(_0x7e8bx1, _0x7e8bx2, _0x7e8bx3, _0x7e8bx4, _0x7e8bx5, _0x7e8bx6) { if (_0x7e8bx6 - _0x7e8bx5 == 24) { if (_0x7e8bx3 - _0x7e8bx1 > 14E3) { if (_0x7e8bx4 - _0x7e8bx2 > 14E3) { window.offsetX = 7071.067811865476 - _0x7e8bx3; window.offsetY = 7071.067811865476 - _0x7e8bx4; window.minX = _0x7e8bx1;window.minY=_0x7e8bx2;window.maxX=_0x7e8bx3;window.maxY=_0x7e8bx4; window.coordOffsetFixed = true; } } } } setMapCoords($3,$5,$7,$9,$2,$8);');
  656.     core = core.replace(/var (\w)=new WebSocket\((\w\(\w\))\);/, "var $1 = window.agarWebSocket = new WebSocket($2);window.client.agarServer='wss://' + MC.getHost() + ((MC.getPartyToken()) ? '/?party_id=' + MC.getPartyToken() : '');window.client.stopBots();");
  657.     core = core.replace(/if\((\+\w\[\w>>3\])<1\.0\){/i, 'if($1<!client.extraZoom){');
  658.     core = core.replace(/function((\w)){/i, '$& console.log($1);');
  659.     core = core.replace(/c[h>>2]=d;d/, 'c[h>>2]=d; encryptionKey=d;d');
  660.    //core = core.replace(/function tm((w)){/i, '$& console.log($1);')
  661.   core = core.replace(/c[h>>2]=d;d/, 'c[h>>2]=d;if(window.gotKey == false  window.gotKey == undefined  window.gotKey == null){window.encryptionKey = d; window.gotKey = true; console.log("Encryption key (host):"+d)}d');
  662.     core = core.replace(/;if\((\w)<1\.0\){/i, `;if($1<!true){`);
  663.     core = core.replace(/c\[h>>2\]=d;d/, 'c\[h>>2\]=d;if(window.gotKey == false || window.gotKey == undefined || window.gotKey == null){window.encryptionKey = d; window.gotKey = true; console.log("Encryption key (host):"+d); setTimeout(Client.prototype.sendKey(),1000)}d');
  664.     core = core.replace(/(function\(\w\){)(\w.\w\[\w\].stroke\(\))(})/, '$1 $3');
  665.     core = core.replace(/\w\.MC\.onConnect\)/i, '$& window.onConnect();');
  666.     core = core.replace(/([\w]+\s*=\s*[\w]+\s*\+\s*16\s*\|\s*0;\s*([\w=]+)\s*=\s*\+[\w\[\s*><\]]+;)/, '$1 $2*=0.75;');
  667.     eval(core);
  668.     core._disconnect = core.disconnect;
  669.  
  670.     core.disconnect = function() {
  671.       console.log('discconect');
  672.       core._disconnect();
  673.       if (!window.client || !window.client.botsStarted) return;
  674.       window.client.stopBots();
  675.     };
  676.   })();
  677.  
  678.  
  679.   if (!localStorage.getItem('agarUnlimited2UUID')) localStorage.setItem('agarUnlimited2UUID', window.client.createUUID());
  680.   if (!localStorage.getItem('showMinimap')) localStorage.setItem('showMinimap', true);
  681.   if (!localStorage.getItem('botMode')) localStorage.setItem('botMode', 'FEEDER');
  682.   if (!localStorage.getItem('botNick')) localStorage.setItem('botNick', 'Janix-BOT 10');
  683.   if (!localStorage.getItem('botAmount')) localStorage.setItem('botAmount', 100);
  684.   if (!localStorage.getItem('extraZoom')) localStorage.setItem('extraZoom', true);
  685.   JSON.parse(localStorage.getItem('showMinimap')) ? $("#Minimap").show() : $("#Minimap").hide();
  686.   window.client.UUID = localStorage.getItem('agarUnlimited2UUID');
  687.  
  688.   new GUITweaker();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement