cipher

Raiding Mod

  1. // ==UserScript==
  2. // @name cipher
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description Raiding Mod
  6. // @author cipher
  7. // @match zombs.io
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. localStorage['youTubeSubscribed'] = true;
  12. localStorage['walkthroughCompleted'] = true;
  13. localStorage['twitterShared'] = true;
  14. localStorage['facebookShared'] = true;
  15.  
  16. document.getElementsByClassName('hud-intro-name')[0].setAttribute('maxlength', 29);
  17. document.querySelectorAll('.ad-unit, .hud-intro-youtuber, .hud-intro-footer, .hud-intro-stone, .hud-intro-tree, hud-respawn-corner-bottom-left, .hud-intro-social, .hud-intro-more-games, .hud-intro-form > label, .hud-intro-stone, .hud-intro-tree, .hud-intro-corner-bottom-left, .hud-intro-corner-bottom-right').forEach(el => el.remove());
  18. document.getElementsByClassName('hud-intro-play')[0].classList.remove('btn-green');
  19.  
  20. document.getElementsByClassName("hud-intro-wrapper")[0].childNodes[1].innerHTML = `<br style="height:20px;"><Custom><b><font size='24'>gg</font></b></Custom>`;
  21.  
  22. document.getElementsByClassName('hud-party-tag')[0].setAttribute('maxlength', 49);
  23. document.getElementsByClassName("hud-intro-form")[0].setAttribute("style", "width: 310px; height: 330px; margin-top: 8px; background-color: rgb(0, 0, 0, 0.0);");
  24. document.getElementsByClassName("hud-intro-guide")[0].setAttribute("style", "width: 420px; height: 280px; margin-top: 8px; background-color: rgb(0, 0, 0, 0.0);");
  25. document.getElementsByClassName("hud-intro-left")[0].setAttribute("style", "width: 360px; height: 280px; margin-top: 24px; margin-left: 75px; margin-right: 0px;");
  26.  
  27. // Intro
  28.  
  29. let left = document.getElementsByClassName('hud-intro-left')[0];
  30.  
  31. let defaultHTML = `
  32. <br>
  33. <button class='btn btn-blue tabsaver' style='width: 240px; height: 45px;'>Tab Saver</button>
  34. <br><br>
  35. <button class='btn btn-blue scanner' style='width: 240px; height: 45px;'>Scanner</button>
  36. <br><br>
  37. <button class='btn btn-blue menufiller' style='width: 240px; height: 45px;'>Menu Filler</button>
  38. <br><br>
  39. <button class='btn btn-blue alts' style='width: 240px; height: 45px;'>Sockets</button>
  40. <br>
  41. <br>
  42. `;
  43.  
  44. left.innerHTML = defaultHTML;
  45.  
  46. let right = document.getElementsByClassName('hud-intro-guide')[0];
  47.  
  48. let layout = `
  49. <div class='tabsaverLayout' style='text-align: center;'>
  50. <h1>Tab Saver</h1>
  51. <p>Click on the <strong>Host Saved Tab</strong> button to open a saved tab here.</p>
  52. <input type="text" style="width: 225px; border-radius: 3px; border: 2px solid rgb(0, 0, 0, 0.4); color: red; height: 45px; padding: 5px;" id="hostsavedtabpsk" placeholder="Party Share Key?">
  53. <h3>Tabs saved:</h3>
  54. <div id="savedTabs"></div>
  55. <button class='btn btn-red' style='width: 200px; height: 40px; padding: 1px;' onclick='window.goback("tabsaver");'>Exit</button>
  56. <br>
  57. </div>
  58.  
  59. <div class='menufillerLayout' style='text-align: center;'>
  60. <h1>Menu Filler</h1>
  61. <p>Sends WebSocket Fillers to fill the selected server.</p>
  62. <br><br>
  63. <button class='btn btn-blue' style='width: 160px;' onclick='sendFillerToServer();'>Send Filler</button>
  64. &nbsp
  65. <button class='btn btn-blue' style='width: 160px;' onclick='deleteFillersInServer();'>Delete Fillers</button>
  66. <br>
  67. <p style='width: 160px; padding: 6px;' class='btn fillerNums'>Filler Count: 0</p>
  68. &nbsp
  69. <button class='btn btn-red' style='width: 160px; margin-top: 15px;' onclick='window.goback("menufiller");'>Exit</button>
  70. </div>
  71.  
  72. <div class='scannerLayout' style='text-align: center;'>
  73. <h1>Server Scanner</h1>
  74. <p>Click on the <strong>Scan Server</strong> button to show the data of the selected server here.</p>
  75. <br>
  76. <div id="ssrs"></div>
  77. <br>
  78. <button class='btn btn-red' style='width: 160px;' onclick='window.goback("scanner");'>Exit</button>
  79. </div>
  80.  
  81. <div class='altsLayout' style='text-align: center;'>
  82. <h1>Sockets</h3>
  83. <p>Create WebSockets to join selected servers and bases.</p>
  84. <br><br>
  85. <input type="text" style="width: 160px; border-radius: 3px; border: 2px solid rgb(0, 0, 0, 0.4); height: 40px; padding: 6px;" placeholder='Server ID?' class='altsServerId' maxlength='9'>&nbsp
  86. <input type="text" style="width: 160px; border-radius: 3px; border: 2px solid rgb(0, 0, 0, 0.4); height: 40px; padding: 6px;" placeholder='Share Key?' class='altsPsk' maxlength='20'><br>
  87. <input type="text" style="width: 160px; border-radius: 3px; border: 2px solid rgb(0, 0, 0, 0.4); height: 40px; padding: 6px; margin-top: 10px;" placeholder='Name?' class='altsName' maxlength='29'>&nbsp
  88. <button class='btn btn-blue' style='width: 160px; margin-top: 10px;' onclick='window.sendafkws()'>Send WebSocket</button>
  89. </div>
  90. `;
  91.  
  92. right.innerHTML = layout;
  93.  
  94. document.getElementsByClassName('tabsaverLayout')[0].style.display = 'none';
  95. document.getElementsByClassName('menufillerLayout')[0].style.display = 'none';
  96. document.getElementsByClassName('scannerLayout')[0].style.display = 'none';
  97. document.getElementsByClassName('altsLayout')[0].style.display = 'none';
  98.  
  99. let layouts = {
  100. 'menufiller': {
  101. layoutElem: 'menufillerLayout',
  102. name: 'menufiller'
  103. },
  104. 'scanner': {
  105. layoutElem: 'scannerLayout',
  106. name: 'scanner'
  107. },
  108. 'tabsaver': {
  109. layoutElem: 'tabsaverLayout',
  110. name: 'tabsaver'
  111. },
  112. 'alts': {
  113. layoutElem: 'altsLayout',
  114. name: 'alts'
  115. }
  116. };
  117.  
  118. window.goback = (layout) => {
  119. document.getElementsByClassName(layout)[0].classList.replace('btn-red', 'btn-blue');
  120.  
  121. switch (layout) {
  122. case 'menufiller':
  123. document.getElementsByClassName(layout)[0].innerText = 'Menu Filler';
  124. break;
  125. case 'scanner':
  126. document.getElementsByClassName(layout)[0].innerText = 'Scanner';
  127. break;
  128. case 'tabsaver':
  129. document.getElementsByClassName(layout)[0].innerText = 'Tab Saver';
  130. break;
  131. case 'alts':
  132. document.getElementsByClassName(layout)[0].innerText = 'Sockets';
  133. break;
  134. };
  135.  
  136. document.getElementsByClassName(layout + 'Layout')[0].style.display = 'none';
  137. };
  138.  
  139. let resetLayoutStyles = (layoutName) => {
  140. for (let l in layouts) {
  141. if (layouts[l].name == layoutName) {
  142. let withoutSelectedLayout = Object.keys(layouts).filter(k => k !== layouts[l].name);
  143.  
  144. document.getElementsByClassName(layouts[l].layoutElem)[0].style.display = 'block';
  145.  
  146. for (let f of withoutSelectedLayout) {
  147. document.getElementsByClassName(layouts[f].layoutElem)[0].style.display = 'none';
  148.  
  149. document.getElementsByClassName(layouts[f].name)[0].classList.replace('btn-red', 'btn-blue');
  150.  
  151. switch (layouts[f].name) {
  152. case 'menufiller':
  153. document.getElementsByClassName(layouts[f].name)[0].innerText = 'Menu Filler';
  154. break;
  155. case 'scanner':
  156. document.getElementsByClassName(layouts[f].name)[0].innerText = 'Scanner';
  157. break;
  158. case 'tabsaver':
  159. document.getElementsByClassName(layouts[f].name)[0].innerText = 'Tab Saver';
  160. break;
  161. case 'alts':
  162. document.getElementsByClassName(layouts[f].name)[0].innerText = 'Sockets';
  163. break;
  164. };
  165. };
  166.  
  167. document.getElementsByClassName(layouts[l].name)[0].classList.replace('btn-blue', 'btn-red');
  168. document.getElementsByClassName(layouts[l].name)[0].innerText = '---';
  169. };
  170. };
  171. };
  172.  
  173. document.getElementsByClassName('tabsaver')[0].addEventListener('click', () => {
  174. resetLayoutStyles('tabsaver');
  175. });
  176.  
  177. document.getElementsByClassName('scanner')[0].addEventListener('click', () => {
  178. resetLayoutStyles('scanner');
  179. });
  180.  
  181. document.getElementsByClassName('menufiller')[0].addEventListener('click', () => {
  182. resetLayoutStyles('menufiller');
  183. });
  184.  
  185. document.getElementsByClassName('alts')[0].addEventListener('click', () => {
  186. resetLayoutStyles('alts');
  187. });
  188.  
  189. window.fillerAlts = {};
  190. window.fillerCount = 0;
  191. window.refreshCount = () => document.getElementsByClassName('fillerNums')[0].innerHTML = `Filler Count: ${window.fillerCount};`;
  192.  
  193. window.sendFillerToServer = () => {
  194. let iframe = document.createElement('iframe');
  195. iframe.src = 'https://zombs.io';
  196. iframe.style.display = 'none';
  197. document.body.append(iframe);
  198.  
  199. let iframeWindow = iframe.contentWindow;
  200.  
  201. iframe.addEventListener("load", () => {
  202. let connectionOptions = game.network.connectionOptions ?? game.options.servers[document.getElementsByClassName('hud-intro-server')[0].value];
  203. iframeWindow.game.network.connectionOptions = connectionOptions;
  204. iframeWindow.game.network.connected = true;
  205.  
  206. let ws = new WebSocket(`wss://${connectionOptions.hostname}:${connectionOptions.port}`);
  207. ws.binaryType = 'arraybuffer';
  208.  
  209. ws.onopen = (data) => {
  210. ws.network = new game.networkType();
  211.  
  212. ws.network.sendPacket = (_event, _data) => {
  213. ws.send(ws.network.codec.encode(_event, _data));
  214. };
  215.  
  216. ws.network.sendRpc = (_data) => {
  217. ws.network.sendPacket(9, _data);
  218. };
  219.  
  220. ws.network.sendInput = (_data) => {
  221. ws.network.sendPacket(3, _data);
  222. };
  223.  
  224. ws.playerTick = {};
  225.  
  226. ws.onRpc = (data) => {
  227. switch (data.name) {
  228. case 'Dead':
  229. ws.network.sendInput({
  230. respawn: 1
  231. });
  232. break;
  233. };
  234. };
  235.  
  236. ws.gameUpdate = () => {
  237. ws.network.sendInput({
  238. left: 1,
  239. up: 1
  240. });
  241. };
  242.  
  243. ws.onmessage = msg => {
  244. if (new Uint8Array(msg.data)[0] == 5) {
  245. game.network.codec.decodePreEnterWorldResponse = buffer => buffer;
  246.  
  247. let data = iframeWindow.game.network.codec.decodePreEnterWorldResponse(game.network.codec.decode(msg.data));
  248.  
  249. ws.send(ws.network.codec.encode(4, {
  250. displayName: 'xdxd',
  251. extra: data.extra
  252. }));
  253. return;
  254. };
  255.  
  256. ws.data = ws.network.codec.decode(msg.data);
  257.  
  258. switch (ws.data.opcode) {
  259. case 0:
  260. for (let entityType in ws.data.entities[ws.playerTick.uid]) {
  261. if (entityType === 'uid') continue;
  262. ws.playerTick[entityType] = ws.data.entities[ws.playerTick.uid][entityType];
  263. }
  264.  
  265. ws.gameUpdate();
  266. break;
  267. case 4:
  268. ws.send(iframeWindow.game.network.codec.encode(6, {}));
  269. iframe.remove();
  270.  
  271. ws.playerTick.uid = ws.data.uid;
  272.  
  273. window.fillerCount++;
  274. window.refreshCount();
  275. window.fillerAlts[window.fillerCount] = ws;
  276. break;
  277. case 9:
  278. ws.onRpc(ws.data);
  279. break;
  280. }
  281. }
  282.  
  283. ws.onclose = e => {
  284. iframe.remove();
  285. };
  286. };
  287. });
  288. };
  289.  
  290. window.deleteFillersInServer = () => {
  291. for (let filler in window.fillerAlts) {
  292. window.fillerAlts[filler].close();
  293. window.fillerCount--;
  294. window.refreshCount();
  295. };
  296. };
  297.  
  298. window.sendafkws = () => {
  299. let iframe = document.createElement('iframe');
  300. iframe.src = 'https://zombs.io';
  301. iframe.style.display = 'none';
  302. document.body.append(iframe);
  303.  
  304. let iframeWindow = iframe.contentWindow;
  305.  
  306. let serverId = document.getElementsByClassName('altsServerId')[0].value;
  307. let psk = document.getElementsByClassName('altsPsk')[0].value;
  308.  
  309. iframe.addEventListener("load", () => {
  310. let connectionOptions = game.options.servers[serverId];
  311. iframeWindow.game.network.connectionOptions = connectionOptions;
  312. iframeWindow.game.network.connected = true;
  313.  
  314. let ws = new WebSocket(`wss://${connectionOptions.hostname}:${connectionOptions.port}`);
  315. ws.binaryType = 'arraybuffer';
  316.  
  317. ws.onopen = (data) => {
  318. ws.network = new game.networkType();
  319.  
  320. ws.network.sendPacket = (_event, _data) => {
  321. ws.send(ws.network.codec.encode(_event, _data));
  322. };
  323.  
  324. ws.network.sendRpc = (_data) => {
  325. ws.network.sendPacket(9, _data);
  326. };
  327.  
  328. ws.network.sendInput = (_data) => {
  329. ws.network.sendPacket(3, _data);
  330. };
  331.  
  332. ws.playerTick = {};
  333.  
  334. ws.onRpc = (data) => {
  335. switch (data.name) {
  336. case 'Dead':
  337. ws.network.sendInput({
  338. respawn: 1
  339. });
  340.  
  341. break;
  342. };
  343. };
  344.  
  345. ws.gameUpdate = () => {
  346. ws.network.sendInput({
  347. left: 1,
  348. up: 1
  349. });
  350. };
  351.  
  352. ws.onmessage = msg => {
  353. if (new Uint8Array(msg.data)[0] == 5) {
  354. game.network.codec.decodePreEnterWorldResponse = buffer => buffer;
  355.  
  356. let data = iframeWindow.game.network.codec.decodePreEnterWorldResponse(game.network.codec.decode(msg.data));
  357.  
  358. ws.send(ws.network.codec.encode(4, {
  359. displayName: localStorage.name,
  360. extra: data.extra
  361. }));
  362. return;
  363. };
  364.  
  365. ws.data = ws.network.codec.decode(msg.data);
  366.  
  367. switch (ws.data.opcode) {
  368. case 0:
  369. for (let entityType in ws.data.entities[ws.playerTick.uid]) {
  370. if (entityType === 'uid') continue;
  371. ws.playerTick[entityType] = ws.data.entities[ws.playerTick.uid][entityType];
  372. }
  373.  
  374. ws.gameUpdate();
  375. break;
  376. case 4:
  377. ws.send(iframeWindow.game.network.codec.encode(6, {}));
  378. iframe.remove();
  379.  
  380. ws.network.sendRpc({
  381. name: 'JoinPartyByShareKey',
  382. partyShareKey: psk
  383. });
  384.  
  385. ws.playerTick.uid = ws.data.uid;
  386. break;
  387. case 9:
  388. ws.onRpc(ws.data);
  389. break;
  390. }
  391. }
  392.  
  393. ws.onclose = e => {
  394. iframe.remove();
  395. };
  396. };
  397. });
  398. };
  399.  
  400. document.getElementsByClassName("hud-intro-form")[0].insertAdjacentHTML("beforeend", `<button class="btn hud-intro-play" onclick="window.ssfi();">Scan Server</button>`);
  401.  
  402. let scanning = false;
  403.  
  404. window.ssfi = () => {
  405. if (scanning == true) return;
  406.  
  407. scanning = true;
  408.  
  409. let ssrs = document.getElementById("ssrs");
  410. ssrs.innerHTML = `<strong>Loading...</strong>`;
  411.  
  412. let selected = document.getElementsByClassName("hud-intro-server")[0].value;
  413. let server = game.options.servers[selected];
  414.  
  415. let hostname = server.hostname;
  416. let url = `ws://${hostname}:80/`;
  417.  
  418. game.network.connectionOptions = {
  419. hostname: hostname
  420. };
  421. game.network.connected = true;
  422.  
  423. let ws = new WebSocket(url);
  424.  
  425. ws.binaryType = "arraybuffer";
  426.  
  427. const loadLbPacket = () => {
  428. for (let i = 0; i < 30; i++)
  429. ws.send(
  430. new Uint8Array([3, 17, 123, 34, 117, 112, 34, 58, 49, 44, 34, 100, 111, 119, 110, 34, 58, 48, 125])
  431. );
  432.  
  433. ws.send(
  434. new Uint8Array([7, 0])
  435. );
  436. ws.send(
  437. new Uint8Array([9, 6, 0, 0, 0, 126, 8, 0, 0, 108, 27, 0, 0, 146, 23, 0, 0, 82, 23, 0, 0, 8, 91, 11, 0, 8, 91, 11, 0, 0, 0, 0, 0, 32, 78, 0, 0, 76, 79, 0, 0, 172, 38, 0, 0, 120, 155, 0, 0, 166, 39, 0, 0, 140, 35, 0, 0, 36, 44, 0, 0, 213, 37, 0, 0, 100, 0, 0, 0, 120, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, 6, 0, 0])
  438. );
  439. };
  440.  
  441. ws.onopen = (data) => {
  442. ws.network = new game.networkType();
  443.  
  444. ws.network.sendPacket = (e, t) => {
  445. ws.send(ws.network.codec.encode(e, t));
  446. };
  447.  
  448. ws.onRpc = (data) => {
  449. if (data.name === "SetPartyList") {
  450. ws.parties = data.response;
  451. };
  452.  
  453. if (data.name === "Leaderboard") {
  454. ws.network.sendRpc({
  455. name: "JoinPartyByShareKey",
  456. partyShareKey: "aaaaaaaaaaaaaaaaaaaa"
  457. });
  458.  
  459. if (data.response.length > 1) {
  460. window.appSsrs({
  461. server: server,
  462. population: ws.pop,
  463. leaderboard: data.response,
  464. parties: ws.parties
  465. });
  466. return;
  467. };
  468.  
  469. loadLbPacket();
  470. };
  471. };
  472.  
  473. ws.onmessage = msg => {
  474. let data = ws.network.codec.decode(msg.data);
  475.  
  476. switch (data.opcode) {
  477. case 5:
  478. ws.network.sendPacket(4, {
  479. displayName: `ø`,
  480. extra: data.extra
  481. });
  482. break;
  483. case 4:
  484. ws.network.sendPacket(6, {});
  485.  
  486. ws.network.sendPacket(3, {
  487. left: 1,
  488. up: 1
  489. });
  490.  
  491. ws.network.sendInput({
  492. mouseMovedWhileDown: 0
  493. });
  494.  
  495. ws.network.sendInput({
  496. space: 0
  497. });
  498.  
  499. ws.network.sendInput({
  500. space: 1
  501. });
  502.  
  503. ws.pop = data.players - 1;
  504.  
  505. break;
  506. case 9:
  507. ws.onRpc(data);
  508. break;
  509. };
  510. };
  511. };
  512. };
  513.  
  514. let checkedServers = {};
  515.  
  516. window.appSsrs = res => {
  517. game.network.connected = false;
  518.  
  519. let ssrs = document.getElementById("ssrs");
  520. ssrs.style.overflow = "scroll";
  521. ssrs.style.height = "175px";
  522.  
  523. let check = () => {
  524. let flaggedPlayers = [];
  525. let checked = {};
  526. let returnStr = '';
  527.  
  528. res.leaderboard.map(o => {
  529. for (let badUser of flaggedPlayers) {
  530. if (badUser == o.name) {
  531. checked[o.name] = {
  532. wave: o.wave.toLocaleString('en'),
  533. name: o.name
  534. };
  535. };
  536. };
  537. });
  538.  
  539. for (let a in checked)
  540. returnStr += ` % ${checked[a].name} - Wave: ${checked[a].wave}`;
  541.  
  542. return returnStr || ' None';
  543. };
  544.  
  545. ssrs.innerHTML = `
  546. <p>Population: ${res.population}</p>
  547. <h1>Leaderboard</h1>
  548. <hr />
  549. <div>
  550. ${res.leaderboard.map(lb => {
  551. return `
  552. <p>Rank: #${lb.rank + 1},
  553. Nickname: ${lb.name},
  554. Wave: ${lb.wave.toLocaleString("en")},
  555. Score: ${lb.score}</p>
  556. `;
  557. }).join("<hr />")}
  558. </div>
  559. <hr />
  560. <h1>Parties</h1>
  561. ${res.parties.map(p => {
  562. return `
  563. <p>Name: ${p.partyName},
  564. ID: ${p.partyId},
  565. Members: ${p.memberCount},
  566. Public: ${p.isOpen ? 'Open' : 'Closed'}</p>
  567. `;
  568. }).join("<hr />")}
  569. <div>
  570. </div>
  571. `;
  572.  
  573. let serverId = res.server.id;
  574. let serverElem = game.ui.components.Intro.serverElem;
  575.  
  576. for (let optgroup in serverElem.children) {
  577. for (let option in serverElem.children[optgroup].children) {
  578. let server = serverElem.children[optgroup].children[option];
  579. if (server && server.value == serverId) {
  580. if (checkedServers[serverId]) continue;
  581.  
  582. checkedServers[serverId] = true;
  583.  
  584. window.checkedServers = checkedServers;
  585.  
  586. let p = server.textContent;
  587. let o = p.indexOf('[') - 1;
  588. let u = Array.from(p);
  589. let y = '';
  590.  
  591. for (let c in u) {
  592. if (c >= o) delete u[c];
  593.  
  594. y = u.join('');
  595. };
  596.  
  597. server.textContent = y + ' => Pop: ' + res.population + 'ARTEMIS, player | Flagged Players: ' + check();
  598. }
  599. };
  600. };
  601. };
  602.  
  603. document.getElementsByClassName('hud-chat')[0].style.width = "auto";
  604. document.getElementsByClassName('hud-chat')[0].style.minWidth = "520px";
  605.  
  606. const request = new XMLHttpRequest();
  607.  
  608. request.onreadystatechange = function() {
  609. if (this.readyState == 4 && this.status == 200) {
  610. document.getElementsByClassName("hud-intro-wrapper")[0].childNodes[3].innerHTML = `People in game: ${JSON.parse(request.responseText).players}/${JSON.parse(request.responseText).capacity} [${(JSON.parse(request.responseText).players / JSON.parse
  611. (request.responseText).capacity * 100).toFixed(2)}%]`;
  612.  
  613. let servers = ["US East", "US West", "Europe", "Asia", "Australia", "South America"];
  614.  
  615. for (let i in servers) {
  616. game.ui.components.Intro.serverElem.children[i].setAttribute("label", `${servers[i]}: Population: ${JSON.parse(request.responseText).regions[servers[i]].players} / ${JSON.parse(request.responseText).regions[servers[i]].capacity}`);
  617. };
  618. };
  619. };
  620.  
  621. request.open("GET", "http://zombs.io/capacity", true);
  622. request.send();
  623.  
  624. game.network.addRpcHandler("SetPartyList", parties => {
  625. let serverPop = 0;
  626.  
  627. for (let party of parties) {
  628. serverPop += party.memberCount;
  629. };
  630.  
  631. document.getElementsByClassName("hud-party-server")[0].innerHTML = `${serverPop}/32 <small>${game.network.connectionOptions.name}</small>`;
  632. });
  633.  
  634. let css = `
  635. .btn:hover {
  636. cursor: pointer;
  637. }
  638. .btn-blue {
  639. background-color: #144b7a;
  640. }
  641. .btn-blue:hover .btn-blue:active {
  642. background-color: #4fa7ee;
  643. }
  644. .box {
  645. display: block;
  646. width: 100%;
  647. height: 50px;
  648. line-height: 34px;
  649. padding: 8px 14px;
  650. margin: 0 0 10px;
  651. background: #eee;
  652. border: 0;
  653. font-size: 14px;
  654. box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
  655. border-radius: 4px;
  656. }
  657. .hud-intro::before {
  658. background-image: url(https://images.wallpaperscraft.com/image/single/mountains_mountain_range_peaks_149574_1920x1200.jpg);
  659. background-size: cover;
  660. }
  661. .hud-intro .hud-intro-form .hud-intro-server {
  662. display: block;
  663. line-height: unset;
  664. border: 3px solid white;
  665. background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url(https://cdn.discordapp.com/attachments/854376044522242059/925743376505118720/light2.webp);
  666. }
  667. .hud-intro .hud-intro-form .hud-intro-name {
  668. display: block;
  669. border: 3px solid white;
  670. background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url(https://cdn.discordapp.com/attachments/854376044522242059/925743376505118720/light2.webp);
  671. }
  672. .hud-intro .hud-intro-form .hud-intro-play {
  673. display: block;
  674. background: #eee;
  675. font-size: 0.9rem;
  676. color: black;
  677. padding: 1px;
  678. line-height: unset;
  679. background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url(https://i.pinimg.com/564x/75/10/d1/7510d144335a2d2ed277c00df430f6a7.jpg);
  680. font-family: Arial;
  681. }
  682. .longbtn {
  683. display: block;
  684. width: 100%;
  685. height: 50px;
  686. line-height: 50px;
  687. }
  688. .disabledBtn {
  689. opacity: 0.6;
  690. cursor: not-allowed;
  691. display: inline-block;
  692. height: 40px;
  693. line-height: 40px;
  694. padding: 0 20px;
  695. background: #444;
  696. color: #eee;
  697. border: 0;
  698. font-size: 14px;
  699. vertical-align: top;
  700. text-align: center;
  701. text-decoration: none;
  702. text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4);
  703. box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
  704. border-radius: 4px;
  705. transition: all 0.15s ease-in-out;
  706. }
  707. .btn1 {
  708. display: inline-block;
  709. height: 20px;
  710. line-height: 15px;
  711. padding: 0 20px;
  712. color: #eee;
  713. x border: 0;
  714. font-size: 10px;
  715. vertical-align: top;
  716. text-align: center;
  717. text-decoration: none;
  718. border-radius: 4px;
  719. transition: all 5s ease-in-out;
  720. }
  721. .btn1:hover {
  722. cursor: pointer;
  723. }
  724. .btn1-blue {
  725. background-color: #144b7a;
  726. }
  727. .btn1-blue:hover .btn1-blue:active {
  728. background-color: #4fa7ee;
  729. }
  730. a {
  731. text-decoration: none;
  732. }
  733. .hud-menu-party .hud-party-tag {
  734. width: 120px;
  735. }
  736. .hud-menu-party .hud-party-share {
  737. width: 280px;
  738. }
  739. #hud-menu-party {
  740. top: 51%;
  741. width: 610px;
  742. height: 480px;
  743. background-color: rgb(61 115 157 / 55%);
  744. border: 5px solid white;
  745. background-image: url("https://images.wallpaperscraft.com/image/single/mountains_mountain_range_peaks_149574_1920x1200.jpg");
  746. }
  747. .hud-menu-party .hud-party-grid .hud-party-link.is-active {
  748. background: lightblue !important;
  749. }
  750. .hud-menu-party .hud-party-visibility {
  751. margin: 0 0 0 10px;
  752. width: 125px;
  753. }
  754. .hud-popup-overlay .hud-popup-confirmation .hud-confirmation-actions .btn.btn-green {
  755. background: #649db0;
  756. }
  757. #hud-menu-shop {
  758. top: 54.5%;
  759. left: 50.5%;
  760. width: 690px;
  761. height: 500px;
  762. background-color: rgb(61 115 157 / 55%);
  763. border: 5px solid white;
  764. margin: -350px 0 0 -350px;
  765. padding: 20px 20px 20px 20px;
  766. z-index: 20;
  767. background-image: url("https://images.wallpaperscraft.com/image/single/mountains_mountain_range_peaks_149574_1920x1200.jpg");
  768. }
  769. .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip {
  770. background: #649db0;
  771. }
  772. .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip:hover, .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip:active {
  773. background: #1cb2c9;
  774. }
  775. .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip.is-disabled {
  776. background: none;
  777. }
  778. .hud-menu-shop .hud-shop-grid .hud-shop-item[data-item=HatComingSoon] .hud-shop-item-coming-soon {
  779. background: none;
  780. }
  781. .hud-chat .hud-chat-message {
  782. white-space: unset;
  783. word-break: break-word;
  784. }
  785. .hud-chat .hud-chat-messages {
  786. max-height: 340px;
  787. min-height: 35px;
  788. }
  789. #hud-menu-settings {
  790. background-image: url("https://images.wallpaperscraft.com/image/single/mountains_mountain_range_peaks_149574_1920x1200.jpg");
  791. }
  792. .hud .box {
  793. display: block;
  794. width: 100%;
  795. height: 50px;
  796. line-height: 34px;
  797. padding: 8px 14px;
  798. margin: 0 0 10px;
  799. background: #eee;
  800. border: 0;
  801. font-size: 14px;
  802. box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
  803. border-radius: 4px;
  804. }
  805. .codeIn, .joinOut {
  806. height: 50px;
  807. }
  808. .hud-menu-raid{
  809. display: none;
  810. position: fixed;
  811. top: 48%;
  812. left: 50%;
  813. width: 650px;
  814. height: 560px;
  815. margin: -270px 0 0 -300px;
  816. padding: 20px;
  817. background: rgba(0, 0, 0, 0.6);
  818. color: #eee;
  819. border-radius: 4px;
  820. z-index: 15;
  821. background-image: url("https://images.wallpaperscraft.com/image/single/mountains_mountain_range_peaks_149574_1920x1200.jpg");
  822. }
  823. .hud-menu-raid h3 {
  824. display: block;
  825. margin: 0;
  826. line-height: 20px;
  827. }
  828. .hud-menu-raid .hud-raid-grid {
  829. display: block;
  830. height: 440px;
  831. padding: 0px;
  832. margin-top: 6px;
  833. }
  834. .hud-raid-grid {
  835. overflow: auto ;
  836. }
  837. .hud-spell-icons .hud-spell-icon[data-type="raid"]::before {
  838. background-image: url("https://i.pinimg.com/564x/b0/d3/38/b0d338dbf286e551cc0b92fc98ab9763.jpg");
  839. }
  840. .hud-menu-raid .hud-the-tab {
  841. position: relative;
  842. height: 60px;
  843. line-height: 40px;
  844. margin: 20px;
  845. border: 0px solid rgb(0, 0, 0, 0);
  846. }
  847. .hud-menu-raid .hud-the-tab {
  848. display: block;
  849. float: left;
  850. margin: 0 1px 0 0;
  851. font-size: 14px;
  852. background: rgba(0, 0, 0, 0.4);
  853. color: rgba(255, 255, 255, 0.4);
  854. transition: all 0.15s ease-in-out;
  855. }
  856. .hud-menu-raid .hud-the-tab:hover {
  857. background: rgba(0, 0, 0, 0.2);
  858. color: #eee;
  859. cursor: pointer;
  860. }
  861. .hud-raid-menus {
  862. border: 3px solid #222222;
  863. background: linear-gradient(#100c4d, #040317);
  864. height: 100%;
  865. text-align: center;
  866. width: 100px;
  867. float: left;
  868. }
  869. .mbtn {
  870. width: 100%;
  871. height: 20%;
  872. border: none;
  873. font-size: 100%;
  874. color: white;
  875. margin: 0px;
  876. background-color: rgba(0, 0, 0, 0);
  877. }
  878. .mbtn:hover, .activeM {
  879. background-color: #171369;
  880. }
  881. .mbtn, .hud-raid-menus {
  882. border-radius: 15px;
  883. }
  884. `;
  885.  
  886. let styles = document.createElement("style");
  887. styles.appendChild(document.createTextNode(css));
  888. document.head.appendChild(styles);
  889. styles.type = "text/css";
  890.  
  891. let spell = document.createElement("div");
  892. spell.classList.add("hud-spell-icon");
  893. spell.setAttribute("data-type", "raid");
  894. spell.classList.add("hud-raid-icon");
  895. document.getElementsByClassName("hud-spell-icons")[0].appendChild(spell);
  896.  
  897. let modHTML = `
  898. <div class="hud-menu-raid">
  899. <div class='hud-raid-menus'>
  900. <button class="btn-blue SE mbtn">Utils</button>
  901. <br />
  902. <button class="btn-blue SI mbtn">Utils (2)</button>
  903. <br />
  904. <button class="btn-blue AB mbtn">Alts</button>
  905. <br />
  906. <button class="btn-blue BS mbtn">Bases</button>
  907. <br />
  908. <button class="btn-blue RE mbtn">Renderer</button>
  909. <br />
  910. </div>
  911. <div class="hud-raid-grid"></div>
  912. </div>
  913. `;
  914.  
  915. document.body.insertAdjacentHTML("afterbegin", modHTML);
  916.  
  917. let raidMenu = document.getElementsByClassName("hud-menu-raid")[0];
  918.  
  919. document.getElementsByClassName("hud-raid-icon")[0].addEventListener("click", function() {
  920. if (raidMenu.style.display == "none" || raidMenu.style.display == "") {
  921. raidMenu.style.display = "block";
  922. } else {
  923. raidMenu.style.display = "none";
  924. };
  925. });
  926.  
  927. window.addEventListener("keydown", e => {
  928. switch (e.keyCode) {
  929. case 220:
  930. /* key \ */
  931. if (game.world.inWorld) document.getElementsByClassName("hud-raid-icon")[0].click();
  932. };
  933. });
  934.  
  935. let _menu = document.getElementsByClassName("hud-menu-icon");
  936. let _spell = document.getElementsByClassName("hud-spell-icon");
  937.  
  938. let allIcon = [
  939. _menu[0],
  940. _menu[1],
  941. _menu[2],
  942. _spell[0],
  943. _spell[1]
  944. ];
  945.  
  946. allIcon.forEach(function(elem) {
  947. elem.addEventListener("click", function() {
  948. if (raidMenu.style.display == "block") {
  949. raidMenu.style.display = "none";
  950. };
  951. });
  952. });
  953.  
  954. document.getElementsByClassName("SE")[0].addEventListener("click", function() {
  955. displayAllToNone();
  956.  
  957. document.getElementsByClassName("SE")[0].classList.add("activeM");
  958. document.getElementsByClassName("etc.Class")[0].innerText = "Utils";
  959.  
  960. for (let i = 0; i < 50; i++) {
  961. if (document.getElementsByClassName(i + "i")[0]) {
  962. document.getElementsByClassName(i + "i")[0].style.display = "";
  963. };
  964. };
  965. });
  966.  
  967. document.getElementsByClassName("SI")[0].addEventListener("click", function() {
  968. displayAllToNone();
  969.  
  970. document.getElementsByClassName("SI")[0].classList.add("activeM");
  971. document.getElementsByClassName("etc.Class")[0].innerText = "Utils (2)";
  972.  
  973. for (let i = 0; i < 50; i++) {
  974. if (document.getElementsByClassName(i + "i5")[0]) {
  975. document.getElementsByClassName(i + "i5")[0].style.display = "";
  976. };
  977. };
  978. });
  979.  
  980. document.getElementsByClassName("AB")[0].addEventListener("click", function() {
  981. displayAllToNone();
  982.  
  983. document.getElementsByClassName("AB")[0].classList.add("activeM");
  984. document.getElementsByClassName("etc.Class")[0].innerText = "Alts";
  985.  
  986. for (let i = 0; i < 50; i++) {
  987. if (document.getElementsByClassName(i + "i2")[0]) {
  988. document.getElementsByClassName(i + "i2")[0].style.display = "";
  989. };
  990. };
  991. });
  992.  
  993. document.getElementsByClassName("BS")[0].addEventListener("click", function() {
  994. displayAllToNone();
  995.  
  996. document.getElementsByClassName("BS")[0].classList.add("activeM");
  997. document.getElementsByClassName("etc.Class")[0].innerText = "Bases";
  998.  
  999. for (let i = 0; i < 50; i++) {
  1000. if (document.getElementsByClassName(i + "i3")[0]) {
  1001. document.getElementsByClassName(i + "i3")[0].style.display = "";
  1002. };
  1003. };
  1004. });
  1005.  
  1006. document.getElementsByClassName("RE")[0].addEventListener("click", function() {
  1007. displayAllToNone();
  1008.  
  1009. document.getElementsByClassName("RE")[0].classList.add("activeM");
  1010. document.getElementsByClassName("etc.Class")[0].innerText = "Renderer";
  1011.  
  1012. for (let i = 0; i < 50; i++) {
  1013. if (document.getElementsByClassName(i + "i4")[0]) {
  1014. document.getElementsByClassName(i + "i4")[0].style.display = "";
  1015. };
  1016. };
  1017. });
  1018.  
  1019. // key to open and close
  1020. function modm() {
  1021. if (raidMenu.style.display == "none" || raidMenu.style.display == "") {
  1022. raidMenu.style.display = "block";
  1023. } else {
  1024. raidMenu.style.display = "none";
  1025. };
  1026. };
  1027.  
  1028. function displayAllToNone() {
  1029. document.getElementsByClassName("SE")[0].classList.remove("activeM");
  1030. document.getElementsByClassName("SI")[0].classList.remove("activeM");
  1031. document.getElementsByClassName("AB")[0].classList.remove("activeM");
  1032. document.getElementsByClassName("BS")[0].classList.remove("activeM");
  1033. document.getElementsByClassName('RE')[0].classList.remove("activeM");
  1034.  
  1035. for (let i = 0; i < 50; i++) {
  1036. if (document.getElementsByClassName(i + "i")[0]) {
  1037. document.getElementsByClassName(i + "i")[0].style.display = "none";
  1038. };
  1039. };
  1040.  
  1041. for (let i = 0; i < 50; i++) {
  1042. if (document.getElementsByClassName(i + "i2")[0]) {
  1043. document.getElementsByClassName(i + "i2")[0].style.display = "none";
  1044. };
  1045. };
  1046.  
  1047. for (let i = 0; i < 50; i++) {
  1048. if (document.getElementsByClassName(i + "i3")[0]) {
  1049. document.getElementsByClassName(i + "i3")[0].style.display = "none";
  1050. };
  1051. };
  1052.  
  1053. for (let i = 0; i < 50; i++) {
  1054. if (document.getElementsByClassName(i + "i4")[0]) {
  1055. document.getElementsByClassName(i + "i4")[0].style.display = "none";
  1056. };
  1057. };
  1058.  
  1059. for (let i = 0; i < 50; i++) {
  1060. if (document.getElementsByClassName(i + "i5")[0]) {
  1061. document.getElementsByClassName(i + "i5")[0].style.display = "none";
  1062. };
  1063. };
  1064. };
  1065.  
  1066. document.getElementsByClassName("hud-raid-grid")[0].innerHTML = `
  1067. <div style="text-align:center"><br>
  1068. <hr />
  1069. <h3 class="etc.Class">raid</h3>
  1070. <hr />
  1071. <button class="btn btn-blue 1i" style="width: 45%;">Sell All!</button>
  1072.  
  1073. <button class="btn btn-blue 2i" style="width: 45%;">Sell Walls!</button>
  1074.  
  1075. <button class="btn btn-blue 3i" style="width: 45%;">Sell Doors!</button>
  1076.  
  1077. <button class="btn btn-blue 4i" style="width: 45%;">Sell Traps!</button>
  1078.  
  1079. <button class="btn btn-blue 5i" style="width: 45%;">Sell Arrows!</button>
  1080.  
  1081. <button class="btn btn-blue 6i" style="width: 45%;">Sell Mages!</button>
  1082.  
  1083. <button class="btn btn-blue 7i" style="width: 45%;">Sell Pets!</button>
  1084.  
  1085. <button class="btn btn-blue 8i" style="width: 45%;">Activate Upgrade All!</button>
  1086.  
  1087. <button class="btn btn-blue 9i" style="width: 45%;">Activate AHRC!</button>
  1088.  
  1089. <button class="btn btn-blue 10i" style="width: 45%;">Enable Autobow</button>
  1090.  
  1091. <button class="btn btn-blue 13i" style="width: 45%;">Enable Auto Accepter</button>
  1092.  
  1093. <button class="btn btn-blue 14i" style="width: 45%;">Enable Auto Kicker</button>
  1094.  
  1095. <br class="16i"><br class="17i">
  1096.  
  1097. <button class="btn btn-blue 0i5" style="width: 45%;">Can Members Sell!</button>
  1098.  
  1099. <button class="btn btn-blue 1i5" style="width: 45%;"">Kick All Members!</button>
  1100.  
  1101. <button class="btn btn-red 8i5" style="width: 45%;">!(Auto heal and Pet Heal)</button>
  1102.  
  1103. <button class="btn btn-red 9i5" style="width: 45%;">!(Revive and Evolve Pets)</button>
  1104.  
  1105. <button class="btn btn-blue 5i5" style="width: 45%;">Enable Send Info!</button>
  1106.  
  1107. <button class="btn btn-blue 10i5" style="width: 45%;">Clear Messages!</button>
  1108.  
  1109. <button class="btn btn-blue 11i5" style="width: 45%;">Enable Screenshot Mode</button>
  1110.  
  1111. <button class="btn btn-blue 12i5" style="width: 45%;">Enable Debug</button>
  1112.  
  1113. <button class="btn btn-blue 13i5" style="width: 45%;">Enable AutoAim!</button>
  1114. <select id="aimOptions" class="btn btn-blue 14i5"style="width: 45%;"><option value="pl" selected>Players</option><option value="zo">Zombies</option></select>
  1115.  
  1116. <br class="15i5"><br class="16i5">
  1117.  
  1118. <button class="btn btn-blue 0i2">Send Alt!</button>
  1119.  
  1120. <button class="btn btn-blue 1i2">Enable Aim!</button>
  1121.  
  1122. <button class="btn btn-blue 2i2">Enable Player Follower!</button>
  1123.  
  1124. <button class="btn btn-blue 10i2 emm">Enable MouseMove!</button>
  1125.  
  1126. <br class="23i2"><br class="24i2">
  1127.  
  1128. <button class="btn btn-blue 3i2">Delete Alt!</button>
  1129.  
  1130. <input type="number" class="btn 4i2" style='width: 125px;' placeholder="Alt Id">
  1131.  
  1132. <button class="btn btn-blue 7i2">Delete All Alts!</button>
  1133.  
  1134. <button class="btn btn-blue 28i2">Enable Auto Raid!</button>
  1135.  
  1136. <br class="5i2"><br class="6i2">
  1137.  
  1138. <button class="btn btn-blue 8i2">Show Resources!</button>
  1139.  
  1140. <button class="btn btn-blue 21i2">Control Alts!</button>
  1141.  
  1142. <button class="btn btn-blue 30i2">Lock Pos!</button>
  1143.  
  1144. <br class="9i2"><br class="10i2">
  1145.  
  1146. <button class="btn btn-blue 11i2">Start Aito!</button>
  1147.  
  1148. <button class="btn btn-blue 12i2">Activate Base Finder!</button>
  1149.  
  1150. <button class="btn btn-blue 17i2">Clear Base Objects</button>
  1151.  
  1152. <br class="14i2"><br class="15i2">
  1153.  
  1154. <input type="text" value="1" class="btn 16i2" placeholder="Player Rank" style="width: 25%;">
  1155.  
  1156. <button class="btn btn-blue 18i2">Activate Player Finder</button>
  1157.  
  1158. <button class="btn btn-blue 25i2">Follow Position</button>
  1159.  
  1160. <br class="19i2"><br class="20i2">
  1161.  
  1162. <button class="btn btn-blue 0i3" onclick="RecordBase();">Record Base!</button>
  1163.  
  1164. <button class="btn btn-blue 1i3" onclick="buildRecordedBase();">Build Recorded Base!</button>
  1165.  
  1166. <button class="btn btn-blue 2i3" onclick="DeleteRecordedbase();">Delete Recorded Base!</button>
  1167.  
  1168. <br class="3i3"><br class="4i3">
  1169.  
  1170. <button class="btn btn-blue 5i3" onclick="RecordBase2();">Record Base (2)!</button>
  1171.  
  1172. <button class="btn btn-blue 6i3" onclick="buildRecordedBase2();">Build Recorded Base (2)!</button>
  1173.  
  1174. <button class="btn btn-blue 7i3" onclick="DeleteRecordedbase2();">Delete Recorded Base (2)!</button>
  1175.  
  1176. <br class="8i3"><br class="9i3">
  1177.  
  1178. <button class="btn btn-blue 10i3" onclick="RecordBase3();">Record Base (3)!</button>
  1179.  
  1180. <button class="btn btn-blue 11i3" onclick="buildRecordedBase3();">Build Recorded Base (3)!</button>
  1181.  
  1182. <button class="btn btn-blue 12i3" onclick="DeleteRecordedbase3();">Delete Recorded Base (3)!</button>
  1183.  
  1184. <br class="13i3"><br class="14i3">
  1185.  
  1186. <button class="btn btn-blue 15i3" onclick="saveBase();">Save Towers!</button>
  1187.  
  1188. <button class="btn btn-blue 16i3" onclick="buildSavedBase();">Build Saved Towers!</button>
  1189.  
  1190. <br class="17i3"><br class="18i3">
  1191.  
  1192. <button class="btn btn-blue 21i3" onclick="autobuildtoggle();">Enable Auto Build Saved Towers!</button>
  1193.  
  1194. <button class="btn btn-blue 26i3" onclick="upgradealltoggle();">Enable Upgrade All!</button>
  1195.  
  1196. <br class="28i3"><br class="29i3">
  1197.  
  1198. <input type="text" class="btn 30i3" placeholder='Click "Save Towers!" and build your favorite base to get their codes.' style="width: 100%" disabled="true">
  1199.  
  1200. <br class="31i3"><br class="32i3">
  1201.  
  1202. <button class='btn btn-blue 0i4'>Hide Ground</button>
  1203.  
  1204. <button class='btn btn-blue 1i4'>Show Projectiles</button>
  1205.  
  1206. <button class='btn btn-blue 2i4'>Hide Npcs</button>
  1207.  
  1208. <br class='3i4'><br class='4i4'>
  1209.  
  1210. <button class='btn btn-blue 5i4'>Hide Environment</button>
  1211.  
  1212. <button class='btn btn-blue 6i4'>Show Grids</button>
  1213.  
  1214. <br class='7i4'><br class='8i4'>
  1215.  
  1216. <button class='btn btn-blue 9i4'>Hide Scene</button>
  1217.  
  1218. <button class='btn btn-blue 10i4'>Stop Game</button>
  1219.  
  1220. <br class='11i4><br class='12i4>
  1221. `;
  1222.  
  1223. displayAllToNone();
  1224.  
  1225. let Main1Keys = true;
  1226. let Main2Keys = true;
  1227. let Main3Keys = true;
  1228.  
  1229. let upgradeAll = false;
  1230. let AHRC = false;
  1231. let autobow = false;
  1232. let accept = false;
  1233. let kick = false;
  1234. let heal = true;
  1235. let revive = true;
  1236. let clearMsgs = false;
  1237. let autobuild = false;
  1238. let upgradeAll2 = false;
  1239. let petTimeout = false;
  1240. let screenshotMode = false;
  1241. let debugMode = false;
  1242. let myPlayer;
  1243. let myPet;
  1244. let shouldHealPet;
  1245. let autorss;
  1246. let uid;
  1247. let shouldautoaim = false;
  1248. var getRss = false;
  1249. var allowed1 = true;
  1250. let entities = {};
  1251. let players = {};
  1252. let buildings = {};
  1253. let stopped = false;
  1254.  
  1255. let msg;
  1256.  
  1257. var Bowtier = 0;
  1258.  
  1259. let packets = {
  1260. 0: "PACKET_ENTITY_UPDATE",
  1261. 1: "PACKET_PLAYER_COUNTER_UPDATE",
  1262. 2: "PACKET_SET_WORLD_DIMENSIONS",
  1263. 3: "PACKET_INPUT",
  1264. 4: "PACKET_ENTER_WORLD",
  1265. 7: "PACKET_PING",
  1266. 9: "PACKET_RPC",
  1267. PACKET_ENTER_WORLD: 4,
  1268. PACKET_ENTITY_UPDATE: 0,
  1269. PACKET_INPUT: 3,
  1270. PACKET_PING: 7,
  1271. PACKET_PLAYER_COUNTER_UPDATE: 1,
  1272. PACKET_RPC: 9,
  1273. PACKET_SET_WORLD_DIMENSIONS: 2
  1274. };
  1275.  
  1276. window.count = 0;
  1277.  
  1278. function msToTime(s) {
  1279. function pad(n, z) {
  1280. z = z || 2;
  1281. return ('00' + n).slice(-z);
  1282. }
  1283.  
  1284. var ms = s % 1000;
  1285. s = (s - ms) / 1000;
  1286. var secs = s % 60;
  1287. s = (s - secs) / 60;
  1288. var mins = s % 60;
  1289. var hrs = (s - mins) / 60;
  1290.  
  1291. return pad(hrs) + ':' + pad(mins) + ':' + pad(secs) + '.' + pad(ms, 3);
  1292. };
  1293.  
  1294. document.addEventListener('keyup', function(e) {
  1295. if (e.key === "Enter" && game.ui.playerTick.dead === 1) {
  1296. game.ui.components.Chat.startTyping();
  1297. };
  1298. });
  1299.  
  1300. function findNearestAltToStash() {
  1301. if (window.allSockets.length < 1) return;
  1302.  
  1303. let altArray = [];
  1304. let targetGoldStash = Object.values(game.world.entities).find(building => building.fromTick.model == "GoldStash");
  1305. if (targetGoldStash.targetTick.partyId == game.ui.playerPartyId) return;
  1306.  
  1307. for (let i in window.allSockets) {
  1308. if (!window.allSockets[i].myPlayer.dead) altArray.push(window.allSockets[i].myPlayer);
  1309. };
  1310.  
  1311. if (altArray.length < 1) return;
  1312.  
  1313. altArray.sort((a, b) => measureDistance(targetGoldStash.fromTick.position, a.position) - measureDistance(targetGoldStash.fromTick.position, b.position));
  1314.  
  1315. return altArray[0];
  1316. };
  1317.  
  1318. window.findNearestAlt = findNearestAltToStash;
  1319.  
  1320. // Renderer
  1321.  
  1322. document.getElementsByClassName('0i4')[0].addEventListener('click', () => {
  1323. let on = game.renderer.ground.isVisible;
  1324.  
  1325. if (on) {
  1326. game.renderer.ground.setVisible(!on);
  1327.  
  1328. document.getElementsByClassName('0i4')[0].innerText = 'Show Ground';
  1329. } else if (!on) {
  1330. game.renderer.ground.setVisible(!on);
  1331.  
  1332. document.getElementsByClassName('0i4')[0].innerText = 'Hide Ground';
  1333. };
  1334. });
  1335.  
  1336. document.getElementsByClassName('1i4')[0].addEventListener('click', () => {
  1337. let on = game.renderer.projectiles.isVisible;
  1338.  
  1339. if (on) {
  1340. game.renderer.projectiles.setVisible(!on);
  1341.  
  1342. document.getElementsByClassName('1i4')[0].innerText = 'Show Projectiles';
  1343. } else if (!on) {
  1344. game.renderer.projectiles.setVisible(!on);
  1345.  
  1346. document.getElementsByClassName('1i4')[0].innerText = 'Hide Projectiles';
  1347. };
  1348. });
  1349.  
  1350. document.getElementsByClassName('2i4')[0].addEventListener('click', () => {
  1351. let on = game.renderer.npcs.isVisible;
  1352.  
  1353. if (on) {
  1354. game.renderer.npcs.setVisible(!on);
  1355.  
  1356. document.getElementsByClassName('2i4')[0].innerText = 'Show Npcs';
  1357. } else if (!on) {
  1358. game.renderer.npcs.setVisible(!on);
  1359.  
  1360. document.getElementsByClassName('2i4')[0].innerText = 'Hide Npcs';
  1361. };
  1362. });
  1363.  
  1364. document.getElementsByClassName('5i4')[0].addEventListener('click', () => {
  1365. let on = game.renderer.scenery.isVisible;
  1366.  
  1367. if (on) {
  1368. game.renderer.scenery.setVisible(!on);
  1369.  
  1370. document.getElementsByClassName('5i4')[0].innerText = 'Show Environment';
  1371. } else if (!on) {
  1372. game.renderer.scenery.setVisible(!on);
  1373.  
  1374. document.getElementsByClassName('5i4')[0].innerText = 'Hide Environment';
  1375. };
  1376. });
  1377.  
  1378. document.getElementsByClassName('6i4')[0].addEventListener('click', () => {
  1379. if (game.script.grouping.isVisible) {
  1380. game.script.grouping.hide();
  1381.  
  1382. document.getElementsByClassName('6i4')[0].innerText = 'Show Grids';
  1383. } else if (!game.script.grouping.isVisible) {
  1384. game.script.grouping.show();
  1385.  
  1386. document.getElementsByClassName('6i4')[0].innerText = 'Hide Grids';
  1387. };
  1388. });
  1389.  
  1390. document.getElementsByClassName('9i4')[0].addEventListener('click', () => {
  1391. let on = game.renderer.scene.isVisible;
  1392.  
  1393. if (on) {
  1394. game.renderer.scene.setVisible(!on);
  1395.  
  1396. document.getElementsByClassName('9i4')[0].innerText = 'Show Scene';
  1397. } else if (!on) {
  1398. game.renderer.scene.setVisible(!on);
  1399.  
  1400. document.getElementsByClassName('9i4')[0].innerText = 'Hide Scene';
  1401. };
  1402. });
  1403.  
  1404. document.getElementsByClassName('10i4')[0].addEventListener('click', () => {
  1405. if (stopped) {
  1406. game.start();
  1407.  
  1408. document.getElementsByClassName('10i4')[0].innerText = 'Stop Game';
  1409. } else if (!stopped) {
  1410. game.stop();
  1411.  
  1412. document.getElementsByClassName('10i4')[0].innerText = 'Start Game';
  1413. };
  1414.  
  1415. stopped = !stopped;
  1416. });
  1417.  
  1418. game.network.addPacketHandler = function(event, callback) {
  1419. game.network.emitter.on(packets[event], callback);
  1420. };
  1421.  
  1422. game.network.emitter.removeListener('PACKET_ENTITY_UPDATE', game.network.emitter._events.PACKET_ENTITY_UPDATE);
  1423.  
  1424. game.network.addPacketHandler(0, function(e) {
  1425. game.network.sendRpc({
  1426. "name": "BuyItem",
  1427. "itemName": "HealthPotion",
  1428. "tier": 1
  1429. })
  1430. })
  1431. for (let i = 0; i < 10; i++) {
  1432. game.network.addPacketHandler(i, function(e) {
  1433. msg = e;
  1434. interval();
  1435. });
  1436. };
  1437.  
  1438. let interval = () => {
  1439. if (msg.uid) {
  1440. uid = msg.uid;
  1441. players = {};
  1442. entities = {};
  1443. buildings = {};
  1444. window.message = 0;
  1445. }
  1446. if (msg.entities) {
  1447. if (window.message == 0) {
  1448. game.world.replicator.onEntityUpdate(msg);
  1449. }
  1450. if (msg.entities[uid].name) {
  1451. myPlayer = msg.entities[uid];
  1452. }
  1453. for (let g in myPlayer) {
  1454. if (myPlayer[g] !== msg.entities[uid][g] && msg.entities[uid][g] !== undefined) {
  1455. myPlayer[g] = msg.entities[uid][g];
  1456. }
  1457. }
  1458. if (myPlayer.petUid) {
  1459. if (msg.entities[myPlayer.petUid]) {
  1460. if (msg.entities[myPlayer.petUid].model) {
  1461. myPet = msg.entities[myPlayer.petUid];
  1462. shouldHealPet = false;
  1463. }
  1464. }
  1465. for (let g in myPet) {
  1466. if (msg.entities[myPlayer.petUid]) {
  1467. if (myPet[g] !== msg.entities[myPlayer.petUid][g] && msg.entities[myPlayer.petUid][g] !== undefined) {
  1468. myPet[g] = msg.entities[myPlayer.petUid][g]
  1469. }
  1470. }
  1471. }
  1472. }
  1473. for (let i in msg.entities) {
  1474. if (msg.entities[i].name) {
  1475. players[i] = msg.entities[i];
  1476. if (autorss) {
  1477. for (let i2 = 0; i2 < 8; i2++) {
  1478. for (let i = 0; i < 8; i++) {
  1479. game.network.sendRpc({
  1480. name: "BuyItem",
  1481. itemName: "Bow",
  1482. tier: i
  1483. })
  1484. }
  1485. }
  1486.  
  1487. let t = 0;
  1488. let rainbowBowtoggle = true;
  1489. interval = setInterval(() => {
  1490. if (rainbowBowtoggle)
  1491. t = (t + 1) % 8;
  1492. game.network.sendRpc({
  1493. name: "EquipItem",
  1494. itemName: "Bow",
  1495. tier: t
  1496. })
  1497. }, 50);
  1498. }
  1499. }
  1500. }
  1501. for (let i in players) {
  1502. if (!msg.entities[i]) {
  1503. delete players[i];
  1504. }
  1505. for (let g in players[i]) {
  1506. if (players[i][g] !== msg.entities[i][g] && msg.entities[i][g] !== undefined) {
  1507. players[i][g] = msg.entities[i][g];
  1508. }
  1509. }
  1510. }
  1511. }
  1512. if (game.world.inWorld) {
  1513. let entities = game.world.entities;
  1514. if (upgradeAll) {
  1515. if (!window.upgradeAll1) {
  1516. window.upgradeAll1 = true;
  1517. setTimeout(() => {
  1518. window.upgradeAll1 = false;
  1519. }, 100);
  1520. for (let uid in entities) {
  1521. if (entities[uid].fromTick.tier !== 8 || entities[uid].fromTick.tier !== GetGoldStash().uid) {
  1522. game.network.sendRpc({
  1523. name: "UpgradeBuilding",
  1524. uid: game.world.entities[uid].fromTick.uid
  1525. });
  1526. }
  1527. }
  1528. }
  1529. }
  1530. if (AHRC) {
  1531. if (!window.AHRC1) {
  1532. window.AHRC1 = true;
  1533. setTimeout(() => {
  1534. window.AHRC1 = false;
  1535. }, 75);
  1536. for (let uid in entities) {
  1537. if (!entities.hasOwnProperty(uid)) continue;
  1538. let obj = entities[uid];
  1539. game.network.sendRpc({
  1540. name: "CollectHarvester",
  1541. uid: obj.fromTick.uid
  1542. });
  1543. if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 1) {
  1544. game.network.sendRpc({
  1545. name: "AddDepositToHarvester",
  1546. uid: obj.fromTick.uid,
  1547. deposit: 0.07
  1548. });
  1549. }
  1550. if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 2) {
  1551. game.network.sendRpc({
  1552. name: "AddDepositToHarvester",
  1553. uid: obj.fromTick.uid,
  1554. deposit: 0.11
  1555. });
  1556. }
  1557. if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 3) {
  1558. game.network.sendRpc({
  1559. name: "AddDepositToHarvester",
  1560. uid: obj.fromTick.uid,
  1561. deposit: 0.17
  1562. });
  1563. }
  1564. if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 4) {
  1565. game.network.sendRpc({
  1566. name: "AddDepositToHarvester",
  1567. uid: obj.fromTick.uid,
  1568. deposit: 0.22
  1569. });
  1570. }
  1571. if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 5) {
  1572. game.network.sendRpc({
  1573. name: "AddDepositToHarvester",
  1574. uid: obj.fromTick.uid,
  1575. deposit: 0.25
  1576. });
  1577. }
  1578. if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 6) {
  1579. game.network.sendRpc({
  1580. name: "AddDepositToHarvester",
  1581. uid: obj.fromTick.uid,
  1582. deposit: 0.28
  1583. });
  1584. }
  1585. if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 7) {
  1586. game.network.sendRpc({
  1587. name: "AddDepositToHarvester",
  1588. uid: obj.fromTick.uid,
  1589. deposit: 0.42
  1590. });
  1591. }
  1592. if (obj.fromTick.model == "Harvester" && obj.fromTick.tier == 8) {
  1593. game.network.sendRpc({
  1594. name: "AddDepositToHarvester",
  1595. uid: obj.fromTick.uid,
  1596. deposit: 0.65
  1597. });
  1598. }
  1599. }
  1600. }
  1601. }
  1602. if (autobow) {
  1603. game.network.sendInput({
  1604. space: 0
  1605. })
  1606. game.network.sendInput({
  1607. space: 1
  1608. })
  1609. }
  1610. if (accept) {
  1611. for (let i2 = 0; i2 < document.getElementsByClassName("btn btn-green hud-confirmation-accept").length; i2++) {
  1612. document.getElementsByClassName("btn btn-green hud-confirmation-accept")[i2].click();
  1613. };
  1614. };
  1615. if (kick) {
  1616. for (let i in game.ui.playerPartyMembers) {
  1617. game.network.sendRpc({
  1618. name: "KickParty",
  1619. uid: game.ui.playerPartyMembers[i].playerUid
  1620. });
  1621. };
  1622. };
  1623. if (revive) {
  1624. if (!window.reviver) {
  1625. window.reviver = true;
  1626. setTimeout(() => {
  1627. window.reviver = false;
  1628. }, 1000);
  1629. let element1 = document.getElementsByClassName("hud-shop-actions-revive");
  1630. for (let i = 0; i < element1.length; i++) {
  1631. element1[i].click();
  1632. }
  1633. let element2 = document.getElementsByClassName("hud-shop-actions-evolve");
  1634. for (let i = 0; i < element2.length; i++) {
  1635. element2[i].click();
  1636. }
  1637. }
  1638. }
  1639.  
  1640. if (clearMsgs) {
  1641. for (let i = 0; i < document.getElementsByClassName('hud-chat-message').length; i++) {
  1642. document.getElementsByClassName('hud-chat-message')[i].remove();
  1643. }
  1644. }
  1645. if (autobuild) {
  1646. if (!window.autobuildtimeout) {
  1647. window.autobuildtimeout = true;
  1648. setTimeout(() => {
  1649. window.autobuildtimeout = false;
  1650. }, 5000)
  1651. if (GetGoldStash !== undefined) {
  1652. window.buildSavedBase();
  1653. }
  1654. }
  1655. }
  1656. if (upgradeAll2) {
  1657. if (!window.upgradeAll2) {
  1658. window.upgradeAll2 = true;
  1659. setTimeout(() => {
  1660. window.upgradeAll2 = false;
  1661. }, 50);
  1662. for (let uid in entities) {
  1663. if (entities[uid].fromTick.tier !== 8 || entities[uid].fromTick.tier !== GetGoldStash().uid) {
  1664. game.network.sendRpc({
  1665. name: "UpgradeBuilding",
  1666. uid: game.world.entities[uid].fromTick.uid
  1667. });
  1668. }
  1669. }
  1670. }
  1671. }
  1672. if (heal) {
  1673. if (myPlayer) {
  1674. let playerHealth = (myPlayer.health / myPlayer.maxHealth) * 100;
  1675. if (playerHealth <= 10) {
  1676. if (!window.playerTimeout_1) {
  1677. window.playerTimeout_1 = true;
  1678. setTimeout(() => {
  1679. window.playerTimeout_1 = false;
  1680. }, 300)
  1681. healPlayer();
  1682. }
  1683. }
  1684. }
  1685. }
  1686. if (heal) {
  1687. if (myPet) {
  1688. let petHealth = (myPet.health / myPet.maxHealth) * 100;
  1689. if (petHealth <= 70) {
  1690. if (!petTimeout) {
  1691. petTimeout = true;
  1692.  
  1693. setTimeout(() => {
  1694. petTimeout = false;
  1695. }, 300);
  1696.  
  1697. game.network.sendRpc({
  1698. "name": "BuyItem",
  1699. "itemName": "PetHealthPotion",
  1700. "tier": 1
  1701. });
  1702.  
  1703. game.network.sendRpc({
  1704. "name": "EquipItem",
  1705. "itemName": "PetHealthPotion",
  1706. "tier": 1
  1707. });
  1708. };
  1709. };
  1710. };
  1711. };
  1712.  
  1713. if (shouldautoaim && msg.opcode == 0) {
  1714. window.targets = [];
  1715. let entities = game.renderer.npcs.attachments;
  1716. for (let i in entities) {
  1717. if (document.getElementById('aimOptions').value == 'pl' ?
  1718. (entities[i].fromTick.model == "GamePlayer" && entities[i].fromTick.uid !== game.ui.playerTick.uid && entities[i].targetTick.partyId !== game.ui.playerPartyId && entities[i].fromTick.dead == 0) :
  1719. (entities[i].fromTick.model !== "GamePlayer" && entities[i].entityClass !== "Projectile")) {
  1720. window.targets.push(entities[i].fromTick);
  1721. };
  1722. };
  1723. if (window.targets.length > 0) {
  1724. const myPos = game.ui.playerTick.position;
  1725.  
  1726. window.targets.sort((a, b) => {
  1727. return measureDistance(myPos, a.position) - measureDistance(myPos, b.position);
  1728. });
  1729.  
  1730. const target = window.targets[0];
  1731.  
  1732. let reversedAim = game.inputPacketCreator.screenToYaw((target.position.x - myPos.x) * 100, (target.position.y - myPos.y) * 100);
  1733.  
  1734. game.inputPacketCreator.lastAnyYaw = reversedAim;
  1735.  
  1736. game.network.sendPacket(3, {
  1737. mouseMoved: reversedAim
  1738. });
  1739. };
  1740. };
  1741.  
  1742. if (window.findPlayer) {
  1743. if (myPlayer.position.y - window.playerY > 100 || Math.sqrt(Math.pow((myPlayer.position.y - window.playerY), 2) + Math.pow((myPlayer.position.x - window.playerX), 2)) < 100) {
  1744. game.network.sendInput({
  1745. down: 0
  1746. });
  1747. } else {
  1748. game.network.sendInput({
  1749. down: 1
  1750. });
  1751. };
  1752.  
  1753. if (-myPlayer.position.y + window.playerY > 100 || Math.sqrt(Math.pow((myPlayer.position.y - window.playerY), 2) + Math.pow((myPlayer.position.x - window.playerX), 2)) < 100) {
  1754. game.network.sendInput({
  1755. up: 0
  1756. });
  1757. } else {
  1758. game.network.sendInput({
  1759. up: 1
  1760. });
  1761. };
  1762.  
  1763. if (-myPlayer.position.x + window.playerX > 100 || Math.sqrt(Math.pow((myPlayer.position.y - window.playerY), 2) + Math.pow((myPlayer.position.x - window.playerX), 2)) < 100) {
  1764. game.network.sendInput({
  1765. left: 0
  1766. });
  1767. } else {
  1768. game.network.sendInput({
  1769. left: 1
  1770. });
  1771. };
  1772.  
  1773. if (myPlayer.position.x - window.playerX > 100 || Math.sqrt(Math.pow((myPlayer.position.y - window.playerY), 2) + Math.pow((myPlayer.position.x - window.playerX), 2)) < 100) {
  1774. game.network.sendInput({
  1775. right: 0
  1776. });
  1777. } else {
  1778. game.network.sendInput({
  1779. right: 1
  1780. });
  1781. };
  1782. };
  1783. };
  1784. };
  1785.  
  1786. function measureDistance(obj1, obj2) {
  1787. if (!(obj1.x && obj1.y && obj2.x && obj2.y)) return Infinity;
  1788. let xDif = obj2.x - obj1.x;
  1789. let yDif = obj2.y - obj1.y;
  1790. return (xDif ** 2) + (yDif ** 2);
  1791. };
  1792.  
  1793. window.copyText = t => {
  1794. const elem = document.createElement('textarea');
  1795. elem.value = t;
  1796.  
  1797. document.body.appendChild(elem);
  1798. elem.select();
  1799.  
  1800. document.execCommand('copy');
  1801. document.body.removeChild(elem);
  1802. };
  1803.  
  1804. window.ssMode = () => {
  1805. var mba = document.querySelectorAll([".hud-bottom-right", ".hud-bottom-left", ".hud-bottom-center", ".hud-center-left", ".hud-top-right"]);
  1806.  
  1807. for (let mb of mba) {
  1808. if (mb.style.display === "none") {
  1809. mb.style.display = "block";
  1810. } else {
  1811. mb.style.display = "none";
  1812. }
  1813. };
  1814.  
  1815. document.querySelector(".hud-bottom-right").appendChild(document.querySelector("#hud-health-bar"));
  1816. document.querySelector(".hud-bottom-right").insertAdjacentElement("afterbegin", document.querySelector("#hud-party-icons"));
  1817. document.querySelector(".hud-bottom-left").insertAdjacentElement("afterbegin", document.querySelector("#hud-day-night-ticker"));
  1818. };
  1819.  
  1820. window.ssModeReset = () => {
  1821. var mba = document.querySelectorAll([".hud-bottom-right", ".hud-bottom-left", ".hud-bottom-center", ".hud-center-left", ".hud-top-right"]);
  1822.  
  1823. for (let mb of mba) {
  1824. if (mb.style.display === "none") {
  1825. mb.style.display = "block";
  1826. };
  1827. };
  1828. };
  1829.  
  1830. game.network.addEntityUpdateHandler(() => {
  1831. if (getRss) {
  1832. !allowed1 && (allowed1 = true);
  1833. }
  1834. if (getRss || allowed1) {
  1835. for (let i in game.renderer.npcs.attachments) {
  1836. if (game.renderer.npcs.attachments[i].fromTick.name) {
  1837. let player = game.renderer.npcs.attachments[i];
  1838. let wood_1 = counter(player.targetTick.wood);
  1839. let stone_1 = counter(player.targetTick.stone);
  1840. let gold_1 = counter(player.targetTick.gold);
  1841. let token_1 = counter(player.targetTick.token);
  1842. let px_1 = counter(player.targetTick.position.x);
  1843. let py_1 = counter(player.targetTick.position.y);
  1844. let timeout_1 = "";
  1845. if (getRss && !player.targetTick.oldName) {
  1846. player.targetTick.oldName = player.targetTick.name;
  1847. player.targetTick.oldWood = wood_1;
  1848. player.targetTick.oldStone = stone_1;
  1849. player.targetTick.oldGold = gold_1;
  1850. player.targetTick.oldToken = token_1;
  1851. player.targetTick.oldPX = px_1;
  1852. player.targetTick.oldPY = py_1;
  1853. player.targetTick.info = `
  1854. ${player.targetTick.oldName}; score: ${player.targetTick.score.toLocaleString()}
  1855. UID: ${player.targetTick.uid}
  1856. W: ${wood_1}, S: ${stone_1}, G: ${gold_1}, T: ${token_1}
  1857. x: ${Math.round(player.targetTick.position.x)}, y: ${Math.round(player.targetTick.position.y)}
  1858. partyId: ${Math.round(player.targetTick.partyId)}
  1859. timeDead: ${msToTime(player.targetTick.timeDead)}
  1860. ${player.targetTick.isPaused ? "On Timeout" : ""}
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866. `;
  1867. player.targetTick.name = game.renderer.npcs.attachments[i].targetTick.info;
  1868. }
  1869. if (!getRss && player.targetTick.oldName) {
  1870. player.targetTick.info = player.targetTick.oldName;
  1871. player.targetTick.name = game.renderer.npcs.attachments[i].targetTick.info;
  1872. player.targetTick.oldName = null;
  1873. }
  1874. if (getRss) {
  1875. if (player.targetTick.oldGold !== gold_1 || player.targetTick.oldWood !== wood_1 || player.targetTick.oldStone !== stone_1 || player.targetTick.oldToken !== token_1 || player.targetTick.oldPX !== px_1 || player.targetTick.oldPY !== py_1) {
  1876. player.targetTick.oldWood = wood_1;
  1877. player.targetTick.oldStone = stone_1;
  1878. player.targetTick.oldGold = gold_1;
  1879. player.targetTick.oldToken = token_1;
  1880. player.targetTick.oldPX = px_1;
  1881. player.targetTick.oldPY = py_1;
  1882. player.targetTick.info = `
  1883. ${player.targetTick.oldName}; score: ${player.targetTick.score.toLocaleString()}
  1884. UID: ${player.targetTick.uid}
  1885. W: ${wood_1}, S: ${stone_1}, G: ${gold_1}, T: ${token_1}
  1886. x: ${Math.round(player.targetTick.position.x)}, y: ${Math.round(player.targetTick.position.y)}
  1887. partyId: ${Math.round(player.targetTick.partyId)}
  1888. timeDead: ${msToTime(player.targetTick.timeDead)}
  1889. ${player.targetTick.isPaused ? "On Timeout" : ""}
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895. `;
  1896. player.targetTick.name = game.renderer.npcs.attachments[i].targetTick.info;
  1897. }
  1898. }
  1899. }
  1900. }
  1901. }
  1902. if (!getRss) {
  1903. allowed1 = false;
  1904. }
  1905. });
  1906.  
  1907. document.getElementsByClassName("1i")[0].addEventListener('click', function() {
  1908. for (let uid in game.ui.buildings) {
  1909. if (game.ui.buildings[uid].type !== "GoldStash") {
  1910. game.network.sendRpc({
  1911. name: "DeleteBuilding",
  1912. uid: game.ui.buildings[uid].uid
  1913. });
  1914. }
  1915. }
  1916. })
  1917.  
  1918. document.getElementsByClassName("2i")[0].addEventListener('click', function() {
  1919. for (let uid in game.ui.buildings) {
  1920. if (game.ui.buildings[uid].type == "Wall") {
  1921. game.network.sendRpc({
  1922. name: "DeleteBuilding",
  1923. uid: game.ui.buildings[uid].uid
  1924. });
  1925. }
  1926. }
  1927. })
  1928.  
  1929. document.getElementsByClassName("3i")[0].addEventListener('click', function() {
  1930. for (let uid in game.ui.buildings) {
  1931. if (game.ui.buildings[uid].type == "Door") {
  1932. game.network.sendRpc({
  1933. name: "DeleteBuilding",
  1934. uid: game.ui.buildings[uid].uid
  1935. });
  1936. }
  1937. }
  1938. })
  1939.  
  1940. document.getElementsByClassName("4i")[0].addEventListener('click', function() {
  1941. for (let uid in game.ui.buildings) {
  1942. if (game.ui.buildings[uid].type == "SlowTrap") {
  1943. game.network.sendRpc({
  1944. name: "DeleteBuilding",
  1945. uid: game.ui.buildings[uid].uid
  1946. });
  1947. }
  1948. }
  1949. })
  1950.  
  1951. document.getElementsByClassName("5i")[0].addEventListener('click', function() {
  1952. for (let uid in game.ui.buildings) {
  1953. if (game.ui.buildings[uid].type == "ArrowTower") {
  1954. game.network.sendRpc({
  1955. name: "DeleteBuilding",
  1956. uid: game.ui.buildings[uid].uid
  1957. });
  1958. }
  1959. }
  1960. })
  1961.  
  1962. document.getElementsByClassName("6i")[0].addEventListener('click', function() {
  1963. for (let uid in game.ui.buildings) {
  1964. if (game.ui.buildings[uid].type == "MagicTower") {
  1965. game.network.sendRpc({
  1966. name: "DeleteBuilding",
  1967. uid: game.ui.buildings[uid].uid
  1968. });
  1969. }
  1970. }
  1971. })
  1972.  
  1973. document.getElementsByClassName("7i")[0].addEventListener('click', function() {
  1974. for (let uid in game.world.entities) {
  1975. if (game.world.entities[uid].fromTick.model == "PetCARL" || game.world.entities[uid].fromTick.model == "PetMiner") {
  1976. game.network.sendRpc({
  1977. name: "DeleteBuilding",
  1978. uid: game.world.entities[uid].fromTick.uid
  1979. });
  1980. }
  1981. }
  1982. })
  1983.  
  1984. document.getElementsByClassName("8i")[0].addEventListener('click', function() {
  1985. upgradeAll = !upgradeAll;
  1986.  
  1987. document.getElementsByClassName("8i")[0].className = "btn btn-blue 8i";
  1988. document.getElementsByClassName("8i")[0].innerText = "Actitivate Upgrade All!";
  1989.  
  1990. if (upgradeAll) {
  1991. document.getElementsByClassName("8i")[0].className = "btn btn-red 8i";
  1992. document.getElementsByClassName("8i")[0].innerText = "Deactivate Upgrade All!";
  1993. }
  1994. })
  1995. document.getElementsByClassName("9i")[0].addEventListener('click', function() {
  1996. AHRC = !AHRC;
  1997.  
  1998. document.getElementsByClassName("9i")[0].className = "btn btn-blue 9i";
  1999. document.getElementsByClassName("9i")[0].innerText = "Activate AHRC!";
  2000.  
  2001. if (AHRC) {
  2002. document.getElementsByClassName("9i")[0].className = "btn btn-red 9i";
  2003. document.getElementsByClassName("9i")[0].innerText = "Deactivate AHRC!";
  2004. }
  2005. })
  2006. document.getElementsByClassName("10i")[0].addEventListener('click', function() {
  2007. autobow = !autobow;
  2008. let playerWeapon = game.ui.playerTick.weaponName;
  2009.  
  2010. document.getElementsByClassName("10i")[0].className = "btn btn-blue 10i";
  2011. document.getElementsByClassName("10i")[0].innerText = "Enable Autobow";
  2012.  
  2013. if (autobow) {
  2014. document.getElementsByClassName("10i")[0].className = "btn btn-red 10i";
  2015. document.getElementsByClassName("10i")[0].innerText = "Disable Autobow";
  2016.  
  2017. if (game.ui.inventory.Bow) {
  2018. game.network.sendRpc({
  2019. name: "EquipItem",
  2020. itemName: "Bow",
  2021. tier: game.ui.inventory.Bow.tier
  2022. });
  2023. } else {
  2024. game.network.sendRpc({
  2025. name: "BuyItem",
  2026. itemName: "Bow",
  2027. tier: 1
  2028. });
  2029.  
  2030. game.network.sendRpc({
  2031. name: "EquipItem",
  2032. itemName: "Bow",
  2033. tier: 1
  2034. });
  2035. };
  2036. } else {
  2037. game.network.sendRpc({
  2038. name: "EquipItem",
  2039. itemName: playerWeapon,
  2040. tier: game.ui.inventory[playerWeapon].tier
  2041. });
  2042. };
  2043. });
  2044.  
  2045. document.getElementsByClassName("11i2")[0].addEventListener('click', function() {
  2046. window.startaito = !window.startaito;
  2047.  
  2048. document.getElementsByClassName("11i2")[0].innerText = "Start Aito!";
  2049.  
  2050. if (window.startaito) {
  2051. window.sendAitoAlt();
  2052.  
  2053. document.getElementsByClassName("11i2")[0].innerText = "Stop Aito!";
  2054. };
  2055. });
  2056.  
  2057. document.getElementsByClassName("13i")[0].addEventListener('click', function() {
  2058. accept = !accept;
  2059.  
  2060. document.getElementsByClassName("13i")[0].className = "btn btn-blue 13i";
  2061. document.getElementsByClassName("13i")[0].innerText = "Enable Auto Accepter";
  2062.  
  2063. if (accept) {
  2064. document.getElementsByClassName("13i")[0].className = "btn btn-red 13i";
  2065. document.getElementsByClassName("13i")[0].innerText = "Disable Auto Accepter";
  2066. };
  2067. });
  2068.  
  2069. document.getElementsByClassName("14i")[0].addEventListener('click', function() {
  2070. kick = !kick;
  2071.  
  2072. document.getElementsByClassName("14i")[0].className = "btn btn-blue 14i";
  2073. document.getElementsByClassName("14i")[0].innerText = "Enable Auto Kicker";
  2074.  
  2075. if (kick) {
  2076. document.getElementsByClassName("14i")[0].className = "btn btn-red 14i";
  2077. document.getElementsByClassName("14i")[0].innerText = "Disable Auto Kicker";
  2078. };
  2079. });
  2080.  
  2081. document.getElementsByClassName("11i5")[0].addEventListener('click', function() {
  2082. screenshotMode = !screenshotMode;
  2083.  
  2084. document.getElementsByClassName("11i5")[0].className = "btn btn-blue 11i5";
  2085. document.getElementsByClassName("11i5")[0].innerText = "Enable Screenshot Mode";
  2086.  
  2087. window.ssModeReset();
  2088.  
  2089. if (screenshotMode) {
  2090. document.getElementsByClassName("11i5")[0].className = "btn btn-red 11i5";
  2091. document.getElementsByClassName("11i5")[0].innerText = "Disable Screenshot Mode";
  2092.  
  2093. window.ssMode();
  2094. };
  2095. });
  2096.  
  2097. document.getElementsByClassName("12i5")[0].addEventListener('click', function() {
  2098. debugMode = !debugMode;
  2099.  
  2100. document.getElementsByClassName("12i5")[0].className = "btn btn-blue 12i5";
  2101. document.getElementsByClassName("12i5")[0].innerText = "Enable Debug Mode";
  2102.  
  2103. game.debug.hide();
  2104.  
  2105. if (debugMode) {
  2106. document.getElementsByClassName("12i5")[0].className = "btn btn-red 12i5";
  2107. document.getElementsByClassName("12i5")[0].innerText = "Disable Debug Mode";
  2108.  
  2109. game.debug.show();
  2110. };
  2111. });
  2112.  
  2113. document.getElementsByClassName("emm")[0].addEventListener('click', function() {
  2114. window.mousemove = !window.mousemove;
  2115.  
  2116. this.innerText = window.mousemove ? "Disable MouseMove!" : "Enable MouseMove!"
  2117. });
  2118.  
  2119. document.getElementsByClassName("28i2")[0].addEventListener('click', function() {
  2120. window.autoraid = !window.autoraid;
  2121.  
  2122. this.innerText = window.autoraid ? "Disable Auto Raid!" : "Enable Auto Raid!"
  2123. });
  2124.  
  2125. document.getElementsByClassName("0i5")[0].addEventListener('click', function() {
  2126. for (let i in game.ui.playerPartyMembers) {
  2127. game.network.sendRpc({
  2128. name: "SetPartyMemberCanSell",
  2129. uid: game.ui.playerPartyMembers[i].playerUid,
  2130. canSell: 1
  2131. })
  2132. }
  2133. })
  2134. document.getElementsByClassName("1i5")[0].addEventListener('click', function() {
  2135. for (let i in game.ui.playerPartyMembers) {
  2136. game.network.sendRpc({
  2137. name: "KickParty",
  2138. uid: game.ui.playerPartyMembers[i].playerUid
  2139. })
  2140. }
  2141. })
  2142. document.getElementsByClassName("5i5")[0].addEventListener('click', function() {
  2143. autorss = !autorss;
  2144. document.getElementsByClassName("5i5")[0].className = "btn btn-blue 5i5";
  2145. document.getElementsByClassName("5i5")[0].innerText = "Enable Send Info!";
  2146.  
  2147. if (autorss) {
  2148. document.getElementsByClassName("5i5")[0].className = "btn btn-red 5i5";
  2149. document.getElementsByClassName("5i5")[0].innerText = "Disable Send Info!";
  2150. };
  2151. });
  2152.  
  2153. document.getElementsByClassName("8i5")[0].addEventListener('click', function() {
  2154. heal = !heal;
  2155. document.getElementsByClassName("8i5")[0].className = "btn btn-blue 8i5";
  2156. document.getElementsByClassName("8i5")[0].innerText = "Auto heal and Pet Heal";
  2157.  
  2158. if (heal) {
  2159. document.getElementsByClassName("8i5")[0].className = "btn btn-red 8i5";
  2160. document.getElementsByClassName("8i5")[0].innerText = "!(Auto heal and Pet Heal)";
  2161. };
  2162. });
  2163.  
  2164. document.getElementsByClassName("9i5")[0].addEventListener('click', function() {
  2165. revive = !revive;
  2166. document.getElementsByClassName("9i5")[0].className = "btn btn-blue 9i5";
  2167. document.getElementsByClassName("9i5")[0].innerText = "Revive and Evolve Pets";
  2168.  
  2169. if (revive) {
  2170. document.getElementsByClassName("9i5")[0].className = "btn btn-red 9i5";
  2171. document.getElementsByClassName("9i5")[0].innerText = "!(Revive and Evolve Pets)";
  2172. };
  2173. });
  2174.  
  2175. document.getElementsByClassName("10i5")[0].addEventListener('click', function() {
  2176. clearMsgs = !clearMsgs;
  2177. document.getElementsByClassName("10i5")[0].className = "btn btn-blue 10i5";
  2178. document.getElementsByClassName("10i5")[0].innerText = "Clear Messages";
  2179.  
  2180. if (clearMsgs) {
  2181. document.getElementsByClassName("10i5")[0].className = "btn btn-red 10i5";
  2182. document.getElementsByClassName("10i5")[0].innerText = "!(Clear Messages)";
  2183. };
  2184. });
  2185.  
  2186. document.getElementsByClassName("13i5")[0].addEventListener('click', function() {
  2187. shouldautoaim = !shouldautoaim;
  2188. document.getElementsByClassName("13i5")[0].className = "btn btn-blue 13i5";
  2189. document.getElementsByClassName("13i5")[0].innerText = "Enable AutoAim!";
  2190.  
  2191. if (shouldautoaim) {
  2192. document.getElementsByClassName("13i5")[0].className = "btn btn-red 13i5";
  2193. document.getElementsByClassName("13i5")[0].innerText = "Disable AutoAim!";
  2194. };
  2195. });
  2196.  
  2197. document.getElementsByClassName("0i2")[0].addEventListener('click', function() {
  2198. window.sendws();
  2199. });
  2200.  
  2201. document.getElementsByClassName("12i2")[0].addEventListener('click', function() {
  2202. window.basefind = !window.basefind;
  2203. document.getElementsByClassName("12i2")[0].innerText = "Activate Base Finder";
  2204.  
  2205. if (window.basefind) {
  2206. window.baseFinder();
  2207.  
  2208. document.getElementsByClassName("12i2")[0].innerText = "Deactivate Base Finder";
  2209. } else {
  2210. window.basefind = false;
  2211. };
  2212. });
  2213.  
  2214. document.getElementsByClassName("17i2")[0].addEventListener('click', function() {
  2215. for (let obj in document.getElementsByClassName('scanned-building')) {
  2216. document.getElementsByClassName('scanned-building')[obj].remove();
  2217. };
  2218. });
  2219. document.getElementsByClassName("18i2")[0].addEventListener('click', function() {
  2220. window.startaito2 = !window.startaito2;
  2221. document.getElementsByClassName("18i2")[0].innerText = "Activate Player Finder";
  2222.  
  2223. if (window.startaito2) {
  2224. window.sendAitoAlt2();
  2225. document.getElementsByClassName("18i2")[0].innerText = "Deactivate Player Finder";
  2226. };
  2227. });
  2228. document.getElementsByClassName("25i2")[0].addEventListener('click', function() {
  2229. if (window.playerX && window.playerY) {
  2230. window.findPlayer = !window.findPlayer;
  2231.  
  2232. document.getElementsByClassName("25i2")[0].innerText = "Follow Position";
  2233.  
  2234. if (window.findPlayer) {
  2235. document.getElementsByClassName("25i2")[0].innerText = "Unfollow Position";
  2236. };
  2237. } else {
  2238. game.ui.components.PopupOverlay.showHint("Player not found! You can try again once it's found.");
  2239. };
  2240. });
  2241.  
  2242. document.getElementsByClassName("2i2")[0].addEventListener('click', function() {
  2243. setTimeout(() => {
  2244. if (window.move) {
  2245. document.getElementsByClassName("2i2")[0].innerText = "Disable Player Follower!";
  2246. } else {
  2247. document.getElementsByClassName("2i2")[0].innerText = "Enable Player Follower!";
  2248. }
  2249. }, 100)
  2250. });
  2251.  
  2252. document.getElementsByClassName("3i2")[0].addEventListener('click', function() {
  2253. let id = Math.floor(document.getElementsByClassName("4i2")[0].value);
  2254.  
  2255. window.allSockets[id - 1].close();
  2256. });
  2257.  
  2258. game.network.sendInput = (e) => {
  2259. let i = e;
  2260.  
  2261. if (!i.mouseDown && !i.mouseUp) {
  2262. game.network.sendPacket(3, e);
  2263. };
  2264. };
  2265.  
  2266. document.getElementsByClassName('hud')[0].addEventListener('mousedown', e => {
  2267. if (!e.button) {
  2268. game.network.sendPacket(3, {
  2269. mouseDown: game.inputPacketCreator.screenToYaw(e.clientX, e.clientY)
  2270. });
  2271. };
  2272.  
  2273. if (raidMenu.style.display == 'block') {
  2274. raidMenu.style.display = 'none';
  2275. };
  2276. });
  2277.  
  2278. document.getElementsByClassName('hud')[0].addEventListener('mouseup', e => {
  2279. if (!e.button) {
  2280. game.network.sendPacket(3, {
  2281. mouseUp: 1
  2282. });
  2283. };
  2284. });
  2285.  
  2286. window.RecordBase = function(baseName) {
  2287. game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to record base? If you recorded it twice, the first recorded base will be deleted.", 1e4, function() {
  2288. game.ui.components.PopupOverlay.showHint("Successfully recorded!");
  2289.  
  2290. let buildings = game.ui.buildings;
  2291.  
  2292. let base = "";
  2293.  
  2294. let stash = GetGoldStash();
  2295.  
  2296. if (stash == undefined) return;
  2297.  
  2298. let stashPosition = {
  2299. x: stash.x,
  2300. y: stash.y
  2301. };
  2302.  
  2303. for (var uid in buildings) {
  2304. if (!buildings.hasOwnProperty(uid)) continue;
  2305.  
  2306. let obj = buildings[uid];
  2307.  
  2308. let x = game.ui.buildings[obj.uid].x - stashPosition.x;
  2309.  
  2310. let y = game.ui.buildings[obj.uid].y - stashPosition.y;
  2311.  
  2312. let building = game.ui.buildings[obj.uid].type;
  2313.  
  2314. let yaw = 0;
  2315.  
  2316. base += "PlaceBuilding(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");"
  2317. };
  2318.  
  2319. localStorage.RecordedBase1 = base;
  2320. });
  2321. };
  2322.  
  2323. window.buildRecordedBase = function() {
  2324. let waitForGoldStash = setInterval(function() {
  2325. if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") {
  2326. let stash = GetGoldStash();
  2327.  
  2328. if (stash == undefined) return;
  2329.  
  2330. let stashPosition = {
  2331. x: stash.x,
  2332. y: stash.y
  2333. };
  2334.  
  2335. clearInterval(waitForGoldStash);
  2336.  
  2337. game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!");
  2338.  
  2339. var basecode = localStorage.RecordedBase1;
  2340.  
  2341. basecode = new Function(basecode);
  2342.  
  2343. return basecode();
  2344. };
  2345. }, 275);
  2346. };
  2347.  
  2348. window.DeleteRecordedbase = function() {
  2349. game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() {
  2350. game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!");
  2351.  
  2352. localStorage.RecordedBase1 = null;
  2353. });
  2354. };
  2355.  
  2356. window.RecordBase2 = function(baseName) {
  2357. game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to record base? If you recorded it twice, the first recorded base will be deleted.", 1e4, function() {
  2358. game.ui.components.PopupOverlay.showHint("Successfully recorded!");
  2359.  
  2360. let buildings = game.ui.buildings;
  2361.  
  2362. let base = "";
  2363.  
  2364. let stash = GetGoldStash();
  2365.  
  2366. if (stash == undefined) return;
  2367.  
  2368. let stashPosition = {
  2369. x: stash.x,
  2370. y: stash.y
  2371. };
  2372.  
  2373. for (var uid in buildings) {
  2374. if (!buildings.hasOwnProperty(uid)) continue;
  2375.  
  2376. let obj = buildings[uid];
  2377.  
  2378. let x = game.ui.buildings[obj.uid].x - stashPosition.x;
  2379.  
  2380. let y = game.ui.buildings[obj.uid].y - stashPosition.y;
  2381.  
  2382. let building = game.ui.buildings[obj.uid].type;
  2383.  
  2384. let yaw = 90;
  2385.  
  2386. base += "PlaceBuilding(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");"
  2387. };
  2388.  
  2389. localStorage.RecordedBase2 = base;
  2390. });
  2391. };
  2392.  
  2393. window.buildRecordedBase2 = function() {
  2394. var waitForGoldStash = setInterval(function() {
  2395. if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") {
  2396. let stash = GetGoldStash();
  2397.  
  2398. if (stash == undefined) return;
  2399.  
  2400. let stashPosition = {
  2401. x: stash.x,
  2402. y: stash.y
  2403. };
  2404.  
  2405. clearInterval(waitForGoldStash);
  2406.  
  2407. game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!");
  2408.  
  2409. var basecode = localStorage.RecordedBase2;
  2410.  
  2411. basecode = new Function(basecode);
  2412.  
  2413. return basecode();
  2414. };
  2415. }, 275);
  2416. };
  2417.  
  2418. window.DeleteRecordedbase2 = function() {
  2419. game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() {
  2420. game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!");
  2421.  
  2422. localStorage.RecordedBase2 = null;
  2423. });
  2424. };
  2425.  
  2426. window.RecordBase3 = function(baseName) {
  2427. game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to record base? If you recorded it twice, the first recorded base will be deleted.", 1e4, function() {
  2428. game.ui.components.PopupOverlay.showHint("Successfully recorded!");
  2429.  
  2430. let buildings = game.ui.buildings;
  2431.  
  2432. let base = "";
  2433.  
  2434. let stash = GetGoldStash();
  2435.  
  2436. if (stash == undefined) return;
  2437.  
  2438. let stashPosition = {
  2439. x: stash.x,
  2440. y: stash.y
  2441. };
  2442.  
  2443. for (var uid in buildings) {
  2444. if (!buildings.hasOwnProperty(uid)) continue;
  2445.  
  2446. let obj = buildings[uid];
  2447.  
  2448. let x = game.ui.buildings[obj.uid].x - stashPosition.x;
  2449.  
  2450. let y = game.ui.buildings[obj.uid].y - stashPosition.y;
  2451.  
  2452. let building = game.ui.buildings[obj.uid].type;
  2453.  
  2454. let yaw = 180;
  2455.  
  2456. base += "PlaceBuilding(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");"
  2457. };
  2458.  
  2459. localStorage.RecordedBase3 = base;
  2460. });
  2461. };
  2462.  
  2463. window.buildRecordedBase3 = function() {
  2464. var waitForGoldStash = setInterval(function() {
  2465. if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") {
  2466. let stash = GetGoldStash();
  2467.  
  2468. if (stash == undefined) return;
  2469.  
  2470. let stashPosition = {
  2471. x: stash.x,
  2472. y: stash.y
  2473. };
  2474.  
  2475. clearInterval(waitForGoldStash);
  2476.  
  2477. game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!");
  2478.  
  2479. var basecode = localStorage.RecordedBase3;
  2480.  
  2481. basecode = new Function(basecode);
  2482.  
  2483. return basecode();
  2484. };
  2485. }, 275);
  2486. };
  2487.  
  2488. window.DeleteRecordedbase3 = function() {
  2489. game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() {
  2490. game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!");
  2491.  
  2492. localStorage.RecordedBase3 = null;
  2493. });
  2494. };
  2495.  
  2496. window.buildSavedBase = function() {
  2497. var waitForGoldStash = setInterval(function() {
  2498. if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") {
  2499. let stash = GetGoldStash();
  2500.  
  2501. if (stash == undefined) return;
  2502.  
  2503. let stashPosition = {
  2504. x: stash.x,
  2505. y: stash.y
  2506. };
  2507.  
  2508. clearInterval(waitForGoldStash);
  2509.  
  2510. var basecode = document.getElementsByClassName("30i3")[0].value;
  2511.  
  2512. basecode = new Function(basecode);
  2513.  
  2514. return basecode();
  2515. };
  2516. }, 275);
  2517. };
  2518.  
  2519. window.saveBase = () => {
  2520. game.ui.components.PopupOverlay.showHint("Successfully saved!");
  2521.  
  2522. let buildings = game.ui.buildings;
  2523.  
  2524. let base = "";
  2525.  
  2526. let stash = GetGoldStash();
  2527.  
  2528. if (stash == undefined) return;
  2529.  
  2530. let stashPosition = {
  2531. x: stash.x,
  2532. y: stash.y
  2533. };
  2534.  
  2535. for (var uid in buildings) {
  2536. if (!buildings.hasOwnProperty(uid)) continue;
  2537.  
  2538. let obj = buildings[uid];
  2539.  
  2540. let x = game.ui.buildings[obj.uid].x - stashPosition.x;
  2541.  
  2542. let y = game.ui.buildings[obj.uid].y - stashPosition.y;
  2543.  
  2544. let building = game.ui.buildings[obj.uid].type;
  2545.  
  2546. let yaw = 270;
  2547.  
  2548. base += "PlaceBuilding(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");";
  2549. };
  2550.  
  2551. document.getElementsByClassName("30i3")[0].value = base;
  2552. };
  2553.  
  2554. window.autobuildtoggle = () => {
  2555. autobuild = !autobuild;
  2556.  
  2557. document.getElementsByClassName("21i3")[0].innerText = "Enable Auto Build Saved Towers!";
  2558.  
  2559. if (autobuild) {
  2560. document.getElementsByClassName("21i3")[0].classList.replace('btn-blue', 'btn-red');
  2561. document.getElementsByClassName("21i3")[0].innerText = "Disable Auto Build Saved Towers!";
  2562. };
  2563. };
  2564.  
  2565. window.upgradealltoggle = () => {
  2566. upgradeAll2 = !upgradeAll2;
  2567.  
  2568. document.getElementsByClassName("26i3")[0].innerText = "Enable Upgrade All!";
  2569.  
  2570. if (upgradeAll2) {
  2571. document.getElementsByClassName("26i3")[0].classList.replace('btn-blue', 'btn-red');
  2572. document.getElementsByClassName("26i3")[0].innerText = "Disable Upgrade All!";
  2573. }
  2574. }
  2575.  
  2576. function GetGoldStash() {
  2577. for (let i in game.ui.buildings) {
  2578. if (game.ui.buildings[i].type == "GoldStash") {
  2579. return game.ui.buildings[i];
  2580. }
  2581. }
  2582. }
  2583. window.PlaceBuilding = function(x, y, building, yaw) {
  2584. game.network.sendRpc({
  2585. name: "MakeBuilding",
  2586. x: x,
  2587. y: y,
  2588. type: building,
  2589. yaw: yaw
  2590. })
  2591. }
  2592.  
  2593. function counter(e = 0) {
  2594. if (e <= -0.99949999999999999e24) {
  2595. return Math.round(e / -1e23) / -10 + "TT";
  2596. }
  2597. if (e <= -0.99949999999999999e21) {
  2598. return Math.round(e / -1e20) / -10 + "TB";
  2599. }
  2600. if (e <= -0.99949999999999999e18) {
  2601. return Math.round(e / -1e17) / -10 + "TM";
  2602. }
  2603. if (e <= -0.99949999999999999e15) {
  2604. return Math.round(e / -1e14) / -10 + "TK";
  2605. }
  2606. if (e <= -0.99949999999999999e12) {
  2607. return Math.round(e / -1e11) / -10 + "T";
  2608. }
  2609. if (e <= -0.99949999999999999e9) {
  2610. return Math.round(e / -1e8) / -10 + "B";
  2611. }
  2612. if (e <= -0.99949999999999999e6) {
  2613. return Math.round(e / -1e5) / -10 + "M";
  2614. }
  2615. if (e <= -0.99949999999999999e3) {
  2616. return Math.round(e / -1e2) / -10 + "K";
  2617. }
  2618. if (e <= 0.99949999999999999e3) {
  2619. return Math.round(e) + "";
  2620. }
  2621. if (e <= 0.99949999999999999e6) {
  2622. return Math.round(e / 1e2) / 10 + "K";
  2623. }
  2624. if (e <= 0.99949999999999999e9) {
  2625. return Math.round(e / 1e5) / 10 + "M";
  2626. }
  2627. if (e <= 0.99949999999999999e12) {
  2628. return Math.round(e / 1e8) / 10 + "B";
  2629. }
  2630. if (e <= 0.99949999999999999e15) {
  2631. return Math.round(e / 1e11) / 10 + "T";
  2632. }
  2633. if (e <= 0.99949999999999999e18) {
  2634. return Math.round(e / 1e14) / 10 + "TK";
  2635. }
  2636. if (e <= 0.99949999999999999e21) {
  2637. return Math.round(e / 1e17) / 10 + "TM";
  2638. }
  2639. if (e <= 0.99949999999999999e24) {
  2640. return Math.round(e / 1e20) / 10 + "TB";
  2641. }
  2642. if (e <= 0.99949999999999999e27) {
  2643. return Math.round(e / 1e+23) / 10 + "TT";
  2644. }
  2645. if (e >= 0.99949999999999999e27) {
  2646. return Math.round(e / 1e+23) / 10 + "TT";
  2647. }
  2648. }
  2649.  
  2650. function healPlayer() {
  2651. if (!game.ui.components.PlacementOverlay.buildingId && !game.ui.components.BuildingOverlay.buildingId) {
  2652. game.network.sendRpc({
  2653. "name": "EquipItem",
  2654. "itemName": "HealthPotion",
  2655. "tier": 1
  2656. })
  2657. game.network.sendRpc({
  2658. "name": "BuyItem",
  2659. "itemName": "HealthPotion",
  2660. "tier": 1
  2661. });
  2662. };
  2663. };
  2664.  
  2665. // AITO;
  2666.  
  2667. window.sendAitoAlt = () => {
  2668. if (window.startaito) {
  2669. let iframe = document.createElement('iframe');
  2670. iframe.src = 'https://zombs.io';
  2671. iframe.style.display = 'none';
  2672. document.body.append(iframe);
  2673.  
  2674. let iframeWindow = iframe.contentWindow;
  2675.  
  2676. iframe.addEventListener("load", () => {
  2677. let connectionOptions = game.network.connectionOptions ?? game.options.servers[document.getElementsByClassName('hud-intro-server')[0].value];
  2678. iframeWindow.game.network.connectionOptions = connectionOptions;
  2679. iframeWindow.game.network.connected = true;
  2680.  
  2681. let ws = new WebSocket(`wss://${connectionOptions.hostname}:${connectionOptions.port}`);
  2682.  
  2683. ws.binaryType = "arraybuffer";
  2684. ws.onclose = () => {
  2685. ws.isclosed = true;
  2686. }
  2687.  
  2688. ws.onPreEnterWorld = (data) => {
  2689. let decoded = iframeWindow.game.network.codec.decodePreEnterWorldResponse(data);
  2690. ws.network.sendInput = (t) => {
  2691. ws.network.sendPacket(3, t);
  2692. };
  2693. ws.network.sendRpc = (t) => {
  2694. ws.network.sendPacket(9, t);
  2695. };
  2696. ws.network.sendPacket = (e, t) => {
  2697. if (!ws.isclosed) {
  2698. ws.send(ws.network.codec.encode(e, t));
  2699. }
  2700. };
  2701. ws.network.sendPacket(4, {
  2702. displayName: game.options.nickname,
  2703. extra: decoded.extra
  2704. });
  2705. };
  2706.  
  2707. ws.onEnterWorld = () => {
  2708. ws.send(iframeWindow.game.network.codec.encode(6, {}));
  2709. iframe.remove();
  2710. };
  2711.  
  2712. ws.onmessage = msg => {
  2713. if (new Uint8Array(msg.data)[0] == 5) {
  2714. game.network.codec.decodePreEnterWorldResponse = buffer => buffer;
  2715. ws.network = new game.networkType();
  2716. let data = game.network.codec.decode(msg.data);
  2717. ws.onPreEnterWorld(data);
  2718.  
  2719. return;
  2720. };
  2721.  
  2722. ws.data = ws.network.codec.decode(msg.data);
  2723.  
  2724. if (ws.data.uid) {
  2725. ws.uid = ws.data.uid;
  2726. };
  2727.  
  2728. if (ws.data.name) {
  2729. ws.dataType = ws.data;
  2730. };
  2731.  
  2732. if (!window.startaito && !ws.isclosed) {
  2733. ws.isclosed = true;
  2734. ws.close();
  2735. };
  2736.  
  2737. if (ws.verified) {
  2738. if (!ws.isDay && !ws.isclosed) {
  2739. ws.isclosed = true;
  2740. ws.close();
  2741.  
  2742. window.sendAitoAlt();
  2743. };
  2744. };
  2745.  
  2746. if (ws.data.name == "DayCycle") {
  2747. ws.isDay = ws.data.response.isDay;
  2748.  
  2749. if (ws.isDay) {
  2750. ws.verified = true;
  2751. };
  2752. };
  2753.  
  2754. if (ws.data.name == "Dead") {
  2755. ws.network.sendRpc({
  2756. respawn: 1
  2757. });
  2758.  
  2759. };
  2760.  
  2761. if (ws.data.name == "Leaderboard") {
  2762. ws.lb = ws.data;
  2763.  
  2764. if (ws.psk) {
  2765. ws.network.sendRpc({
  2766. name: "JoinPartyByShareKey",
  2767. partyShareKey: game.ui.getPlayerPartyShareKey()
  2768. });
  2769.  
  2770. if (ws.psk.response.partyShareKey == game.ui.getPlayerPartyShareKey()) {
  2771. ws.network.sendRpc({
  2772. name: "BuyItem",
  2773. itemName: "Pause",
  2774. tier: 1
  2775. });
  2776. };
  2777. };
  2778. };
  2779.  
  2780. if (ws.data.name == "PartyShareKey") {
  2781. ws.psk = ws.data;
  2782. };
  2783.  
  2784. switch (ws.data.opcode) {
  2785. case 4:
  2786. ws.onEnterWorld(ws.data);
  2787. break;
  2788. };
  2789. };
  2790. });
  2791. };
  2792. };
  2793.  
  2794. // Player Finder
  2795.  
  2796. window.sendAitoAlt2 = () => {
  2797. if (window.startaito2) {
  2798. let iframe = document.createElement('iframe');
  2799. iframe.src = 'https://zombs.io';
  2800. iframe.style.display = 'none';
  2801. document.body.append(iframe);
  2802.  
  2803. let iframeWindow = iframe.contentWindow;
  2804.  
  2805. iframe.addEventListener("load", () => {
  2806. let connectionOptions = game.network.connectionOptions ?? game.options.servers[document.getElementsByClassName('hud-intro-server')[0].value];
  2807. iframeWindow.game.network.connectionOptions = connectionOptions;
  2808. iframeWindow.game.network.connected = true;
  2809.  
  2810. let ver = false;
  2811. let player = game.ui.components.Leaderboard.leaderboardData[document.getElementsByClassName("16i2")[0].value - 1].name;
  2812.  
  2813. let ws = new WebSocket(`wss://${connectionOptions.hostname}:${connectionOptions.port}`);
  2814.  
  2815. ws.binaryType = "arraybuffer";
  2816.  
  2817. ws.onclose = () => {
  2818. ws.isclosed = true;
  2819. };
  2820. ws.onPreEnterWorld = (data) => {
  2821. let decoded = iframeWindow.game.network.codec.decodePreEnterWorldResponse(data);
  2822.  
  2823. ws.network.sendInput = (t) => {
  2824. ws.network.sendPacket(3, t);
  2825. };
  2826.  
  2827. ws.network.sendRpc = (t) => {
  2828. ws.network.sendPacket(9, t);
  2829. };
  2830.  
  2831. ws.network.sendPacket = (e, t) => {
  2832. if (!ws.isclosed) {
  2833. ws.send(ws.network.codec.encode(e, t));
  2834. };
  2835. };
  2836.  
  2837. ws.network.sendPacket(4, {
  2838. displayName: 'ø',
  2839. extra: decoded.extra
  2840. });;
  2841. };
  2842.  
  2843. ws.onEnterWorld = (data) => {
  2844. ws.send(iframeWindow.game.network.codec.encode(6, {}));
  2845. iframe.remove();
  2846. };
  2847.  
  2848. ws.onmessage = msg => {
  2849. if (new Uint8Array(msg.data)[0] == 5) {
  2850. game.network.codec.decodePreEnterWorldResponse = buffer => buffer;
  2851.  
  2852. ws.network = new game.networkType();
  2853.  
  2854. let data = game.network.codec.decode(msg.data);
  2855.  
  2856. ws.onPreEnterWorld(data);
  2857.  
  2858. return;
  2859. };
  2860.  
  2861. ws.data = ws.network.codec.decode(msg.data);
  2862.  
  2863. if (ws.data.uid) {
  2864. ws.uid = ws.data.uid;
  2865. };
  2866.  
  2867. ws.network.sendInput({
  2868. up: 1
  2869. });
  2870.  
  2871. if (ws.data.entities) {
  2872. for (let i in ws.data.entities) {
  2873. if (ws.data.entities[i].name == player) {
  2874. window.startaito2 = false;
  2875. window.playerX = Math.round(ws.data.entities[i].position.x);
  2876. window.playerY = Math.round(ws.data.entities[i].position.y);
  2877. document.getElementsByClassName("16i2")[0].value = "(" + window.playerX + ", " + window.playerY + ")";
  2878. document.getElementsByClassName("18i2")[0].innerText = "Activate Player Finder";
  2879. game.ui.components.PopupOverlay.showHint(`Successfully found the player, { x: ${window.playerX}, y: ${window.playerY} };`);
  2880.  
  2881. let xPos = Math.round(window.playerX / game.world.getHeight() * 100);
  2882. let yPos = Math.round(window.playerY / game.world.getWidth() * 100);
  2883.  
  2884. let player = document.createElement('div');
  2885. player.classList.add('hud-map-player');
  2886. player.classList.add('scanned-player');
  2887. player.style.left = xPos + '%';
  2888. player.style.top = yPos + '%';
  2889.  
  2890. document.getElementsByClassName('hud-map')[0].appendChild(player);
  2891. };
  2892.  
  2893. if (ws.data.entities[i].name) {
  2894. ver = true;
  2895. };
  2896. };
  2897. };
  2898.  
  2899. if (ws.data.name == "DayCycle") {
  2900. ws.isDay = ws.data.response.isDay;
  2901. };
  2902.  
  2903. if (ws.data.name == "Dead") {
  2904. ws.network.sendRpc({
  2905. respawn: 1
  2906. });
  2907. };
  2908.  
  2909. if (ver && !ws.isclosed) {
  2910. ws.isclosed = true;
  2911. setTimeout(() => {
  2912. ws.close();
  2913. window.sendAitoAlt2();
  2914. }, 15000);
  2915. }
  2916.  
  2917. if (ws.data.name == "PartyShareKey") {
  2918. ws.psk = ws.data;
  2919. ws.network.sendRpc({
  2920. name: "JoinPartyByShareKey",
  2921. partyShareKey: game.ui.playerPartyShareKey
  2922. });
  2923. };
  2924.  
  2925. switch (ws.data.opcode) {
  2926. case 4:
  2927. ws.onEnterWorld(ws.data);
  2928. break;
  2929. };
  2930. };
  2931. });
  2932. };
  2933. };
  2934.  
  2935. // Base Finder
  2936.  
  2937. window.baseFinder = () => {
  2938. if (window.basefind) {
  2939. let iframe = document.createElement('iframe');
  2940. iframe.src = 'https://zombs.io';
  2941. iframe.style.display = 'none';
  2942. document.body.append(iframe);
  2943.  
  2944. let iframeWindow = iframe.contentWindow;
  2945.  
  2946. iframe.addEventListener("load", () => {
  2947. let connectionOptions = game.network.connectionOptions ?? game.options.servers[document.getElementsByClassName('hud-intro-server')[0].value];
  2948. iframeWindow.game.network.connectionOptions = connectionOptions;
  2949. iframeWindow.game.network.connected = true;
  2950.  
  2951. let ws = new WebSocket(`wss://${connectionOptions.hostname}:${connectionOptions.port}`);
  2952. ws.binaryType = "arraybuffer";
  2953. let finder = setInterval(() => {
  2954. setTimeout(() => {
  2955. ws.close();
  2956.  
  2957. window.baseFinder();
  2958. }, 30000);
  2959.  
  2960. ws.close();
  2961. }, 30000);
  2962.  
  2963. ws.onclose = () => {
  2964. ws.isclosed = true;
  2965. };
  2966.  
  2967. ws.onPreEnterWorld = (data) => {
  2968. let decoded = iframeWindow.game.network.codec.decodePreEnterWorldResponse(data);
  2969.  
  2970. ws.network.sendInput = (t) => {
  2971. ws.network.sendPacket(3, t);
  2972. };
  2973.  
  2974. ws.network.sendRpc = (t) => {
  2975. ws.network.sendPacket(9, t);
  2976. };
  2977.  
  2978. ws.network.sendPacket = (e, t) => {
  2979. if (!ws.isclosed) {
  2980. ws.send(ws.network.codec.encode(e, t));
  2981. };
  2982. };
  2983.  
  2984. ws.network.sendPacket(4, {
  2985. displayName: 'ø',
  2986. extra: decoded.extra
  2987. });;
  2988. };
  2989.  
  2990. ws.onEnterWorld = (data) => {
  2991. ws.send(iframeWindow.game.network.codec.encode(6, {}));
  2992.  
  2993. iframe.remove();
  2994. };
  2995.  
  2996. ws.onmessage = msg => {
  2997. if (new Uint8Array(msg.data)[0] == 5) {
  2998. game.network.codec.decodePreEnterWorldResponse = buffer => buffer;
  2999.  
  3000. ws.network = new game.networkType();
  3001.  
  3002. let data = game.network.codec.decode(msg.data);
  3003.  
  3004. ws.onPreEnterWorld(data);
  3005.  
  3006. return;
  3007. };
  3008.  
  3009. ws.data = ws.network.codec.decode(msg.data);
  3010.  
  3011. if (ws.data.uid) {
  3012. ws.uid = ws.data.uid;
  3013. };
  3014.  
  3015. ws.network.sendInput({
  3016. up: 1
  3017. });
  3018.  
  3019. if (ws.data.name == "DayCycle") {
  3020. ws.isDay = ws.data.response.isDay;
  3021. };
  3022.  
  3023. if (ws.data.name == "Dead") {
  3024. ws.network.sendInput({
  3025. respawn: 1
  3026. });
  3027. };
  3028.  
  3029. if (ws.data.name == "PartyShareKey") {
  3030. ws.psk = ws.data;
  3031. };
  3032.  
  3033. ws.onTowerFound = data => {
  3034. let res = JSON.stringify(data);
  3035. let res2 = JSON.parse(res);
  3036.  
  3037. let Schema = Object.keys(game.ui.buildingSchema).filter(building => building !== 'Harvester');
  3038.  
  3039. for (let i in Schema) {
  3040. for (let entity in ws.data.entities) {
  3041. if (res.includes(Schema[i])) {
  3042. for (let e in res2.entities) {
  3043. let xPos = Math.round(res2.entities[e].position.x / game.world.getHeight() * 100);
  3044. let yPos = Math.round(res2.entities[e].position.y / game.world.getWidth() * 100);
  3045.  
  3046. let building = document.createElement('div');
  3047. building.classList.add('hud-map-building');
  3048. building.classList.add('scanned-building');
  3049. building.style.left = xPos + '%';
  3050. building.style.top = yPos + '%';
  3051.  
  3052. document.getElementsByClassName('hud-map')[0].appendChild(building);
  3053.  
  3054. ws.close();
  3055. };
  3056. };
  3057. };
  3058. };
  3059. };
  3060.  
  3061. switch (ws.data.opcode) {
  3062. case 4:
  3063. ws.onEnterWorld();
  3064.  
  3065. ws.network.sendPacket(9, {
  3066. name: "JoinPartyByShareKey",
  3067. partyShareKey: game.ui.getPlayerPartyShareKey()
  3068. });
  3069.  
  3070. break;
  3071. case 0:
  3072. ws.onTowerFound(ws.data);
  3073.  
  3074. break;
  3075. };
  3076. };
  3077. });
  3078. };
  3079. };
  3080.  
  3081. window.allSockets = [];
  3082.  
  3083. window.sendws = () => {
  3084. let iframe = document.createElement('iframe');
  3085. iframe.src = 'https://zombs.io';
  3086. iframe.style.display = 'none';
  3087. document.body.append(iframe);
  3088.  
  3089. let iframeWindow = iframe.contentWindow;
  3090. iframe.addEventListener("load", () => {
  3091. let connectionOptions = game.network.connectionOptions ?? game.options.servers[document.getElementsByClassName('hud-intro-server')[0].value];
  3092. iframeWindow.game.network.connectionOptions = connectionOptions;
  3093. iframeWindow.game.network.connected = true;
  3094.  
  3095. let mousePosition3;
  3096. let isOnControl = false;
  3097. let isTrue = true;
  3098. let altElem = document.createElement('div');
  3099.  
  3100. let ws = new WebSocket(`wss://${connectionOptions.hostname}:${connectionOptions.port}`);
  3101.  
  3102. if (!window.allSockets[window.allSockets.length]) {
  3103. ws.cloneId = window.allSockets.length + 1;
  3104. window.allSockets[window.allSockets.length] = ws;
  3105. };
  3106.  
  3107. ws.binaryType = "arraybuffer";
  3108. ws.aimingYaw = 1;
  3109.  
  3110. ws.onclose = () => {
  3111. ws.isclosed = true;
  3112.  
  3113. altElem.remove();
  3114. };
  3115.  
  3116. ws.onPreEnterWorld = (data) => {
  3117. let decoded = iframeWindow.game.network.codec.decodePreEnterWorldResponse(data);
  3118.  
  3119. ws.network.sendInput = (t) => {
  3120. ws.network.sendPacket(3, t);
  3121. };
  3122.  
  3123. ws.network.sendRpc = (t) => {
  3124. ws.network.sendPacket(9, t);
  3125. };
  3126.  
  3127. ws.network.sendPacket = (e, t) => {
  3128. if (!ws.isclosed) {
  3129. ws.send(ws.network.codec.encode(e, t));
  3130. }
  3131. };
  3132.  
  3133. ws.network.sendPacket(4, {
  3134. displayName: game.options.nickname,
  3135. extra: decoded.extra
  3136. });
  3137. };
  3138.  
  3139. ws.onmessage = msg => {
  3140. if (new Uint8Array(msg.data)[0] == 5) {
  3141. ws.network = new game.networkType();
  3142. game.network.codec.decodePreEnterWorldResponse = buffer => buffer;
  3143.  
  3144. let data = game.network.codec.decode(msg.data);
  3145. ws.onPreEnterWorld(data);
  3146. return;
  3147. };
  3148.  
  3149. ws.data = ws.network.codec.decode(msg.data);
  3150.  
  3151. if (isTrue) {
  3152. isTrue = !isTrue;
  3153.  
  3154. var timeCheck = setTimeout(function() {
  3155. if (ws.cloneId === 0) {
  3156. ws.close();
  3157. }
  3158. }, 3000);
  3159.  
  3160. ws.network.sendInput({
  3161. up: 1
  3162. });
  3163. ws.mouseUp = 1;
  3164. ws.mouseDown = 0;
  3165. ws.f = false;
  3166.  
  3167. function mouseMoved(e, x, y, d) {
  3168. ws.aimingYaw = e;
  3169.  
  3170. if (ws.mouseDown && !ws.mouseUp) {
  3171. ws.network.sendInput({
  3172. mouseMovedWhileDown: e,
  3173. worldX: x,
  3174. worldY: y,
  3175. distance: d
  3176. });
  3177. };
  3178.  
  3179. if (!ws.mouseDown && ws.mouseUp) {
  3180. ws.network.sendInput({
  3181. mouseMoved: e,
  3182. worldX: x,
  3183. worldY: y,
  3184. distance: d
  3185. });
  3186. };
  3187. };
  3188.  
  3189. document.addEventListener('mousemove', mousemove => {
  3190. if (isOnControl) {
  3191. if (!ws.isclosed) {
  3192. mousePosition3 = game.renderer.screenToWorld(mousemove.clientX, mousemove.clientY);
  3193.  
  3194. if (ws.myPlayer) {
  3195. if (ws.myPlayer.position) {
  3196. mouseMoved(
  3197. game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + mousePosition3.x) * 100, (-ws.myPlayer.position.y + mousePosition3.y) * 100),
  3198. Math.floor(mousePosition3.x),
  3199. Math.floor(mousePosition3.y),
  3200. Math.floor(game.inputPacketCreator.distanceToCenter((-ws.myPlayer.position.x + mousePosition3.x) * 100, (-ws.myPlayer.position.y + mousePosition3.y) * 100) / 100)
  3201. );
  3202. };
  3203. };
  3204. };
  3205. };
  3206. });
  3207.  
  3208. let SendRpc = ws.network.sendRpc;
  3209. let SendInput = ws.network.sendInput;
  3210.  
  3211. document.addEventListener('keydown', e => {
  3212. if (!ws.isclosed) {
  3213. if (isOnControl) {
  3214. let KeyCode = e.keyCode;
  3215.  
  3216. if(e.key === '.') {
  3217. console.log(ws.inventory);
  3218. ws.network.sendRpc({ name: 'BuyItem', itemName: 'Spear', tier: ws.inventory.Spear ? (ws.inventory.Spear.tier + 1) : 1});
  3219. }
  3220. if (KeyCode == 81 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3221. setTimeout(() => {
  3222. var nextWeapon = 'Pickaxe';
  3223.  
  3224. var weaponOrder = ['Pickaxe', 'Spear', 'Bow', 'Bomb'];
  3225.  
  3226. var foundCurrent = false;
  3227.  
  3228. for (let i in weaponOrder) {
  3229. if (foundCurrent) {
  3230. if (ws.inventory[weaponOrder[i]]) {
  3231. nextWeapon = weaponOrder[i];
  3232. break;
  3233. };
  3234. } else if (weaponOrder[i] == ws.myPlayer.weaponName) {
  3235. foundCurrent = true;
  3236. };
  3237. };
  3238.  
  3239. ws.network.sendRpc({
  3240. name: 'EquipItem',
  3241. itemName: nextWeapon,
  3242. tier: ws.inventory[nextWeapon].tier
  3243. });
  3244. }, 100);
  3245. };
  3246.  
  3247. if (KeyCode == 72 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3248. ws.network.sendRpc({
  3249. name: 'LeaveParty'
  3250. });
  3251. };
  3252.  
  3253. if (KeyCode == 74 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3254. ws.network.sendRpc({
  3255. name: 'JoinPartyByShareKey',
  3256. partyShareKey: game.ui.playerPartyShareKey
  3257. });
  3258. };
  3259.  
  3260. if (KeyCode == 32 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3261. setTimeout(() => {
  3262. ws.network.sendInput({
  3263. space: 0
  3264. });
  3265.  
  3266. ws.network.sendInput({
  3267. space: 1
  3268. });
  3269. }, 100);
  3270. };
  3271.  
  3272. if (KeyCode == 82) {
  3273. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3274. for (let i in game.ui.buildings) {
  3275. if (game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.buildings[i].type == game.ui.components.BuildingOverlay.buildingId && game.ui.buildings[i].tier == game.ui.components.BuildingOverlay.buildingTier) {
  3276. ws.network.sendRpc({
  3277. name: "UpgradeBuilding",
  3278. uid: game.ui.buildings[i].uid
  3279. });
  3280. };
  3281. };
  3282. };
  3283. };
  3284.  
  3285. if (KeyCode == 46) {
  3286. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3287. if (ws.myPet) {
  3288. ws.network.sendInput({
  3289. name: "DeleteBuilding",
  3290. uid: ws.myPet.uid
  3291. });
  3292. };
  3293. };
  3294. };
  3295.  
  3296. if (KeyCode == 82) {
  3297. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3298. if (!game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.components.BuildingOverlay.buildingUid) {
  3299. ws.network.sendRpc({
  3300. name: "UpgradeBuilding",
  3301. uid: game.ui.components.BuildingOverlay.buildingUid
  3302. });
  3303. };
  3304. };
  3305. };
  3306.  
  3307. if (KeyCode == 89) {
  3308. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3309. for (let i in game.ui.buildings) {
  3310. if (game.ui.components.BuildingOverlay.buildingUid && game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.buildings[i].type == game.ui.components.BuildingOverlay.buildingId && game.ui.buildings[i].tier == game.ui.components.BuildingOverlay.buildingTier && game.ui.components.BuildingOverlay.buildingId !== "GoldStash") {
  3311. ws.network.sendRpc({
  3312. name: "DeleteBuilding",
  3313. uid: game.ui.buildings[i].uid
  3314. });
  3315. };
  3316. };
  3317. };
  3318. };
  3319.  
  3320. if (KeyCode == 84) {
  3321. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3322. for (var i in game.ui.buildings) {
  3323. if (game.ui.components.BuildingOverlay.buildingUid && game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.buildings[i].type == game.ui.components.BuildingOverlay.buildingId && game.ui.buildings[i].tier == game.ui.components.BuildingOverlay.buildingTier && game.ui.components.BuildingOverlay.buildingId !== "GoldStash") {
  3324. game.network.sendRpc({
  3325. name: "DeleteBuilding",
  3326. uid: game.ui.buildings[i].uid
  3327. });
  3328. };
  3329. };
  3330. };
  3331. };
  3332.  
  3333. if (KeyCode == 89) {
  3334. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3335. if (!game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.components.BuildingOverlay.buildingId !== "GoldStash" && game.ui.components.BuildingOverlay.buildingUid) {
  3336. ws.network.sendRpc({
  3337. name: "DeleteBuilding",
  3338. uid: game.ui.components.BuildingOverlay.buildingUid
  3339. });
  3340. };
  3341. };
  3342. };
  3343.  
  3344. if (KeyCode == 89) {
  3345. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3346. if (!game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.components.BuildingOverlay.buildingId !== "GoldStash" && game.ui.components.BuildingOverlay.buildingUid) {
  3347. ws.network.sendRpc({
  3348. name: "DeleteBuilding",
  3349. uid: game.ui.components.BuildingOverlay.buildingUid
  3350. });
  3351. };
  3352. };
  3353. };
  3354.  
  3355. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3356. if (!ws.automove) {
  3357. if (KeyCode == 76) {
  3358. ws.network.sendInput({
  3359. up: 1,
  3360. down: 0
  3361. });
  3362. };
  3363.  
  3364. if (KeyCode == 191) {
  3365. ws.network.sendInput({
  3366. right: 1,
  3367. left: 0
  3368. });
  3369. };
  3370.  
  3371. if (KeyCode == 190) {
  3372. ws.network.sendInput({
  3373. down: 1,
  3374. up: 0
  3375. });
  3376. };
  3377.  
  3378. if (KeyCode == 188) {
  3379. ws.network.sendInput({
  3380. left: 1,
  3381. right: 0
  3382. });
  3383. };
  3384.  
  3385. if (KeyCode == 87) {
  3386. ws.network.sendInput({
  3387. up: 1,
  3388. down: 0
  3389. });
  3390. };
  3391.  
  3392. if (KeyCode == 68) {
  3393. ws.network.sendInput({
  3394. right: 1,
  3395. left: 0
  3396. });
  3397. };
  3398.  
  3399. if (KeyCode == 83) {
  3400. ws.network.sendInput({
  3401. down: 1,
  3402. up: 0
  3403. });
  3404. };
  3405.  
  3406. if (KeyCode == 65) {
  3407. ws.network.sendInput({
  3408. left: 1,
  3409. right: 0
  3410. });
  3411. };
  3412. };
  3413.  
  3414. if (KeyCode == 82) {
  3415. ws.network.sendRpc({
  3416. name: "BuyItem",
  3417. itemName: "HealthPotion",
  3418. tier: 1
  3419. });
  3420.  
  3421. ws.network.sendRpc({
  3422. name: "EquipItem",
  3423. itemName: "HealthPotion",
  3424. tier: 1
  3425. });
  3426. };
  3427.  
  3428. if (KeyCode == 78) {
  3429. ws.network.sendRpc({
  3430. "name": "EquipItem",
  3431. "itemName": "PetCARL",
  3432. "tier": ws.inventory.PetCARL.tier
  3433. });
  3434.  
  3435. ws.network.sendRpc({
  3436. "name": "EquipItem",
  3437. "itemName": "PetMiner",
  3438. "tier": ws.inventory.PetMiner.tier
  3439. });
  3440. };
  3441.  
  3442. if (KeyCode == 77) {
  3443. ws.network.sendRpc({
  3444. "name": "BuyItem",
  3445. "itemName": "PetRevive",
  3446. "tier": 1
  3447. });
  3448.  
  3449. ws.network.sendRpc({
  3450. "name": "EquipItem",
  3451. "itemName": "PetRevive",
  3452. "tier": 1
  3453. });
  3454.  
  3455. ws.network.sendRpc({
  3456. "name": "BuyItem",
  3457. "itemName": "PetCARL",
  3458. "tier": ws.inventory.PetCARL.tier + 1
  3459. });
  3460.  
  3461. ws.network.sendRpc({
  3462. "name": "BuyItem",
  3463. "itemName": "PetMiner",
  3464. "tier": ws.inventory.PetMiner.tier + 1
  3465. });
  3466. };
  3467.  
  3468. if (KeyCode == 221) {
  3469. game.network.sendRpc({
  3470. name: "JoinPartyByShareKey",
  3471. partyShareKey: ws.psk.response.partyShareKey
  3472. });
  3473. };
  3474. };
  3475. };
  3476. };
  3477. });
  3478.  
  3479. document.addEventListener('keyup', e => {
  3480. if (!ws.isclosed) {
  3481. if (isOnControl) {
  3482. let KeyCode = e.keyCode;
  3483.  
  3484. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  3485. if (!ws.automove) {
  3486. if (KeyCode == 76) {
  3487. ws.network.sendInput({
  3488. up: 0
  3489. });
  3490. };
  3491.  
  3492. if (KeyCode == 191) {
  3493. ws.network.sendInput({
  3494. right: 0
  3495. });
  3496. };
  3497.  
  3498. if (KeyCode == 190) {
  3499. ws.network.sendInput({
  3500. down: 0
  3501. });
  3502. };
  3503.  
  3504. if (KeyCode == 188) {
  3505. ws.network.sendInput({
  3506. left: 0
  3507. });
  3508. };
  3509.  
  3510. if (KeyCode == 87) {
  3511. ws.network.sendInput({
  3512. up: 0
  3513. });
  3514. };
  3515.  
  3516. if (KeyCode == 68) {
  3517. ws.network.sendInput({
  3518. right: 0
  3519. });
  3520. };
  3521.  
  3522. if (KeyCode == 83) {
  3523. ws.network.sendInput({
  3524. down: 0
  3525. });
  3526. };
  3527.  
  3528. if (KeyCode == 65) {
  3529. ws.network.sendInput({
  3530. left: 0
  3531. });
  3532. };
  3533. };
  3534. };
  3535. };
  3536. };
  3537. });
  3538.  
  3539. document.getElementsByClassName("hud")[0].addEventListener("mousedown", function(e) {
  3540. if (!ws.isclosed) {
  3541. if (isOnControl) {
  3542. if (!e.button) {
  3543. ws.mouseDown = 1;
  3544. ws.mouseUp = 0;
  3545.  
  3546. ws.network.sendInput({
  3547. mouseDown: ws.aimingYaw,
  3548. worldX: Math.floor(mousePosition3.x),
  3549. worldY: Math.floor(mousePosition3.y),
  3550. distance: Math.floor(game.inputPacketCreator.distanceToCenter((-ws.myPlayer.position.x + mousePosition3.x) * 100, (-ws.myPlayer.position.y + mousePosition3.y) * 100) / 100)
  3551. });
  3552. };
  3553. };
  3554. };
  3555. });
  3556.  
  3557. document.getElementsByClassName("hud")[0].addEventListener("mouseup", function(e) {
  3558. if (!ws.isclosed) {
  3559. if (isOnControl) {
  3560. if (!e.button) {
  3561. ws.mouseUp = 1;
  3562. ws.mouseDown = 0;
  3563. ws.network.sendInput({
  3564. mouseUp: 1,
  3565. worldX: Math.floor(mousePosition3.x),
  3566. worldY: Math.floor(mousePosition3.y),
  3567. distance: Math.floor(game.inputPacketCreator.distanceToCenter((-ws.myPlayer.position.x + mousePosition3.x) * 100, (-ws.myPlayer.position.y + mousePosition3.y) * 100) / 100)
  3568. });
  3569. };
  3570. };
  3571. };
  3572. });
  3573.  
  3574. if (isOnControl) {
  3575. let t1 = 0;
  3576.  
  3577. document.getElementsByClassName("hud-shop-item")[t1 + 0].addEventListener('click', function() {
  3578. ws.network.sendRpc({
  3579. name: "BuyItem",
  3580. itemName: "Pickaxe",
  3581. tier: ws.inventory.Pickaxe.tier + 1
  3582. });
  3583. });
  3584.  
  3585. document.getElementsByClassName("hud-shop-item")[t1 + 1].addEventListener('click', function() {
  3586. if (!ws.inventory.Bow) {
  3587. ws.network.sendRpc({
  3588. name: "BuyItem",
  3589. itemName: "Bow",
  3590. tier: 1
  3591. });
  3592. } else {
  3593. ws.network.sendRpc({
  3594. name: "BuyItem",
  3595. itemName: "Bow",
  3596. tier: ws.inventory.Bow.tier + 1
  3597. });
  3598. };
  3599. });
  3600.  
  3601. document.getElementsByClassName("hud-shop-item")[t1 + 2].addEventListener('click', function() {
  3602. if (!ws.inventory.Bow) {
  3603. ws.network.sendRpc({
  3604. name: "BuyItem",
  3605. itemName: "Bow",
  3606. tier: 1
  3607. });
  3608. } else {
  3609. ws.network.sendRpc({
  3610. name: "BuyItem",
  3611. itemName: "Bow",
  3612. tier: ws.inventory.Bow.tier + 1
  3613. });
  3614. };
  3615. });
  3616.  
  3617. document.getElementsByClassName("hud-shop-item")[t1 + 3].addEventListener('click', function() {
  3618. if (!ws.inventory.Bomb) {
  3619. ws.network.sendRpc({
  3620. name: "BuyItem",
  3621. itemName: "Bomb",
  3622. tier: 1
  3623. });
  3624. } else {
  3625. ws.network.sendRpc({
  3626. name: "BuyItem",
  3627. itemName: "Bomb",
  3628. tier: ws.inventory.Bomb.tier + 1
  3629. });
  3630. };
  3631. });
  3632.  
  3633. document.getElementsByClassName("hud-shop-item")[t1 + 4].addEventListener('click', function() {
  3634. ws.network.sendRpc({
  3635. name: "BuyItem",
  3636. itemName: "ZombieShield",
  3637. tier: ws.inventory.ZombieShield ? (ws.inventory.ZombieShield.tier + 1) : 1
  3638. });
  3639. });
  3640.  
  3641. document.getElementsByClassName("hud-respawn-btn")[0].addEventListener('click', function() {
  3642. ws.network.sendRpc({
  3643. respawn: 1
  3644. });
  3645. });
  3646.  
  3647. document.getElementsByClassName("hud-toolbar-item")[t1 + 0].addEventListener('mouseup', function(e) {
  3648. if (!e.button) {
  3649. ws.network.sendRpc({
  3650. name: "EquipItem",
  3651. itemName: "Pickaxe",
  3652. tier: ws.inventory.Pickaxe.tier
  3653. });
  3654. };
  3655. });
  3656.  
  3657. document.getElementsByClassName("hud-toolbar-item")[t1 + 1].addEventListener('mouseup', function(e) {
  3658. if (!e.button) {
  3659. ws.network.sendRpc({
  3660. name: "EquipItem",
  3661. itemName: "Bow",
  3662. tier: ws.inventory.Bow.tier
  3663. });
  3664. };
  3665. });
  3666.  
  3667. document.getElementsByClassName("hud-toolbar-item")[t1 + 2].addEventListener('mouseup', function(e) {
  3668. if (!e.button) {
  3669. ws.network.sendRpc({
  3670. name: "EquipItem",
  3671. itemName: "Bow",
  3672. tier: ws.inventory.Bow.tier
  3673. });
  3674. };
  3675. });
  3676.  
  3677. document.getElementsByClassName("hud-toolbar-item")[t1 + 3].addEventListener('mouseup', function(e) {
  3678. if (!e.button) {
  3679. ws.network.sendRpc({
  3680. name: "EquipItem",
  3681. itemName: "Bomb",
  3682. tier: ws.inventory.Bomb.tier
  3683. });
  3684. };
  3685. });
  3686.  
  3687. document.getElementsByClassName("hud-toolbar-item")[t1 + 4].addEventListener('mouseup', function(e) {
  3688. if (!e.button) {
  3689. ws.network.sendRpc({
  3690. name: "EquipItem",
  3691. itemName: "HealthPotion",
  3692. tier: 1
  3693. });
  3694. };
  3695. });
  3696.  
  3697. document.getElementsByClassName("hud-toolbar-item")[t1 + 5].addEventListener('mouseup', function(e) {
  3698. if (!e.button) {
  3699. ws.network.sendRpc({
  3700. name: "EquipItem",
  3701. itemName: "PetHealthPotion",
  3702. tier: 1
  3703. });
  3704. };
  3705. });
  3706.  
  3707. document.getElementsByClassName("hud-toolbar-item")[t1 + 6].addEventListener("mouseup", function(e) {
  3708. if (!e.button) {
  3709. if (isOnControl) {
  3710. ws.network.sendRpc({
  3711. name: "RecallPet"
  3712. });
  3713. ws.network.sendInput({
  3714. respawn: 1
  3715. });
  3716. ws.automove = !ws.automove;
  3717. if (ws.automove) {
  3718. window.move = true;
  3719. } else {
  3720. window.move = false;
  3721. };
  3722. };
  3723. };
  3724. });
  3725. };
  3726.  
  3727. ws.respawn = true;
  3728.  
  3729. document.getElementsByClassName("10i")[0].addEventListener('click', () => {
  3730. ws.activebow = !ws.activebow;
  3731. ws.playerWeapon = ws.myPlayer.weaponName;
  3732.  
  3733. if (ws.activebow) {
  3734. if (ws.inventory.Bow) {
  3735. ws.network.sendRpc({
  3736. name: "EquipItem",
  3737. itemName: "Bow",
  3738. tier: ws.inventory.Bow.tier
  3739. })
  3740. } else {
  3741. ws.network.sendRpc({
  3742. name: "BuyItem",
  3743. itemName: "Bow",
  3744. tier: 1
  3745. })
  3746. ws.network.sendRpc({
  3747. name: "EquipItem",
  3748. itemName: "Bow",
  3749. tier: 1
  3750. });
  3751. };
  3752. } else {
  3753. ws.network.sendRpc({
  3754. name: "EquipItem",
  3755. itemName: ws.playerWeapon,
  3756. tier: ws.inventory[ws.playerWeapon].tier
  3757. });
  3758. };
  3759. });
  3760.  
  3761. if (window.aim) {
  3762. ws.autoaim = true;
  3763. };
  3764.  
  3765. if (window.move) {
  3766. ws.automove = true;
  3767. };
  3768.  
  3769. if (window.autohiBot) {
  3770. ws.autohi = true;
  3771. };
  3772.  
  3773. document.getElementsByClassName("1i2")[0].addEventListener('click', () => {
  3774. ws.autoaim = !ws.autoaim;
  3775.  
  3776. if (ws.autoaim) {
  3777. window.aim = true;
  3778.  
  3779. document.getElementsByClassName("1i2")[0].innerText = "Disable Aim!";
  3780. } else {
  3781. window.aim = false;
  3782.  
  3783. document.getElementsByClassName("1i2")[0].innerText = "Enable Aim!";
  3784. };
  3785. });
  3786.  
  3787. document.getElementsByClassName("2i2")[0].addEventListener('click', () => {
  3788. ws.automove = !ws.automove;
  3789.  
  3790. if (ws.automove) {
  3791. window.move = true;
  3792. } else {
  3793. window.move = false;
  3794. };
  3795. });
  3796.  
  3797. document.getElementsByClassName("7i2")[0].addEventListener('click', () => {
  3798. ws.close();
  3799.  
  3800. altElem.remove();
  3801. });
  3802.  
  3803. document.getElementsByClassName("8i2")[0].addEventListener('click', () => {
  3804. ws.network.sendRpc({
  3805. name: "SendChatMessage",
  3806. channel: "Local",
  3807. message: `${ws.players[ws.uid].name}, W: ${counter(ws.players[ws.uid].wood)}, S: ${counter(ws.players[ws.uid].stone)}, G: ${counter(ws.players[ws.uid].gold)}, ID: ${ws.cloneId};`
  3808. });
  3809. });
  3810.  
  3811. document.getElementsByClassName("21i2")[0].addEventListener('click', () => {
  3812. isOnControl = !isOnControl;
  3813.  
  3814. document.getElementsByClassName("21i2")[0].innerText = isOnControl ? 'Uncontrol Alts!' : 'Control Alts!';
  3815. });
  3816.  
  3817. document.getElementsByClassName("30i2")[0].addEventListener('click', () => {
  3818. window.lock = !window.lock;
  3819.  
  3820. if (window.lock) {
  3821. window.count = 0;
  3822. delete window.lockPos;
  3823.  
  3824. document.getElementsByClassName("30i2")[0].innerText = 'Unlock Pos!';
  3825. } else if (!window.lock) {
  3826. document.getElementsByClassName("30i2")[0].innerText = 'Lock Pos!';
  3827.  
  3828. ws.network.sendInput({
  3829. up: 0,
  3830. right: 0,
  3831. left: 0,
  3832. right: 0
  3833. });
  3834. };
  3835. });
  3836. };
  3837.  
  3838. if (window.testing) {
  3839. ws.network.sendRpc({
  3840. name: "SetOpenParty",
  3841. isOpen: 0
  3842. });
  3843.  
  3844. ws.network.sendRpc({
  3845. name: "SetPartyName",
  3846. partyName: ws.cloneId + ''
  3847. });
  3848. };
  3849.  
  3850. if (ws.data.uid) {
  3851. ws.uid = ws.data.uid;
  3852. ws.dataInfo = ws.data;
  3853. ws.players = {};
  3854. ws.inventory = {};
  3855. ws.buildings = {};
  3856. ws.parties = {};
  3857. ws.lb = {};
  3858. ws.playerUid = game.world.myUid;
  3859.  
  3860. if (window.allSockets[ws.cloneId - 1]) {
  3861. window.allSockets[ws.cloneId - 1] = ws;
  3862. };
  3863.  
  3864. ws.network.sendInput({
  3865. space: 1
  3866. });
  3867.  
  3868. ws.network.sendRpc({
  3869. name: "BuyItem",
  3870. itemName: "PetCARL",
  3871. tier: 1
  3872. });
  3873.  
  3874. ws.network.sendRpc({
  3875. name: "BuyItem",
  3876. itemName: "PetMiner",
  3877. tier: 1
  3878. });
  3879. };
  3880.  
  3881. if (ws.data.entities) {
  3882. if (window.message == ws.cloneId) {
  3883. game.world.replicator.onEntityUpdate(ws.data);
  3884. };
  3885.  
  3886. if (ws.data.entities[ws.uid].name) {
  3887. ws.myPlayer = ws.data.entities[ws.uid];
  3888. };
  3889.  
  3890. for (let g in ws.myPlayer) {
  3891. if (ws.myPlayer[g] !== ws.data.entities[ws.uid][g] && ws.data.entities[ws.uid][g] !== undefined) {
  3892. ws.myPlayer[g] = ws.data.entities[ws.uid][g];
  3893. };
  3894. };
  3895.  
  3896. if (ws.myPlayer.petUid) {
  3897. if (ws.data.entities[ws.myPlayer.petUid]) {
  3898. if (ws.data.entities[ws.myPlayer.petUid].model) {
  3899. ws.myPet = ws.data.entities[ws.myPlayer.petUid];
  3900. ws.shouldHealPet = false;
  3901. };
  3902. };
  3903. for (let g in ws.myPet) {
  3904. if (ws.data.entities[ws.myPlayer.petUid]) {
  3905. if (ws.myPet[g] !== ws.data.entities[ws.myPlayer.petUid][g] && ws.data.entities[ws.myPlayer.petUid][g] !== undefined) {
  3906. ws.myPet[g] = ws.data.entities[ws.myPlayer.petUid][g]
  3907. };
  3908. };
  3909. };
  3910. };
  3911.  
  3912. for (let i in ws.data.entities) {
  3913. if (ws.data.entities[i].name) {
  3914. ws.players[i] = ws.data.entities[i];
  3915. };
  3916. };
  3917.  
  3918. for (let i in ws.players) {
  3919. if (!ws.data.entities[i]) {
  3920. delete ws.players[i];
  3921. };
  3922.  
  3923. for (let g in ws.players[i]) {
  3924. if (ws.players[i][g] !== ws.data.entities[i][g] && ws.data.entities[i][g] !== undefined) {
  3925. ws.players[i][g] = ws.data.entities[i][g];
  3926. };
  3927. };
  3928.  
  3929. ws.playerTick = ws.players[ws.playerUid];
  3930. };
  3931.  
  3932. altElem.style.left = (Math.round(ws.myPlayer.position.x) / game.world.getHeight() * 100) + '%';
  3933. altElem.style.top = (Math.round(ws.myPlayer.position.y) / game.world.getWidth() * 100) + '%';
  3934. };
  3935.  
  3936. if (ws.data.name == "DayCycle") {
  3937. ws.tickData = ws.data.response;
  3938. ws.isDay = ws.data.response.isDay;
  3939. };
  3940.  
  3941. if (ws.data.tick) {
  3942. var currentTick = ws.data.tick;
  3943. var msPerTick = 50;
  3944. var dayRatio = 0;
  3945. var nightRatio = 0;
  3946. var barWidth = 130;
  3947.  
  3948. if (ws.tickData) {
  3949. if (ws.tickData.dayEndTick) {
  3950. if (ws.tickData.dayEndTick > 0) {
  3951. var dayLength = ws.tickData.dayEndTick - ws.tickData.cycleStartTick;
  3952. var dayTicksRemaining = ws.tickData.dayEndTick - currentTick;
  3953.  
  3954. dayRatio = 1 - dayTicksRemaining / dayLength;
  3955. }
  3956. } else if (ws.tickData.nightEndTick > 0) {
  3957. var nightLength = ws.tickData.nightEndTick - ws.tickData.cycleStartTick;
  3958. var nightTicksRemaining = ws.tickData.nightEndTick - currentTick;
  3959.  
  3960. dayRatio = 1;
  3961. nightRatio = 1 - nightTicksRemaining / nightLength;
  3962. };
  3963.  
  3964. var currentPosition = (dayRatio * 1 / 2 + nightRatio * 1 / 2) * -barWidth;
  3965. var offsetPosition = currentPosition + barWidth / 2;
  3966.  
  3967. if (offsetPosition) {
  3968. ws.dayTicker = Math.round(offsetPosition);
  3969. };
  3970. };
  3971. };
  3972.  
  3973. if (ws.data.name == "PartyInfo") {
  3974. ws.partyInfo = ws.data.response;
  3975. setTimeout(() => {
  3976. for (let i in ws.partyInfo) {
  3977. if (ws.partyInfo[i].playerUid == ws.uid && ws.partyInfo[i].isLeader) {
  3978. ws.network.sendRpc({
  3979. name: "SetPartyMemberCanSell",
  3980. uid: game.world.myUid,
  3981. canSell: 1
  3982. });
  3983. ws.network.sendRpc({
  3984. name: "SetOpenParty",
  3985. isOpen: 1
  3986. });
  3987. setTimeout(() => {
  3988. ws.network.sendRpc({
  3989. name: "SetPartyName",
  3990. partyName: ws.cloneId + ''
  3991. });
  3992. }, 1000);
  3993. };
  3994. };
  3995. }, 1750);
  3996. };
  3997.  
  3998. if (ws.data.name == "SetItem") {
  3999. ws.inventory[ws.data.response.itemName] = ws.data.response;
  4000.  
  4001. if (!ws.inventory[ws.data.response.itemName].stacks) {
  4002. delete ws.inventory[ws.data.response.itemName];
  4003. };
  4004.  
  4005. if (ws.data.response.itemName == "ZombieShield" && ws.data.response.stacks) {
  4006. ws.network.sendRpc({
  4007. name: "EquipItem",
  4008. itemName: "ZombieShield",
  4009. tier: data.response.tier
  4010. });
  4011. };
  4012. };
  4013.  
  4014. if (ws.data.name == "PartyApplicant") {
  4015. ws.partyApplicant = ws.data.response;
  4016. if (ws.partyApplicant.applicantUid == game.world.myUid) {
  4017. ws.network.sendRpc({
  4018. name: "PartyApplicantDecide",
  4019. applicantUid: game.world.myUid,
  4020. accepted: 1
  4021. });
  4022. };
  4023. };
  4024.  
  4025. if ((game.world.entities[ws.uid] && game.world.getEntityByUid(ws.uid))) {
  4026. for (let socket in window.allSockets) {
  4027. let wss = window.allSockets[socket];
  4028.  
  4029. if (wss) {
  4030. let {
  4031. uid,
  4032. cloneId
  4033. } = wss;
  4034.  
  4035. if (((game.world.entities[uid] && game.world.getEntityByUid(uid))) && (game.world.getEntityByUid(uid)).targetTick)
  4036. (game.world.getEntityByUid(uid)).targetTick.name = (cloneId).toString();
  4037. };
  4038. };
  4039. };
  4040.  
  4041. if (ws.data.name == "ReceiveChatMessage") {
  4042. ws.message = ws.data;
  4043.  
  4044. if (ws.message.response.message == "!move" && ws.message.response.uid == game.world.myUid) {
  4045. ws.mousemove = true;
  4046. };
  4047.  
  4048. if (ws.message.response.message == "!unmove" && ws.message.response.uid == game.world.myUid) {
  4049. ws.mousemove = false;
  4050. };
  4051.  
  4052. if (ws.message.response.message == `#` && ws.message.response.uid == game.world.myUid) {
  4053. let word = ws.message.response.message;
  4054. let uid = '';
  4055.  
  4056. for (let i = 0; i < 30; i++) {
  4057. if (Math.round(word[i] == 0 || word[i] == 1 || word[i] == 2 || word[i] == 3 || word[i] == 4 || word[i] == 5 || word[i] == 6 || word[i] == 7 || word[i] == 8 || word[i] == 9)) {
  4058. uid += word[i]
  4059. };
  4060.  
  4061. uid = Math.round(uid);
  4062. ws.playerUid = uid;
  4063. };
  4064. };
  4065.  
  4066. if (ws.message.response.message == "!aim" && ws.message.response.uid == game.world.myUid) {
  4067. window.move = true;
  4068. };
  4069.  
  4070. if (ws.message.response.message == "!unaim" && ws.message.response.uid == game.world.myUid) {
  4071. window.move = false;
  4072. };
  4073.  
  4074. if (ws.message.response.message == "!c" && ws.message.response.uid == game.world.myUid) {
  4075. isOnControl = true;
  4076. };
  4077.  
  4078. if (ws.message.response.message == `!c ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4079. isOnControl = true;
  4080. };
  4081.  
  4082. if (ws.message.response.message == "!!c" && ws.message.response.uid == game.world.myUid) {
  4083. isOnControl = false;
  4084. };
  4085.  
  4086. if (ws.message.response.message == `!!c ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4087. isOnControl = false;
  4088. };
  4089.  
  4090. if (ws.message.response.message == `!psk ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4091. ws.network.sendRpc({
  4092. name: "SendChatMessage",
  4093. channel: "Local",
  4094. message: `${ws.cloneId}: ${ws.psk.response.partyShareKey}`
  4095. });
  4096. };
  4097.  
  4098. if (ws.message.response.message == "!stats") {
  4099. ws.network.sendRpc({
  4100. name: "SendChatMessage",
  4101. channel: "Local",
  4102. message: `${ws.players[ws.message.response.uid].name}, W: ${counter(ws.players[ws.message.response.uid].wood)}, S: ${counter(ws.players[ws.message.response.uid].stone)}, G: ${counter(ws.players[ws.message.response.uid].gold)}, T: ${Math.floor(ws.players[ws.message.response.uid].token)};`
  4103. });
  4104. };
  4105.  
  4106. if (ws.message.response.message == "!s" && ws.message.response.uid == game.world.myUid) {
  4107. ws.network.sendRpc({
  4108. name: "SendChatMessage",
  4109. channel: "Local",
  4110. message: `${ws.players[ws.uid].name}, W: ${counter(ws.players[ws.uid].wood)}, S: ${counter(ws.players[ws.uid].stone)}, G: ${counter(ws.players[ws.uid].gold)}, ID: ${ws.cloneId};`
  4111. });
  4112. };
  4113.  
  4114. if (ws.message.response.message == "!h" && ws.message.response.uid == game.world.myUid) {
  4115. ws.autohi = !ws.autohi;
  4116.  
  4117. if (ws.autohi) {
  4118. window.autohiBot = true;
  4119. } else {
  4120. window.autohiBot = false;
  4121. };
  4122. };
  4123.  
  4124. if (ws.message.response.message == "!ahrc" && ws.message.response.uid == game.world.myUid) {
  4125. ws.ahrc = true;
  4126. };
  4127.  
  4128. if (ws.message.response.message == `!ahrc ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4129. ws.ahrc = true;
  4130. };
  4131.  
  4132. if (ws.message.response.message == "!!ahrc" && ws.message.response.uid == game.world.myUid) {
  4133. ws.ahrc = false;
  4134. };
  4135.  
  4136. if (ws.message.response.message == `!!ahrc ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4137. ws.ahrc = false;
  4138. };
  4139.  
  4140. if (ws.message.response.message == "!space" && ws.message.response.uid == game.world.myUid) {
  4141. ws.network.sendInput({
  4142. space: 0
  4143. })
  4144. ws.network.sendInput({
  4145. space: 1
  4146. });
  4147. };
  4148.  
  4149. if (ws.message.response.message == `${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4150. ws.network.sendInput({
  4151. space: 0
  4152. })
  4153. ws.network.sendInput({
  4154. space: 1
  4155. });
  4156.  
  4157. ws.network.sendRpc({
  4158. name: 'JoinPartyByShareKey',
  4159. partyShareKey: game.ui.getPlayerPartyShareKey()
  4160. });
  4161. };
  4162.  
  4163. if (ws.message.response.message == `!dc` && ws.message.response.uid == game.world.myUid) {
  4164. ws.network.sendPacket({}, {});
  4165. };
  4166.  
  4167. if (ws.message.response.message == `!dc ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4168. ws.network.sendPacket({}, {});
  4169. };
  4170.  
  4171. if (ws.message.response.message == "!upgrade" && ws.message.response.uid == game.world.myUid) {
  4172. for (let i in ws.buildings) {
  4173. if (ws.buildings[i].type == "GoldMine") {
  4174. ws.network.sendRpc({
  4175. name: "UpgradeBuilding",
  4176. uid: ws.buildings[i].uid
  4177. })
  4178. }
  4179. setTimeout(() => {
  4180. ws.network.sendRpc({
  4181. name: "UpgradeBuilding",
  4182. uid: ws.buildings[i].uid
  4183. })
  4184. }, 100);
  4185. };
  4186. };
  4187.  
  4188. if (ws.message.response.message == "!autobomb" && ws.message.response.uid == game.world.myUid) {
  4189. ws.raid = true;
  4190. };
  4191.  
  4192. if (ws.message.response.message == "!!autobomb" && ws.message.response.uid == game.world.myUid) {
  4193. ws.raid = false;
  4194. };
  4195.  
  4196. if (ws.message.response.message == `!respawn` && ws.message.response.uid == game.world.myUid) {
  4197. ws.respawn = true;
  4198. };
  4199.  
  4200. if (ws.message.response.message == `!respawn ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4201. ws.respawn = true;
  4202. };
  4203.  
  4204. if (ws.message.response.message == "!!respawn" && ws.message.response.uid == game.world.myUid) {
  4205. ws.respawn = false;
  4206. };
  4207.  
  4208. if (ws.message.response.message == `!!respawn ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4209. ws.respawn = false;
  4210. };
  4211.  
  4212. if (ws.message.response.message == `!join ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4213. ws.network.sendRpc({
  4214. name: "JoinPartyByShareKey",
  4215. partyShareKey: game.ui.getPlayerPartyShareKey() + ""
  4216. });
  4217. };
  4218.  
  4219. if (ws.message.response.message.startsWith(`!joinPsk ${ws.cloneId}`) && ws.message.response.uid == game.world.myUid) {
  4220. let args = ws.message.response.message.split(' ');
  4221.  
  4222. ws.network.sendRpc({
  4223. name: "JoinPartyByShareKey",
  4224. partyShareKey: args[2]
  4225. });
  4226. };
  4227.  
  4228. if (ws.message.response.message == `!leave` && ws.message.response.uid == game.world.myUid) {
  4229. ws.network.sendRpc({
  4230. name: "LeaveParty"
  4231. });
  4232. };
  4233.  
  4234. if (ws.message.response.message == `!leave ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  4235. ws.network.sendRpc({
  4236. name: "LeaveParty"
  4237. });
  4238. };
  4239.  
  4240. if (ws.message.response.message == "!up" && ws.message.response.uid == game.world.myUid) {
  4241. ws.network.sendRpc({
  4242. name: "SendChatMessage",
  4243. channel: "Local",
  4244. message: "Successfully upgraded all!"
  4245. });
  4246.  
  4247. for (let i in ws.buildings) {
  4248. ws.network.sendRpc({
  4249. name: "BuyItem",
  4250. itemName: ws.buildings[i].uid
  4251. });
  4252. };
  4253. };
  4254.  
  4255. if (ws.message.response.message == "!upStash" && ws.message.response.uid == game.world.myUid) {
  4256. ws.network.sendRpc({
  4257. name: "SendChatMessage",
  4258. channel: "Local",
  4259. message: "Successfully upgraded stash!"
  4260. });
  4261.  
  4262. for (let i in ws.buildings) {
  4263. if (ws.buildings[i].type == "GoldStash") {
  4264. ws.network.sendRpc({
  4265. name: "UpgradeBuilding",
  4266. uid: ws.buildings[i].uid
  4267. });
  4268. };
  4269. };
  4270. };
  4271.  
  4272. if (ws.message.response.message == "!up1" && ws.message.response.uid == game.world.myUid) {
  4273. ws.network.sendRpc({
  4274. name: "SendChatMessage",
  4275. channel: "Local",
  4276. message: "Successfully upgraded wall(s)!"
  4277. });
  4278.  
  4279. for (let i in ws.buildings) {
  4280. if (ws.buildings[i].type == "Wall") {
  4281. ws.network.sendRpc({
  4282. name: "UpgradeBuilding",
  4283. uid: ws.buildings[i].uid
  4284. });
  4285. };
  4286. };
  4287. };
  4288.  
  4289. if (ws.message.response.message == "!up2" && ws.message.response.uid == game.world.myUid) {
  4290. ws.network.sendRpc({
  4291. name: "SendChatMessage",
  4292. channel: "Local",
  4293. message: "Successfully upgraded door(s)!"
  4294. });
  4295.  
  4296. for (let i in ws.buildings) {
  4297. if (ws.buildings[i].type == "Door") {
  4298. ws.network.sendRpc({
  4299. name: "UpgradeBuilding",
  4300. uid: ws.buildings[i].uid
  4301. });
  4302. };
  4303. };
  4304. };
  4305.  
  4306. if (ws.message.response.message == "!up3" && ws.message.response.uid == game.world.myUid) {
  4307. ws.network.sendRpc({
  4308. name: "SendChatMessage",
  4309. channel: "Local",
  4310. message: "Successfully upgraded slowtrap(s)!"
  4311. });
  4312.  
  4313. for (let i in ws.buildings) {
  4314. if (ws.buildings[i].type == "SlowTrap") {
  4315. ws.network.sendRpc({
  4316. name: "UpgradeBuilding",
  4317. uid: ws.buildings[i].uid
  4318. });
  4319. };
  4320. };
  4321. };
  4322.  
  4323. if (ws.message.response.message == "!up4" && ws.message.response.uid == game.world.myUid) {
  4324. ws.network.sendRpc({
  4325. name: "SendChatMessage",
  4326. channel: "Local",
  4327. message: "Successfully upgraded arrow(s)!"
  4328. });
  4329.  
  4330. for (let i in ws.buildings) {
  4331. if (ws.buildings[i].type == "ArrowTower") {
  4332. ws.network.sendRpc({
  4333. name: "UpgradeBuilding",
  4334. uid: ws.buildings[i].uid
  4335. });
  4336. };
  4337. };
  4338. };
  4339.  
  4340. if (ws.message.response.message == "!up5" && ws.message.response.uid == game.world.myUid) {
  4341. ws.network.sendRpc({
  4342. name: "SendChatMessage",
  4343. channel: "Local",
  4344. message: "Successfully upgraded cannon(s)!"
  4345. });
  4346.  
  4347. for (let i in ws.buildings) {
  4348. if (ws.buildings[i].type == "CannonTower") {
  4349. ws.network.sendRpc({
  4350. name: "UpgradeBuilding",
  4351. uid: ws.buildings[i].uid
  4352. });
  4353. };
  4354. };
  4355. };
  4356.  
  4357. if (ws.message.response.message == "!up6" && ws.message.response.uid == game.world.myUid) {
  4358. ws.network.sendRpc({
  4359. name: "SendChatMessage",
  4360. channel: "Local",
  4361. message: "Successfully upgraded Melee(s)!"
  4362. });
  4363.  
  4364. for (let i in ws.buildings) {
  4365. if (ws.buildings[i].type == "MeeleTower") {
  4366. ws.network.sendRpc({
  4367. name: "UpgradeBuilding",
  4368. uid: ws.buildings[i].uid
  4369. });
  4370. };
  4371. };
  4372. };
  4373.  
  4374. if (ws.message.response.message == "!up7" && ws.message.response.uid == game.world.myUid) {
  4375. ws.network.sendRpc({
  4376. name: "SendChatMessage",
  4377. channel: "Local",
  4378. message: "Successfully upgraded bomb(s)!"
  4379. });
  4380.  
  4381. for (let i in ws.buildings) {
  4382. if (ws.buildings[i].type == "BombTower") {
  4383. ws.network.sendRpc({
  4384. name: "UpgradeBuilding",
  4385. uid: ws.buildings[i].uid
  4386. });
  4387. };
  4388. };
  4389. };
  4390.  
  4391. if (ws.message.response.message == "!up8" && ws.message.response.uid == game.world.myUid) {
  4392. ws.network.sendRpc({
  4393. name: "SendChatMessage",
  4394. channel: "Local",
  4395. message: "Successfully upgraded mage(s)!"
  4396. });
  4397.  
  4398. for (let i in ws.buildings) {
  4399. if (ws.buildings[i].type == "MagicTower") {
  4400. ws.network.sendRpc({
  4401. name: "UpgradeBuilding",
  4402. uid: ws.buildings[i].uid
  4403. });
  4404. };
  4405. };
  4406. };
  4407.  
  4408. if (ws.message.response.message == "!up9" && ws.message.response.uid == game.world.myUid) {
  4409. ws.network.sendRpc({
  4410. name: "SendChatMessage",
  4411. channel: "Local",
  4412. message: "Successfully upgraded gold mine(s)!"
  4413. });
  4414.  
  4415. for (let i in ws.buildings) {
  4416. if (ws.buildings[i].type == "GoldMine") {
  4417. ws.network.sendRpc({
  4418. name: "UpgradeBuilding",
  4419. uid: ws.buildings[i].uid
  4420. });
  4421. };
  4422. };
  4423. };
  4424.  
  4425. if (ws.message.response.message == "!up0" && ws.message.response.uid == game.world.myUid) {
  4426. ws.network.sendRpc({
  4427. name: "SendChatMessage",
  4428. channel: "Local",
  4429. message: "Successfully upgraded harvester(s)!"
  4430. });
  4431.  
  4432. for (let i in ws.buildings) {
  4433. if (ws.buildings[i].type == "ResourceHarvester") {
  4434. ws.network.sendRpc({
  4435. name: "UpgradeBuilding",
  4436. uid: ws.buildings[i].uid
  4437. });
  4438. };
  4439. };
  4440. };
  4441.  
  4442. if (ws.message.response.message == "a" && ws.message.response.uid == game.world.myUid) {
  4443. ws.network.sendInput({
  4444. left: 1
  4445. });
  4446. ws.network.sendInput({
  4447. right: 0
  4448. });
  4449. }
  4450. if (ws.message.response.message == "d" && ws.message.response.uid == game.world.myUid) {
  4451. ws.network.sendInput({
  4452. right: 1
  4453. });
  4454. ws.network.sendInput({
  4455. left: 0
  4456. });
  4457. }
  4458. if (ws.message.response.message == "w" && ws.message.response.uid == game.world.myUid) {
  4459. ws.network.sendInput({
  4460. up: 1
  4461. });
  4462. ws.network.sendInput({
  4463. down: 0
  4464. });
  4465. }
  4466. if (ws.message.response.message == "s" && ws.message.response.uid == game.world.myUid) {
  4467. ws.network.sendInput({
  4468. down: 1
  4469. });
  4470. ws.network.sendInput({
  4471. up: 0
  4472. });
  4473. }
  4474. if (ws.message.response.message == "f" && ws.message.response.uid == game.world.myUid) {
  4475. ws.network.sendInput({
  4476. left: 0
  4477. });
  4478. ws.network.sendInput({
  4479. right: 0
  4480. });
  4481. ws.network.sendInput({
  4482. down: 0
  4483. });
  4484. ws.network.sendInput({
  4485. up: 0
  4486. });
  4487. }
  4488. }
  4489. if (ws.autohi) {
  4490. if (ws.data.entities) {
  4491. let sus = setInterval(() => {
  4492. let msg = "";
  4493. let msg2 = "";
  4494. for (let i = 0; i < 15; i++) {
  4495. msg += `&#${Math.random() * 2500 + 100 | 0};`;
  4496. }
  4497. for (let i = 0; i < 15; i++) {
  4498. msg2 += `&#${Math.random() * 2500 + 100 | 0};`;
  4499. }
  4500. ws.network.sendRpc({
  4501. name: "SendChatMessage",
  4502. message: `${msg}${msg2}`,
  4503. channel: "Local"
  4504. });
  4505. });
  4506. };
  4507. };
  4508.  
  4509. if (ws.data.name == "Leaderboard") {
  4510. for (let i in ws.data.response) {
  4511. ws.lb[ws.data.response[i].rank + 1] = ws.data.response[i];
  4512. }
  4513. if (ws.ahrc) {
  4514. for (let uid in ws.buildings) {
  4515. let obj = ws.buildings[uid];
  4516. ws.network.sendRpc({
  4517. name: "CollectHarvester",
  4518. uid: obj.uid
  4519. });
  4520. if (obj.type == "Harvester" && obj.tier == 1) {
  4521. ws.network.sendRpc({
  4522. name: "AddDepositToHarvester",
  4523. uid: obj.uid,
  4524. deposit: 20 / 2
  4525. });
  4526. }
  4527. if (obj.type == "Harvester" && obj.tier == 2) {
  4528. ws.network.sendRpc({
  4529. name: "AddDepositToHarvester",
  4530. uid: obj.uid,
  4531. deposit: 30 / 2
  4532. });
  4533. }
  4534. if (obj.type == "Harvester" && obj.tier == 3) {
  4535. ws.network.sendRpc({
  4536. name: "AddDepositToHarvester",
  4537. uid: obj.uid,
  4538. deposit: 35 / 2
  4539. });
  4540. }
  4541. if (obj.type == "Harvester" && obj.tier == 4) {
  4542. ws.network.sendRpc({
  4543. name: "AddDepositToHarvester",
  4544. uid: obj.uid,
  4545. deposit: 50 / 2
  4546. });
  4547. }
  4548. if (obj.type == "Harvester" && obj.tier == 5) {
  4549. ws.network.sendRpc({
  4550. name: "AddDepositToHarvester",
  4551. uid: obj.uid,
  4552. deposit: 60 / 2
  4553. });
  4554. }
  4555. if (obj.type == "Harvester" && obj.tier == 6) {
  4556. ws.network.sendRpc({
  4557. name: "AddDepositToHarvester",
  4558. uid: obj.uid,
  4559. deposit: 70 / 2
  4560. });
  4561. }
  4562. if (obj.type == "Harvester" && obj.tier == 7) {
  4563. ws.network.sendRpc({
  4564. name: "AddDepositToHarvester",
  4565. uid: obj.uid,
  4566. deposit: 120 / 2
  4567. });
  4568. }
  4569. if (obj.type == "Harvester" && obj.tier == 8) {
  4570. ws.network.sendRpc({
  4571. name: "AddDepositToHarvester",
  4572. uid: obj.uid,
  4573. deposit: 150 / 2
  4574. });
  4575. }
  4576. };
  4577. };
  4578. };
  4579.  
  4580. if (ws.respawn) {
  4581. ws.network.sendInput({
  4582. respawn: 1
  4583. });
  4584.  
  4585. if (ws.raid) {
  4586. ws.space = true;
  4587.  
  4588. ws.network.sendRpc({
  4589. name: 'BuyItem',
  4590. itemName: 'Bomb',
  4591. tier: 1
  4592. });
  4593.  
  4594. ws.network.sendRpc({
  4595. name: 'EquipItem',
  4596. itemName: 'Bomb',
  4597. tier: 1
  4598. });
  4599. };
  4600. };
  4601.  
  4602. if (ws.space) {
  4603. ws.network.sendInput({
  4604. space: 0
  4605. })
  4606. ws.network.sendInput({
  4607. space: 1
  4608. });
  4609. };
  4610.  
  4611. if (ws.data.name == "LocalBuilding") {
  4612. for (let i in ws.data.response) {
  4613. ws.buildings[ws.data.response[i].uid] = ws.data.response[i];
  4614. if (ws.buildings[ws.data.response[i].uid].dead) {
  4615. delete ws.buildings[ws.data.response[i].uid];
  4616. };
  4617. };
  4618. };
  4619.  
  4620. if (ws.data.name == "AddParty") {
  4621. if (ws.addparties) {
  4622. ws.parties[ws.data.response.partyId] = ws.data.response;
  4623. };
  4624. };
  4625.  
  4626. if (ws.data.name == "RemoveParty") {
  4627. if (ws.addparties) {
  4628. if (ws.parties[ws.data.response.partyId].partyId) {
  4629. delete ws.parties[ws.data.response.partyId];
  4630. };
  4631. };
  4632. };
  4633.  
  4634. if (ws.data.name == "PartyShareKey") {
  4635. ws.psk = ws.data;
  4636.  
  4637. altElem.style.display = (ws.psk.response.partyShareKey == game.ui.getPlayerPartyShareKey()) ? "none" : "block";
  4638. };
  4639.  
  4640. if (window.mousemove) {
  4641. let myPlayer = game.ui.playerTick;
  4642. let mouseToWorld = game.renderer.screenToWorld(game.ui.mousePosition.x, game.ui.mousePosition.y);
  4643.  
  4644. if (ws.myPlayer) {
  4645. if (ws.myPlayer.position) {
  4646. ws.network.sendInput({
  4647. mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + mouseToWorld.x) * 100, (-ws.myPlayer.position.y + mouseToWorld.y) * 100)
  4648. })
  4649.  
  4650. if (1 == 1) {
  4651. if (ws.myPlayer.position.y - mouseToWorld.y > 10) {
  4652. ws.network.sendInput({
  4653. down: 0
  4654. });
  4655. } else {
  4656. ws.network.sendInput({
  4657. down: 1
  4658. });
  4659. };
  4660.  
  4661. if (-ws.myPlayer.position.y + mouseToWorld.y > 10) {
  4662. ws.network.sendInput({
  4663. up: 0
  4664. });
  4665. } else {
  4666. ws.network.sendInput({
  4667. up: 1
  4668. });
  4669. };
  4670.  
  4671. if (-ws.myPlayer.position.x + mouseToWorld.x > 10) {
  4672. ws.network.sendInput({
  4673. left: 0
  4674. });
  4675. } else {
  4676. ws.network.sendInput({
  4677. left: 1
  4678. });
  4679. };
  4680.  
  4681. if (ws.myPlayer.position.x - mouseToWorld.x > 10) {
  4682. ws.network.sendInput({
  4683. right: 0
  4684. });
  4685. } else {
  4686. ws.network.sendInput({
  4687. right: 1
  4688. });
  4689. };
  4690. };
  4691. };
  4692. };
  4693. };
  4694.  
  4695. if (window.autoraid) {
  4696. if (ws.myPlayer) {
  4697. if (findNearestAltToStash().uid == ws.uid) {
  4698. if (Object.values(game.ui.buildings).length > 0 && !ws.myPlayer.dead) {
  4699. ws.network.sendRpc({
  4700. name: "JoinPartyByShareKey",
  4701. partyShareKey: game.ui.getPlayerPartyShareKey() + ""
  4702. });
  4703. } else {
  4704. for (let i in window.allSockets) {
  4705. if (Object.values(window.allSockets[i].buildings).length > 0 && !ws.myPlayer.dead) {
  4706. ws.network.sendRpc({
  4707. name: "JoinPartyByShareKey",
  4708. partyShareKey: window.allSockets[i].psk.response.partyShareKey + ""
  4709. });
  4710. };
  4711. };
  4712. };
  4713.  
  4714. ws.network.sendInput({
  4715. space: 0
  4716. });
  4717. ws.network.sendInput({
  4718. space: 1
  4719. });
  4720. };
  4721. };
  4722. };
  4723.  
  4724. if (ws.data.entities) {
  4725. if (ws.letbotsjoin) {
  4726. if (ws.myPlayer.gold > 100) {
  4727. ws.network.sendRpc({
  4728. name: 'LeaveParty'
  4729. });
  4730. } else {
  4731. ws.network.sendRpc({
  4732. name: "JoinPartyByShareKey",
  4733. partyShareKey: game.ui.getPlayerPartyShareKey() + ""
  4734. });
  4735. };
  4736. };
  4737.  
  4738. if (ws.letbotsjoin2) {
  4739. if (ws.myPlayer.gold > 500) {
  4740. ws.network.sendRpc({
  4741. name: 'LeaveParty'
  4742. });
  4743. } else {
  4744. ws.network.sendRpc({
  4745. name: "JoinPartyByShareKey",
  4746. partyShareKey: game.ui.getPlayerPartyShareKey() + ""
  4747. });
  4748. };
  4749. };
  4750.  
  4751. if (ws.letbotsjoin3) {
  4752. if (ws.myPlayer.gold > 8500) {
  4753. ws.network.sendRpc({
  4754. name: 'LeaveParty'
  4755. });
  4756. } else {
  4757. ws.network.sendRpc({
  4758. name: "JoinPartyByShareKey",
  4759. partyShareKey: game.ui.getPlayerPartyShareKey() + ""
  4760. });
  4761. };
  4762. };
  4763. };
  4764.  
  4765. if (window.lock) {
  4766. addEventListener('mousedown', () => {
  4767. window.count++;
  4768.  
  4769. window.count == 1 && (
  4770. window.lockPos = {
  4771. x: game.renderer.screenToWorld(Object.freeze(game.ui.mousePosition).x, 0).x,
  4772. y: game.renderer.screenToWorld(0, Object.freeze(game.ui.mousePosition).y).y
  4773. }
  4774. );
  4775. });
  4776.  
  4777. let pos = window.lockPos;
  4778.  
  4779. if (!pos) return;
  4780.  
  4781. if (ws.myPlayer) {
  4782. ((position) => {
  4783. let x = Math.round(position.x);
  4784. let y = Math.round(position.y);
  4785.  
  4786. ws.network.sendInput({
  4787. mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + x) * 100, (-ws.myPlayer.position.y + y) * 100)
  4788. });
  4789.  
  4790. let myX = Math.round(ws.myPlayer.position.x);
  4791. let myY = Math.round(ws.myPlayer.position.y);
  4792.  
  4793. let offset = 6;
  4794.  
  4795. if (-myX + x > offset) {
  4796. ws.network.sendInput({
  4797. left: 0
  4798. });
  4799. } else {
  4800. ws.network.sendInput({
  4801. left: 1
  4802. });
  4803. };
  4804.  
  4805. if (myX - x > offset) {
  4806. ws.network.sendInput({
  4807. right: 0
  4808. });
  4809. } else {
  4810. ws.network.sendInput({
  4811. right: 1
  4812. });
  4813. }
  4814.  
  4815. if (-myY + y > offset) {
  4816. ws.network.sendInput({
  4817. up: 0
  4818. });
  4819. } else {
  4820. ws.network.sendInput({
  4821. up: 1
  4822. });
  4823. };
  4824.  
  4825. if (myY - y > offset) {
  4826. ws.network.sendInput({
  4827. down: 0
  4828. });
  4829. } else {
  4830. ws.network.sendInput({
  4831. down: 1
  4832. });
  4833. };
  4834. })(pos);
  4835. };
  4836. };
  4837.  
  4838. if (ws.automove) {
  4839. let playerPos = game.world.entities[game.world.myUid].targetTick.position;
  4840.  
  4841. let x = Math.round(playerPos.x);
  4842. let y = Math.round(playerPos.y);
  4843.  
  4844. let pos = {
  4845. x: x,
  4846. y: y
  4847. };
  4848.  
  4849. if (ws.myPlayer) {
  4850. ((position) => {
  4851. let x = Math.round(position.x);
  4852. let y = Math.round(position.y);
  4853.  
  4854. ws.network.sendInput({
  4855. mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + x) * 100, (-ws.myPlayer.position.y + y) * 100)
  4856. })
  4857.  
  4858. let myX = Math.round(ws.myPlayer.position.x);
  4859. let myY = Math.round(ws.myPlayer.position.y);
  4860.  
  4861. let offset = 6;
  4862.  
  4863. if (-myX + x > offset) {
  4864. ws.network.sendInput({
  4865. left: 0
  4866. });
  4867. } else {
  4868. ws.network.sendInput({
  4869. left: 1
  4870. });
  4871. };
  4872.  
  4873. if (myX - x > offset) {
  4874. ws.network.sendInput({
  4875. right: 0
  4876. });
  4877. } else {
  4878. ws.network.sendInput({
  4879. right: 1
  4880. });
  4881. };
  4882.  
  4883. if (-myY + y > offset) {
  4884. ws.network.sendInput({
  4885. up: 0
  4886. });
  4887. } else {
  4888. ws.network.sendInput({
  4889. up: 1
  4890. });
  4891. };
  4892.  
  4893. if (myY - y > offset) {
  4894. ws.network.sendInput({
  4895. down: 0
  4896. });
  4897. } else {
  4898. ws.network.sendInput({
  4899. down: 1
  4900. });
  4901. };
  4902. })(pos);
  4903. };
  4904. };
  4905.  
  4906. if (ws.autoaim) {
  4907. let myPlayer = game.ui.playerTick;
  4908. let mouseToWorld = game.renderer.screenToWorld(game.ui.mousePosition.x, game.ui.mousePosition.y);
  4909.  
  4910. if (ws.myPlayer) {
  4911. if (ws.myPlayer.position) {
  4912. ws.network.sendInput({
  4913. mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + mouseToWorld.x) * 100, (-ws.myPlayer.position.y + mouseToWorld.y) * 100)
  4914. });
  4915.  
  4916. let offset = 6;
  4917.  
  4918. if (1 == 1) {
  4919. if (ws.myPlayer.position.y - mouseToWorld.y > offset) {
  4920. ws.network.sendInput({
  4921. down: 0
  4922. });
  4923. } else {
  4924. ws.network.sendInput({
  4925. down: 0
  4926. });
  4927. };
  4928. if (-ws.myPlayer.position.y + mouseToWorld.y > offset) {
  4929. ws.network.sendInput({
  4930. up: 0
  4931. });
  4932. } else {
  4933. ws.network.sendInput({
  4934. up: 0
  4935. });
  4936. };
  4937. if (-ws.myPlayer.position.x + mouseToWorld.x > offset) {
  4938. ws.network.sendInput({
  4939. left: 0
  4940. });
  4941. } else {
  4942. ws.network.sendInput({
  4943. left: 0
  4944. });
  4945. };
  4946. if (ws.myPlayer.position.x - mouseToWorld.x > offset) {
  4947. ws.network.sendInput({
  4948. right: 0
  4949. });
  4950. } else {
  4951. ws.network.sendInput({
  4952. right: 0
  4953. });
  4954. };
  4955. };
  4956. };
  4957. };
  4958. };
  4959.  
  4960. if (ws.data.opcode == 0) {
  4961. if (heal) {
  4962. if (ws.myPlayer) {
  4963. let playerHealth = (ws.myPlayer.health / ws.myPlayer.maxHealth) * 100;
  4964.  
  4965. if (playerHealth <= 10) {
  4966. ws.network.sendRpc({
  4967. name: "EquipItem",
  4968. itemName: "HealthPotion",
  4969. tier: 1
  4970. });
  4971. };
  4972. };
  4973.  
  4974. if (ws.myPet) {
  4975. let petHealth = (ws.myPet.health / ws.myPet.maxHealth) * 100;
  4976.  
  4977. if (petHealth <= 10) {
  4978. if (!ws.shouldHealPet) {
  4979. ws.shouldHealPet = true;
  4980.  
  4981. setTimeout(() => {
  4982. ws.shouldHealPet = false;
  4983. }, 300);
  4984.  
  4985. ws.network.sendRpc({
  4986. name: "BuyItem",
  4987. itemName: "PetHealthPotion",
  4988. tier: 1
  4989. });
  4990.  
  4991. ws.network.sendRpc({
  4992. name: "EquipItem",
  4993. itemName: "PetHealthPotion",
  4994. tier: 1
  4995. });
  4996. };
  4997. };
  4998. };
  4999. };
  5000.  
  5001. ws.network.sendRpc({
  5002. name: "BuyItem",
  5003. itemName: "HealthPotion",
  5004. tier: 1
  5005. });
  5006. };
  5007.  
  5008. if (ws.activebow) {
  5009. ws.network.sendInput({
  5010. space: 0
  5011. });
  5012.  
  5013. ws.network.sendInput({
  5014. space: 1
  5015. });
  5016. };
  5017.  
  5018. switch (ws.data.opcode) {
  5019. case 4:
  5020. ws.send(iframeWindow.game.network.codec.encode(6, {}));
  5021.  
  5022. iframe.remove();
  5023.  
  5024. ws.network.sendRpc({
  5025. name: "JoinPartyByShareKey",
  5026. partyShareKey: game.ui.playerPartyShareKey
  5027. });
  5028.  
  5029. break;
  5030. };
  5031. };
  5032. });
  5033. };
  5034.  
  5035. (function() {
  5036. document.getElementsByClassName("hud-party-actions")[0].insertAdjacentHTML("afterend", `
  5037. <button class="btn btn-blue" style="width: 120px; margin: 10px 0 0 0;box-shadow: none;" onclick="game.network.sendRpc({ name: 'LeaveParty' });"> Leave </button>
  5038. <input style="margin: 10px 10px -5px 15px; width: 281px;" placeholder="Party Share Key" value="" class="btn partyShareKey" />
  5039. <button class="btn btn-blue" style="width: 125px; margin: 10px 0 -1px 0;" onclick="game.network.sendRpc({ name: 'JoinPartyByShareKey', partyShareKey: document.getElementsByClassName('partyShareKey')[0].value })"> Join </button>
  5040. `);
  5041. })();
  5042.  
  5043. let getElement = (Element) => {
  5044. return document.getElementsByClassName(Element);
  5045. };
  5046.  
  5047. let getId = (Element) => {
  5048. return document.getElementById(Element);
  5049. };
  5050.  
  5051. getElement("hud-party-members")[0].style.display = "block";
  5052. getElement("hud-party-grid")[0].style.display = "none";
  5053.  
  5054. game.script.parties = {};
  5055.  
  5056. // Closed Parties
  5057.  
  5058. let privateTab = document.createElement("a");
  5059.  
  5060. privateTab.className = "hud-party-tabs-link";
  5061. privateTab.id = "privateTab";
  5062. privateTab.innerHTML = "Closed Parties";
  5063.  
  5064. let privateHud = document.createElement("div");
  5065.  
  5066. privateHud.className = "hud-private hud-party-grid";
  5067. privateHud.id = "privateHud";
  5068. privateHud.style = "display: none;";
  5069. getElement("hud-party-tabs")[0].appendChild(privateTab);
  5070. getElement("hud-menu hud-menu-party")[0].insertBefore(privateHud, getElement("hud-party-actions")[0]);
  5071.  
  5072. // Keys
  5073.  
  5074. let keyTab = document.createElement("a");
  5075.  
  5076. keyTab.className = "hud-party-tabs-link";
  5077. keyTab.id = "keyTab";
  5078. keyTab.innerHTML = "Party Keys";
  5079. getElement("hud-party-tabs")[0].appendChild(keyTab);
  5080.  
  5081. let keyHud = document.createElement("div");
  5082.  
  5083. keyHud.className = "hud-keys hud-party-grid";
  5084. keyHud.id = "keyHud";
  5085. keyHud.style = "display: none;";
  5086. getElement("hud-menu hud-menu-party")[0].insertBefore(keyHud, getElement("hud-party-actions")[0]);
  5087.  
  5088. getId("privateTab").onclick = e => {
  5089. for (let i = 0; i < getElement("hud-party-tabs-link").length; i++) {
  5090. getElement("hud-party-tabs-link")[i].className = "hud-party-tabs-link";
  5091. };
  5092.  
  5093. getId("privateTab").className = "hud-party-tabs-link is-active";
  5094. getId("privateHud").setAttribute("style", "display: block;");
  5095.  
  5096. if (getElement("hud-party-members")[0].getAttribute("style") == "display: block;") {
  5097. getElement("hud-party-members")[0].setAttribute("style", "display: none;");
  5098. };
  5099.  
  5100. if (getElement("hud-party-grid")[0].getAttribute("style") == "display: block;") {
  5101. getElement("hud-party-grid")[0].setAttribute("style", "display: none;");
  5102. };
  5103.  
  5104. if (getId("privateHud").getAttribute("style") == "display: none;") {
  5105. getId("privateHud").setAttribute("style", "display: block;");
  5106. };
  5107.  
  5108. if (getId("keyHud").getAttribute("style") == "display: block;") {
  5109. getId("keyHud").setAttribute("style", "display: none;");
  5110. };
  5111. };
  5112.  
  5113. getElement("hud-party-tabs-link")[0].onmouseup = e => {
  5114. getId("privateHud").setAttribute("style", "display: none;");
  5115. getId("keyHud").setAttribute("style", "display: none;");
  5116.  
  5117. if (getId("privateTab").className == "hud-party-tabs-link is-active") {
  5118. getId("privateTab").className = "hud-party-tabs-link"
  5119. };
  5120.  
  5121. if (getId("keyTab").className == "hud-party-tabs-link is-active") {
  5122. getId("keyTab").className = "hud-party-tabs-link"
  5123. };
  5124. };
  5125.  
  5126. getElement("hud-party-tabs-link")[1].onmouseup = e => {
  5127. getId("privateHud").setAttribute("style", "display: none;");
  5128. getId("keyHud").setAttribute("style", "display: none;");
  5129.  
  5130. if (getId("privateTab").className == "hud-party-tabs-link is-active") {
  5131. getId("privateTab").className = "hud-party-tabs-link"
  5132. };
  5133.  
  5134. if (getId("keyTab").className == "hud-party-tabs-link is-active") {
  5135. getId("keyTab").className = "hud-party-tabs-link"
  5136. };
  5137. };
  5138.  
  5139. getId("keyTab").onmouseup = e => {
  5140. for (let i = 0; i < getElement("hud-party-tabs-link").length; i++) {
  5141. getElement("hud-party-tabs-link")[i].className = "hud-party-tabs-link";
  5142. };
  5143.  
  5144. getId("keyTab").className = "hud-party-tabs-link is-active";
  5145. getId("keyHud").setAttribute("style", "display: block;");
  5146.  
  5147. if (getElement("hud-party-members")[0].getAttribute("style") == "display: block;") {
  5148. getElement("hud-party-members")[0].setAttribute("style", "display: none;");
  5149. };
  5150.  
  5151. if (getElement("hud-party-grid")[0].getAttribute("style") == "display: block;") {
  5152. getElement("hud-party-grid")[0].setAttribute("style", "display: none;");
  5153. };
  5154.  
  5155. if (getId("privateHud").getAttribute("style") == "display: block;") {
  5156. getId("privateHud").setAttribute("style", "display: none;");
  5157. };
  5158.  
  5159. if (getId("keyHud").getAttribute("style") == "display: none;") {
  5160. getId("keyHud").setAttribute("style", "display: block;");
  5161. };
  5162. };
  5163.  
  5164. getElement('hud-keys hud-party-grid')[0].innerHTML += "<br><h3>Party Keys</h3><br>"
  5165.  
  5166. game.network.addRpcHandler("PartyShareKey", e => {
  5167. let cpKeyId = `skl${Math.floor(Math.random() * 999999)}`;
  5168. let cpLnkId = `skl${Math.floor(Math.random() * 999999)}`;
  5169.  
  5170. let psk = e.partyShareKey;
  5171.  
  5172. let lnk = `http://zombs.io/#/${game.options.serverId}/${psk}/`;
  5173.  
  5174. getId("keyHud").innerHTML += `<div style="display:inline-block;margin-right:10px;"><p>${psk}</p></div><button class="btn btn-red" id="${cpKeyId}" style="display:inline-block;" onclick="window.copyText('${psk}');">Copy Key</button>&nbsp<button class="btn btn-red" id="${cpLnkId}" style="display:inline-block;" onclick="window.copyText('${lnk}');">Copy Link</button><br />`;
  5175. });
  5176.  
  5177. let parties = "";
  5178.  
  5179. game.network.addRpcHandler("SetPartyList", e => {
  5180. parties = "";
  5181.  
  5182. for (let i in e) {
  5183. if (e[i].isOpen == 0) {
  5184. parties += "<div style=\"width: relative; height: relative;\" class=\"hud-party-link is-disabled\"><strong>" + e[i].partyName + "</strong><span>" + e[i].memberCount + "/4<span></div>";
  5185. };
  5186. };
  5187.  
  5188.  
  5189. getId("privateHud").innerHTML = parties;
  5190. });
  5191.  
  5192. let getIsZombiesActive = function() {
  5193. let isZombiesActive = false;
  5194. for (let i in game.world.entities) {
  5195. if (game.world.entities[i].fromTick.model !== "NeutralTier1") {
  5196. if (game.world.entities[i].fromTick.entityClass == "Npc") {
  5197. isZombiesActive = true;
  5198. };
  5199. };
  5200. };
  5201.  
  5202. return isZombiesActive;
  5203. };
  5204.  
  5205. let getactiveComingbosswaves = function() {
  5206. let activeComingbosswave = false;
  5207. let aftercomingbosswaves = [48, 56, 64, 72, 80, 88, 96, 104, 120];
  5208.  
  5209. for (let i = 0; i < aftercomingbosswaves.length; i++) {
  5210. if (game.ui.playerTick.wave == aftercomingbosswaves[i]) {
  5211. activeComingbosswave = true;
  5212. };
  5213. };
  5214.  
  5215. return activeComingbosswave;
  5216. };
  5217.  
  5218. let getbosswaves = function() {
  5219. let activebosswave = false;
  5220. let allbosswaves = [9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97, 105, 121];
  5221.  
  5222. for (let i = 0; i < allbosswaves.length; i++) {
  5223. if (game.ui.playerTick.wave == allbosswaves[i]) {
  5224. activebosswave = true;
  5225. };
  5226. };
  5227.  
  5228. return activebosswave;
  5229. };
  5230.  
  5231. let bossAlert = document.createElement('p');
  5232.  
  5233. bossAlert.innerHTML = `<i class="fa fa-exclamation-triangle"></i> Boss wave incoming`;
  5234. bossAlert.style.display = "none";
  5235. bossAlert.style.color = "white";
  5236. bossAlert.style.opacity = '0.5';
  5237. document.getElementsByClassName('hud-top-center')[0].appendChild(bossAlert);
  5238.  
  5239. game.network.addRpcHandler("DayCycle", function(e) {
  5240. if (game.ui.playerTick && e.isDay)
  5241. getactiveComingbosswaves() ? bossAlert.style.display = "block" : bossAlert.style.display = "none";
  5242. });
  5243.  
  5244. let inull = true;
  5245. let i1 = true;
  5246. let i2 = true;
  5247. let i3 = true;
  5248.  
  5249. document.addEventListener("keydown", (e) => {
  5250. if (document.activeElement.tagName.toLowerCase() == "input" || document.activeElement.tagName.toLowerCase() == "textarea") {
  5251. Main1Keys = false;
  5252. Main2Keys = false;
  5253. Main3Keys = false;
  5254. } else {
  5255. Main1Keys = true;
  5256. Main2Keys = true;
  5257. Main3Keys = true;
  5258. }
  5259. if (Main1Keys) {
  5260. switch (e.code) {
  5261. case "Insert":
  5262. document.getElementsByClassName("1i")[0].click();
  5263. break;
  5264. case "KeyX":
  5265. document.getElementsByClassName("8i")[0].click();
  5266. break;
  5267. case "KeyZ":
  5268. document.getElementsByClassName("10i")[0].click();
  5269. break;
  5270. case "KeyR":
  5271. healPlayer();
  5272. break;
  5273. case "KeyG":
  5274. document.getElementsByClassName("7i")[0].click();
  5275. break;
  5276.  
  5277. }
  5278. }
  5279. if (Main2Keys) {
  5280. switch (e.code) {
  5281. case "KeyK":
  5282. document.getElementsByClassName("10i5")[0].click();
  5283. break;
  5284. case "Key/":
  5285. document.getElementsByClassName("6i5")[0].click();
  5286. break;
  5287. case "KeyM":
  5288. game.network.sendRpc({
  5289. "name": "BuyItem",
  5290. "itemName": "PetRevive",
  5291. "tier": 1
  5292. })
  5293. game.network.sendRpc({
  5294. "name": "EquipItem",
  5295. "itemName": "PetRevive",
  5296. "tier": 1
  5297. })
  5298. break;
  5299. }
  5300. }
  5301. if (Main3Keys) {
  5302. switch (e.code) {
  5303. case "KeyL":
  5304. document.getElementsByClassName("0i2")[0].click();
  5305. break;
  5306. case "KeyI":
  5307. game.network.sendRpc({
  5308. name: "LeaveParty"
  5309. })
  5310. break;
  5311. }
  5312. }
  5313. });
  5314.  
  5315. document.addEventListener("keydown", e => {
  5316. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  5317. if (e.keyCode == 189) {
  5318. getRss = !getRss;
  5319. };
  5320. };
  5321. });
  5322.  
  5323. let savedTabs = [];
  5324.  
  5325. let gameServers = game.options.servers;
  5326.  
  5327. document.getElementsByClassName('hud-intro-form')[0].insertAdjacentHTML('beforeend', '<button class="btn hud-intro-play" id="hstb">Host Saved Tab</button>');
  5328.  
  5329. let stElem = document.getElementById('savedTabs');
  5330.  
  5331. let newPlayButton = document.getElementsByClassName("hud-intro-play")[0].cloneNode();
  5332.  
  5333. newPlayButton.classList.replace('hud-intro-play', 'longbtn');
  5334. newPlayButton.style.display = "none";
  5335. newPlayButton.style.marginTop = "10px";
  5336. newPlayButton.innerText = "Enter Saved Tab";
  5337.  
  5338. newPlayButton.addEventListener('click', function() {
  5339. game.ui.components.Intro.componentElem.style.display = "none";
  5340. });
  5341.  
  5342. document.getElementsByClassName('hud-intro-play')[0].insertAdjacentElement("beforebegin", newPlayButton)
  5343.  
  5344. let realPlayButton = true
  5345.  
  5346. const switchPlayButtons = () => {
  5347. realPlayButton = !realPlayButton;
  5348. if (realPlayButton) {
  5349. newPlayButton.style.display = "none";
  5350. document.getElementsByClassName("hud-intro-play")[0].style.display = "block";
  5351. } else {
  5352. document.getElementsByClassName("hud-intro-play")[0].style.display = "none";
  5353. newPlayButton.style.display = "block";
  5354. };
  5355. };
  5356.  
  5357. const updateSavedTabs = () => {
  5358. stElem.innerHTML = `<br>`;
  5359.  
  5360. let oneEnabled = false;
  5361.  
  5362. for (let tabi in savedTabs) {
  5363. let tab = savedTabs[tabi];
  5364.  
  5365. let tabBtn = document.createElement('button');
  5366.  
  5367. if (tab.enabled) {
  5368. oneEnabled = true;
  5369. };
  5370.  
  5371. tabBtn.classList.add('btn', tab.enabled ? "btn-green" : "btn-red");
  5372. tabBtn.innerText = savedTabs[tabi].id;
  5373. stElem.appendChild(tabBtn);
  5374.  
  5375. stElem.append(' ');
  5376.  
  5377. let xBtn = document.createElement('button');
  5378. xBtn.classList.add('btn');
  5379. xBtn.classList.add('btn-red');
  5380. xBtn.innerHTML = "❌";
  5381. xBtn.style.display = "inline-block";
  5382. stElem.appendChild(xBtn);
  5383.  
  5384. stElem.append(' ');
  5385.  
  5386. let writeBtn = document.createElement('button');
  5387. writeBtn.classList.add('btn');
  5388. writeBtn.classList.add('btn-blue');
  5389. writeBtn.innerHTML = "✍️";
  5390. writeBtn.style.display = "inline-block"
  5391. stElem.appendChild(writeBtn);
  5392.  
  5393. stElem.appendChild(document.createElement('br'));
  5394. stElem.appendChild(document.createElement('br'));
  5395.  
  5396. let enterBtn = document.createElement('button');
  5397. enterBtn.classList.add('btn');
  5398. enterBtn.classList.add('btn-blue');
  5399. enterBtn.innerHTML = "☑️";
  5400. enterBtn.style.width = '130px';
  5401. enterBtn.style.display = "none";
  5402. stElem.appendChild(enterBtn);
  5403.  
  5404. stElem.append(' ');
  5405.  
  5406. let resetBtn = document.createElement('button');
  5407. resetBtn.classList.add('btn');
  5408. resetBtn.classList.add('btn-red');
  5409. resetBtn.innerHTML = "🔙";
  5410. resetBtn.style.width = '130px';
  5411. resetBtn.style.display = "none";
  5412. stElem.appendChild(resetBtn);
  5413.  
  5414. let oldId;
  5415.  
  5416. writeBtn.addEventListener('click', function() {
  5417. if (this.dataset.editing) {
  5418. updateSavedTabs();
  5419. } else {
  5420. resetBtn.style.display = "inline-block";
  5421. resetBtn.classList.replace('btn', 'disabledBtn');
  5422. enterBtn.style.display = "inline-block";
  5423. enterBtn.classList.replace('btn', 'disabledBtn');
  5424. oldId = savedTabs[tabi].id;
  5425. tabBtn.innerHTML = `<input style="width:110px; height: 35px; margin-top: 2px;" type="text" class='btn btn-red' />`
  5426. tabBtn.children[0].addEventListener('input', function() {
  5427. this.value = this.value.replaceAll(' ', '_');
  5428. if (this.value == oldId || this.value == "") {
  5429. if (this.value !== "") {
  5430. resetBtn.classList.replace('btn', 'disabledBtn');
  5431. };
  5432. if (this.value == "") {
  5433. enterBtn.classList.replace('btn', 'disabledBtn');
  5434. }
  5435. } else {
  5436. resetBtn.classList.replace('disabledBtn', 'btn');
  5437. enterBtn.classList.replace('disabledBtn', 'btn');
  5438. };
  5439. if (savedTabs.find(i => i.id == this.value)) {
  5440. enterBtn.classList.replace('btn', 'disabledBtn');
  5441. };
  5442. })
  5443. tabBtn.children[0].focus();
  5444. tabBtn.children[0].value = savedTabs[tabi].id;
  5445.  
  5446. tabBtn.setAttribute('disabled', true);
  5447. this.innerHTML = "Back"
  5448. xBtn.setAttribute('disabled', true)
  5449. this.dataset.editing = true;
  5450. xBtn.classList.replace('btn', 'disabledBtn');
  5451. };
  5452. });
  5453.  
  5454. resetBtn.addEventListener('click', function() {
  5455. tabBtn.children[0].value = oldId;
  5456. });
  5457.  
  5458. enterBtn.addEventListener('click', function() {
  5459. savedTabs[tabi].id = tabBtn.children[0].value;
  5460. updateSavedTabs();
  5461. });
  5462. xBtn.addEventListener('click', function() {
  5463. let c = confirm('Are you sure you want to close this tab?');
  5464. if (c) {
  5465. tab.iframe.remove();
  5466. savedTabs.splice(tabi, tabi + 1);
  5467. updateSavedTabs();
  5468. };
  5469. })
  5470.  
  5471. savedTabs[tabi].btn = tabBtn;
  5472. tabBtn.addEventListener('click', function() {
  5473. savedTabs[tabi].enabled = !savedTabs[tabi].enabled;
  5474. tab.iframe.style.display = "block";
  5475. document.getElementsByTagName('canvas')[0].style.display = "none";
  5476. for (let component in game.ui.components) {
  5477. if (component !== "Intro") {
  5478. game.ui.components[component].componentElem.style.display = "none";
  5479. };
  5480. };
  5481. for (let tbi in savedTabs) {
  5482. let tb = savedTabs[tbi];
  5483. if ((tb.serverId !== tab.serverId) || (tb.serverId == tab.serverId && tb.no !== tab.no)) {
  5484. tb.iframe.style.display = "none";
  5485. savedTabs[tbi].enabled = false;
  5486. };
  5487. };
  5488. updateSavedTabs();
  5489. })
  5490. stElem.insertAdjacentHTML('beforeend', '<br />')
  5491. };
  5492. if (oneEnabled) {
  5493. document.getElementsByTagName('canvas')[0].style.display = "none";
  5494. for (let component in game.ui.components) {
  5495. if (component !== "Intro") {
  5496. game.ui.components[component].componentElem.style.display = "none";
  5497. };
  5498. };
  5499. if (realPlayButton) {
  5500. switchPlayButtons();
  5501. };
  5502. } else {
  5503. document.getElementsByTagName('canvas')[0].style.display = "block";
  5504. if (!realPlayButton) {
  5505. switchPlayButtons();
  5506. };
  5507. for (let tb of savedTabs) {
  5508. tb.iframe.style.display = "none"
  5509. };
  5510. for (let component in game.ui.components) {
  5511. if (component !== "Intro") {
  5512. game.ui.components[component].componentElem.style.display = "block";
  5513. };
  5514. };
  5515. for (let component in game.ui.components) {
  5516. if (component !== "Intro") {
  5517. game.ui.components[component].componentElem.style.display = "block";
  5518. };
  5519. };
  5520. };
  5521. };
  5522.  
  5523. window.stOpt = {
  5524. ust: updateSavedTabs,
  5525. gst: () => savedTabs,
  5526. spb: switchPlayButtons
  5527. }
  5528.  
  5529. window.ostb = () => {
  5530. game.ui.components.Intro.componentElem.style.display = "block";
  5531. };
  5532.  
  5533. window.joinST = id => {
  5534. let tab = savedTabs.find(i => i.id == id);
  5535. if (tab) {
  5536. for (let tb of savedTabs) {
  5537. tb.iframe.style.display = "none"
  5538. };
  5539. tab.iframe.style.display = "block";
  5540. };
  5541. };
  5542.  
  5543. updateSavedTabs();
  5544.  
  5545. const hostSavedTab = (serverId, psk = 'tabsession') => {
  5546. let iframe = document.createElement('iframe');
  5547. iframe.src = `https://zombs.io/#/${serverId}/${psk}/`;
  5548.  
  5549. iframe.style.diplay = "none";
  5550. iframe.style.width = "100%"
  5551. iframe.style.height = "100%"
  5552. iframe.style.position = 'absolute';
  5553. iframe.style.display = "none";
  5554.  
  5555. document.getElementsByClassName('hud')[0].append(iframe);
  5556.  
  5557. iframe.onload = () => {
  5558. if (iframe.dataset.loaded) {
  5559. return;
  5560. };
  5561.  
  5562. iframe.dataset.loaded = true;
  5563.  
  5564. if (gameServers[serverId].hostno) {
  5565. gameServers[serverId].hostno++;
  5566. } else {
  5567. gameServers[serverId].hostno = 1;
  5568. };
  5569.  
  5570. let tabi = savedTabs.length;
  5571.  
  5572. savedTabs.push({
  5573. serverId: serverId,
  5574. psk: psk,
  5575. serverName: game.options.servers[serverId].name,
  5576. no: gameServers[serverId].hostno,
  5577. iframe: iframe,
  5578. id: `${game.options.servers[serverId].name.replaceAll(' ', '-')}_#${gameServers[serverId].hostno}`
  5579. })
  5580. updateSavedTabs();
  5581. iframe.contentWindow.eval(`
  5582. document.getElementsByClassName("hud-intro-play")[0].click()
  5583. let hasJoined = false
  5584. game.network.addEnterWorldHandler(() => {
  5585. if(hasJoined) { return; }
  5586. hasJoined = true;
  5587. });
  5588. `);
  5589. setTimeout(() => {
  5590. if (!iframe.contentWindow.game.world.inWorld) {
  5591. iframe.remove();
  5592. savedTabs.splice(tabi, tabi + 1);
  5593. game.ui.components.Intro.componentElem.style.display = "block";
  5594. updateSavedTabs();
  5595. };
  5596. }, 10000);
  5597. };
  5598. };
  5599.  
  5600. document.getElementById('hstb').addEventListener('click', function() {
  5601. if (document.getElementById('hostsavedtabpsk').value.length > 1 && document.getElementById('hostsavedtabpsk').value.length < 21) {
  5602. hostSavedTab(document.getElementsByClassName('hud-intro-server')[0].value, document.getElementById('hostsavedtabpsk').value);
  5603. } else {
  5604. hostSavedTab(document.getElementsByClassName('hud-intro-server')[0].value);
  5605. };
  5606. })
  5607.  
  5608. game.ui.components.Chat.sendMessage2 = game.ui.components.Chat.sendMessage;
  5609.  
  5610. game.ui.components.Chat.sendMessage = (msg) => {
  5611. switch (msg) {
  5612. case "!back":
  5613. if (window.parent !== window) {
  5614. window.parent.ostb();
  5615. };
  5616.  
  5617. break;
  5618. default:
  5619. if (msg.toLowerCase().startsWith('!jointab')) {
  5620. let id = msg.split(" ")[1];
  5621.  
  5622. if (window.parent !== window) {
  5623. window.parent.joinST(id);
  5624. };
  5625.  
  5626. return;
  5627. };
  5628.  
  5629. game.ui.components.Chat.sendMessage2(msg);
  5630.  
  5631. break;
  5632. };
  5633. };
  5634.  
  5635. // Zoom with mouse
  5636.  
  5637. let dimension = 1;
  5638. const onWindowResize = () => {
  5639. const renderer = game.renderer;
  5640. let canvasWidth = window.innerWidth * window.devicePixelRatio;
  5641. let canvasHeight = window.innerHeight * window.devicePixelRatio;
  5642. let ratio = Math.max(canvasWidth / (1920 * dimension), canvasHeight / (1080 * dimension));
  5643. renderer.scale = ratio;
  5644. renderer.entities.setScale(ratio);
  5645. renderer.ui.setScale(ratio);
  5646. renderer.renderer.resize(canvasWidth, canvasHeight);
  5647. renderer.viewport.width = renderer.renderer.width / renderer.scale + 4 * renderer.viewportPadding;
  5648. renderer.viewport.height = renderer.renderer.height / renderer.scale + 4 * renderer.viewportPadding;
  5649. };
  5650.  
  5651. onWindowResize();
  5652.  
  5653. window.onresize = onWindowResize;
  5654.  
  5655. window.onwheel = e => {
  5656. if (e.deltaY > 0) {
  5657. dimension += 0.08;
  5658. } else if (e.deltaY < 0) {
  5659. dimension -= 0.08;
  5660. }
  5661. onWindowResize();
  5662. };
  5663.  
  5664. window.zoom = val => {
  5665. dimension = val;
  5666. onWindowResize();
  5667. };
  5668.  
  5669. game.network.addEnterWorldHandler(() => {
  5670. game.renderer.projectiles.setVisible(0);
  5671.  
  5672. document.getElementsByClassName('hud-menu-shop')[0].style.display = 'none';
  5673. document.getElementsByClassName('hud-menu-settings')[0].style.display = 'none';
  5674. document.getElementsByClassName('hud-menu-party')[0].style.display = 'none';
  5675. });
  5676.  
  5677. game.network.oldSendRpc = game.network.sendRpc;
  5678.  
  5679. game.network.sendRpc = m => {
  5680. const webSockets = window.allSockets;
  5681. if(m.name == "EquipItem") {
  5682. for(let id in webSockets) {
  5683. const ws = webSockets[id];
  5684. ws.network.sendPacket(9, { name: "BuyItem", itemName: m.itemName, tier: m.tier });
  5685. ws.network.sendPacket(9, m);
  5686. };
  5687. };
  5688. game.network.oldSendRpc(m);
  5689. };

QingJ © 2025

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