您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
The best public script for zombs.io
当前为
// ==UserScript== // @name Zombs.io Bad Hack // @namespace https://tampermonkey.net/ // @version 4.2 // @description The best public script for zombs.io // @author vn_Havy // @match http://zombs.io/* // @require https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js // ==/UserScript== 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').forEach(el => el.remove()); document.getElementsByClassName('hud-intro-name')[0].setAttribute('maxlength', 29); document.getElementsByClassName('hud-party-tag')[0].setAttribute('maxlength', 49); 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(function() { 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 gold = game.ui.playerTick.gold let pickaxe = game.ui.inventory.Pickaxe if (pickaxe.tier == 1 && gold >= 1000) { shopShortcut("Pickaxe", 2) return } if (pickaxe.tier == 2 && gold >= 3000) { shopShortcut("Pickaxe", 3); return } if (pickaxe.tier == 3 && gold >= 5000) { shopShortcut("Pickaxe", 4); return } if (pickaxe.tier == 4 && gold >= 8000) { shopShortcut("Pickaxe", 5); return } if (pickaxe.tier == 5 && gold >= 24000) { shopShortcut("Pickaxe", 6); return } if (pickaxe.tier == 6 && gold >= 90000) { shopShortcut("Pickaxe", 7); return } else if (game.ui.playerWeaponName !== "Pickaxe") { equipItem("Pickaxe", game.ui.inventory.Pickaxe.tier) } } function buySpear() { let gold = game.ui.playerTick.gold let spear = game.ui.inventory.Spear if (!spear && gold >= 1400) { shopShortcut("Spear", 1) return } if (spear.tier == 1 && gold >= 2800) { shopShortcut("Spear", 2) return } if (spear.tier == 2 && gold >= 5600) { shopShortcut("Spear", 3) return } if (spear.tier == 3 && gold >= 11200) { shopShortcut("Spear", 4) return } if (spear.tier == 4 && gold >= 22500) { shopShortcut("Spear", 5) return } if (spear.tier == 5 && gold >= 45000) { shopShortcut("Spear", 6) return } if (spear.tier == 6 && gold >= 90000) { shopShortcut("Spear", 7) return } else if (game.ui.playerWeaponName !== "Spear"){ equipItem("Spear", game.ui.inventory.Spear.tier) } } function buyBow() { let gold = game.ui.playerTick.gold let bow = game.ui.inventory.Bow if (!bow && gold >= 100) { shopShortcut("Bow", 1) return } if (bow.tier == 1 && gold >= 400) { shopShortcut("Bow", 2) return } if (bow.tier == 2 && gold >= 2000) { shopShortcut("Bow", 3) return } if (bow.tier == 3 && gold >= 7000) { shopShortcut("Bow", 4) return } if (bow.tier == 4 && gold >= 24000) { shopShortcut("Bow", 5) return } if (bow.tier == 5 && gold >= 30000) { shopShortcut("Bow", 6) return } if (bow.tier == 6 && gold >= 90000) { shopShortcut("Bow", 7) return } else if (game.ui.playerWeaponName !== "Bow"){ equipItem("Bow", game.ui.inventory.Bow.tier) } } function buyBomb() { let gold = game.ui.playerTick.gold let bomb = game.ui.inventory.Bomb if (!bomb && gold >= 100) { shopShortcut("Bomb", 1) return } if (bomb.tier == 1 && gold >= 400) { shopShortcut("Bomb", 2) return } if (bomb.tier == 2 && gold >= 3000) { shopShortcut("Bomb", 3) return } if (bomb.tier == 3 && gold >= 5000) { shopShortcut("Bomb", 4) return } if (bomb.tier == 4 && gold >= 24000) { shopShortcut("Bomb", 5) return } if (bomb.tier == 5 && gold >= 50000) { shopShortcut("Bomb", 6) return } if (bomb.tier == 6 && gold >= 90000) { shopShortcut("Bomb", 7) return } else if (game.ui.playerWeaponName !== "Bomb"){ equipItem("Bomb", game.ui.inventory.Bomb.tier) } } function buyZombieShield() { let gold = game.ui.playerTick.gold let shield = game.ui.inventory.ZombieShield if (!shield && gold >= 1000) { buyItem("ZombieShield", 1) return } if (shield.tier == 1 && gold >= 3000) { buyItem("ZombieShield", 2) return } if (shield.tier == 2 && gold >= 7000) { buyItem("ZombieShield", 3) return } if (shield.tier == 3 && gold >= 14000) { buyItem("ZombieShield", 4) return } if (shield.tier == 4 && gold >= 18000) { buyItem("ZombieShield", 5) return } if (shield.tier == 5 && gold >= 22000) { buyItem("ZombieShield", 6) return } if (shield.tier == 6 && gold >= 24000) { buyItem("ZombieShield", 7) return } if (shield.tier == 7 && gold >= 30000) { buyItem("ZombieShield", 8) return } if (shield.tier == 8 && gold >= 45000) { buyItem("ZombieShield", 9) return } if (shield.tier == 9 && gold >= 70000) { buyItem("ZombieShield", 10) return } } //Iframe start document.querySelector('#hud').insertAdjacentHTML('beforeend', ` <div class="hud-menu-more"> <button class="bad-btn bad-cyan" id="newalt">New Alt</button> <button class="bad-btn bad-red" id="delalt">Delete Alt</button> <input class="bad-textbox" id="delid" style="width: 10%" placeholder="Alt's Id"> <button class="bad-btn bad-red" id="delallalt">Delete All Alt</button> </div> <style> .hud-menu-more{ text-align: center; display: none; position: fixed; padding: 20px 0px; top: 48%; left: 50%; width: 1100px; height: 740px; transform: translate(-50%, -52%); background: rgba(0, 0, 0, 0.6); color: #eee; z-index: 5; } .frames{ width: 100%; height: 100%; } .frameholder{ width: 1060px; height: 680px; margin: auto; padding: 10px 0px; overFlow: hidden; } .hud-menu-icons .hud-menu-icon[data-type=Iframe]::before { background-image: url("https://media.discordapp.net/attachments/870020008128958525/876133010360107048/unknown.png"); background-size: 30px; } </style> `) function moreMenu() { let mm = document.getElementsByClassName("hud-menu-more")[0]; if(["none", ""].includes(mm.style.display)) { mm.style.display = "block"; for(let i of Array.from(document.getElementsByClassName("hud-menu"))) { if(i.classList.contains('hud-menu-more')) { return; }; i.style.display = "none"; }; } else { mm.style.display = "none"; }; }; document.getElementsByClassName("hud-menu-icons")[0].insertAdjacentHTML("beforeend", `<div class="hud-menu-icon" data-type="Iframe"></div>`); document.querySelectorAll(".hud-menu-icon")[3].addEventListener("click", moreMenu) document.getElementsByClassName("hud-menu-more")[0].style.overflow = "auto"; for (let i of Array.from(document.querySelector("#hud").childNodes)) { if (i.className != "hud-menu-more" && !document.querySelector("#hud-menu-icons > div:nth-child(4)")) { i.addEventListener('click', function() { if (document.getElementsByClassName("hud-menu-more")[0].style.display == "block") { document.getElementsByClassName("hud-menu-more")[0].style.display = "none"; }; }); }; }; for (let i of Array.from(document.getElementsByClassName("hud-menu-icon"))) { if (i.dataset.type !== "Iframe") { i.addEventListener('click', function() { if (document.getElementsByClassName("hud-menu-more")[0].style.display == "block") { document.getElementsByClassName("hud-menu-more")[0].style.display = "none"; }; }); }; }; let numOfAlts = 0 document.getElementById("newalt").addEventListener("click", function() { numOfAlts++; let newDiv = document.createElement('div'); newDiv.className = "frameholder"; newDiv.id = "frame" + numOfAlts; let newIframe = document.createElement('iFrame'); newIframe.className = "frames"; newIframe.src = `http://zombs.io/#/${game.options.serverId}/${game.ui.playerPartyShareKey}`; document.getElementsByClassName("hud-menu-more")[0].insertBefore(newDiv, null); newDiv.appendChild(newIframe); }); document.getElementById("delallalt").addEventListener("click", function F_deleteAllAlt() { for (let i = 1; i <= numOfAlts; i++) { document.getElementById("frame" + i).remove(); } numOfAlts = 0; }); document.getElementById("delalt").addEventListener("click", function F_deleteAlt() { let deletealtnum = parseInt(document.getElementById('delid').value); document.getElementById("frame" + deletealtnum).remove(); for (let i = 1; i <= (numOfAlts - deletealtnum); i++) { document.getElementById("frame" + (deletealtnum + i)).id = "frame" + (deletealtnum + i - 1); } numOfAlts--; }); //Iframe end let mapTimeouts = []; 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 mapMouseX; let mapMouseY; let hasBeenInWorld = false; game.network.addEnterWorldHandler(function () { if(!hasBeenInWorld) { hasBeenInWorld = true setInterval(() => { document.querySelector("#coords") .innerText = `X: ${game.world.localPlayer.entity.targetTick.position.x}, Y: ${game.world.localPlayer.entity.targetTick.position.y}` }, 16) createCoordinates() } setTimeout(() => { document.querySelectorAll(".hud-shop-item-social")[0].childNodes[1].href = "javascript:void(0)" document.querySelectorAll(".hud-shop-item-social")[0].childNodes[1].removeAttribute('target') setTimeout(() => { document.querySelectorAll(".hud-shop-social-twitter.is-disabled")[0].click() },2000) }, 4000); }) var mousemove; addEventListener('mousemove', (e) => { mousemove = e; }) 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 } var autoRespawn = false 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" }); }, 1000); }; 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.components.PopupOverlay.showHint(`Added Marker`); }; }; }); function getEntitiesByModel(type) { let entities = [] Object.entries(game.world.entities) .forEach((item => { if (item[1].targetTick.model == type) { entities.push(item) } })) return entities; } function moveUp() { game.inputPacketScheduler.scheduleInput({ down: 0, up: 1 }) } function moveDown() { game.inputPacketScheduler.scheduleInput({ up: 0, down: 1 }) } function moveLeft() { game.inputPacketScheduler.scheduleInput({ right: 0, left: 1 }) } function moveRight() { game.inputPacketScheduler.scheduleInput({ left: 0, right: 1 }) } var danceCounter = 0 var danceRandom = true var botMode = false var danceInterval = setInterval(() => { if (botMode) { if (danceCounter < moves.length) { moves[danceCounter]() if (danceRandom) { danceCounter = Math.floor(Math.random() * moves.length) } else { danceCounter++ } } else { danceCounter = 0; } } }, 500) var respawnInterval = setInterval(() => { if (document.querySelector('.hud-respawn').style.display == "block" && autoRespawn) { document.querySelector('.hud-respawn-btn').click() } }, 50) var moves = [moveUp, moveRight, moveDown, moveLeft] window.useSamePI = false window.showpriv = true if (game.world.inWorld === false) { game.network.addPreEnterWorldHandler(() => { setInterval(() => { document.getElementsByClassName('hud-party-grid')[0].innerHTML = ''; function checkStatus(party) { if (window.showpriv == true) { if(party.isOpen == 1) { return '<a style = "color: #00e700;opacity: 0.8;">[Open]<a/>'; } else if(!party.isOpen == 1) { return '<a style = "color:red;opacity: 0.8;">[Private]<a/>'; } } else { return ''; } }; let all_parties = game.ui.parties; 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'; } if(parties.partyName == document.getElementsByClassName('hud-party-tag')[0].value) { tab.classList.add('is-active'); } if (parties.isOpen !== 1 && window.showpriv == false) { tab.style.display = 'none'; } //function for requesting tab.addEventListener('click', function() { let isJoining = true; if(tab.isPublic == 1 && tab.members < 4) { isJoining = true; game.network.sendRpc({ name: 'JoinParty', partyId: Math.floor(tab.id) }); } else if(!tab.isPublic == 1) { isJoining = false; game.ui.components.PopupOverlay.showHint("You can't request private parties!"); } }); document.getElementsByClassName('hud-party-grid')[0].appendChild(tab); }; },5000); }); } window.isInMenu = false; function movePlayer(e) { if (!_isInChatbox) { switch (e.toLowerCase() .replaceAll(' ', '')) { case "a": Game.currentGame.network.sendInput({ left: 1 }) break; case "d": Game.currentGame.network.sendInput({ right: 1 }) break; case "w": Game.currentGame.network.sendInput({ up: 1 }) break; case "s": Game.currentGame.network.sendInput({ down: 1 }) break; } } } var lpinterval = setInterval(function () { // loaded player info, ahrc, isInMenu, noob = chatbot document.querySelector('#lpi') .innerText = "Loaded Player Info: " + JSON.stringify(window.loadedIDS()) window.isInMenu = document.querySelector('#hud-menu-settings') .style.display == "block" ? true : false }, 250) let settingsHTML = ` <div style="text-align: center"> <button class="bad-btn bad-magenta" id="lagspam-btn">Lag Spam Off</button> <button class="bad-btn bad-magenta" id="spamchatbtn">Split Chat</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%"> <hr> <input type="text" class="bad-textbox" value="150" id="sell-input" style="width: 15%" placeholder="100-250ms"> <button id="sellall" class="bad-btn bad-red">Sell All</button> <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> <br> <button id="sellarrow" class="bad-btn bad-red">Arrow</button> <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> <hr> <button class="bad-btn bad-yellow" id="menu-leaveparty-btn">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> <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> <hr> <button class="bad-btn bad-blue" id="clearchat-btn">Clear Chat Off</button> <button class="bad-btn bad-blue" id="autoupgradeall-btn">Upgrade Off</button> <button class="bad-btn bad-blue" id="togglespinner">Spinner Off</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="toggleahrc">AHRC Off</button> <button class="bad-btn bad-blue" id="toggleresp">Respawn Off</button> <button class="bad-btn bad-blue" id="togglebot">Bot Off</button> <button class="bad-btn bad-blue" id="toggleswing">Swing Off</button> <button class="bad-btn bad-blue" id="togglerb">Rebuild Off</button> <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="hidess" class="bad-btn bad-pink">Hide Shop Shortcut</button> <hr> <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">Hide All</button> <button id="freezegame" class="bad-btn bad-cyan">Stop Game</button> <hr> <button class="bad-btn bad-gray" onclick="Game.currentGame.network.disconnect()">Disconnect</button> </div> <hr> <p style="font-size:14px;">Advanced Player Info?</p><input type="checkbox" id="advancedlpi"> <br> <p style="font-size:14px;">Zoom On Scroll?</p><input type="checkbox" id="zos"> <br> <p id="lpi">Loaded Player Info: </p> <style> .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-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; } </style> ` document.getElementById("hud-menu-settings").childNodes[3].innerHTML = "Bad Hack by ︵ℌαʋү༉" document.getElementsByClassName("hud-settings-grid")[0].innerHTML = settingsHTML; let cssMain = ` #hud-menu-shop { top: 58%; left: 51%; width: 690px; height: 450px; margin: -350px 0 0 -350px; padding: 20px 20px 20px 20px; } .hud-menu-shop .hud-shop-grid { height: 330px; } #hud-menu-settings { top: 55%; left: 48%; width: 780px; height: 500px; margin: -350px 0 0 -350px; padding: 20px 20px 20px 20px; } .hud-menu-settings .hud-settings-grid { width: 750px; height: 420px; `; let stylesMain = document.createElement("style"); stylesMain.appendChild(document.createTextNode(cssMain)); document.head.appendChild(stylesMain); stylesMain.type = "text/css"; document.getElementById('lagspam-btn').addEventListener('click', lagSpam) document.getElementById('lagspam-btn').addEventListener('click', lagSpambtn) document.getElementById("spamallparty-btn").addEventListener("click", spamAllParty); document.getElementById("spamallparty-btn").addEventListener("click", spamAllPartybtn); 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("spampartybyid-btn").addEventListener("click", spamPartyByIDbtn); 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("toggleaim").addEventListener("click", toggleAim) document.getElementById("togglerb").addEventListener("click", toggleRebuild); document.getElementById("togglespinner").addEventListener("click", spinnerbtn); document.getElementById("togglespinner").addEventListener("click", F_spinner); 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("hidess").addEventListener("click", hideShopShortcut); 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.querySelector('#clearchat-btn').addEventListener('click', clearChat) document.querySelector('#clearchat-btn').addEventListener('click', clearChatbtn) document.querySelector('#menu-leaveparty-btn').addEventListener('click', onLeaveParty) document.querySelector('#spamchatbtn').addEventListener('click', spamchatclick) 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 == "Show All") { document.getElementById("hideall").innerHTML = "Hide All" game.renderer.scene.setVisible(true) } else { document.getElementById("hideall").innerHTML = "Show All" game.renderer.scene.setVisible(false) } } 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() } } let sellUid = [] function sellAllByType(type) { let buildings = Object.values(game.ui.buildings) for (let i = 0; i < buildings.length; i++){ if (Object.values(Object.values(game.ui.buildings)[i])[2] == type){ sellUid.push(Object.values(Object.values(game.ui.buildings)[i])[4]) } } let sellInterval = setInterval(() => { if (sellUid.length > 0 && game.ui.playerPartyCanSell) { game.network.sendRpc({ name: "DeleteBuilding", uid: parseInt(sellUid.shift()) }) } else { clearInterval(sellInterval) } },document.getElementById("sell-input").value); } document.getElementById("sellall").addEventListener('click', function() { Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete all towers?", 1e4, function() { let buildings = Object.values(game.ui.buildings) for (let i = 0; i < buildings.length; i++){ if (Object.values(Object.values(game.ui.buildings)[i])[2] != "GoldStash"){ sellUid.push(Object.values(Object.values(game.ui.buildings)[i])[4]) } } let sellInterval = setInterval(() => { if (sellUid.length > 0 && game.ui.playerPartyCanSell) { game.network.sendRpc({ name: "DeleteBuilding", uid: parseInt(sellUid.shift()) }) } else { clearInterval(sellInterval) } },document.getElementById("sell-input").value); }) }) function onLeaveParty() { Game.currentGame.network.sendRpc({ name: "LeaveParty" }) } 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 hideShopShortcut() { if (document.getElementsByClassName("hud-top-center")[0].style.display === "none" && document.getElementById("hidess").innerHTML == "Show Shop Shortcut"){ document.getElementsByClassName("hud-top-center")[0].style.display = "block"; document.getElementById("hidess").innerHTML = "Hide Shop Shortcut"; } else { document.getElementsByClassName("hud-top-center")[0].style.display = "none"; document.getElementById("hidess").innerHTML = "Show Shop Shortcut"; } } 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 spamAllPartybtn() { if (document.getElementById("spamallparty-btn").innerHTML == "Spam All Party On") { document.getElementById("spamallparty-btn").innerHTML = "Spam All Party Off"; } else { document.getElementById("spamallparty-btn").innerHTML = "Spam All Party On"; } } var partyspam = null; function spamAllParty() { clearInterval(partyspam); if (partyspam !== null) { partyspam = null; } else { partyspam = setInterval(function() { var party = document.getElementsByClassName('hud-party-link'); for (var i = 0; i < party.length; i++) { var link = party[i]; link.click(); } var confirm = document.getElementsByClassName("btn btn-green hud-confirmation-accept"); for (var j = 0; j < confirm.length; j++) { var accept = confirm[j]; accept.click(); } },10); } } 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(); } },10); } } 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]; Game.currentGame.network.sendRpc({ name: "UpgradeBuilding", uid: obj.fromTick.uid }) } },1000) } } function spamPartyByIDbtn() { if (document.getElementById("spampartybyid-btn").innerHTML == "Spam Party By ID On") { document.getElementById("spampartybyid-btn").innerHTML = "Spam Party By ID Off"; } else { document.getElementById("spampartybyid-btn").innerHTML = "Spam Party By ID On"; } } var spampartyid = null; function spamPartyByID() { clearInterval(spampartyid); if (spampartyid !== null) { spampartyid = null; } else { spampartyid = setInterval(function() { game.network.sendRpc({ name: "JoinParty", partyId: parseInt(document.querySelector("#party-id-input").value) }) },0) } } function clearChatbtn() { if (document.getElementById("clearchat-btn").innerHTML == "Clear Chat On") { document.getElementById("clearchat-btn").innerHTML = "Clear Chat Off"; } else { document.getElementById("clearchat-btn").innerHTML = "Clear Chat On"; } } var shouldClearChat = null; function clearChat() { clearInterval(shouldClearChat); if (shouldClearChat !== null) { shouldClearChat = null; } else { shouldClearChat = setInterval(function () { document.querySelector('.hud-chat-messages').innerHTML = "" },500) } } function spinnerbtn() { if (document.getElementById("togglespinner").innerHTML == "Spinner On") { document.getElementById("togglespinner").innerHTML = "Spinner Off"; } else { document.getElementById("togglespinner").innerHTML = "Spinner On"; } } var spinner = null; function F_spinner() { clearInterval(spinner); if (spinner !== null) { spinner = null; } else { let yaw = 0 spinner = setInterval(function () { game.inputPacketCreator.lastAnyYaw = yaw; game.network.sendPacket(3, {mouseMoved: yaw}); yaw += 60 if (yaw >= 359) yaw = 0 },40) } } function toggleRebuild() { if (!shouldAutoRebuild) { shouldAutoRebuild = true document.getElementById("togglerb").innerHTML = "Rebuild On"; } else { 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 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" } } let lockedYaw let shouldLockYaw = false let shouldAutoRebuild = false let autoSwing = false let shouldAHRC = false let shouldAutoAim = false let shouldAutoHealPet = true let shouldAutoRevivePet = true let shouldAutoEvolvePet = true let shouldAutoHealPlayer = true let petSpawned = false let myPet = {}; let myPlayer = {}; game.network.addEntityUpdateHandler((data) => { if (game.world.inWorld) { if (game.ui.playerTick.petUid !== 0) { petSpawned = true; if (game.world.entities[game.ui.playerTick.petUid]) { let petHealth = (myPet.health/myPet.maxHealth) * 100 myPet = game.world.entities[game.ui.playerTick.petUid].fromTick; if (shouldAutoHealPet && petHealth < document.getElementById("healpetinput").value && petHealth > 0 && game.ui.playerTick.gold >= 100 && shouldAutoHealPet) { if (!window.healPet) { shopShortcut("PetHealthPotion", 1) window.healPet = true; setTimeout(() => { window.healPet = 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 && shouldAutoRevivePet && !game.world.entities[game.ui.playerTick.petUid] && myPlayer.health > 0) { shopShortcut("PetRevive", 1) } myPlayer = game.world.entities[game.ui.playerTick.uid].fromTick let playerHealth = (myPlayer.health/myPlayer.maxHealth) * 100; if (playerHealth <= document.getElementById("healplayerinput").value && playerHealth > 0 && game.ui.playerTick.gold >= 100 && shouldAutoHealPlayer) { if (!window.playerTimeout_1) { shopShortcut("HealthPotion", 1) window.playerTimeout_1 = true; setTimeout(() => { window.playerTimeout_1 = 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" && entities[i].fromTick.model !== "NeutralTier1")) { 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}); } } }) game.network.addRpcHandler("LocalBuilding", (data) => { if (shouldAutoRebuild) { for(let e of data) { if(!!e.dead) { let snb = e; snb.name = "MakeBuilding"; snb.yaw = 0; game.network.sendRpc(snb); }; }; }; }); function loadedPlayers() { // loaded player names var returns = [] Object.entries(Game.currentGame.world.entities) .forEach((stuff => { if (stuff[1].targetTick.entityClass == "PlayerEntity" && ((stuff[1].targetTick.uid !== Game.currentGame.world.entities[Game.currentGame.world.getMyUid()].targetTick.uid) || window.useSamePI)) { returns.push(stuff[1].targetTick.name) } })) return returns; } window.loadedIDS = function () { var returns = [] Object.entries(Game.currentGame.world.entities) .forEach((stuff => { if (stuff[1].targetTick.entityClass == "PlayerEntity" && ((stuff[1].targetTick.uid !== Game.currentGame.world.entities[Game.currentGame.world.getMyUid()].targetTick.uid) || window.useSamePI)) { var h = stuff[1].targetTick if (document.querySelector('#advancedlpi') .checked) { returns.push(JSON.stringify(h)) } else { returns.push(stuff[1].targetTick.name + " - Wood: " + Game.currentGame.world.entities[stuff[1].targetTick.uid].targetTick.wood + ", Stone: " + Game.currentGame.world.entities[stuff[1].targetTick.uid].targetTick.stone + ", Gold: " + Game.currentGame .world.entities[stuff[1].targetTick.uid].targetTick.gold) } } })) return returns; } function spamchatclick() { // used to be called spam chat, its split chat now var user = document.querySelector('#spamchat') .value splitChatLength(user) } let dimension = 1; const onWindowResize = () => { if (!window.isInMenu && window.zoomonscroll) { 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 onWindowResize(); var transparentMenu = false; window.onresize = onWindowResize; window.onwheel = e => { if (e.deltaY > 0) { dimension += 0.09; onWindowResize(); } else if (e.deltaY < 0) { dimension -= 0.09; onWindowResize(); } } var _isInChatbox = false; function doNewSend(sender) { if (sender[0] == "ch") { Game.currentGame.network.sendRpc({ name: "SendChatMessage", channel: "Local", message: sender[1][0] }) } } 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)); }; function splitChatLength(text) { let i = 0; window.chatSetInterval = setInterval(function () { if (i < text.length) { doNewSend(['ch', [text.slice(i, i + 45)]]) i += 45; } else { clearInterval(window.chatSetInterval) } }, 1050) } addEventListener('keydown', function (e) { if(document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (e.key == "=") { game.ui.getComponent("PopupOverlay").showHint( 'Press [/] for menu, left click somewhere on the minimap to automatically move there, press [?] to lock angle, type !boss for boss wave, !marker to leave a mark on map.', 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('#advancedlpi') .addEventListener('change', function (e) { var THIS_LPI_EVENT = this; }) document.querySelector('#zos') .addEventListener('change', function (e) { var THIS_ZOS_EVENT = this; window.zoomonscroll = THIS_ZOS_EVENT.checked }) document.querySelector('#togglebot') .addEventListener('click', function () { botMode = !botMode this.innerText = botMode ? "Bot On" : "Bot Off" }) document.querySelector('#toggleresp') .addEventListener('click', function () { autoRespawn = !autoRespawn this.innerText = autoRespawn ? "Respawn On" : "Respawn Off" }) document.querySelector('#togglespmch') .addEventListener('click', function () { pauseChatSpam(document.querySelector('#spamchat').value) this.innerText = isSpamming ? "Spam Chat On" : "Spam Chat Off" }) function moveNext(targetX, targetY) { let player = game.world.localPlayer.entity.targetTick.position if (player.x <= targetX && player.y <= targetY) { game.network.sendInput({ right: 1, left: 0, up: 0, down: 1 }) } else if (player.x >= targetX && player.y <= targetY) { game.network.sendInput({ right: 0, left: 1, up: 0, down: 1 }) } else if (player.x <= targetX && player.y >= targetY) { game.network.sendInput({ right: 1, left: 0, up: 1, down: 0 }) } else if (player.x >= targetX && player.y >= targetY) { game.network.sendInput({ right: 0, left: 1, up: 1, down: 0 }) } } function isXYCloseTo(x, y) { let playerTargetTick = game.world.localPlayer.entity.targetTick.position; const radius = 50; return ((x <= (playerTargetTick.x + radius) && x >= (playerTargetTick.x - radius)) && (y <= (playerTargetTick.y + radius) && y >= (playerTargetTick.y - radius))); } let moveIsActive = false; function goToPos(x, y) { moveIsActive = true; window.goToPosInterval = setInterval(() => { moveNext(x, y) }, 250) window.checkPosInterval = setInterval(() => { if (moveIsActive) { if (isXYCloseTo(x, y)) { game.network.sendInput({ left: 0, right: 0, up: 0, down: 0 }) game.ui.getComponent('PopupOverlay') .showHint('Finished moving!', 1e4) moveIsActive = false; mapTimeouts.forEach((item => { clearTimeout(item) })) clearInterval(window.goToPosInterval) clearInterval(window.checkPosInterval) } } else { game.network.sendInput({ left: 0, right: 0, up: 0, down: 0 }) doNewSend(['ch', ['MapMover: Unexpectedly shut down']]) mapTimeouts.forEach((item => { clearTimeout(item) })) game.ui.getComponent('PopupOverlay') .showHint('MapMover unexpectedly stopped', 1e4) clearInterval(window.checkPosInterval) } }, 10) let g = setTimeout(() => { clearInterval(window.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.', 1e4) moveIsActive = false; game.network.sendInput({ left: 0, right: 0, up: 0, down: 0 }) }, 240000) mapTimeouts.push(g) } 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('mousemove', function (e) { var offset = $('#hud-map-container') .offset(); // Then refer to mapMouseX = e.pageX - offset.left; mapMouseY = e.pageY - offset.top; }) document.querySelector("#hud-map-container") .addEventListener('click', function (e) { if (!moveIsActive) { mapTimeouts.forEach((item => { clearTimeout(item) })) let yn = "y" game.ui.getComponent('PopupOverlay').showConfirmation('Are you sure you want to move to X:' + (mapMouseX * 170.4390625) + ",Y:" + (mapMouseY * 171.9977142857143) + '? You can right click the minimap to cancel this at any time.', 5e3, function() { if (yn.toLowerCase() == "y") { game.ui.getComponent('PopupOverlay').showHint('Starting MapMove...', 3e3) let moveToMapX = (mapMouseX * 170.4390625) let moveToMapY = (mapMouseY * 171.9977142857143) goToPos(moveToMapX, moveToMapY) } }, function() { game.ui.getComponent('PopupOverlay').showHint('OK, did not start MapMove', 3e3) }) } else { moveIsActive = false; clearInterval(window.goToPosInterval) clearInterval(window.checkPosInterval) game.network.sendInput({ left: 0, right: 0, up: 0, down: 0 }) mapTimeouts.forEach((item => { clearTimeout(item) })) game.ui.getComponent('PopupOverlay').showHint('MapMove is already in process. Restarting and moving to X:' + (mapMouseX * 170.4390625) + ",Y:" + (mapMouseY * 171.9977142857143) + '. You can right click the minimap to cancel this at any time.', 5e3) let yn = "y" if (yn.toLowerCase() == "y") { let moveToMapX = (mapMouseX * 170.4390625) let moveToMapY = (mapMouseY * 171.9977142857143) goToPos(moveToMapX, moveToMapY) } } }) document.querySelector('#hud-map-container').addEventListener('contextmenu', function(ev) { ev.preventDefault(); if(moveIsActive) { game.ui.getComponent('PopupOverlay').showConfirmation('Are you sure you want to cancel the current MapMove process?', 5e3, function() { moveIsActive = false; clearInterval(window.goToPosInterval) clearInterval(window.checkPosInterval) game.network.sendInput({ left: 0, right: 0, up: 0, down: 0 }) game.ui.getComponent('PopupOverlay').showHint('Successfully stopped MapMover.', 3e3) mapTimeouts.forEach((item => { clearTimeout(item) })) }, function() { game.ui.getComponent('PopupOverlay').showHint('OK, did not stop MapMover.', 3e3) }) } else { game.ui.getComponent('PopupOverlay').showHint('You are not in a MapMover process right now. Left click somewhere on the minimap to start one.') } return false; }, false); !game.world.removeEntity2 && (game.world.removeEntity2 = game.world.removeEntity); game.world.removeEntity = (uid) => { if (game.world.entities[uid].fromTick.model == "Tree" || game.world.entities[uid].fromTick.model == "Stone" || game.world.entities[uid].fromTick.model == "NeutralCamp") return; game.world.removeEntity2(uid); }