main x(v1.1)

take over zombs.io with this https://discord.gg/xPAN9yVY

  1. // ==UserScript==
  2. // @name main x(v1.1)
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.2
  5. // @description take over zombs.io with this https://discord.gg/xPAN9yVY
  6. // @author not Trollers xD
  7. // @license not Trollers xD
  8. // @match zombs.io
  9. // @match http://tc-mod-xyz.glitch.me/
  10. // @grant none
  11. // @match https://tc-mod-xyz.glitch.me/
  12. // ==/UserScript==
  13. let codec = new BinCodec();
  14. let css2 = `
  15. .btn:hover {
  16. cursor: pointer;
  17. }
  18. .btn-blue {
  19. background-color: #144b7a;
  20. }
  21. .btn-blue:hover .btn-blue:active {
  22. background-color: #4fa7ee;
  23. }
  24. .box {
  25. display: block;
  26. width: 100%;
  27. height: 50px;
  28. line-height: 34px;
  29. padding: 8px 14px;
  30. margin: 0 0 10px;
  31. background: #eee;
  32. border: 0;
  33. font-size: 14px;
  34. box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
  35. border-radius: 4px;
  36. }
  37. .codeIn, .joinOut {
  38. height: 50px;
  39. }
  40. .hud-menu-zipp3 {
  41. display: none;
  42. position: fixed;
  43. top: 48%;
  44. left: 50%;
  45. width: 600px;
  46. height: 470px;
  47. margin: -270px 0 0 -300px;
  48. padding: 20px;
  49. background: rgba(0, 0, 0, 0.6);
  50. color: #eee;
  51. border-radius: 4px;
  52. z-index: 15;
  53. }
  54. .hud-menu-zipp3 h3 {
  55. display: block;
  56. margin: 0;
  57. line-height: 20px;
  58. }
  59. .hud-menu-zipp3 .hud-zipp-grid3 {
  60. display: block;
  61. height: 380px;
  62. padding: 10px;
  63. margin-top: 18px;
  64. background: rgba(0, 0, 0, 0.2);
  65. }
  66. .hud-spell-icons .hud-spell-icon[data-type="Zippity3"]::before {
  67. background-image: url("https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/samsung/220/right-pointing-magnifying-glass_1f50e.png");
  68. }
  69. .hud-menu-zipp3 .hud-the-tab {
  70. position: relative;
  71. height: 40px;
  72. line-height: 40px;
  73. margin: 20px;
  74. border: 0px solid rgb(0, 0, 0, 0);
  75. }
  76. .hud-menu-zipp3 .hud-the-tab {
  77. display: block;
  78. float: left;
  79. padding: 0 14px;
  80. margin: 0 1px 0 0;
  81. font-size: 14px;
  82. background: rgba(0, 0, 0, 0.4);
  83. color: rgba(255, 255, 255, 0.4);
  84. transition: all 0.15s ease-in-out;
  85. }
  86. .hud-menu-zipp3 .hud-the-tab:hover {
  87. background: rgba(0, 0, 0, 0.2);
  88. color: #eee;
  89. cursor: pointer;
  90. }
  91. `;
  92. let styles = document.createElement("style");
  93. styles.appendChild(document.createTextNode(css2));
  94. document.head.appendChild(styles);
  95. styles.type = "text/css";
  96. // class changing
  97. document.getElementsByClassName("hud-intro-form")[0].style.height = "300px";
  98. document.getElementsByClassName("hud-intro-play")[0].setAttribute("class", "btn btn-blue hud-intro-play");
  99. // spell icon
  100. let spell = document.createElement("div");
  101. spell.classList.add("hud-spell-icon");
  102. spell.setAttribute("data-type", "Zippity3");
  103. spell.classList.add("hud-zipp3-icon");
  104. document.getElementsByClassName("hud-spell-icons")[0].appendChild(spell);
  105. //Menu for spell icon
  106. let modHTML = `
  107. <div class="hud-menu-zipp3">
  108. <br />
  109. <div style="text-align:center">
  110. <button class="SE" style="width: 20%">Main (1)</button>
  111. <button class="AB" style="width: 20%">Auto Build</button>
  112. <button class="BS" style="width: 20%">Base Saver</button>
  113. <button class="SI" style="width: 20%">Main (2)</button>
  114. <div class="hud-zipp-grid3">
  115. </div>
  116. </div>
  117. `;
  118. document.body.insertAdjacentHTML("afterbegin", modHTML);
  119. let zipz123 = document.getElementsByClassName("hud-menu-zipp3")[0];
  120. //Onclick
  121. document.getElementsByClassName("hud-zipp3-icon")[0].addEventListener("click", function() {
  122. if(zipz123.style.display == "none" || zipz123.style.display == "") {
  123. zipz123.style.display = "block";
  124. } else {
  125. zipz123.style.display = "none";
  126. };
  127. });
  128. let _menu = document.getElementsByClassName("hud-menu-icon");
  129. let _spell = document.getElementsByClassName("hud-spell-icon");
  130. let allIcon = [
  131. _menu[0],
  132. _menu[1],
  133. _menu[2],
  134. _spell[0],
  135. _spell[1]
  136. ];
  137. allIcon.forEach(function(elem) {
  138. elem.addEventListener("click", function() {
  139. if(zipz123.style.display == "block") {
  140. zipz123.style.display = "none";
  141. };
  142. });
  143. });
  144. document.getElementsByClassName("SE")[0].addEventListener("click", function() {
  145. displayAllToNone();
  146. document.getElementsByClassName("SE")[0].innerText = "- - -";
  147. document.getElementsByClassName("etc.Class")[0].innerText = "Main";
  148. for (let i = 0; i < 50; i++) {
  149. if (document.getElementsByClassName(i + "i")[0]) {
  150. document.getElementsByClassName(i + "i")[0].style.display = "";
  151. }
  152. }
  153. })
  154. document.getElementsByClassName("AB")[0].addEventListener("click", function() {
  155. displayAllToNone();
  156. document.getElementsByClassName("AB")[0].innerText = "- - -";
  157. document.getElementsByClassName("etc.Class")[0].innerText = "Main 3";
  158. for (let i = 0; i < 50; i++) {
  159. if (document.getElementsByClassName(i + "i2")[0]) {
  160. document.getElementsByClassName(i + "i2")[0].style.display = "";
  161. }
  162. }
  163. })
  164. document.getElementsByClassName("BS")[0].addEventListener("click", function() {
  165. displayAllToNone();
  166. document.getElementsByClassName("BS")[0].innerText = "- - -";
  167. document.getElementsByClassName("etc.Class")[0].innerText = "Base Saver (1.69)";
  168. for (let i = 0; i < 50; i++) {
  169. if (document.getElementsByClassName(i + "i3")[0]) {
  170. document.getElementsByClassName(i + "i3")[0].style.display = "";
  171. }
  172. }
  173. })
  174. document.getElementsByClassName("SI")[0].addEventListener("click", function() {
  175. displayAllToNone();
  176. document.getElementsByClassName("SI")[0].innerText = "- - -";
  177. document.getElementsByClassName("etc.Class")[0].innerText = "Main 2";
  178. for (let i = 0; i < 50; i++) {
  179. if (document.getElementsByClassName(i + "i5")[0]) {
  180. document.getElementsByClassName(i + "i5")[0].style.display = "";
  181. }
  182. }
  183. })
  184. // key to open and close
  185. function modm() {
  186. if(zipz123.style.display == "none" || zipz123.style.display == "") {
  187. zipz123.style.display = "block";
  188. } else {
  189. zipz123.style.display = "none";
  190. };
  191. };
  192. function displayAllToNone() {
  193. document.getElementsByClassName("SE")[0].innerText = "Main (1)";
  194. document.getElementsByClassName("AB")[0].innerText = "Main (3)";
  195. document.getElementsByClassName("BS")[0].innerText = "Base Saver";
  196. document.getElementsByClassName("SI")[0].innerText = "Main (2)";
  197. for (let i = 0; i < 50; i++) {
  198. if (document.getElementsByClassName(i + "i")[0]) {
  199. document.getElementsByClassName(i + "i")[0].style.display = "none";
  200. }
  201. }
  202. for (let i = 0; i < 50; i++) {
  203. if (document.getElementsByClassName(i + "i2")[0]) {
  204. document.getElementsByClassName(i + "i2")[0].style.display = "none";
  205. }
  206. }
  207. for (let i = 0; i < 50; i++) {
  208. if (document.getElementsByClassName(i + "i3")[0]) {
  209. document.getElementsByClassName(i + "i3")[0].style.display = "none";
  210. }
  211. }
  212. for (let i = 0; i < 50; i++) {
  213. if (document.getElementsByClassName(i + "i5")[0]) {
  214. document.getElementsByClassName(i + "i5")[0].style.display = "none";
  215. }
  216. }
  217. }
  218. document.getElementsByClassName("hud-zipp-grid3")[0].innerHTML = `
  219. <div style="text-align:center"><br>
  220. <hr />
  221. <h3 class="etc.Class">Normal Scripts!</h3>
  222. <hr />
  223. <button class="btn btn-green 0i" style="width: 45%;">Sell Stash!</button>
  224. <button class="btn btn-green 1i" style="width: 45%;">Sell All!</button>
  225. <button class="btn btn-green 2i" style="width: 45%;">Sell Walls!</button>
  226. <button class="btn btn-green 3i" style="width: 45%;">Sell Doors!</button>
  227. <button class="btn btn-green 4i" style="width: 45%;">Sell Traps!</button>
  228. <button class="btn btn-green 5i" style="width: 45%;">Sell Arrows!</button>
  229. <button class="btn btn-green 6i" style="width: 45%;">Sell Mages!</button>
  230. <button class="btn btn-green 7i" style="width: 45%;">Sell Pets!</button>
  231. <button class="btn btn-blue 8i" style="width: 45%;">Active Upgrade All!</button>
  232. <button class="btn btn-blue 9i" style="width: 45%;">Active AHRC!</button>
  233. <button class="btn btn-blue 10i" style="width: 45%;">Enable Autobow</button>
  234. <button class="btn btn-blue 13i" style="width: 45%;">Enable Auto Accepter</button>
  235. <button class="btn btn-blue 14i" style="width: 45%;">Enable Auto Kicker</button>
  236. <br class="15i"><br class="16i">
  237. <button class="btn btn-green 0i5" style="width: 45%;">Can Members Sell!</button>
  238. <button class="btn btn-green 1i5" style="width: 45%;"">Kick All Members!</button>
  239. <button class="btn btn-blue 3i5" style="width: 45%;">Enable hi Script!</button>
  240. <button class="btn btn-blue 5i5" style="width: 45%;">Enable Send Info!</button>
  241. <button class="btn btn-red 8i5" style="width: 45%;">!(Auto heal and Pet Heal)</button>
  242. <button class="btn btn-red 9i5" style="width: 45%;">!(Revive and Evolve Pets)</button>
  243. <button class="btn btn-blue 6i5" style="width: 45%;">Enable Speed Run</button>
  244. <button class="btn btn-blue 10i5" style="width: 45%;">Clear Messages!</button>
  245. <input style="width: 45%; type="text" class="btn btn-white 12i5" placeholder="Player Party Name">
  246. <button class="btn btn-white 13i5" style="width: 45%;">Enable 3x3 wall!</button>
  247. <br class="14i5"><br class="15i5">
  248. <button class="0i2">Send Alt!</button>
  249. <button class="1i2">Enable Aim!</button>
  250. <button class="2i2">Enable Player Follower!</button>
  251. <button class="10i2 emm">Enable MouseMove!</button>
  252. <br class="23i2"><br class="24i2">
  253. <button class="3i2">Delete Alt!</button>
  254. <input type="number" class="4i2" placeholder="Alt Id">
  255. <button class="7i2">Delete All Alts!</button>
  256. <br class="5i2"><br class="6i2">
  257. <button class="8i2">Show Resources!</button>
  258. <button class="21i2">Control Alts!</button>
  259. <button class="22i2">Unontrol Alts!</button>
  260. <br class="9i2"><br class="10i2">
  261. <button class="11i2">Start Aito!</button>
  262. <button class="12i2">Active 4 Player Trick</button>
  263. <button class="13i2">Enable L Key!</button>
  264. <br class="14i2"><br class="15i2">
  265. <input type="text" value="1" class="16i2" placeholder="Player Rank" style="width: 25%;">
  266. <button class="18i2">Active Player Finder</button>
  267. <button class="25i2">Follow Position</button> &nbsp;
  268. <br class="19i2"><br class="20i2">
  269. <button class="0i3" onclick="RecordBase();">Record Base!</button>
  270. <button class="1i3" onclick="buildRecordedBase();">Build Recorded Base!</button>
  271. <button class="2i3" onclick="DeleteRecordedbase();">Delete Recorded Base!</button>
  272. <br class="3i3"><br class="4i3">
  273. <button class="5i3" onclick="RecordBase2();">Record Base (2)!</button>
  274. <button class="6i3" onclick="buildRecordedBase2();">Build Recorded Base (2)!</button>
  275. <button class="7i3" onclick="DeleteRecordedbase2();">Delete Recorded Base (2)!</button>
  276. <br class="8i3"><br class="9i3">
  277. <button class="10i3" onclick="RecordBase3();">Record Base (3)!</button>
  278. <button class="11i3" onclick="buildRecordedBase3();">Build Recorded Base (3)!</button>
  279. <button class="12i3" onclick="DeleteRecordedbase3();">Delete Recorded Base (3)!</button>
  280. <br class="13i3"><br class="14i3">
  281. <button class="15i3" onclick="saveBase();">Save Towers!</button>
  282. <button class="16i3" onclick="buildSavedBase();">Build Saved Towers!</button>
  283. <br class="17i3"><br class="18i3">
  284. <button class="21i3" onclick="autobuildtoggle();">Enable Auto Build Saved Towers!</button>
  285. <button class="26i3" onclick="upgradealltoggle();">Enable Upgrade All!</button>
  286. <br class="28i3"><br class="29i3">
  287. <input type="text" class="30i3" placeholder='Click "Save Towers!" and build your favorite base to get their codes.' style="width: 100%" disabled="true">
  288. <br class="31i3"><br class="32i3">
  289. `;
  290. let Main1Keys = true;
  291. let Main2Keys = true;
  292. let Main3Keys = true;
  293. displayAllToNone();
  294. let altname = 1;
  295. let upgradeAll = false;
  296. let AHRC = false;
  297. let autobow = false;
  298. let accept = false;
  299. let kick = false;
  300. let run = false;
  301. let heal = true;
  302. let revive = true;
  303. let clearMsgs = false;
  304. let kick1p = false;
  305. let autobuild = false;
  306. let upgradeAll2 = false;
  307. let petTimeout = false;
  308. let myPlayer;
  309. let myPet;
  310. let shouldHealPet;
  311. let autohi;
  312. let autorss;
  313. let uid;
  314. let entities = {};
  315. let players = {};
  316. let buildings = {};
  317. let msg;
  318. let packets = {
  319. 0: "PACKET_ENTITY_UPDATE",
  320. 1: "PACKET_PLAYER_COUNTER_UPDATE",
  321. 2: "PACKET_SET_WORLD_DIMENSIONS",
  322. 3: "PACKET_INPUT",
  323. 4: "PACKET_ENTER_WORLD",
  324. 7: "PACKET_PING",
  325. 9: "PACKET_RPC",
  326. PACKET_ENTER_WORLD: 4,
  327. PACKET_ENTITY_UPDATE: 0,
  328. PACKET_INPUT: 3,
  329. PACKET_PING: 7,
  330. PACKET_PLAYER_COUNTER_UPDATE: 1,
  331. PACKET_RPC: 9,
  332. PACKET_SET_WORLD_DIMENSIONS: 2
  333. }
  334. game.network.addPacketHandler = function (event, callback) {
  335. console.log(packets[event], callback);
  336. game.network.emitter.on(packets[event], callback);
  337. }
  338. game.network.emitter.removeListener('PACKET_ENTITY_UPDATE', game.network.emitter._events.PACKET_ENTITY_UPDATE);
  339. game.network.addPacketHandler(0, function(e) {
  340. game.network.sendRpc({"name": "BuyItem", "itemName": "HealthPotion", "tier": 1})
  341. })
  342. for (let i = 0; i < 10; i++) {
  343. game.network.addPacketHandler(i, function(e) {
  344. msg = e;
  345. interval();
  346. })
  347. }
  348. let interval = () => {
  349. if (msg.uid) {
  350. uid = msg.uid;
  351. players = {};
  352. entities = {};
  353. buildings = {};
  354. window.message = 0;
  355. }
  356. if (msg.entities) {
  357. if (window.message == 0) {
  358. game.world.replicator.onEntityUpdate(msg);
  359. }
  360. if (msg.entities[uid].name) {
  361. myPlayer = msg.entities[uid];
  362. }
  363. for (let g in myPlayer) {
  364. if (myPlayer[g] !== msg.entities[uid][g] && msg.entities[uid][g] !== undefined) {
  365. myPlayer[g] = msg.entities[uid][g];
  366. }
  367. }
  368. if (myPlayer.petUid) {
  369. if (msg.entities[myPlayer.petUid]) {
  370. if (msg.entities[myPlayer.petUid].model) {
  371. myPet = msg.entities[myPlayer.petUid];
  372. shouldHealPet = false;
  373. }
  374. }
  375. for (let g in myPet) {
  376. if (msg.entities[myPlayer.petUid]) {
  377. if (myPet[g] !== msg.entities[myPlayer.petUid][g] && msg.entities[myPlayer.petUid][g] !== undefined) {
  378. myPet[g] = msg.entities[myPlayer.petUid][g]
  379. }
  380. }
  381. }
  382. }
  383. for (let i in msg.entities) {
  384. if (msg.entities[i].name) {
  385. players[i] = msg.entities[i];
  386. if (autohi) {
  387. game.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "hi " + msg.entities[i].name})
  388. }
  389. if (autorss) {
  390. game.network.sendRpc({name: "SendChatMessage", channel: "Local", message: msg.entities[i].name + ", W: " + counter(msg.entities[i].wood) + ", S: " + counter(msg.entities[i].stone) + ", G: " + counter(msg.entities[i].gold) + ", T: " + Math.floor(msg.entities[i].token) + ";"})
  391. }
  392. }
  393. }
  394. for (let i in players) {
  395. if (!msg.entities[i]) {
  396. delete players[i];
  397. }
  398. for (let g in players[i]) {
  399. if (players[i][g] !== msg.entities[i][g] && msg.entities[i][g] !== undefined) {
  400. players[i][g] = msg.entities[i][g];
  401. }
  402. }
  403. }
  404. }
  405. if (game.world.inWorld) {
  406. let entities = Game.currentGame.world.entities;
  407. if (upgradeAll) {
  408. if (!window.upgradeAll1) {
  409. window.upgradeAll1 = true;
  410. setTimeout(() => { window.upgradeAll1 = false; }, 100);
  411. for(let uid in entities) {
  412. if(entities[uid].fromTick.tier !== 8 || entities[uid].fromTick.tier !== GetGoldStash().uid) {
  413. Game.currentGame.network.sendRpc({
  414. name: "UpgradeBuilding",
  415. uid: game.world.entities[uid].fromTick.uid
  416. });
  417. }
  418. }
  419. }
  420. }
  421. if (AHRC) {
  422. if (!window.AHRC1) {
  423. window.AHRC1 = true;
  424. setTimeout(() => { window.AHRC1 = false; }, 75);
  425. for(let uid in entities) {
  426. if(!entities.hasOwnProperty(uid)) continue;
  427. let obj = entities[uid];
  428. Game.currentGame.network.sendRpc({
  429. name: "CollectHarvester",
  430. uid: obj.fromTick.uid
  431. });
  432. if(obj.fromTick.model == "Harvester" && obj.fromTick.tier == 1) {
  433. Game.currentGame.network.sendRpc({
  434. name: "AddDepositToHarvester",
  435. uid: obj.fromTick.uid,
  436. deposit: 0.07
  437. });
  438. }
  439. if(obj.fromTick.model == "Harvester" && obj.fromTick.tier == 2) {
  440. Game.currentGame.network.sendRpc({
  441. name: "AddDepositToHarvester",
  442. uid: obj.fromTick.uid,
  443. deposit: 0.11
  444. });
  445. }
  446. if(obj.fromTick.model == "Harvester" && obj.fromTick.tier == 3) {
  447. Game.currentGame.network.sendRpc({
  448. name: "AddDepositToHarvester",
  449. uid: obj.fromTick.uid,
  450. deposit: 0.17
  451. });
  452. }
  453. if(obj.fromTick.model == "Harvester" && obj.fromTick.tier == 4) {
  454. Game.currentGame.network.sendRpc({
  455. name: "AddDepositToHarvester",
  456. uid: obj.fromTick.uid,
  457. deposit: 0.22
  458. });
  459. }
  460. if(obj.fromTick.model == "Harvester" && obj.fromTick.tier == 5) {
  461. Game.currentGame.network.sendRpc({
  462. name: "AddDepositToHarvester",
  463. uid: obj.fromTick.uid,
  464. deposit: 0.25
  465. });
  466. }
  467. if(obj.fromTick.model == "Harvester" && obj.fromTick.tier == 6) {
  468. Game.currentGame.network.sendRpc({
  469. name: "AddDepositToHarvester",
  470. uid: obj.fromTick.uid,
  471. deposit: 0.28
  472. });
  473. }
  474. if(obj.fromTick.model == "Harvester" && obj.fromTick.tier == 7) {
  475. Game.currentGame.network.sendRpc({
  476. name: "AddDepositToHarvester",
  477. uid: obj.fromTick.uid,
  478. deposit: 0.42
  479. });
  480. }
  481. if(obj.fromTick.model == "Harvester" && obj.fromTick.tier == 8) {
  482. Game.currentGame.network.sendRpc({
  483. name: "AddDepositToHarvester",
  484. uid: obj.fromTick.uid,
  485. deposit: 0.65
  486. });
  487. }
  488. }
  489. }
  490. }
  491. if (autobow) {
  492. game.network.sendInput({space: 0})
  493. game.network.sendInput({space: 1})
  494. }
  495. if (accept) {
  496. for (let i2 = 0; i2 < document.getElementsByClassName("btn btn-green hud-confirmation-accept").length; i2++) {
  497. document.getElementsByClassName("btn btn-green hud-confirmation-accept")[i2].click();
  498. }
  499. }
  500. if (kick) {
  501. for (let i in Game.currentGame.ui.playerPartyMembers) {
  502. Game.currentGame.network.sendRpc({
  503. name: "KickParty",
  504. uid: Game.currentGame.ui.playerPartyMembers[i].playerUid
  505. })
  506. }
  507. }
  508. if (run) {
  509. for (let i = 0; i < document.getElementsByClassName("hud-shop-actions-equip").length; i++) {
  510. document.getElementsByClassName("hud-shop-actions-equip")[i].click();
  511. }
  512. }
  513. if (revive) {
  514. if (!window.reviver) {
  515. window.reviver = true;
  516. setTimeout(() => { window.reviver = false; }, 1000);
  517. let element1 = document.getElementsByClassName("hud-shop-actions-revive");
  518. for (let i=0;i<element1.length;i++) {
  519. element1[i].click();
  520. }
  521. let element2 = document.getElementsByClassName("hud-shop-actions-evolve");
  522. for (let i=0;i<element2.length;i++) {
  523. element2[i].click();
  524. }
  525. }
  526. }
  527. if (clearMsgs) {
  528. for (let i = 0; i < document.getElementsByClassName('hud-chat-message').length; i++) {
  529. document.getElementsByClassName('hud-chat-message')[i].remove();
  530. }
  531. }
  532. if (kick1p) {
  533. }
  534. if (autobuild) {
  535. if (!window.autobuildtimeout) {
  536. window.autobuildtimeout = true;
  537. setTimeout(() => { window.autobuildtimeout = false; }, 75)
  538. if (GetGoldStash !== undefined) {
  539. window.buildSavedBase();
  540. }
  541. }
  542. }
  543. if (upgradeAll2) {
  544. if (!window.upgradeAll2) {
  545. window.upgradeAll2 = true;
  546. setTimeout(() => { window.upgradeAll2 = false; }, 500);
  547. for(let uid in entities) {
  548. if(entities[uid].fromTick.tier !== 8 || entities[uid].fromTick.tier !== GetGoldStash().uid) {
  549. Game.currentGame.network.sendRpc({
  550. name: "UpgradeBuilding",
  551. uid: game.world.entities[uid].fromTick.uid
  552. });
  553. }
  554. }
  555. }
  556. }
  557. if (heal) {
  558. if (myPlayer) {
  559. let playerHealth = (myPlayer.health/myPlayer.maxHealth) * 100;
  560. if (playerHealth <= 10) {
  561. if (!window.playerTimeout_1) {
  562. window.playerTimeout_1 = true;
  563. setTimeout(() => {
  564. window.playerTimeout_1 = false;
  565. }, 300)
  566. healPlayer();
  567. }
  568. }
  569. }
  570. }
  571. if (heal) {
  572. if (myPet) {
  573. let petHealth = (myPet.health/myPet.maxHealth) * 100;
  574. if (petHealth <= 99) {
  575. if (!petTimeout) {
  576. petTimeout = true;
  577. setTimeout(() => { petTimeout = false; }, 300);
  578. game.network.sendRpc({"name": "BuyItem", "itemName": "PetHealthPotion", "tier": 1})
  579. game.network.sendRpc({"name": "EquipItem", "itemName": "PetHealthPotion", "tier": 1})
  580. }
  581. }
  582. }
  583. }
  584. if (window.findPlayer) {
  585. 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) {
  586. game.network.sendInput({down: 0})
  587. } else {
  588. game.network.sendInput({down: 1})
  589. }
  590. 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) {
  591. game.network.sendInput({up: 0})
  592. } else {
  593. game.network.sendInput({up: 1})
  594. }
  595. 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) {
  596. game.network.sendInput({left: 0})
  597. } else {
  598. game.network.sendInput({left: 1})
  599. }
  600. 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) {
  601. game.network.sendInput({right: 0})
  602. } else {
  603. game.network.sendInput({right: 1})
  604. }
  605. }
  606. }
  607. }
  608. document.getElementsByClassName("emm")[0].addEventListener('click', function() {
  609. window.mousemove = !window.mousemove;
  610. this.innerText = window.mousemove ? "Disable MouseMove!" : "Enable MouseMove!"
  611. })
  612. document.getElementsByClassName("0i")[0].addEventListener('click', function() {
  613. for(let uid in game.ui.buildings) {
  614. if(game.ui.buildings[uid].type == "GoldStash") {
  615. Game.currentGame.network.sendRpc({
  616. name: "DeleteBuilding",
  617. uid: game.ui.buildings[uid].uid
  618. });
  619. }
  620. }
  621. })
  622. document.getElementsByClassName("1i")[0].addEventListener('click', function() {
  623. for(let uid in game.ui.buildings) {
  624. if(game.ui.buildings[uid].type !== "GoldStash") {
  625. Game.currentGame.network.sendRpc({
  626. name: "DeleteBuilding",
  627. uid: game.ui.buildings[uid].uid
  628. });
  629. }
  630. }
  631. })
  632. document.getElementsByClassName("2i")[0].addEventListener('click', function() {
  633. for(let uid in game.ui.buildings) {
  634. if(game.ui.buildings[uid].type == "Wall") {
  635. Game.currentGame.network.sendRpc({
  636. name: "DeleteBuilding",
  637. uid: game.ui.buildings[uid].uid
  638. });
  639. }
  640. }
  641. })
  642. document.getElementsByClassName("3i")[0].addEventListener('click', function() {
  643. for(let uid in game.ui.buildings) {
  644. if(game.ui.buildings[uid].type == "Door") {
  645. Game.currentGame.network.sendRpc({
  646. name: "DeleteBuilding",
  647. uid: game.ui.buildings[uid].uid
  648. });
  649. }
  650. }
  651. })
  652. document.getElementsByClassName("4i")[0].addEventListener('click', function() {
  653. for(let uid in game.ui.buildings) {
  654. if(game.ui.buildings[uid].type == "SlowTrap") {
  655. Game.currentGame.network.sendRpc({
  656. name: "DeleteBuilding",
  657. uid: game.ui.buildings[uid].uid
  658. });
  659. }
  660. }
  661. })
  662. document.getElementsByClassName("5i")[0].addEventListener('click', function() {
  663. for(let uid in game.ui.buildings) {
  664. if(game.ui.buildings[uid].type == "ArrowTower") {
  665. Game.currentGame.network.sendRpc({
  666. name: "DeleteBuilding",
  667. uid: game.ui.buildings[uid].uid
  668. });
  669. }
  670. }
  671. })
  672. document.getElementsByClassName("6i")[0].addEventListener('click', function() {
  673. for(let uid in game.ui.buildings) {
  674. if(game.ui.buildings[uid].type == "MagicTower") {
  675. Game.currentGame.network.sendRpc({
  676. name: "DeleteBuilding",
  677. uid: game.ui.buildings[uid].uid
  678. });
  679. }
  680. }
  681. })
  682. document.getElementsByClassName("7i")[0].addEventListener('click', function() {
  683. for(let uid in game.world.entities) {
  684. if(game.world.entities[uid].fromTick.model == "PetCARL" || game.world.entities[uid].fromTick.model == "PetMiner") {
  685. Game.currentGame.network.sendRpc({
  686. name: "DeleteBuilding",
  687. uid: game.world.entities[uid].fromTick.uid
  688. });
  689. }
  690. }
  691. })
  692. document.getElementsByClassName("8i")[0].addEventListener('click', function() {
  693. upgradeAll = !upgradeAll;
  694. document.getElementsByClassName("8i")[0].className = "btn btn-blue 8i";
  695. document.getElementsByClassName("8i")[0].innerText = "Active Upgrade All!";
  696. if (upgradeAll) {
  697. document.getElementsByClassName("8i")[0].className = "btn btn-red 8i";
  698. document.getElementsByClassName("8i")[0].innerText = "Inactive Upgrade All!";
  699. }
  700. })
  701. document.getElementsByClassName("9i")[0].addEventListener('click', function() {
  702. AHRC = !AHRC;
  703. document.getElementsByClassName("9i")[0].className = "btn btn-blue 9i";
  704. document.getElementsByClassName("9i")[0].innerText = "Active AHRC!";
  705. if (AHRC) {
  706. document.getElementsByClassName("9i")[0].className = "btn btn-red 9i";
  707. document.getElementsByClassName("9i")[0].innerText = "Inactive AHRC!";
  708. }
  709. })
  710. document.getElementsByClassName("10i")[0].addEventListener('click', function() {
  711. autobow = !autobow;
  712. let playerWeapon = game.ui.playerTick.weaponName;
  713. document.getElementsByClassName("10i")[0].className = "btn btn-blue 10i";
  714. document.getElementsByClassName("10i")[0].innerText = "Enable Autobow";
  715. if (autobow) {
  716. document.getElementsByClassName("10i")[0].className = "btn btn-red 10i";
  717. document.getElementsByClassName("10i")[0].innerText = "Disable Autobow";
  718. if (game.ui.inventory.Bow) {
  719. game.network.sendRpc({name: "EquipItem", itemName: "Bow", tier: game.ui.inventory.Bow.tier})
  720. } else {
  721. game.network.sendRpc({name: "BuyItem", itemName: "Bow", tier: 1})
  722. game.network.sendRpc({name: "EquipItem", itemName: "Bow", tier: 1})
  723. }
  724. } else {
  725. game.network.sendRpc({name: "EquipItem", itemName: playerWeapon, tier: game.ui.inventory[playerWeapon].tier})
  726. }
  727. })
  728. document.getElementsByClassName("11i2")[0].addEventListener('click', function() {
  729. window.startaito = !window.startaito;
  730. document.getElementsByClassName("11i2")[0].innerText = "Start Aito!";
  731. if (window.startaito) {
  732. window.sendAitoAlt();
  733. document.getElementsByClassName("11i2")[0].innerText = "Stop Aito!";
  734. }
  735. })
  736. document.getElementsByClassName("13i")[0].addEventListener('click', function() {
  737. accept = !accept;
  738. document.getElementsByClassName("13i")[0].className = "btn btn-blue 13i";
  739. document.getElementsByClassName("13i")[0].innerText = "Enable Auto Accepter";
  740. if (accept) {
  741. document.getElementsByClassName("13i")[0].className = "btn btn-red 13i";
  742. document.getElementsByClassName("13i")[0].innerText = "Disable Auto Accepter";
  743. }
  744. })
  745. document.getElementsByClassName("14i")[0].addEventListener('click', function() {
  746. kick = !kick;
  747. document.getElementsByClassName("14i")[0].className = "btn btn-blue 14i";
  748. document.getElementsByClassName("14i")[0].innerText = "Enable Auto Kicker";
  749. if (kick) {
  750. document.getElementsByClassName("14i")[0].className = "btn btn-red 14i";
  751. document.getElementsByClassName("14i")[0].innerText = "Disable Auto Kicker";
  752. }
  753. })
  754. document.getElementsByClassName("0i5")[0].addEventListener('click', function() {
  755. for (let i in game.ui.playerPartyMembers) {
  756. game.network.sendRpc({name: "SetPartyMemberCanSell", uid: game.ui.playerPartyMembers[i].playerUid, canSell: 1})
  757. }
  758. })
  759. document.getElementsByClassName("1i5")[0].addEventListener('click', function() {
  760. for (let i in game.ui.playerPartyMembers) {
  761. game.network.sendRpc({name: "KickParty", uid: game.ui.playerPartyMembers[i].playerUid})
  762. }
  763. })
  764. document.getElementsByClassName("3i5")[0].addEventListener('click', function() {
  765. autohi = !autohi;
  766. document.getElementsByClassName("3i5")[0].className = "btn btn-blue 3i5";
  767. document.getElementsByClassName("3i5")[0].innerText = "Enable hi Script!";
  768. if (autohi) {
  769. document.getElementsByClassName("3i5")[0].className = "btn btn-red 3i5";
  770. document.getElementsByClassName("3i5")[0].innerText = "Disable hi Script!";
  771. }
  772. })
  773. document.getElementsByClassName("5i5")[0].addEventListener('click', function() {
  774. autorss = !autorss;
  775. document.getElementsByClassName("5i5")[0].className = "btn btn-blue 5i5";
  776. document.getElementsByClassName("5i5")[0].innerText = "Enable Send Info!";
  777. if (autorss) {
  778. document.getElementsByClassName("5i5")[0].className = "btn btn-red 5i5";
  779. document.getElementsByClassName("5i5")[0].innerText = "Disable Send Info!";
  780. }
  781. })
  782. document.getElementsByClassName("6i5")[0].addEventListener('click', function() {
  783. run = !run;
  784. document.getElementsByClassName("6i5")[0].className = "btn btn-blue 6i5";
  785. document.getElementsByClassName("6i5")[0].innerText = "Enable Speed Run";
  786. if (run) {
  787. document.getElementsByClassName("6i5")[0].className = "btn btn-red 6i5";
  788. document.getElementsByClassName("6i5")[0].innerText = "Disable Speed Run";
  789. }
  790. })
  791. document.getElementsByClassName("8i5")[0].addEventListener('click', function() {
  792. heal = !heal;
  793. document.getElementsByClassName("8i5")[0].className = "btn btn-green 8i5";
  794. document.getElementsByClassName("8i5")[0].innerText = "Auto heal and Pet Heal";
  795. if (heal) {
  796. document.getElementsByClassName("8i5")[0].className = "btn btn-red 8i5";
  797. document.getElementsByClassName("8i5")[0].innerText = "!(Auto heal and Pet Heal)";
  798. }
  799. })
  800. document.getElementsByClassName("9i5")[0].addEventListener('click', function() {
  801. revive = !revive;
  802. document.getElementsByClassName("9i5")[0].className = "btn btn-green 9i5";
  803. document.getElementsByClassName("9i5")[0].innerText = "Revive and Evolve Pets";
  804. if (revive) {
  805. document.getElementsByClassName("9i5")[0].className = "btn btn-red 9i5";
  806. document.getElementsByClassName("9i5")[0].innerText = "!(Revive and Evolve Pets)";
  807. }
  808. })
  809. document.getElementsByClassName("10i5")[0].addEventListener('click', function() {
  810. clearMsgs = !clearMsgs;
  811. document.getElementsByClassName("10i5")[0].className = "btn btn-blue 10i5";
  812. document.getElementsByClassName("10i5")[0].innerText = "Clear Messages";
  813. if (clearMsgs) {
  814. document.getElementsByClassName("10i5")[0].className = "btn btn-red 10i5";
  815. document.getElementsByClassName("10i5")[0].innerText = "!(Clear Messages)";
  816. }
  817. })
  818. document.getElementsByClassName("13i5")[0].addEventListener('click', function() {
  819. kick1p = !kick1p;
  820. document.getElementsByClassName("13i5")[0].className = "btn btn-white 13i5";
  821. document.getElementsByClassName("13i5")[0].innerText = "Enable 3x3 wall";
  822. if (kick1p) {
  823. document.getElementsByClassName("13i5")[0].className = "btn btn-red 13i5";
  824. document.getElementsByClassName("13i5")[0].innerText = "Disabled 3x3 wall";
  825. }
  826. })
  827. document.getElementsByClassName("12i2")[0].addEventListener('click', function() {
  828. window.shouldStartScript = !window.shouldStartScript;
  829. document.getElementsByClassName("12i2")[0].innerText = "Active 4 Player Trick";
  830. if (window.shouldStartScript) {
  831. document.getElementsByClassName("12i2")[0].innerText = "!(Active 4 Player Trick)";
  832. }
  833. })
  834. document.getElementsByClassName("18i2")[0].addEventListener('click', function() {
  835. window.startaito2 = !window.startaito2;
  836. document.getElementsByClassName("18i2")[0].innerText = "Active Player Finder";
  837. if (window.startaito2) {
  838. window.sendAitoAlt2();
  839. document.getElementsByClassName("18i2")[0].innerText = "!(Active Player Finder)";
  840. }
  841. })
  842. document.getElementsByClassName("25i2")[0].addEventListener('click', function() {
  843. if (window.playerX && window.playerY) {
  844. window.findPlayer = !window.findPlayer;
  845. document.getElementsByClassName("25i2")[0].innerText = "Follow Position";
  846. if (window.findPlayer) {
  847. document.getElementsByClassName("25i2")[0].innerText = "Unfollow Position";
  848. }
  849. } else {
  850. game.ui.components.PopupOverlay.showHint("Player not found! You can try again once it's found.");
  851. }
  852. })
  853. document.getElementsByClassName("13i2")[0].addEventListener('click', function() {
  854. window.startaito7 = !window.startaito7;
  855. LKeyWithTimeouts();
  856. document.getElementsByClassName("13i2")[0].innerText = "Enable L Key!";
  857. if (window.startaito7) {
  858. document.getElementsByClassName("13i2")[0].innerText = "Disable L Key!";
  859. }
  860. })
  861. document.getElementsByClassName("0i2")[0].addEventListener('click', function() {
  862. window.sendWs();
  863. })
  864. document.getElementsByClassName("1i2")[0].addEventListener('click', function() {
  865. setTimeout(() => {
  866. if (window.aim) {
  867. document.getElementsByClassName("1i2")[0].innerText = "Disable Aim!";
  868. } else {
  869. document.getElementsByClassName("1i2")[0].innerText = "Enable Aim!";
  870. }
  871. }, 100)
  872. })
  873. document.getElementsByClassName("2i2")[0].addEventListener('click', function() {
  874. setTimeout(() => {
  875. if (window.move) {
  876. document.getElementsByClassName("2i2")[0].innerText = "Disable Player Follower!";
  877. } else {
  878. document.getElementsByClassName("2i2")[0].innerText = "Enable Player Follower!";
  879. }
  880. }, 100)
  881. })
  882. document.getElementsByClassName("3i2")[0].addEventListener('click', function() {
  883. let id = Math.floor(document.getElementsByClassName("4i2")[0].value);
  884. window.allSockets[id-1].close();
  885. })
  886. game.network.sendInput = (e) => {
  887. let i = e;
  888. if (!i.mouseDown && !i.mouseUp) {
  889. game.network.sendPacket(3, e);
  890. }
  891. }
  892. document.getElementsByClassName('hud')[0].addEventListener('mousedown', e => {
  893. if (!e.button) {
  894. game.network.sendPacket(3, {mouseDown: game.inputPacketCreator.screenToYaw(e.clientX, e.clientY)})
  895. }
  896. })
  897. document.getElementsByClassName('hud')[0].addEventListener('mouseup', e => {
  898. if (!e.button) {
  899. game.network.sendPacket(3, {mouseUp: 1})
  900. }
  901. })
  902. window.RecordBase = function(baseName) {
  903. Game.currentGame.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() {
  904. game.ui.components.PopupOverlay.showHint("Successfully recorded!");
  905. let buildings = Game.currentGame.ui.buildings;
  906. let base = "";
  907. let stash = GetGoldStash();
  908. if (stash == undefined) {
  909. return
  910. }
  911. let stashPosition = {
  912. x: stash.x,
  913. y: stash.y
  914. }
  915. for (var uid in buildings) {
  916. if (!buildings.hasOwnProperty(uid)) {
  917. continue
  918. }
  919. let obj = buildings[uid]
  920. let x = Game.currentGame.ui.buildings[obj.uid].x - stashPosition.x
  921. let y = Game.currentGame.ui.buildings[obj.uid].y - stashPosition.y
  922. let building = Game.currentGame.ui.buildings[obj.uid].type
  923. let yaw = 0;
  924. base += "PlaceBuilding(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");"
  925. }
  926. localStorage.RecordedBase1 = base
  927. })
  928. }
  929. window.buildRecordedBase = function() {
  930. let waitForGoldStash = setInterval(function() {
  931. if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") {
  932. stash = GetGoldStash();
  933. if (stash == undefined) return
  934. stashPosition = {
  935. x: stash.x,
  936. y: stash.y
  937. }
  938. clearInterval(waitForGoldStash)
  939. game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!");
  940. var basecode = localStorage.RecordedBase1
  941. basecode = new Function(basecode)
  942. return basecode()
  943. }
  944. }, 275)
  945. }
  946. window.DeleteRecordedbase = function() {
  947. Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() {
  948. game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!");
  949. localStorage.RecordedBase1 = null;
  950. })
  951. }
  952. window.RecordBase2 = function(baseName) {
  953. Game.currentGame.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() {
  954. game.ui.components.PopupOverlay.showHint("Successfully recorded!");
  955. let buildings = Game.currentGame.ui.buildings;
  956. let base = "";
  957. let stash = GetGoldStash();
  958. if (stash == undefined) {
  959. return
  960. }
  961. let stashPosition = {
  962. x: stash.x,
  963. y: stash.y
  964. }
  965. for (var uid in buildings) {
  966. if (!buildings.hasOwnProperty(uid)) {
  967. continue
  968. }
  969. let obj = buildings[uid]
  970. let x = Game.currentGame.ui.buildings[obj.uid].x - stashPosition.x
  971. let y = Game.currentGame.ui.buildings[obj.uid].y - stashPosition.y
  972. let building = Game.currentGame.ui.buildings[obj.uid].type
  973. let yaw = 0;
  974. base += "PlaceBuilding(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");"
  975. }
  976. localStorage.RecordedBase2 = base
  977. })
  978. }
  979. window.buildRecordedBase2 = function() {
  980. var waitForGoldStash = setInterval(function() {
  981. if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") {
  982. stash = GetGoldStash();
  983. if (stash == undefined) return
  984. stashPosition = {
  985. x: stash.x,
  986. y: stash.y
  987. }
  988. clearInterval(waitForGoldStash)
  989. game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!");
  990. var basecode = localStorage.RecordedBase2
  991. basecode = new Function(basecode)
  992. return basecode()
  993. }
  994. }, 275)
  995. }
  996. window.DeleteRecordedbase2 = function() {
  997. Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() {
  998. game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!");
  999. localStorage.RecordedBase2 = null;
  1000. })
  1001. }
  1002. window.RecordBase3 = function(baseName) {
  1003. Game.currentGame.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() {
  1004. game.ui.components.PopupOverlay.showHint("Successfully recorded!");
  1005. let buildings = Game.currentGame.ui.buildings;
  1006. let base = "";
  1007. let stash = GetGoldStash();
  1008. if (stash == undefined) {
  1009. return
  1010. }
  1011. let stashPosition = {
  1012. x: stash.x,
  1013. y: stash.y
  1014. }
  1015. for (var uid in buildings) {
  1016. if (!buildings.hasOwnProperty(uid)) {
  1017. continue
  1018. }
  1019. let obj = buildings[uid]
  1020. let x = Game.currentGame.ui.buildings[obj.uid].x - stashPosition.x
  1021. let y = Game.currentGame.ui.buildings[obj.uid].y - stashPosition.y
  1022. let building = Game.currentGame.ui.buildings[obj.uid].type
  1023. let yaw = 0;
  1024. base += "PlaceBuilding(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");"
  1025. }
  1026. localStorage.RecordedBase3 = base
  1027. })
  1028. }
  1029. window.buildRecordedBase3 = function() {
  1030. var waitForGoldStash = setInterval(function() {
  1031. if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") {
  1032. stash = GetGoldStash();
  1033. if (stash == undefined) return
  1034. stashPosition = {
  1035. x: stash.x,
  1036. y: stash.y
  1037. }
  1038. clearInterval(waitForGoldStash)
  1039. game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!");
  1040. var basecode = localStorage.RecordedBase3
  1041. basecode = new Function(basecode)
  1042. return basecode()
  1043. }
  1044. }, 275)
  1045. }
  1046. window.DeleteRecordedbase3 = function() {
  1047. Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() {
  1048. game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!");
  1049. localStorage.RecordedBase3 = null;
  1050. })
  1051. }
  1052. window.buildSavedBase = function() {
  1053. var waitForGoldStash = setInterval(function() {
  1054. if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") {
  1055. stash = GetGoldStash();
  1056. if (stash == undefined) return
  1057. stashPosition = {
  1058. x: stash.x,
  1059. y: stash.y
  1060. }
  1061. clearInterval(waitForGoldStash)
  1062. var basecode = document.getElementsByClassName("30i3")[0].value;
  1063. basecode = new Function(basecode)
  1064. return basecode()
  1065. }
  1066. }, 275)
  1067. }
  1068. window.saveBase = () => {
  1069. let buildings = Game.currentGame.ui.buildings;
  1070. let base = "";
  1071. let stash = GetGoldStash();
  1072. if (stash == undefined) {
  1073. return
  1074. }
  1075. let stashPosition = {
  1076. x: stash.x,
  1077. y: stash.y
  1078. }
  1079. for (var uid in buildings) {
  1080. if (!buildings.hasOwnProperty(uid)) {
  1081. continue
  1082. }
  1083. let obj = buildings[uid]
  1084. let x = Game.currentGame.ui.buildings[obj.uid].x - stashPosition.x
  1085. let y = Game.currentGame.ui.buildings[obj.uid].y - stashPosition.y
  1086. let building = Game.currentGame.ui.buildings[obj.uid].type
  1087. let yaw = 0;
  1088. base += "PlaceBuilding(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");";
  1089. }
  1090. document.getElementsByClassName("30i3")[0].value = base;
  1091. }
  1092. window.autobuildtoggle = () => {
  1093. autobuild = !autobuild;
  1094. document.getElementsByClassName("21i3")[0].innerText = "Enable Auto Build Saved Towers!";
  1095. if (autobuild) {
  1096. document.getElementsByClassName("21i3")[0].innerText = "Disable Auto Build Saved Towers!";
  1097. }
  1098. }
  1099. window.upgradealltoggle = () => {
  1100. upgradeAll2 = !upgradeAll2;
  1101. document.getElementsByClassName("26i3")[0].innerText = "Enable Upgrade All!";
  1102. if (upgradeAll2) {
  1103. document.getElementsByClassName("26i3")[0].innerText = "Disable Upgrade All!";
  1104. }
  1105. }
  1106. function GetGoldStash() {
  1107. for (let i in game.ui.buildings) {
  1108. if (game.ui.buildings[i].type == "GoldStash") {
  1109. return game.ui.buildings[i];
  1110. }
  1111. }
  1112. }
  1113. window.PlaceBuilding = function(x, y, building, yaw) {
  1114. Game.currentGame.network.sendRpc({
  1115. name: "MakeBuilding",
  1116. x: x,
  1117. y: y,
  1118. type: building,
  1119. yaw: yaw
  1120. })
  1121. }
  1122. function counter(e = 0) {
  1123. if (e <= -0.99949999999999999e24) {
  1124. return Math.round(e/-1e23)/-10 + "TT";
  1125. }
  1126. if (e <= -0.99949999999999999e21) {
  1127. return Math.round(e/-1e20)/-10 + "TB";
  1128. }
  1129. if (e <= -0.99949999999999999e18) {
  1130. return Math.round(e/-1e17)/-10 + "TM";
  1131. }
  1132. if (e <= -0.99949999999999999e15) {
  1133. return Math.round(e/-1e14)/-10 + "TK";
  1134. }
  1135. if (e <= -0.99949999999999999e12) {
  1136. return Math.round(e/-1e11)/-10 + "T";
  1137. }
  1138. if (e <= -0.99949999999999999e9) {
  1139. return Math.round(e/-1e8)/-10 + "B";
  1140. }
  1141. if (e <= -0.99949999999999999e6) {
  1142. return Math.round(e/-1e5)/-10 + "M";
  1143. }
  1144. if (e <= -0.99949999999999999e3) {
  1145. return Math.round(e/-1e2)/-10 + "K";
  1146. }
  1147. if (e <= 0.99949999999999999e3) {
  1148. return Math.round(e) + "";
  1149. }
  1150. if (e <= 0.99949999999999999e6) {
  1151. return Math.round(e/1e2)/10 + "K";
  1152. }
  1153. if (e <= 0.99949999999999999e9) {
  1154. return Math.round(e/1e5)/10 + "M";
  1155. }
  1156. if (e <= 0.99949999999999999e12) {
  1157. return Math.round(e/1e8)/10 + "B";
  1158. }
  1159. if (e <= 0.99949999999999999e15) {
  1160. return Math.round(e/1e11)/10 + "T";
  1161. }
  1162. if (e <= 0.99949999999999999e18) {
  1163. return Math.round(e/1e14)/10 + "TK";
  1164. }
  1165. if (e <= 0.99949999999999999e21) {
  1166. return Math.round(e/1e17)/10 + "TM";
  1167. }
  1168. if (e <= 0.99949999999999999e24) {
  1169. return Math.round(e/1e20)/10 + "TB";
  1170. }
  1171. if (e <= 0.99949999999999999e27) {
  1172. return Math.round(e/1e+23)/10 + "TT";
  1173. }
  1174. if (e >= 0.99949999999999999e27) {
  1175. return Math.round(e/1e+23)/10 + "TT";
  1176. }
  1177. }
  1178. function healPlayer() {
  1179. if (!game.ui.components.PlacementOverlay.buildingId && !game.ui.components.BuildingOverlay.buildingId) {
  1180. Game.currentGame.network.sendRpc({
  1181. "name": "EquipItem",
  1182. "itemName": "HealthPotion",
  1183. "tier": 1
  1184. })
  1185. Game.currentGame.network.sendRpc({
  1186. "name": "BuyItem",
  1187. "itemName": "HealthPotion",
  1188. "tier": 1
  1189. })
  1190. }
  1191. }
  1192. window.sendAitoAlt = () => {
  1193. if (window.startaito) {
  1194. let ws = new WebSocket(`ws://${Game.currentGame.options.servers[Game.currentGame.options.serverId].hostname}:8000`);
  1195. ws.binaryType = "arraybuffer";
  1196. ws.onclose = () => {
  1197. ws.isclosed = true;
  1198. }
  1199. ws.onopen = () => {
  1200. ws.network = new Game.currentGame.networkType();
  1201. ws.network.sendInput = (t) => {
  1202. ws.network.sendPacket(3, t);
  1203. };
  1204. ws.network.sendRpc = (t) => {
  1205. ws.network.sendPacket(9, t);
  1206. };
  1207. ws.network.sendPacket = (e, t) => {
  1208. if (!ws.isclosed) {
  1209. ws.send(ws.network.codec.encode(e, t));
  1210. }
  1211. };
  1212. }
  1213. ws.onEnterWorld = () => {
  1214. // useless
  1215. }
  1216. ws.onmessage = msg => {
  1217. ws.data = ws.network.codec.decode(msg.data);
  1218. if(ws.data.opcode === 5) {
  1219. ws.network.sendPacket(4, { displayName: localStorage.name, extra: ws.data.extra });
  1220. };
  1221. if (ws.data.uid) {
  1222. ws.uid = ws.data.uid;
  1223. }
  1224. if (ws.data.name) {
  1225. ws.dataType = ws.data;
  1226. }
  1227. if (!window.startaito && !ws.isclosed) {
  1228. ws.isclosed = true;
  1229. ws.close();
  1230. }
  1231. if (ws.verified) {
  1232. if (!ws.isDay && !ws.isclosed) {
  1233. ws.isclosed = true;
  1234. ws.close();
  1235. window.sendAitoAlt();
  1236. }
  1237. }
  1238. if (ws.data.name == "DayCycle") {
  1239. ws.isDay = ws.data.response.isDay;
  1240. if (ws.isDay) {
  1241. ws.verified = true;
  1242. }
  1243. }
  1244. if (ws.data.name == "Dead") {
  1245. ws.network.sendInput({
  1246. respawn: 1
  1247. });
  1248. }
  1249. if (ws.data.name == "Leaderboard") {
  1250. ws.lb = ws.data;
  1251. if (ws.psk) {
  1252. ws.network.sendRpc({
  1253. name: "JoinPartyByShareKey",
  1254. partyShareKey: game.ui.getPlayerPartyShareKey()
  1255. });
  1256. if (ws.psk.response.partyShareKey == game.ui.getPlayerPartyShareKey()) {
  1257. ws.network.sendRpc({
  1258. name: "BuyItem",
  1259. itemName: "Pause",
  1260. tier: 1
  1261. });
  1262. }
  1263. }
  1264. }
  1265. if (ws.data.name == "PartyShareKey") {
  1266. ws.psk = ws.data;
  1267. }
  1268. switch (ws.data.opcode) {
  1269. case 4:
  1270. ws.onEnterWorld(ws.data);
  1271. break;
  1272. }
  1273. }
  1274. }
  1275. }
  1276. game.network.addRpcHandler("ReceiveChatMessage", e => {
  1277. if (e.message == "!aito" && e.uid == game.world.myUid) {
  1278. window.startaito = !window.startaito;
  1279. window.sendAitoAlt();
  1280. }
  1281. })
  1282. window.allSockets = [];
  1283. window.FKey = false;
  1284. window.FKeyOn = null;
  1285. window.socketId1 = 1;
  1286. window.socketId2 = 2;
  1287. var cloneTimeout = false;
  1288. window.sendWs = () => {
  1289. let mousePosition3;
  1290. let isOnControl = true;
  1291. let isTrue = true;
  1292. let ws = new WebSocket(`ws://${game.options.servers[game.options.serverId].hostname}:8000`);
  1293. if (!window.allSockets[window.allSockets.length]) {
  1294. ws.cloneId = window.allSockets.length + 1;
  1295. window.allSockets[window.allSockets.length] = ws;
  1296. }
  1297. ws.binaryType = "arraybuffer";
  1298. ws.aimingYaw = 1;
  1299. ws.onclose = () => {
  1300. ws.isclosed = true;
  1301. }
  1302. ws.onPreEnterWorld = (data) => {
  1303. ws.network = new Game.currentGame.networkType();
  1304. ws.network.sendInput = (t) => { ws.network.sendPacket(3, t); };
  1305. ws.network.sendRpc = (t) => { ws.network.sendPacket(9, t); };
  1306. ws.network.sendPacket = (e, t) => { if (!ws.isclosed) { ws.send(ws.network.codec.encode(e, t)); } };
  1307. ws.network.sendPacket(4, {displayName: ws.cloneId + "", extra: data.extra});
  1308. }
  1309. ws.onEnterWorld = () => {
  1310. altname++;
  1311. }
  1312. ws.onmessage = msg => {
  1313. if (new Uint8Array(msg.data)[0] == 5) {
  1314. let data = codec.decode(msg.data);
  1315. ws.onPreEnterWorld(data);
  1316. return;
  1317. }
  1318. ws.data = ws.network.codec.decode(msg.data);
  1319. if (isTrue) {
  1320. isTrue = !isTrue;
  1321. if (ws.psk) {
  1322. ws.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: Game.currentGame.ui.getPlayerPartyShareKey() + ""});
  1323. } else {
  1324. setTimeout(() => {
  1325. if (ws.psk) {
  1326. ws.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: Game.currentGame.ui.getPlayerPartyShareKey() + ""});
  1327. }
  1328. }, 250)
  1329. }
  1330. ws.network.sendInput({up: 1});
  1331. ws.mouseUp = 1;
  1332. ws.mouseDown = 0;
  1333. ws.f = false;
  1334. function mouseMoved(e, x, y, d) {
  1335. ws.aimingYaw = e;
  1336. if (ws.mouseDown && !ws.mouseUp) {
  1337. ws.network.sendInput({mouseMovedWhileDown: e, worldX: x, worldY: y, distance: d});
  1338. }
  1339. if (!ws.mouseDown && ws.mouseUp) {
  1340. ws.network.sendInput({mouseMoved: e, worldX: x, worldY: y, distance: d});
  1341. }
  1342. }
  1343. document.addEventListener('mousemove', mousemove => {
  1344. if (isOnControl) {
  1345. if (!ws.isclosed) {
  1346. mousePosition3 = game.renderer.screenToWorld(mousemove.clientX, mousemove.clientY);
  1347. if (ws.myPlayer) {
  1348. if (ws.myPlayer.position) {
  1349. mouseMoved(game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + mousePosition3.x)*100, (-ws.myPlayer.position.y + mousePosition3.y)*100), Math.floor(mousePosition3.x), Math.floor(mousePosition3.y), Math.floor(game.inputPacketCreator.distanceToCenter((-ws.myPlayer.position.x + mousePosition3.x)*100, (-ws.myPlayer.position.y + mousePosition3.y)*100)/100));
  1350. }
  1351. }
  1352. }
  1353. }
  1354. })
  1355. let SendRpc = ws.network.sendRpc;
  1356. let SendInput = ws.network.sendInput;
  1357. document.addEventListener('keydown', e => {
  1358. if (!ws.isclosed) {
  1359. if (isOnControl) {
  1360. if (e.keyCode == 81 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1361. setTimeout(() => {
  1362. var nextWeapon = location.hostname == "zombs.io" ? 'Pickaxe' : "Crossbow";
  1363. var weaponOrder = location.hostname == "zombs,io" ? ['Pickaxe', 'Spear', 'Bow', 'Bomb'] : ["Crossbow", 'Pickaxe', 'Spear', 'Bow', 'Bomb'];
  1364. var foundCurrent = false;
  1365. for (let i in weaponOrder) {
  1366. if (foundCurrent) {
  1367. if (ws.inventory[weaponOrder[i]]) {
  1368. nextWeapon = weaponOrder[i];
  1369. break;
  1370. }
  1371. }
  1372. else if (weaponOrder[i] == ws.myPlayer.weaponName) {
  1373. foundCurrent = true;
  1374. }
  1375. }
  1376. ws.network.sendRpc({name: 'EquipItem', itemName: nextWeapon, tier: ws.inventory[nextWeapon].tier});
  1377. }, 100);
  1378. }
  1379. if (e.keyCode == 72 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1380. ws.network.sendRpc({name: 'LeaveParty'});
  1381. }
  1382. if (e.keyCode == 74 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1383. ws.network.sendRpc({name: 'JoinPartyByShareKey', partyShareKey: game.ui.playerPartyShareKey});
  1384. }
  1385. if (e.keyCode == 32 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1386. setTimeout(() => {
  1387. ws.network.sendInput({space: 0});
  1388. ws.network.sendInput({space: 1});
  1389. }, 100);
  1390. }
  1391. if (e.keyCode == 82) {
  1392. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1393. for (let i in game.ui.buildings) {
  1394. 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) {
  1395. ws.network.sendRpc({name: "UpgradeBuilding", uid: game.ui.buildings[i].uid});
  1396. }
  1397. }
  1398. }
  1399. }
  1400. if (e.keyCode == 46) {
  1401. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1402. if (ws.myPet) {
  1403. ws.network.sendRpc({name: "DeleteBuilding", uid: ws.myPet.uid});
  1404. }
  1405. }
  1406. }
  1407. if (e.keyCode == 82) {
  1408. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1409. if (!game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.components.BuildingOverlay.buildingUid) {
  1410. ws.network.sendRpc({name: "UpgradeBuilding", uid: game.ui.components.BuildingOverlay.buildingUid});
  1411. }
  1412. }
  1413. }
  1414. if (e.keyCode == 89) {
  1415. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1416. for (let i in game.ui.buildings) {
  1417. 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") {
  1418. ws.network.sendRpc({name: "DeleteBuilding", uid: game.ui.buildings[i].uid})
  1419. }
  1420. }
  1421. }
  1422. }
  1423. if (e.keyCode == 84) {
  1424. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1425. for (var i in game.ui.buildings) {
  1426. 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") {
  1427. game.network.sendRpc({name: "DeleteBuilding", uid: game.ui.buildings[i].uid});
  1428. }
  1429. }
  1430. }
  1431. }
  1432. if (e.keyCode == 89) {
  1433. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1434. if (!game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.components.BuildingOverlay.buildingId !== "GoldStash" && game.ui.components.BuildingOverlay.buildingUid) {
  1435. ws.network.sendRpc({name: "DeleteBuilding", uid: game.ui.components.BuildingOverlay.buildingUid})
  1436. }
  1437. }
  1438. }
  1439. let KeyCode = e.keyCode;
  1440. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1441. if (!ws.automove) {
  1442. if (KeyCode == 76) {
  1443. ws.network.sendInput({up: 1, down: 0});
  1444. }
  1445. if (KeyCode == 191) {
  1446. ws.network.sendInput({right: 1, left: 0});
  1447. }
  1448. if (KeyCode == 190) {
  1449. ws.network.sendInput({down: 1, up: 0});
  1450. }
  1451. if (KeyCode == 188) {
  1452. ws.network.sendInput({left: 1, right: 0});
  1453. }
  1454. if (KeyCode == 87) {
  1455. ws.network.sendInput({up: 1, down: 0});
  1456. }
  1457. if (KeyCode == 68) {
  1458. SendInput({right: 1, left: 0});
  1459. }
  1460. if (KeyCode == 83) {
  1461. ws.network.sendInput({down: 1, up: 0});
  1462. }
  1463. if (KeyCode == 65) {
  1464. ws.network.sendInput({left: 1, right: 0});
  1465. }
  1466. }
  1467. if (e.keyCode == 82) {
  1468. ws.network.sendRpc({name: "BuyItem", itemName: "HealthPotion", tier: 1})
  1469. ws.network.sendRpc({name: "EquipItem", itemName: "HealthPotion", tier: 1})
  1470. }
  1471. if (KeyCode == 78) {
  1472. ws.network.sendRpc({
  1473. "name": "EquipItem",
  1474. "itemName": "PetCARL",
  1475. "tier": ws.inventory.PetCARL.tier
  1476. })
  1477. ws.network.sendRpc({
  1478. "name": "EquipItem",
  1479. "itemName": "PetMiner",
  1480. "tier": ws.inventory.PetMiner.tier
  1481. })
  1482. }
  1483. if (KeyCode == 77) {
  1484. ws.network.sendRpc({
  1485. "name": "BuyItem",
  1486. "itemName": "PetRevive",
  1487. "tier": 1
  1488. })
  1489. ws.network.sendRpc({
  1490. "name": "EquipItem",
  1491. "itemName": "PetRevive",
  1492. "tier": 1
  1493. })
  1494. ws.network.sendRpc({
  1495. "name": "BuyItem",
  1496. "itemName": "PetCARL",
  1497. "tier": ws.inventory.PetCARL.tier + 1
  1498. })
  1499. ws.network.sendRpc({
  1500. "name": "BuyItem",
  1501. "itemName": "PetMiner",
  1502. "tier": ws.inventory.PetMiner.tier + 1
  1503. })
  1504. }
  1505. if (KeyCode == 221) {
  1506. game.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: ws.psk.response.partyShareKey})
  1507. }
  1508. }
  1509. }
  1510. }
  1511. })
  1512. document.addEventListener('keyup', e => {
  1513. if (!ws.isclosed) {
  1514. if (isOnControl) {
  1515. let KeyCode = e.keyCode;
  1516. if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") {
  1517. if (!ws.automove) {
  1518. if (KeyCode == 76) {
  1519. ws.network.sendInput({up: 0});
  1520. }
  1521. if (KeyCode == 191) {
  1522. ws.network.sendInput({right: 0});
  1523. }
  1524. if (KeyCode == 190) {
  1525. ws.network.sendInput({down: 0});
  1526. }
  1527. if (KeyCode == 188) {
  1528. ws.network.sendInput({left: 0});
  1529. }
  1530. if (KeyCode == 87) {
  1531. ws.network.sendInput({up: 0});
  1532. }
  1533. if (KeyCode == 68) {
  1534. ws.network.sendInput({right: 0});
  1535. }
  1536. if (KeyCode == 83) {
  1537. ws.network.sendInput({down: 0});
  1538. }
  1539. if (KeyCode == 65) {
  1540. ws.network.sendInput({left: 0});
  1541. }
  1542. }
  1543. }
  1544. }
  1545. }
  1546. })
  1547. document.getElementsByClassName("hud")[0].addEventListener("mousedown", function(e) {
  1548. if (!ws.isclosed) {
  1549. if (isOnControl) {
  1550. if (!e.button) {
  1551. ws.mouseDown = 1;
  1552. ws.mouseUp = 0;
  1553. ws.network.sendInput({mouseDown: ws.aimingYaw, worldX: Math.floor(mousePosition3.x), worldY: Math.floor(mousePosition3.y), distance: Math.floor(game.inputPacketCreator.distanceToCenter((-ws.myPlayer.position.x + mousePosition3.x)*100, (-ws.myPlayer.position.y + mousePosition3.y)*100)/100)});
  1554. }
  1555. }
  1556. }
  1557. });
  1558. document.getElementsByClassName("hud")[0].addEventListener("mouseup", function(e) {
  1559. if (!ws.isclosed) {
  1560. if (isOnControl) {
  1561. if (!e.button) {
  1562. ws.mouseUp = 1;
  1563. ws.mouseDown = 0;
  1564. ws.network.sendInput({mouseUp: 1, worldX: Math.floor(mousePosition3.x), worldY: Math.floor(mousePosition3.y), distance: Math.floor(game.inputPacketCreator.distanceToCenter((-ws.myPlayer.position.x + mousePosition3.x)*100, (-ws.myPlayer.position.y + mousePosition3.y)*100)/100)});
  1565. }
  1566. }
  1567. }
  1568. });
  1569. let t1 = location.hostname == "zombs.io" ? 0 : 1;
  1570. t1 == 1 && (document.getElementsByClassName("hud-shop-item")[t1 + 0].addEventListener('click', function() {
  1571. ws.network.sendRpc({name: "BuyItem", itemName: "Crossbow", tier: ws.inventory.Crossbow ? (ws.inventory.Crossbow.tier + 1) : 1});
  1572. }));
  1573. document.getElementsByClassName("hud-shop-item")[t1 + 0].addEventListener('click', function() {
  1574. ws.network.sendRpc({name: "BuyItem", itemName: "Pickaxe", tier: ws.inventory.Pickaxe.tier+1});
  1575. });
  1576. document.getElementsByClassName("hud-shop-item")[t1 + 1].addEventListener('click', function() {
  1577. if (!ws.inventory.Spear) {
  1578. ws.network.sendRpc({name: "BuyItem", itemName: "Spear", tier: 1});
  1579. } else {
  1580. ws.network.sendRpc({name: "BuyItem", itemName: "Spear", tier: ws.inventory.Spear.tier+1});
  1581. }
  1582. });
  1583. document.getElementsByClassName("hud-shop-item")[t1 + 2].addEventListener('click', function() {
  1584. if (!ws.inventory.Bow) {
  1585. ws.network.sendRpc({name: "BuyItem", itemName: "Bow", tier: 1});
  1586. } else {
  1587. ws.network.sendRpc({name: "BuyItem", itemName: "Bow", tier: ws.inventory.Bow.tier+1});
  1588. }
  1589. });
  1590. document.getElementsByClassName("hud-shop-item")[t1 + 3].addEventListener('click', function() {
  1591. if (!ws.inventory.Bomb) {
  1592. ws.network.sendRpc({name: "BuyItem", itemName: "Bomb", tier: 1});
  1593. } else {
  1594. ws.network.sendRpc({name: "BuyItem", itemName: "Bomb", tier: ws.inventory.Bomb.tier+1});
  1595. }
  1596. });
  1597. document.getElementsByClassName("hud-shop-item")[t1 + 4].addEventListener('click', function() {
  1598. ws.network.sendRpc({name: "BuyItem", itemName: "ZombieShield", tier: ws.inventory.ZombieShield ? (ws.inventory.ZombieShield.tier + 1) : 1});
  1599. });
  1600. document.getElementsByClassName("hud-respawn-btn")[0].addEventListener('click', function() {
  1601. ws.network.sendRpc({respawn: 1});
  1602. })
  1603. t1 && document.getElementsByClassName("hud-toolbar-item")[0].addEventListener('mouseup', function(e) {
  1604. if (!e.button) {
  1605. ws.network.sendRpc({name: "EquipItem", itemName: "Crossbow", tier: ws.inventory.Crossbow.tier});
  1606. }
  1607. });
  1608. document.getElementsByClassName("hud-toolbar-item")[t1 + 0].addEventListener('mouseup', function(e) {
  1609. if (!e.button) {
  1610. ws.network.sendRpc({name: "EquipItem", itemName: "Pickaxe", tier: ws.inventory.Pickaxe.tier});
  1611. }
  1612. });
  1613. document.getElementsByClassName("hud-toolbar-item")[t1 + 1].addEventListener('mouseup', function(e) {
  1614. if (!e.button) {
  1615. ws.network.sendRpc({name: "EquipItem", itemName: "Spear", tier: ws.inventory.Spear.tier});
  1616. }
  1617. });
  1618. document.getElementsByClassName("hud-toolbar-item")[t1 + 2].addEventListener('mouseup', function(e) {
  1619. if (!e.button) {
  1620. ws.network.sendRpc({name: "EquipItem", itemName: "Bow", tier: ws.inventory.Bow.tier});
  1621. }
  1622. });
  1623. document.getElementsByClassName("hud-toolbar-item")[t1 + 3].addEventListener('mouseup', function(e) {
  1624. if (!e.button) {
  1625. ws.network.sendRpc({name: "EquipItem", itemName: "Bomb", tier: ws.inventory.Bomb.tier});
  1626. }
  1627. });
  1628. document.getElementsByClassName("hud-toolbar-item")[t1 + 4].addEventListener('mouseup', function(e) {
  1629. if (!e.button) {
  1630. ws.network.sendRpc({name: "EquipItem", itemName: "HealthPotion", tier: 1});
  1631. }
  1632. });
  1633. document.getElementsByClassName("hud-toolbar-item")[t1 + 5].addEventListener('mouseup', function(e) {
  1634. if (!e.button) {
  1635. ws.network.sendRpc({name: "EquipItem", itemName: "PetHealthPotion", tier: 1});
  1636. }
  1637. });
  1638. document.getElementsByClassName("hud-toolbar-item")[t1 + 6].addEventListener("mouseup", function(e) {
  1639. if (!e.button) {
  1640. ws.automove = !ws.automove;
  1641. if (ws.automove) {
  1642. window.move = true;
  1643. } else {
  1644. window.move = false;
  1645. }
  1646. }
  1647. });
  1648. document.getElementsByClassName("10i")[0].addEventListener('click', () => {
  1649. ws.activebow = !ws.activebow;
  1650. ws.playerWeapon = ws.myPlayer.weaponName;
  1651. if (ws.activebow) {
  1652. if (ws.inventory.Bow) {
  1653. ws.network.sendRpc({name: "EquipItem", itemName: "Crosbow", tier: ws.inventory.Crossbow.tier})
  1654. } else {
  1655. ws.network.sendRpc({name: "BuyItem", itemName: "Crossbow", tier: 1})
  1656. ws.network.sendRpc({name: "EquipItem", itemName: "Crossbow", tier: 1})
  1657. }
  1658. } else {
  1659. ws.network.sendRpc({name: "EquipItem", itemName: ws.playerWeapon, tier: ws.inventory[ws.playerWeapon].tier})
  1660. }
  1661. })
  1662. if (window.aim) {
  1663. ws.autoaim = true;
  1664. }
  1665. if (window.move) {
  1666. ws.automove = true;
  1667. }
  1668. if (window.autohiBot) {
  1669. ws.autohi = true;
  1670. }
  1671. document.getElementsByClassName("1i2")[0].addEventListener('click', () => {
  1672. ws.autoaim = !ws.autoaim;
  1673. if (ws.autoaim) {
  1674. window.aim = true;
  1675. } else {
  1676. window.aim = false;
  1677. }
  1678. })
  1679. document.getElementsByClassName("2i2")[0].addEventListener('click', () => {
  1680. ws.automove = !ws.automove;
  1681. if (ws.automove) {
  1682. window.move = true;
  1683. } else {
  1684. window.move = false;
  1685. }
  1686. })
  1687. document.getElementsByClassName("7i2")[0].addEventListener('click', () => {
  1688. ws.close();
  1689. altname = ws.cloneId;
  1690. })
  1691. document.getElementsByClassName("8i2")[0].addEventListener('click', () => {
  1692. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", 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};`})
  1693. })
  1694. document.getElementsByClassName("21i2")[0].addEventListener('click', () => {
  1695. isOnControl = true;
  1696. })
  1697. document.getElementsByClassName("22i2")[0].addEventListener('click', () => {
  1698. isOnControl = false;
  1699. })
  1700. window.playerIds = {
  1701. id1: allSockets[window.socketId1 - 1],
  1702. id2: allSockets[window.socketId2 - 1]
  1703. }
  1704. }
  1705. if (window.testing) {
  1706. ws.network.sendRpc({name: "SetOpenParty", isOpen: 0})
  1707. ws.network.sendRpc({name: "SetPartyName", partyName: ws.cloneId + ''})
  1708. }
  1709. if (ws.data.uid) {
  1710. ws.uid = ws.data.uid;
  1711. ws.dataInfo = ws.data;
  1712. ws.players = {};
  1713. ws.inventory = {};
  1714. ws.buildings = {};
  1715. ws.parties = {};
  1716. ws.lb = {}
  1717. ws.playerUid = game.world.myUid;
  1718. ws.network.sendInput({space: 1});
  1719. ws.network.sendRpc({name: "BuyItem", itemName: "PetCARL", tier: 1})
  1720. ws.network.sendRpc({name: "BuyItem", itemName: "PetMiner", tier: 1})
  1721. }
  1722. if (ws.data.entities) {
  1723. if (window.message == ws.cloneId) {
  1724. game.world.replicator.onEntityUpdate(ws.data);
  1725. }
  1726. if (ws.data.entities[ws.uid].name) {
  1727. ws.myPlayer = ws.data.entities[ws.uid];
  1728. }
  1729. for (let g in ws.myPlayer) {
  1730. if (ws.myPlayer[g] !== ws.data.entities[ws.uid][g] && ws.data.entities[ws.uid][g] !== undefined) {
  1731. ws.myPlayer[g] = ws.data.entities[ws.uid][g];
  1732. }
  1733. }
  1734. if (ws.myPlayer.petUid) {
  1735. if (ws.data.entities[ws.myPlayer.petUid]) {
  1736. if (ws.data.entities[ws.myPlayer.petUid].model) {
  1737. ws.myPet = ws.data.entities[ws.myPlayer.petUid];
  1738. ws.shouldHealPet = false;
  1739. }
  1740. }
  1741. for (let g in ws.myPet) {
  1742. if (ws.data.entities[ws.myPlayer.petUid]) {
  1743. if (ws.myPet[g] !== ws.data.entities[ws.myPlayer.petUid][g] && ws.data.entities[ws.myPlayer.petUid][g] !== undefined) {
  1744. ws.myPet[g] = ws.data.entities[ws.myPlayer.petUid][g]
  1745. }
  1746. }
  1747. }
  1748. }
  1749. for (let i in ws.data.entities) {
  1750. if (ws.data.entities[i].name) {
  1751. ws.players[i] = ws.data.entities[i];
  1752. }
  1753. }
  1754. for (let i in ws.players) {
  1755. if (!ws.data.entities[i]) {
  1756. delete ws.players[i];
  1757. }
  1758. for (let g in ws.players[i]) {
  1759. if (ws.players[i][g] !== ws.data.entities[i][g] && ws.data.entities[i][g] !== undefined) {
  1760. ws.players[i][g] = ws.data.entities[i][g];
  1761. }
  1762. }
  1763. ws.playerTick = ws.players[ws.playerUid];
  1764. }
  1765. }
  1766. if (ws.data.name == "DayCycle") {
  1767. ws.tickData = ws.data.response;
  1768. ws.isDay = ws.data.response.isDay;
  1769. }
  1770. if (ws.data.tick) {
  1771. var currentTick = ws.data.tick;
  1772. var msPerTick = 50;
  1773. var dayRatio = 0;
  1774. var nightRatio = 0;
  1775. var barWidth = 130;
  1776. if (ws.tickData) {
  1777. if (ws.tickData.dayEndTick) {
  1778. if (ws.tickData.dayEndTick > 0) {
  1779. var dayLength = ws.tickData.dayEndTick - ws.tickData.cycleStartTick;
  1780. var dayTicksRemaining = ws.tickData.dayEndTick - currentTick;
  1781. dayRatio = 1 - dayTicksRemaining / dayLength;
  1782. }
  1783. }
  1784. else if (ws.tickData.nightEndTick > 0) {
  1785. var nightLength = ws.tickData.nightEndTick - ws.tickData.cycleStartTick;
  1786. var nightTicksRemaining = ws.tickData.nightEndTick - currentTick;
  1787. dayRatio = 1;
  1788. nightRatio = 1 - nightTicksRemaining / nightLength;
  1789. }
  1790. var currentPosition = (dayRatio * 1 / 2 + nightRatio * 1 / 2) * -barWidth;
  1791. var offsetPosition = currentPosition + barWidth / 2;
  1792. if (offsetPosition) {
  1793. ws.dayTicker = Math.round(offsetPosition);
  1794. }
  1795. }
  1796. }
  1797. if (ws.data.name == "PartyInfo") {
  1798. ws.partyInfo = ws.data.response;
  1799. setTimeout(() => {
  1800. for (let i in ws.partyInfo) {
  1801. if (ws.partyInfo[i].playerUid == ws.uid && ws.partyInfo[i].isLeader) {
  1802. ws.network.sendRpc({name: "SetPartyMemberCanSell", uid: game.world.myUid, canSell: 1});
  1803. ws.network.sendRpc({name: "SetOpenParty", isOpen: 1});
  1804. setTimeout(() => {
  1805. ws.network.sendRpc({name: "SetPartyName", partyName: ws.cloneId + ""});
  1806. }, 1000);
  1807. }
  1808. }
  1809. }, 1750);
  1810. }
  1811. if (ws.data.name == "SetItem") {
  1812. ws.inventory[ws.data.response.itemName] = ws.data.response;
  1813. if (!ws.inventory[ws.data.response.itemName].stacks) {
  1814. delete ws.inventory[ws.data.response.itemName];
  1815. }
  1816. if (ws.data.response.itemName == "ZombieShield" && ws.data.response.stacks) {
  1817. ws.network.sendRpc({name: "EquipItem", itemName: "ZombieShield", tier: data.response.tier})
  1818. }
  1819. }
  1820. if (ws.data.name == "PartyApplicant") {
  1821. ws.partyApplicant = ws.data.response;
  1822. if (ws.partyApplicant.applicantUid == game.world.myUid) {
  1823. ws.network.sendRpc({name: "PartyApplicantDecide", applicantUid: game.world.myUid, accepted: 1})
  1824. }
  1825. }
  1826. if (ws.data.name == "ReceiveChatMessage") {
  1827. ws.message = ws.data;
  1828. if (ws.message.response.message == "!move" && ws.message.response.uid == game.world.myUid) {
  1829. ws.automove = true;
  1830. }
  1831. if (ws.message.response.message == "!unmove" && ws.message.response.uid == game.world.myUid) {
  1832. ws.automove = false;
  1833. }
  1834. if (ws.message.response.message[0] == `#` && ws.message.response.uid == game.world.myUid) {
  1835. let word = ws.message.response.message;
  1836. let uid = '';
  1837. for (let i = 0; i < 30; i++) {
  1838. 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)) {
  1839. uid += word[i]
  1840. }
  1841. uid = Math.round(uid);
  1842. ws.playerUid = uid;
  1843. }
  1844. }
  1845. if (ws.message.response.message == "!aim" && ws.message.response.uid == game.world.myUid) {
  1846. ws.autoaim = true;
  1847. }
  1848. if (ws.message.response.message == "!unaim" && ws.message.response.uid == game.world.myUid) {
  1849. ws.autoaim = false;
  1850. }
  1851. if (window.allSockets[ws.cloneId-1]) {
  1852. window.allSockets[ws.cloneId-1] = ws;
  1853. }
  1854. if (ws.message.response.message == `!psk ${ws.uid}` && ws.message.response.uid == game.world.myUid) {
  1855. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `${ws.psk.response.partyShareKey}`})
  1856. }
  1857. if (ws.message.response.message == `!crash ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  1858. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `Successfully crashed ${ws.uid}!`})
  1859. }
  1860. if (ws.message.response.message == "hi") {
  1861. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: ` hi `})
  1862. }
  1863. if (ws.message.response.message == "!stats") {
  1864. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", 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)};`})
  1865. }
  1866. if (ws.message.response.message == "!s" && ws.message.response.uid == game.world.myUid) {
  1867. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", 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};`})
  1868. }
  1869. if (ws.message.response.message == "!h" && ws.message.response.uid == game.world.myUid) {
  1870. ws.autohi = !ws.autohi;
  1871. if (ws.autohi) {
  1872. window.autohiBot = true;
  1873. } else {
  1874. window.autohiBot = false;
  1875. }
  1876. }
  1877. if (ws.message.response.message == "!ahrc" && ws.message.response.uid == game.world.myUid) {
  1878. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `ahrc is active!`})
  1879. ws.ahrc = true;
  1880. }
  1881. if (ws.message.response.message == `!ahrc ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  1882. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `ahrc is active!`})
  1883. ws.ahrc = true;
  1884. }
  1885. if (ws.message.response.message == "!!ahrc" && ws.message.response.uid == game.world.myUid) {
  1886. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `ahrc is inactive!`})
  1887. ws.ahrc = false;
  1888. }
  1889. if (ws.message.response.message == `!!ahrc ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  1890. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `ahrc is inactive!`})
  1891. ws.ahrc = false;
  1892. }
  1893. if (ws.message.response.message == "!space") {
  1894. ws.network.sendInput({space: 0})
  1895. ws.network.sendInput({space: 1})
  1896. }
  1897. if (ws.message.response.message == `${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  1898. ws.network.sendInput({space: 0})
  1899. ws.network.sendInput({space: 1})
  1900. }
  1901. if (ws.message.response.message == "s") {
  1902. ws.respawn = true;
  1903. } else {
  1904. ws.respawn = false;
  1905. }
  1906. if (ws.message.response.message == `s${ws.cloneId}` && ws.message.response.uid == game.world.myUid) {
  1907. ws.respawn = true;
  1908. } else {
  1909. ws.respawn = false;
  1910. }
  1911. if (ws.message.response.message == "!upgrade" && ws.message.response.uid == game.world.myUid) {
  1912. for (let i in ws.buildings) {
  1913. if (ws.buildings[i].type == "GoldMine") {
  1914. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1915. }
  1916. setTimeout(() => {
  1917. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1918. }, 100);
  1919. }
  1920. }
  1921. if (ws.message.response.message == "!up" && ws.message.response.uid == game.world.myUid) {
  1922. ws.network.sendRpc({name: "BuyItem", itemName: ws.buildings[i].uid})
  1923. }
  1924. if (ws.message.response.message == "!upStash" && ws.message.response.uid == game.world.myUid) {
  1925. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded the stash!"});
  1926. for (let i in ws.buildings) {
  1927. if (ws.buildings[i].type == "GoldStash") {
  1928. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1929. }
  1930. }
  1931. }
  1932. if (ws.message.response.message == "!up1" && ws.message.response.uid == game.world.myUid) {
  1933. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded the walls!"});
  1934. for (let i in ws.buildings) {
  1935. if (ws.buildings[i].type == "Wall") {
  1936. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1937. }
  1938. }
  1939. }
  1940. if (ws.message.response.message == "!up2" && ws.message.response.uid == game.world.myUid) {
  1941. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded doors!"});
  1942. for (let i in ws.buildings) {
  1943. if (ws.buildings[i].type == "Door") {
  1944. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1945. }
  1946. }
  1947. }
  1948. if (ws.message.response.message == "!up3" && ws.message.response.uid == game.world.myUid) {
  1949. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded slowtraps!"});
  1950. for (let i in ws.buildings) {
  1951. if (ws.buildings[i].type == "SlowTrap") {
  1952. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1953. }
  1954. }
  1955. }
  1956. if (ws.message.response.message == "!up4" && ws.message.response.uid == game.world.myUid) {
  1957. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded arrows!"});
  1958. for (let i in ws.buildings) {
  1959. if (ws.buildings[i].type == "ArrowTower") {
  1960. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1961. }
  1962. }
  1963. }
  1964. if (ws.message.response.message == "!up5" && ws.message.response.uid == game.world.myUid) {
  1965. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded cannons!"});
  1966. for (let i in ws.buildings) {
  1967. if (ws.buildings[i].type == "CannonTower") {
  1968. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1969. }
  1970. }
  1971. }
  1972. if (ws.message.response.message == "!up6" && ws.message.response.uid == game.world.myUid) {
  1973. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded melees!"});
  1974. for (let i in ws.buildings) {
  1975. if (ws.buildings[i].type == "MeeleTower") {
  1976. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1977. }
  1978. }
  1979. }
  1980. if (ws.message.response.message == "!up7" && ws.message.response.uid == game.world.myUid) {
  1981. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded bombs!"});
  1982. for (let i in ws.buildings) {
  1983. if (ws.buildings[i].type == "BombTower") {
  1984. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1985. }
  1986. }
  1987. }
  1988. if (ws.message.response.message == "!up8" && ws.message.response.uid == game.world.myUid) {
  1989. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded mages!"});
  1990. for (let i in ws.buildings) {
  1991. if (ws.buildings[i].type == "MagicTower") {
  1992. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  1993. }
  1994. }
  1995. }
  1996. if (ws.message.response.message == "!up9" && ws.message.response.uid == game.world.myUid) {
  1997. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded mines!"});
  1998. for (let i in ws.buildings) {
  1999. if (ws.buildings[i].type == "GoldMine") {
  2000. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  2001. }
  2002. }
  2003. }
  2004. if (ws.message.response.message == "!up0" && ws.message.response.uid == game.world.myUid) {
  2005. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: "successfully upgraded harvesters!"});
  2006. for (let i in ws.buildings) {
  2007. if (ws.buildings[i].type == "ResourceHarvester") {
  2008. ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid})
  2009. }
  2010. }
  2011. }
  2012. if (ws.message.response.message == "a" && ws.message.response.uid == game.world.myUid) {
  2013. ws.network.sendInput({left: 1});
  2014. ws.network.sendInput({right: 0});
  2015. }
  2016. if (ws.message.response.message == "d" && ws.message.response.uid == game.world.myUid) {
  2017. ws.network.sendInput({right: 1});
  2018. ws.network.sendInput({left: 0});
  2019. }
  2020. if (ws.message.response.message == "w" && ws.message.response.uid == game.world.myUid) {
  2021. ws.network.sendInput({up: 1});
  2022. ws.network.sendInput({down: 0});
  2023. }
  2024. if (ws.message.response.message == "s" && ws.message.response.uid == game.world.myUid) {
  2025. ws.network.sendInput({down: 1});
  2026. ws.network.sendInput({up: 0});
  2027. }
  2028. if (ws.message.response.message == "f" && ws.message.response.uid == game.world.myUid) {
  2029. ws.network.sendInput({left: 0});
  2030. ws.network.sendInput({right: 0});
  2031. ws.network.sendInput({down: 0});
  2032. ws.network.sendInput({up: 0});
  2033. }
  2034. }
  2035. if (ws.autohi) {
  2036. if (ws.data.entities) {
  2037. for (let i in ws.data.entities) {
  2038. if (ws.data.entities[i].name) {
  2039. ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `hi ${ws.data.entities[i].name}`});
  2040. }
  2041. }
  2042. }
  2043. }
  2044. if (ws.data.name == "Leaderboard") {
  2045. for (let i in ws.data.response) {
  2046. ws.lb[ws.data.response[i].rank + 1] = ws.data.response[i];
  2047. }
  2048. if (ws.ahrc) {
  2049. for(let uid in ws.buildings) {
  2050. let obj = ws.buildings[uid];
  2051. ws.network.sendRpc({name: "CollectHarvester",uid: obj.uid});
  2052. if(obj.type == "Harvester" && obj.tier == 1) {
  2053. ws.network.sendRpc({name: "AddDepositToHarvester",uid: obj.uid,deposit: 20/2});
  2054. }
  2055. if(obj.type == "Harvester" && obj.tier == 2) {
  2056. ws.network.sendRpc({name: "AddDepositToHarvester",uid: obj.uid,deposit: 30/2});
  2057. }
  2058. if(obj.type == "Harvester" && obj.tier == 3) {
  2059. ws.network.sendRpc({name: "AddDepositToHarvester",uid: obj.uid,deposit: 35/2});
  2060. }
  2061. if(obj.type == "Harvester" && obj.tier == 4) {
  2062. ws.network.sendRpc({name: "AddDepositToHarvester",uid: obj.uid,deposit: 50/2});
  2063. }
  2064. if(obj.type == "Harvester" && obj.tier == 5) {
  2065. ws.network.sendRpc({name: "AddDepositToHarvester",uid: obj.uid,deposit: 60/2});
  2066. }
  2067. if(obj.type == "Harvester" && obj.tier == 6) {
  2068. ws.network.sendRpc({name: "AddDepositToHarvester",uid: obj.uid,deposit: 70/2});
  2069. }
  2070. if(obj.type == "Harvester" && obj.tier == 7) {
  2071. ws.network.sendRpc({name: "AddDepositToHarvester",uid: obj.uid,deposit: 120/2});
  2072. }
  2073. if(obj.type == "Harvester" && obj.tier == 8) {
  2074. ws.network.sendRpc({name: "AddDepositToHarvester",uid: obj.uid,deposit: 150/2});
  2075. }
  2076. }
  2077. }
  2078. }
  2079. if (ws.respawn) {
  2080. ws.network.sendInput({respawn: 1});
  2081. }
  2082. if (ws.space) {
  2083. ws.network.sendInput({space: 0})
  2084. ws.network.sendInput({space: 1})
  2085. }
  2086. if (ws.data.name == "LocalBuilding") {
  2087. for (let i in ws.data.response) {
  2088. ws.buildings[ws.data.response[i].uid] = ws.data.response[i];
  2089. if (ws.buildings[ws.data.response[i].uid].dead) {
  2090. delete ws.buildings[ws.data.response[i].uid];
  2091. }
  2092. }
  2093. }
  2094. if (ws.data.name == "AddParty") {
  2095. if (ws.addparties) {
  2096. ws.parties[ws.data.response.partyId] = ws.data.response;
  2097. }
  2098. }
  2099. if (ws.data.name == "RemoveParty") {
  2100. if (ws.addparties) {
  2101. if (ws.parties[ws.data.response.partyId].partyId) {
  2102. delete ws.parties[ws.data.response.partyId];
  2103. }
  2104. }
  2105. }
  2106. if (ws.data.name == "PartyShareKey") {
  2107. ws.psk = ws.data;
  2108. if (window.FKey && cloneTimeout) {
  2109. if (window.playerIds.id2.psk.response.partyShareKey !== window.playerIds.id1.psk.response.partyShareKey) {
  2110. game.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: window.playerIds.id2.psk.response.partyShareKey});
  2111. setTimeout(() => {
  2112. game.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: window.playerIds.id2.psk.response.partyShareKey});
  2113. }, 500);
  2114. setTimeout(() => {
  2115. game.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: window.playerIds.id2.psk.response.partyShareKey});
  2116. }, 1000);
  2117. }
  2118. }
  2119. }
  2120. if (ws.data.name == "Dead") {
  2121. if (cloneTimeout) {
  2122. game.network.sendInput({respawn: 1});
  2123. }
  2124. }
  2125. if(window.mousemove) {
  2126. let wsPlayer = ws.data.entities[ws.uid];
  2127. let myPlayer = game.ui.playerTick;
  2128. let mouseToWorld = game.renderer.screenToWorld(game.ui.mousePosition.x,game.ui.mousePosition.y);
  2129. //
  2130. //
  2131. if (ws.data.entities) {
  2132. if (ws.data.entities[ws.uid].name) {
  2133. wsPlayer = ws.data.entities[ws.uid];
  2134. }
  2135. }
  2136. //
  2137. //
  2138. if(wsPlayer){
  2139. if(wsPlayer.position){
  2140. ws.network.sendInput({mouseMoved: game.inputPacketCreator.screenToYaw((-wsPlayer.position.x + mouseToWorld.x)*100, (-wsPlayer.position.y + mouseToWorld.y)*100)})
  2141. if (1 == 1) {
  2142. console.log(wsPlayer.position);
  2143. if (wsPlayer.position.y - mouseToWorld.y > 1) {
  2144. ws.network.sendInput({
  2145. down: 0
  2146. })
  2147. } else {
  2148. ws.network.sendInput({
  2149. down: 1
  2150. })
  2151. }
  2152. if (-wsPlayer.position.y + mouseToWorld.y > 1) {
  2153. ws.network.sendInput({
  2154. up: 0
  2155. })
  2156. } else {
  2157. ws.network.sendInput({
  2158. up: 1
  2159. })
  2160. }
  2161. if (-wsPlayer.position.x + mouseToWorld.x > 1) {
  2162. ws.network.sendInput({
  2163. left: 0
  2164. })
  2165. } else {
  2166. ws.network.sendInput({
  2167. left: 1
  2168. })
  2169. }
  2170. if (wsPlayer.position.x - mouseToWorld.x > 1) {
  2171. ws.network.sendInput({
  2172. right: 0
  2173. })
  2174. } else {
  2175. ws.network.sendInput({
  2176. right: 1
  2177. })
  2178. }
  2179. }
  2180. }
  2181. }
  2182. }
  2183. if (ws.autoaim) {
  2184. if (ws.playerTick) {
  2185. ws.network.sendInput({mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + ws.playerTick.position.x)*100, (-ws.myPlayer.position.y + ws.playerTick.position.y)*100)})
  2186. }
  2187. }
  2188. if (window.shouldStartScript) {
  2189. if (getbosswaves() && getIsZombiesActive() && game.ui.playerPartyMembers.length !== 1) {
  2190. if (inull) {
  2191. inull = false;
  2192. document.getElementsByClassName("1i5")[0].click();
  2193. ws.network.sendRpc({name: "LeaveParty"});
  2194. setTimeout(() => { inull = true; }, 250);
  2195. }
  2196. }
  2197. if (ws.dayTicker < -18 && ws.dayTicker >= -23 && !ws.isDay && getIsZombiesActive() && game.ui.playerPartyMembers.length !== 1) {
  2198. if (i1) {
  2199. i1 = false;
  2200. document.getElementsByClassName("1i5")[0].click();
  2201. ws.network.sendRpc({name: "LeaveParty"});
  2202. setTimeout(() => { i1 = true; }, 250);
  2203. }
  2204. }
  2205. if (!getIsZombiesActive() && game.ui.playerPartyMembers.length !== 4 && !getactiveCommingbosswaves()) {
  2206. if (i2) {
  2207. i2 = false;
  2208. ws.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: Game.currentGame.ui.getPlayerPartyShareKey() + ""});
  2209. setTimeout(() => { i2 = true; }, 250);
  2210. }
  2211. }
  2212. if (ws.dayTicker > 18 && ws.dayTicker <= 23 && getIsZombiesActive() && ws.isDay && game.ui.playerPartyMembers.length !== 4) {
  2213. if (i3) {
  2214. i3 = false;
  2215. document.getElementsByClassName("1i5")[0].click();
  2216. ws.network.sendRpc({name: "LeaveParty"});
  2217. setTimeout(() => { i3 = true; }, 250)
  2218. }
  2219. }
  2220. }
  2221. if (ws.data.opcode == 0) {
  2222. if (heal) {
  2223. if (ws.myPlayer) {
  2224. let playerHealth = (ws.myPlayer.health/ws.myPlayer.maxHealth) * 100;
  2225. if (playerHealth <= 35) {
  2226. ws.network.sendRpc({name: "EquipItem", itemName: "HealthPotion", tier: 1})
  2227. }
  2228. }
  2229. if (ws.myPet) {
  2230. let petHealth = (ws.myPet.health/ws.myPet.maxHealth) * 100;
  2231. if (petHealth <= 70) {
  2232. if (!ws.shouldHealPet) {
  2233. ws.shouldHealPet = true;
  2234. setTimeout(() => {ws.shouldHealPet = false;}, 300)
  2235. ws.network.sendRpc({name: "BuyItem", itemName: "PetHealthPotion", tier: 1})
  2236. ws.network.sendRpc({name: "EquipItem", itemName: "PetHealthPotion", tier: 1})
  2237. }
  2238. }
  2239. }
  2240. }
  2241. ws.network.sendRpc({name: "BuyItem", itemName: "HealthPotion", tier: 1})
  2242. }
  2243. if (ws.activebow) {
  2244. ws.network.sendInput({space: 0})
  2245. ws.network.sendInput({space: 1})
  2246. }
  2247. switch(ws.data.opcode) {
  2248. case 4:
  2249. ws.onEnterWorld(ws.data);
  2250. break;
  2251. }
  2252. }
  2253. }
  2254. var LKeyWithTimeouts = function() {
  2255. window.FKey = !window.FKey;
  2256. cloneTimeout = false;
  2257. window.playerIds = {
  2258. id1: allSockets[window.socketId1 - 1],
  2259. id2: allSockets[window.socketId2 - 1]
  2260. }
  2261. if (window.FKey) {
  2262. game.network.sendRpc({name: "KickParty", uid: window.playerIds.id1.uid})
  2263. game.network.sendRpc({name: "KickParty", uid: window.playerIds.id2.uid})
  2264. window.FKeyOn = setInterval(() => {
  2265. cloneTimeout = true;
  2266. window.playerIds.id2.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: window.playerIds.id1.psk.response.partyShareKey});
  2267. setTimeout(() => {
  2268. window.playerIds.id1.network.sendRpc({name: "KickParty", uid: window.playerIds.id2.uid});
  2269. setTimeout(() => {
  2270. window.playerIds.id2.network.sendRpc({name: "KickParty", uid: game.world.myUid});
  2271. }, 7925);
  2272. }, 75);
  2273. }, 16000);
  2274. } else {
  2275. clearInterval(window.FKeyOn);
  2276. window.FKeyOn = null;
  2277. }
  2278. }
  2279. var getIsZombiesActive = function () {
  2280. let isZombiesActive = false;
  2281. for (let i in game.world.entities) {
  2282. if (game.world.entities[i].fromTick.model !== "NeutralTier1") {
  2283. if (game.world.entities[i].fromTick.entityClass == "Npc") {
  2284. isZombiesActive = true;
  2285. }
  2286. }
  2287. }
  2288. return isZombiesActive;
  2289. };
  2290. var getactiveCommingbosswaves = function () {
  2291. let activeCommingbosswave = false;
  2292. let aftercommingbosswaves = [48, 56, 64, 72, 80, 88, 96, 104, 120];
  2293. for (let i = 0; i < aftercommingbosswaves.length; i++) {
  2294. if (game.ui.playerTick.wave == aftercommingbosswaves[i]) {
  2295. activeCommingbosswave = true;
  2296. }
  2297. }
  2298. return activeCommingbosswave;
  2299. };
  2300. var getbosswaves = function () {
  2301. let activebosswave = false;
  2302. let allbosswaves = [9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97, 105, 121];
  2303. for (let i = 0; i < allbosswaves.length; i++) {
  2304. if (game.ui.playerTick.wave == allbosswaves[i]) {
  2305. activebosswave = true;
  2306. }
  2307. }
  2308. return activebosswave;
  2309. };
  2310. var inull = true;
  2311. var i1 = true;
  2312. var i2 = true;
  2313. var i3 = true;
  2314. document.addEventListener("keydown", (e) => {
  2315. if (document.activeElement.tagName.toLowerCase() == "input" || document.activeElement.tagName.toLowerCase() == "textarea") {
  2316. Main1Keys = false;
  2317. Main2Keys = false;
  2318. Main3Keys = false;
  2319. } else {
  2320. Main1Keys = true;
  2321. Main2Keys = true;
  2322. Main3Keys = true;
  2323. }
  2324. if (Main1Keys) {
  2325. switch (e.code) {
  2326. case "Insert":
  2327. document.getElementsByClassName("1i")[0].click();
  2328. break;
  2329. case "KeyX":
  2330. document.getElementsByClassName("8i")[0].click();
  2331. break;
  2332. case "KeyZ":
  2333. document.getElementsByClassName("10i")[0].click();
  2334. break;
  2335. case "KeyR":
  2336. healPlayer();
  2337. break;
  2338. case "KeyG":
  2339. document.getElementsByClassName("7i")[0].click();
  2340. break;
  2341. }
  2342. }
  2343. if (Main2Keys) {
  2344. switch (e.code) {
  2345. case "KeyK":
  2346. document.getElementsByClassName("10i5")[0].click();
  2347. break;
  2348. case "Key/":
  2349. document.getElementsByClassName("6i5")[0].click();
  2350. break;
  2351. case "KeyM":
  2352. game.network.sendRpc({
  2353. "name": "BuyItem",
  2354. "itemName": "PetRevive",
  2355. "tier": 1
  2356. })
  2357. game.network.sendRpc({
  2358. "name": "EquipItem",
  2359. "itemName": "PetRevive",
  2360. "tier": 1
  2361. })
  2362. break;
  2363. }
  2364. }
  2365. if (Main3Keys) {
  2366. switch (e.code) {
  2367. case "KeyL":
  2368. document.getElementsByClassName("0i2")[0].click();
  2369. break;
  2370. case "KeyV":
  2371. document.getElementsByClassName("10i2")[0].click();
  2372. break;
  2373. case "KeyY":
  2374. document.getElementsByClassName("21i2")[0].click();
  2375. break;
  2376. case "KeyU":
  2377. document.getElementsByClassName("22i2")[0].click();
  2378. break;
  2379. LKeyWithTimeouts();
  2380. break;
  2381. }
  2382. }
  2383. });
  2384. game.network.addRpcHandler("SetItem", e => {
  2385. if (e.itemName == "ZombieShield" && e.stacks) {
  2386. game.network.sendPacket(9, {name: "EquipItem", itemName: "ZombieShield", tier: e.tier})
  2387. }
  2388. })
  2389. //iplogger.org/2Sd9X6