JOOTAA

Untitled

Nov 15th, 2018
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window.botScriptVersion = 2.3;
  2. if (window.scriptVersion !== window.botScriptVersion) alert('Please update your script! you are using an old version! There may be some problems when trying to play!');
  3. window.agarServer = 'none';
  4. window.started = false;
  5. window.__connected = 'Disconnected';
  6. window.pelletMode = false;
  7. window._ws = null;
  8. window.wobsocket = null;
  9. window._boarders = {};
  10. window.boarders = {};
  11. var mapWidth = 200;
  12. (function() {
  13.     'use strict';
  14.     function bufToArray(buf) {
  15.         var ab = [];
  16.         for (var i = 0; i < buf.byteLength; i++) {
  17.             ab.push(buf.getUint8(i, true));
  18.         }
  19.         return ab;
  20.     }
  21.     function toArrayBuffer(buf) {
  22.         var ab = new ArrayBuffer(buf.length);
  23.         var view = new Uint8Array(ab);
  24.         for (var i = 0; i < buf.length; ++i) {
  25.             view[i] = buf[i];
  26.         }
  27.         return ab;
  28.     }
  29.     //console.log('Calling connect function');
  30.     connect();
  31.     function connect() {
  32.         //console.log('Connecting!');
  33.         window._ws = new WebSocket('wss://' + window.botConfig.botServer + ':8080?origin=' + location.origin + '&token=' + Math.floor(Math.random() * 100000));
  34.         window._ws.binaryType = 'arraybuffer';
  35.         window._ws.onclose = onclose;
  36.         window._ws.onopen = onopen;
  37.         window._ws._send = window._ws.send;
  38.         window._ws.send = send;
  39.         window._ws.onmessage = onmessage;
  40.     }
  41.     function onmessage(msg) {
  42.         //  console.log(msg.data);
  43.         let buffer = new DataView(msg.data);
  44.         let offset = 0;
  45.         switch (buffer.getUint8(offset++)) {
  46.             case 0:
  47.                 let count = buffer.getUint16(offset, true) + '/' + buffer.getUint16(offset + 2, true);
  48.                 $('#count').html(count);
  49.                 break;
  50.             case 1:
  51.                 let _timeLeft = '';
  52.                 window.oof = buffer;
  53.                 for (; offset < buffer.byteLength; offset++) {
  54.                     _timeLeft += buffer.getUint8(offset).toString();
  55.                 }
  56.                 console.log(_timeLeft);
  57.                 _timeLeft = parseInt(_timeLeft);
  58.                 timeLeft(_timeLeft);
  59.                 break;
  60.         }
  61.     }
  62.     function timeLeft(timeleft) {
  63.         if (timeleft == 'unlimited') $('#timeLeft').html('Lifetime');
  64.         else
  65.             setInterval(() => {
  66.                 var seconds = parseInt(timeleft--);
  67.                 var days = Math.floor(seconds / (3600 * 24));
  68.                 seconds -= days * 3600 * 24;
  69.                 var hrs = Math.floor(seconds / 3600);
  70.                 seconds -= hrs * 3600;
  71.                 var mnts = Math.floor(seconds / 60);
  72.                 seconds -= mnts * 60;
  73.  
  74.                 if (days == 0) $('#timeLeft').html(`${hrs}H ${mnts}M ${seconds}S`);
  75.                 else $('#timeLeft').html(`${days}D ${hrs}H ${mnts}M`);
  76.             }, 1000);
  77.     }
  78.     function onopen() {
  79.         //console.log('Connected!');
  80.         $('#serverStat').html('Connected');
  81.         window.__connected = 'Connected';
  82.         $('#serverStat').removeClass('label-danger');
  83.         $('#serverStat').addClass('label-success');
  84.         let buf = new DataView(new ArrayBuffer(1 + 2 * window.agarServer.length));
  85.         let offset = 0;
  86.         buf.setUint8(offset++, 3);
  87.         for (let i = 0; i < window.agarServer.length; i++) {
  88.             buf.setUint16(offset, window.agarServer.charCodeAt(i), true);
  89.             offset += 2;
  90.         }
  91.         window._ws.send(buf);
  92.     }
  93.     function send(e) {
  94.         if (window._ws.readyState === window._ws.OPEN) window._ws._send(e);
  95.     }
  96.     function onclose(e) {
  97.         if (window._ws.tokenInt) clearInterval(window._ws.tokenInt);
  98.         $('#serverStat').html('Disconnected');
  99.         window.__connected = 'Disconnected';
  100.         $('#serverStat').removeClass('label-success');
  101.         $('#serverStat').addClass('label-danger');
  102.         //console.log('Closed! reason: ' + e.reason);
  103.         if (e.reason !== 'FULL') connect();
  104.     }
  105.     if (window.location.origin == 'http://alis.io') {
  106.         setInterval(() => {
  107.             var _pkt = new DataView(new ArrayBuffer(13));
  108.             _pkt.setUint8(0, 16);
  109.             _pkt.setInt32(1, getCurrentX(), true);
  110.             _pkt.setInt32(5, getCurrentY(), true);
  111.             _pkt.setUint32(9, 0, true);
  112.             window._ws.send(_pkt);
  113.         }, 50);
  114.         setInterval(() => {
  115.             if (!window.webSocket) return;
  116.             if (window.webSocket.url == window.agarServer) return;
  117.             window.agarServer = window.webSocket.url;
  118.             let buf = new DataView(new ArrayBuffer(1 + 2 * window.agarServer.length));
  119.             let offset = 0;
  120.             buf.setUint8(offset++, 3);
  121.             for (let i = 0; i < window.agarServer.length; i++) {
  122.                 buf.setUint16(offset, window.agarServer.charCodeAt(i), true);
  123.                 offset += 2;
  124.             }
  125.             window._ws.send(buf);
  126.         }, 2500);
  127.     } else if (window.location.origin == 'http://agar.bio') {
  128.         window.WebSocket.prototype.realSend = window.WebSocket.prototype.send;
  129.         window.WebSocket.prototype.send = function(pkt) {
  130.             this.realSend(pkt);
  131.             if (this.url.indexOf(window.botConfig.botServer) !== -1) return;
  132.             if (pkt instanceof ArrayBuffer) pkt = new DataView(pkt);
  133.             else if (pkt instanceof DataView) pkt = pkt;
  134.             else pkt = new DataView(toArrayBuffer(pkt));
  135.             switch (pkt.getUint8(0, true)) {
  136.                 case 16:
  137.                     window._ws.send(pkt);
  138.                     break;
  139.                 case 254:
  140.                     if (window.pkt254) return;
  141.                     // console.log(bufToArray(pkt));
  142.                     window.pkt254 = bufToArray(pkt);
  143.                     var buf = new DataView(new ArrayBuffer(1 + pkt.byteLength));
  144.                     buf.setUint8(0, 254);
  145.                     buf.setUint8(1, pkt.getUint8(0));
  146.                     //buf.setUint32(pkt.getUint32(1, true), true);
  147.                     for (var i = 0; i < pkt.byteLength; i++) {
  148.                         buf.setUint8(i + 1, pkt.getUint8(i));
  149.                     }
  150.                     window._ws.send(buf);
  151.                     break;
  152.                 case 255:
  153.                     if (window.pkt255) return;
  154.                     window.pkt255 = bufToArray(pkt);
  155.                     //console.log(bufToArray(pkt));
  156.                     buf = new DataView(new ArrayBuffer(1 + pkt.byteLength));
  157.                     buf.setUint8(0, 255);
  158.                     buf.setUint8(1, pkt.getUint8(0));
  159.                     //buf.setUint32(pkt.getUint32(1, true), true);
  160.                     for (var i = 0; i < pkt.byteLength; i++) {
  161.                         buf.setUint8(i + 1, pkt.getUint8(i));
  162.                     }
  163.                     window._ws.send(buf);
  164.                     break;
  165.                 default:
  166.                 //console.log(bufToArray(pkt));
  167.             }
  168.             if (window.agarServer !== this.url) {
  169.                 window.agarServer = this.url;
  170.                 let buf = new DataView(new ArrayBuffer(1 + 2 * this.url.length));
  171.                 let offset = 0;
  172.                 buf.setUint8(offset++, 3);
  173.                 for (let i = 0; i < this.url.length; i++) {
  174.                     buf.setUint16(offset, this.url.charCodeAt(i), true);
  175.                     offset += 2;
  176.                 }
  177.                 window._ws.send(buf);
  178.             }
  179.         };
  180.     } else {
  181.         WebSocket.prototype.realSend = WebSocket.prototype.send;
  182.         WebSocket.prototype.send = function(pkt) {
  183.             this.realSend(pkt);
  184.             if (this.url.indexOf(window.botConfig.botServer) !== -1) return;
  185.             if (pkt instanceof ArrayBuffer) pkt = new DataView(pkt);
  186.             else if (pkt instanceof DataView) pkt = pkt;
  187.             else pkt = new DataView(toArrayBuffer(pkt));
  188.             //if (location.origin.indexOf('biome3d.com') != -1 && pkt.getUint8(0, true) == 1)
  189.             //pkt.setUint8(0, 16);
  190.             switch (pkt.getUint8(0, true)) {
  191.                 case 16:
  192.                     window._ws.send(pkt);
  193.                     break;
  194.                 case 254:
  195.                     // console.log(bufToArray(pkt));
  196.                     if (window.pkt254) return;
  197.                     window.pkt254 = bufToArray(pkt);
  198.                     var buf = new DataView(new ArrayBuffer(1 + pkt.byteLength));
  199.                     buf.setUint8(0, 254);
  200.                     buf.setUint8(1, pkt.getUint8(0));
  201.                     //buf.setUint32(pkt.getUint32(1, true), true);
  202.                     for (var i = 0; i < pkt.byteLength; i++) {
  203.                         buf.setUint8(i + 1, pkt.getUint8(i));
  204.                     }
  205.                     window._ws.send(buf);
  206.                     break;
  207.                 case 255:
  208.                     if (window.pkt255) return;
  209.                     window.pkt255 = bufToArray(pkt);
  210.                     //console.log(bufToArray(pkt));
  211.                     buf = new DataView(new ArrayBuffer(1 + pkt.byteLength));
  212.                     buf.setUint8(0, 255);
  213.                     buf.setUint8(1, pkt.getUint8(0));
  214.                     //buf.setUint32(pkt.getUint32(1, true), true);
  215.                     for (var i = 0; i < pkt.byteLength; i++) {
  216.                         buf.setUint8(i + 1, pkt.getUint8(i));
  217.                     }
  218.                     window._ws.send(buf);
  219.                     break;
  220.                 default:
  221.                     if (window.cloneSmasherDebug) console.log(bufToArray(pkt));
  222.             }
  223.             if (window.agarServer !== this.url) {
  224.                 window.agarServer = this.url;
  225.                 let buf = new DataView(new ArrayBuffer(1 + 2 * this.url.length));
  226.                 let offset = 0;
  227.                 buf.setUint8(offset++, 3);
  228.                 for (let i = 0; i < this.url.length; i++) {
  229.                     buf.setUint16(offset, this.url.charCodeAt(i), true);
  230.                     offset += 2;
  231.                 }
  232.                 window._ws.send(buf);
  233.             }
  234.         };
  235.         var _WebSocket = WebSocket;
  236.         WebSocket = function(ip) {
  237.             if (ip.indexOf(window.botConfig.botServer) == -1) {
  238.                 window.agarServer = ip;
  239.                 let buf = new DataView(new ArrayBuffer(1 + 2 * ip.length));
  240.                 let offset = 0;
  241.                 buf.setUint8(offset++, 3);
  242.                 for (let i = 0; i < ip.length; i++) {
  243.                     buf.setUint16(offset, ip.charCodeAt(i), true);
  244.                     offset += 2;
  245.                 }
  246.                 window._ws.send(buf);
  247.                 window.wobsocket = new _WebSocket(ip);
  248.                 if (location.origin == 'http://agar.pro' || location.origin == 'http://qwoks.ga' || location.origin == 'http://agar.red') overWriteWS();
  249.                 return window.wobsocket;
  250.             } else return new _WebSocket(ip);
  251.         };
  252.     }
  253.     function isTyping() {
  254.         return $('input:focus').length;
  255.     }
  256.     document.addEventListener('keyup', event => {
  257.         if (!event.key) return;
  258.         const key = event.key.toLowerCase();
  259.         if (isTyping() || event.ctrlKey) return;
  260.         switch (key) {
  261.             case window.botConfig.botSendMessage.toLowerCase():
  262.                 var msg = prompt('What do you want the bots to say?', '');
  263.                 if (!msg) break;
  264.                 var buf = new DataView(new ArrayBuffer(1 + 2 * msg.length));
  265.                 var offset = 0;
  266.                 buf.setUint8(offset++, 99);
  267.                 for (var i = 0; i < msg.length; i++) {
  268.                     buf.setUint16(offset, msg.charCodeAt(i), true);
  269.                     offset += 2;
  270.                 }
  271.                 window._ws.send(buf);
  272.                 break;
  273.             case window.botConfig.botMassGate.toLowerCase():
  274.                 window._ws.send(new Uint8Array([5]));
  275.                 break;
  276.             case window.botConfig.botPelletMode.toLowerCase():
  277.                 window._ws.send(new Uint8Array([4]));
  278.                 break;
  279.             case window.botConfig.hideUI.toLowerCase():
  280.                 $('#b0Tmenu').toggle();
  281.                 break;
  282.             case window.botConfig.botStart.toLowerCase():
  283.                 if (window.started) window._ws.send(new Uint8Array([1]));
  284.                 else window._ws.send(new Uint8Array([0]));
  285.                 window.started = !window.started;
  286.                 break;
  287.         }
  288.     });
  289.     document.addEventListener('keydown', event => {
  290.         if (!event.key) return;
  291.         const key = event.key.toLowerCase();
  292.         if (isTyping() || event.ctrlKey) return;
  293.         switch (key) {
  294.             case window.botConfig.botSplit.toLowerCase():
  295.                 window._ws.send(new Uint8Array([2, 0]));
  296.                 break;
  297.             case window.botConfig.botFeed.toLowerCase():
  298.                 window._ws.send(new Uint8Array([2, 1]));
  299.                 break;
  300.         }
  301.     });
  302.  
  303.     function createIframe() {
  304.         let cloneSmasherSettingsElement = document.createElement('iframe');
  305.         cloneSmasherSettingsElement.src = 'https://clonesmasher.ml/settingsSave';
  306.         cloneSmasherSettingsElement.style = 'display:none;';
  307.         cloneSmasherSettingsElement.id = 'cloneSmasherSettings';
  308.         document.body.appendChild(cloneSmasherSettingsElement);
  309.         window.cloneSmasherSettings = document.getElementById('cloneSmasherSettings').contentWindow;
  310.         window.updateKey = (func, key) => {
  311.             document.getElementById(func).innerText = key.toUpperCase();
  312.             window.botConfig[func] = key.toUpperCase();
  313.         };
  314.         window.addEventListener('message', data => {
  315.             if (data.origin != 'https://clonesmasher.ml') return;
  316.             const message = data.data;
  317.             switch (message.type) {
  318.                 case 'set':
  319.                     window.updateKey(message.function, message.key);
  320.                     break;
  321.                 case 'setup':
  322.                     const _elements = ['botSplit', 'botFeed', 'hideUI', 'botSendMessage'];
  323.                     for (let element of _elements) {
  324.                         document.getElementById(element).onclick = () => {
  325.                             const key = prompt(`What key do you want to change '${element == 'botSendMessage' ? 'chatSpam' : element}' to?`, document.getElementById(element).innerText);
  326.                             if (!key) return;
  327.                             document.getElementById(element).innerText = key[0].toUpperCase();
  328.                             const json = {};
  329.                             json.type = 'set';
  330.                             json.function = element;
  331.                             json.key = key[0].toUpperCase();
  332.                             window.botConfig[element] = key[0].toUpperCase();
  333.                             window.cloneSmasherSettings.postMessage(json, 'https://clonesmasher.ml');
  334.                         };
  335.                     }
  336.                     const setup = {};
  337.                     setup.type = 'setup';
  338.                     setup.botConfig = window.botConfig;
  339.                     window.cloneSmasherSettings.postMessage(setup, 'https://clonesmasher.ml');
  340.                     break;
  341.             }
  342.         });
  343.     }
  344.     function addBotUi() {
  345.         var html = `<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"><div style='z-index: 10000000; position: absolute; left: 1.5em; top: 1.5em;> <div id='botlayersub'>
  346. <div id="b0Tmenu">
  347. <div class='panel panel-default overview'>
  348.   <div class='panel-body'>
  349.      <ul class='list-unstyled'>
  350.         <li class='headline'>
  351.            <center><u><b>CloneSmasher.ml</b></u></center>
  352.         </li>
  353.          <div style='display: inline;'>Server Status: </div><span id='serverStat' class='label ${window.__connected == 'Connected' ? 'label-success' : 'label-danger'} pull-right'>${window.__connected}</span><br>
  354.         <div style='display: inline;'>Bots: </div>
  355.            <div style='display: inline;'><span id='count' class='label label-info pull-right'>Waiting</span></div>
  356.         <li class='time'>Time left:<span id='timeLeft' class='label label-warning pull-right'>0 Seconds</span></li>
  357.      </ul>
  358.   </div>
  359. </div>
  360.  
  361.  
  362.  
  363. <div class='panel panel-default controls'>
  364.     <div class='panel-body'>
  365.         <ul class='list-unstyled'>
  366.             <button id="start" class="btn btn-success">Start Bots</button><br><br>
  367.             <button onclick="$('#botControls').toggle()" class="btn btn-success">Toggle Controls</button>
  368.             </ul>
  369.     </div>
  370. </div>
  371.  
  372.  
  373. <div class='panel panel-default controls' id='botControls'>
  374. <div class='panel-body'>
  375. <ul class='list-unstyled'>
  376. <li class='mouse'>Hide/Show UI<span id='hideUI' class='badge pull-right'>${window.botConfig.hideUI.toUpperCase()}</span></li>
  377. <li class='mouse'>Split Bots<span id='botSplit' class='badge pull-right'>${window.botConfig.botSplit.toUpperCase()}</span></li>
  378. <li class='mouse'>Bot Feed <span id='botFeed' class='badge pull-right'>${window.botConfig.botFeed.toUpperCase()}</span></li>
  379. <li class='mouse'>Chat Spam<span id='botSendMessage' class='badge pull-right'>${window.botConfig.botSendMessage.toUpperCase()}</span></li></div></div></div>`;
  380.         //<li class='mouse'>Collect Pellets<span id='botlayer-key-e' class='badge pull-right'>${window.botConfig.botPelletMode.toUpperCase()}</span></li>
  381.         $('body').append(html);
  382.         if (window.__connected == 'Connected') {
  383.             $('#serverStat').html('Connected');
  384.             $('#serverStat').removeClass('label-danger');
  385.             $('#serverStat').addClass('label-success');
  386.         } else {
  387.             $('#serverStat').html('Connected');
  388.             $('#serverStat').removeClass('label-success');
  389.             $('#serverStat').addClass('label-danger');
  390.         }
  391.         document.getElementById('start').onclick = () => {
  392.             if (window.started) {
  393.                 window._ws.send(new Uint8Array([1]));
  394.                 $('#start').removeClass('btn-danger');
  395.                 $('#start').addClass('btn-success');
  396.                 $('#start').html('Start Bots');
  397.             } else {
  398.                 window._ws.send(new Uint8Array([0]));
  399.                 $('#start').removeClass('btn-success');
  400.                 $('#start').addClass('btn-danger');
  401.                 $('#start').html('Stop Bots');
  402.             }
  403.             window.started = !window.started;
  404.             $('#start').blur();
  405.         };
  406.         createIframe();
  407.     }
  408.     function addUis() {
  409.         if (location.origin == 'https://popsplit.us' || /http\:\/\/.+?biome3d\.com/g.test(location.origin)) setTimeout(addBotUi, 2500);
  410.         else addBotUi();
  411.     }
  412.     addUis();
  413.     function overWriteWS() {
  414.         setTimeout(() => {
  415.             console.log('overwrite ws onmessage!');
  416.             window.wobsocket.___msg = window.wobsocket.onmessage;
  417.             window.wobsocket.onmessage = function(msg) {
  418.                 window.wobsocket.___msg(msg);
  419.                 msg = new DataView(msg.data);
  420.                 let opcode = msg.getUint8(0);
  421.                 switch (opcode) {
  422.                     case 64:
  423.                         window._boarders.x = (msg.getFloat64(1, true) + msg.getFloat64(17, true)) / 2;
  424.                         window._boarders.y = (msg.getFloat64(9, true) + msg.getFloat64(25, true)) / 2;
  425.                         window._ws.send(msg);
  426.                         break;
  427.                 }
  428.             };
  429.         }, 500);
  430.     }
  431. })();
Add Comment
Please, Sign In to add comment