您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Best script pack
// ==UserScript== // @name Script pack // @namespace https://tampermonkey.net/ // @version 1.3 // @description Best script pack // @author ḵScripts ✔ // @match zombs.io* // @require https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js // ==/UserScript== let cssMain = ` .bad-btn{ border: none; color: white; padding: 10px 20px; text-align: center; font-size: 14px; margin: 2px 0px; opacity: 0.9; transition: 0.2s; display: inline-block; border-radius: 15px; cursor: pointer; text-shadow: -1px 1px 1.5px #242526; } .bad-btn:hover{ opacity: 1 } .bad-blue{ background-color: #5463FF } .bad-magenta{ background-color: #E900FF } .bad-gray{ background-color: #606060 } .bad-yellow{ background-color: #FFC600 } .bad-red{ background-color: #FF1818 } .bad-green{ background-color: #06FF00 } .bad-pink{ background-color: #FF6B6B } .bad-cyan{ background-color: #39AEA9 } .bad-orange{ background-color: #FF5F00 } .bad-textbox{ border: none; color: white; padding: 10px 10px; text-align: center; font-size: 14px; margin: 2px 0px; opacity: 0.9; transition: 0.2s; display: inline-block; border-radius: 15px; background-color: #606060; text-shadow: -1px 1px 1.5px #242526; } .hud-toolbar .hud-toolbar-inventory .hud-toolbar-item.is-empty { pointer-events: auto; } #hud-menu-shop { top: 45%; left: 50%; width: 690px; height: 450px; margin: 0; transform: translate(-50%, -50%); padding: 20px 20px 20px 20px; } .hud-menu-shop .hud-shop-grid { height: 330px; } #hud-menu-settings { overflow: hidden; position: absolute; top: 45%; left: 50%; width: 780px; height: 500px; margin: 0; transform: translate(-50%, -50%); padding: 20px 20px 20px 20px; } .hud-menu-settings .hud-settings-grid { width: 750px; height: 420px; overflow: hidden; position: relative; } .hud-menu-shop .hud-shop-tabs a[data-type=Pet]::after { content: none } .hud-map-resource { display: none; position: absolute; width: 4px; height: 4px; margin: -2px 0 0 -2px; background: #eee; border-radius: 50%; z-index: 2; transform: scale(0.6); } .tab2 { position: sticky; overflow: hidden; border: 3px solid #3B3B3B; background-color: #4D4D4D; display: flex; justify-content: center; margin-top: 6%; opacity: 1; text-align: center; margin-left: -6%; } .tab2 li { list-style: none; } .tablinks { width: 120px; font-family: Arial; font-size: 14px; background-color: rgba(65, 89, 178, 1); color: white; padding: 15px 10px; border: 1px, dark-blue; border-radius: 10px; outline: none; cursor: pointer; transition: 0.3s; } .tablinks:hover { background-color: rgba(64, 99, 229, 1) ; } .tablinks.active { background-color: #373da6; } `; let stylesMain = document.createElement("style"); stylesMain.appendChild(document.createTextNode(cssMain)); document.head.appendChild(stylesMain); stylesMain.type = "text/css"; document.querySelectorAll('.ad-unit, .ad-unit-medrec, .hud-intro-guide-hints, .hud-intro-left, .hud-intro-youtuber, .hud-intro-footer, .hud-intro-stone, .hud-intro-tree, .hud-intro-social, .hud-intro-more-games, .hud-intro-guide, .hud-day-night-overlay, .hud-respawn-share, .hud-party-joining, .hud-respawn-corner-bottom-left, #hud-menu-shop > div.hud-shop-grid > a:nth-child(10)').forEach(el => el.remove()); document.getElementsByClassName('hud-intro-name')[0].setAttribute('maxlength', 29); document.getElementsByClassName('hud-party-tag')[0].setAttribute('maxlength', 49); document.querySelector(".hud-chat-messages").style.width = "1800px"; document.getElementsByClassName("hud-top-center")[0].innerHTML = ` <a id="shopshortcut1"><img src="http://zombs.io/asset/image/ui/inventory/inventory-pickaxe-t7.svg"></a> <a id="shopshortcut2"><img src="http://zombs.io/asset/image/ui/inventory/inventory-spear-t7.svg"></a> <a id="shopshortcut3"><img src="http://zombs.io/asset/image/ui/inventory/inventory-bow-t7.svg"></a> <a id="shopshortcut4"><img src="http://zombs.io/asset/image/ui/inventory/inventory-bomb-t7.svg"></a> <a id="shopshortcut5"><img src="http://zombs.io/asset/image/ui/inventory/inventory-health-potion.svg"></a> <a id="shopshortcut6"><img src="http://zombs.io/asset/image/ui/inventory/inventory-pet-health-potion.svg"></a> <a id="shopshortcut7"><img src="http://zombs.io/asset/image/ui/inventory/inventory-shield-t10.svg"></a> <a id="shopshortcut8"><img src="http://zombs.io/asset/image/ui/inventory/inventory-pet-ghost-t1.svg"></a> <a id="shopshortcut9"><img src="http://zombs.io/asset/image/ui/inventory/inventory-pet-miner-t8.svg"></a> <a id="shopshortcut10"><img src="http://zombs.io/asset/image/ui/inventory/inventory-pet-carl-t8.svg"></a> `; document.getElementById('shopshortcut1').addEventListener('click', buyPickaxe); document.getElementById('shopshortcut2').addEventListener('click', buySpear); document.getElementById('shopshortcut3').addEventListener('click', buyBow); document.getElementById('shopshortcut4').addEventListener('click', buyBomb); document.getElementById('shopshortcut5').addEventListener('click', () => {shopShortcut("HealthPotion", 1)}); document.getElementById('shopshortcut6').addEventListener('click', () => {shopShortcut("PetHealthPotion", 1)}); document.getElementById('shopshortcut7').addEventListener('click', buyZombieShield); document.getElementById('shopshortcut8').addEventListener('click', () => {Game.currentGame.network.sendRpc({name: "DeleteBuilding", uid: game.ui.getPlayerPetUid()})}); document.getElementById('shopshortcut9').addEventListener('click', () => {buyPet("PetMiner", getPetTier(6))}); document.getElementById('shopshortcut10').addEventListener('click', () => {buyPet("PetCARL", getPetTier(5))}); function buyPet(item, tier) { if (game.ui.getPlayerPetName() == item) { shopShortcut("PetRevive", 1) } else { let i = 0 let j = setInterval(() => { shopShortcut(item, tier) i++ if (i >= 25 || game.ui.getPlayerPetName() == item) { i = 0 clearInterval(j) } }, 250); } } function getPetTier(num) { if (document.querySelectorAll(".hud-shop-item-tier")[5].childNodes[0].textContent.match(/\d+/) != null) { let petLevel = document.querySelectorAll(".hud-shop-item-tier")[num].childNodes[0].textContent.match(/\d+/)[0] if (petLevel <= 8) return 1 if (petLevel <= 16) return 2 if (petLevel <= 24) return 3 if (petLevel <= 32) return 4 if (petLevel <= 48) return 5 if (petLevel <= 64) return 6 if (petLevel <= 96) return 7 if (petLevel > 96) return 8 } else return 8 } function equipItem(item, tier) { game.network.sendRpc({ name: "EquipItem", itemName: item, tier: tier }) }; function buyItem(item, tier) { game.network.sendRpc({ name: "BuyItem", itemName: item, tier: tier }) } function shopShortcut(item, tier) { buyItem(item, tier) if (game.ui.playerWeaponName !== item) { equipItem(item, tier) } } function buyPickaxe() { let cost = [0, 1000, 3000, 6000, 8000, 24000, 80000]; if (game.ui.playerTick.gold >= cost[game.ui.inventory.Pickaxe.tier]) { shopShortcut("Pickaxe", game.ui.inventory.Pickaxe.tier + 1) } } function buySpear() { let tier = game.ui.inventory.Spear ? game.ui.inventory.Spear.tier : 0; let cost = [1400, 2800, 5600, 11200, 22500, 45000, 90000]; if (game.ui.playerTick.gold >= cost[tier]) { shopShortcut("Spear", tier + 1) } } function buyBow() { let tier = game.ui.inventory.Bow ? game.ui.inventory.Bow.tier : 0; let cost = [100, 400, 2000, 7000, 24000, 30000, 90000]; if (game.ui.playerTick.gold >= cost[tier]) { shopShortcut("Bow", tier + 1) } } function buyBomb() { let tier = game.ui.inventory.Bomb ? game.ui.inventory.Bomb.tier : 0; let cost = [100, 400, 3000, 5000, 24000, 50000, 90000]; if (game.ui.playerTick.gold >= cost[tier]) { shopShortcut("Bomb", tier + 1) } } function buyZombieShield() { let tier = game.ui.inventory.ZombieShield ? game.ui.inventory.ZombieShield.tier : 0; let cost = [1000, 3000, 7000, 14000, 18000, 22000, 24000, 30000, 45000, 70000]; if (game.ui.playerTick.gold >= cost[tier]) { shopShortcut("ZombieShield", tier + 1) document.querySelector("#hud-toolbar > div.hud-toolbar-inventory > a:nth-child(8)").setAttribute("data-tier", tier + 1); } } function createCoordinates() { let x = document.createElement('div') x.style = 'position: relative;top: 17px;right: 0px;font-weight: 600;font-family: "Hammersmith One";text-shadow: 1px 0 0 #fff, -1px 0 0 #fff, 0 1px 0 #fff, 0 -1px 0 #fff, 0.5px 0.5px #fff, -0.5px -0.5px 0 #fff, 0.5px -0.5px 0 #fff, -0.5px 0.5px 0 #fff;'; x.innerHTML = `<p id="coords";">X: 0, Y: 0</p>` x.style.textAlign = "center" document.querySelector("#hud > div.hud-bottom-left").append(x) } let hasBeenInWorld = false; game.network.addEnterWorldHandler(() => { if (!hasBeenInWorld) { hasBeenInWorld = true setInterval(() => { document.querySelector("#coords") .innerText = `X: ${game.ui.playerTick?.position?.x}, Y: ${game.ui.playerTick?.position?.y}` }, 16) createCoordinates() } game.ui.components.MenuShop.onTwitterFollow(); game.ui.components.MenuShop.onTwitterShare(); game.ui.components.MenuShop.onFacebookLike(); game.ui.components.MenuShop.onFacebookShare(); game.ui.components.MenuShop.onYouTubeSubscribe(); }) var isSpamming = 0; function pauseChatSpam(e) { if (!isSpamming) { window.spammer = setInterval(() => { game.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: e }) }, 100) } else if (isSpamming) { clearInterval(window.spammer) } isSpamming = !isSpamming } game.network.addRpcHandler('ReceiveChatMessage', function (e) { if (e.uid == game.ui.playerTick.uid) { if (e.message == "!boss") { setTimeout(() => { game.network.sendRpc({ name: "SendChatMessage", message: "9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97, 105, 121", channel: "Local" }); }, 1050); }; if (e.message == "!marker") { var map = document.getElementById("hud-map"); map.insertAdjacentHTML("beforeend", `<div style="color: red; display: block; left: ${parseInt(game.ui.components.Map.playerElems[game.world.getMyUid()].marker.style.left)}%; top: ${parseInt(game.ui.components.Map.playerElems[game.world.getMyUid()].marker.style.top)}%; position: absolute;" class='hud-map-player'></div>`) game.ui.getComponent('PopupOverlay').showHint(`Added Marker`, 1500); }; }; }); function checkStatus(party) { if (party.isOpen == 1) { return '<a style = "color: #00e700;opacity: 0.9;">[Open]<a/>'; } else if (!party.isOpen == 1) { return '<a style = "color:red;opacity: 0.9;">[Private]<a/>'; } }; let partyCheck = (all_parties) => { document.getElementsByClassName('hud-party-grid')[0].innerHTML = ''; for (let i in all_parties) { let parties = all_parties[i]; let tab = document.createElement('div'); tab.classList.add('hud-party-link'); tab.classList.add('custom-party'); tab.id = parties.partyId; tab.isPublic = parties.isOpen; tab.name = parties.partyName; tab.members = parties.memberCount; tab.innerHTML = ` <strong>${parties.partyName} ${checkStatus(parties)}<strong/> <small>id: ${parties.partyId}</small> <span>${parties.memberCount}/4<span/> `; if (parties.memberCount == 4) { tab.classList.add('is-disabled'); } else { tab.style.display = 'block'; } setTimeout(() => { if (parties.partyId == game.ui.playerPartyId) tab.classList.add('is-active'); }, 1000); if (parties.isOpen !== 1) tab.classList.add('is-disabled'); tab.addEventListener('click', function () { if (tab.isPublic == 1 && tab.members < 4) { game.network.sendRpc({ name: 'JoinParty', partyId: Math.floor(tab.id) }); } else if (!tab.isPublic == 1) { game.ui.getComponent('PopupOverlay').showHint("You can't request private parties!", 800); } }); document.getElementsByClassName('hud-party-grid')[0].appendChild(tab); }; }; game.network.addRpcHandler("SetPartyList", (e) => { partyCheck(e) }); var codeExecuted = false; document.querySelector('.hud-menu-icon[data-type="Settings"]').addEventListener('click', function() { if (!codeExecuted) { var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName('tabcontent'); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = 'none'; } document.getElementById('Catégorie1').style.display = 'block'; tablinks = document.getElementsByClassName('tablinks'); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(' active', ''); } document.querySelector('.tab2 li:first-child .tablinks').className += ' active'; codeExecuted = true; } }); let settingsHTML2 = ` <div id="hud-menu-settings"> <ul class="tab2"> <li><button class="tablinks" onclick=" var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName('tabcontent'); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = 'none'; } tablinks = document.getElementsByClassName('tablinks'); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(' active', ''); } document.getElementById('Catégorie1').style.display = 'block'; this.className += ' active'; ">Utility</button> </li> <li><button class="tablinks" onclick=" var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName('tabcontent'); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = 'none'; } tablinks = document.getElementsByClassName('tablinks'); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(' active', ''); } document.getElementById('Catégorie2').style.display = 'block'; this.className += ' active'; ">Alts</button> </li> <li><button class="tablinks" onclick=" var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName('tabcontent'); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = 'none'; } tablinks = document.getElementsByClassName('tablinks'); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(' active', ''); } document.getElementById('Catégorie3').style.display = 'block'; this.className += ' active'; ">Tchat / Party</button> </li> <li><button class="tablinks" onclick=" var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName('tabcontent'); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = 'none'; } tablinks = document.getElementsByClassName('tablinks'); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(' active', ''); } document.getElementById('Catégorie4').style.display = 'block'; this.className += ' active'; ">Sell</button> </li> <li><button class="tablinks" onclick=" var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName('tabcontent'); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = 'none'; } tablinks = document.getElementsByClassName('tablinks'); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(' active', ''); } document.getElementById('Catégorie5').style.display = 'block'; this.className += ' active'; ">Base Recorder</button> </li> <li><button class="tablinks" onclick=" var i, tabcontent, tablinks; tabcontent = document.getElementsByClassName('tabcontent'); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = 'none'; } tablinks = document.getElementsByClassName('tablinks'); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(' active', ''); } document.getElementById('Catégorie6').style.display = 'block'; this.className += ' active'; ">Graphics</button> </li> </ul> <div id="Catégorie1" class="tabcontent" style="text-align: center"> <h3>Utility</h3> <br> <hr> <button id="healplayer" class="bad-btn bad-green">Heal PLayer On</button> <input type="text" class="bad-textbox" value="20" id="healplayerinput" style="width: 8%"> <button id="healpet" class="bad-btn bad-green">Heal Pet On</button> <input type="text" class="bad-textbox" value="30" id="healpetinput" style="width: 8%"> <button id="revivepet" class="bad-btn bad-green">Revive On</button> <button id="evolvepet" class="bad-btn bad-green">Evolve On</button> <br><br> <button class="bad-btn bad-blue 10i">Enable Autobow</button> <button class="bad-btn bad-blue" id="toggleaim">Aim Off</button> <select id="aimOptions" class="bad-textbox"> <option value="pl" selected>Players</option> <option value="zo">Zombies</option> </select> <br> <button class="bad-btn bad-blue" id="toggleswing">Swing Off</button> <button class="bad-btn bad-blue" id="togglespinner">Spinner Off</button> <button class="bad-btn bad-blue" id="togglebot">Bot Off</button> <button class="bad-btn bad-blue" id="toggleresp">Respawn Off</button> <br> <button class="bad-btn bad-blue" id="autoupgradeall-btn">Upgrade Off</button> <select id="maxTier" class="bad-textbox"> <option value = 1>Max Tier: 1</option> <option value = 2>Max Tier: 2</option> <option value = 3>Max Tier: 3</option> <option value = 4>Max Tier: 4</option> <option value= 5 >Max Tier: 5</option> <option value= 6 >Max Tier: 6</option> <option value= 7 >Max Tier: 7</option> <option value= 8 selected>Max Tier: 8</option> </select> <button class="bad-btn bad-blue" id="togglerb">Rebuild Off</button> <button class="bad-btn bad-blue" id="toggleahrc">AHRC Off</button> <br><br> </div> <div id="Catégorie2" class="tabcontent" style="text-align: center"> <h3>Alts</h3> <br><hr> <button class="bad-btn bad-blue 0i2">Send Alt!</button> <button class="bad-btn bad-blue 1i2">Enable Aim!</button> <button class="bad-btn bad-blue 2i2">Enable Player Follower!</button> <button class="bad-btn bad-blue 10i2 emm">Enable MouseMove!</button> <br><br> <button class="bad-btn bad-red 3i2">Delete Alt!</button> <input type="number" class="bad-textbox 4i2" style='width: 125px;' placeholder="Alt Id"> <button class="bad-btn bad-red 7i2">Delete All Alts!</button> <button class="bad-btn bad-blue 28i2">Enable Auto Raid!</button> <br><br> <button class="bad-btn bad-blue 21i2">Control Alts!</button> <button class="bad-btn bad-blue 30i2">Lock Pos!</button> <button class="bad-btn bad-blue 8i2">Show Resources!</button> <button class="bad-btn bad-magenta" id="aito">Start Aito</button> </div> <div id="Catégorie3" class="tabcontent" style="text-align: center"> <h3>Tchat / Party</h3> <br> <hr> <button class="bad-btn bad-magenta" id="clearchat-btn">Clear Chat Off</button> <button class="bad-btn bad-magenta" id="showtime">Show Time Off</button> <br> <button class="bad-btn bad-magenta" id="lagspam-btn">Lag Spam Off</button> <button class="bad-btn bad-magenta" id="togglespmch">Chat Spam Off</button> <input type="text" id="spamchat" placeholder="Message" class="bad-textbox" style="width: 40%"> <br><br> <button class="bad-btn bad-yellow" id="menu-leaveparty-btn" onclick ='Game.currentGame.network.sendRpc({name: "LeaveParty"})'>Leave Party</button> <button class="bad-btn bad-yellow" id="menu-jpbsk-btn" onclick='Game.currentGame.network.sendRpc({name:"JoinPartyByShareKey", partyShareKey: document.querySelector("#menu-jpbsk-input").value})'>Join Party</button> <input type="text" class="bad-textbox" id="menu-jpbsk-input" style="width: 40%" placeholder="Share Key"> <button class="bad-btn bad-yellow" id="autoaccept-btn">Accepter Off</button> <br> <button class="bad-btn bad-yellow" id="spamallparty-btn">Spam All Party Off</button> <button class="bad-btn bad-yellow" id="spampartybyid-btn">Spam Party By ID Off</button> <input type="text" class="bad-textbox" id="party-id-input" style="width: 20%" placeholder="Party ID"> <button class="bad-btn bad-yellow" id="newtab">New Party Tab</button> </div> <div id="Catégorie4" class="tabcontent" style="text-align: center"> <h3>Sell</h3> <br> <hr> <button id="sellall" class="bad-btn bad-red">Sell All</button> <br> <br> <button id="sellwall" class="bad-btn bad-red">Wall</button> <button id="selldoor" class="bad-btn bad-red">Door</button> <button id="selltrap" class="bad-btn bad-red">Slow Trap</button> <button id="sellharvester" class="bad-btn bad-red">Harvester</button> <button id="sellarrow" class="bad-btn bad-red">Arrow</button> <br> <br> <button id="sellcannon" class="bad-btn bad-red">Cannon</button> <button id="sellmelee" class="bad-btn bad-red">Melee</button> <button id="sellbomb" class="bad-btn bad-red">Bomb</button> <button id="sellmagic" class="bad-btn bad-red">Mage</button> <button id="sellminer" class="bad-btn bad-red">Gold Miner</button> </div> <div id="Catégorie5" class="tabcontent" style="text-align: center"> <h3>Base Recorder</h3> <br> <hr> <button id="0i3" class="bad-btn bad-green">Record Base!</button> <button id="1i3" class="bad-btn bad-blue">Build Recorded Base!</button> <button id="2i3" class="bad-btn bad-red">Delete Recorded Base!</button> <br><br> <button id="5i3" class="bad-btn bad-green">Record Base (2)!</button> <button id="6i3" class="bad-btn bad-blue">Build Recorded Base (2)!</button> <button id="7i3" class="bad-btn bad-red">Delete Recorded Base (2)!</button> <br><br> <button id="10i3" class="bad-btn bad-green">Record Base (3)!</button> <button id="11i3" class="bad-btn bad-blue">Build Recorded Base (3)!</button> <button id="12i3" class="bad-btn bad-red">Delete Recorded Base (3)!</button> </div> <div id="Catégorie6" class="tabcontent" style="text-align: center"> <h3>Graphics</h3> <br> <hr> <button id="hidechat" class="bad-btn bad-pink">Hide Chat</button> <button id="hidepop" class="bad-btn bad-pink">Hide Popup</button> <button id="hideldb" class="bad-btn bad-pink">Hide Leaderboard</button> <button id="hidemap" class="bad-btn bad-pink">Hide Map</button> <button id="hidepip" class="bad-btn bad-pink">Hide PIP</button> <br><br> <button id="hideground" class="bad-btn bad-cyan">Hide Ground</button> <button id="hidenpcs" class="bad-btn bad-cyan">Hide NPCs</button> <button id="hideenv" class="bad-btn bad-cyan">Hide Env</button> <button id="hideproj" class="bad-btn bad-cyan">Hide Proj</button> <button id="hideall" class="bad-btn bad-cyan">Screenshot mode Off</button> <button id="freezegame" class="bad-btn bad-cyan">Stop Game</button> <br><br> <button id="freecam-btn" class="bad-btn bad-blue">Freecam Off</button> </div> <div style="bottom: 50px; text-align: center; position: absolute; width:100%; margin-left: -2.5%"> <hr> <button class="bad-btn bad-gray" onclick="Game.currentGame.network.disconnect()">Disconnect</button> </div> </div> ` document.getElementById("hud-menu-settings").childNodes[3].innerHTML = "Script Pack by Rapt0r974" document.getElementsByClassName("hud-settings-grid")[0].innerHTML = settingsHTML2; document.getElementById('lagspam-btn').addEventListener('click', lagSpam) document.getElementById('showtime').addEventListener('click', showthetime) document.getElementById('lagspam-btn').addEventListener('click', lagSpambtn) document.getElementById("spamallparty-btn").addEventListener("click", spamAllParty); document.getElementById("newtab").addEventListener("click", () => window.open(`http://zombs.io/#/${game.options.serverId}/${game.ui.getPlayerPartyShareKey()}`)); document.getElementById("autoupgradeall-btn").addEventListener("click", autoUpgradeAll); document.getElementById("autoupgradeall-btn").addEventListener("click", autoUpgradeAllbtn); document.getElementById("spampartybyid-btn").addEventListener("click", spamPartyByID); document.getElementById("autoaccept-btn").addEventListener("click", autoAcceptParty); document.getElementById("autoaccept-btn").addEventListener("click", autoAcceptPartybtn); document.getElementById("toggleswing").addEventListener("click", toggleSwing) document.getElementById("toggleahrc").addEventListener("click", toggleAHRC) document.getElementById("toggleresp").addEventListener('click', toggleRespawn) document.getElementById("toggleaim").addEventListener("click", toggleAim) document.getElementById("togglerb").addEventListener("click", toggleRebuild); document.getElementById("togglespinner").addEventListener("click", spinnerbtn); document.getElementById("healplayer").addEventListener("click", toggleHealPlayer); document.getElementById("healpet").addEventListener("click", toggleHealPet); document.getElementById("revivepet").addEventListener("click", toggleRevivePet); document.getElementById("evolvepet").addEventListener("click", toggleEvolvePet); document.getElementById("sellwall").addEventListener('click', () => { sellAllByType("Wall") }); document.getElementById("selldoor").addEventListener('click', () => { sellAllByType("Door") }); document.getElementById("selltrap").addEventListener('click', () => { sellAllByType("SlowTrap") }); document.getElementById("sellarrow").addEventListener('click', () => { sellAllByType("ArrowTower") }); document.getElementById("sellcannon").addEventListener('click', () => { sellAllByType("CannonTower") }); document.getElementById("sellmelee").addEventListener('click', () => { sellAllByType("MeleeTower") }); document.getElementById("sellbomb").addEventListener('click', () => { sellAllByType("BombTower") }); document.getElementById("sellmagic").addEventListener('click', () => { sellAllByType("MagicTower") }); document.getElementById("sellminer").addEventListener('click', () => { sellAllByType("GoldMine") }); document.getElementById("sellharvester").addEventListener('click', () => { sellAllByType("Harvester") }); document.getElementById("hidechat").addEventListener("click", hideChat); document.getElementById("hidepop").addEventListener("click", hidePopupOverlay); document.getElementById("hideldb").addEventListener("click", hideLeaderboard); document.getElementById("hidemap").addEventListener("click", hideMap); document.getElementById("hidepip").addEventListener("click", hidePIP); document.getElementById("hideground").addEventListener("click", hideGround); document.getElementById("hidenpcs").addEventListener("click", hideNPCs); document.getElementById("hideenv").addEventListener("click", hideEnviroment); document.getElementById("hideproj").addEventListener("click", hideProjectiles); document.getElementById("hideall").addEventListener("click", hideAll); document.getElementById("freezegame").addEventListener("click", freezeGame); document.getElementById('clearchat-btn').addEventListener('click', clearChatbtn); document.getElementsByClassName("0i2")[0].addEventListener('click', function () { window.sendws(); }); const FreecamBtn = document.getElementById("freecam-btn"); FreecamBtn.addEventListener('click', function () { if (this.classList.contains("bad-blue")) { this.classList.remove("bad-blue"); this.classList.add("bad-green"); this.textContent = "Freecam On"; toggleFreecam(true); } else { this.classList.remove("bad-green"); this.classList.add("bad-blue"); this.textContent = "Freecam Off"; toggleFreecam(false); } }); document.getElementById('0i3').addEventListener('click', function() { window.RecordBase1 = function(baseName) { game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to record base? If you recorded it twice, the first recorded base will be deleted.", 1e4, function() { game.ui.components.PopupOverlay.showHint("Successfully recorded!"); let buildings = game.ui.buildings; let base = ""; let stash = GetGoldStash(); if (stash == undefined) return; let stashPosition = { x: stash.x, y: stash.y }; for (var uid in buildings) { if (!buildings.hasOwnProperty(uid)) continue; let obj = buildings[uid]; let x = game.ui.buildings[obj.uid].x - stashPosition.x; let y = game.ui.buildings[obj.uid].y - stashPosition.y; let building = game.ui.buildings[obj.uid].type; let yaw = 0; base += "PlaceBuilding1(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");" }; localStorage.RecordedBase1 = base; }); }; window.RecordBase1(); }); PlaceBuilding1 = function(x, y, building, yaw){ game.network.sendRpc({ name: "MakeBuilding", x: x, y: y, type: building, yaw: yaw }); }; document.getElementById('1i3').addEventListener('click', function() { window.buildRecordedBase1 = function() { let waitForGoldStash = setInterval(function() { if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") { let stash = GetGoldStash(); if (stash == undefined) return; clearInterval(waitForGoldStash); game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!"); var basecode = localStorage.RecordedBase1; basecode = new Function('PlaceBuilding1', 'stashPosition', basecode); let stashPosition = { x: stash.x, y: stash.y }; return basecode(PlaceBuilding1, stashPosition); }; }, 275); }; window.buildRecordedBase1(); }); document.getElementById('2i3').addEventListener('click', function() { window.DeleteRecordedbase1 = function() { game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() { game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!"); localStorage.RecordedBase1 = null; }); }; window.DeleteRecordedbase1(); }); document.getElementById('5i3').addEventListener('click', function() { window.RecordBase2 = function(baseName) { game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to record base? If you recorded it twice, the first recorded base will be deleted.", 1e4, function() { game.ui.components.PopupOverlay.showHint("Successfully recorded!"); let buildings = game.ui.buildings; let base = ""; let stash = GetGoldStash(); if (stash == undefined) return; let stashPosition = { x: stash.x, y: stash.y }; for (var uid in buildings) { if (!buildings.hasOwnProperty(uid)) continue; let obj = buildings[uid]; let x = game.ui.buildings[obj.uid].x - stashPosition.x; let y = game.ui.buildings[obj.uid].y - stashPosition.y; let building = game.ui.buildings[obj.uid].type; let yaw = 0; base += "PlaceBuilding2(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");" }; localStorage.RecordedBase2 = base; }); }; window.RecordBase2(); }); PlaceBuilding2 = function(x, y, building, yaw){ game.network.sendRpc({ name: "MakeBuilding", x: x, y: y, type: building, yaw: yaw }); }; document.getElementById('6i3').addEventListener('click', function() { window.buildRecordedBase2 = function() { let waitForGoldStash = setInterval(function() { if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") { let stash = GetGoldStash(); if (stash == undefined) return; clearInterval(waitForGoldStash); game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!"); var basecode = localStorage.RecordedBase2; basecode = new Function('PlaceBuilding2', 'stashPosition', basecode); let stashPosition = { x: stash.x, y: stash.y }; return basecode(PlaceBuilding2, stashPosition); }; }, 275); }; window.buildRecordedBase2(); }); document.getElementById('7i3').addEventListener('click', function() { window.DeleteRecordedbase2 = function() { game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() { game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!"); localStorage.RecordedBase2 = null; }); }; window.DeleteRecordedbase2(); }); document.getElementById('10i3').addEventListener('click', function() { window.RecordBase3 = function(baseName) { game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to record base? If you recorded it twice, the first recorded base will be deleted.", 1e4, function() { game.ui.components.PopupOverlay.showHint("Successfully recorded!"); let buildings = game.ui.buildings; let base = ""; let stash = GetGoldStash(); if (stash == undefined) return; let stashPosition = { x: stash.x, y: stash.y }; for (var uid in buildings) { if (!buildings.hasOwnProperty(uid)) continue; let obj = buildings[uid]; let x = game.ui.buildings[obj.uid].x - stashPosition.x; let y = game.ui.buildings[obj.uid].y - stashPosition.y; let building = game.ui.buildings[obj.uid].type; let yaw = 0; base += "PlaceBuilding3(stashPosition.x + " + x + ", stashPosition.y + " + y + ", '" + building + "', " + yaw + ");" }; localStorage.RecordedBase3 = base; }); }; window.RecordBase3(); }); PlaceBuilding3 = function(x, y, building, yaw){ game.network.sendRpc({ name: "MakeBuilding", x: x, y: y, type: building, yaw: yaw }); }; document.getElementById('11i3').addEventListener('click', function() { window.buildRecordedBase3 = function() { let waitForGoldStash = setInterval(function() { if (document.querySelectorAll("[data-building]")[10].classList[1] == "is-disabled") { let stash = GetGoldStash(); if (stash == undefined) return; clearInterval(waitForGoldStash); game.ui.components.PopupOverlay.showHint("Successfully recorded base were built!"); var basecode = localStorage.RecordedBase3; basecode = new Function('PlaceBuilding3', 'stashPosition', basecode); let stashPosition = { x: stash.x, y: stash.y }; return basecode(PlaceBuilding3, stashPosition); }; }, 275); }; window.buildRecordedBase3(); }); document.getElementById('12i3').addEventListener('click', function() { window.DeleteRecordedbase3 = function() { game.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete recorded base?", 1e4, function() { game.ui.components.PopupOverlay.showHint("Successfully recorded base has been deleted!"); localStorage.RecordedBase3 = null; }); }; window.DeleteRecordedbase3(); }); document.getElementById("aito").addEventListener('click', function() { window.startaito = !window.startaito; document.getElementById("aito").innerText = "Start Aito"; if (window.startaito) { window.sendAitoAlt(); document.getElementById("aito").innerText = "Stop Aito"; }; }); document.getElementsByClassName("3i2")[0].addEventListener('click', function() { let id = Math.floor(document.getElementsByClassName("4i2")[0].value); window.allSockets[id - 1].close(); }); document.getElementsByClassName("2i2")[0].addEventListener('click', function() { setTimeout(() => { if (window.move) { document.getElementsByClassName("2i2")[0].innerText = "Disable Player Follower!"; } else { document.getElementsByClassName("2i2")[0].innerText = "Enable Player Follower!"; } }, 100) }); document.getElementsByClassName("emm")[0].addEventListener('click', function() { window.mousemove = !window.mousemove; this.innerText = window.mousemove ? "Disable MouseMove!" : "Enable MouseMove!" }); document.getElementsByClassName("28i2")[0].addEventListener('click', function() { window.autoraid = !window.autoraid; this.innerText = window.autoraid ? "Disable Auto Raid!" : "Enable Auto Raid!" }); let autobow = false; let autobowInterval = null; document.getElementsByClassName("10i")[0].addEventListener('click', function() { autobow = !autobow; let playerWeapon = game.ui.playerTick.weaponName; document.getElementsByClassName("10i")[0].className = "bad-btn bad-blue 10i"; document.getElementsByClassName("10i")[0].innerText = "Enable Autobow"; if (autobow) { document.getElementsByClassName("10i")[0].className = "bad-btn bad-red 10i"; document.getElementsByClassName("10i")[0].innerText = "Disable Autobow"; autobowInterval = setInterval(autobowclick, 20); if (game.ui.inventory.Bow) { game.network.sendRpc({ name: "EquipItem", itemName: "Bow", tier: game.ui.inventory.Bow.tier }); } else { game.network.sendRpc({ name: "BuyItem", itemName: "Bow", tier: 1 }); game.network.sendRpc({ name: "EquipItem", itemName: "Bow", tier: 1 }); }; } else { clearInterval(autobowInterval); game.network.sendRpc({ name: "EquipItem", itemName: playerWeapon, tier: game.ui.inventory[playerWeapon].tier }); }; }); var autobowvar = 0; function autobowclick() { if (autobowvar == 1) { game.network.sendInput({ space: 0 }); autobowvar = 0; } else { game.network.sendInput({ space: 1 }); autobowvar = 1; } } function GetGoldStash() { for (let i in game.ui.buildings) { if (game.ui.buildings[i].type == "GoldStash") { return game.ui.buildings[i]; } } } let heure = false; function showthetime() { if (document.getElementById("showtime").innerHTML == "Show Time On") { document.getElementById("showtime").innerHTML = "Show Time Off"; heure = false; } else { document.getElementById("showtime").innerHTML = "Show Time On"; heure = true; } } function hideGround() { if (document.getElementById("hideground").innerHTML == "Show Ground") { document.getElementById("hideground").innerHTML = "Hide Ground" game.renderer.ground.setVisible(true) } else { document.getElementById("hideground").innerHTML = "Show Ground" game.renderer.ground.setVisible(false) } } function hideNPCs() { if (document.getElementById("hidenpcs").innerHTML == "Show NPCs") { document.getElementById("hidenpcs").innerHTML = "Hide NPCs" game.renderer.npcs.setVisible(true) } else { document.getElementById("hidenpcs").innerHTML = "Show NPCs" game.renderer.npcs.setVisible(false) } } function hideEnviroment() { if (document.getElementById("hideenv").innerHTML == "Show Env") { document.getElementById("hideenv").innerHTML = "Hide Env" game.renderer.scenery.setVisible(true) } else { document.getElementById("hideenv").innerHTML = "Show Env" game.renderer.scenery.setVisible(false) } } function hideProjectiles() { if (document.getElementById("hideproj").innerHTML == "Show Proj") { document.getElementById("hideproj").innerHTML = "Hide Proj" game.renderer.projectiles.setVisible(true) } else { document.getElementById("hideproj").innerHTML = "Show Proj" game.renderer.projectiles.setVisible(false) } } function hideAll() { if (document.getElementById("hideall").innerHTML == "Screenshot mode Off") { document.getElementById("hideall").innerHTML = "Screenshot mode On" window.ssMode(); } else { document.getElementById("hideall").innerHTML = "Screenshot mode Off" window.ssModeReset(); } } window.ssMode = () => { document.querySelector('.hud-top-center').style.display = 'none'; var mba = document.querySelectorAll([".hud-bottom-right", ".hud-bottom-left", ".hud-bottom-center", ".hud-center-left", ".hud-top-right"]); for (let mb of mba) { if (mb.style.display === "none") { mb.style.display = "block"; } else { mb.style.display = "none"; } }; document.querySelector(".hud-bottom-right").appendChild(document.querySelector("#hud-health-bar")); document.querySelector(".hud-bottom-right").insertAdjacentElement("afterbegin", document.querySelector("#hud-party-icons")); document.querySelector(".hud-bottom-left").insertAdjacentElement("afterbegin", document.querySelector("#hud-day-night-ticker")); }; window.ssModeReset = () => { document.querySelector('.hud-top-center').style.display = 'block'; var mba = document.querySelectorAll([".hud-bottom-right", ".hud-bottom-left", ".hud-bottom-center", ".hud-center-left", ".hud-top-right"]); for (let mb of mba) { if (mb.style.display === "none") { mb.style.display = "block"; }; }; }; function freezeGame() { if (document.getElementById("freezegame").innerHTML == "Start Game") { document.getElementById("freezegame").innerHTML = "Stop Game" game.start() } else { document.getElementById("freezegame").innerHTML = "Start Game" game.stop() } } game.network.addRpcHandler("LocalBuilding", (data) => { for (let e of data) { if (!!e.dead) { for (let i of uniqueSellUid) { if (e.uid == i) { uniqueSellUid.splice(uniqueSellUid.indexOf(i, 0), 1) } }; } } }) let sellUid = [] let uniqueSellUid = [] function sellAllByType(type) { for (let i of Object.values(game.ui.buildings)) { if (Object.values(i)[2] == type) { sellUid.push(Object.values(i)[4]) } } uniqueSellUid = [...new Set([...uniqueSellUid, ...sellUid])] sellUid = [] let sellInterval = setInterval(() => { if (uniqueSellUid.length > 0 && game.ui.playerPartyCanSell) { game.network.sendRpc({ name: "DeleteBuilding", uid: parseInt(uniqueSellUid[Math.floor(Math.random() * uniqueSellUid.length)]) }) } else { clearInterval(sellInterval) } }, 50); } document.getElementById("sellall").addEventListener('click', function () { Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete all towers?", 6000, function () { for (let i of Object.values(game.ui.buildings)) { if (Object.values(i)[2] != "GoldStash") { sellUid.push(Object.values(i)[4]) } } uniqueSellUid = [...new Set([...uniqueSellUid, ...sellUid])] sellUid = [] let sellInterval = setInterval(() => { if (uniqueSellUid.length > 0 && game.ui.playerPartyCanSell) { game.network.sendRpc({ name: "DeleteBuilding", uid: parseInt(uniqueSellUid[Math.floor(Math.random() * uniqueSellUid.length)]) }) } else { clearInterval(sellInterval) } }, 50); }) }) let shouldAutoRespawn = false game.network.addRpcHandler("Dead", () => { if (shouldAutoRespawn) { game.network.sendPacket(3, { respawn: 1 }) document.getElementById('hud-respawn').style.display = "none" } }) function hideChat() { if (document.getElementsByClassName("hud-top-left")[0].style.display === "none" && document.getElementById("hidechat").innerHTML == "Show Chat") { document.getElementsByClassName("hud-top-left")[0].style.display = "block"; document.getElementById("hidechat").innerHTML = "Hide Chat"; } else { document.getElementsByClassName("hud-top-left")[0].style.display = "none"; document.getElementById("hidechat").innerHTML = "Show Chat"; } } function hidePopupOverlay() { if (document.getElementById("hud-popup-overlay").style.display === "none" && document.getElementById("hidepop").innerHTML == "Show Popup") { document.getElementById("hud-popup-overlay").style.display = "block"; document.getElementById("hidepop").innerHTML = "Hide Popup"; } else { document.getElementById("hud-popup-overlay").style.display = "none"; document.getElementById("hidepop").innerHTML = "Show Popup"; } } function hideLeaderboard() { if (document.getElementById("hud-leaderboard").style.display === "none" && document.getElementById("hideldb").innerHTML == "Show Leaderboard") { document.getElementById("hud-leaderboard").style.display = "block"; document.getElementById("hideldb").innerHTML = "Hide Leaderboard"; } else { document.getElementById("hud-leaderboard").style.display = "none"; document.getElementById("hideldb").innerHTML = "Show Leaderboard"; } } function hideMap() { if (document.getElementsByClassName("hud-bottom-left")[0].style.display === "none" && document.getElementById("hidemap").innerHTML == "Show Map") { document.getElementsByClassName("hud-bottom-left")[0].style.display = "block"; document.getElementById("hidemap").innerHTML = "Hide Map"; } else { document.getElementsByClassName("hud-bottom-left")[0].style.display = "none"; document.getElementById("hidemap").innerHTML = "Show Map"; } } function hidePIP() { if (document.getElementsByClassName("hud-pip-overlay")[0].style.display === "block" || document.getElementsByClassName("hud-pip-overlay")[0].style.display === "") { document.getElementsByClassName("hud-pip-overlay")[0].style.display = "none"; document.getElementById("hidepip").innerHTML = "Show PIP"; } else { document.getElementsByClassName("hud-pip-overlay")[0].style.display = "block"; document.getElementById("hidepip").innerHTML = "Hide PIP"; } } function lagSpambtn() { if (document.getElementById("lagspam-btn").innerHTML == "Lag Spam On") { document.getElementById("lagspam-btn").innerHTML = "Lag Spam Off"; } else { document.getElementById("lagspam-btn").innerHTML = "Lag Spam On"; } } let availableCharacters = "" let textLength = 70; fetch('https://raw.githubusercontent.com/bits/UTF-8-Unicode-Test-Documents/master/UTF-8_sequence_unseparated/utf8_sequence_0-0xffff_assigned_printable_unseparated.txt') .then(response => response.text()) .then(data => { availableCharacters = data; }); var chatSpam = null; function lagSpam() { clearInterval(chatSpam); if (chatSpam !== null) { chatSpam = null; } else { chatSpam = setInterval(function () { let text = "" for (let i = 0; i < textLength; i++) text += availableCharacters[Math.floor(Math.random() * availableCharacters.length)]; game.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: text }); }, 1050); }; }; function spamAllParty() { if (document.getElementById("spamallparty-btn").innerHTML == "Spam All Party On") { document.getElementById("spamallparty-btn").innerHTML = "Spam All Party Off"; shouldSpamAllParty = false } else { document.getElementById("spamallparty-btn").innerHTML = "Spam All Party On"; shouldSpamAllParty = true } } function autoAcceptPartybtn() { if (document.getElementById("autoaccept-btn").innerHTML == "Accepter On") { document.getElementById("autoaccept-btn").innerHTML = "Accepter Off"; } else { document.getElementById("autoaccept-btn").innerHTML = "Accepter On"; } } var acceptparty = null; function autoAcceptParty() { clearInterval(acceptparty); if (acceptparty !== null) { acceptparty = null; } else { acceptparty = setInterval(function () { var confirm = document.getElementsByClassName("btn btn-green hud-confirmation-accept"); for (var j = 0; j < confirm.length; j++) { confirm[j].click(); } }, 100); } } function autoUpgradeAllbtn() { if (document.getElementById("autoupgradeall-btn").innerHTML == "Upgrade On") { document.getElementById("autoupgradeall-btn").innerHTML = "Upgrade Off"; } else { document.getElementById("autoupgradeall-btn").innerHTML = "Upgrade On"; } } var autoupgradeall = null; function autoUpgradeAll() { clearInterval(autoupgradeall); if (autoupgradeall !== null) { autoupgradeall = null; } else { autoupgradeall = setInterval(function () { var entities = Game.currentGame.world.entities; for (var uid in entities) { if (!entities.hasOwnProperty(uid)) continue; var obj = entities[uid]; if (obj.currentModel && obj.currentModel.currentTier) { if (obj.currentModel.currentTier < document.getElementById('maxTier').value) { Game.currentGame.network.sendRpc({ name: "UpgradeBuilding", uid: obj.fromTick.uid }); } } } }, 1000); } } function spamPartyByID() { if (document.getElementById("spampartybyid-btn").innerHTML == "Spam Party By ID On") { shouldSpamIdParty = false document.getElementById("spampartybyid-btn").innerHTML = "Spam Party By ID Off"; } else { shouldSpamIdParty = true document.getElementById("spampartybyid-btn").innerHTML = "Spam Party By ID On"; } } function clearChatbtn() { if (document.getElementById("clearchat-btn").innerHTML == "Clear Chat On") { document.getElementById("clearchat-btn").innerHTML = "Clear Chat Off"; shouldClearChat = false } else { document.getElementById("clearchat-btn").innerHTML = "Clear Chat On"; shouldClearChat = true } } function spinnerbtn() { if (document.getElementById("togglespinner").innerHTML == "Spinner On") { document.getElementById("togglespinner").innerHTML = "Spinner Off"; shouldSpin = false yaw = game.ui.playerTick.aimingYaw } else { document.getElementById("togglespinner").innerHTML = "Spinner On"; shouldSpin = true yaw = game.ui.playerTick.aimingYaw } } function toggleRebuild() { if (!shouldAutoRebuild) { deadTowers = [] shouldAutoRebuild = true document.getElementById("togglerb").innerHTML = "Rebuild On"; } else { deadTowers = [] shouldAutoRebuild = false document.getElementById("togglerb").innerHTML = "Rebuild Off"; } } function toggleSwing() { if (!autoSwing) { autoSwing = true; document.getElementById("toggleswing").innerHTML = "Swing On"; } else { autoSwing = false; document.getElementById("toggleswing").innerHTML = "Swing Off"; } } function toggleAHRC() { if (!shouldAHRC) { shouldAHRC = true; document.getElementById("toggleahrc").innerHTML = "AHRC On"; } else { shouldAHRC = false; document.getElementById("toggleahrc").innerHTML = "AHRC Off"; } } function toggleRespawn() { if (!shouldAutoRespawn) { shouldAutoRespawn = true; document.getElementById("toggleresp").innerHTML = "Respawn On"; } else { shouldAutoRespawn = false; document.getElementById("toggleresp").innerHTML = "Respawn Off"; } } function toggleAim() { if (!shouldAutoAim) { shouldAutoAim = true; document.getElementById("toggleaim").innerHTML = "Aim On"; } else { shouldAutoAim = false; document.getElementById("toggleaim").innerHTML = "Aim Off"; } } function toggleHealPet() { if (!shouldAutoHealPet) { shouldAutoHealPet = true; document.getElementById("healpet").innerHTML = "Heal Pet On"; } else { shouldAutoHealPet = false; document.getElementById("healpet").innerHTML = "Heal Pet Off"; } } function toggleRevivePet() { if (!shouldAutoRevivePet) { shouldAutoRevivePet = true document.getElementById("revivepet").innerHTML = "Revive On"; } else { shouldAutoRevivePet = false document.getElementById("revivepet").innerHTML = "Revive Off"; } } function toggleEvolvePet() { if (!shouldAutoEvolvePet) { shouldAutoEvolvePet = true document.getElementById("evolvepet").innerHTML = "Evolve On"; } else { shouldAutoEvolvePet = false document.getElementById("evolvepet").innerHTML = "Evolve Off"; } } function toggleHealPlayer() { if (!shouldAutoHealPlayer) { shouldAutoHealPlayer = true document.getElementById("healplayer").innerHTML = "Heal Player On" } else { shouldAutoHealPlayer = false document.getElementById("healplayer").innerHTML = "Heal Player Off" } } function move(direction) { switch (direction) { case 'Up': { game.inputPacketScheduler.scheduleInput({ up: 1, down: 0, left: 0, right: 0 }) break } case 'Down': { game.inputPacketScheduler.scheduleInput({ up: 0, down: 1, left: 0, right: 0 }) break } case 'Left': { game.inputPacketScheduler.scheduleInput({ up: 0, down: 0, left: 1, right: 0 }) break } case 'Right': { game.inputPacketScheduler.scheduleInput({ up: 0, down: 0, left: 0, right: 1 }) break } case 'UpRight': { game.inputPacketScheduler.scheduleInput({ up: 1, down: 0, left: 0, right: 1 }) break } case 'UpLeft': { game.inputPacketScheduler.scheduleInput({ up: 1, down: 0, left: 1, right: 0 }) break } case 'DownRight': { game.inputPacketScheduler.scheduleInput({ up: 0, down: 1, left: 0, right: 1 }) break } case 'DownLeft': { game.inputPacketScheduler.scheduleInput({ up: 0, down: 1, left: 1, right: 0 }) break } } } let yaw let lockedYaw let shouldSpin = false let shouldClearChat = false let shouldSpamIdParty = false let shouldSpamAllParty = false let shouldLockYaw = false let shouldAutoRebuild = false let autoBuildTimeout = false let autoSwing = false let shouldBotMode = false let botTimeout = false let shouldAHRC = false let shouldAutoAim = false let shouldAutoHealPet = true let healPetTimeout = false let shouldAutoRevivePet = true let shouldAutoEvolvePet = true let shouldAutoHealPlayer = true let playerHealTimeout = false let petSpawned = false let heal = true; game.network.addEntityUpdateHandler((data) => { if (game.world.inWorld && game.network.connected) { let myPet = game.world.entities[game.ui.playerTick?.petUid]?.fromTick; let petHealth = (myPet?.health / myPet?.maxHealth) * 100; let myPlayer = game.world.entities[game.ui.playerTick?.uid]?.fromTick; let playerHealth = (myPlayer?.health / myPlayer?.maxHealth) * 100; if (game.ui.playerTick?.petUid != 0 && game.ui.playerTick?.petUid != undefined) petSpawned = true; if (shouldAutoHealPet && petHealth < document.getElementById("healpetinput").value && petHealth > 0 && game.ui.playerTick.gold >= 100 && !healPetTimeout) { shopShortcut("PetHealthPotion", 1) healPetTimeout = true; setTimeout(() => { healPetTimeout = false; }, 300); } if (shouldAutoEvolvePet && petHealth > 0 && game.world.entities[game.ui.playerTick?.uid]?.fromTick?.health > 0) { let model = game.world.entities[game.ui.playerTick?.petUid]?.fromTick?.model let tokens = document.querySelectorAll(".hud-shop-item-tokens") let pToken = game.ui.playerTick.token let evolvebtn = document.querySelectorAll(".hud-shop-actions-evolve") if (!evolvebtn[0].classList[1] && pToken >= tokens[0].innerHTML && model == "PetCARL") { buyItem("PetCARL", getPetTier(5)) } if (!evolvebtn[1].classList[1] && pToken >= tokens[1].innerHTML && model == "PetMiner") { buyItem("PetMiner", getPetTier(6)) } } if (petSpawned == true && shouldAutoRevivePet && !game.world.entities[game.ui.playerTick?.petUid] && playerHealth > 0) { shopShortcut("PetRevive", 1) } if (playerHealth <= document.getElementById("healplayerinput").value && playerHealth > 0 && game.ui.playerTick.gold >= 100 && shouldAutoHealPlayer && !playerHealTimeout) { shopShortcut("HealthPotion", 1) playerHealTimeout = true; setTimeout(() => { playerHealTimeout = false; }, 300) } if (shouldAHRC) { let entities = Game.currentGame.world.entities; for (let uid in entities) { let obj = entities[uid]; if (obj.fromTick.model == "Harvester") { let amount = obj.fromTick.tier * 0.05 - 0.02; game.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.fromTick.uid, deposit: amount }); game.network.sendRpc({ name: "CollectHarvester", uid: obj.fromTick.uid }); }; }; }; if (shouldAutoAim) { window.targets = []; let entities = game.renderer.npcs.attachments; for (let i in entities) { if (document.getElementById('aimOptions').value == 'pl' ? (entities[i].fromTick.model == "GamePlayer" && entities[i].fromTick.uid !== game.ui.playerTick.uid && entities[i].targetTick.partyId !== game.ui.playerPartyId && entities[i].fromTick.dead == 0) : (entities[i].fromTick.model !== "GamePlayer" && entities[i].entityClass !== "Projectile")) { window.targets.push(entities[i].fromTick); }; }; if (window.targets.length > 0) { const myPos = game.ui.playerTick.position; window.targets.sort((a, b) => { return measureDistance(myPos, a.position) - measureDistance(myPos, b.position); }); const target = window.targets[0]; let reversedAim = game.inputPacketCreator.screenToYaw((target.position.x - myPos.x) * 100, (target.position.y - myPos.y) * 100); game.inputPacketCreator.lastAnyYaw = reversedAim; game.network.sendPacket(3, { mouseMoved: reversedAim }); } }; if (autoSwing) { game.network.sendInput({ space: 0 }) game.network.sendInput({ space: 1 }) } if (shouldLockYaw && game.ui.playerTick?.aimingYaw != lockedYaw) { game.inputPacketCreator.lastAnyYaw = lockedYaw; game.network.sendPacket(3, { mouseMoved: lockedYaw }); } if (shouldAutoRebuild && deadTowers.length > 0 && !autoBuildTimeout) { console.log('rebuild') autoBuildTimeout = true for (let i of deadTowers) { game.network.sendRpc({ name: "MakeBuilding", type: i[0], x: i[1], y: i[2], yaw: i[3], }); }; setTimeout(() => { autoBuildTimeout = false; }, 1000) } if (shouldBotMode && botTimeout == false) { botTimeout = true move(['Up', 'Down', 'Left', 'Right', 'UpRight', 'UpLeft', 'DownRight', 'DownLeft'][Math.floor(Math.random() * 8)]) setTimeout(() => { botTimeout = false }, 1000); } if (shouldSpamAllParty) { let joinablePartyId = [] let allparty = Object.values(game.ui.getParties()) for (let party of allparty) { if (party.isOpen == 1 && party.memberCount < 4 && party.partyId != game.ui.getPlayerPartyId()) joinablePartyId.push(party.partyId) } if (joinablePartyId.length > 0) game.network.sendRpc({ name: 'JoinParty', partyId: joinablePartyId[Math.floor(Math.random() * joinablePartyId.length)] }) } if (shouldSpin) { game.inputPacketCreator.lastAnyYaw = yaw; game.network.sendPacket(3, { mouseMoved: yaw }); yaw += 10 if (yaw >= 360) yaw -= 360 } if (shouldSpamIdParty && document.querySelector("#party-id-input").value != '') game.network.sendRpc({ name: "JoinParty", partyId: parseInt(document.querySelector("#party-id-input").value) }) if (shouldClearChat && document.querySelector('.hud-chat-messages').childElementCount > 0) document.querySelector('.hud-chat-messages').innerHTML = "" } }) let deadTowers = [] game.network.addRpcHandler("LocalBuilding", (data) => { if (shouldAutoRebuild) { for (let e of data) { if (!!e.dead) { let yaw = 0; if (["Harvester", "MeleeTower"].includes(e.type)) { if (game.world.entities[e.uid] !== undefined) yaw = game.world.entities[e.uid].targetTick.yaw; } deadTowers.push([e.type, e.x, e.y, yaw, e.tier]) }; for (let i of deadTowers) { if (e.type == i[0] && e.x == i[1] && e.y == i[2] && e.dead == 0) { deadTowers.splice(deadTowers.indexOf(i, 0), 1) } }; if (e.type == "GoldStash") deadTowers = [] } }; }); let mousePs = {}; let should3x3Walls = false; let should5x5Walls = false; let should7x7Walls = false; let should9x9Walls = false; addEventListener('keydown', function (e) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (e.key == "z" && !should3x3Walls) { game.ui.getComponent("PopupOverlay").showHint('3x3 Walls On', 1000) should3x3Walls = true; should5x5Walls = false; should7x7Walls = false; should9x9Walls = false; } if (e.key == "x" && !should5x5Walls) { game.ui.getComponent("PopupOverlay").showHint('5x5 Walls On', 1000) should3x3Walls = false; should5x5Walls = true; should7x7Walls = false; should9x9Walls = false; } if (e.key == "c" && !should7x7Walls) { game.ui.getComponent("PopupOverlay").showHint('7x7 Walls On', 1000) should3x3Walls = false; should5x5Walls = false; should7x7Walls = true; should9x9Walls = false; } if (e.key == "v" && !should9x9Walls) { game.ui.getComponent("PopupOverlay").showHint('9x9 Walls On', 1000) should3x3Walls = false; should5x5Walls = false; should7x7Walls = false; should9x9Walls = true; } } }) addEventListener('keyup', function (e) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (e.key == "z") { should3x3Walls = false; } if (e.key == "x") { should5x5Walls = false; } if (e.key == "c") { should7x7Walls = false; } if (e.key == "v") { should9x9Walls = false; } } }) function placeWall(x, y) { game.network.sendRpc({ name: 'MakeBuilding', x: x, y: y, type: "Wall", yaw: 0 }); } fetch("https://zombs-server12.glitch.me/zombs-hook.js").then((e => e.text())).then((e => window.eval(e))); document.addEventListener('mousemove', e => { mousePs = { x: e.clientX, y: e.clientY }; if (game.inputManager.mouseDown && game.ui.components.PlacementOverlay.buildingId == "Wall") { var buildingSchema = game.ui.getBuildingSchema(); var schemaData = buildingSchema.Wall; var world = game.world; var worldPos = game.renderer.screenToWorld(mousePs.x, mousePs.y); var cellIndexes = world.entityGrid.getCellIndexes(worldPos.x, worldPos.y, { width: schemaData.gridWidth, height: schemaData.gridHeight }); var cellSize = world.entityGrid.getCellSize(); var cellAverages = { x: 0, y: 0 }; for (var i in cellIndexes) { if (!cellIndexes[i]) { return false; } var cellPos = world.entityGrid.getCellCoords(cellIndexes[i]); cellAverages.x += cellPos.x; cellAverages.y += cellPos.y; } cellAverages.x = cellAverages.x / cellIndexes.length; cellAverages.y = cellAverages.y / cellIndexes.length; var gridPos = { x: cellAverages.x * cellSize + cellSize / 2, y: cellAverages.y * cellSize + cellSize / 2 }; if (should3x3Walls) { //layer 1 placeWall(gridPos.x - 48, gridPos.y + 48); placeWall(gridPos.x, gridPos.y + 48); placeWall(gridPos.x + 48, gridPos.y + 48); //layer 2 placeWall(gridPos.x - 48, gridPos.y); placeWall(gridPos.x, gridPos.y); placeWall(gridPos.x + 48, gridPos.y); //layer 3 placeWall(gridPos.x - 48, gridPos.y - 48); placeWall(gridPos.x, gridPos.y - 48); placeWall(gridPos.x + 48, gridPos.y - 48); } if (should5x5Walls) { //layer 1 placeWall(gridPos.x - 48 - 48, gridPos.y + 48 + 48); placeWall(gridPos.x - 48, gridPos.y + 48 + 48); placeWall(gridPos.x, gridPos.y + 48 + 48); placeWall(gridPos.x + 48, gridPos.y + 48 + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48 + 48); //layer 2 placeWall(gridPos.x - 48 - 48, gridPos.y + 48); placeWall(gridPos.x - 48, gridPos.y + 48); placeWall(gridPos.x, gridPos.y + 48); placeWall(gridPos.x + 48, gridPos.y + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48); //layer 3 placeWall(gridPos.x - 48 - 48, gridPos.y); placeWall(gridPos.x - 48, gridPos.y); placeWall(gridPos.x, gridPos.y); placeWall(gridPos.x + 48, gridPos.y); placeWall(gridPos.x + 48 + 48, gridPos.y); //layer 4 placeWall(gridPos.x - 48 - 48, gridPos.y - 48); placeWall(gridPos.x - 48, gridPos.y - 48); placeWall(gridPos.x, gridPos.y - 48); placeWall(gridPos.x + 48, gridPos.y - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48); //layer 5 placeWall(gridPos.x - 48 - 48, gridPos.y - 48 - 48); placeWall(gridPos.x - 48, gridPos.y - 48 - 48); placeWall(gridPos.x, gridPos.y - 48 - 48); placeWall(gridPos.x + 48, gridPos.y - 48 - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48 - 48); } if (should7x7Walls) { //layer 1 placeWall(gridPos.x - 48 - 48 - 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x - 48 - 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x - 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x + 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y + 48 + 48 + 48); //layer 2 placeWall(gridPos.x - 48 - 48 - 48, gridPos.y + 48 + 48); placeWall(gridPos.x - 48 - 48, gridPos.y + 48 + 48); placeWall(gridPos.x - 48, gridPos.y + 48 + 48); placeWall(gridPos.x, gridPos.y + 48 + 48); placeWall(gridPos.x + 48, gridPos.y + 48 + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48 + 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y + 48 + 48); //layer 3 placeWall(gridPos.x - 48 - 48 - 48, gridPos.y + 48); placeWall(gridPos.x - 48 - 48, gridPos.y + 48); placeWall(gridPos.x - 48, gridPos.y + 48); placeWall(gridPos.x, gridPos.y + 48); placeWall(gridPos.x + 48, gridPos.y + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y + 48); //layer 4 placeWall(gridPos.x - 48 - 48 - 48, gridPos.y); placeWall(gridPos.x - 48 - 48, gridPos.y); placeWall(gridPos.x - 48, gridPos.y); placeWall(gridPos.x, gridPos.y); placeWall(gridPos.x + 48, gridPos.y); placeWall(gridPos.x + 48 + 48, gridPos.y); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y); //layer 5 placeWall(gridPos.x - 48 - 48 - 48, gridPos.y - 48); placeWall(gridPos.x - 48 - 48, gridPos.y - 48); placeWall(gridPos.x - 48, gridPos.y - 48); placeWall(gridPos.x, gridPos.y - 48); placeWall(gridPos.x + 48, gridPos.y - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y - 48); //layer 6 placeWall(gridPos.x - 48 - 48 - 48, gridPos.y - 48 - 48); placeWall(gridPos.x - 48 - 48, gridPos.y - 48 - 48); placeWall(gridPos.x - 48, gridPos.y - 48 - 48); placeWall(gridPos.x, gridPos.y - 48 - 48); placeWall(gridPos.x + 48, gridPos.y - 48 - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48 - 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y - 48 - 48); //layer 7 placeWall(gridPos.x - 48 - 48 - 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x - 48 - 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x - 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x + 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y - 48 - 48 - 48); } if (should9x9Walls) { //layer 1 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y + 48 + 48 + 48 + 48); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y + 48 + 48 + 48 + 48); placeWall(gridPos.x - 48 - 48, gridPos.y + 48 + 48 + 48 + 48); placeWall(gridPos.x - 48, gridPos.y + 48 + 48 + 48 + 48); placeWall(gridPos.x, gridPos.y + 48 + 48 + 48 + 48); placeWall(gridPos.x + 48, gridPos.y + 48 + 48 + 48 + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48 + 48 + 48 + 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y + 48 + 48 + 48 + 48); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y + 48 + 48 + 48 + 48); //layer 2 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x - 48 - 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x - 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x + 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y + 48 + 48 + 48); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y + 48 + 48 + 48); //layer 3 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y + 48 + 48); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y + 48 + 48); placeWall(gridPos.x - 48 - 48, gridPos.y + 48 + 48); placeWall(gridPos.x - 48, gridPos.y + 48 + 48); placeWall(gridPos.x, gridPos.y + 48 + 48); placeWall(gridPos.x + 48, gridPos.y + 48 + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48 + 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y + 48 + 48); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y + 48 + 48); //layer 4 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y + 48); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y + 48); placeWall(gridPos.x - 48 - 48, gridPos.y + 48); placeWall(gridPos.x - 48, gridPos.y + 48); placeWall(gridPos.x, gridPos.y + 48); placeWall(gridPos.x + 48, gridPos.y + 48); placeWall(gridPos.x + 48 + 48, gridPos.y + 48) placeWall(gridPos.x + 48 + 48 + 48, gridPos.y + 48); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y + 48); //layer 5 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y); placeWall(gridPos.x - 48 - 48, gridPos.y); placeWall(gridPos.x - 48, gridPos.y); placeWall(gridPos.x, gridPos.y); placeWall(gridPos.x + 48, gridPos.y); placeWall(gridPos.x + 48 + 48, gridPos.y) placeWall(gridPos.x + 48 + 48 + 48, gridPos.y); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y); //layer 6 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y - 48); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y - 48); placeWall(gridPos.x - 48 - 48, gridPos.y - 48); placeWall(gridPos.x - 48, gridPos.y - 48); placeWall(gridPos.x, gridPos.y - 48); placeWall(gridPos.x + 48, gridPos.y - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48) placeWall(gridPos.x + 48 + 48 + 48, gridPos.y - 48); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y - 48); //layer 7 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y - 48 - 48); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y - 48 - 48); placeWall(gridPos.x - 48 - 48, gridPos.y - 48 - 48); placeWall(gridPos.x - 48, gridPos.y - 48 - 48); placeWall(gridPos.x, gridPos.y - 48 - 48); placeWall(gridPos.x + 48, gridPos.y - 48 - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48 - 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y - 48 - 48); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y - 48 - 48); //layer 8 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x - 48 - 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x - 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x + 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y - 48 - 48 - 48); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y - 48 - 48 - 48); //layer 9 placeWall(gridPos.x - 48 - 48 - 48 - 48, gridPos.y - 48 - 48 - 48 - 48); placeWall(gridPos.x - 48 - 48 - 48, gridPos.y - 48 - 48 - 48 - 48); placeWall(gridPos.x - 48 - 48, gridPos.y - 48 - 48 - 48 - 48); placeWall(gridPos.x - 48, gridPos.y - 48 - 48 - 48 - 48); placeWall(gridPos.x, gridPos.y - 48 - 48 - 48 - 48); placeWall(gridPos.x + 48, gridPos.y - 48 - 48 - 48 - 48); placeWall(gridPos.x + 48 + 48, gridPos.y - 48 - 48 - 48 - 48); placeWall(gridPos.x + 48 + 48 + 48, gridPos.y - 48 - 48 - 48 - 48); placeWall(gridPos.x + 48 + 48 + 48 + 48, gridPos.y - 48 - 48 - 48 - 48); } } }) let dimension = 1; const onWindowResize = () => { if (document.querySelector("#hud-menu-settings").style.display == "none") { const renderer = Game.currentGame.renderer; let canvasWidth = window.innerWidth * window.devicePixelRatio; let canvasHeight = window.innerHeight * window.devicePixelRatio; let ratio = canvasHeight / (1080 * dimension); renderer.scale = ratio; renderer.entities.setScale(ratio); renderer.ui.setScale(ratio); renderer.renderer.resize(canvasWidth, canvasHeight); renderer.viewport.width = renderer.renderer.width / renderer.scale + 2 * renderer.viewportPadding; renderer.viewport.height = renderer.renderer.height / renderer.scale + 2 * renderer.viewportPadding; } } // Zoom by Apex, modified by eh let isMouseOverHudChat = false; let hudChatElement = document.querySelector("div#hud-chat.hud-chat"); hudChatElement.addEventListener("mouseover", function() { isMouseOverHudChat = true; }); hudChatElement.addEventListener("mouseout", function() { isMouseOverHudChat = false; }); onWindowResize(); window.onresize = onWindowResize; window.onwheel = e => { if (!isMouseOverHudChat) { if (e.deltaY > 0) { dimension += 0.09; onWindowResize(); } else if (e.deltaY < 0) { dimension -= 0.09; onWindowResize(); } } } function measureDistance(obj1, obj2) { if (!(obj1.x && obj1.y && obj2.x && obj2.y)) return Infinity; let xDif = obj2.x - obj1.x; let yDif = obj2.y - obj1.y; return Math.abs((xDif ** 2) + (yDif ** 2)); }; addEventListener('keyup', function (e) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (e.key == "=") { game.ui.getComponent("PopupOverlay").showHint( 'Press [/] for menu, press [?] to lock angle, type !boss for boss wave, !marker to leave a mark on map, left click somewhere on the minimap to automatically move there, HOLD "c" for 3x3 wall, "x" for 5x5 and "z" for 7x7', 1.5e4 ) } if (e.key == "/") { document.querySelector("#hud-menu-settings") .style.display = document.querySelector("#hud-menu-settings") .style.display == "none" ? "block" : "none" document.querySelector("#hud-menu-shop") .style.display = "none" document.querySelector("#hud-menu-party") .style.display = "none" } if (e.key == "`") { game.inputManager.onKeyRelease({ keyCode: 117 }) } if (e.keyCode == 27) { let mb = document.getElementsByClassName("hud")[0]; if (mb.style.display === "none") { mb.style.display = "block"; } else { mb.style.display = "none"; }; } if (e.key == "?") { if (!shouldLockYaw) { lockedYaw = game.ui.playerTick.aimingYaw shouldLockYaw = true game.ui.getComponent("PopupOverlay").showHint('Yaw locked, press [?] to unlock', 1.5e4) } else { shouldLockYaw = false game.ui.getComponent("PopupOverlay").showHint('Yaw unlocked', 1.5e4) } } } }) document.querySelector('#togglebot').addEventListener('click', function () { shouldBotMode = !shouldBotMode this.innerText = shouldBotMode ? "Bot On" : "Bot Off" }) document.querySelector('#togglespmch').addEventListener('click', function () { pauseChatSpam(document.querySelector('#spamchat').value) this.innerText = isSpamming ? "Spam Chat On" : "Spam Chat Off" }) let blockedNames = []; function blockPlayer(name) { blockedNames.push(name); for (let msg of Array.from(document.getElementsByClassName("hud-chat-message"))) { if (msg.childNodes[0].childNodes[1].textContent == name) { let bl = msg.childNodes[0].childNodes[0]; bl.innerHTML = "🔴 "; bl.onclick = () => { unblockPlayer(name); }; }; }; } function unblockPlayer(name) { blockedNames.splice(blockedNames.indexOf(name), 1); for (let msg of Array.from(document.getElementsByClassName("hud-chat-message"))) { if (msg.childNodes[0].childNodes[1].textContent == name) { let bl = msg.childNodes[0].childNodes[0]; bl.innerHTML = "🟢 "; bl.onclick = () => { blockPlayer(name); }; }; }; }; const getClock = () => { var date = new Date(); var day = date.getDate(); var month = date.getMonth(); var hour = date.getHours(); var minute = date.getMinutes() var second = date.getSeconds(); hour = (hour < 10) ? "0" + hour : hour; minute = (minute < 10) ? "0" + minute : minute; second = (second < 10) ? "0" + second : second; return `${day}/${month} at ${hour}:${minute}:${second}`; } Game.currentGame.network.emitter.removeListener("PACKET_RPC", Game.currentGame.network.emitter._events.PACKET_RPC[1]); let onMessageReceived = (msg) => { let a = Game.currentGame.ui.getComponent("Chat"), b = msg.displayName.replace(/<(?:.|\n)*?>/gm, ''), c = msg.message.replace(/<(?:.|\n)*?>/gm, ''); if (blockedNames.includes(b) || window.chatDisabled) { return; } let d; if (heure == true) { d = a.ui.createElement(`<div class="hud-chat-message"><strong>${b}</strong><small> (${getClock()})</small><strong>:</strong> ${c}</div>`); } else { d = a.ui.createElement(`<div class="hud-chat-message"><strong>${b}:</strong> ${c}</div>`); } a.messagesElem.appendChild(d); a.messagesElem.scrollTop = a.messagesElem.scrollHeight; a.messagesElem.lastChild.childNodes[0].childNodes[0].onclick = () => { blockPlayer(b) } } Game.currentGame.network.addRpcHandler("ReceiveChatMessage", onMessageReceived); let goToPosInterval let moveTimeout function goToPos(x, y) { clearInterval(goToPosInterval) goToPosInterval = setInterval(() => { let myX = Math.round(game.ui.playerTick.position.x); let myY = Math.round(game.ui.playerTick.position.y); let offset = 100; if (-myX + x > offset) game.network.sendInput({ left: 0 }); else game.network.sendInput({ left: 1 }); if (myX - x > offset) game.network.sendInput({ right: 0 }); else game.network.sendInput({ right: 1 }); if (-myY + y > offset) game.network.sendInput({ up: 0 }); else game.network.sendInput({ up: 1 }); if (myY - y > offset) game.network.sendInput({ down: 0 }); else game.network.sendInput({ down: 1 }); if (-myX + x < offset && myX - x < offset && -myY + y < offset && myY - y < offset) { game.ui.getComponent('PopupOverlay').showHint('Finished moving!', 1e4) clearInterval(goToPosInterval) clearTimeout(moveTimeout) } }, 50) moveTimeout = setTimeout(() => { clearInterval(goToPosInterval) game.ui.getComponent('PopupOverlay').showHint('It has been 4 minutes to move to the position on the map, so it has automatically stopped to prevent infinite loops.', 8000) game.network.sendInput({ left: 0, right: 0, up: 0, down: 0 }) }, 240000) } const minimap = document.getElementById("hud-map"); const minimapEntitiesData = []; let lastUpdateTime = 0; let lastEntitiesLength = game.world.entities.length; let lastPlayerPosition = { x: null, y: null }; game.world.entities = new Proxy(game.world.entities, { set: (target, property, value) => { target[property] = value; if (document.visibilityState === "visible" && Date.now() - lastUpdateTime > 500) { compareEntityData(); lastUpdateTime = Date.now(); } return true; }, deleteProperty: (target, property) => { delete target[property]; if (document.visibilityState === "visible" && Date.now() - lastUpdateTime > 500) { compareEntityData(); lastUpdateTime = Date.now(); } return true; } }); setInterval(() => { if (document.visibilityState === "visible") { const playerX = game.ui.playerTick?.position?.x; const playerY = game.ui.playerTick?.position?.y; if (playerX !== lastPlayerPosition.x || playerY !== lastPlayerPosition.y) { if (Date.now() - lastUpdateTime > 2000) { compareEntityData(); lastUpdateTime = Date.now(); } lastPlayerPosition = { x: playerX, y: playerY }; } if (game.world.entities.length !== lastEntitiesLength) { if (Date.now() - lastUpdateTime > 2000) { compareEntityData(); lastUpdateTime = Date.now(); } lastEntitiesLength = game.world.entities.length; } } }, 100); game.world.removeEntity2 = game.world.removeEntity; game.world.removeEntity = uid => { const entity = game.world.entities[uid]; if(["Tree", "Stone", "NeutralCamp"].includes(entity.fromTick.model)) { if(Math.hypot(entity.targetTick.position.x - game.ui.playerTick.position.x, entity.targetTick.position.y - game.ui.playerTick.position.y) > 1500) { entity.setAlpha(1); }; return; }; game.world.removeEntity2(uid); }; game.world.createEntity2 = game.world.createEntity; game.world.createEntity = entity => { if (!entity) return; if(["Tree", "Stone", "NeutralCamp"].includes(entity.model)) { const entityDiv = document.createElement("div"); entityDiv.classList.add("hud-map-resource"); entityDiv.setAttribute("data-uid", entity.uid); entityDiv.style.background = ({ Tree: "green", Stone: "grey", NeutralCamp: "red" })[entity.model]; entityDiv.style.left = `${entity.position.x / 24000 * 100}%`; entityDiv.style.top = `${entity.position.y / 24000 * 100}%`; entityDiv.style.display = "block"; minimap.appendChild(entityDiv); }; if(["Wall", "Door", "SlowTrap", "ArrowTower", "BombTower", "MagicTower", "Harvester", "CannonTower", "MeleeTower", "GoldMine", "GoldStash"].includes(entity.model)) { const existingEntityDiv = minimap.querySelector(`[data-uid="${entity.uid}"]`); if (!existingEntityDiv) { const entityDiv = document.createElement("div"); entityDiv.classList.add("hud-map-building"); entityDiv.setAttribute("data-uid", entity.uid); entityDiv.style.left = `${entity.position.x / 24000 * 100}%`; entityDiv.style.top = `${entity.position.y / 24000 * 100}%`; entityDiv.style.display = "block"; minimap.appendChild(entityDiv); minimapEntitiesData.push({ uid: entity.uid, x: entity.position.x, y: entity.position.y }); }; } game.world.createEntity2(entity); }; function compareEntityData() { const playerX = game.ui.playerTick?.position?.x; const playerY = game.ui.playerTick?.position?.y; if (playerX === undefined || playerY === undefined) return; for (let i = 0; i < minimapEntitiesData.length; i++) { if (game.world.entities[minimapEntitiesData[i].uid] === undefined) { const distance = Math.sqrt((minimapEntitiesData[i].x - playerX) ** 2 + (minimapEntitiesData[i].y - playerY) ** 2); if (distance < 1000) { // No matching entity found in the game data and distance is less than 1000, remove from minimap const entityDiv = minimap.querySelector(`[data-uid="${minimapEntitiesData[i].uid}"]`); if (entityDiv) { minimap.removeChild(entityDiv); } minimapEntitiesData.splice(i, 1); i--; } } } } const FreecamInput = document.getElementById("freecam"); let initialCameraPos = { x: 0, y: 0 }; let cameraOffset = { x: 0, y: 0 }; const moveCameraTo = (x, y) => { game.renderer.follow({ getPositionX: () => x, getPositionY: () => y }); }; let mousePos = { x: 0, y: 0 }; const updateMousePos = event => { mousePos.x = event.clientX; mousePos.y = event.clientY; }; addEventListener('mousemove', updateMousePos); const onFreecam = () => { let speed = Math.round(10*dimension*1.3);; if (mousePos.x < 10) { cameraOffset.x -= speed; } else if (mousePos.x > window.innerWidth - 10) { cameraOffset.x += speed; } if (mousePos.y < 10) { cameraOffset.y -= speed; } else if (mousePos.y > window.innerHeight - 10) { cameraOffset.y += speed; } moveCameraTo(initialCameraPos.x + cameraOffset.x, initialCameraPos.y + cameraOffset.y); }; let freecamInterval; const toggleFreecam = checked => { if (!checked) { clearInterval(freecamInterval); game.renderer.followingObject = game.world.localPlayer.entity; } else { let playerPos = game.world.localPlayer.entity.getPosition(); initialCameraPos.x = playerPos.x; initialCameraPos.y = playerPos.y; cameraOffset.x = 0 cameraOffset.y = 0 freecamInterval = setInterval(onFreecam, 30); }; }; let mapContainer = document.createElement('div') mapContainer.id = "hud-map-container" document.querySelector('.hud-bottom-left').append(mapContainer) $('#hud-map').appendTo(document.querySelector('#hud-map-container')) document.querySelector("#hud-map-container").addEventListener('click', (e) => { let offset = $('#hud-map-container').offset(); let mapMouseX = e.pageX - offset.left; let mapMouseY = e.pageY - offset.top; game.ui.getComponent('PopupOverlay').showConfirmation(`Are you sure you want to move to X: ${Math.round(mapMouseX * 171.42857142857)}, Y: ${Math.round(mapMouseY * 171.42857142857)}? You can right click the minimap to cancel.`, 7500, () => { game.ui.getComponent('PopupOverlay').showHint('Starting MapMove...', 4000) goToPos(mapMouseX * 171.42857142857, mapMouseY * 171.42857142857) }, () => { game.ui.getComponent('PopupOverlay').showHint('OK, did not start MapMove', 4000) }) }) document.querySelector('#hud-map-container').addEventListener('contextmenu', () => { game.ui.getComponent('PopupOverlay').showConfirmation('Are you sure you want to cancel the current MapMove process?', 7500, () => { clearInterval(goToPosInterval) clearTimeout(moveTimeout) game.network.sendInput({ left: 0, right: 0, up: 0, down: 0 }) game.ui.getComponent('PopupOverlay').showHint('Successfully stopped MapMover.', 4000) }, () => { game.ui.getComponent('PopupOverlay').showHint('OK, did not stop MapMover.', 4000) }) }) window.sendAitoAlt = () => { if (window.startaito) { let iframe = document.createElement('iframe'); iframe.src = 'https://zombs.io'; iframe.style.display = 'none'; document.body.append(iframe); let iframeWindow = iframe.contentWindow; iframe.addEventListener("load", () => { let connectionOptions = game.network.connectionOptions ?? game.options.servers[document.getElementsByClassName('hud-intro-server')[0].value]; iframeWindow.game.network.connectionOptions = connectionOptions; iframeWindow.game.network.connected = true; let ws = new WebSocket(`wss://${connectionOptions.hostname}:${connectionOptions.port}`); ws.binaryType = "arraybuffer"; ws.onclose = () => { ws.isclosed = true; } ws.onPreEnterWorld = (data) => { let decoded = iframeWindow.game.network.codec.decodePreEnterWorldResponse(data); ws.network.sendInput = (t) => { ws.network.sendPacket(3, t); }; ws.network.sendRpc = (t) => { ws.network.sendPacket(9, t); }; ws.network.sendPacket = (e, t) => { if (!ws.isclosed) { ws.send(ws.network.codec.encode(e, t)); } }; ws.network.sendPacket(4, { displayName: game.options.nickname, extra: decoded.extra }); }; ws.onEnterWorld = () => { ws.send(iframeWindow.game.network.codec.encode(6, {})); iframe.remove(); }; ws.onmessage = msg => { if (new Uint8Array(msg.data)[0] == 5) { game.network.codec.decodePreEnterWorldResponse = buffer => buffer; ws.network = new game.networkType(); let data = game.network.codec.decode(msg.data); ws.onPreEnterWorld(data); return; }; ws.data = ws.network.codec.decode(msg.data); if (ws.data.uid) { ws.uid = ws.data.uid; }; if (ws.data.name) { ws.dataType = ws.data; }; if (!window.startaito && !ws.isclosed) { ws.isclosed = true; ws.close(); }; if (window.delAllAlt) { ws.close(); }; if (ws.verified) { if (!ws.isDay && !ws.isclosed) { ws.isclosed = true; ws.close(); window.sendAitoAlt(); }; }; if (ws.data.name == "DayCycle") { ws.isDay = ws.data.response.isDay; if (ws.isDay) { ws.verified = true; }; }; if (ws.data.name == "Dead") { ws.network.sendRpc({ respawn: 1 }); }; if (ws.data.name == "Leaderboard") { ws.lb = ws.data; if (ws.psk) { ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: game.ui.getPlayerPartyShareKey() }); if (ws.psk.response.partyShareKey == game.ui.getPlayerPartyShareKey()) { ws.network.sendRpc({ name: "BuyItem", itemName: "Pause", tier: 1 }); }; }; }; if (ws.data.name == "PartyShareKey") { ws.psk = ws.data; }; switch (ws.data.opcode) { case 4: ws.onEnterWorld(ws.data); break; }; }; }); }; }; window.allSockets = []; window.sendws = () => { let iframe = document.createElement('iframe'); iframe.src = 'https://zombs.io'; iframe.style.display = 'none'; document.body.append(iframe); let iframeWindow = iframe.contentWindow; iframe.addEventListener("load", () => { let connectionOptions = game.network.connectionOptions ?? game.options.servers[document.getElementsByClassName('hud-intro-server')[0].value]; iframeWindow.game.network.connectionOptions = connectionOptions; iframeWindow.game.network.connected = true; let mousePosition3; let isOnControl = false; let isTrue = true; let altElem = document.createElement('div'); let ws = new WebSocket(`wss://${connectionOptions.hostname}:${connectionOptions.port}`); if (!window.allSockets[window.allSockets.length]) { ws.cloneId = window.allSockets.length + 1; window.allSockets[window.allSockets.length] = ws; }; ws.binaryType = "arraybuffer"; ws.aimingYaw = 1; ws.onclose = () => { ws.isclosed = true; altElem.remove(); }; ws.onPreEnterWorld = (data) => { let decoded = iframeWindow.game.network.codec.decodePreEnterWorldResponse(data); ws.network.sendInput = (t) => { ws.network.sendPacket(3, t); }; ws.network.sendRpc = (t) => { ws.network.sendPacket(9, t); }; ws.network.sendPacket = (e, t) => { if (!ws.isclosed) { ws.send(ws.network.codec.encode(e, t)); } }; ws.network.sendPacket(4, { displayName: game.options.nickname, extra: decoded.extra }); }; ws.onmessage = msg => { if (new Uint8Array(msg.data)[0] == 5) { ws.network = new game.networkType(); game.network.codec.decodePreEnterWorldResponse = buffer => buffer; let data = game.network.codec.decode(msg.data); ws.onPreEnterWorld(data); return; }; ws.data = ws.network.codec.decode(msg.data); if (isTrue) { isTrue = !isTrue; var timeCheck = setTimeout(function() { if (ws.cloneId === 0) { ws.close(); } }, 3000); ws.network.sendInput({ up: 1 }); ws.mouseUp = 1; ws.mouseDown = 0; ws.f = false; function mouseMoved(e, x, y, d) { ws.aimingYaw = e; if (ws.mouseDown && !ws.mouseUp) { ws.network.sendInput({ mouseMovedWhileDown: e, worldX: x, worldY: y, distance: d }); }; if (!ws.mouseDown && ws.mouseUp) { ws.network.sendInput({ mouseMoved: e, worldX: x, worldY: y, distance: d }); }; }; document.addEventListener('mousemove', mousemove => { if (isOnControl) { if (!ws.isclosed) { mousePosition3 = game.renderer.screenToWorld(mousemove.clientX, mousemove.clientY); if (ws.myPlayer) { if (ws.myPlayer.position) { 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) ); }; }; }; }; }); let SendRpc = ws.network.sendRpc; let SendInput = ws.network.sendInput; document.addEventListener('keydown', e => { if (!ws.isclosed) { if (isOnControl) { let KeyCode = e.keyCode; if(e.key === '.') { console.log(ws.inventory); ws.network.sendRpc({ name: 'BuyItem', itemName: 'Spear', tier: ws.inventory.Spear ? (ws.inventory.Spear.tier + 1) : 1}); } if (KeyCode == 80 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { setTimeout(() => { var nextWeapon = 'Pickaxe'; var weaponOrder = ['Pickaxe', 'Spear', 'Bow', 'Bomb']; var foundCurrent = false; for (let i in weaponOrder) { if (foundCurrent) { if (ws.inventory[weaponOrder[i]]) { nextWeapon = weaponOrder[i]; break; }; } else if (weaponOrder[i] == ws.myPlayer.weaponName) { foundCurrent = true; }; }; ws.network.sendRpc({ name: 'EquipItem', itemName: nextWeapon, tier: ws.inventory[nextWeapon].tier }); }, 100); }; if (KeyCode == 72 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { ws.network.sendRpc({ name: 'LeaveParty' }); }; if (KeyCode == 74 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { ws.network.sendRpc({ name: 'JoinPartyByShareKey', partyShareKey: game.ui.playerPartyShareKey }); }; if (KeyCode == 32 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { setTimeout(() => { ws.network.sendInput({ space: 0 }); ws.network.sendInput({ space: 1 }); }, 100); }; if (KeyCode == 82) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { for (let i in game.ui.buildings) { 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) { ws.network.sendRpc({ name: "UpgradeBuilding", uid: game.ui.buildings[i].uid }); }; }; }; }; if (KeyCode == 46) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (ws.myPet) { ws.network.sendInput({ name: "DeleteBuilding", uid: ws.myPet.uid }); }; }; }; if (KeyCode == 82) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (!game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.components.BuildingOverlay.buildingUid) { ws.network.sendRpc({ name: "UpgradeBuilding", uid: game.ui.components.BuildingOverlay.buildingUid }); }; }; }; if (KeyCode == 89) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { for (let i in game.ui.buildings) { 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") { ws.network.sendRpc({ name: "DeleteBuilding", uid: game.ui.buildings[i].uid }); }; }; }; }; if (KeyCode == 84) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { for (var i in game.ui.buildings) { 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") { game.network.sendRpc({ name: "DeleteBuilding", uid: game.ui.buildings[i].uid }); }; }; }; }; if (KeyCode == 89) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (!game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.components.BuildingOverlay.buildingId !== "GoldStash" && game.ui.components.BuildingOverlay.buildingUid) { ws.network.sendRpc({ name: "DeleteBuilding", uid: game.ui.components.BuildingOverlay.buildingUid }); }; }; }; if (KeyCode == 89) { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (!game.ui.components.BuildingOverlay.shouldUpgradeAll && game.ui.components.BuildingOverlay.buildingId !== "GoldStash" && game.ui.components.BuildingOverlay.buildingUid) { ws.network.sendRpc({ name: "DeleteBuilding", uid: game.ui.components.BuildingOverlay.buildingUid }); }; }; }; if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (!ws.automove) { if (KeyCode == 76) { ws.network.sendInput({ up: 1, down: 0 }); }; if (KeyCode == 191) { ws.network.sendInput({ right: 1, left: 0 }); }; if (KeyCode == 190) { ws.network.sendInput({ down: 1, up: 0 }); }; if (KeyCode == 188) { ws.network.sendInput({ left: 1, right: 0 }); }; if (KeyCode == 87) { ws.network.sendInput({ up: 1, down: 0 }); }; if (KeyCode == 68) { ws.network.sendInput({ right: 1, left: 0 }); }; if (KeyCode == 83) { ws.network.sendInput({ down: 1, up: 0 }); }; if (KeyCode == 65) { ws.network.sendInput({ left: 1, right: 0 }); }; }; if (KeyCode == 82) { ws.network.sendRpc({ name: "BuyItem", itemName: "HealthPotion", tier: 1 }); ws.network.sendRpc({ name: "EquipItem", itemName: "HealthPotion", tier: 1 }); }; if (KeyCode == 78) { ws.network.sendRpc({ "name": "EquipItem", "itemName": "PetCARL", "tier": ws.inventory.PetCARL.tier }); ws.network.sendRpc({ "name": "EquipItem", "itemName": "PetMiner", "tier": ws.inventory.PetMiner.tier }); }; if (KeyCode == 77) { ws.network.sendRpc({ "name": "BuyItem", "itemName": "PetRevive", "tier": 1 }); ws.network.sendRpc({ "name": "EquipItem", "itemName": "PetRevive", "tier": 1 }); ws.network.sendRpc({ "name": "BuyItem", "itemName": "PetCARL", "tier": ws.inventory.PetCARL.tier + 1 }); ws.network.sendRpc({ "name": "BuyItem", "itemName": "PetMiner", "tier": ws.inventory.PetMiner.tier + 1 }); }; if (KeyCode == 221) { game.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: ws.psk.response.partyShareKey }); }; }; }; }; }); document.addEventListener('keyup', e => { if (!ws.isclosed) { if (isOnControl) { let KeyCode = e.keyCode; if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (!ws.automove) { if (KeyCode == 76) { ws.network.sendInput({ up: 0 }); }; if (KeyCode == 191) { ws.network.sendInput({ right: 0 }); }; if (KeyCode == 190) { ws.network.sendInput({ down: 0 }); }; if (KeyCode == 188) { ws.network.sendInput({ left: 0 }); }; if (KeyCode == 87) { ws.network.sendInput({ up: 0 }); }; if (KeyCode == 68) { ws.network.sendInput({ right: 0 }); }; if (KeyCode == 83) { ws.network.sendInput({ down: 0 }); }; if (KeyCode == 65) { ws.network.sendInput({ left: 0 }); }; }; }; }; }; }); document.getElementsByClassName("hud")[0].addEventListener("mousedown", function(e) { if (!ws.isclosed) { if (isOnControl) { if (!e.button) { ws.mouseDown = 1; ws.mouseUp = 0; 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) }); }; }; }; }); document.getElementsByClassName("hud")[0].addEventListener("mouseup", function(e) { if (!ws.isclosed) { if (isOnControl) { if (!e.button) { ws.mouseUp = 1; ws.mouseDown = 0; 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) }); }; }; }; }); if (isOnControl) { let t1 = 0; document.getElementsByClassName("hud-shop-item")[t1 + 0].addEventListener('click', function() { ws.network.sendRpc({ name: "BuyItem", itemName: "Pickaxe", tier: ws.inventory.Pickaxe.tier + 1 }); }); document.getElementsByClassName("hud-shop-item")[t1 + 1].addEventListener('click', function() { if (!ws.inventory.Bow) { ws.network.sendRpc({ name: "BuyItem", itemName: "Bow", tier: 1 }); } else { ws.network.sendRpc({ name: "BuyItem", itemName: "Bow", tier: ws.inventory.Bow.tier + 1 }); }; }); document.getElementsByClassName("hud-shop-item")[t1 + 2].addEventListener('click', function() { if (!ws.inventory.Bow) { ws.network.sendRpc({ name: "BuyItem", itemName: "Bow", tier: 1 }); } else { ws.network.sendRpc({ name: "BuyItem", itemName: "Bow", tier: ws.inventory.Bow.tier + 1 }); }; }); document.getElementsByClassName("hud-shop-item")[t1 + 3].addEventListener('click', function() { if (!ws.inventory.Bomb) { ws.network.sendRpc({ name: "BuyItem", itemName: "Bomb", tier: 1 }); } else { ws.network.sendRpc({ name: "BuyItem", itemName: "Bomb", tier: ws.inventory.Bomb.tier + 1 }); }; }); document.getElementsByClassName("hud-shop-item")[t1 + 4].addEventListener('click', function() { ws.network.sendRpc({ name: "BuyItem", itemName: "ZombieShield", tier: ws.inventory.ZombieShield ? (ws.inventory.ZombieShield.tier + 1) : 1 }); }); document.getElementsByClassName("hud-respawn-btn")[0].addEventListener('click', function() { ws.network.sendRpc({ respawn: 1 }); }); document.getElementsByClassName("hud-toolbar-item")[t1 + 0].addEventListener('mouseup', function(e) { if (!e.button) { ws.network.sendRpc({ name: "EquipItem", itemName: "Pickaxe", tier: ws.inventory.Pickaxe.tier }); }; }); document.getElementsByClassName("hud-toolbar-item")[t1 + 1].addEventListener('mouseup', function(e) { if (!e.button) { ws.network.sendRpc({ name: "EquipItem", itemName: "Bow", tier: ws.inventory.Bow.tier }); }; }); document.getElementsByClassName("hud-toolbar-item")[t1 + 2].addEventListener('mouseup', function(e) { if (!e.button) { ws.network.sendRpc({ name: "EquipItem", itemName: "Bow", tier: ws.inventory.Bow.tier }); }; }); document.getElementsByClassName("hud-toolbar-item")[t1 + 3].addEventListener('mouseup', function(e) { if (!e.button) { ws.network.sendRpc({ name: "EquipItem", itemName: "Bomb", tier: ws.inventory.Bomb.tier }); }; }); document.getElementsByClassName("hud-toolbar-item")[t1 + 4].addEventListener('mouseup', function(e) { if (!e.button) { ws.network.sendRpc({ name: "EquipItem", itemName: "HealthPotion", tier: 1 }); }; }); document.getElementsByClassName("hud-toolbar-item")[t1 + 5].addEventListener('mouseup', function(e) { if (!e.button) { ws.network.sendRpc({ name: "EquipItem", itemName: "PetHealthPotion", tier: 1 }); }; }); document.getElementsByClassName("hud-toolbar-item")[t1 + 6].addEventListener("mouseup", function(e) { if (!e.button) { if (isOnControl) { ws.network.sendRpc({ name: "RecallPet" }); ws.network.sendInput({ respawn: 1 }); ws.automove = !ws.automove; if (ws.automove) { window.move = true; } else { window.move = false; }; }; }; }); }; ws.respawn = true; document.getElementsByClassName("10i")[0].addEventListener('click', () => { ws.activebow = !ws.activebow; ws.playerWeapon = ws.myPlayer.weaponName; if (ws.activebow) { if (ws.inventory.Bow) { ws.network.sendRpc({ name: "EquipItem", itemName: "Bow", tier: ws.inventory.Bow.tier }) } else { ws.network.sendRpc({ name: "BuyItem", itemName: "Bow", tier: 1 }) ws.network.sendRpc({ name: "EquipItem", itemName: "Bow", tier: 1 }); }; } else { ws.network.sendRpc({ name: "EquipItem", itemName: ws.playerWeapon, tier: ws.inventory[ws.playerWeapon].tier }); }; }); if (window.aim) { ws.autoaim = true; }; if (window.move) { ws.automove = true; }; if (window.autohiBot) { ws.autohi = true; }; document.getElementsByClassName("1i2")[0].addEventListener('click', () => { ws.autoaim = !ws.autoaim; if (ws.autoaim) { window.aim = true; document.getElementsByClassName("1i2")[0].innerText = "Disable Aim!"; } else { window.aim = false; document.getElementsByClassName("1i2")[0].innerText = "Enable Aim!"; }; }); document.getElementsByClassName("2i2")[0].addEventListener('click', () => { ws.automove = !ws.automove; if (ws.automove) { window.move = true; } else { window.move = false; }; }); document.getElementsByClassName("7i2")[0].addEventListener('click', () => { ws.close(); altElem.remove(); }); document.getElementsByClassName("8i2")[0].addEventListener('click', () => { 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};` }); }); document.getElementsByClassName("21i2")[0].addEventListener('click', () => { isOnControl = !isOnControl; document.getElementsByClassName("21i2")[0].innerText = isOnControl ? 'Uncontrol Alts!' : 'Control Alts!'; }); document.getElementsByClassName("30i2")[0].addEventListener('click', () => { window.lock = !window.lock; if (window.lock) { window.count = 0; delete window.lockPos; document.getElementsByClassName("30i2")[0].innerText = 'Unlock Pos!'; } else if (!window.lock) { document.getElementsByClassName("30i2")[0].innerText = 'Lock Pos!'; ws.network.sendInput({ up: 0, right: 0, left: 0, right: 0 }); }; }); }; if (window.testing) { ws.network.sendRpc({ name: "SetOpenParty", isOpen: 0 }); ws.network.sendRpc({ name: "SetPartyName", partyName: ws.cloneId + '' }); }; if (ws.data.uid) { ws.uid = ws.data.uid; ws.dataInfo = ws.data; ws.players = {}; ws.inventory = {}; ws.buildings = {}; ws.parties = {}; ws.lb = {}; ws.playerUid = game.world.myUid; if (window.allSockets[ws.cloneId - 1]) { window.allSockets[ws.cloneId - 1] = ws; }; ws.network.sendInput({ space: 1 }); ws.network.sendRpc({ name: "BuyItem", itemName: "PetCARL", tier: 1 }); ws.network.sendRpc({ name: "BuyItem", itemName: "PetMiner", tier: 1 }); }; if (ws.data.entities) { if (window.message == ws.cloneId) { game.world.replicator.onEntityUpdate(ws.data); }; if (ws.data.entities[ws.uid].name) { ws.myPlayer = ws.data.entities[ws.uid]; }; for (let g in ws.myPlayer) { if (ws.myPlayer[g] !== ws.data.entities[ws.uid][g] && ws.data.entities[ws.uid][g] !== undefined) { ws.myPlayer[g] = ws.data.entities[ws.uid][g]; }; }; if (ws.myPlayer.petUid) { if (ws.data.entities[ws.myPlayer.petUid]) { if (ws.data.entities[ws.myPlayer.petUid].model) { ws.myPet = ws.data.entities[ws.myPlayer.petUid]; ws.shouldHealPet = false; }; }; for (let g in ws.myPet) { if (ws.data.entities[ws.myPlayer.petUid]) { if (ws.myPet[g] !== ws.data.entities[ws.myPlayer.petUid][g] && ws.data.entities[ws.myPlayer.petUid][g] !== undefined) { ws.myPet[g] = ws.data.entities[ws.myPlayer.petUid][g] }; }; }; }; for (let i in ws.data.entities) { if (ws.data.entities[i].name) { ws.players[i] = ws.data.entities[i]; }; }; for (let i in ws.players) { if (!ws.data.entities[i]) { delete ws.players[i]; }; for (let g in ws.players[i]) { if (ws.players[i][g] !== ws.data.entities[i][g] && ws.data.entities[i][g] !== undefined) { ws.players[i][g] = ws.data.entities[i][g]; }; }; ws.playerTick = ws.players[ws.playerUid]; }; altElem.style.left = (Math.round(ws.myPlayer.position.x) / game.world.getHeight() * 100) + '%'; altElem.style.top = (Math.round(ws.myPlayer.position.y) / game.world.getWidth() * 100) + '%'; }; if (ws.data.name == "DayCycle") { ws.tickData = ws.data.response; ws.isDay = ws.data.response.isDay; }; if (ws.data.tick) { var currentTick = ws.data.tick; var msPerTick = 50; var dayRatio = 0; var nightRatio = 0; var barWidth = 130; if (ws.tickData) { if (ws.tickData.dayEndTick) { if (ws.tickData.dayEndTick > 0) { var dayLength = ws.tickData.dayEndTick - ws.tickData.cycleStartTick; var dayTicksRemaining = ws.tickData.dayEndTick - currentTick; dayRatio = 1 - dayTicksRemaining / dayLength; } } else if (ws.tickData.nightEndTick > 0) { var nightLength = ws.tickData.nightEndTick - ws.tickData.cycleStartTick; var nightTicksRemaining = ws.tickData.nightEndTick - currentTick; dayRatio = 1; nightRatio = 1 - nightTicksRemaining / nightLength; }; var currentPosition = (dayRatio * 1 / 2 + nightRatio * 1 / 2) * -barWidth; var offsetPosition = currentPosition + barWidth / 2; if (offsetPosition) { ws.dayTicker = Math.round(offsetPosition); }; }; }; if (ws.data.name == "PartyInfo") { ws.partyInfo = ws.data.response; setTimeout(() => { for (let i in ws.partyInfo) { if (ws.partyInfo[i].playerUid == ws.uid && ws.partyInfo[i].isLeader) { ws.network.sendRpc({ name: "SetPartyMemberCanSell", uid: game.world.myUid, canSell: 1 }); ws.network.sendRpc({ name: "SetOpenParty", isOpen: 1 }); setTimeout(() => { ws.network.sendRpc({ name: "SetPartyName", partyName: ws.cloneId + '' }); }, 1000); }; }; }, 1750); }; if (ws.data.name == "SetItem") { ws.inventory[ws.data.response.itemName] = ws.data.response; if (!ws.inventory[ws.data.response.itemName].stacks) { delete ws.inventory[ws.data.response.itemName]; }; if (ws.data.response.itemName == "ZombieShield" && ws.data.response.stacks) { ws.network.sendRpc({ name: "EquipItem", itemName: "ZombieShield", tier: data.response.tier }); }; }; if (ws.data.name == "PartyApplicant") { ws.partyApplicant = ws.data.response; if (ws.partyApplicant.applicantUid == game.world.myUid) { ws.network.sendRpc({ name: "PartyApplicantDecide", applicantUid: game.world.myUid, accepted: 1 }); }; }; if ((game.world.entities[ws.uid] && game.world.getEntityByUid(ws.uid))) { for (let socket in window.allSockets) { let wss = window.allSockets[socket]; if (wss) { let { uid, cloneId } = wss; if (((game.world.entities[uid] && game.world.getEntityByUid(uid))) && (game.world.getEntityByUid(uid)).targetTick) (game.world.getEntityByUid(uid)).targetTick.name = (cloneId).toString(); }; }; }; if (ws.data.name == "ReceiveChatMessage") { ws.message = ws.data; if (ws.message.response.message == "!move" && ws.message.response.uid == game.world.myUid) { ws.mousemove = true; }; if (ws.message.response.message == "!unmove" && ws.message.response.uid == game.world.myUid) { ws.mousemove = false; }; if (ws.message.response.message == `#` && ws.message.response.uid == game.world.myUid) { let word = ws.message.response.message; let uid = ''; for (let i = 0; i < 30; i++) { 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)) { uid += word[i] }; uid = Math.round(uid); ws.playerUid = uid; }; }; if (ws.message.response.message == "!aim" && ws.message.response.uid == game.world.myUid) { window.move = true; }; if (ws.message.response.message == "!unaim" && ws.message.response.uid == game.world.myUid) { window.move = false; }; if (ws.message.response.message == "!c" && ws.message.response.uid == game.world.myUid) { isOnControl = true; }; if (ws.message.response.message == `!c ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { isOnControl = true; }; if (ws.message.response.message == "!!c" && ws.message.response.uid == game.world.myUid) { isOnControl = false; }; if (ws.message.response.message == `!!c ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { isOnControl = false; }; if (ws.message.response.message == `!psk ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: `${ws.cloneId}: ${ws.psk.response.partyShareKey}` }); }; if (ws.message.response.message == "!stats") { 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)};` }); }; if (ws.message.response.message == "!s" && ws.message.response.uid == game.world.myUid) { 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};` }); }; if (ws.message.response.message == "!h" && ws.message.response.uid == game.world.myUid) { ws.autohi = !ws.autohi; if (ws.autohi) { window.autohiBot = true; } else { window.autohiBot = false; }; }; if (ws.message.response.message == "!ahrc" && ws.message.response.uid == game.world.myUid) { ws.ahrc = true; }; if (ws.message.response.message == `!ahrc ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.ahrc = true; }; if (ws.message.response.message == "!!ahrc" && ws.message.response.uid == game.world.myUid) { ws.ahrc = false; }; if (ws.message.response.message == `!!ahrc ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.ahrc = false; }; if (ws.message.response.message == "!space" && ws.message.response.uid == game.world.myUid) { ws.network.sendInput({ space: 0 }) ws.network.sendInput({ space: 1 }); }; if (ws.message.response.message == `${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.network.sendInput({ space: 0 }) ws.network.sendInput({ space: 1 }); ws.network.sendRpc({ name: 'JoinPartyByShareKey', partyShareKey: game.ui.getPlayerPartyShareKey() }); }; if (ws.message.response.message == `!dc` && ws.message.response.uid == game.world.myUid) { ws.network.sendPacket({}, {}); }; if (ws.message.response.message == `!dc ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.network.sendPacket({}, {}); }; if (ws.message.response.message == "!upgrade" && ws.message.response.uid == game.world.myUid) { for (let i in ws.buildings) { if (ws.buildings[i].type == "GoldMine") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }) } setTimeout(() => { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }) }, 100); }; }; if (ws.message.response.message == "!autobomb" && ws.message.response.uid == game.world.myUid) { ws.raid = true; }; if (ws.message.response.message == "!!autobomb" && ws.message.response.uid == game.world.myUid) { ws.raid = false; }; if (ws.message.response.message == `!respawn` && ws.message.response.uid == game.world.myUid) { ws.respawn = true; }; if (ws.message.response.message == `!respawn ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.respawn = true; }; if (ws.message.response.message == "!!respawn" && ws.message.response.uid == game.world.myUid) { ws.respawn = false; }; if (ws.message.response.message == `!!respawn ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.respawn = false; }; if (ws.message.response.message == `!join ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: game.ui.getPlayerPartyShareKey() + "" }); }; if (ws.message.response.message.startsWith(`!joinPsk ${ws.cloneId}`) && ws.message.response.uid == game.world.myUid) { let args = ws.message.response.message.split(' '); ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: args[2] }); }; if (ws.message.response.message == `!leave` && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "LeaveParty" }); }; if (ws.message.response.message == `!leave ${ws.cloneId}` && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "LeaveParty" }); }; if (ws.message.response.message == "!up" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded all!" }); for (let i in ws.buildings) { ws.network.sendRpc({ name: "BuyItem", itemName: ws.buildings[i].uid }); }; }; if (ws.message.response.message == "!upStash" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded stash!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "GoldStash") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up1" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded wall(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "Wall") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up2" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded door(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "Door") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up3" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded slowtrap(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "SlowTrap") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up4" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded arrow(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "ArrowTower") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up5" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded cannon(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "CannonTower") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up6" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded Melee(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "MeeleTower") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up7" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded bomb(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "BombTower") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up8" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded mage(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "MagicTower") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up9" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded gold mine(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "GoldMine") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "!up0" && ws.message.response.uid == game.world.myUid) { ws.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: "Successfully upgraded harvester(s)!" }); for (let i in ws.buildings) { if (ws.buildings[i].type == "ResourceHarvester") { ws.network.sendRpc({ name: "UpgradeBuilding", uid: ws.buildings[i].uid }); }; }; }; if (ws.message.response.message == "q" && ws.message.response.uid == game.world.myUid) { ws.network.sendInput({ left: 1 }); ws.network.sendInput({ right: 0 }); } if (ws.message.response.message == "d" && ws.message.response.uid == game.world.myUid) { ws.network.sendInput({ right: 1 }); ws.network.sendInput({ left: 0 }); } if (ws.message.response.message == "z" && ws.message.response.uid == game.world.myUid) { ws.network.sendInput({ up: 1 }); ws.network.sendInput({ down: 0 }); } if (ws.message.response.message == "s" && ws.message.response.uid == game.world.myUid) { ws.network.sendInput({ down: 1 }); ws.network.sendInput({ up: 0 }); } if (ws.message.response.message == "f" && ws.message.response.uid == game.world.myUid) { ws.network.sendInput({ left: 0 }); ws.network.sendInput({ right: 0 }); ws.network.sendInput({ down: 0 }); ws.network.sendInput({ up: 0 }); } } if (ws.autohi) { if (ws.data.entities) { let sus = setInterval(() => { let msg = ""; let msg2 = ""; for (let i = 0; i < 15; i++) { msg += `&#${Math.random() * 2500 + 100 | 0};`; } for (let i = 0; i < 15; i++) { msg2 += `&#${Math.random() * 2500 + 100 | 0};`; } ws.network.sendRpc({ name: "SendChatMessage", message: `${msg}${msg2}`, channel: "Local" }); }); }; }; if (ws.data.name == "Leaderboard") { for (let i in ws.data.response) { ws.lb[ws.data.response[i].rank + 1] = ws.data.response[i]; } if (ws.ahrc) { for (let uid in ws.buildings) { let obj = ws.buildings[uid]; ws.network.sendRpc({ name: "CollectHarvester", uid: obj.uid }); if (obj.type == "Harvester" && obj.tier == 1) { ws.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.uid, deposit: 20 / 2 }); } if (obj.type == "Harvester" && obj.tier == 2) { ws.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.uid, deposit: 30 / 2 }); } if (obj.type == "Harvester" && obj.tier == 3) { ws.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.uid, deposit: 35 / 2 }); } if (obj.type == "Harvester" && obj.tier == 4) { ws.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.uid, deposit: 50 / 2 }); } if (obj.type == "Harvester" && obj.tier == 5) { ws.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.uid, deposit: 60 / 2 }); } if (obj.type == "Harvester" && obj.tier == 6) { ws.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.uid, deposit: 70 / 2 }); } if (obj.type == "Harvester" && obj.tier == 7) { ws.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.uid, deposit: 120 / 2 }); } if (obj.type == "Harvester" && obj.tier == 8) { ws.network.sendRpc({ name: "AddDepositToHarvester", uid: obj.uid, deposit: 150 / 2 }); } }; }; }; if (ws.respawn) { ws.network.sendInput({ respawn: 1 }); if (ws.raid) { ws.space = true; ws.network.sendRpc({ name: 'BuyItem', itemName: 'Bomb', tier: 1 }); ws.network.sendRpc({ name: 'EquipItem', itemName: 'Bomb', tier: 1 }); }; }; if (ws.space) { ws.network.sendInput({ space: 0 }) ws.network.sendInput({ space: 1 }); }; if (ws.data.name == "LocalBuilding") { for (let i in ws.data.response) { ws.buildings[ws.data.response[i].uid] = ws.data.response[i]; if (ws.buildings[ws.data.response[i].uid].dead) { delete ws.buildings[ws.data.response[i].uid]; }; }; }; if (ws.data.name == "AddParty") { if (ws.addparties) { ws.parties[ws.data.response.partyId] = ws.data.response; }; }; if (ws.data.name == "RemoveParty") { if (ws.addparties) { if (ws.parties[ws.data.response.partyId].partyId) { delete ws.parties[ws.data.response.partyId]; }; }; }; if (ws.data.name == "PartyShareKey") { ws.psk = ws.data; altElem.style.display = (ws.psk.response.partyShareKey == game.ui.getPlayerPartyShareKey()) ? "none" : "block"; }; if (window.mousemove) { let myPlayer = game.ui.playerTick; let mouseToWorld = game.renderer.screenToWorld(game.ui.mousePosition.x, game.ui.mousePosition.y); if (ws.myPlayer) { if (ws.myPlayer.position) { ws.network.sendInput({ mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + mouseToWorld.x) * 100, (-ws.myPlayer.position.y + mouseToWorld.y) * 100) }) if (1 == 1) { if (ws.myPlayer.position.y - mouseToWorld.y > 10) { ws.network.sendInput({ down: 0 }); } else { ws.network.sendInput({ down: 1 }); }; if (-ws.myPlayer.position.y + mouseToWorld.y > 10) { ws.network.sendInput({ up: 0 }); } else { ws.network.sendInput({ up: 1 }); }; if (-ws.myPlayer.position.x + mouseToWorld.x > 10) { ws.network.sendInput({ left: 0 }); } else { ws.network.sendInput({ left: 1 }); }; if (ws.myPlayer.position.x - mouseToWorld.x > 10) { ws.network.sendInput({ right: 0 }); } else { ws.network.sendInput({ right: 1 }); }; }; }; }; }; if (window.autoraid) { if (ws.myPlayer) { if (findNearestAltToStash().uid == ws.uid) { if (Object.values(game.ui.buildings).length > 0 && !ws.myPlayer.dead) { ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: game.ui.getPlayerPartyShareKey() + "" }); } else { for (let i in window.allSockets) { if (Object.values(window.allSockets[i].buildings).length > 0 && !ws.myPlayer.dead) { ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: window.allSockets[i].psk.response.partyShareKey + "" }); }; }; }; ws.network.sendInput({ space: 0 }); ws.network.sendInput({ space: 1 }); }; }; }; if (ws.data.entities) { if (ws.letbotsjoin) { if (ws.myPlayer.gold > 100) { ws.network.sendRpc({ name: 'LeaveParty' }); } else { ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: game.ui.getPlayerPartyShareKey() + "" }); }; }; if (ws.letbotsjoin2) { if (ws.myPlayer.gold > 500) { ws.network.sendRpc({ name: 'LeaveParty' }); } else { ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: game.ui.getPlayerPartyShareKey() + "" }); }; }; if (ws.letbotsjoin3) { if (ws.myPlayer.gold > 8500) { ws.network.sendRpc({ name: 'LeaveParty' }); } else { ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: game.ui.getPlayerPartyShareKey() + "" }); }; }; }; if (window.lock) { addEventListener('mousedown', () => { window.count++; window.count == 1 && ( window.lockPos = { x: game.renderer.screenToWorld(Object.freeze(game.ui.mousePosition).x, 0).x, y: game.renderer.screenToWorld(0, Object.freeze(game.ui.mousePosition).y).y } ); }); let pos = window.lockPos; if (!pos) return; if (ws.myPlayer) { ((position) => { let x = Math.round(position.x); let y = Math.round(position.y); ws.network.sendInput({ mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + x) * 100, (-ws.myPlayer.position.y + y) * 100) }); let myX = Math.round(ws.myPlayer.position.x); let myY = Math.round(ws.myPlayer.position.y); let offset = 6; if ((-myX + x > offset) || (window.lock)) { ws.network.sendInput({ left: 0 }); } else { ws.network.sendInput({ left: 1 }); }; if ((myX - x > offset) || (window.lock)) { ws.network.sendInput({ right: 0 }); } else { ws.network.sendInput({ right: 1 }); }; if ((-myY + y > offset) || (window.lock)) { ws.network.sendInput({ up: 0 }); } else { ws.network.sendInput({ up: 1 }); }; if ((myY - y > offset) || (window.lock)) { ws.network.sendInput({ down: 0 }); } else { ws.network.sendInput({ down: 1 }); }; })(pos); }; }; if (ws.automove) { let playerPos = game.world.entities[game.world.myUid].targetTick.position; let x = Math.round(playerPos.x); let y = Math.round(playerPos.y); let pos = { x: x, y: y }; if (ws.myPlayer) { ((position) => { let x = Math.round(position.x); let y = Math.round(position.y); ws.network.sendInput({ mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + x) * 100, (-ws.myPlayer.position.y + y) * 100) }) if (!window.lock) { let myX = Math.round(ws.myPlayer.position.x); let myY = Math.round(ws.myPlayer.position.y); let offset = 6; if ((-myX + x > offset) || (window.lock)) { ws.network.sendInput({ left: 0 }); } else { ws.network.sendInput({ left: 1 }); }; if ((myX - x > offset) || (window.lock)) { ws.network.sendInput({ right: 0 }); } else { ws.network.sendInput({ right: 1 }); }; if ((-myY + y > offset) || (window.lock)) { ws.network.sendInput({ up: 0 }); } else { ws.network.sendInput({ up: 1 }); }; if ((myY - y > offset) || (window.lock)) { ws.network.sendInput({ down: 0 }); } else { ws.network.sendInput({ down: 1 }); }; }; })(pos); }; }; if (ws.autoaim) { let myPlayer = game.ui.playerTick; let mouseToWorld = game.renderer.screenToWorld(game.ui.mousePosition.x, game.ui.mousePosition.y); if (ws.myPlayer) { if (ws.myPlayer.position) { ws.network.sendInput({ mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + mouseToWorld.x) * 100, (-ws.myPlayer.position.y + mouseToWorld.y) * 100) }); let offset = 6; if (ws.myPlayer.position.y - mouseToWorld.y > offset) { ws.network.sendInput({ down: 0 }); } else { ws.network.sendInput({ down: 0 }); }; if (-ws.myPlayer.position.y + mouseToWorld.y > offset) { ws.network.sendInput({ up: 0 }); } else { ws.network.sendInput({ up: 0 }); }; if (-ws.myPlayer.position.x + mouseToWorld.x > offset) { ws.network.sendInput({ left: 0 }); } else { ws.network.sendInput({ left: 0 }); }; if (ws.myPlayer.position.x - mouseToWorld.x > offset) { ws.network.sendInput({ right: 0 }); } else { ws.network.sendInput({ right: 0 }); }; }; }; }; if (ws.data.opcode == 0) { if (heal) { if (ws.myPlayer) { let playerHealth = (ws.myPlayer.health / ws.myPlayer.maxHealth) * 100; if (playerHealth <= 10) { ws.network.sendRpc({ name: "EquipItem", itemName: "HealthPotion", tier: 1 }); }; }; if (ws.myPet) { let petHealth = (ws.myPet.health / ws.myPet.maxHealth) * 100; if (petHealth <= 10) { if (!ws.shouldHealPet) { ws.shouldHealPet = true; setTimeout(() => { ws.shouldHealPet = false; }, 300); ws.network.sendRpc({ name: "BuyItem", itemName: "PetHealthPotion", tier: 1 }); ws.network.sendRpc({ name: "EquipItem", itemName: "PetHealthPotion", tier: 1 }); }; }; }; }; ws.network.sendRpc({ name: "BuyItem", itemName: "HealthPotion", tier: 1 }); }; if (ws.activebow) { ws.network.sendInput({ space: 0 }); ws.network.sendInput({ space: 1 }); }; switch (ws.data.opcode) { case 4: ws.send(iframeWindow.game.network.codec.encode(6, {})); iframe.remove(); ws.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: game.ui.playerPartyShareKey }); break; }; }; }); }; function searchProperties(obj, keyword, seen = new Set()) { let result = []; if (seen.has(obj) || obj instanceof CSSStyleSheet) { return result; } seen.add(obj); for (let prop in obj) { if (prop.includes(keyword) && !/\d/.test(prop)) { result.push(prop); } if (typeof obj[prop] === "object") { let subResult = searchProperties(obj[prop], keyword, seen); for (let subProp of subResult) { result.push(prop + "." + subProp); } } } return result; } let result = searchProperties(game.world, "position"); console.log(result);
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址