Advertisement
Guest User

Con Cac Mode

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