Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.23 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Mod|God Juan….
  3. // @namespace -
  4. // @version 1.4
  5. // @description [G] For Spike + BoostPad, [N] For 1 Windmills, [O] For 5 Windmills, [H] For Turrets [F] For BoostPad, [V] For Spike [P] For 4 Walls, [M] for Active/Unactive Auto Hat and [M] For 4 Spikes, [T] for Active/Unactive AutoHeal [Apple/Cookie/Cheese]
  6. // @author HyPer~
  7. // @match *://moomoo.io/*
  8. // @match *://sandbox.moomoo.io/*
  9. // @grant GM_addStyle
  10. // @require https://greasyfork.org/scripts/368273-msgpack/code/msgpack.js?version=598723
  11. // @require http://code.jquery.com/jquery-3.3.1.min.js
  12. // @require https://code.jquery.com/ui/1.12.0/jquery-ui.min.js
  13. // @require https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js
  14. // ==/UserScript==
  15.  
  16. document.getElementById("followText").innerHTML = "Discord: [YTB]Ympax#5854 ! More hack"
  17. document.getElementById("linksContainer2").innerHTML = "By Ympax - eXTaZz, [G] For Spike + BoostPad, [N] For 1 Windmills, [O] For 5 Windmills, [H] For Turrets [F] For BoostPad, [V] For Spike, [P] For 4 Walls, [B] for Active/Unactive Auto Hat and [M] For 4 Spikes, [T] for Active/Unactive AutoHeal";
  18. document.getElementById("twitterFollow").remove();
  19. document.getElementById("youtubeFollow").remove();
  20. document.getElementById("followText").style = "bottom: -0px;"
  21. document.getElementById('errorNotification').remove();
  22. document.getElementById("pingDisplay").remove();
  23. $("#consentBlock").css({display: "none"});
  24. $("#youtuberOf").css({display: "none"});
  25. $("#mapDisplay").css({background: `url('https://i.imgur.com/fgFsQJp.png')`});
  26.  
  27. document.getElementById("moomooio_728x90_home").style.display = "none";
  28. $("#moomooio_728x90_home").parent().css({display: "none"});
  29.  
  30. window.onbeforeunload = null;
  31.  
  32. let mouseX;
  33. let mouseY;
  34.  
  35. let width;
  36. let height;
  37.  
  38. setInterval(() => {
  39. if(clanToggle == 1) {
  40. doNewSend(["9", [null]]);
  41. doNewSend(["8", [animate(false, 5)]])
  42. }
  43. doNewSend(["testing", [6]]);
  44. }, 200);
  45.  
  46. setInterval(() => {
  47. if(messageToggle == 1) {
  48. doNewSend(["ch", [animate(true, 5)]])
  49. }
  50. }, 200);
  51.  
  52. setInterval(() => {
  53. if(autoaim == true) {
  54. doNewSend(["2", [nearestEnemyAngle]]);
  55. }
  56. }, 0);
  57.  
  58. setInterval(() => {
  59. if(hatToggle == 1) {
  60. if(oldHat != normalHat) {
  61. hat(normalHat);
  62. console.log("Tried. - Hat")
  63. }
  64. if(oldAcc != normalAcc) {
  65. acc(normalAcc);
  66. console.log("Tried. - Acc")
  67. }
  68. oldHat = normalHat;
  69. oldAcc = normalAcc
  70. }
  71. }, 25);
  72.  
  73. function normal() {
  74. hat(normalHat);
  75. acc(normalAcc);
  76. }
  77.  
  78. function aim(x, y){
  79. var cvs = document.getElementById("gameCanvas");
  80. cvs.dispatchEvent(new MouseEvent("mousemove", {
  81. clientX: x,
  82. clientY: y
  83.  
  84. }));
  85. }
  86.  
  87. let coreURL = new URL(window.location.href);
  88. window.sessionStorage.force = coreURL.searchParams.get("fc");
  89.  
  90. var nearestEnemy;
  91. var nearestEnemyAngle;
  92. var isEnemyNear;
  93. var instaSpeed = 230;
  94. var primary;
  95. var secondary;
  96. var foodType;
  97. var wallType;
  98. var spikeType;
  99. var millType;
  100. var mineType;
  101. var boostType;
  102. var turretType;
  103. var spawnpadType;
  104. var autoaim = false;
  105. var tick = 1;
  106. var oldHat;
  107. var oldAcc;
  108. var enemiesNear;
  109. var normalHat;
  110. var normalAcc;
  111. var ws;
  112. var msgpack5 = msgpack;
  113. var boostDir;
  114. let myPlayer = {
  115. id: null,
  116. x: null,
  117. y: null,
  118. dir: null,
  119. object: null,
  120. weapon: null,
  121. clan: null,
  122. isLeader: null,
  123. hat: null,
  124. accessory: null,
  125. isSkull: null
  126. };
  127.  
  128. let healSpeed = 70;
  129. var messageToggle = 0;
  130. var clanToggle = 0;
  131. let healToggle = 1;
  132. let hatToggle = 1;
  133.  
  134. document.msgpack = msgpack;
  135. function n(){
  136. this.buffer = new Uint8Array([0]);
  137. this.buffer.__proto__ = new Uint8Array;
  138. this.type = 0;
  139. }
  140.  
  141. WebSocket.prototype.oldSend = WebSocket.prototype.send;
  142. WebSocket.prototype.send = function(m){
  143. if (!ws){
  144. document.ws = this;
  145.  
  146. ws = this;
  147. socketFound(this);
  148. }
  149. this.oldSend(m);
  150. };
  151.  
  152.  
  153. function socketFound(socket){
  154. socket.addEventListener('message', function(message){
  155. handleMessage(message);
  156. });
  157. }
  158.  
  159. function handleMessage(m){
  160. let temp = msgpack5.decode(new Uint8Array(m.data));
  161. let data;
  162. if(temp.length > 1) {
  163. data = [temp[0], ...temp[1]];
  164. if (data[1] instanceof Array){
  165. data = data;
  166. }
  167. } else {
  168. data = temp;
  169. }
  170. let item = data[0];
  171. if(!data) {return};
  172.  
  173. if(item === "io-init") {
  174. let cvs = document.getElementById("gameCanvas");
  175. width = cvs.clientWidth;
  176. height = cvs.clientHeight;
  177. $(window).resize(function() {
  178. width = cvs.clientWidth;
  179. height = cvs.clientHeight;
  180. });
  181. cvs.addEventListener("mousemove", e => {
  182. mouseX = e.clientX;
  183. mouseY = e.clientY;
  184. });
  185. }
  186.  
  187. if (item == "1" && myPlayer.id == null){
  188. myPlayer.id = data[1];
  189. }
  190.  
  191. if (item == "33") {
  192. enemiesNear = [];
  193. for(let i = 0; i < data[1].length / 13; i++) {
  194. let playerInfo = data[1].slice(13*i, 13*i+13);
  195. if(playerInfo[0] == myPlayer.id) {
  196. myPlayer.x = playerInfo[1];
  197. myPlayer.y = playerInfo[2];
  198. myPlayer.dir = playerInfo[3];
  199. myPlayer.object = playerInfo[4];
  200. myPlayer.weapon = playerInfo[5];
  201. myPlayer.clan = playerInfo[7];
  202. myPlayer.isLeader = playerInfo[8];
  203. myPlayer.hat = playerInfo[9];
  204. myPlayer.accessory = playerInfo[10];
  205. myPlayer.isSkull = playerInfo[11];
  206. } else if(playerInfo[7] != myPlayer.clan || playerInfo[7] === null) {
  207. enemiesNear.push(playerInfo);
  208. }
  209. }
  210. }
  211.  
  212. isEnemyNear = false;
  213. if(enemiesNear) {
  214. nearestEnemy = enemiesNear.sort((a,b) => dist(a, myPlayer) - dist(b, myPlayer))[0];
  215. }
  216.  
  217. if(nearestEnemy) {
  218. nearestEnemyAngle = Math.atan2(nearestEnemy[2]-myPlayer.y, nearestEnemy[1]-myPlayer.x);
  219. if(Math.sqrt(Math.pow((myPlayer.y-nearestEnemy[2]), 2) + Math.pow((myPlayer.x-nearestEnemy[1]), 2)) < 300) {
  220. isEnemyNear = true;
  221. if(autoaim == false && myPlayer.hat != 7 && myPlayer.hat != 53) {
  222. normalHat = 6;
  223. if(primary != 8) {
  224. normalAcc = 19
  225. }
  226. };
  227. }
  228. }
  229. if(isEnemyNear == false && autoaim == false) {
  230. normalAcc = 11;
  231. if (myPlayer.y < 2400){
  232. normalHat = 15;
  233. } else if (myPlayer.y > 6850 && myPlayer.y < 7550){
  234. normalHat = 31;
  235. } else {
  236. normalHat = 12;
  237. }
  238. }
  239. if (!nearestEnemy) {
  240. nearestEnemyAngle = myPlayer.dir;
  241. }
  242. if(item == "h" && data[1] == myPlayer.id) {
  243. if(data[2] < 100 && data[2] > 0 && healToggle == 1) {
  244. setTimeout( () => {
  245. place(foodType, null);
  246. }, healSpeed);
  247.  
  248. }
  249. }
  250. update();
  251. }
  252.  
  253.  
  254. function doNewSend(sender){
  255. ws.send(new Uint8Array(Array.from(msgpack5.encode(sender))));
  256. }
  257.  
  258. function acc(id) {
  259. doNewSend(["13c", [0, 0, 1]]);
  260. doNewSend(["13c", [0, id, 1]]);
  261. }
  262.  
  263. function hat(id) {
  264. doNewSend(["13c", [0, id, 0]]);
  265. }
  266.  
  267.  
  268. function place(id, angle = Math.atan2(mouseY - height / 2, mouseX - width / 2)) {
  269. doNewSend(["5", [id, null]]);
  270. doNewSend(["c", [1, angle]]);
  271. doNewSend(["c", [0, angle]]);
  272. doNewSend(["5", [myPlayer.weapon, true]]);
  273. }
  274.  
  275. function boostSpike() {
  276. if(boostDir == null) {
  277. boostDir = nearestEnemyAngle;
  278. }
  279. place(spikeType, boostDir + toRad(90));
  280. place(spikeType, boostDir - toRad(90));
  281. place(boostType, boostDir);
  282. doNewSend(["33", [boostDir]]);
  283. }
  284.  
  285.  
  286. var repeater = function(key, action, interval) {
  287. let _isKeyDown = false;
  288. let _intervalId = undefined;
  289.  
  290. return {
  291. start(keycode) {
  292. if(keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') {
  293. _isKeyDown = true;
  294. if(_intervalId === undefined) {
  295. _intervalId = setInterval(() => {
  296. action();
  297. if(!_isKeyDown){
  298. clearInterval(_intervalId);
  299. _intervalId = undefined;
  300. console.log("claered");
  301. }
  302. }, interval);
  303. }
  304. }
  305. },
  306.  
  307. stop(keycode) {
  308. if(keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') {
  309. _isKeyDown = false;
  310. }
  311. }
  312. };
  313.  
  314.  
  315. }
  316.  
  317. const healer = repeater(81, () => {place(foodType)}, 0);
  318. const boostPlacer = repeater(70, () => {place(boostType)}, 0);
  319. const spikePlacer = repeater(86, () => {place(spikeType)}, 0);
  320. const millPlacer = repeater(78, () => {place(millType)}, 0);
  321. const turretPlacer = repeater(72, () => {place(turretType)}, 0);
  322. const boostSpiker = repeater(71, boostSpike, 0);
  323.  
  324. document.addEventListener('keydown', (e)=>{
  325. spikePlacer.start(e.keyCode);
  326. healer.start(e.keyCode);
  327. boostPlacer.start(e.keyCode);
  328. boostSpiker.start(e.keyCode);
  329. millPlacer.start(e.keyCode);
  330. turretPlacer.start(e.keyCode);
  331.  
  332. if (e.keyCode == 79 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  333. for (let i=0;i<5;i++){
  334. let angle = myPlayer.dir + toRad(i * 72);
  335. place(millType, angle)
  336. }
  337. }
  338. if (e.keyCode == 80 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  339. for (let i=0;i<4;i++){
  340. let angle = myPlayer.dir + toRad(i * 90);
  341. place(wallType, angle)
  342. }
  343. }
  344. if (e.keyCode == 73 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  345. for (let i=0;i<4;i++){
  346. let angle = myPlayer.dir + toRad(i * 90);
  347. place(boostType, angle)
  348. }
  349. }
  350. if (e.keyCode == 186 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  351. for (let i=0;i<4;i++){
  352. let angle = myPlayer.dir + toRad(i * 90);
  353. place(spikeType, angle)
  354. }
  355. }
  356. if (e.keyCode == 72 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  357. place(turretType, myPlayer.dir + toRad(45));
  358. place(turretType, myPlayer.dir - toRad(45));
  359. }
  360.  
  361. if (e.keyCode == 77 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  362. if (myPlayer.y < 2400){
  363. hat(15);
  364. } else if (myPlayer.y > 6850 && myPlayer.y < 7550){
  365. hat(31);
  366. } else {
  367. hat(12);
  368. }
  369. acc(11);
  370. }
  371.  
  372. if(e.keyCode == 82 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  373. autoaim = true;
  374. doNewSend(["5", [primary, true]]);
  375. doNewSend(["13c", [0, 7, 0]]);
  376. doNewSend(["13c", [0, 0, 1]]);
  377. doNewSend(["13c", [0, 19, 1]]);
  378. doNewSend(["c", [1]]);
  379. setTimeout( () => {
  380. doNewSend(["13c", [0, 53, 0]]);
  381. doNewSend(["5", [secondary, true]]);
  382. }, instaSpeed - 130);
  383.  
  384. setTimeout( () => {
  385. doNewSend(["5", [primary, true]]);
  386. doNewSend(["c", [0, null]]);
  387. doNewSend(["13c", [0, 6, 0]]);
  388. autoaim = false;
  389. }, instaSpeed);
  390. }
  391.  
  392.  
  393. if(e.keyCode == 38 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  394. messageToggle = (messageToggle + 1) % 2;
  395. }
  396.  
  397. if(e.keyCode == 40 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  398. clanToggle = (clanToggle + 1) % 2;
  399. }
  400.  
  401. if(e.keyCode == 84 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  402. healToggle = (healToggle + 1) % 2;
  403. if(healToggle == 0) {
  404. if(hatToggle == 0) {
  405. document.title = "Heal: OFF | Hat: OFF"
  406. } else {
  407. document.title = "Heal: OFF | Hat: ON"
  408. }
  409. } else {
  410. if(hatToggle == 0) {
  411. document.title = "Heal: ON | Hat: OFF"
  412. } else {
  413. document.title = "Heal: ON | Hat: ON"
  414. }
  415. }
  416. }
  417. if(e.keyCode == 76 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  418. autoaim = true;
  419. doNewSend(["5", [secondary, true]]);
  420. doNewSend(["13c", [0, 53, 0]]);
  421. doNewSend(["c", [1]]);
  422.  
  423. setTimeout( () => {
  424. doNewSend(["6", [12]]);
  425. }, 300);
  426.  
  427. setTimeout( () => {
  428. doNewSend(["6", [15]]);
  429. }, 300);
  430.  
  431. setTimeout( () => {
  432. doNewSend(["c", [0]]);
  433. doNewSend(["13c", [0, 6, 0]]);
  434. doNewSend(["5", [primary, true]]);
  435. autoaim = false;
  436. }, 300);
  437. }
  438.  
  439. if(e.keyCode == 97 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  440. doNewSend(["6", [4]]);
  441. }
  442.  
  443. if(e.keyCode == 98 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  444. doNewSend(["6", [15]]);
  445. }
  446. if(e.keyCode == 99 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  447. doNewSend(["6", [28]]);
  448. }
  449. if(e.keyCode == 105 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  450. doNewSend(["6", [28]]);
  451. doNewSend(["6", [25]]);
  452. }
  453. if(e.keyCode == 66 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  454. hatToggle = (hatToggle + 1) % 2;
  455. if(healToggle == 0) {
  456. if(hatToggle == 0) {
  457. document.title = "Heal: OFF | Hat: OFF"
  458. } else {
  459. document.title = "Heal: OFF | Hat: ON"
  460. }
  461. } else {
  462. if(hatToggle == 0) {
  463. document.title = "Heal: ON | Hat: OFF"
  464. } else {
  465. document.title = "Heal: ON | Hat: ON"
  466. }
  467. }
  468. }
  469. })
  470.  
  471. document.addEventListener('keyup', (e)=>{
  472. spikePlacer.stop(e.keyCode);
  473. boostPlacer.stop(e.keyCode);
  474. boostSpiker.stop(e.keyCode);
  475. millPlacer.stop(e.keyCode);
  476. turretPlacer.stop(e.keyCode);
  477. healer.stop(e.keyCode);
  478. if(e.keyCode == 71 && document.activeElement.id.toLowerCase() !== 'chatbox') {
  479. setTimeout( () => {
  480. doNewSend(["33", [null]]);
  481. boostDir = null;
  482. }, 10);
  483. }
  484. })
  485.  
  486.  
  487. function isElementVisible(e) {
  488. return (e.offsetParent !== null);
  489. }
  490.  
  491.  
  492. function toRad(angle) {
  493. return angle * 0.01745329251;
  494. }
  495.  
  496. function dist(a, b){
  497. return Math.sqrt( Math.pow((b.y-a[2]), 2) + Math.pow((b.x-a[1]), 2) );
  498. }
  499.  
  500.  
  501. document.title = "Heal: ON | Hat: ON"
  502.  
  503. function update() {
  504. for (let i=0;i<9;i++){
  505. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  506. primary = i;
  507. }
  508. }
  509.  
  510. for (let i=9;i<16;i++){
  511. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  512. secondary = i;
  513. }
  514. }
  515.  
  516. for (let i=16;i<19;i++){
  517. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  518. foodType = i - 16;
  519. }
  520. }
  521.  
  522. for (let i=19;i<22;i++){
  523. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  524. wallType = i - 16;
  525. }
  526. }
  527.  
  528. for (let i=22;i<26;i++){
  529. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  530. spikeType = i - 16;
  531. }
  532. }
  533.  
  534. for (let i=26;i<29;i++){
  535. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  536. millType = i - 16;
  537. }
  538. }
  539.  
  540. for (let i=29;i<31;i++){
  541. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  542. mineType = i - 16;
  543. }
  544. }
  545.  
  546. for (let i=31;i<33;i++){
  547. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))){
  548. boostType = i - 16;
  549. }
  550. }
  551.  
  552. for (let i=33;i<39;i++){
  553. if (isElementVisible(document.getElementById("actionBarItem" + i.toString())) && i != 36){
  554. turretType = i - 16;
  555. }
  556. }
  557.  
  558. spawnpadType = 36;
  559. }
  560. 1111
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement