Revolver mod by EZ HACK

Revolver mod good mod

  1. // ==UserScript==
  2. // @name Revolver mod by EZ HACK
  3. // @namespace none
  4. // @version v2
  5. // @description Revolver mod good mod
  6. // @author EZ HACK
  7. // @license MIT
  8. // @icon https://cdn.discordapp.com/attachments/942291806740160552/1187992941306855544/Untitled_design_23.png?ex=6598e7a5&is=658672a5&hm=3b02984cc121d8feced3ba084129cbb21f3b3be25bd8d7c9964f4f176eeeecba&
  9. // @match *://moomoo.io/*
  10. // @match *://sandbox.moomoo.io/*
  11. // @match *://dev.moomoo.io/*
  12. // @require https://gf.qytechs.cn/scripts/368273-msgpack/code/msgpack.js?version=598723
  13. // @require http://code.jquery.com/jquery-3.3.1.min.js
  14. // @require https://cdn.jsdelivr.net/npm/msgpack-lite@0.1.26/dist/msgpack.min.js
  15. // @require https://cdn.jsdelivr.net/npm/fontfaceobserver@2.1.0/fontfaceobserver.standalone.min.js
  16. // @grant none
  17. // ==/UserScript==
  18. /* KEYBINDS
  19. n - auto triple mills
  20. v - spikes
  21. f - traps
  22. h - double teleporters/turrets
  23. m - music menu
  24. space - perfect spiketick
  25. rightclick - autobreaker
  26. r - normal insta
  27. t - reverse insta
  28. , - boost tick
  29. y - 1 tick
  30. b - bulltick
  31. */
  32. const PASSWORD = "Revolver modv2";
  33. let password = prompt("Enter Your Password!");
  34. while (password !== PASSWORD) {
  35. alert("LOL");
  36. password = prompt("Enter Password");
  37. }
  38. document.getElementById('enterGame').innerText = "⇏ ‍ ‍ Enter_Game. ‍ ‍ ‍⇍";
  39. document.getElementById("enterGame").addEventListener("mouseenter", function() {
  40. document.getElementById('enterGame').innerText = "⇏ Enter_Game. ‍⇍";
  41. });
  42. document.getElementById("enterGame").addEventListener("mouseleave", function() {
  43. document.getElementById('enterGame').innerText = "⇏ ‍ ‍ Enter_Game. ‍ ‍ ‍⇍";
  44. });
  45. $('#itemInfoHolder').css({
  46. 'text-align': 'center',
  47. 'top': '25px',
  48. 'left': '440px',
  49. 'right': '350px',
  50. 'max-width': '350px'
  51. });
  52. document.getElementById('chatBox').innerHTML = 'Hi-____-';
  53. document.getElementById('gameName').innerHTML = '';
  54. setTimeout(() => {
  55. document.getElementById('gameName').innerHTML = 'Loading_Game';
  56. setTimeout(() => {
  57. document.getElementById('gameName').innerHTML = 'R';
  58. setTimeout(() => {
  59. document.getElementById('gameName').innerHTML = 'Re';
  60. setTimeout(() => {
  61. document.getElementById('gameName').innerHTML = 'Rev';
  62. setTimeout(() => {
  63. document.getElementById('gameName').innerHTML = 'Revo';
  64. setTimeout(() => {
  65. document.getElementById('gameName').innerHTML = 'Revol';
  66. setTimeout(() => {
  67. document.getElementById('gameName').innerHTML = 'Revolv';
  68. setTimeout(() => {
  69. document.getElementById('gameName').innerHTML = 'Revolve';
  70. setTimeout(() => {
  71. document.getElementById('gameName').innerHTML = 'Revolver';
  72. setTimeout(() => {
  73. document.getElementById('gameName').innerHTML = 'Revolver modv2';
  74. }, 120);
  75. }, 120);
  76. }, 120);
  77. }, 120);
  78. }, 120);
  79. }, 120);
  80. }, 120);
  81. }, 120);
  82. }, 120);
  83. }, 120);
  84. document.getElementById('loadingText').innerHTML = 'Loading...';
  85. setTimeout(() => {
  86. document.getElementById('loadingText').innerHTML = 'lOADING GAME';
  87. }, 710);
  88. (function () {
  89. 'use strict';
  90. });
  91. setInterval(() => window.follmoo && follmoo(), 10);
  92.  
  93. if(location.hostname == "sandbox.moomoo.io") {
  94. document.getElementById("foodDisplay").style.display = "none";
  95. document.getElementById("woodDisplay").style.display = "none";
  96. document.getElementById("stoneDisplay").style.display = "none";
  97. }
  98.  
  99. document.getElementById("enterGame").addEventListener("click", autohide);
  100. function autohide() {
  101. $("#ot-sdk-btn-floating").hide();
  102. }
  103. document.getElementById("linksContainer2").innerHTML = " ";
  104. let changes = `<div id="subConfirmationElement"><a href="https://discord.gg/BVx8EWfBny">Join Discord!</a></div>`;
  105. $('#linksContainer2').prepend(changes);
  106. $('#subConfirmationElement').click( () => {
  107. try { window.follmoo(); } catch(e){};
  108. localStorage["moofoll"] = "1"; localStorage["moofol"] = "1";
  109. });
  110. document.querySelector("#joinPartyButton").remove();
  111. document.querySelector("#pre-content-container").remove(); //ANTI AD
  112. document.getElementById("gameName").innerHTML = "Revolver modv2";
  113. let changes2 = `<div id="customMenuName"><h3 style="font-size: 50px;" class = "indent">By EZ HACK</a></div>`;
  114. $('#gameName').prepend(changes2);
  115. $("#gameName").css({
  116. color: "#FFFFFF",
  117. "text-shadow": "0 1px 0 #181818, 0 2px 0 #181818, 0 3px 0 #181818, 0 4px 0 #181818, 0 5px 0 #181818, 0 6px 0 #181818, 0 7px 0 #181818, 0 8px 0 #181818, 0 9px 0 #181818, rgba(0, 0, 0, 0.4) 1px 1px 40px",
  118. "text-align": "center",
  119. "font-size": "156px",
  120. "margin-bottom": "-30px",
  121. });
  122. document.getElementById("loadingText").innerHTML = `<div id="MRLAGPRO" class="loader">`
  123. //document.getElementById("loadingText").innerHTML = "Revolver Loading";
  124. document.getElementById("diedText").innerHTML = "Revolver Died -_-";
  125. document.getElementById("diedText").style.color = "#FFFFFF";
  126. document.title = " Revolver modv2";
  127. document.getElementById("leaderboard").append("Revolver modv2");
  128. $("#mapDisplay").css("background", "url('https://wormax.org/chrome3kafa/moomooio-background.png')");
  129. document.getElementById("storeHolder").style = "height: 1150px; width: 400px;";
  130. document.getElementById('promoImgHolder').innerHTML =
  131. `
  132. <style>
  133. p { font-size: 20px;}#noticationDisplay {
  134. vertical-align: top;
  135. position: absolute;
  136. right: 85%;
  137. top: 10%;
  138. text-align: right;
  139. } .menuButton { transition: 0.5s; border-radius: 0px;
  140. } .menuButton:hover { transform: scale(1.11); box-shadow: 0 0 20px #db6c1d;
  141. } #linksContainer2 { background: #ccc; border-top: 5px solid; border-image: linear-gradient(to right,#db6c1d,##db6c1d) 1 1 0 0; height: 18px; top: 0%; color: #db6c1d; transition: 0.3s;
  142. } #linksContainer2:hover { background: #ccc; box-shadow: 0 0 20px #db6c1d;
  143. } #top-wrap-right { color: #db6c1d;
  144. } .check-box {transform: scale(1.1);
  145. } .inParty {display: none;
  146. } input[type="checkbox"] { position: relative; appearance: none; width: 33px; height: 15.5px; border-radius: 50px; box-shadow: inset 0 0 5px rgba(41, 41, 41, 0.2); cursor: pointer; top: 7.5px; transition: 0.4s;
  147. } input:checked[type="checkbox"] { background: #db6c1d;
  148. } input[type="checkbox"]::after { position: absolute; content: ""; width: 15.5px; height: 15.5px; top: 0; left: 0; background: #fff; border-radius: 50%; box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); transform: scale(1.1); transition: 0.4s;
  149. } input:checked[type="checkbox"]::after { left: 50%;
  150. } .menuCard { background-color: #181818; border-top: 5px solid; border-image: linear-gradient(to right,#db6c1d,#303030) 1 0 0 0; color: #db6c1d margin-top:0px; border-radius: 0px; border-bottom: 0px solid red; transition: all 1s; transform: scale(1); box-shadow: 0px 0px #db6c1d; transform: translateX(0px);
  151. } .menuCard:hover { transform: scale(1.05); box-shadow: 0 0 20px #db6c1d;
  152. } .menuCard.active { transform: translateX(0px);
  153. } #adCard { display: none;
  154. } #promoImgHolder { overflow-y: scroll; -ms-overflow-style: none; scrollbar-width: none; height: 90px; max-height: 90px; }
  155. </style>
  156. </head>
  157. <div>
  158. <i class="fa-solid fa-rectangle-list"style="font-size: 25px";></i><p>Update V2</p> <div style="font-size: 15px">
  159. - added boost tick<br>
  160. - added normal insta<br>
  161. - added sync detect test<br>
  162. - added sync heal q hold-beta)<br>
  163. - added a lot of visuals<br>
  164. - major bug fixes<br>
  165. - optimised heal<br>
  166. - removed autobreaker secondary<br>
  167. - added biome hat<br>
  168. - fixed heal bugs <br>
  169. - made logo <br>
  170. - changed autobreaker to tankclick<br>
  171. - added menu! <br>
  172. - added stack insta<br>
  173. - added autoaim<br>
  174. - optimised heals<br>
  175. - added bullspam detect<br>
  176. - added accesories <br>
  177. <i class="fa-solid fa-rectangle-list"style="font-size: 25px";></i><p>Update V1</p> <div style="font-size: 15px">
  178. - Created Chimken mod, devlopment beings<br>
  179. - Added basic macros & auto triple mills<br>
  180. - Fixed buggy placement function<br>
  181. - Added mousebutton hats<br>
  182. - Added perfect spiketick<br>
  183. - Added bullspammer<br>
  184. - added autobreaker<br>
  185. - added heal based hitback<br>
  186. - added anti instas<br>
  187. - added reverse insta<br>
  188. - removed bullspammer<br>
  189. - added music menu<br>
  190.  
  191.  
  192. </div><div style="font-size: 15px">
  193. </div><br>
  194. `
  195. $("#itemInfoHolder").css({ top: "0px", left: "15px" });
  196. $("#youtuberOf").remove();
  197. $("#adCard").remove();
  198. $("#mobileInstructions").remove();
  199. $("#downloadButtonContainer").remove();
  200. $("#mobileDownloadButtonContainer").remove();
  201. $(".downloadBadge").remove();
  202.  
  203. const shadowStyle = "box-shadow: 0 0 10px 10px rgba(0, 0, 0, 0.4)";
  204.  
  205. const setupCardDiv = document.getElementById("setupCard");
  206. if (setupCardDiv) {
  207. setupCardDiv.style.cssText += shadowStyle;
  208. }
  209.  
  210. const serverBrowserSelect = document.getElementById("serverBrowser");
  211. if (serverBrowserSelect) {
  212. serverBrowserSelect.style.color = "#FFFFFF";
  213. serverBrowserSelect.style.backgroundColor = "#e5e3e4";
  214. }
  215.  
  216. const enterGameButton = document.getElementById("enterGame");
  217. if (enterGameButton) {
  218. enterGameButton.style.backgroundColor = "#272a2e";
  219. }
  220.  
  221. const style = document.createElement("style");
  222. style.innerHTML = `
  223. .menuLink {
  224. font-size: 20px;
  225. color: #db6c1d;
  226. }
  227. a {
  228. color: #db6c1d;
  229. text-decoration: none;
  230. }
  231. `;
  232. document.head.appendChild(style);
  233.  
  234. const nameInputElement = document.getElementById("nameInput");
  235. if (nameInputElement) {
  236. nameInputElement.style.color = "#FFFFFF";
  237. }
  238.  
  239. const guideCardDiv = document.getElementById("guideCard");
  240. if (guideCardDiv) {
  241. guideCardDiv.style.cssText += shadowStyle;
  242. setupCardDiv.style.backgroundColor = "#181818";
  243. guideCardDiv.style.backgroundColor = "#181818";
  244. }
  245.  
  246. (function () {
  247. if (document.querySelector("#customAudioPlayer")) return;
  248. var audioFiles = [
  249. {
  250. url: "https://cdn.discordapp.com/attachments/1062441866416619653/1069324203297362040/Barren_Gates_-_Obey_NCS_Release.mp3",
  251. title: "Obey NCS",
  252. },
  253. {
  254. url: "https://cdn.discordapp.com/attachments/1062441866416619653/1069323837608570941/Clarx_-_Zig_Zag_NCS_Release.mp3",
  255. title: "Zig Zag NCS",
  256. },
  257. {
  258. url: "https://cdn.discordapp.com/attachments/1062441866416619653/1069300879708135524/Anixto_-_Ride_Or_Die_NCS_Release.mp3",
  259. title: "Ride Or Die NCS",
  260. },
  261. {
  262. url: "https://cdn.discordapp.com/attachments/1062441866416619653/1069324799903531128/MP3DL.CC_Rival_-_Throne_-_ft._Neoni_NCS_Release-256k.mp3",
  263. title: "Throne NCS",
  264. },
  265. {
  266. url: "https://cdn.discordapp.com/attachments/905994516719345664/918544988965568562/Dirty_Palm_-_Ropes_feat._Chandler_Jewels_NCS10_Release.mp3",
  267. title: "Ropes NCS",
  268. },
  269. {
  270. url: "https://cdn.discordapp.com/attachments/905994516719345664/918546211584213023/Jonth_Tom_Wilson_Facading_MAGNUS_Jagsy_Vosai_RudeLies__Domastic_-_Heartless_NCS10_Release.mp3",
  271. title: "Heartless NCS",
  272. },
  273. {
  274. url: "https://cdn.discordapp.com/attachments/905873563490328626/920005714481672212/Anikdote_-_Turn_It_Up_NCS_Release.mp3",
  275. title: "Turn It Up NCS",
  276. },
  277. {
  278. url: "https://cdn.discordapp.com/attachments/905873563490328626/920006439999778856/Unknown_Brain_-_MATAFAKA_feat._Marvin_Divine_NCS_Release.mp3",
  279. title: "MATAFKA NCS",
  280. },
  281. {
  282. url: "https://cdn.discordapp.com/attachments/905994516719345664/918910823290769458/koven_never_have_i_felt_this_ncs_release_gqEQ_nIByoK-gucZcxBO.mp3",
  283. title: "Never Have I Felt This NCS",
  284. },
  285. {
  286. url: "https://cdn.discordapp.com/attachments/905994516719345664/925144953611505714/Rebel_Scum__Dani_King__Centrix_-_Calm_Before_The_Storm_NCS_Release.mp3",
  287. title: "Calm Before The Storm NCS",
  288. },
  289. ];
  290. var currentIndex = 0;
  291. var audio = new Audio(audioFiles[currentIndex].url);
  292. audio.preload = "auto";
  293. audio.volume = 0.1;
  294. var repeat = false;
  295. var shuffled = false;
  296. function playNext() {
  297. if (shuffled) {
  298. currentIndex = Math.floor(Math.random() * audioFiles.length);
  299. } else if (!repeat) {
  300. currentIndex = (currentIndex + 1) % audioFiles.length;
  301. }
  302. audio.src = audioFiles[currentIndex].url;
  303. audio.play();
  304. label.textContent = audioFiles[currentIndex].title;
  305. playButton.textContent = "Pause";
  306. playButton.style.background = "red";
  307. var trackButtons = document.querySelectorAll(".track-button");
  308. trackButtons.forEach(function (trackButton, index) {
  309. if (index === currentIndex) {
  310. trackButton.classList.add("active");
  311. } else {
  312. trackButton.classList.remove("active");
  313. }
  314. });
  315. }
  316. function formatDuration(duration) {
  317. var minutes = Math.floor(duration / 60);
  318. var seconds = Math.floor(duration % 60);
  319. return minutes + ":" + (seconds < 10 ? "0" : "") + seconds;
  320. }
  321. audio.addEventListener("ended", playNext);
  322. audio.addEventListener("timeupdate", function () {
  323. durationDisplay.textContent =
  324. formatDuration(audio.currentTime) + "/" + formatDuration(audio.duration);
  325. });
  326. var player = document.createElement("div");
  327. player.id = "customAudioPlayer";
  328. player.style =
  329. "position:fixed;top:10px;left:10px;z-index:10001;background:#282828;border:1px solid black;padding:20px;border-radius:10px;width:300px;color:#fff;box-shadow:0px 0px 20px 5px rgba(0,0,0,0.75);display:none;flex-direction:column;align-items:center;";
  330. var profilePicture = document.createElement("img");
  331. profilePicture.src =
  332. "https://yt3.ggpht.com/jI1t37BCsCD_jMVBEqQPUghbRmz3KMny540V-r5iYAHaJeGolUYdUE8o1QCok7HMxEzZHZGS9Q=s600-c-k-c0x00ffffff-no-rj-rp-mo";
  333. profilePicture.style =
  334. "width:60px;height:60px;border-radius:50%;cursor:pointer;";
  335. profilePicture.onclick = function () {
  336. window.location.href =
  337. "https://www.youtube.com/channel/UCub84Dy0SSA0NgCqeUdjpsA";
  338. };
  339. player.appendChild(profilePicture);
  340. var label = document.createElement("div");
  341. label.textContent = audioFiles[currentIndex].title;
  342. label.style = "margin-top:10px;text-align:center;";
  343. player.appendChild(label);
  344. var playButton = document.createElement("button");
  345. playButton.textContent = "Play";
  346. playButton.style =
  347. "margin-top:10px;width:100%;padding:10px;border:none;border-radius:5px;background-color:green;color:white;cursor:pointer;";
  348. playButton.onclick = function () {
  349. if (audio.paused) {
  350. audio.play();
  351. this.textContent = "Pause";
  352. this.style.background = "red";
  353. } else {
  354. audio.pause();
  355. this.textContent = "Play";
  356. this.style.background = "green";
  357. }
  358. };
  359. player.appendChild(playButton);
  360. var nextButton = document.createElement("button");
  361. nextButton.textContent = "Next";
  362. nextButton.style =
  363. "margin-top:10px;width:100%;padding:10px;border:none;border-radius:5px;background-color:white;color:black;cursor:pointer;";
  364. nextButton.onclick = playNext;
  365. player.appendChild(nextButton);
  366. var shuffleRepeatContainer = document.createElement("div");
  367. shuffleRepeatContainer.style =
  368. "display:flex;justify-content:space-between;width:100%;margin-top:10px;";
  369. player.appendChild(shuffleRepeatContainer);
  370. var shuffleButton = document.createElement("button");
  371. shuffleButton.textContent = "Shuffle: Off";
  372. shuffleButton.style =
  373. "padding:10px;border:none;border-radius:5px;background-color:black;color:white;cursor:pointer;width:48%;";
  374. shuffleButton.onclick = function () {
  375. shuffled = !shuffled;
  376. this.textContent = shuffled ? "Shuffle: On" : "Shuffle: Off";
  377. };
  378. shuffleRepeatContainer.appendChild(shuffleButton);
  379. var repeatButton = document.createElement("button");
  380. repeatButton.textContent = "Repeat: Off";
  381. repeatButton.style =
  382. "padding:10px;border:none;border-radius:5px;background-color:black;color:white;cursor:pointer;width:48%;";
  383. repeatButton.onclick = function () {
  384. repeat = !repeat;
  385. this.textContent = repeat ? "Repeat: On" : "Repeat: Off";
  386. };
  387. shuffleRepeatContainer.appendChild(repeatButton);
  388. var durationDisplay = document.createElement("div");
  389. durationDisplay.style = "margin-top:10px;text-align:center;";
  390. player.appendChild(durationDisplay);
  391. var trackList = document.createElement("div");
  392. trackList.style =
  393. "overflow:auto;max-height:150px;margin-top:20px;border:1px solid #fff;border-radius:10px;padding:5px;";
  394. audioFiles.forEach(function (track, index) {
  395. var trackButton = document.createElement("button");
  396. trackButton.textContent = track.title;
  397. trackButton.classList.add("track-button");
  398. trackButton.style =
  399. "padding:5px;border:none;border-radius:5px;background-color:black;color:white;cursor:pointer;width:100%;text-align:left;margin-top:5px;";
  400. trackButton.onclick = function () {
  401. currentIndex = index;
  402. audio.src = track.url;
  403. audio.play();
  404. label.textContent = track.title;
  405. playButton.textContent = "Pause";
  406. playButton.style.background = "red";
  407. trackButtons.forEach(function (trackButton, i) {
  408. if (i === currentIndex) {
  409. trackButton.classList.add("active");
  410. } else {
  411. trackButton.classList.remove("active");
  412. }
  413. });
  414. };
  415. trackList.appendChild(trackButton);
  416. });
  417. player.appendChild(trackList);
  418. var activeButtonStyle = document.createElement("style");
  419. activeButtonStyle.innerHTML = ".track-button.active{background-color:green;}";
  420. document.head.appendChild(activeButtonStyle);
  421. var madeByLabel = document.createElement("div");
  422. madeByLabel.textContent = "Made by Zod324myers";
  423. madeByLabel.style = "margin-top:auto;text-align:center;";
  424. player.appendChild(madeByLabel);
  425. document.body.appendChild(player);
  426. document.addEventListener("keydown", function (e) {
  427. if (e.key === "m" && document.activeElement.id.toLowerCase() !== "chatbox") {
  428. player.style.display = player.style.display === "none" ? "flex" : "none";
  429. }
  430. });
  431. })();
  432.  
  433. let lastPing = -1;
  434. let cvs = document.getElementById("gameCanvas"),
  435. ctx = cvs.getContext("2d");
  436. let Ie = document.getElementById("pingDisplay");
  437. Ie.replaceWith(document.createElement("div"));
  438. Ie.style.fontSize = "20px";
  439. Ie.style.fontFamily = "Calibri";
  440. Ie.style.display = "block";
  441. Ie.style.zIndex = "1";
  442. document.body.appendChild(Ie);
  443. setInterval(() => {
  444. Ie.style.display = "block";
  445. Ie.innerText = `${window.pingTime} ping | ${fps} fps`;
  446. }, 0);
  447. const times = [];
  448. let fps;
  449.  
  450. function refreshLoop() {
  451. window.requestAnimationFrame(() => {
  452. const now = performance.now();
  453. while (times.length > 0 && times[0] <= now - 1000) {
  454. times.shift();
  455. }
  456. times.push(now);
  457. fps = times.length;
  458. refreshLoop();
  459. });
  460. }
  461.  
  462. refreshLoop();
  463. Ie.style.fontSize = "20px";
  464. Ie.style.display = "block";
  465. Ie.style.color = "#fff";
  466. Ie.style.textShadow = "3px 3px 3px black";
  467. Ie.style.zIndex = "1";
  468. let anti = true;
  469. let hitBack = false;
  470. let stackInsta = false;
  471. let lastDamageTick = 0;
  472. let HP = 100;
  473. let gameTick = 0;
  474. var shame = 0;
  475. let shameTime,
  476. damageTimes = 0;
  477. let mouseX;
  478. let mouseY;
  479.  
  480. let width;
  481. let height;
  482. //autoaim1
  483. setInterval(() => {
  484. if (autoaim == true) {
  485. doNewSend(["D", [nearestEnemyAngle]]);
  486. }
  487. }, 10);
  488.  
  489. setInterval(() => {
  490. if (hatToggle == 1) {
  491. if (oldHat != normalHat) {
  492. hat(normalHat);
  493. console.log("Tried. - Hat")
  494. }
  495. if (oldAcc != normalAcc) {
  496. acc(normalAcc);
  497. console.log("Tried. - Acc")
  498. }
  499. oldHat = normalHat;
  500. oldAcc = normalAcc
  501. }
  502. }, 25);
  503.  
  504. setInterval(function () {
  505. if (myPlayer.hat == 45) {
  506. doNewSend(["6", ["plis no kil :c"]]);
  507. }
  508. }, 1980);// messages send ever 2000ms but this is incase of packet mashes
  509.  
  510. function normal() {
  511. hat(normalHat);
  512. acc(normalAcc);
  513. }
  514.  
  515. function aim(x, y) {
  516. var cvs = document.getElementById("gameCanvas");
  517. cvs.dispatchEvent(new MouseEvent("mousemove", {
  518. clientX: x,
  519. clientY: y
  520.  
  521. }));
  522. }
  523.  
  524. let coreURL = new URL(window.location.href);
  525. window.sessionStorage.force = coreURL.searchParams.get("fc");
  526.  
  527. var packet
  528. var nearestEnemy;
  529. var nearestEnemyAngle;
  530. var oppositeEnemyAngle;
  531. var enemyRan;
  532. let trap_a = null;
  533. let intrap = false;
  534. let trapid = null;
  535. var antitrap = false;
  536. var isEnemyNear;
  537. var primary;
  538. var secondary;
  539. var foodType;
  540. var wallType;
  541. var spikeType;
  542. var millType;
  543. var mineType;
  544. var boostType;
  545. var turretType;
  546. var spawnpadType;
  547. var autoaim = false;
  548. var autoprimary = false;
  549. var autosecondary = false;
  550. var tick = 1;
  551. var oldHat;
  552. var oldAcc;
  553. var enemiesNear;
  554. var normalHat;
  555. var normalAcc;
  556. var ws;
  557. var msgpack5 = msgpack;
  558. var boostDir;
  559. let myPlayer = {
  560. id: null,
  561. x: null,
  562. y: null,
  563. dir: null,
  564. object: null,
  565. weapon: null,
  566. clan: null,
  567. isLeader: null,
  568. hat: null,
  569. accessory: null,
  570. isSkull: null,
  571. };
  572.  
  573. let healSpeed = 100;
  574. var messageToggle = 0;
  575. var clanToggle = 0;
  576. let healToggle = 1;
  577. let hatToggle = 1;
  578. document.msgpack = msgpack;
  579.  
  580. function n() {
  581. this.buffer = new Uint8Array([0]);
  582. this.buffer.__proto__ = new Uint8Array;
  583. this.type = 0;
  584. }
  585.  
  586. WebSocket.prototype.oldSend = WebSocket.prototype.send;
  587. WebSocket.prototype.send = function(m) {
  588. if (!ws) {
  589. document.ws = this;
  590.  
  591. ws = this;
  592. socketFound(this);
  593. }
  594. this.oldSend(m);
  595. };
  596.  
  597. /*function biomeHat() {
  598. if (myPlayer.y < 2400) {
  599. hat(6);
  600. } else {
  601. if (myPlayer.y > 6850 && myPlayer.y < 7550) {
  602. hat(6);
  603. } else {
  604. hat(6);
  605. }
  606. }
  607. //acc(11);
  608. }*/
  609.  
  610. function socketFound(socket) {
  611. socket.addEventListener('message', function(message) {
  612. handleMessage(message);
  613. });
  614. }
  615.  
  616. function handleMessage(m) {
  617. let temp = msgpack5.decode(new Uint8Array(m.data));
  618. let data;
  619. if (temp.length > 1) {
  620. data = [temp[0], ...temp[1]];
  621. if (data[1] instanceof Array) {
  622. data = data;
  623. }
  624. } else {
  625. data = temp;
  626. }
  627. let item = data[0];
  628. if (!data) {
  629. return
  630. };
  631.  
  632.  
  633. if (item === "io-init") {
  634. let cvs = document.getElementById("gameCanvas");
  635. width = cvs.clientWidth;
  636. height = cvs.clientHeight;
  637. $(window).resize(function() {
  638. width = cvs.clientWidth;
  639. height = cvs.clientHeight;
  640. });
  641. cvs.addEventListener("mousemove", e => {
  642. mouseX = e.clientX;
  643. mouseY = e.clientY;
  644. });
  645. }
  646.  
  647. if (item == "C" && myPlayer.id == null) {
  648. myPlayer.id = data[1];
  649. }
  650.  
  651. if (item == "a") {
  652. enemiesNear = [];
  653. for (let i = 0; i < data[1].length / 13; i++) {
  654. let playerInfo = data[1].slice(13 * i, 13 * i + 13);
  655. if (playerInfo[0] == myPlayer.id) {
  656. myPlayer.x = playerInfo[1];
  657. myPlayer.y = playerInfo[2];
  658. myPlayer.dir = playerInfo[3];
  659. myPlayer.object = playerInfo[4];
  660. myPlayer.weapon = playerInfo[5];
  661. myPlayer.clan = playerInfo[7];
  662. myPlayer.isLeader = playerInfo[8];
  663. myPlayer.hat = playerInfo[9];
  664. myPlayer.accessory = playerInfo[10];
  665. myPlayer.isSkull = playerInfo[11];
  666. } else if (playerInfo[7] != myPlayer.clan || playerInfo[7] === null) {
  667. enemiesNear.push(playerInfo);
  668. }
  669. }
  670. }
  671. update();
  672. if (item == "H") {
  673. for(let i = 0; i < data[1].length / 8; i++) {
  674. let info = data[1].slice(8*i, 8*i+8);
  675. if(info[6] == millType && info[7] == myPlayer.id){
  676. friendlyMillLocs.push(info)
  677. }
  678.  
  679. if(info[7] == myPlayer.id){
  680. onWeapon = true;
  681. }
  682. }
  683.  
  684. }
  685. update();
  686. /*if(item == "P"){
  687. setTimeout(() => {
  688. doNewSend(["M", [{name: "vn-" + "",moofoll: 1,skin: "#cc5151"}]]);
  689. }, 200);
  690. }*/
  691.  
  692. if(item == "Q"){
  693. removeArraysWithValue(friendlyMillLocs, data[1])
  694. }
  695. update();
  696. if(item == "R"){
  697. removeArraysWithValue(friendlyMillLocs, data[1])
  698. }
  699. update();
  700. if(item == "S"){
  701. if(data[1] == 3){
  702. millCount = data[2];
  703. }
  704. }
  705. update();
  706. if(friendlyMillLocs){
  707. nearestFriendlyMill = friendlyMillLocs.sort((a,b) => dist(a, myPlayer) - dist(b, myPlayer))[0];
  708.  
  709. if(nearestFriendlyMill){
  710. nearestFriendlyMillX = nearestFriendlyMill[1]
  711. nearestFriendlyMillY = nearestFriendlyMill[2]
  712. nearestFriendlyMillScale = nearestFriendlyMill[4]
  713. }
  714. }
  715. if(Math.sqrt(Math.pow((myPlayer.y-nearestFriendlyMillY), 2) + Math.pow((myPlayer.x-nearestFriendlyMillX), 2)) < nearestFriendlyMillScale + 100) {
  716. console.log(true)
  717. isNextToFriendlyMill = true;
  718. } else {
  719. isNextToFriendlyMill = false;
  720. }
  721. WebSocket.prototype.send = function(m){
  722. let xcc = new Uint8Array(m);
  723. this.oldSend(m);
  724. let realData = {};
  725. let realInfo = msgpack5.decode(xcc);
  726. if (realInfo[1] instanceof Array){
  727. realData.data = [realInfo[0], ...realInfo[1]]
  728. }
  729. let rd0 = realData.data[0];
  730. let rd1 = realData.data[1];
  731. let rd2 = realData.data[2]
  732.  
  733. if(rd0 == 'a'){
  734. movementDirection = rd1
  735. }
  736. };
  737. isEnemyNear = false;
  738. if (enemiesNear) {
  739. nearestEnemy = enemiesNear.sort((a, b) => dist(a, myPlayer) - dist(b, myPlayer))[0];
  740. }
  741.  
  742. if (nearestEnemy) {
  743. nearestEnemyAngle = Math.atan2(nearestEnemy[2] - myPlayer.y, nearestEnemy[1] - myPlayer.x);
  744. oppositeEnemyAngle = Math.atan2(nearestEnemy[2] + myPlayer.y, nearestEnemy[1] + myPlayer.x);
  745. enemyRan = Math.sqrt(Math.pow((myPlayer.y - nearestEnemy[2]), 2) + Math.pow((myPlayer.x - nearestEnemy[1]), 2));
  746. if (Math.sqrt(Math.pow((myPlayer.y - nearestEnemy[2]), 2) + Math.pow((myPlayer.x - nearestEnemy[1]), 2)) < 285) {
  747. isEnemyNear = true;
  748. if (autoaim == false && myPlayer.hat != 7 && myPlayer.hat != 53) {
  749. normalHat = 6;
  750. if (primary != 8) {
  751. normalAcc = 21
  752. }
  753. };
  754. }
  755. }
  756. if (isEnemyNear == false && autoaim == false) {
  757. if (myPlayer.y < 2400) {
  758. normalHat = 15;
  759. } else if (myPlayer.y > 6850 && myPlayer.y < 7550) {
  760. normalHat = 31;
  761. } else {
  762. normalHat = 12;
  763.  
  764. }
  765. }
  766. if(isEnemyNear == true && nearestEnemy[5] == 4 && nearestEnemy[9] == 7 && hitBack == true && myPlayer.hat != 7 && myPlayer.hat != 53 && myPlayer.hat != 22 && myPlayer.hat != 11){
  767. doNewSend(["c", [0, 11, 0]]);
  768. setTimeout(()=>{
  769. doNewSend(["c", [0, 21, 1]]);
  770. },60);
  771. }
  772. if (!nearestEnemy) {
  773. nearestEnemyAngle = myPlayer.dir;
  774. }
  775.  
  776. if (item == "X") {
  777. //this is Sync detector(beta)
  778. if (data[5] == 3.6) {
  779. let dir_1 = (dir) => Math.atan2(Math.sin(dir), Math.cos(dir));
  780. let a1 = dir_1(
  781. (Math.atan2(data[2] - myPlayer.y, data[1] - myPlayer.x) +
  782. Math.PI +
  783. Math.PI) %
  784. (Math.PI * 2)
  785. );
  786. let a2 = dir_1((dir_1(data[3]) + Math.PI) % (Math.PI * 2));
  787. let a3 = a1 - a2;
  788. if (0.36 > a3 && -0.36 < a3) {
  789. //doNewSend(["6", ["Sync Detect Test"]]);
  790. doNewSend(["D",[Math.atan2(data[2] - myPlayer.y, data[1] - myPlayer.x)],]);
  791. if (data[2] < 80 && data[2] > 0) {
  792. doNewSend(["c", [0, 6, 0]]);
  793. place(foodType);
  794. place(foodType);
  795. }
  796. }
  797. }
  798. }
  799. if (myPlayer.hat == 45 && shame) shameTime = 30000;
  800. if (myPlayer.hat == 45 && shame) shame = 30000;
  801. if (data[0] == "a") {
  802. gameTick++;
  803. }
  804. if (item == "O" && data[1] == myPlayer.id) {
  805. gameTick = 0;
  806. lastDamageTick = 0;
  807. shame = 0;
  808. HP = 100;
  809. shameTime = 0;
  810. if (item == "O" && data[1] == myPlayer.id) {
  811. let damage = HP - data[2];
  812. HP = data[2];
  813. if (damage <= -1) {
  814. damageTimes++;
  815. if (!lastDamageTick) return;
  816. let healTime = gameTick - lastDamageTick;
  817. lastDamageTick = 0;
  818. if (healTime <= 1) {
  819. shame = shame++;
  820. } else {
  821. shame = Math.max(0, shame - 2);
  822. }
  823. } else {
  824. lastDamageTick = gameTick;
  825. }
  826. }
  827. if (data[2] < 100 && data[2] > 0 && healToggle == true) {
  828. //normal heal
  829. console.log("normal healing");
  830. setTimeout(() => {
  831. place(foodType);
  832. place(foodType);
  833. doNewSend(["c", [0, 6, 0]]);
  834. // doNewSend(["6", ["Heal"]]);
  835. }, 115);
  836. }
  837. if (data[2] < 48 && data[2] > 0 && anti == true && (nearestEnemy[5] == 5 || nearestEnemy[5] == 3)) {
  838. healToggle = false;
  839. //antiinsta no sold for pol
  840. console.log("no soldier anti - polearm");
  841. doNewSend(["c", [0, 22, 0]]);
  842. //doNewSend(["6", ["Anti"]]);
  843. place(foodType);
  844. setTimeout(() => {
  845. place(foodType);
  846. doNewSend(["c", [0, 6, 0]]);
  847. healToggle = true;
  848. }, 200);
  849. setTimeout(() => {
  850. doNewSend(["c", [0, 7, 0]]);
  851. }, 700);
  852. setTimeout(() => {
  853. doNewSend(["c", [0, 6, 0]]);
  854. }, 1900);
  855. }
  856. if (data[2] < 62 && data[2] > 41 && anti == true && (nearestEnemy[5] == 5 || nearestEnemy[5] == 3)) {
  857. healToggle = false;
  858. //antiinsta for pol
  859. console.log("anti insta - polearm");
  860. doNewSend(["c", [0, 22, 0]]);
  861. //doNewSend(["6", ["Anti"]]);
  862. place(foodType);
  863. setTimeout(() => {
  864. place(foodType);
  865. doNewSend(["c", [0, 6, 0]]);
  866. healToggle = true;
  867. }, 200);
  868. setTimeout(() => {
  869. doNewSend(["c", [0, 7, 0]]);
  870. }, 700);
  871. setTimeout(() => {
  872. doNewSend(["c", [0, 6, 0]]);
  873. }, 1900);
  874. }
  875. if (data[2] < 56 && data[2] > 50) {
  876. healToggle = false;
  877. //bullspam heal
  878. console.log("anti bullspam");
  879. setTimeout(() => {
  880. place(foodType);
  881. place(foodType);
  882. doNewSend(["c", [0, 6, 0]]);
  883. //doNewSend(["6", ["BHeal1"]]);
  884. healToggle = true;
  885. }, 140);
  886. }
  887. if (data[2] < 41 && data[2] > 0 && hitBack == true && nearestEnemy[5] == 4) {
  888. console.log("hitbacking");
  889. healToggle = false;
  890. autoaim = true;
  891. setTimeout(() => {
  892. place(foodType);
  893. place(foodType);
  894. }, 133);
  895. place(spikeType, nearestEnemyAngle);
  896. doNewSend(["d", [1]]);
  897. doNewSend(["c", [0, 7, 0]]);
  898. doNewSend(["G", [primary, true]]);
  899. setTimeout(() => {
  900. doNewSend(["c", [0, 53, 0]]);
  901. doNewSend(["d", [0]]);
  902. healToggle = true;
  903. }, 150);
  904. setTimeout(() => {
  905. doNewSend(["c", [0, 11, 0]]);
  906. autoaim = false;
  907. }, 300);
  908. }
  909. }
  910. update();
  911. }
  912.  
  913. function doNewSend(sender) {
  914. ws.send(new Uint8Array(Array.from(msgpack5.encode(sender))));
  915. }
  916.  
  917. function acc(id) {
  918. doNewSend(["c", [0, 0, 1]]);
  919. doNewSend(["c", [0, id, 1]]);
  920. }
  921.  
  922. function hat(id) {
  923. doNewSend(["c", [0, id, 0]]);
  924. }
  925.  
  926. function placeO(id, angle = Math.atan2(mouseY - height / 2, mouseX - width / 2)) {
  927. doNewSend(["G", [myPlayer.weapon, true]]);
  928. doNewSend(["G", [id, null]]);
  929. doNewSend(["d", [1, angle]]);
  930. doNewSend(["d", [0, angle]]);
  931. doNewSend(["G", [myPlayer.weapon, true]]);
  932. }
  933.  
  934. function place(id, angle = Math.atan2(mouseY - height / 2, mouseX - width / 2)) {
  935. doNewSend(["G", [id, null]]);
  936. doNewSend(["d", [1, angle]]);
  937. doNewSend(["d", [0, angle]]);
  938. doNewSend(["G", [myPlayer.weapon, true]]);
  939. }
  940.  
  941. var repeater = function(key, action, interval, bu) {
  942. let _isKeyDown = false;
  943. let _intervalId = undefined;
  944.  
  945. return {
  946. start(keycode) {
  947. if (keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') {
  948. _isKeyDown = true;
  949. if (_intervalId === undefined) {
  950. _intervalId = setInterval(() => {
  951. action();
  952. if (!_isKeyDown) {
  953. clearInterval(_intervalId);
  954. _intervalId = undefined;
  955. console.log("claered");
  956. }
  957. }, interval);
  958. }
  959. }
  960. },
  961.  
  962. stop(keycode) {
  963. if (keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') {
  964. _isKeyDown = false;
  965. }
  966. }
  967. };
  968.  
  969.  
  970. }
  971.  
  972. function removeArraysWithValue(arr, valueToRemove) {
  973. for (let i = arr.length - 1; i >= 0; i--) {
  974. const innerArray = arr[i];
  975. if (innerArray.includes(valueToRemove)) {
  976. arr.splice(i, 1);
  977. }
  978. }
  979. }
  980. let movementDirection
  981. let millCount = 0;
  982. let nearestRandomObjectX;
  983. let nearestRandomObjectY;
  984. let friendlyMillLocs = [];
  985. let nearestFriendlyMill;
  986. let nearestFriendlyMillX;
  987. let nearestFriendlyMillY;
  988. let nearestFriendlyMillScale;
  989. let isNextToFriendlyMill = false;
  990. let automilling = false
  991. let automill = false
  992. setInterval(()=>{
  993. if(automill == true && isNextToFriendlyMill == false && millCount < 298 && automilling == false){
  994. automilling = true;
  995. doNewSend(["G",[millType, null]])
  996. doNewSend(["d",[1, (movementDirection - 1.90)]])
  997. doNewSend(["d",[0, (movementDirection - 1.90)]])
  998. doNewSend(["G",[myPlayer.weapon, true]])
  999. doNewSend(["G",[millType, null]])
  1000. doNewSend(["d",[1, (movementDirection - 3.14)]])
  1001. doNewSend(["d",[0, (movementDirection - 3.14)]])
  1002. doNewSend(["G",[myPlayer.weapon, true]])
  1003. doNewSend(["G",[millType, null]])
  1004. doNewSend(["d",[1, (movementDirection + 1.90)]])
  1005. doNewSend(["d",[0, (movementDirection + 1.90)]])
  1006. doNewSend(["G",[myPlayer.weapon, true]])
  1007. automilling = false
  1008. }
  1009. }, 100)
  1010. const boostPlacer = repeater(70,() => {place(boostType);},50);
  1011. const spikePlacer = repeater(86,() => {place(spikeType);},50);
  1012. const placers = [boostPlacer, spikePlacer];
  1013. let prevCount = 0;
  1014. const handleMutations = (mutationsList) => {
  1015. for (const mutation of mutationsList) {
  1016. if (mutation.target.id === "killCounter") {
  1017. const count = parseInt(mutation.target.innerText, 10) || 0;
  1018. if (count > prevCount) {
  1019. doNewSend(["6", ["Revolver modv2 by EZ HACK "]]);
  1020. setTimeout(()=>{
  1021. doNewSend(["6", ["you ez kill noob+1"]]);
  1022. },650);
  1023. prevCount = count;
  1024. }
  1025. }
  1026. }
  1027. };
  1028.  
  1029.  
  1030. const observer = new MutationObserver(handleMutations);
  1031. observer.observe(document, {
  1032. subtree: true,
  1033. childList: true,
  1034. });
  1035.  
  1036. document.addEventListener('keydown', (e) => {
  1037. if (["allianceinput", "chatbox", "nameinput", "storeHolder"].includes(document.activeElement.id.toLowerCase()))
  1038. return null;
  1039. placers.forEach((t) => {
  1040. t.start(e.keyCode);
  1041. });
  1042.  
  1043. if (e.keyCode == 78 && document.activeElement.id.toLowerCase() !== "chatbox") {// N = Automill
  1044. automill = !automill;
  1045. }
  1046.  
  1047. if (e.keyCode == 72 && document.activeElement.id.toLowerCase() !== "chatbox") {// H = Turret/Teleporter
  1048. for (let i = 0; i < Math.PI * 1; i+= Math.PI / 2) {
  1049. place(turretType, myPlayer.dir + i);
  1050. place(turretType, myPlayer.dir - i);
  1051. }
  1052. }
  1053. /* if (e.keyCode == 16) {
  1054. biomeHat();
  1055. }*/
  1056. if (e.keyCode == 32 && document.activeElement.id.toLowerCase() !== "chatbox") {
  1057. // spiketick
  1058. autoaim = true;
  1059. console.log("spiektick");
  1060. place(spikeType, nearestEnemyAngle);
  1061. doNewSend(["d", [1]]);
  1062. doNewSend(["c", [0, 7, 0]]);
  1063. doNewSend(["G", [primary, true]]);
  1064. doNewSend(["d", [1]]);
  1065. setTimeout(() => {
  1066. doNewSend(["c", [0, 6, 0]]);
  1067. doNewSend(["d", [0]]);
  1068. autoaim = false;
  1069. }, 400);
  1070. }
  1071. if (e.keyCode == 89 && document.activeElement.id.toLowerCase() !== "chatbox") {//diamond pol 1 tick
  1072. autoaim = true;
  1073. doNewSend(["G", [primary, true]]);
  1074. doNewSend(["c", [0, 53, 0]]);
  1075. setTimeout(() => {
  1076. doNewSend(["c", [0, 7, 0]]);
  1077. doNewSend(["d", [1]]);
  1078. }, 100);
  1079. setTimeout(() => {
  1080. doNewSend(["G", [primary, true]]);
  1081. doNewSend(["c", [0, 6, 0]]);
  1082. doNewSend(["d", [0]]);
  1083. autoaim = false;
  1084. }, 500);
  1085. }
  1086. if (e.keyCode == 82 &&document.activeElement.id.toLowerCase() !== "chatbox") {
  1087. if (stackInsta == false) {
  1088. console.log("normal insta");
  1089. autoaim = true;
  1090. doNewSend(["c", [0, 7, 0]]);
  1091. doNewSend(["G", [primary, true]]);
  1092. doNewSend(["c", [0, 0, 1]])
  1093. doNewSend(["d", [1]]);
  1094. acc(18)
  1095. doNewSend(["c", [1]]);
  1096. setTimeout(() => {
  1097. doNewSend(["G", [secondary, true]]);
  1098. doNewSend(["c", [0, 53, 0]]);
  1099. doNewSend(["c", [0, 0, 1]]);
  1100. acc(21)
  1101. }, 105);
  1102. setTimeout(() => {
  1103. doNewSend(["G", [secondary, true]]);
  1104. }, 110);
  1105. setTimeout(() => {
  1106. doNewSend(["G", [secondary, true]]);
  1107. }, 115);
  1108. setTimeout(() => {
  1109. doNewSend(["G", [primary, true]]);
  1110. doNewSend(["d", [0, null]]);
  1111. doNewSend(["c", [0, 6, 0]]);
  1112. doNewSend(["c", [0, 0, 0]]);
  1113. doNewSend(["c", [0, 0, 1]]);
  1114. hat(6)
  1115. acc(21)
  1116. autoaim = false;
  1117. }, 215);
  1118. } else {
  1119. console.log("stack insta");
  1120. autoaim = true;
  1121. doNewSend(["c", [0, 7, 0]]);
  1122. doNewSend(["G", [primary, true]]);
  1123. doNewSend(["c", [0, 0, 1]])
  1124. doNewSend(["d", [1]]);
  1125. acc(18)
  1126. doNewSend(["c", [1]]);
  1127. setTimeout( () => {
  1128. var sck = "";
  1129. doNewSend(["G", [secondary, true]]);
  1130. doNewSend(["c", [0, 53, 0]]);
  1131. doNewSend(["c", [0, 0, 1]]);
  1132. for(let i = 0; i < 850; i++){
  1133. let caas = new Uint8Array(550);
  1134. for(let i = 0; i <caas.length;i++){
  1135. caas[i] = Math.floor(Math.random()*270);
  1136. sck += caas[i]
  1137. }
  1138. }
  1139. ws.send(caas);
  1140. }, 105);
  1141. setTimeout(() => {
  1142. doNewSend(["G", [secondary, true]]);
  1143. }, 200);
  1144. setTimeout(() => {
  1145. doNewSend(["G", [primary, true]]);
  1146. doNewSend(["d", [0, null]]);
  1147. doNewSend(["c", [0, 6, 0]]);
  1148. doNewSend(["c", [0, 0, 0]]);
  1149. doNewSend(["c", [0, 0, 1]]);
  1150. hat(6)
  1151. acc(21)
  1152. autoaim = false;
  1153. }, 215);
  1154. }
  1155. }
  1156. if (e.keyCode == 188 &&document.activeElement.id.toLowerCase() !== "chatbox") {
  1157. console.log("boost tick");
  1158. autoaim = true;
  1159. setTimeout(()=>{
  1160. doNewSend(["d", [1]]);
  1161. doNewSend(["G", [secondary, true]]);
  1162. },99);
  1163. setTimeout(()=>{
  1164. doNewSend(["c", [0, 53, 0]]);
  1165. place(boostType);
  1166. },50);
  1167. setTimeout(() => {
  1168. doNewSend(["G", [primary, true]]);
  1169. doNewSend(["c", [0, 7, 0]]);
  1170. doNewSend(["d", [1]]);
  1171. doNewSend(["d", [0]]);
  1172. }, 175);
  1173. setTimeout(() => {
  1174. doNewSend(["G", [primary, true]]);
  1175. doNewSend(["c", [0, 6, 0]]);
  1176. doNewSend(["d", [0]]);
  1177. autoaim = false;
  1178. }, 500);
  1179. }
  1180. if (e.keyCode == 84 && document.activeElement.id.toLowerCase() !== "chatbox") {
  1181. if(stackInsta == false){
  1182. // insta
  1183. autoaim = true;
  1184. console.log("reverse insta");
  1185. doNewSend(["d", [1]]);
  1186. doNewSend(["G", [secondary, true]]);
  1187. doNewSend(["c", [0, 53, 0]]);
  1188. setTimeout(() => {
  1189. doNewSend(["G", [primary, true]]);
  1190. doNewSend(["c", [0, 7, 0]]);
  1191. doNewSend(["d", [1]]);
  1192. doNewSend(["d", [0]]);
  1193. }, 80);
  1194. setTimeout(() => {
  1195. doNewSend(["G", [primary, true]]);
  1196. doNewSend(["c", [0, 6, 0]]);
  1197. doNewSend(["d", [0]]);
  1198. autoaim = false;
  1199. }, 500);
  1200. } else {
  1201. autoaim = true;
  1202. console.log("stacked reverse insta");
  1203. doNewSend(["d", [1]]);
  1204. doNewSend(["G", [secondary, true]]);
  1205. doNewSend(["c", [0, 53, 0]]);
  1206. setTimeout(() => {
  1207. var sck = "";
  1208. doNewSend(["G", [primary, true]]);
  1209. doNewSend(["c", [0, 7, 0]]);
  1210. doNewSend(["d", [1]]);
  1211. doNewSend(["d", [0]]);
  1212. for(let i = 0; i < 850; i++){
  1213. let caas = new Uint8Array(550);
  1214. for(let i = 0; i <caas.length;i++){
  1215. caas[i] = Math.floor(Math.random()*270);
  1216. sck += caas[i]
  1217. }
  1218. }
  1219. ws.send(caas);
  1220. }, 80);
  1221. setTimeout(() => {
  1222. doNewSend(["G", [primary, true]]);
  1223. doNewSend(["c", [0, 6, 0]]);
  1224. doNewSend(["d", [0]]);
  1225. autoaim = false;
  1226. }, 500);
  1227. }
  1228. }
  1229. if (e.keyCode == 66 &&document.activeElement.id.toLowerCase() !== "chatbox") {//manual bulltick
  1230. doNewSend(["c", [0, 7, 0]]);
  1231. setTimeout(()=>{
  1232. doNewSend(["c", [0, 13, 1]]);
  1233. },60);
  1234. }
  1235. })
  1236.  
  1237. document.addEventListener('keyup', (e) => {
  1238. if (["allianceinput", "chatbox", "nameinput", "storeHolder"].includes(document.activeElement.id.toLowerCase()))
  1239. return null;
  1240. placers.forEach((t) => {
  1241. t.stop(e.keyCode);
  1242. })
  1243. })
  1244.  
  1245. document.addEventListener("mousedown", (event) => {
  1246. if (event.button == 2 && secondary != 10) {
  1247. doNewSend(["d", [1]]);
  1248. doNewSend(["c", [0, 40, 0]]);
  1249. doNewSend(["G", [primary, true]]);
  1250. setTimeout(()=>{
  1251. doNewSend(["d", [0]]);
  1252. doNewSend(["c", [0, 6, 0]]);
  1253. },100);
  1254. } else if (event.button == 2) {
  1255. doNewSend(["d", [1]]);
  1256. doNewSend(["c", [0, 40, 0]]);
  1257. doNewSend(["G", [secondary, true]]);
  1258. setTimeout(()=>{
  1259. doNewSend(["d", [0]]);
  1260. doNewSend(["c", [0, 6, 0]]);
  1261. },100);
  1262. }
  1263. });
  1264.  
  1265. /*document.addEventListener("mousedown", (event) => {
  1266. if (event.button == 0) {
  1267. doNewSend(["d", [1]]);
  1268. doNewSend(["c", [0, 7, 0]]);
  1269. doNewSend(["G", [primary, true]]);
  1270. setTimeout(()=>{
  1271. doNewSend(["d", [0]]);
  1272. doNewSend(["c", [0, 6, 0]]);
  1273. },100);
  1274. }
  1275. });*/
  1276.  
  1277. function isElementVisible(e) {
  1278. return (e.offsetParent !== null);
  1279. }
  1280.  
  1281. function toRad(angle) {
  1282. return angle * 0.01745329251;
  1283. }
  1284.  
  1285. function dist(a, b) {
  1286. return Math.sqrt(Math.pow((b.y - a[2]), 2) + Math.pow((b.x - a[1]), 2));
  1287. }
  1288.  
  1289. function update() {
  1290. for (let i = 0; i < 9; i++) {
  1291. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  1292. primary = i;
  1293. }
  1294. }
  1295.  
  1296. for (let i = 9; i < 16; i++) {
  1297. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  1298. secondary = i;
  1299. }
  1300. }
  1301.  
  1302. for (let i = 16; i < 19; i++) {
  1303. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  1304. foodType = i - 16;
  1305. }
  1306. }
  1307.  
  1308. for (let i = 19; i < 22; i++) {
  1309. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  1310. wallType = i - 16;
  1311. }
  1312. }
  1313.  
  1314. for (let i = 22; i < 26; i++) {
  1315. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  1316. spikeType = i - 16;
  1317. }
  1318. }
  1319.  
  1320. for (let i = 26; i < 29; i++) {
  1321. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  1322. millType = i - 16;
  1323. }
  1324. }
  1325.  
  1326. for (let i = 29; i < 31; i++) {
  1327. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  1328. mineType = i - 16;
  1329. }
  1330. }
  1331.  
  1332. for (let i = 31; i < 33; i++) {
  1333. if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) {
  1334. boostType = i - 16;
  1335. }
  1336. }
  1337.  
  1338. for (let i = 33; i < 39; i++) {
  1339. if (isElementVisible(document.getElementById("actionBarItem" + i.toString())) && i != 36) {
  1340. turretType = i - 16;
  1341. }
  1342. }
  1343.  
  1344. spawnpadType = 36;
  1345. }
  1346.  
  1347. var styleItem = document.createElement("style");
  1348. styleItem.type = "text/css";
  1349. styleItem.appendChild(document.createTextNode(`
  1350. .loader {
  1351. position: absolute;
  1352. top:110%;
  1353. left:46%;
  1354. border: 16px solid #FFFFFF;
  1355. border-radius: 50%;
  1356. border-top: 16px solid #181818;
  1357. box-shadow: 0 0 10px 10px rgba(0, 0, 0, 0.4);
  1358. width: 60px;
  1359. height: 60px;
  1360. -webkit-animation: spin 0.5s linear infinite; /* Safari */
  1361. animation: spin 0.5s linear infinite;
  1362. }
  1363. @-webkit-keyframes spin {
  1364. 0% { -webkit-transform: rotate(0deg); }
  1365. 100% { -webkit-transform: rotate(360deg); }
  1366. }
  1367.  
  1368. @keyframes spin {
  1369. 0% { transform: rotate(0deg); }
  1370. 100% { transform: rotate(360deg); }
  1371. }
  1372. #gameUI .joinAlBtn, a {
  1373. animation: 5s infinite linear both normal rainbow;
  1374. }
  1375.  
  1376. @keyframes rainbow {
  1377. 0% { filter: hue-rotate(0deg) }
  1378. 100% { filter: hue-rotate(360deg) }
  1379. }`));
  1380. document.head.appendChild(styleItem);
  1381.  
  1382. window.addEventListener("load", () => {
  1383.  
  1384. let toggleRender = true;
  1385. let canvas = document.getElementById("gameCanvas");
  1386. let ctx = canvas.getContext("2d");
  1387. let screenWidth = 1920;
  1388. let screenHeight = 1080;
  1389. let screenW = screenWidth / 2;
  1390. let screenH = screenHeight / 2;
  1391.  
  1392. function render() {
  1393.  
  1394. if (toggleRender) {
  1395.  
  1396. ctx.beginPath();
  1397.  
  1398. let gradient = ctx.createRadialGradient(screenW, screenH, 0, screenW, screenH, screenWidth);
  1399. for (let i = 0; i <= 1; i++) {
  1400. gradient.addColorStop(i, "rgba(0, 0, 0, " + i + ")");
  1401. }
  1402.  
  1403. ctx.fillStyle = gradient;
  1404. ctx.rect(0, 0, screenWidth, screenHeight);
  1405. ctx.fill();
  1406.  
  1407. }
  1408.  
  1409. window.requestAnimFrame(render);
  1410.  
  1411. }
  1412.  
  1413. render();
  1414. });
  1415.  
  1416. document.addEventListener("keydown", function (e) {
  1417. if (e.keyCode == 27) {
  1418. $('#infomenu').toggle();
  1419. ext = !ext;
  1420. };
  1421. });
  1422.  
  1423. // Menu
  1424. $("body").after(`
  1425. <div id="infomenu">
  1426. <hr>
  1427. <div class="nameblock">Revolver modv2</div>
  1428. <hr>
  1429. <ul>
  1430. <li></label><label><div class="text">AntiInsta<input type="checkbox" id="anti" checked><span class="checkmark"></div></li>
  1431. <li></label><label><div class="text">HitBack<input type="checkbox" id="hitBack"><span class="checkmark"></div></li>
  1432. <li></label><label><div class="text">Stacked Insta<input type="checkbox" id="stackInsta"><span class="checkmark"></div></li>
  1433. </ul>
  1434. <hr>
  1435. <div class="nameblock">Revolver mov2:</div>
  1436. <hr>
  1437.  
  1438. <div class="text">
  1439. </li>
  1440. <li> N - Auto Triple Mill
  1441. </li>
  1442. <li> V - Spike
  1443. </li>
  1444. <li> F - Trap
  1445. </li>
  1446. <li> H - Double Turrets
  1447. </li>
  1448. <li> M - Music Menu
  1449. </li>
  1450. <li> Space - Perfect Stacked Spiketick
  1451. </li>
  1452. <li> RightClick - AutoBreaker
  1453. </li>
  1454. <li> R - Normal Instakill
  1455. </li>
  1456. <li> T - Reverse Instakill
  1457. </li>
  1458. <li> Y - OneTick
  1459. </li>
  1460. <li> , - Boost OneTick
  1461. </li>
  1462. <li> B - Bulltick
  1463. </li>
  1464. <li> Esc - Menu
  1465. </li>
  1466. </ul>
  1467. <hr>
  1468. </div>
  1469.  
  1470.  
  1471.  
  1472. </div>
  1473. <style>
  1474. button:active,
  1475. button:focus {
  1476. outline: none !important;
  1477. }
  1478. button::-moz-focus-inner {
  1479. border: 0 !important;
  1480. }
  1481. .nameblock {
  1482. font-size: 20px;
  1483. color: #dbdbdb;
  1484. text-align: center;
  1485. }
  1486. li {
  1487. font-size: 13px;
  1488. }
  1489. .text {
  1490. display: block;
  1491. font-size: 17px;
  1492. color: #fff;
  1493. text-align: left;
  1494. }
  1495. .menuToggle:hover{
  1496. cursor: pointer;
  1497. position: absolute;
  1498. background: linear-gradient(to right, red, orange, yellow, green, cyan, blue, violet);
  1499. background-size: 400% 400%;
  1500. -webkit-background-clip: text;
  1501. -webkit-text-fill-color: transparent;
  1502. -webkit-animation: colorR 20s ease infinite;
  1503. animation: colorR 20s ease infinite;
  1504. font-family: "Hammersmith One";
  1505. display: block !important;
  1506. top: 80px;
  1507. left: 1517px;
  1508. font-size: 17px;
  1509. }
  1510. .menuToggle{
  1511. cursor: pointer;
  1512. position: absolute;
  1513. background: linear-gradient(to right, gray, black);
  1514. background-size: 400% 400%;
  1515. -webkit-background-clip: text;
  1516. -webkit-text-fill-color: transparent;
  1517. -webkit-animation: colorR 20s ease infinite;
  1518. animation: colorR 20s ease infinite;
  1519. font-family: "Hammersmith One";
  1520. display: block !important;
  1521. top: 80px;
  1522. left: 1517px;
  1523. font-size: 17px;
  1524. }
  1525. ::-webkit-scrollbar { width: 5px; height: 3px;}
  1526. ::-webkit-scrollbar-button { background-color: ##db6c1d; }
  1527. ::-webkit-scrollbar-track { background-color: #999;}
  1528. ::-webkit-scrollbar-track-piece { background-color: rgba(0, 0, 0, 0.50);}
  1529. ::-webkit-scrollbar-thumb { height: 50px; background-color: #666; border-radius: 3px;}
  1530. ::-webkit-scrollbar-corner { background-color: #999;}}
  1531. ::-webkit-resizer { background-color: #666;}
  1532. #infomenu {
  1533. overflow-y: scroll;
  1534. overflow-x: hidden;
  1535. padding: 20px;
  1536. position: absolute;
  1537. display: none;
  1538. background: rgba(102, 102, 102, 0.25);
  1539. width: 310px;
  1540. height: 450px;
  1541. border: 2px solid black;
  1542. border-radius: 4px;
  1543. top: 80px;
  1544. left: 20px;
  1545. z-index: 1;
  1546. }
  1547. input {outline: 0 !important;}
  1548. .Input_Text_style, .Input_Buttob_style {
  1549. background: rgba(102, 102, 102);
  1550. border: 2px solid black;
  1551. border-radius: 10px;
  1552. color: #fff;
  1553. -o-transition: all 1s ease;
  1554. -ms-transition: all 1s ease;
  1555. -moz-transition: all 1s ease;
  1556. -webkit-transition: all 1s ease;
  1557. transition: all 1s ease;
  1558. }
  1559. .Input_Text_style:focus,.Input_Buttob_style:focus {
  1560. border: 2px solid #fff;
  1561. }
  1562. </style>
  1563. <script>
  1564. function InfoMenu() {
  1565. $("#infomenu").css({
  1566. "display" : "block"
  1567. });
  1568. }
  1569.  
  1570. /*(function() {
  1571. var UPDATE_DELAY = 700;
  1572. var lastUpdate = 0;
  1573. var frames = 0;
  1574. var values;
  1575. function updateCounter() {
  1576. var now = Date.now();
  1577. var elapsed = now - lastUpdate;
  1578. if (elapsed < UPDATE_DELAY) {
  1579. ++frames;
  1580. } else {
  1581. var fps = Math.round(frames / (elapsed / 1000));
  1582. document.getElementById("fps").textContent ="Fps: " + fps ;
  1583. frames = 0;
  1584. lastUpdate = now;
  1585. }
  1586. requestAnimationFrame(updateCounter);
  1587. }
  1588. lastUpdate = Date.now();
  1589. requestAnimationFrame(updateCounter);
  1590. })();
  1591. setInterval(()=>{
  1592. document.getElementById("ping").textContent = "Ping: " + window.pingTime;
  1593. },0);*/
  1594.  
  1595. </script>
  1596. `);
  1597. $("body").after(`
  1598. <div id="ShowMenu">
  1599. </span>
  1600. <div id="addtext">LeftAndRightClick: On</div>
  1601. <div id="addtext3">Balant macros: On</div>
  1602. <div id="addtext0">Soldier-Q: On</div>
  1603. <div id="addtext4">AutoSpawn: On</div>
  1604. <div id="addtext1">Left-Click</div>
  1605. <div id="addtext2">Right-Click</div>
  1606. <style>
  1607. #ShowMenu {
  1608. position:absolute !important;
  1609. display:block;
  1610. top: 5px;
  1611. left: 5px;
  1612. width: auto;
  1613. height: auto;
  1614. text-align: center;
  1615. }
  1616. #addtext,#addtext1,#addtext2,#addtext0,#addtext3,#addtext4{
  1617. display: none;
  1618. color: #fff;
  1619. background: linear-gradient(to right, red, orange, yellow, green, cyan, blue, violet);
  1620. background-size: 400% 400%;
  1621. font-size: 20px;
  1622. -webkit-background-clip: text;
  1623. -webkit-text-fill-color: transparent;
  1624. -webkit-animation: colorR 20s ease infinite;
  1625. animation: colorR 20s ease infinite;
  1626. }
  1627. @-webkit-keyframes colorR {
  1628. 0% { background-position: 0% 50% }
  1629. 50% { background-position: 100% 50% }
  1630. 100% { background-position: 0% 50% }
  1631. }
  1632. @keyframes colorR {
  1633. 0% { background-position: 0% 50% }
  1634. 50% { background-position: 100% 50% }
  1635. 100% { background-position: 0% 50% }
  1636. }
  1637. </style>
  1638. <script>
  1639. </script>
  1640. `);
  1641.  
  1642. var antii = document.querySelector("#anti")
  1643. antii.addEventListener('change', function() {
  1644. if (this.checked) {
  1645. anti = true;
  1646. } else {
  1647. anti = false;
  1648. }
  1649. });
  1650. var hitBackk = document.querySelector("#hitBack")
  1651. hitBackk.addEventListener('change', function() {
  1652. if (this.checked) {
  1653. hitBack = true;
  1654. } else {
  1655. hitBack = false;
  1656. }
  1657. });
  1658. var stackInstaa = document.querySelector("#stackInsta")
  1659. stackInstaa.addEventListener('change', function() {
  1660. if (this.checked) {
  1661. stackInsta = true;
  1662. } else {
  1663. stackInsta = false;
  1664. }
  1665. });

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址