Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.88 KB | None | 0 0
  1. // ==UserScript==
  2. // @name NeyBots.ga
  3. // @namespace bots for agar
  4. // @version 2.0
  5. // @description ...
  6. // @author SizRex
  7. // @icon64 http://imasters.org.ru/agar/agar_allys_ext_favicon.png
  8. // @icon64URL http://imasters.org.ru/agar/agar_allys_ext_favicon.png
  9. // @icon http://imasters.org.ru/agar/agar_allys_ext_favicon.png
  10. // @match https://agar.io/*
  11. // @require http://code.jquery.com/jquery-latest.js
  12. // @require https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.min.jss
  13. // @require https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
  14. // @require https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js
  15. // @resource https://raw.githubusercontent.com/necolas/css3-github-buttons/master/gh-buttons.css
  16. // @resource https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css
  17. // @resource https://raw.githubusercontent.com/necolas/css3-github-buttons/master/gh-icons.png
  18. // @run-at document-start
  19. // @grant none
  20. // ==/UserScript==
  21.  
  22.  
  23.  
  24. window.bots = [];
  25.  
  26. class Client {
  27. constructor() {
  28. this.totalUsers = 0;
  29. this.botServerIP = 'ws://5.196.58.136:8081';
  30. this.botServerStatus = '';
  31. this.agarServer = 'ws://111.222.333.444:1234';
  32. this.botNick = '';
  33. this.botMode = 'FEEDER';
  34. this.UUID = '';
  35. this.extraZoom = true;
  36. this.botAmount = 1;
  37. this.moveInterval = null;
  38. this.ws = null;
  39. this.reconnect = true;
  40. this.addListener();
  41. }
  42.  
  43. connect() {
  44. this.ws = new WebSocket(this.botServerIP);
  45. this.ws.binaryType = 'arraybuffer';
  46. this.ws.onopen = this.onopen.bind(this);
  47. this.ws.onmessage = this.onmessage.bind(this);
  48. this.ws.onclose = this.onclose.bind(this);
  49. this.ws.onerror = this.onerror.bind(this);
  50. }
  51.  
  52. onopen() {
  53. console.log('Your UUID : ' + window.client.UUID);
  54. console.log('Connection to bot server open');
  55. $('#serverStatus').text('Connected');
  56. this.sendUUID();
  57. this.startMoveInterval();
  58. }
  59.  
  60. onmessage(msg) {
  61. let buf = new DataView(msg.data);
  62. let offset = 0;
  63. let opcode = buf.getUint8(offset++);
  64. if ($("#reconnectButton").prop('disabled', false)) {
  65. $("#reconnectButton").prop('disabled', true);
  66. }
  67. switch (opcode) {
  68. case 0:
  69. {
  70. let addClasses = '';
  71. let removeClasses = '';
  72. switch (buf.getUint8(offset++)) {
  73. case 0:
  74. this.botServerStatus = 'Max сonnections';
  75. this.reconnect = false;
  76. break;
  77. case 1:
  78. this.botServerStatus = 'Invalid Data';
  79. this.reconnect = false;
  80. break;
  81. case 2:
  82. this.botServerStatus = 'IP limit';
  83. this.reconnect = false;
  84. break;
  85. case 3:
  86. this.botServerStatus = 'auth...';
  87. break;
  88. case 4:
  89. this.botServerStatus = 'Ready';
  90. $('#toggleButton').replaceWith(`<button id='toggleButton' onclick='window.client.startBots();' class='btn btn-success'>Start Bots</button>`);
  91. $("#botCounter").html("0/0");
  92. window.bots = [];
  93. break;
  94. case 5:
  95. this.botServerStatus = 'UUID not auth';
  96. this.reconnect = false;
  97. break;
  98. case 6:
  99. this.botServerStatus = 'Getting proxies';
  100. break;
  101. case 7:
  102. this.botServerStatus = 'Bots started!';
  103. break;
  104. case 8:
  105. this.botServerStatus = 'Auth error!';
  106. this.reconnect = false;
  107. break;
  108. case 9:
  109. this.botServerStatus = 'Invalid server';
  110. break;
  111. case 10:
  112. this.botServerStatus = 'Not party server.';
  113. $('#toggleButton').replaceWith(`<button id='toggleButton' onclick='window.client.startBots();' class='btn btn-success'>Start Bots</button>`);
  114. break;
  115. case 11:
  116. this.botServerStatus = 'Coins are over!';
  117. this.reconnect = false;
  118. break;
  119. case 12:
  120. this.botServerStatus = 'Server in maintenance...';
  121. this.reconnect = false;
  122. break;
  123. case 13:
  124. this.totalUsers = buf.getUint8(offset++, true);
  125. $("#userStatus").css("display", "block");
  126. $("#usersCounter").text(this.totalUsers);
  127. break;
  128. }
  129. $("#serverStatus").text(this.botServerStatus);
  130. }
  131. break;
  132. case 1:
  133. {
  134. let spawnedBots = buf.getUint16(offset, true);
  135. offset += 2;
  136. let connectedBots = buf.getUint16(offset, true);
  137. offset += 2;
  138. let maxBots = buf.getUint16(offset, true);
  139. offset += 2;
  140. let coins = buf.getFloat64(offset, true);
  141. offset += 2;
  142. if (spawnedBots >= maxBots) {
  143. $("#botCounter").html(maxBots + "/" + maxBots);
  144. } else {
  145. $("#botCounter").html(connectedBots + "/" + maxBots);
  146. }
  147. $('#coinsCounter').html(`${coins}`);
  148. }
  149. break;
  150. case 2:
  151. {
  152. window.bots = [];
  153. let numBots = buf.getUint16(offset, true);
  154. offset += 2;
  155. for (let i = 0; i < numBots; i++) {
  156. let xPos = buf.getInt32(offset, true) + window.offsetX;
  157. offset += 4;
  158. let yPos = buf.getInt32(offset, true) + window.offsetY;
  159. offset += 4;
  160. window.bots.push({
  161. "xPos": xPos,
  162. "yPos": yPos
  163. });
  164. }
  165. }
  166. break;
  167. }
  168. }
  169.  
  170. onclose() {
  171. console.log('Your UUID : ' + window.client.UUID);
  172. console.log('Connection to bot server closed.');
  173. $("#reconnectButton").prop('disabled', false);
  174. if (this.reconnect) setTimeout(this.connect.bind(this), 150);
  175. if (this.moveInterval) clearInterval(this.moveInterval);
  176. if (!this.reconnect) return;
  177. $('#serverStatus').text('Connecting...');
  178. }
  179.  
  180. onerror() {}
  181.  
  182. sendUUID() {
  183. let buf = this.createBuffer(2 + this.UUID.length);
  184. buf.setUint8(0, 0);
  185. for (let i = 0; i < this.UUID.length; i++) buf.setUint8(1 + i, this.UUID.charCodeAt(i));
  186. this.send(buf);
  187. }
  188.  
  189. sendBotMode(m) {
  190. let mode = m ? m : this.botMode;
  191. let buf = this.createBuffer(2 + mode.length);
  192. buf.setUint8(0, 1);
  193. for (let i = 0; i < mode.length; i++) buf.setUint8(1 + i, mode.charCodeAt(i));
  194. this.send(buf);
  195. }
  196.  
  197. startMoveInterval() {
  198. this.moveInterval = setInterval(() => {
  199. //this.sendPos(window.playerX, window.playerY);
  200. 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);
  201. }, 100);
  202. }
  203.  
  204. toggleAI() {
  205. if ($('#botAI').html() == 'ON') {
  206. $('#botAI').html('OFF');
  207. $('#botAI').removeClass('label-success');
  208. $('#botAI').addClass('label-danger');
  209. this.sendBotMode();
  210. } else {
  211. $('#botAI').html('ON');
  212. $('#botAI').removeClass('label-danger');
  213. $('#botAI').addClass('label-success');
  214. this.sendBotMode('BOTAI');
  215. }
  216. }
  217.  
  218. startBots() {
  219. this.sendBotMode();
  220. let buf = this.createBuffer(6 + this.agarServer.length + 2 * this.botNick.length);
  221. let offset = 0;
  222. buf.setUint8(offset++, 2);
  223. for (let i = 0; i < this.agarServer.length; i++) buf.setUint8(offset++, this.agarServer.charCodeAt(i));
  224. offset++;
  225. for (let i = 0; i < this.botNick.length; i++) {
  226. buf.setUint16(offset, this.botNick.charCodeAt(i), true);
  227. offset += 2;
  228. }
  229. offset += 2;
  230. buf.setUint16(offset, this.botAmount, true);
  231. this.send(buf);
  232. $('#toggleButton').replaceWith(`<button id='toggleButton' onclick='window.client.stopBots();' class='btn btn-danger'>Stop Bots</button>`);
  233. }
  234.  
  235. sendPos(xPos, yPos) {
  236. let buf = this.createBuffer(9);
  237. buf.setUint8(0, 4);
  238. buf.setInt32(1, xPos, true);
  239. buf.setInt32(5, yPos, true);
  240. this.send(buf);
  241. }
  242.  
  243. split() {
  244. this.send(new Uint8Array([5]));
  245. }
  246.  
  247. eject() {
  248. this.send(new Uint8Array([6]));
  249. }
  250.  
  251. addListener() {
  252. document.addEventListener('mousemove', event => {
  253. this.clientX = event.clientX;
  254. this.clientY = event.clientY;
  255. });
  256. }
  257.  
  258. sendNickUpdate() {
  259. let buf = this.createBuffer(3 + 2 * this.botNick.length);
  260. let offset = 0;
  261. buf.setUint8(offset++, 7);
  262. for (let i = 0; i < this.botNick.length; i++) {
  263. buf.setUint16(offset, this.botNick.charCodeAt(i), true);
  264. offset += 2;
  265. }
  266. this.send(buf);
  267. }
  268.  
  269. stopBots() {
  270. this.send(new Uint8Array([3]));
  271. }
  272.  
  273. send(data) {
  274. if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return;
  275. this.ws.send(data, {
  276. binary: true
  277. });
  278. }
  279.  
  280. createUUID() {
  281. const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  282. let token = '';
  283. for (let i = 0; i < 3; i++) {
  284. for (let a = 0; a < 7; a++) token += possible.charAt(Math.floor(Math.random() * possible.length));
  285. token += '-';
  286. }
  287. token = token.substring(0, token.length - 1);
  288. localStorage.setItem('agarUnlimited2UUID', token);
  289. return token;
  290. }
  291.  
  292. createBuffer(len) {
  293. return new DataView(new ArrayBuffer(len));
  294. }
  295. /* sUUID(a) {
  296. if (a) {
  297. $("#UUID").text(localStorage.getItem('agarUnlimited2UUID'));
  298. } else if (!a) {
  299. $("#UUID").text("hover for show");
  300. }
  301. }*/
  302. }
  303.  
  304. class GUITweaker {
  305. constructor() {
  306. this.removeElements();
  307. let check = setInterval(() => {
  308. if (document.readyState == "complete") {
  309. clearInterval(check);
  310. setTimeout(() => {
  311. this.removeElements();
  312. this.addBotGUI();
  313. this.addGUI();
  314. this.finishInit();
  315. window.client.connect();
  316. window.client.botMode = localStorage.getItem('botMode');
  317. let UUID = localStorage.getItem('agarUnlimited2UUID');
  318. $('#agarUnlimitedToken').val(UUID);
  319. }, 1500);
  320. }
  321. }, 100);
  322. }
  323.  
  324. addBotGUI() {
  325. const botAmount = localStorage.getItem('botAmount') || 500;
  326. const botMode = localStorage.getItem('botMode');
  327. $('head').append(`<style type="text/css">.agario-panel,#mainui-grid{border-top: 5px solid #09f4ff; background-image: url("http://cdn.ogario.ovh/static/img/pattern.png"); background-repeat: repeat; background-position: top center;}</style>`);
  328. setTimeout(function() {
  329. $('#mainui-ads').append(`<div class="agario-panel" style="width: 335px; background-color: #fff;";><center><h3>op-client.tk</h3></center>
  330. <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" disabled placeholder="999"value="999"></input><br></span>
  331. <button id="toggleButton" onclick="window.client.startBots();" class="btn btn-success">Start Bots</button>
  332. <button onclick="if(!window.client.reconnect&&window.client.ws.readyState!==1){window.client.reconnect=true;window.client.connect();}else{}" class="btn btn-success" id="reconnectButton" style="float:right;">Reconnect</button></div>
  333. <span style="font-size:13px;">UUID:</span><br><button class="btn success" onclick="myFunction()">Click For UUID</button>
  334.  
  335. <script>
  336. function myFunction() {
  337. alert("Your UUID : " + window.client.UUID);
  338. }
  339. </script></div>
  340. <div>`);
  341. },5000);
  342. }
  343.  
  344. removeElements() {
  345. $('#advertisement').remove();
  346. $('#bannerCarousel').remove();
  347. $('#user-id-tag').remove();
  348. }
  349.  
  350. addGUI() {
  351. $("body").append(`<div style="position:fixed; min-width: 200px; z-index:9999; min-height: 100px; max-width: 900px; max-height: 200px"><div id="botSector" style="min-width: 25px;color:#fff; min-height: 25px;background: #333;max-width: 200px; max-height: 200px; border-radius: 10px"><div id="botText" style="margin-left: 10px;color:#fff0; width: 49px; height: 53; background: url('https://i.imgur.com/WZdqjIs.png') no-repeat;background-position-y: 1px;background-size: 45%">_<span style="color: #fff; margin-left: 15px; ">Minions:</span><span style="color: #fff; margin-left: 5px;"id="botCounter">0/0</span></div>
  352. </div><div id="botSector" style="min-width: 25px;color:#fff; min-height: 25px;background: #333;max-width: 200px; max-height: 200px; border-radius: 10px; margin-top: 5px"><div id="botText" style="margin-left: 10px;color:#fff0; width: 49px; height: 53; background: url('https://i.imgur.com/bIUuG5a.png') no-repeat;background-position-y: 1px;background-size: 45%">_<span style="color: #fff; margin-left: 15px; ">Coins:</span><span style="color: #fff; margin-left: 5px;"id="coinsCounter">0</span></div>
  353. </div><div id="botSector" style="min-width: 25px;color:#fff; min-height: 25px;background: #333;max-width: 200px; max-height: 200px; border-radius: 10px; margin-top: 5px"><div id="botText" style="margin-left: 10px;color:#fff0; width: 100%; background: url('https://i.imgur.com/F8B58GB.png') no-repeat;background-position-y: 1px;background-size: 11%">_<span style="color: #fff; margin-left: 15px; ">Status:</span><span style="color: #fff; margin-left: 5px;"id="serverStatus">Waiting</span></div>
  354. </div><div id="userStatus" style="display: none;min-width: 25px;color:#fff; min-height: 25px;background: #333;max-width: 200px; max-height: 200px; border-radius: 10px; margin-top: 5px"><div id="botText" style="margin-left: 10px;color:#fff0; width: 100%; background: url('https://i.imgur.com/H9UAQ5Q.png') no-repeat;background-position-y: 1px;background-size: 11%">_<span style="color: #fff; margin-left: 15px; ">Users right now:</span><span style="color: #fff; margin-left: 5px;"id="usersCounter">0</span></div></div></div></div>`);
  355. }
  356.  
  357. finishInit() {
  358. window.client.botMode = localStorage.getItem('botMode');
  359. window.client.botAmount = localStorage.getItem('botAmount') >>> 0;
  360. window.client.botNick = localStorage.getItem('botNick');
  361. let UUID = localStorage.getItem('agarUnlimited2UUID');
  362. $('#agarUnlimitedToken').val(UUID);
  363. }
  364. }
  365.  
  366. class Macro {
  367. constructor() {
  368. this.ejectDown = false;
  369. this.stopped = false;
  370. this.speed = 15;
  371. setTimeout(this.addMoveHook.bind(this), 10000);
  372. this.addKeyHooks();
  373. }
  374.  
  375. addKeyHooks() {
  376. window.addEventListener('keydown', this.onkeydown.bind(this));
  377. }
  378.  
  379. onkeydown(event) {
  380. if (!window.MC || !MC.isInGame()) return;
  381. switch (event.which) {
  382. case 87:
  383. window.core.eject();
  384. break;
  385. case 88:
  386. client.split();
  387. break;
  388. case 67:
  389. client.eject();
  390. break;
  391. case 80:
  392. client.toggleAI();
  393. break;
  394. }
  395. if (event.keyCode == 16) {
  396. for (let i = 0; i < 11; i++) setTimeout(window.core.split, this.speed * i);
  397. }
  398. }
  399.  
  400.  
  401. eject() {
  402. if (this.ejectDown) {
  403. window.core.eject();
  404. setTimeout(this.eject.bind(this), this.speed);
  405. }
  406. }
  407.  
  408. addMoveHook() {
  409. window.core._setTarget = window.core.setTarget;
  410. window.core.setTarget = function() {
  411. if (!this.stopped) window.core._setTarget.apply(this, arguments);
  412. else window.core._setTarget(window.innerWidth / 2, window.innerHeight / 2);
  413. }.bind(this);
  414. }
  415. }
  416.  
  417. class Minimap {
  418. constructor() {
  419. this.canvas = null;
  420. this.ctx = null;
  421. this.init();
  422. }
  423.  
  424. init() {
  425. this.createCanvas();
  426. requestAnimationFrame(this.drawUpdate.bind(this));
  427. }
  428.  
  429. createCanvas() {
  430. if (!document.body) return setTimeout(this.createCanvas.bind(this), 100);
  431. this.canvas = document.createElement("canvas");
  432. this.ctx = this.canvas.getContext('2d');
  433.  
  434. this.addCanvasCustomization();
  435. document.body.appendChild(this.canvas);
  436. }
  437.  
  438. addCanvasCustomization() {
  439. this.canvas.id = "Minimap";
  440. this.canvas.width = 200;
  441. this.canvas.height = 200;
  442. this.canvas.style.position = "absolute";
  443. this.canvas.style.top = "74.9%";
  444. this.canvas.style.right = "0%";
  445. this.drawUpdate();
  446. }
  447.  
  448. clearCanvas() {
  449. this.ctx.save();
  450. this.ctx.setTransform(1, 0, 0, 1, 0, 0);
  451. this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
  452. this.ctx.restore();
  453. }
  454.  
  455. drawUpdate() {
  456. if (!this.ctx) return;
  457. this.clearCanvas();
  458.  
  459. const cWidth = this.canvas.width;
  460. const cHeight = this.canvas.height;
  461.  
  462. this.ctx.strokeStyle = "#444444";
  463. this.ctx.strokeWidth = 1;
  464. this.ctx.beginPath();
  465. this.ctx.globalAlpha = 0.9;
  466. this.ctx.rect(0, 0, cWidth, cHeight);
  467. this.ctx.fillStyle = "rgba(0, 0, 0, 0.27)";
  468. this.ctx.fill();
  469. this.drawCellUpdate(window.playerX, window.playerY, "#FF0000");
  470. if (window.bots.length > 0) this.drawBotUpdate();
  471. requestAnimationFrame(this.drawUpdate.bind(this));
  472. }
  473.  
  474. drawCellUpdate(x, y, color) {
  475. const transX = (7071 + x) / 14142 * this.canvas.height;
  476. const transY = (7071 + y) / 14142 * this.canvas.width;
  477.  
  478. this.ctx.fillStyle = color;
  479. this.ctx.beginPath();
  480. this.ctx.arc(transX, transY, 6, 0, 2 * Math.PI);
  481. this.ctx.fill();
  482. }
  483.  
  484. drawBotUpdate() {
  485. for (const bot of window.bots) {
  486. const botTransX = (7071 + bot.xPos) / 14142 * this.canvas.height;
  487. const botTransY = (7071 + bot.yPos) / 14142 * this.canvas.width;
  488.  
  489. this.ctx.fillStyle = "#FFFF00";
  490. this.ctx.beginPath();
  491. if (bot.xPos !== 0 && bot.yPos !== 0) {
  492. this.ctx.arc(botTransX, botTransY, 6, 0, 2 * Math.PI);
  493. }
  494. this.ctx.fill();
  495. }
  496. }
  497. }
  498. setTimeout(function() {
  499. window.minimap = new Minimap();
  500. window.client = new Client();
  501. window.gui = new GUITweaker();
  502. window.macros = new Macro();
  503. window.client.UUID = localStorage.getItem('agarUnlimited2UUID') || window.client.createUUID();
  504. }, 1000);
  505.  
  506. window.draw = () => {
  507. if (!window.minX || !window.minY || !window.maxX || !window.maxY) return;
  508. const ctx = document.getElementById('canvas').getContext('2d');
  509. ctx.save();
  510. ctx.strokeStyle = '#0000ff';
  511. ctx.lineWidth = 20;
  512. ctx.lineCap = 'round';
  513. ctx.lineJoin = 'round';
  514. ctx.beginPath();
  515. ctx.moveTo(window.minX, window.minY);
  516. ctx.lineTo(window.maxX, window.minY);
  517. ctx.lineTo(window.maxX, window.maxY);
  518. ctx.lineTo(window.minX, window.maxY);
  519. ctx.closePath();
  520. ctx.stroke();
  521. ctx.restore();
  522. window.core.setFpsCap(120);
  523. }
  524.  
  525.  
  526. $.ajax('https://agar.io/agario.core.js', {
  527. success: core => {
  528. 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.core.setFpsCap) {window.core.setFpsCap(999)};if (window.coordOffsetFixed) { window.playerX=$4+window.offsetX; window.playerY=$5+window.offsetY;} if(window.draw){window.draw();}');
  529. 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);');
  530. core = core.replace(/var (\w)=new WebSocket\((\w\(\w\))\);/, 'window.client.agarServer=$2;var $1=new WebSocket(window.client.agarServer);');
  531. core = core.replace(/(function\(\w\){)(\w.\w\[\w\].stroke\(\))(})/, '$1 $3');
  532. eval(core);
  533. },
  534. dataType: 'text',
  535. method: 'GET',
  536. cache: false,
  537. crossDomain: true
  538. });
  539.  
  540. if (!localStorage.getItem('agarUnlimited2UUID')) localStorage.setItem('agarUnlimited2UUID', window.client.createUUID());
  541. if (!localStorage.getItem('showMinimap')) localStorage.setItem('showMinimap', true);
  542. if (!localStorage.getItem('botMode')) localStorage.setItem('botMode', 'FEEDER');
  543. if (!localStorage.getItem('botNick')) localStorage.setItem('botNick', 'MrSonicMaster');
  544. if (!localStorage.getItem('botAmount')) localStorage.setItem('botAmount', 100);
  545. if (!localStorage.getItem('extraZoom')) localStorage.setItem('extraZoom', true);
  546. JSON.parse(localStorage.getItem('showMinimap')) ? $("#Minimap").show() : $("#Minimap").hide();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement