EZ_HACK_MOD_GG BY "EZ_HACK"👍 CREATET SUPER PRO v 1.2

A mod suitable for professionals only, not automatic, only automatic healing.

当前为 2024-05-30 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name EZ_HACK_MOD_GG BY "EZ_HACK"👍 CREATET SUPER PRO v 1.2
  3. // @namespace no
  4. // @license MIT
  5. // @version 1.2
  6. // @author EZ HACK
  7. // @description A mod suitable for professionals only, not automatic, only automatic healing.
  8. // @match *://*.moomoo.io/*
  9. // @match *://dev.moomoo.io/*
  10. // @match *://sandbox.moomoo.io/*
  11. // @require https://greasyfork.org/scripts/478839-moomoo-io-packet-code/code/MooMooio%20Packet%20Code.js
  12. // @require https://cdn.jsdelivr.net/npm/msgpack-lite@0.1.26/dist/msgpack.min.js
  13. // @require https://greasyfork.org/scripts/423602-msgpack/code/msgpack.js
  14. // @grant none
  15. // @icon https://i.imgur.com/Q7vI76D.png
  16. // @downloadURL
  17. // ==/UserScript==
  18. /*
  19. Key code :
  20. R__insta kill
  21. T__revers insta
  22. F__trap
  23. V__spieks
  24. O__4 spieaks
  25. C__no hat
  26. N__auto 3 mill
  27. G__ boster hat / wanter cap / Fish hat
  28. H__ 2 turret
  29. E__tank gear / solder helmet If you have a problem with the E button, press the number zero
  30. 0-zero__tank gear / solder helmet
  31. Q __speed auto heal
  32. U__store Menu
  33. Y__alliance Menu
  34. L__on / off funy
  35. CLICK FORWARD__ tank gear / solder helmet
  36. Right click__ nice DMG
  37. Space__1 spieks + DMG
  38. Shift__solder helmet
  39. Click scroll wheel__ 4 trap
  40. INSERT__Hide accessories
  41. B__chat(turret pls)
  42. M__chat(fuck Israel)
  43. */
  44. document.getElementById('enterGame').innerText = "⇏ ‍ ‍ Play_game. ‍ ‍ ‍⇍";
  45. document.getElementById("enterGame").addEventListener("mouseenter", function() {
  46. document.getElementById('enterGame').innerText = "⇏ Play_game. ‍⇍";
  47. });
  48. document.getElementById("enterGame").addEventListener("mouseleave", function() {
  49. document.getElementById('enterGame').innerText = "⇏ ‍ ‍ Play_game. ‍ ‍ ‍⇍";
  50. });
  51. $('#itemInfoHolder').css({
  52. 'text-align': 'center',
  53. 'top': '25px',
  54. 'left': '440px',
  55. 'right': '350px',
  56. 'max-width': '350px'
  57. });
  58. document.getElementById('chatBox').innerHTML = 'Hi LOL-_-';
  59. document.getElementById('gameName').innerHTML = '';
  60. setTimeout(() => {
  61. document.getElementById('gameName').innerHTML = 'Loading..';
  62. setTimeout(() => {
  63. document.getElementById('gameName').innerHTML = 'E';
  64. setTimeout(() => {
  65. document.getElementById('gameName').innerHTML = 'EZ';
  66. setTimeout(() => {
  67. document.getElementById('gameName').innerHTML = 'EZ ';
  68. setTimeout(() => {
  69. document.getElementById('gameName').innerHTML = 'EZ H';
  70. setTimeout(() => {
  71. document.getElementById('gameName').innerHTML = 'EZ HA';
  72. setTimeout(() => {
  73. document.getElementById('gameName').innerHTML = 'EZ HAC';
  74. setTimeout(() => {
  75. document.getElementById('gameName').innerHTML = 'EZ HACK';
  76. setTimeout(() => {
  77. document.getElementById('gameName').innerHTML = 'EZ HACK ';
  78. setTimeout(() => {
  79. document.getElementById('gameName').innerHTML = 'EZ HACK MOD LOL';
  80. }, 120);
  81. }, 120);
  82. }, 120);
  83. }, 120);
  84. }, 120);
  85. }, 120);
  86. }, 120);
  87. }, 120);
  88. }, 120);
  89. }, 120);
  90. document.getElementById('loadingText').innerHTML = 'Loading...';
  91. setTimeout(() => {
  92. document.getElementById('loadingText').innerHTML = 'lOADING GAME';
  93. }, 710);
  94. (function () {
  95. 'use strict';
  96. let allianceMenu = document.getElementById('allianceMenu');
  97. let storeMenu = document.getElementById('storeMenu');
  98. document.addEventListener('keydown', function (event) {
  99. if (shouldHandleMenus(event)) {
  100. if (event.key === 'y') {
  101. toggleMenu(allianceMenu, storeMenu);
  102. } else if (event.key === 'u') {
  103. toggleMenu(storeMenu, allianceMenu);
  104. }
  105. if (event.key === 'Y') {
  106. toggleMenu(allianceMenu, storeMenu);
  107. } else if (event.key === 'U') {
  108. toggleMenu(storeMenu, allianceMenu);
  109. }
  110. }
  111. });
  112. function shouldHandleMenus(event) {
  113. const chatboxActive = document.activeElement.id.toLowerCase() === 'chatbox';
  114. const allianceInputActive = document.activeElement.id.toLowerCase() === 'allianceinput';
  115. return !chatboxActive && !allianceInputActive;
  116. }
  117. function toggleMenu(menu, otherMenu) {
  118. if (menu.style.display === 'none' || menu.style.display === '') {
  119. menu.style.display = 'block';
  120. if (otherMenu.style.display !== 'none') {
  121. otherMenu.style.display = 'none';
  122. }
  123. } else {
  124. menu.style.display = 'none';
  125. }
  126. }
  127. })();
  128. document.getElementById('loadingText').innerHTML = '....LOL HACK -_-....'
  129. document.getElementById('gameName').style.textShadow = 'none';
  130. document.getElementById('gameName').style.fontSize = "155px";
  131. document.getElementById('linksContainer2').style.background = "grey";
  132. document.getElementById('mapDisplay').height = '450';
  133. document.getElementById('mapDisplay').width = '450';
  134. document.getElementById('diedText').innerHTML = "its..ok";
  135. document.getElementById('diedText').style.color = "grey";
  136. $("#moomooio_728x90_home").parent().css({display: "none"});
  137. document.getElementById('linksContainer2').innerHTML = 'EZ HACK MOD' ;
  138. document.querySelector("#gameName").innerHTML = "EZ HACK";
  139. document.getElementById("storeHolder").style = "height: 345px; width: 410px;";
  140. document.getElementById('enterGame').innerText = "EZ HACK MOD";
  141. document.getElementById("enterGame").style.color = "#000000";
  142. document.getElementById("enterGame").style.backgroundColor = "grey";
  143. document.title = ' EZ HACK MOD';
  144. $("#mapDisplay").css({background: `url('https://i.imgur.com/aGpK7hj.png')`});
  145. $("#wideAdCard").remove();
  146. $("#storeDisplay1").remove();
  147. $("#adCard").remove();
  148. $("#promoImgHolder").remove();
  149. let style = document.createElement('style')
  150. style.appendChild(document.createTextNode(`
  151. `))
  152. document.head.appendChild(style)
  153. let replaceInterval = setInterval(() => {
  154. if (CanvasRenderingContext2D.prototype.roundRect) {
  155. CanvasRenderingContext2D.prototype.roundRect = ((oldFunc) => function() { if (this.fillStyle == "#8ecc51") this.fillStyle = `hsl(180, 100%, 50%)`; return oldFunc.call(this, ...arguments); })(CanvasRenderingContext2D.prototype.roundRect);
  156. clearInterval(replaceInterval);
  157. }}, 10);
  158. setInterval(() => {
  159. if (autoaim == true) {
  160. doNewSend(["D", [nearestEnemyAngle]]);
  161. }
  162. }, 10);
  163. var spikeType;
  164. var isEnemyNear;
  165. var nearestEnemyAngle;
  166. var autoaim = false;
  167. var primary;
  168. var secondary;
  169. var foodType;
  170. let hitBack = false;
  171. let stackInsta = false;
  172. let anti = true;
  173. let hitTToggle = 1;
  174. let hitToggle = 0;
  175. let hatToggle = 1;
  176. let ais = [];
  177. let ws;
  178. let x = 0;
  179. let y = 0;
  180. let msgpack5 = window.msgpack;
  181. let scale = 45;
  182. let placeOffset = 5;
  183. let crashing;
  184. let cmds = {
  185. autoheal: false,
  186. automill: false
  187. }
  188. let inv = {
  189. primary: null,
  190. secondary: null,
  191. food: null,
  192. wall: null,
  193. spike: null,
  194. trap: null,
  195. mill: null,
  196. mine: null,
  197. boostPad: null,
  198. spikeType: null,
  199. turret: null,
  200. spawnpad: null
  201. };
  202. let myPlayer = {
  203. sid: null,
  204. hp: null,
  205. x: null,
  206. y: null,
  207. dir: null,
  208. buildIndex: null,
  209. weaponIndex: null,
  210. weaponVariant: null,
  211. team: null,
  212. isLeader: null,
  213. skinIndex: null,
  214. tailIndex: null,
  215. iconIndex: null
  216. };
  217. let enemy;
  218. let nearestEnemy;
  219. let enemyInf = { hat: null, x: null, y: null, weaponIndex: null}
  220. document.msgpack = window.msgpack;
  221. WebSocket.prototype.oldSend = WebSocket.prototype.send;
  222. WebSocket.prototype.send = function (e) {
  223. ws || (document.ws = this, ws = this, document.ws.addEventListener("message", hookWS));
  224. this.oldSend(e);
  225. };
  226. function dist(a, b){
  227. return Math.sqrt( Math.pow((b.y-a[2]), 2) + Math.pow((b.x-a[1]), 2) );
  228. }
  229. function handleMessage(m){
  230. let temp = msgpack5.decode(new Uint8Array(m.data));
  231. let data;
  232. if(temp.length > 1) {
  233. data = [temp[0], ...temp[1]];
  234. if (data[1] instanceof Array){
  235. data = data;
  236. }
  237. } else {
  238. data = temp;
  239. }
  240. let item = data[0];
  241. if(!data) {return};
  242. }
  243. let join = message => Array.isArray(message) ? [...message] : [...message];
  244. let hookWS = ms => {
  245. let tmpData = msgpack5.decode(new Uint8Array(ms.data));
  246. let data;
  247. if(tmpData.length > 1) { data = [tmpData[0], ...tmpData[1]]; if (data[1] instanceof Array){ data = data } } else { data = tmpData }
  248. let item = data[0];
  249. if(!data) {return};
  250. if (item == "C" && myPlayer.sid == null){
  251. myPlayer.sid = data[1];
  252. }
  253. if (item == "O" && data[1] == myPlayer.sid) {
  254. let hp = data[2]
  255. if (hp < 91) {
  256. let c;
  257. if (hp < 100) c = 2;
  258. for (let i=0;i<c;i++) setTimeout(() => { place(foodType); }, i * 0.2);
  259. for (let i=0;i<2;i++) setTimeout(() => { place(foodType); }, i * 0);
  260. }
  261. }
  262. /*if (data[2] < 62 && data[2] > 41 && anti == true && (nearestEnemy[5] == 5 || nearestEnemy[5] == 3)) {
  263. //console.log("anti insta - polearm");
  264. doNewSend(["c", [0, 22, 0]]);
  265. place(inv.food);
  266. for (let i=0;i<2;i++) { place(inv.food); }
  267. setTimeout(() => {
  268. place(inv.food);
  269. doNewSend(["c", [0, 6, 0]]);
  270. }, 240);
  271. }*/
  272. if (item == "a") {
  273. enemy = [];
  274. for(let i = 0; i < data[1].length / 13; i++) {
  275. let inf = data[1].slice(13*i, 13*i+13);
  276. if(inf[0] == myPlayer.sid) {
  277. myPlayer.x = inf[1];
  278. myPlayer.y = inf[2];
  279. myPlayer.dir = inf[3];
  280. myPlayer.buildIndex = inf[4];
  281. myPlayer.weaponIndex = inf[5];
  282. myPlayer.weaponVariant = inf[6];
  283. myPlayer.team = inf[7];
  284. myPlayer.isLeader = inf[8];
  285. myPlayer.skinIndex = inf[9];
  286. myPlayer.tailIndex = inf[10];
  287. myPlayer.iconIndex = inf[11];
  288. } else if(inf[7] != myPlayer.team || inf[7] === null) {
  289. enemy.push(inf);
  290. }
  291. }
  292. }
  293. isEnemyNear = false;
  294. if (enemy) {
  295. nearestEnemy = enemy.sort((a, b) => dist(a, myPlayer) - dist(b, myPlayer))[0];
  296. }
  297. isEnemyNear = false;
  298. if (enemy) {
  299. nearestEnemy = enemy.sort((a, b) => dist(a, myPlayer) - dist(b, myPlayer))[0];
  300. }
  301. if (nearestEnemy) {
  302. nearestEnemyAngle = Math.atan2(nearestEnemy[2] - myPlayer.y, nearestEnemy[1] - myPlayer.x);
  303. }
  304. if (nearestEnemy) {
  305. enemyInf.weaponIndex = nearestEnemy[5]
  306. enemyInf.hat = nearestEnemy[9]
  307. enemyInf.x = nearestEnemy[1]
  308. enemyInf.y = nearestEnemy[2]
  309. }
  310. if (y !== myPlayer.y || x !== myPlayer.x) {
  311. if (cmds.automill) {
  312. let angle = Math.atan2(y - myPlayer.y, x - myPlayer.x);
  313. place(inv.mill, angle + Math.PI / 2.2);
  314. place(inv.mill, angle);
  315. place(inv.mill, angle - Math.PI / 2.2);
  316. }
  317. x = myPlayer.x;
  318. y = myPlayer.y;
  319. }
  320. refresh();
  321. }
  322. var turretType;
  323. var repeater = function(key, action, interval) {
  324. let _isKeyDown = false;
  325. let _intervalId = undefined;
  326. return {
  327. start(keycode) {
  328. if(keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') {
  329. _isKeyDown = true;
  330. if(_intervalId === undefined) {
  331. _intervalId = setInterval(() => {
  332. action();
  333. if(!_isKeyDown){
  334. clearInterval(_intervalId);
  335. _intervalId = undefined;
  336. } }, interval) } } }, stop(keycode) { if(keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') { _isKeyDown = false; } } } }
  337. function noAcc() {
  338. setTimeout(() => { doNewSend(["c", [0, 0, 1]])}, 10)
  339. setTimeout(() => { doNewSend(["c", [0, 0, 1]])}, 20)
  340. setTimeout(() => { doNewSend(["c", [0, 0, 1]])}, 60)
  341. setTimeout(() => { doNewSend(["c", [0, 0, 1]])}, 70)
  342. setTimeout(() => { doNewSend(["c", [0, 0, 1]])}, 90)
  343. }
  344. function biomeHat() {
  345. if (myPlayer.y < 2400) {
  346. storeEquip(15); doNewSend(["c", [0, 11, 1]]); doNewSend(["c", [0, 15, 0]]); hat(15)
  347. } else {
  348. if (myPlayer.y > 6850 && myPlayer.y < 7550) {
  349. storeEquip(31); doNewSend(["c", [0, 31, 0]]); hat(31); doNewSend(["c", [0, 11, 1]]);
  350. } else {
  351. storeEquip(12); doNewSend(["c", [0, 12, 0]]); hat(12); doNewSend(["c", [0, 11, 1]]);
  352. }
  353. }
  354. }
  355. if (!nearestEnemy) {
  356. nearestEnemyAngle = myPlayer.dir;
  357. }
  358. function isElementVisible(e) {
  359. return (e.offsetParent !== null);
  360. }
  361. if (crashing && !closed) {
  362. for (let e = 0; e < 1000; e++) {
  363. let result = new Uint8Array(Math.round(Math.random() * 18));for (let i = 0; i < result.length; i++) {if (i == 0) {result[i] = Math.round(Math.random() * 256);} else {if (i == 1) {result[i] = Math.round(Math.random() * 256);} else {if (i == 2) {result[i] = Math.round(Math.random() * 128);} else {if (i == 3) {result[i] = Math.round(Math.random() * 85);} else {if (i == 4) {result[i] = Math.round(Math.random() * 64);} else {if (i == 5) {result[i] = Math.round(Math.random() * 51);} else {if (i == 6) {result[i] = Math.round(Math.random() * 42);} else {if (i == 7) {result[i] = Math.round(Math.random() * 36);} else {if (i == 8) {result[i] = Math.round(Math.random() * 32);} else {if (i == 9) {result[i] = Math.round(Math.random() * 28);} else {if (i == 10) {result[i] = Math.round(Math.random() * 25);} else {if (i == 11) {result[i] = Math.round(Math.random() * 23);} else {if (i == 12) {result[i] = Math.round(Math.random() * 21);} else {if (i == 13) {result[i] = Math.round(Math.random() * 19);} else {if (i == 14) {result[i] = Math.round(Math.random() * 18);} else {if (i == 15) {result[i] = Math.round(Math.random() * 17);} else {if (i == 16) {result[i] = Math.round(Math.random() * 16);} else {if (i == 17) {result[i] = Math.round(Math.random() * 15);}}}}}}}}}}}}}}}}}}}ws.oldSend(result);
  364. }
  365. }
  366. function doNewSend(sender){
  367. ws.send(new Uint8Array(Array.from(msgpack5.encode(sender))));
  368. }
  369. const emit = (e, a, b, c, m, r) => ws.send(Uint8Array.from([...msgpack5.encode([e, [a, b, c, m, r]])]));
  370. const place = (e, l) => {
  371. emit("G", e, false);
  372. emit("d", 1, l);
  373. emit("d", 0, l);
  374. emit("G", myPlayer.weaponIndex, true);
  375. };
  376. function chat(msg) { emit("6", msg); }
  377. function acc(id) {
  378. doNewSend(["c", [0, 0, 1]]);
  379. doNewSend(["c", [0, id, 1]]);
  380. }
  381. function hat(id) {
  382. emit("c", myPlayer.skinIndex, id, 0);
  383. doNewSend(["c", [0, id, 0]]);
  384. }
  385. function weapon(e) {
  386. if (e === 'primary') { emit("G", inv.primary, true); }
  387. if (e === 'secondary') { emit("G", inv.secondary, true) }
  388. }
  389. function toRad(angle) {
  390. return angle * 0.01745329251;
  391. }
  392. function hit(e) {
  393. if (e == true || e == false) emit("K", true)
  394. }
  395. const refresh = () => {
  396. for (let c = 0; c < 9; c++) {
  397. var _document$getElementB;
  398. if (((_document$getElementB = document.getElementById(`actionBarItem${c}`)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.offsetParent) !== null) {
  399. inv.primary = c;
  400. }
  401. }
  402. for (let s = 9; s < 16; s++) {
  403. var _document$getElementB2;
  404. if (((_document$getElementB2 = document.getElementById(`actionBarItem${s}`)) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.offsetParent) !== null) {
  405. inv.secondary = s;
  406. }
  407. }
  408. for (let P = 16; P < 19; P++) {
  409. var _document$getElementB3;
  410. if (((_document$getElementB3 = document.getElementById(`actionBarItem${P}`)) === null || _document$getElementB3 === void 0 ? void 0 : _document$getElementB3.offsetParent) !== null) {
  411. inv.food = P - 16;
  412. }
  413. }
  414. for (let f = 19; f < 22; f++) {
  415. var _document$getElementB4;
  416. if (((_document$getElementB4 = document.getElementById(`actionBarItem${f}`)) === null || _document$getElementB4 === void 0 ? void 0 : _document$getElementB4.offsetParent) !== null) {
  417. inv.wall = f - 16;
  418. }
  419. }
  420. for (let _ = 22; _ < 26; _++) {
  421. var _document$getElementB5;
  422. if (((_document$getElementB5 = document.getElementById(`actionBarItem${_}`)) === null || _document$getElementB5 === void 0 ? void 0 : _document$getElementB5.offsetParent) !== null) {
  423. inv.spike = _ - 16;
  424. }
  425. }
  426. for (let u = 26; u < 29; u++) {
  427. var _document$getElementB6;
  428. if (((_document$getElementB6 = document.getElementById(`actionBarItem${u}`)) === null || _document$getElementB6 === void 0 ? void 0 : _document$getElementB6.offsetParent) !== null) {
  429. inv.mill = u - 16;
  430. }
  431. }
  432. for (let I = 29; I < 31; I++) {
  433. var _document$getElementB7;
  434. if (((_document$getElementB7 = document.getElementById(`actionBarItem${I}`)) === null || _document$getElementB7 === void 0 ? void 0 : _document$getElementB7.offsetParent) !== null) {
  435. inv.mine = I - 16;
  436. }
  437. }
  438. for (let p = 31; p < 33; p++) {
  439. var _document$getElementB8;
  440. if (((_document$getElementB8 = document.getElementById(`actionBarItem${p}`)) === null || _document$getElementB8 === void 0 ? void 0 : _document$getElementB8.offsetParent) !== null) {
  441. inv.boostPad = p - 16;
  442. }
  443. }
  444. for (let x = 31; x < 33; x++) {
  445. var _document$getElementB9;
  446. if (((_document$getElementB9 = document.getElementById(`actionBarItem${x}`)) === null || _document$getElementB9 === void 0 ? void 0 : _document$getElementB9.offsetParent) !== null) {
  447. inv.trap = x - 16;
  448. }
  449. }
  450. for (let i = 22; i < 26; i++) {
  451. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  452. spikeType = i - 16;
  453. }
  454. }
  455. for (let i = 16; i < 19; i++) {
  456. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  457. foodType = i - 16;
  458. }
  459. }
  460. for (let i = 9; i < 16; i++) {
  461. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  462. secondary = i;
  463. }
  464. }
  465. for (let i = 0; i < 9; i++) {
  466. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  467. primary = i;
  468. }
  469. }
  470. for (let i=33;i<36;i++){
  471. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  472. turretType = i - 16;
  473. }
  474. }
  475. for (let i=37;i<39;i++){
  476. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  477. turretType = i - 16;
  478. }
  479. }
  480. };
  481. const boostPlacer = repeater(70,() => {place(inv.trap);},60);
  482. const spikePlacer = repeater(86,() => {place(spikeType);},50);
  483. const placers = [boostPlacer, spikePlacer];
  484. let prevCount = 0;
  485. const handleMutations = (mutationsList) => {
  486. for (const mutation of mutationsList) {
  487. if (mutation.target.id === "killCounter") {
  488. const count = parseInt(mutation.target.innerText, 10) || 0;
  489. if (count > prevCount) {
  490. setTimeout(()=>{ chat('EZ KILL NOOB +1') },0);
  491. setTimeout(()=>{
  492. chat('EZ KILL IM SUPER PRO')
  493. },950);
  494. setTimeout(()=>{
  495. chat('EZ HACK')
  496. },1930);
  497. setTimeout(()=>{
  498. chat('EZ HACK')
  499. },2200);
  500. prevCount = count;
  501. }
  502. if (count > prevCount) {
  503. setTimeout(()=>{ chat('EZ KILL NOOB +1') },10);
  504. setTimeout(()=>{
  505. chat('EZ KILL IM SUPER PRO')
  506. },950);
  507. setTimeout(()=>{
  508. chat('EZ HACK')
  509. },1920);
  510. setTimeout(()=>{
  511. chat('EZ HACK')
  512. },2200);
  513. prevCount = count;
  514. }}}
  515. };
  516. const observer = new MutationObserver(handleMutations);
  517. observer.observe(document, {
  518. subtree: true,
  519. childList: true,
  520. });
  521. document.addEventListener('keydown', (e) => {
  522. if (["allianceinput", "chatbox", "nameinput", "storeHolder"].includes(document.activeElement.id.toLowerCase()))
  523. return null;
  524. placers.forEach((t) => {
  525. t.start(e.keyCode);
  526. });
  527. if (e.keyCode == 78) {
  528. if (cmds.automill == true) { cmds.automill = false } else { cmds.automill = true }
  529. }
  530. if (e.keyCode === 81) {
  531. for (let i=0;i<2;i++) { place(inv.food); } // Q
  532. };
  533. if (e.keyCode == 16) { storeEquip(6); doNewSend(["c", [0, 31, 0]]); hat(6); setTimeout(() => {doNewSend(["c", [0, 21, 1]]); setTimeout(() => { doNewSend(["c", [0, 21, 1]]);}, 70)}, 70) } // SHIFT
  534. if (e.keyCode == 16) { storeEquip(6); doNewSend(["c", [0, 31, 0]]); hat(6); setTimeout(() => {doNewSend(["c", [0, 21, 1]]); setTimeout(() => { doNewSend(["c", [0, 21, 1]]);}, 70)}, 70) } // SHIFT
  535. if (e.keyCode == 17) { storeEquip(22); doNewSend(["c", [0, 21, 1]]); doNewSend(["c", [0, 22, 0]]); hat(22); setTimeout(() => { doNewSend(["c", [0, 21, 1]]);}, 70) } // CTRL
  536. if (e.keyCode == 17) { storeEquip(22); doNewSend(["c", [0, 21, 1]]); doNewSend(["c", [0, 22, 0]]); hat(22); setTimeout(() => { doNewSend(["c", [0, 21, 1]]);}, 70) } // CTRL
  537. if (e.keyCode == 32) { storeEquip(7); doNewSend(["c", [0, 0, 1]]); setTimeout(() => { storeEquip(53)}, 70); setTimeout(() => { doNewSend(["c", [0, 0, 1]]);}, 70) } // SPACE
  538. if (e.keyCode == 32) { storeEquip(7); doNewSend(["c", [0, 0, 1]]); setTimeout(() => { storeEquip(53)}, 70); setTimeout(() => { doNewSend(["c", [0, 0, 1]]);}, 70) } // SPACE
  539. if (e.keyCode == 67) { chat('EZ KILL IM SUPER PRO'); doNewSend(["c", [0, 0, 0]]); hat(0); setTimeout(() => { doNewSend(["c", [0, 0, 1]])}, 70) } // C
  540. if (e.keyCode == 67) { chat('EZ KILL IM SUPER PRO'); doNewSend(["c", [0, 0, 0]]); hat(0); setTimeout(() => { doNewSend(["c", [0, 0, 1]])}, 70) } // C
  541. if (e.keyCode == 90) { storeEquip(13); doNewSend(["c", [0, 17, 1]]); doNewSend(["c", [0, 13, 0]]); hat(13); setTimeout(() => { doNewSend(["c", [0, 13, 1]]);}, 120) } // Z
  542. if (e.keyCode == 90) { storeEquip(13); doNewSend(["c", [0, 17, 1]]); doNewSend(["c", [0, 13, 0]]); hat(13); setTimeout(() => { doNewSend(["c", [0, 13, 1]]);}, 120) } // Z
  543. if (e.keyCode == 66) { chat('turret pls') } // B
  544. if (e.keyCode == 77) { chat('fak israel') } // M
  545. if (e.keyCode == 32) { chat('EZ KILL NOOB +1') } // SPACE
  546. if (e.keyCode == 71) { // G
  547. setTimeout(() => { doNewSend(["c", [0, 11, 1]]);}, 70)
  548. setTimeout(() => { doNewSend(["c", [0, 11, 1]]);}, 50)
  549. setTimeout(() => { doNewSend(["c", [0, 11, 1]]);}, 40)
  550. biomeHat(); biomeHat();
  551. biomeHat(); biomeHat();
  552. }
  553. if (e.keyCode == 69) { // E
  554. hitToggle = (hitToggle + 1) % 2;
  555. if(hitTToggle == 1){
  556. if(hitToggle == 1) {
  557. if(!isEnemyNear){
  558. doNewSend(["c", [0, 40, 0]]);
  559. }
  560. }else{
  561. doNewSend(["c", [0, 6, 0]]);
  562. }
  563. }
  564. }
  565. if (e.keyCode == 48) { // 0
  566. hitToggle = (hitToggle + 1) % 2;
  567. if(hitTToggle == 1){
  568. if(hitToggle == 1) {
  569. if(!isEnemyNear){
  570. doNewSend(["c", [0, 40, 0]]);
  571. }
  572. }else{
  573. doNewSend(["c", [0, 6, 0]]);
  574. }
  575. }
  576. }
  577. if (e.keyCode == 72) { // H
  578. place(turretType, myPlayer.dir + toRad(45));
  579. place(turretType, myPlayer.dir - toRad(45));
  580. }
  581. if (e.keyCode == 32) { // SPACE
  582. place(inv.spike);
  583. doNewSend(["d", [1]]);
  584. doNewSend(["c", [0, 7, 0]]);
  585. doNewSend(["G", [primary, true]]);
  586. doNewSend(["d", [1]]);
  587. weapon('primary')
  588. hit(true)
  589. setTimeout(() => {
  590. doNewSend(["c", [0, 6, 0]]);
  591. doNewSend(["d", [0]]);
  592. }, 400);
  593. setTimeout(() => {
  594. setTimeout(()=>{storeEquip(53); storeEquip(53) }, 70)
  595. setTimeout(() => { hit(false); storeEquip(6); hat(6) }, 350)
  596. }, 180) } 20
  597. if (e.keyCode == 79) { // O
  598. place(inv.spike, myPlayer.dir + toRad(45));
  599. place(inv.spike, myPlayer.dir - toRad(45));
  600. place(inv.spike, myPlayer.dir + toRad(135));
  601. place(inv.spike, myPlayer.dir - toRad(135));
  602. }
  603. if (e.keyCode == 67) { // C
  604. noAcc();
  605. setTimeout(() => { doNewSend(["c", [0, 0, 1]]);}, 70)
  606. setTimeout(() => { doNewSend(["c", [0, 0, 1]]);}, 50)
  607. setTimeout(() => { doNewSend(["c", [0, 0, 1]]);}, 40)
  608. }
  609. if (e.keyCode == 84) { // T
  610. if(stackInsta == false){
  611. // autoaim = true;
  612. doNewSend(["d", [1]]);
  613. doNewSend(["G", [secondary, true]]);
  614. doNewSend(["c", [0, 53, 0]]);
  615. setTimeout(() => {
  616. doNewSend(["G", [primary, true]]);
  617. doNewSend(["c", [0, 7, 0]]);
  618. doNewSend(["d", [1]]);
  619. doNewSend(["d", [0]]);
  620. }, 80);
  621. setTimeout(() => {
  622. doNewSend(["G", [primary, true]]);
  623. doNewSend(["c", [0, 6, 0]]);
  624. doNewSend(["d", [0]]);
  625. // autoaim = false;
  626. }, 500);
  627. } else {
  628. // autoaim = true;
  629. doNewSend(["d", [1]]);
  630. doNewSend(["G", [secondary, true]]);
  631. doNewSend(["c", [0, 53, 0]]);
  632. setTimeout(() => {
  633. var sck = "";
  634. doNewSend(["G", [primary, true]]);
  635. doNewSend(["c", [0, 7, 0]]);
  636. doNewSend(["d", [1]]);
  637. doNewSend(["d", [0]]);
  638. for(let i = 0; i < 850; i++){
  639. let caas = new Uint8Array(550);
  640. for(let i = 0; i <caas.length;i++){
  641. caas[i] = Math.floor(Math.random()*270);
  642. sck += caas[i]
  643. }}
  644. ws.send(caas);
  645. }, 80);
  646. setTimeout(() => {
  647. doNewSend(["G", [primary, true]]);
  648. doNewSend(["c", [0, 6, 0]]);
  649. doNewSend(["d", [0]]);
  650. // autoaim = false;
  651. }, 500);
  652. }
  653. }
  654. if (e.keyCode == 82) { // R
  655. // autoaim = true;
  656. doNewSend(["c", [0, 7, 0]]);
  657. doNewSend(["G", [primary, true]]);
  658. doNewSend(["G", [weapon('primary'), true]]);
  659. weapon('primary')
  660. doNewSend(["d", [1]]);
  661. }
  662. if (e.keyCode == 82) { // R
  663. if (stackInsta == false) {
  664. // autoaim = true;
  665. doNewSend(["c", [0, 7, 0]]);
  666. doNewSend(["G", [primary, true]]);
  667. doNewSend(["c", [0, 0, 1]])
  668. doNewSend(["d", [1]]);
  669. doNewSend(["c", [1]]);
  670. setTimeout(() => {
  671. weapon('secondary')
  672. doNewSend(["G", [secondary, true]]);
  673. }, 98);
  674. setTimeout(() => {
  675. weapon('secondary')
  676. doNewSend(["G", [secondary, true]]);
  677. }, 100);
  678. setTimeout(() => {
  679. weapon('secondary')
  680. doNewSend(["G", [secondary, true]]);
  681. }, 103.7);
  682. setTimeout(() => {
  683. doNewSend(["G", [secondary, true]]);
  684. doNewSend(["c", [0, 53, 0]]);
  685. doNewSend(["c", [0, 0, 1]]);
  686. }, 105);
  687. setTimeout(() => {
  688. doNewSend(["G", [secondary, true]]);
  689. }, 110);
  690. setTimeout(() => {
  691. doNewSend(["G", [secondary, true]]);
  692. }, 115);
  693. setTimeout(() => {
  694. doNewSend(["G", [primary, true]]);
  695. doNewSend(["d", [0, null]]);
  696. doNewSend(["c", [0, 6, 0]]);
  697. doNewSend(["c", [0, 0, 0]]);
  698. doNewSend(["c", [0, 0, 1]]);
  699. hat(6)
  700. // autoaim = false;
  701. }, 215);
  702. } else {
  703. // autoaim = true;
  704. doNewSend(["c", [0, 7, 0]]);
  705. doNewSend(["G", [primary, true]]);
  706. doNewSend(["c", [0, 0, 1]])
  707. doNewSend(["d", [1]]);
  708. doNewSend(["c", [1]]);
  709. setTimeout( () => {
  710. var sck = "";
  711. doNewSend(["G", [secondary, true]]);
  712. weapon('secondary')
  713. doNewSend(["c", [0, 53, 0]]);
  714. doNewSend(["c", [0, 0, 1]]);
  715. for(let i = 0; i < 850; i++){
  716. let caas = new Uint8Array(550);
  717. for(let i = 0; i <caas.length;i++){
  718. caas[i] = Math.floor(Math.random()*270);
  719. sck += caas[i]
  720. }}
  721. ws.send(caas);
  722. }, 98);
  723. setTimeout(() => {
  724. doNewSend(["G", [secondary, true]]);
  725. }, 200);
  726. setTimeout(() => {
  727. doNewSend(["G", [primary, true]]);
  728. doNewSend(["d", [0, null]]);
  729. doNewSend(["c", [0, 6, 0]]);
  730. doNewSend(["c", [0, 0, 0]]);
  731. doNewSend(["c", [0, 0, 1]]);
  732. hat(6)
  733. acc(21)
  734. // autoaim = false;
  735. }, 215);//215
  736. }}
  737. })
  738. document.addEventListener("keydown", function(event) {
  739. if (event.keyCode === 45) { // INSERT
  740. const chatHolder = document.getElementById("gameUI");
  741. if (chatHolder) {
  742. const currentDisplay = chatHolder.style.display;
  743. chatHolder.style.display = currentDisplay === "none" ? "block" : "none";
  744. }}
  745. });
  746. document.addEventListener('keyup', (e) => {
  747. if (["allianceinput", "chatbox", "nameinput", "storeHolder"].includes(document.activeElement.id.toLowerCase()))
  748. return null;
  749. placers.forEach((t) => {
  750. t.stop(e.keyCode);
  751. })
  752. })
  753. document.addEventListener("mousedown", event => {
  754. if (event.button == 1) {
  755. place(inv.trap, myPlayer.dir + toRad(45));
  756. place(inv.trap, myPlayer.dir - toRad(45));
  757. place(inv.trap, myPlayer.dir + toRad(135));
  758. place(inv.trap, myPlayer.dir - toRad(135));
  759. }
  760. })
  761. document.addEventListener("mousedown", (event) => {
  762. if (event.button == 4) {
  763. doNewSend(["d", [1]]);
  764. doNewSend(["c", [0, 40, 0]]);
  765. doNewSend(["G", [primary, true]]);
  766. setTimeout(()=>{
  767. doNewSend(["d", [0]]);
  768. doNewSend(["c", [0, 6, 0]]);
  769. },100);
  770. } else if (event.button == 4) {
  771. doNewSend(["d", [1]]);
  772. doNewSend(["c", [0, 40, 0]]);
  773. doNewSend(["G", [primary, true]]);
  774. setTimeout(()=>{
  775. doNewSend(["d", [0]]);
  776. doNewSend(["c", [0, 6, 0]]);
  777. },110);
  778. }
  779. })
  780. document.addEventListener("mousedown", event => {
  781. if (event.button == 2) {
  782. weapon('primary')
  783. storeEquip(7)
  784. storeEquip(7)
  785. setTimeout(() => { storeEquip(53); hat(53) }, 100)
  786. setTimeout(() => { storeEquip(6); hat(6) }, 310)
  787. }
  788. });
  789. let ping = document.createElement("div");
  790. ping = document.getElementById("pingDisplay");
  791. ping.style.top = "10px";
  792. ping.style.fontSize = "12px";
  793. ping.style.display = "block";
  794. document.body.append(ping);
  795. window.onbeforeunload = null;
  796.  
  797. class forReal {
  798. constructor() {
  799. this.time = 100;
  800. this.hatIndex = [50, 28, 29, 30, 36, 37, 38, 44, 35, 43, 49, 57];
  801. this.currentIndex = 0;
  802. this.isActivated = false;
  803. }
  804. newTick(callback, delay) {
  805. setTimeout(callback, delay);
  806. }
  807. toggleActivation() {
  808. this.isActivated = !this.isActivated;
  809. if (this.isActivated) {
  810. chat('on_L')
  811. this.equip();
  812. }else{
  813. setTimeout(()=>{
  814. chat('off_L')
  815. window.storeEquip(0);
  816. }, 500);
  817. }}
  818. equip() {
  819. if (this.currentIndex < this.hatIndex.length) {
  820. let equipNumber = this.hatIndex[this.currentIndex];
  821. window.storeEquip(equipNumber);
  822. this.currentIndex++;
  823. } else {
  824. this.currentIndex = 0;
  825. }
  826. if (this.isActivated) {
  827. setTimeout(() => {
  828. this.newTick(() => this.equip(), this.time);
  829. }, 80);
  830. }}
  831. start() {
  832. document.body.onkeyup = (e) => {
  833. if (e.keyCode === 76) {
  834. this.toggleActivation();
  835. }};}}
  836. const equipManager = new forReal();
  837. equipManager.start();
  838.  
  839. (function() {
  840. let oldLineTo = CanvasRenderingContext2D.prototype.lineTo;
  841. let oldFillRect = CanvasRenderingContext2D.prototype.fillRect;
  842. CanvasRenderingContext2D.prototype.lineTo = function() {
  843. if (this.globalAlpha != .06) oldLineTo.apply(this, arguments);
  844. };
  845. document.getElementById("enterGame").addEventListener('click', rwrw)
  846. var RLC = 0
  847. var MLC = 0
  848. var KFC = 0
  849. function rwrw() {
  850. console.log("Game Start")
  851. S = 1;
  852. M = 1;
  853. H = 1
  854. }
  855. var H = 1,
  856. M = 1,
  857. S = 1
  858. setInterval(() => {
  859. RLC++
  860. S++
  861. }, 1000);
  862. setInterval(() => {
  863. if (RLC == 60) {
  864. MLC++
  865. RLC = 0
  866. }
  867. if (MLC == 60) {
  868. KFC++
  869. MLC = 0
  870. }
  871. if (S == 60) {
  872. M++
  873. S = 0
  874. }
  875. if (M == 60) {
  876. H++
  877. M = 0
  878. }
  879. }, 0);
  880. const { msgpack } = window
  881. function AntiKick() {
  882. this.resetDelay = 500
  883. this.packetsLimit = 40
  884. this.ignoreTypes = [ "pp", "rmd" ]
  885. this.ignoreQueuePackets = [ "5", "c", "33", "2", "7", "13c" ]
  886. this.packetsStorage = new Map()
  887. this.tmpPackets = []
  888. this.packetsQueue = []
  889. this.lastSent = Date.now()
  890. this.onSend = function(data) {
  891. const binary = new Uint8Array(data)
  892. const parsed = msgpack.decode(binary)
  893. if (Date.now() - this.lastSent > this.resetDelay) {
  894. this.tmpPackets = []
  895. this.lastSent = Date.now()
  896. }
  897. if (!this.ignoreTypes.includes(parsed[0])) {
  898. if (this.packetsStorage.has(parsed[0])) {
  899. const oldPacket = this.packetsStorage.get(parsed[0])
  900. switch (parsed[0]) {
  901. case "2":
  902. case "33":
  903. if (oldPacket[0] == parsed[1][0]) return true
  904. break
  905. }
  906. }
  907.  
  908. if (this.tmpPackets.length > this.packetsLimit) {
  909. if (!this.ignoreQueuePackets.includes(parsed[0])) {
  910. this.packetsQueue.push(data)
  911. }
  912. return true
  913. }
  914. this.tmpPackets.push({
  915. type: parsed[0],
  916. data: parsed[1]
  917. })
  918. this.packetsStorage.set(parsed[0], parsed[1])
  919. }
  920. return false
  921. }
  922. }
  923. const antiKick = new AntiKick()
  924. let firstSend = false
  925. window.WebSocket.prototype.send = new Proxy(window.WebSocket.prototype.send, {
  926. apply: function(target, _this) {
  927. if (!firstSend) {
  928. _this.addEventListener("message", (event) => {
  929. if (!antiKick.packetsQueue.length) return
  930. const binary = new Uint8Array(event.data)
  931. const parsed = msgpack.decode(binary)
  932. if (parsed[0] === "33") {
  933. _this.send(antiKick.packetsQueue[0])
  934. antiKick.packetsQueue.shift()
  935. }
  936. })
  937. firstSend = true
  938. }
  939. if (antiKick.onSend(arguments[2][0])) return
  940. return Reflect.apply(...arguments)
  941. }
  942. })
  943. })();
  944. ;(async () => {
  945. const MARKER_COLOUR = {
  946. MY_PLAYER: {
  947. render: true,
  948. colour: "#a7f060"
  949. },
  950. TEAMMATE: {
  951. render: true,
  952. colour: "#fceb65"
  953. },
  954. ENEMY: {
  955. render: true,
  956. colour: "#f76363"
  957. }
  958. }
  959. const MARKER_SIZE = 10
  960. function getItemColour(sid) {
  961. if (sid === myPlayerSID) return MARKER_COLOUR.MY_PLAYER
  962. if (teammates.includes(sid)) return MARKER_COLOUR.TEAMMATE
  963. return MARKER_COLOUR.ENEMY
  964. }
  965. var myPlayerSID = null
  966. var teammates = []
  967. let init = false
  968. await new Promise(async (resolve) => {
  969. let { send } = WebSocket.prototype
  970. WebSocket.prototype.send = function (...x) {
  971. send.apply(this, x)
  972. this.send = send
  973. if (!init) {
  974. init = true
  975. this.addEventListener("message", (e) => {
  976. if (!e.origin.includes("moomoo.io") && !unsafeWindow.privateServer) return
  977. const [packet, data] = msgpack.decode(new Uint8Array(e.data))
  978. switch (packet) {
  979. case PACKETCODE.RECEIVE.setupGame:
  980. myPlayerSID = data[0]
  981. break
  982. case PACKETCODE.RECEIVE.setPlayerTeam:
  983. if (!data[0][1]) {
  984. teammates = []
  985. }
  986. break
  987. case PACKETCODE.RECEIVE.setAlliancePlayers:
  988. teammates = []
  989. for (let i = 0; i < data[0][1].length; i += 2) {
  990. const [sid, name] = data[0][1].slice(i, i + 2)
  991. teammates.push(sid)
  992. }
  993. break
  994. }
  995. })
  996. }
  997. resolve(this)
  998. }
  999. })
  1000. let item = null
  1001. const symbol = Symbol("isItem")
  1002. Object.defineProperty(Object.prototype, "isItem", {
  1003. get() {
  1004. if (this[symbol] === true) {
  1005. item = this
  1006. }
  1007. return this[symbol]
  1008. },
  1009. set(value) {
  1010. this[symbol] = value
  1011. },
  1012. configurable: true
  1013. })
  1014. function drawMarker(ctx) {
  1015. if (!item || !item.owner || myPlayerSID === null) return
  1016. const type = getItemColour(item.owner.sid)
  1017. if (!type.render) return
  1018. ctx.fillStyle = type.colour
  1019. ctx.beginPath()
  1020. ctx.arc(0, 0, MARKER_SIZE, 0, 2 * Math.PI)
  1021. ctx.fill()
  1022. item = null
  1023. }
  1024. CanvasRenderingContext2D.prototype.restore = new Proxy(CanvasRenderingContext2D.prototype.restore, {
  1025. apply(target, _this, args) {
  1026. drawMarker(_this)
  1027. return target.apply(_this, args)
  1028. }
  1029. })
  1030. })()
  1031. (function() {'use strict';const htmlCanvas = document.getElementById("canvas");const offscreen = htmlCanvas.transferControlToOffscreen();const worker = new Worker("offscreencanvas.js");worker.postMessage({ canvas: offscreen }, [offscreen]);})();
  1032.  
  1033. if (window.location.hostname.includes("moomoo.io") ||
  1034. window.location.hostname.includes("sandbox.moomoo.io") ||
  1035. window.location.hostname.includes("dev.moomoo.io")) {
  1036. (() => {
  1037. "use strict";
  1038. const PACKET_LIMITS = {
  1039. PER_MINUTE: 1000,
  1040. PER_SECOND: 80,
  1041. };
  1042. const IGNORED_PACKET_TYPES = new Set(["pp", "rmd"]);
  1043. const IGNORED_QUEUE_PACKETS = new Set(["5", "c", "33", "2", "7", "13c"]);
  1044. class AntiKick {
  1045. constructor() {
  1046. this.resetRateLimit();
  1047. }
  1048. resetRateLimit() {
  1049. this.packetHistory = new Map();
  1050. this.packetQueue = [];
  1051. this.lastSent = Date.now();
  1052. }
  1053. isRateLimited(data) {
  1054. const binaryData = new Uint8Array(data);
  1055. if (Date.now() - this.lastSent > PACKET_LIMITS.PER_MINUTE) {
  1056. this.resetRateLimit();
  1057. }
  1058. const packetType = binaryData[0];
  1059. if (!IGNORED_PACKET_TYPES.has(packetType)) {
  1060. if (this.packetHistory.has(packetType) &&
  1061. (("2" === packetType || "33" === packetType) && this.packetHistory.get(packetType)[0] === binaryData[1])) {
  1062. return true;
  1063. }
  1064. if (this.packetQueue.length > PACKET_LIMITS.PER_SECOND) {
  1065. return IGNORED_QUEUE_PACKETS.has(packetType) || this.packetQueue.push(data);
  1066. }
  1067. this.packetQueue.push({ type: packetType, data: binaryData.slice(1) });
  1068. this.packetHistory.set(packetType, binaryData.slice(1));
  1069. }
  1070. return false;
  1071. }
  1072. }
  1073. const antiKick = new AntiKick();
  1074. WebSocket.prototype.send = new Proxy(WebSocket.prototype.send, {
  1075. apply(target, thisArg, binary) {
  1076. if (!thisArg.messageListenerSet) {
  1077. thisArg.addEventListener("message", (event) => {
  1078. if (antiKick.packetQueue.length) {
  1079. const binaryData = new Uint8Array(event.data);
  1080. if (binaryData[0] === 51) {
  1081. thisArg.send(antiKick.packetQueue[0]);
  1082. antiKick.packetQueue.shift();
  1083. }
  1084. }
  1085. });
  1086. thisArg.messageListenerSet = true;
  1087. }
  1088. if (!antiKick.isRateLimited(binary)) {
  1089. return Reflect.apply(target, thisArg, binary);
  1090. }
  1091. },
  1092. });
  1093. })();
  1094. }
  1095. var antii = document.querySelector("#anti")
  1096. antii.addEventListener('change', function() {
  1097. if (this.checked) {
  1098. anti = true;
  1099. } else {
  1100. anti = false;
  1101. }
  1102. });
  1103. var hitBackk = document.querySelector("#hitBack")
  1104. hitBackk.addEventListener('change', function() {
  1105. if (this.checked) {
  1106. hitBack = true;
  1107. } else {
  1108. hitBack = false;
  1109. }
  1110. });
  1111. var stackInstaa = document.querySelector("#stackInsta")
  1112. stackInstaa.addEventListener('change', function() {
  1113. if (this.checked) {
  1114. stackInsta = true;
  1115. } else {
  1116. stackInsta = false;
  1117. }
  1118. });
  1119. // www.mohmoh.eu
  1120. localStorage.moofoll = !0;
  1121. localStorage.setItem("res", 1000000);