Advertisement
JOOTAA

Untitled

Nov 15th, 2018
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.51 KB | None | 0 0
  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. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement