// ==UserScript== // @name Fahx and coldness mod leaked // @namespace http://tampermonkey.net/ // @version 0.3 // @description leaked ad this works // @author fahx and coldness // @match http://zombs.io/ // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/446264/Fahx%20and%20coldness%20mod%20leaked.user.js // @updateURL https://update.greasyfork.icu/scripts/446264/Fahx%20and%20coldness%20mod%20leaked.meta.js // ==/UserScript== document.querySelectorAll('.ad-unit, .hud-intro-stone, .hud-intro-corner-bottom-left, .hud-intro-canvas, .hud-intro-tree, .hud-intro-error, .hud-intro-form > label > span, .hud-intro-footer > a, .hud-intro-more-games, .hud-intro-social, .hud-intro-guide, .hud-intro-left, .hud-respawn-corner-bottom-left, .hud-respawn-twitter-btn, .hud-respawn-facebook-btn').forEach(el => el.remove()); document.getElementsByClassName('hud-party-tag')[0].setAttribute('maxlength', 49); document.getElementsByClassName('hud-intro-name')[0].setAttribute('maxlength', 29); let themeColor = 'rgb(61 115 157 / 55%)'; let imageArray1 = [``, ``] function getRandomItem(array) { return array[Math.floor(Math.random() * array.length)]; }; let css2 = ` .hud-intro::before { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/924865286719557672/BG_Mirai_Light.webp'); background-size: cover; } .hud-intro .hud-intro-form .hud-intro-play { width: 150px; height: 150px; transform: rotate(45deg); border: 3px solid white; margin: -150px 0 0 500px; background-image: url(https://cdn.discordapp.com/attachments/854376044522242059/925724425796616192/hmm.webp); background-size: 145%; padding: 0 0 0 0; background-position-y: center; background-position-x: center; transition: all 0.15s ease-in-out; } .hud-intro .hud-intro-form .hud-intro-play:hover { background-image: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url(https://cdn.discordapp.com/attachments/854376044522242059/925724425796616192/hmm.webp); } .hud-intro .hud-intro-form .hud-intro-name { line-height: none; margin: 0 0 -80px 170px; border: 3px solid white; background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url(https://cdn.discordapp.com/attachments/854376044522242059/925743376505118720/light2.webp); background-position-x: 130px; } .hud-intro .hud-intro-form .hud-intro-server { display: block; line-height: unset; margin: 130px 0 0 170px; border: 3px solid white; background-image: linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)), url(https://cdn.discordapp.com/attachments/854376044522242059/925743376505118720/light2.webp); } .hud-intro .hud-intro-main .hud-intro-left, .hud-intro .hud-intro-main .hud-intro-form, .hud-intro .hud-intro-main .hud-intro-guide { background: rgba(0, 0, 0, 0); margin: 0 530px 0 0; } .switch { position: relative; display: inline-block; width: 60px; height: 34px; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: .4s; transition: .4s; } .slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; -webkit-transition: .4s; transition: .4s; } input:checked + .slider { background-color: lightpink; } input:focus + .slider { box-shadow: 0 0 1px lightpink; } input:checked + .slider:before { -webkit-transform: translateX(26px); -ms-transform: translateX(26px); transform: translateX(30px); } /* Rounded sliders */ .slider.round { border-radius: 34px; } .slider.round:before { border-radius: 50%; } .btn:hover { cursor: pointer; } .btn-blue { background-color: #3177b0; } .btn-pale { background-color: #ffffff; color: black; text-shadow: none; } .btn-blue:hover .btn-blue:active { background-color: #4fa7ee; } .border-white { border: 3px solid white; border-radius: 4px; background: none; transition: all 0.15s ease-in-out; } .border-white:hover { cursor: pointer; } .border-red { border: 3px solid orangered; border-radius: 4px; background: none; transition: all 0.15s ease-in-out; } .border-red:hover { cursor: pointer; } .hud-zipz-tabs { position: relative; height: 40px; line-height: 40px; margin: 0 20px -18px 0; } .hud-zipz123-link-tab { display: block; float: left; padding: 0 14px; margin: 0 1px -10px 0; font-size: 14px; background: rgba(0, 0, 0, 0.4); color: rgba(255, 255, 255, 0.4); transition: all 0.15s ease-in-out; line-height: 40px; border-width: 0; } .hud-zipz123-link-tab:hover { background: rgba(0, 0, 0, 0.2); color: #eee; } .zipz123-is-active { background: rgba(0, 0, 0, 0.2); color: #eee; } ::-webkit-scrollbar { width: 12px; height: 0px; border-radius: 10px; background-color: rgba(0, 0, 0, 0); } ::-webkit-scrollbar-thumb { border-radius: 10px; background-image: url(https://cdn.discordapp.com/attachments/854376044522242059/924927754326142976/whiteslider.png); } .hud-health-bar::after { content: ''; } .hud-chat .hud-chat-message { white-space: unset; word-break: break-word; } .hud-chat .hud-chat-messages { max-height: 340px; min-height: 35px; } .hud-chat { height: 280px; width: 450px; } .hud-leaderboard { word-break: break-word; } #hud-menu-party { top: 51%; width: 610px; height: 480px; background-color: ${themeColor}; border: 5px solid white; } .hud-menu-party .hud-party-grid .hud-party-link.is-active { background: lightblue !important; } .hud-menu-party .hud-party-visibility { margin: 10px 0 0 0; width: 125px; } .hud-popup-overlay .hud-popup-confirmation .hud-confirmation-actions .btn.btn-green { background: #649db0; } #hud-menu-shop { top: 54.5%; left: 50.5%; width: 690px; height: 500px; background-color: ${themeColor}; border: 5px solid white; margin: -350px 0 0 -350px; padding: 20px 20px 20px 20px; z-index: 20; } .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip { background: #649db0; } #hud-menu-settings { background-color: ${themeColor}; border: 5px solid white; } .hud-respawn { opacity: 0.90 } .hud-respawn .hud-respawn-info .hud-respawn-btn { background: #2ba0c2; } .hud-respawn .hud-respawn-info .hud-respawn-btn:hover { background: #4fc3e5; } #hud-building-overlay { background-color: ${themeColor}; border: 1px solid white; } .btn.btn-green.hud-building-upgrade { background-color: #83b4c1; } .hud-building-overlay .hud-tooltip-health .hud-tooltip-health-bar { background: #a1d5e3; } .hud-building-overlay .hud-building-upgrade.is-disabled { background: lightblue !important; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: .4s; transition: .4s; } .slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; -webkit-transition: .4s; transition: .4s; } .box { display: block; width: 100%; height: 50px; line-height: 34px; padding: 8px 14px; margin: 0 0 10px; background: #eee; border: 0; font-size: 14px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); border-radius: 4px; } .codeIn, .joinOut { height: 50px; } .hud-menu-zipp3 { display: none; position: fixed; top: 50%; left: 50%; width: 800px; height: 700px; margin: -350px 0 0 -400px; padding: 20px; background-color: rgb(61 115 157 / 55%); color: #eee; border-radius: 4px; border: 5px solid white; z-index: 15; } .hud-menu-zipp3 h3 { display: block; margin: 0; line-height: 20px; } .hud-menu-zipp3 .hud-zipp-grid3 { display: block; height: 580px; padding: 10px; margin-top: 18px; background: rgba(0, 0, 0, 0.2); overflow-x: auto; } .hud-spell-icons .hud-spell-icon[data-type="Zippity3"]::before { background-image: url("https://cdn.discordapp.com/avatars/789082958287470613/e2c0a285017f3db9d25b576c04a6abd4.webp?size=1024"); } * { font-family: Hammersmith One; } .hud-menu-zipp3 .hud-the-tab { position: relative; height: 40px; line-height: 40px; margin: 20px; border: 0px solid rgb(0, 0, 0, 0); } .hud-menu-zipp3 .hud-the-tab { display: block; float: left; padding: 0 14px; margin: 0 1px 0 0; font-size: 14px; background: rgba(0, 0, 0, 0.4); color: rgba(255, 255, 255, 0.4); transition: all 0.15s ease-in-out; } .hud-menu-zipp3 .hud-the-tab:hover { background: rgba(0, 0, 0, 0.2); color: #eee; cursor: pointer; } * { font-family: Hammersmith One; } #zsd { display: flex; position: absolute; top: -20px; z-index: 10; right: 300px; } .zsd-icons { display: block; position: relative; width: 56px; height: 56px; margin: 0 0 1px; background: rgba(0, 0, 0, 0.2); color: rgba(255, 255, 255, 0.7); font-size: 12px; text-align: center; transition: all 0.15s ease-in-out; border: none; } .zsd-icons:hover { color: #eee; cursor: pointer; } .hud-e4-anchor { position: relative; display: block; float: left; width: 100%; height: 64px; margin: 0 0 10px; padding: 10px 10px 10px 64px; text-decoration: none; background: rgba(255, 255, 255, 0.1); color: #eee; border-radius: 3px; transition: all 0.15s ease-in-out; text-align: left; } .hud-e4-anchor::after { content: ' '; display: block; position: absolute; top: 13px; left: 16px; bottom: 16px; width: 32px; height: 32px; background-size: contain; background-position: center; background-repeat: no-repeat; opacity: 0.9; transition: all 0.15s ease-in-out; } .hud-e4-anchor[data-item=record]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/916849867370938450/WHITE.png'); } .hud-e4-anchor[data-item=build]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/916853186491469914/ALSO_WHITE.png'); } .hud-e4-anchor[data-item=deletebase]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/916854543977955348/WHITE_CIRCLE.png'); } /* snap title i copied from stackoverflow lol */ .snapItem { position: absolute; } .topItem { position: sticky; top: 0; } `; let styles = document.createElement("style"); styles.appendChild(document.createTextNode(css2)); document.head.appendChild(styles); styles.type = "text/css"; function getElem(DOMClass) { return document.getElementsByClassName(DOMClass); } function getId(DOMId) { return document.getElementById(DOMId); } getElem("hud-intro-play")[0].innerText = ""; getElem("hud-intro-form")[0].insertAdjacentHTML("beforeend", ` Play `); getElem('hud-intro-main')[0].insertAdjacentHTML("beforeend", ` `); getElem('hud-intro-corner-bottom-right')[0].insertAdjacentHTML("afterbegin", `
`); let spell = document.createElement("div"); spell.classList.add("hud-spell-icon"); spell.setAttribute("data-type", "Zippity3"); spell.classList.add("hud-zipp3-icon"); getElem("hud-spell-icons")[0].appendChild(spell); getElem("hud-center-left")[0].style.zIndex = "19"; getElem("hud-bottom-left")[0].style.zIndex = "19"; getElem("hud-chat")[0].style.zIndex = "19"; document.addEventListener('keyup', function (e) { if (e.key === "Enter" && game.ui.playerTick.dead === 1) { game.ui.components.Chat.startTyping(); }; }); let bossAlert = document.createElement('p'); bossAlert.innerHTML = ` Boss wave incoming`; bossAlert.style.display = "none"; bossAlert.style.color = "white"; bossAlert.style.opacity = '0.5'; getElem('hud-top-center')[0].appendChild(bossAlert); let modHTML = `

`; document.body.insertAdjacentHTML("afterbegin", modHTML); let zipz123 = getElem("hud-menu-zipp3")[0]; zipz123.style.overflow = "auto"; getElem("hud-zipp3-icon")[0].addEventListener("click", function() { if(zipz123.style.display == "none" || zipz123.style.display == "") { getId("hud-menu-shop").style.display = "none"; getId("hud-menu-party").style.display = "none"; getId("hud-menu-settings").style.display = "none"; zipz123.style.display = "block"; } else { zipz123.style.display = "none"; }; }); let _menu = getElem("hud-menu-icon"); let _spell = getElem("hud-spell-icon"); let allIcon = [ _menu[0], _menu[1], _menu[2], _spell[0], _spell[1] ]; for (let elem of allIcon) { elem.addEventListener("click", function() { if(zipz123.style.display == "block") { zipz123.style.display = "none"; }; }); }; getElem('hud')[0].addEventListener('mousedown', () => { zipz123.style.display = "none"; }) function quickcast(elem, identifier) { getElem(elem)[0].addEventListener("click", function() { displayAllToNone(); getElem(elem)[0].classList.add("zipz123-is-active"); getElem(identifier)[0].style.display = "block"; }) } quickcast("BD", "i"); quickcast("PL", "i2"); quickcast("OT", "i3"); quickcast("WE", "i4"); function displayAllToNone() { getElem("BD")[0].classList.remove("zipz123-is-active"); getElem("PL")[0].classList.remove("zipz123-is-active"); getElem("OT")[0].classList.remove("zipz123-is-active"); getElem("WE")[0].classList.remove("zipz123-is-active"); getElem("i")[0].style.display = "none"; getElem("i2")[0].style.display = "none"; getElem("i3")[0].style.display = "none"; getElem("i4")[0].style.display = "none"; }; window.addEventListener("keydown", e => { switch (e.keyCode) { case 220: /* key \ */ document.getElementsByClassName("hud-zipp3-icon")[0].click(); } }); getElem("hud-zipp-grid3")[0].innerHTML = `

${getRandomItem(imageArray1)}

X:

Y:









Control







Options



Delete





Utilities








`; displayAllToNone(); getElem("BD")[0].click(); window.addName = name => { if (name == "") return; let id = `u${Math.floor(Math.random() * 9999)}`; localStorage.names = `${localStorage.names || ""}
`; }; (window.refreshNS = () => { getId("namesaver").innerHTML = `
${localStorage.names || "

It's empty...

"}

`; })(); const entirePop = getElem("hud-intro-wrapper")[0].children[1]; const popRequest = new XMLHttpRequest(); popRequest.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { let data = JSON.parse(popRequest.responseText); entirePop.innerHTML = `People in game now: ${data.players} - ${(data.players / data.capacity * 100).toFixed(2)}% / ${data.capacity}`; let servers = ["US East", "US West", "Europe", "Asia", "Australia", "South America"]; for (let i in servers) { game.ui.components.Intro.serverElem.children[i].setAttribute("label", `${servers[i]}: Population: ${data.regions[servers[i]].players}`); } } }; popRequest.open("GET", "http://zombs.io/capacity", true); popRequest.send(); getElem("hud-intro-play")[0].addEventListener("click", () => { getId('playspan').style.display = "none"; }) let zoomLevel = 1; let dimension = 1; let upd = () => { 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; }; const onWindowResize = () => { if (window.zoomonscroll) { upd(); } } // Zoom by Apex, modified by eh onWindowResize(); window.onresize = onWindowResize; window.onwheel = e => { if (e.deltaY > 0) { dimension += 0.02; } else if (e.deltaY < 0) { dimension -= 0.02; } onWindowResize(); } window.zoom = val => { dimension = val; upd(); }; getElem('hud-top-right')[0].insertAdjacentHTML("beforeend", ` `); window.zoomOut = () => { zoomLevel += 1; }; window.zoomIn = () => { zoomLevel -= 1; }; window.resetZoom = () => { zoomLevel = 1; }; // actual code starts here const options = { AHRC: false, wallBlock: false, rebuild: false, autoUpgrade: false, autoBow: false, autoAim: false, accept: false, kick: false, spamJoin: false, spamChat: false, heal: true, revive: true, clearMsgs: false, recordMacro: false, macro: false, stopMacro: false, moving: false, // socket options autofill: false, aito: false, finder: false, antiAttack: false, randomParty: false, rwp: false, ar: false, } let getRss = false; let allowed1 = true; const petTokens = [100, 100, 100, 100, 200, 200, 300, Infinity]; const spearCostArray = [1400, 4200, 9800, 21000, 43500, 88500, 178500]; let checkedHarvesters = new Set(); let workingHarvesters = new Set(); // auto rb + auto upgrade let buildings = {}; let savedBase = {}; let toBeReplaced = {}; let toBeUpgraded = {}; let autoUpgradeList = {}; // ws indentifiers let altname = 1; function randomCharacterGenerator(textLength = 29) { let availableCharacters = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890~!@#$%^&*()_+`-=[]{};':,./<>?\|"; let randomtext = ""; for (let i = 0; i < textLength; i++) randomtext += availableCharacters[Math.floor(Math.random() * availableCharacters.length)]; return randomtext; } function garbageGenerator(garbageLength = 25) { let garbageCharacters = "ƱلِفبَاءتَاءثَاءجِيمØÙŽØ§Ø¡Ø®ÙŽØ§Ø¡Ø¯ÙŽØ§Ù„ذَالرَاءزَايسِينشِينصَادضَادطَاءظَاءعَيْنغَيْنفَاءقَافكَافلاَممِيمنُونهَاءوَاويَاءهَمْزةأَلِف هَمْزةوَاو هَمْزةيَاء هَمْزةأَلِف مَدَّة تاء مربوطةالف Ù…Ù‚ØµÙˆØ±Ø©Æ¾Æ´È¶ÈµÈ´Æ¿È¹Î¨Ï¥Ï È¿Ï‰ÏŽÏ¼Ğ–Ğ‰Î¶Æ»ÏªÏ€Ï¡Ô€ÔÔ‚ÔƒÔ„Ô…Ô†Ô‡ÔˆÔ‰ÔŠÔ‹ÔŒÔÔŽÔÔÔ‘Ô’Ô“Ô”Ô•Ô–Ô—Ô˜Ô™ÔšÔ›ÔœÔÔžÔŸÔ Ô¡Ô¢Ô£Ô¤Ô¥Ô¦Ô§Ô¨Ô©ÔªÔ«Ô¬ÔԮԯϏη"; let garbage = ""; for (let i = 0; i < garbageLength; i++) garbage += garbageCharacters[Math.floor(Math.random() * garbageCharacters.length)]; return garbage; }; const 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 msToTime(s) { // Pad to 2 or 3 digits, default is 2 function pad(n, z) { z = z || 2; return ('00' + n).slice(-z); } var ms = s % 1000; s = (s - ms) / 1000; var secs = s % 60; s = (s - secs) / 60; var mins = s % 60; var hrs = (s - mins) / 60; return pad(hrs) + ':' + pad(mins) + ':' + pad(secs) + '.' + pad(ms, 3); } function copyText(text) { var textArea = document.createElement("textarea"); textArea.value = text; textArea.style.top = "0"; textArea.style.left = "0"; textArea.style.position = "fixed"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; console.log('Fallback: Copying text command was ' + msg); } catch (err) { console.error('Fallback: Oops, unable to copy', err); } document.body.removeChild(textArea); } Game.currentGame.network.addEntityUpdateHandler(() => { if (game.world.inWorld) { if (options.AHRC) { for (let uid in game.world.entities) { const entity = game.world.entities[uid]; if (entity.targetTick.model == "Harvester" && entity.targetTick.partyId == game.ui.playerPartyId) { if (checkedHarvesters.has(uid)) { if (entity.fromTick.stone !== entity.targetTick.stone || entity.fromTick.wood !== entity.targetTick.wood) { workingHarvesters.add(uid); }; } else { checkedHarvesters.add(uid); game.network.sendRpc({name: "AddDepositToHarvester", uid: parseInt(uid), deposit: 0.69}); }; }; if (workingHarvesters.has(uid)) { let amount = entity.fromTick.tier * 0.05 - 0.02; game.network.sendRpc({name: "AddDepositToHarvester", uid: parseInt(uid), deposit: amount}); game.network.sendRpc({name: "CollectHarvester", uid: parseInt(uid)}); }; }; } if (options.autoBow) { game.network.sendInput({space: 0}) game.network.sendInput({space: 1}) } if (options.kick) { if (!window.kick) { window.kick = true; if (game.ui.playerPartyMembers.length > 1) { Game.currentGame.network.sendRpc({name: "KickParty", uid: Game.currentGame.ui.playerPartyMembers[1].playerUid}); }; setTimeout(() => { window.kick = false; }, 1500); } } if (options.clearMsgs) { for (let i = 0; i < getElem('hud-chat-message').length; i++) getElem('hud-chat-message')[0].remove(); } if (options.spamChat && getId('4i2').value) { game.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `${garbageGenerator()} ${getId('4i2').value} ${garbageGenerator()}`}); } if (options.spamJoin) { game.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: getId('6i2').value + ""}); } if (options.autoAim) { window.targets = []; let entities = game.renderer.npcs.attachments; for (let i in entities) { if (getId('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.allSockets.length) { for (let i of window.allSockets) { let alt = window.targets.find(e => e.uid == i.uid); if (!!alt) window.targets.splice(window.targets.indexOf(alt), 1); } } 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 (!window.zoomonscroll) { window.zoom(zoomLevel); }; if (getRss) { !allowed1 && (allowed1 = true); } if (getRss || allowed1) { for (let i in game.renderer.npcs.attachments) { if (game.renderer.npcs.attachments[i].fromTick.name) { let player = game.renderer.npcs.attachments[i]; let wood_1 = counter(player.targetTick.wood); let stone_1 = counter(player.targetTick.stone); let gold_1 = counter(player.targetTick.gold); let token_1 = counter(player.targetTick.token); let px_1 = counter(player.targetTick.position.x); let py_1 = counter(player.targetTick.position.y); let timeout_1 = ""; if (getRss && !player.targetTick.oldName) { player.targetTick.oldName = player.targetTick.name; player.targetTick.oldWood = wood_1; player.targetTick.oldStone = stone_1; player.targetTick.oldGold = gold_1; player.targetTick.oldToken = token_1; player.targetTick.oldPX = px_1; player.targetTick.oldPY = py_1; player.targetTick.info = ` ${player.targetTick.oldName}; score: ${player.targetTick.score.toLocaleString()} UID: ${player.targetTick.uid} W: ${wood_1}, S: ${stone_1}, G: ${gold_1}, T: ${token_1} x: ${Math.round(player.targetTick.position.x)}, y: ${Math.round(player.targetTick.position.y)} partyId: ${Math.round(player.targetTick.partyId)} timeDead: ${msToTime(player.targetTick.timeDead)} ${player.targetTick.isPaused ? "On Timeout" : ""} `; player.targetTick.name = game.renderer.npcs.attachments[i].targetTick.info; } if (!getRss && player.targetTick.oldName) { player.targetTick.info = player.targetTick.oldName; player.targetTick.name = game.renderer.npcs.attachments[i].targetTick.info; player.targetTick.oldName = null; } if (getRss) { if (player.targetTick.oldGold !== gold_1 || player.targetTick.oldWood !== wood_1 || player.targetTick.oldStone !== stone_1 || player.targetTick.oldToken !== token_1 || player.targetTick.oldPX !== px_1 || player.targetTick.oldPY !== py_1) { player.targetTick.oldWood = wood_1; player.targetTick.oldStone = stone_1; player.targetTick.oldGold = gold_1; player.targetTick.oldToken = token_1; player.targetTick.oldPX = px_1; player.targetTick.oldPY = py_1; player.targetTick.info = ` ${player.targetTick.oldName}; score: ${player.targetTick.score.toLocaleString()} UID: ${player.targetTick.uid} W: ${wood_1}, S: ${stone_1}, G: ${gold_1}, T: ${token_1} x: ${Math.round(player.targetTick.position.x)}, y: ${Math.round(player.targetTick.position.y)} partyId: ${Math.round(player.targetTick.partyId)} timeDead: ${msToTime(player.targetTick.timeDead)} ${player.targetTick.isPaused ? "On Timeout" : ""} `; player.targetTick.name = game.renderer.npcs.attachments[i].targetTick.info; }; }; }; }; }; if (!getRss) { allowed1 = false; }; }); document.addEventListener("keydown", e => { if(document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (e.key == '-') { getRss = !getRss; } } }) Game.currentGame.ui._events.playerPetTickUpdate.push(pet => { if (options.revive && pet.health <= 0) { Game.currentGame.network.sendRpc({ name: "BuyItem", itemName: "PetRevive", tier: 1 }); Game.currentGame.network.sendRpc({ name: "EquipItem", itemName: "PetRevive", tier: 1 }); } if (options.heal) { let petHealth = (pet.health / pet.maxHealth) * 100; if (petHealth <= 20) { game.network.sendRpc({ name: "BuyItem", itemName: "PetHealthPotion", tier: 1 }); game.network.sendRpc({ name: "EquipItem", itemName: "PetHealthPotion", tier: 1 }); }; }; if (window.tokenHeal && pet.health < pet.maxHealth && game.ui.playerTick.token >= petTokens[pet.tier - 1]) { game.network.sendRpc({ name: "BuyItem", itemName: pet.model, tier: pet.tier + 1 }); }; }); game.ui._events.playerTickUpdate.push(player => { if (options.heal) { let playerHealth = (player.health / player.maxHealth) * 100; if (playerHealth <= 20) healPlayer(); } }); game.network.addRpcHandler("PartyApplicant", e => { if (options.accept) { game.network.sendRpc({name: "PartyApplicantDecide", applicantUid: e.applicantUid, accepted: 1 }); }; }); game.network.addRpcHandler("Dead", () => { window.deadPos = game.ui.playerTick.position; }); function sellAllByType(type) { if (!game.ui.playerPartyCanSell) return; let sellInterval = () => { let target = Object.values(game.ui.buildings).find(e => e.type == type); if (target !== undefined) { Game.currentGame.network.sendRpc({ name: "DeleteBuilding", uid: target.uid }); setTimeout(() => { sellInterval(); }, 100); } } sellInterval(); }; const addFunctionToElem = (id, option, buttonText, colors = 'btn-red?btn-green', onCallback, offCallback) => { getId(id).addEventListener('click', e => { let toggleColor = colors.split('?'); if (options[option] === false) { options[option] = true; e.target.classList.remove(toggleColor[1]); e.target.classList.add(toggleColor[0]); e.target.innerText = `Disable ${buttonText}`; onCallback?.(); } else { options[option] = false; e.target.classList.remove(toggleColor[0]); e.target.classList.add(toggleColor[1]); e.target.innerText = `Enable ${buttonText}`; offCallback?.(); } }); } getId("0i").addEventListener('click', function() { Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete all towers?", 1e4, function() { let sellInterval = () => { if (Object.keys(game.ui.buildings).length > 1 && game.ui.playerPartyCanSell) { Game.currentGame.network.sendRpc({name: "DeleteBuilding", uid: parseInt(Object.keys(game.ui.buildings)[1])}); setTimeout(() => { sellInterval(); }, 100); } } sellInterval(); }) }) getId("1i").addEventListener('click', () => { sellAllByType("Wall") }); getId("2i").addEventListener('click', () => { sellAllByType("Door") }); getId("3i").addEventListener('click', () => { sellAllByType("SlowTrap") }); getId("4i").addEventListener('click', () => { sellAllByType("ArrowTower") }); getId("5i").addEventListener('click', () => { sellAllByType("CannonTower") }); getId("6i").addEventListener('click', () => { sellAllByType("MeleeTower") }); getId("7i").addEventListener('click', () => { sellAllByType("BombTower") }); getId("8i").addEventListener('click', () => { sellAllByType("MagicTower") }); getId("9i").addEventListener('click', () => { sellAllByType("GoldMine") }); getId("10i").addEventListener('click', () => { sellAllByType("Harvester") }); getId("11i").addEventListener('click', () => { Game.currentGame.network.sendRpc({name: "DeleteBuilding", uid: game.ui.getPlayerPetUid()}); }); addFunctionToElem('15i', 'AHRC', 'AHRC', 'btn-red?btn-blue'); addFunctionToElem('0i2', 'heal', 'Auto Heal'); addFunctionToElem('1i2', 'revive', 'Auto Revive'); addFunctionToElem('2i2', 'autoAim', 'AutoAim', 'btn-red?btn-blue'); addFunctionToElem('3i2', 'spamChat', 'Chat Spam', 'btn-red?btn-blue'); addFunctionToElem('5i2', 'spamJoin', 'Auto Join', 'btn-red?btn-blue'); addFunctionToElem('7i2', 'moving', 'Navigator', 'btn-red?btn-blue', () => getId('moveOptions').value == 'nn' ? window.goToPos(getId('8i2').value, getId('9i2').value) : getId('moveOptions').value == 'ld' ? window.goToPos(window.deadPos.x, window.deadPos.y) : window.goToPos(window.playerX, window.playerY), () => { options.moving = false; }); addFunctionToElem('10i2', 'recordMacro', 'Recorder', 'btn-red?btn-green', () => { window.macroActions.created = Date.now(); }); addFunctionToElem('12i2', 'macro', 'Macro', 'btn-red?btn-blue', () => { window.macro(); }, () => { options.stopMacro = true; }); addFunctionToElem('2i3', 'accept', 'Auto Accept', 'btn-red?btn-blue'); addFunctionToElem('3i3', 'kick', 'Auto Kick', 'btn-red?btn-blue'); addFunctionToElem('4i3', 'clearMsgs', 'Auto Clear', 'btn-red?btn-blue'); addFunctionToElem('sendFinder', 'finder', 'Find Player', 'btn-red?btn-purple', () => { window.playerFinder(); }); addFunctionToElem('sendAITO', 'aito', 'AITO', 'btn-red?btn-purple', () => window.sendAitoAlt(), () => { options.aito = false; }); addFunctionToElem('changeparty', 'randomParty', 'Random Party'); addFunctionToElem('anticarl', 'antiAttack', 'Immunity', 'btn-red?btn-purple'); getId("5i3").addEventListener('click', function() { Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete all map markers?", 1e4, function() { while (document.getElementsByClassName('map-display').length > 0) { document.getElementsByClassName('map-display')[0].remove(); }; }) }) getId("deleteAlt").addEventListener('click', function() { let id = Math.floor(getId("deletealtplaceholder").value); window.allSockets[id-1].close(); }) document.getElementsByClassName("emm")[0].addEventListener('click', function() { window.mousemove = !window.mousemove; this.innerText = window.mousemove ? "Disable MouseMove" : "Enable MouseMove" this.className = window.mousemove ? "btn btn-red emm" : "btn btn-purple emm" }) document.getElementsByClassName("epf")[0].addEventListener('click', function() { window.altFollowPlayer = !window.altFollowPlayer; this.innerText = window.altFollowPlayer ? "Disable Player Follower" : "Enable Player Follower" this.className = window.altFollowPlayer ? "btn btn-red epf" : "btn btn-purple epf" }) document.getElementsByClassName("ecp")[0].addEventListener('click', function() { window.mouseclick = !window.mouseclick; this.innerText = window.mouseclick ? "Disable Click Position" : "Enable Click Position" this.className = window.mouseclick ? "btn btn-red ecp" : "btn btn-purple ecp" }) document.getElementsByClassName("tier2spear")[0].addEventListener('click', function() { window.Join4Tier2Spear = !window.Join4Tier2Spear; this.innerText = window.Join4Tier2Spear ? "Disable Auto Buy Spear?" : "Enable Auto Buy Spear?" this.className = window.Join4Tier2Spear ? "btn btn-red tier2spear" : "btn btn-purple tier2pear" }) document.getElementsByClassName("tglpt")[0].addEventListener('click', function() { window.shouldStartScript = !window.shouldStartScript; this.innerText = window.shouldStartScript ? "Disable Player Trick?" : "Enable Player Trick?" this.className = window.shouldStartScript ? "btn btn-red tglpt" : "btn btn-purple tglpt" }) document.getElementsByClassName("tglraid")[0].addEventListener('click', function() { window.autoRaid = !window.autoRaid; this.className = window.autoRaid ? "btn btn-red tglraid" : "btn btn-purple tglraid" }) document.getElementById("6i3").addEventListener('click', function() { window.ground(); this.className = "border-white"; if (window.groundtoggle) { this.className = "border-red"; } }) document.getElementById("7i3").addEventListener('click', function() { window.npc(); this.className = "border-white"; if (window.npctoggle) { this.className = "border-red"; } }) document.getElementById("8i3").addEventListener('click', function() { window.env(); this.className = "border-white"; if (window.envtoggle) { this.className = "border-red"; } }) document.getElementById("9i3").addEventListener('click', function() { window.pjt(); this.className = "border-white"; if (window.pjttoggle) { this.className = "border-red"; } }) document.getElementById("10i3").addEventListener('click', function() { window.everything(); this.className = "border-white"; if (window.everythingtoggle) { this.className = "border-red"; } }) document.getElementById("11i3").addEventListener('click', function() { window.rndr(); this.className = "border-white"; if (window.rndrtoggle) { this.className = "border-red"; } }) window.ground = () => { window.groundtoggle = !window.groundtoggle; if (window.groundtoggle) { game.renderer.ground.setVisible(false) } else { game.renderer.ground.setVisible(true) } } window.npc = () => { window.npctoggle = !window.npctoggle; if (window.npctoggle) { game.renderer.npcs.setVisible(false) } else { game.renderer.npcs.setVisible(true) } } window.env = () => { window.envtoggle = !window.envtoggle; if (window.envtoggle) { game.renderer.scenery.setVisible(false) } else { game.renderer.scenery.setVisible(true) } } window.pjt = () => { window.pjttoggle = !window.pjttoggle; if (window.pjttoggle) { game.renderer.projectiles.setVisible(false) } else { game.renderer.projectiles.setVisible(true) } } window.everything = () => { window.everythingtoggle = !window.everythingtoggle; if (window.everythingtoggle) { game.renderer.scene.setVisible(false) } else { game.renderer.scene.setVisible(true) } } window.rndr = () => { window.rndrtoggle = !window.rndrtoggle; if (window.rndrtoggle) { game.stop(); } else { game.start(); } } function counter(e = 0) { if (e <= -0.99949999999999999e24) { return Math.round(e/-1e23)/-10 + "TT"; } if (e <= -0.99949999999999999e21) { return Math.round(e/-1e20)/-10 + "TB"; } if (e <= -0.99949999999999999e18) { return Math.round(e/-1e17)/-10 + "TM"; } if (e <= -0.99949999999999999e15) { return Math.round(e/-1e14)/-10 + "TK"; } if (e <= -0.99949999999999999e12) { return Math.round(e/-1e11)/-10 + "T"; } if (e <= -0.99949999999999999e9) { return Math.round(e/-1e8)/-10 + "B"; } if (e <= -0.99949999999999999e6) { return Math.round(e/-1e5)/-10 + "M"; } if (e <= -0.99949999999999999e3) { return Math.round(e/-1e2)/-10 + "K"; } if (e <= 0.99949999999999999e3) { return Math.round(e) + ""; } if (e <= 0.99949999999999999e6) { return Math.round(e/1e2)/10 + "K"; } if (e <= 0.99949999999999999e9) { return Math.round(e/1e5)/10 + "M"; } if (e <= 0.99949999999999999e12) { return Math.round(e/1e8)/10 + "B"; } if (e <= 0.99949999999999999e15) { return Math.round(e/1e11)/10 + "T"; } if (e <= 0.99949999999999999e18) { return Math.round(e/1e14)/10 + "TK"; } if (e <= 0.99949999999999999e21) { return Math.round(e/1e17)/10 + "TM"; } if (e <= 0.99949999999999999e24) { return Math.round(e/1e20)/10 + "TB"; } if (e <= 0.99949999999999999e27) { return Math.round(e/1e+23)/10 + "TT"; } if (e >= 0.99949999999999999e27) { return Math.round(e/1e+23)/10 + "TT"; } } function healPlayer() { Game.currentGame.network.sendRpc({"name": "EquipItem", "itemName": "HealthPotion", "tier": 1}) Game.currentGame.network.sendRpc({"name": "BuyItem", "itemName": "HealthPotion", "tier": 1}) } var towerCodes = ["Wall", "Door", "SlowTrap", "ArrowTower", "CannonTower", "MeleeTower", "BombTower", "MagicTower", "GoldMine", "Harvester"]; function getGoldStash() { return Object.values(Game.currentGame.ui.buildings).find(building => building.type == "GoldStash"); } function BuildBase(design) { if (typeof design !== "string") throw new Error("Argument must be given as a string."); if (getGoldStash() === undefined) throw new Error("You must have a gold stash to be able to use this."); const towers = design.split(";"); for (let towerStr of towers) { const tower = towerStr.split(","); if (tower[0] === "") continue; if (tower.length < 4) throw new Error(`${JSON.stringify(tower)} contains an issue that must be fixed before this design can be replicated.`); Game.currentGame.network.sendRpc({ name: "MakeBuilding", type: towerCodes[parseInt(tower[0])], x: getGoldStash().x - parseInt(tower[1]), y: getGoldStash().y - parseInt(tower[2]), yaw: parseInt(tower[3]) }); }; }; window.RecordBase = (storage) => { let baseStr = ""; for (let i in game.ui.buildings) { const building = game.ui.buildings[i]; if (towerCodes.indexOf(building.type) < 0) continue; let yaw = 0; if (["Harvester", "MeleeTower"].includes(building.type)) {x if (game.world.entities[building.uid] !== undefined) yaw = game.world.entities[building.uid].targetTick.yaw; } baseStr += `${towerCodes.indexOf(building.type)},${getGoldStash().x - building.x},${getGoldStash().y - building.y},${yaw};`; }; localStorage[storage] = baseStr; }; window.buildRecordedBase = (base) => { BuildBase(localStorage[base]); } window.DeleteRecordedBase = (base) => { Game.currentGame.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[base] = null; }) }; window.copyText = t => { const elem = document.createElement('textarea'); elem.value = t; document.body.appendChild(elem); elem.select(); document.execCommand('copy'); document.body.removeChild(elem); }; (function() { document.getElementsByClassName("hud-party-actions")[0].insertAdjacentHTML("afterend", ` `); })(); let getElement = (Element) => { return document.getElementsByClassName(Element); } getElement("hud-party-members")[0].style.display = "block"; getElement("hud-party-grid")[0].style.display = "none"; // Closed Parties let privateTab = document.createElement("a"); privateTab.className = "hud-party-tabs-link"; privateTab.id = "privateTab"; privateTab.innerHTML = "Closed Parties"; let privateHud = document.createElement("div"); privateHud.className = "hud-private hud-party-grid"; privateHud.id = "privateHud"; privateHud.style = "display: none;"; getElement("hud-party-tabs")[0].appendChild(privateTab); getElement("hud-menu hud-menu-party")[0].insertBefore(privateHud, getElement("hud-party-actions")[0]); // Keys let keyTab = document.createElement("a"); keyTab.className = "hud-party-tabs-link"; keyTab.id = "keyTab"; keyTab.innerHTML = "Party Keys"; getElement("hud-party-tabs")[0].appendChild(keyTab); let keyHud = document.createElement("div"); keyHud.className = "hud-keys hud-party-grid"; keyHud.id = "keyHud"; keyHud.style = "display: none;"; getElement("hud-menu hud-menu-party")[0].insertBefore(keyHud, getElement("hud-party-actions")[0]); getId("privateTab").onclick = e => { for (let i = 0; i < getElement("hud-party-tabs-link").length; i++) { getElement("hud-party-tabs-link")[i].className = "hud-party-tabs-link"; } getId("privateTab").className = "hud-party-tabs-link is-active"; getId("privateHud").setAttribute("style", "display: block;"); if (getElement("hud-party-members")[0].getAttribute("style") == "display: block;") { getElement("hud-party-members")[0].setAttribute("style", "display: none;"); } if (getElement("hud-party-grid")[0].getAttribute("style") == "display: block;") { getElement("hud-party-grid")[0].setAttribute("style", "display: none;"); } if (getId("privateHud").getAttribute("style") == "display: none;") { getId("privateHud").setAttribute("style", "display: block;"); } if (getId("keyHud").getAttribute("style") == "display: block;") { getId("keyHud").setAttribute("style", "display: none;"); } } getElement("hud-party-tabs-link")[0].onmouseup = e => { getId("privateHud").setAttribute("style", "display: none;"); getId("keyHud").setAttribute("style", "display: none;"); if (getId("privateTab").className == "hud-party-tabs-link is-active") { getId("privateTab").className = "hud-party-tabs-link" } if (getId("keyTab").className == "hud-party-tabs-link is-active") { getId("keyTab").className = "hud-party-tabs-link" } } getElement("hud-party-tabs-link")[1].onmouseup = e => { getId("privateHud").setAttribute("style", "display: none;"); getId("keyHud").setAttribute("style", "display: none;"); getId if (getId("privateTab").className == "hud-party-tabs-link is-active") { getId("privateTab").className = "hud-party-tabs-link" } if (getId("keyTab").className == "hud-party-tabs-link is-active") { getId("keyTab").className = "hud-party-tabs-link" } } getId("keyTab").onmouseup = e => { for (let i = 0; i < getElement("hud-party-tabs-link").length; i++) { getElement("hud-party-tabs-link")[i].className = "hud-party-tabs-link"; } getId("keyTab").className = "hud-party-tabs-link is-active"; getId("keyHud").setAttribute("style", "display: block;"); if (getElement("hud-party-members")[0].getAttribute("style") == "display: block;") { getElement("hud-party-members")[0].setAttribute("style", "display: none;"); } if (getElement("hud-party-grid")[0].getAttribute("style") == "display: block;") { getElement("hud-party-grid")[0].setAttribute("style", "display: none;"); } if (getId("privateHud").getAttribute("style") == "display: block;") { getId("privateHud").setAttribute("style", "display: none;"); } if (getId("keyHud").getAttribute("style") == "display: none;") { getId("keyHud").setAttribute("style", "display: block;"); } }; getElement('hud-keys hud-party-grid')[0].innerHTML += "

Party Keys


" game.network.addRpcHandler("PartyShareKey", function(e) { let cpKeyId = `skl${Math.floor(Math.random() * 999999)}`; let cpLnkId = `skl${Math.floor(Math.random() * 999999)}`; let psk = e.partyShareKey; let lnk = `http://zombs.io/#/${game.options.serverId}/${psk}/`; getId("keyHud").innerHTML += `

${psk}

 
`; }); let parties = ""; Game.currentGame.network.addRpcHandler("SetPartyList", e => { parties = ""; for (let i in e) { if (e[i].isOpen == 0) { parties += ""; } } getId("privateHud").innerHTML = parties; }); let activerss = false; let allow = true; game.network.addEntityUpdateHandler(() => { if (activerss) { !allow && (allow = true); } if (activerss || allow) { for (let i in game.world.entities) { if (game.world.entities[i].fromTick.name) { let player = game.world.entities[i]; let wood_1 = counter(player.targetTick.wood); let stone_1 = counter(player.targetTick.stone); let gold_1 = counter(player.targetTick.gold); let token_1 = counter(player.targetTick.token); let px_1 = counter(player.targetTick.position.x); let py_1 = counter(player.targetTick.position.y); if (activerss && !player.targetTick.oldName) { player.targetTick.oldName = player.targetTick.name; player.targetTick.oldWood = wood_1; player.targetTick.oldStone = stone_1; player.targetTick.oldGold = gold_1; player.targetTick.oldToken = token_1; player.targetTick.oldPX = px_1; player.targetTick.oldPY = py_1; player.targetTick.info = `${player.targetTick.oldName}, UID: ${player.targetTick.uid}, W: ${wood_1}, S: ${stone_1}, G: ${gold_1}, T: ${token_1};\nx: ${Math.round(player.targetTick.position.x)}, y: ${Math.round(player.targetTick.position.y)} `; player.targetTick.name = game.world.entities[i].targetTick.info; } if (!activerss && player.targetTick.oldName) { player.targetTick.info = player.targetTick.oldName; player.targetTick.name = game.world.entities[i].targetTick.info; player.targetTick.oldName = null; } if (activerss) { if (player.targetTick.oldGold !== gold_1 || player.targetTick.oldWood !== wood_1 || player.targetTick.oldStone !== stone_1 || player.targetTick.oldToken !== token_1 || player.targetTick.oldPX !== px_1 || player.targetTick.oldPY !== py_1) { player.targetTick.oldWood = wood_1; player.targetTick.oldStone = stone_1; player.targetTick.oldGold = gold_1; player.targetTick.oldToken = token_1; player.targetTick.oldPX = px_1; player.targetTick.oldPY = py_1; player.targetTick.info = `${player.targetTick.oldName}, UID: ${player.targetTick.uid}, W: ${wood_1}, S: ${stone_1}, G: ${gold_1}, T: ${token_1};\nx: ${Math.round(player.targetTick.position.x)}, y: ${Math.round(player.targetTick.position.y)} `; player.targetTick.name = game.world.entities[i].targetTick.info; } } } } } if (!activerss) { allow = false; } }) document.addEventListener("keydown", e => { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (e.keyCode == 189) { activerss = !activerss; }; }; }); Game.currentGame.network.addRpcHandler("SetPartyList", parties => { let serverPop = 0; for (let party of parties) { serverPop += party.memberCount; }; document.getElementsByClassName("hud-party-server")[0].innerHTML = `${serverPop}/32 ${game.network.connectionOptions.name}`; }); window.ssfi = () => { let ssrs = document.getElementById("ssrs"); ssrs.innerHTML = ` Loading...`; let selected = getElem("hud-intro-server")[0].value; let server = game.options.servers[selected]; let hostname = server.hostname; let url = `ws://${hostname}:80/`; game.network.connectionOptions = { hostname: hostname }; game.network.connected = true; let ws = new WebSocket(url); ws.binaryType = "arraybuffer"; const loadLbPacket = () => { for (let i = 0; i < 30; i++) ws.send(new Uint8Array([3, 17, 123, 34, 117, 112, 34, 58, 49, 44, 34, 100, 111, 119, 110, 34, 58, 48, 125])); ws.send(new Uint8Array([7, 0])); ws.send(new Uint8Array([9,6,0,0,0,126,8,0,0,108,27,0,0,146,23,0,0,82,23,0,0,8,91,11,0,8,91,11,0,0,0,0,0,32,78,0,0,76,79,0,0,172,38,0,0,120,155,0,0,166,39,0,0,140,35,0,0,36,44,0,0,213,37,0,0,100,0,0,0,120,55,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,6,0,0])); }; ws.onopen = (data) => { ws.network = new game.networkType(); ws.network.sendPacket = (e, t) => { ws.send(ws.network.codec.encode(e, t)); }; ws.onRpc = (data) => { if(data.name === "SetPartyList") { ws.parties = data.response; }; if(data.name === "Leaderboard") { if(ws.b4) { window.appSsrs({ population: ws.pop, leaderboard: data.response, parties: ws.parties, server: server.name }); ws.close(); return; }; loadLbPacket(); ws.b4 = true; }; }; ws.onmessage = msg => { let data = ws.network.codec.decode(msg.data); switch(data.opcode) { case 5: ws.network.sendPacket(4, { displayName: game.options.nickname, extra: data.extra }); break; case 4: if (!data.allowed) { ws.close(); ssrs.innerHTML = `Server is full (32/32).`; getElem("hud-intro-server")[0].selectedOptions[0].innerText = `${server.name} [32/32]`; } ws.network.sendPacket(3, { left: 1, up: 1 }); ws.pop = data.players; break; case 9: ws.onRpc(data); break; }; }; }; }; window.ssal = () => { let iteration = 0, allData = [], pushData = [], scanItem = { item1: [], item2: [], item3: [], }, id = 0, ssrs = document.getElementById("ssrs"); const weeb = ["waifu", "hentai", "bodypillow", "ahegao", "yamete", "kimochi", "weeb", "fuck trollers", "nắc ngu", "pee pee ppoo oo", "i watch hentai for a living"]; ssrs.innerHTML = ` Loading...`; if (!localStorage.reloadCount) localStorage.reloadCount = 0; switch (Number(localStorage.reloadCount)) { case 0: for (let i = 1; i < 4; i++) localStorage[`results${i}`] = ""; localStorage.results = ""; console.log('Europe > US West > South America'); break; case 1: id = 25; console.log('South America > US East > Asia'); break; case 2: id = 50; console.log('Asia > Australia'); break; }; let scanInterval = () => { const server = game.options.servers[Object.keys(game.options.servers).sort()[id]]; const randomtext = weeb[Math.floor(Math.random() * weeb.length)]; const url = `ws://${server.hostname}:80/`; let hasSentData = false; if (id == 25 && localStorage.reloadCount == 0) { console.warn('Reached 25 alts, reloading site...'); localStorage.reloadCount = 1; location.reload(); return; }; if (id == 50 && localStorage.reloadCount == 1) { console.warn('Reached 25 alts, reloading site...'); localStorage.reloadCount = 2; location.reload(); return; }; if (id == 59) console.log('Scan will be finished after this.'); id++; game.network.connectionOptions = { hostname: server.hostname }; game.network.connected = true; const ws = new WebSocket(url); ws.binaryType = "arraybuffer"; const loadLbPacket = () => { for (let i = 0; i < 30; i++) ws.send(new Uint8Array([3, 17, 123, 34, 117, 112, 34, 58, 49, 44, 34, 100, 111, 119, 110, 34, 58, 48, 125])); ws.send(new Uint8Array([7, 0])); ws.send(new Uint8Array([9,6,0,0,0,126,8,0,0,108,27,0,0,146,23,0,0,82,23,0,0,8,91,11,0,8,91,11,0,0,0,0,0,32,78,0,0,76,79,0,0,172,38,0,0,120,155,0,0,166,39,0,0,140,35,0,0,36,44,0,0,213,37,0,0,100,0,0,0,120,55,0,0,0,0,0,0,0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,6,0,0])); }; ws.onopen = (data) => { ws.network = new game.networkType(); ws.network.sendPacket = (e, t) => ws.send(ws.network.codec.encode(e, t)); ws.onRpc = (data) => { if (data.name === "SetPartyList") ws.parties = data.response; if (data.name === "Leaderboard") { if (ws.b4) { const response = data.response; console.log(server.name, server.id, `Population: ${ws.pop}`, '\n', `#1 | name: ${response[0].name}, uid: ${response[0].uid}, score: ${response[0].score.toLocaleString()}, wave: ${response[0].wave}`, '\n', response, '\n', ws.parties ); window.appSsrs({server: server.name, id: server.id, population: ws.pop, leaderboard: response, parties: ws.parties}); scanItem[`item${Number(localStorage.reloadCount) + 1}`].push({serverInfo: server, population: ws.pop, leaderboard: response, parties: ws.parties, type: "available"}); localStorage.setItem(`results${Number(localStorage.reloadCount) + 1}`, JSON.stringify(scanItem[`item${Number(localStorage.reloadCount) + 1}`])); hasSentData = true; ws.close(); if (id == Object.keys(game.options.servers).length) { allData.push(JSON.parse(localStorage.results1), JSON.parse(localStorage.results2), JSON.parse(localStorage.results3)); for (let result = 0; result < 3; result++) for (let i of allData[result]) pushData.push(i); localStorage.setItem("results", JSON.stringify(pushData)); localStorage.reloadCount = 0; console.log(JSON.parse(localStorage.results)); setTimeout(() => { ssrs.innerHTML = ""; }, 5000); } else scanInterval(); return; }; loadLbPacket(); ws.b4 = true; }; }; ws.onmessage = msg => { const data = ws.network.codec.decode(msg.data); switch (data.opcode) { case 5: ws.network.sendPacket(4, { displayName: game.options.nickname, extra: data.extra }); break; case 4: if (!data.allowed) { ws.close(); scanInterval(); console.log(`${server.name} is full (32/32).`); ssrs.innerHTML = `Server is full(32/32) | Server: ${server.name}, ${server.id}`; scanItem[`item${Number(localStorage.reloadCount) + 1}`].push({serverInfo: server, population: 32, type: "unavailable"}); localStorage.setItem(`results${Number(localStorage.reloadCount) + 1}`, JSON.stringify(scanItem[`item${Number(localStorage.reloadCount) + 1}`])); hasSentData = true; } ws.network.sendPacket(3, { left: 1, up: 1 }); ws.pop = data.players; break; case 9: ws.onRpc(data); break; }; }; }; ws.onclose = () => { if (!hasSentData) { scanItem[`item${Number(localStorage.reloadCount) + 1}`].push({serverInfo: server, population: null, type: "unknown"}); localStorage.setItem(`results${Number(localStorage.reloadCount) + 1}`, JSON.stringify(scanItem[`item${Number(localStorage.reloadCount) + 1}`])); console.log(`${server.name}'s condition is unknown (socket cannot access server).`); ssrs.innerHTML = `Server's condition is unknown. | Server: ${server.name}, ${server.id}`; scanInterval(); hasSentData = true; } } }; setTimeout(() => { scanInterval(); }, 5000); }; window.appSsrs = res => { console.log(res); getElem("hud-intro-server")[0].selectedOptions[0].innerText = `${res.server} [${res.population}/32]`; let ssrs = document.getElementById("ssrs"); ssrs.style.overflow = "auto"; ssrs.style.height = "480px"; ssrs.innerHTML = `

Population: ${res.population}/32

Leaderboard


${res.leaderboard.map(lb => { return `

Rank: #${lb.rank + 1}, Nickname: ${lb.name}, Wave: ${lb.wave.toLocaleString("en")}, Score: ${lb.score}

`; }).join("")}

Parties


${res.parties.map(p => { return `

Name: ${p.partyName}, ID: ${p.partyId}, Members: ${p.memberCount}, Public: ${p.isOpen}

`; }).join("")}

${Date()}

`; }; var changeHeight = document.createElement("style") changeHeight.type = "text/css" document.body.appendChild(changeHeight) var widget = `

Server Scanner

Click on the Scan button to show the data of the selected server here.

`; let hil = getElem("hud-intro-youtuber")[0]; hil.innerHTML = widget; hil.style.marginTop = "30px"; if (localStorage.reloadCount == 1 || localStorage.reloadCount == 2) window.ssal(); // some scan search window.displayScanTable = () => { let data = []; for (let i of JSON.parse(localStorage.results)) data.push({serverName: i.serverInfo.name, serverId: i.serverInfo.id, population: i.population, state: i.type}); console.table(data); }; window.searchWithWave = (wave) => { let allResults = []; for (let i of JSON.parse(localStorage.results)) { for (let i2 in i.leaderboard) { if (i.leaderboard[i2].wave >= wave) allResults.push({player: i.leaderboard[i2].name, wave: i.leaderboard[i2].wave, server: `${i.serverInfo.id}, ${i.serverInfo.name}`}); }; }; allResults.length > 0 ? console.log(allResults) : console.log('No results found!'); }; window.searchWithScore = (score) => { let allResults = []; for (let i of JSON.parse(localStorage.results)) { for (let i2 in i.leaderboard) { if (i.leaderboard[i2].score >= score) allResults.push({player: i.leaderboard[i2].name, score: i.leaderboard[i2].score, server: `${i.serverInfo.id}, ${i.serverInfo.name}`}); }; }; allResults.length > 0 ? console.log(allResults) : console.log('No results found!'); }; window.searchWithName = (name) => { let allResults = []; for (let i of JSON.parse(localStorage.results)) { for (let i2 in i.leaderboard) { if (i.leaderboard[i2].name.toLocaleLowerCase().includes(name.toLocaleLowerCase())) allResults.push({player: i.leaderboard[i2].name, wave: i.leaderboard[i2].wave, score: i.leaderboard[i2].score, server: `${i.serverInfo.id}, ${i.serverInfo.name}`}); }; }; allResults.length > 0 ? console.log(allResults) : console.log('No results found!'); }; window.goToPos = (x, y) => { const targetX = parseInt(x), targetY = parseInt(y); if (!Number.isInteger(targetX) || !Number.isInteger(targetY)) return game.ui.components.PopupOverlay.showHint("Invalid value!"); if (targetX > 23500 || targetX < 30 || targetY > 23500 || targetY < 30) return "cannot move to that specific position, sorry!"; options.moving = true; let reachedTargetX = false; let reachedTargetY = false; let lastX = 0; let lastY = 0; let current_action = ''; let stuckPrediction = 0; let timeInMs = 0; const interval = setInterval(() => { timeInMs += 100; if (!options.moving) return clearInterval(interval); if (reachedTargetX && reachedTargetY) { stop(); console.log(`done moving. (x: ${targetX}, y: ${targetY}, time took: ${timeInMs}ms)`); getId('7i2').click(); return clearInterval(interval); } const { x, y } = game.world.localPlayer.entity.fromTick.position; if (inRange(lastX, x, 5) && inRange(lastY, y, 5)) stuckPrediction++; if (stuckPrediction > 15) { console.log('looks like you got yourself in a confluffle!'); switch(current_action) { case 'ne': sw(); break; case 'se': nw(); break; case 'nw': se(); break; case 'sw': ne(); break; case 'n': s(); break; case 's': n(); break; case 'e': w(); break; case 'w': e(); break; } if (!inRange(x, lastX, 350) && !inRange(y, lastY, 350)) stuckPrediction = 0; return; } lastX = x; lastY = y; if (!reachedTargetX && inRange(x, targetX, 150)) { reachedTargetX = true; return stopX(); } if (!reachedTargetY && inRange(y, targetY, 150)) { reachedTargetY = true; return stopY(); } if (targetX > x && targetY < y) { current_action = 'ne'; return ne(); } else if (targetX > x && targetY > y) { current_action = 'se'; return se(); } else if (targetX < x && targetY < y) { current_action = 'nw'; return nw(); } else if (targetX < x && targetY > y) { current_action = 'sw'; return sw(); } else if (!reachedTargetY && targetY < y) { current_action = 'n'; return n(); } else if (!reachedTargetX && targetX > x) { current_action = 'e'; return e(); } else if (!reachedTargetY && targetY > y) { current_action = 's'; return s(); } else if (!reachedTargetX && targetX < x) { current_action = 'w'; return w(); } }, 100); function inRange(pos, target, range) { return pos < target + range && pos > target - range; } function n() { Game.currentGame.network.sendPacket(3, { up: 1, down: 0 }); Game.currentGame.network.sendPacket(3, { left: 0, right: 0 }); } function ne() { Game.currentGame.network.sendPacket(3, { up: 1, down: 0 }); Game.currentGame.network.sendPacket(3, { left: 0, right: 1 }); } function e() { Game.currentGame.network.sendPacket(3, { up: 0, down: 0 }); Game.currentGame.network.sendPacket(3, { left: 0, right: 1 }); } function se() { Game.currentGame.network.sendPacket(3, { up: 0, down: 1 }); Game.currentGame.network.sendPacket(3, { left: 0, right: 1 }); } function s() { Game.currentGame.network.sendPacket(3, { up: 0, down: 1 }); Game.currentGame.network.sendPacket(3, { left: 0, right: 0 }); } function sw() { Game.currentGame.network.sendPacket(3, { up: 0, down: 1 }); Game.currentGame.network.sendPacket(3, { left: 1, right: 0 }); } function w() { Game.currentGame.network.sendPacket(3, { up: 0, down: 0 }); Game.currentGame.network.sendPacket(3, { left: 1, right: 0 }); } function nw() { Game.currentGame.network.sendPacket(3, { up: 1, down: 0 }); Game.currentGame.network.sendPacket(3, { left: 1, right: 0 }); } function stop() { Game.currentGame.network.sendPacket(3, { up: 0, down: 0 }); Game.currentGame.network.sendPacket(3, { left: 0, right: 0 }); } function stopX() { Game.currentGame.network.sendPacket(3, { left: 0, right: 0 }); } function stopY() { Game.currentGame.network.sendPacket(3, { up: 0, down: 0 }); } } window.macroActions = { actions: [], created: Date.now() }; window.macro = () => { let macro = window.macroActions; if (options.stopMacro) options.stopMacro = false; let run = () => { if (options.stopMacro) return; for (let i in macro.actions) { let action = macro.actions[i]; setTimeout(() => { game.network.sendPacket(action.packet.opcode, action.packet.data); if (i == (macro.actions.length - 1)) { run(); // could replace this with run() for infinite loop game.network.sendInput({ up: 0, down: 0, left: 0, right: 0 }); }; }, action.timeout); }; }; run(); }; window.clearRecord = () => { window.macroActions.actions = []; }; game.network.sendPacket2 = game.network.sendPacket; game.network.sendPacket = (e, t) => { game.network.sendPacket2(e, t); if (t.name == "Metrics") { return; }; if (e == 7) { return; }; if (options.recordMacro) { window.macroActions.actions.push({ timeout: Date.now() - window.macroActions.created, packet: { opcode: e, data: t } }); }; }; let blockedNames = []; window.blockPlayer = name => { game.ui.components.PopupOverlay.showConfirmation(`Are you sure you want to block ${name}?`, 3500, () => { blockedNames.push(name); for(let msg of Array.from(document.getElementsByClassName("hud-chat-message"))) { if(msg.childNodes[2].innerText === name) { let bl = msg.childNodes[0]; bl.innerHTML = "Unblock"; bl.style.color = "blue"; bl.onclick = () => { window.unblockPlayer(name); }; }; }; }, () => {}); }; window.unblockPlayer = name => { blockedNames.splice(blockedNames.indexOf(name), 1); for(let msg of Array.from(document.getElementsByClassName("hud-chat-message"))) { if(msg.childNodes[2].innerText === name) { let bl = msg.childNodes[0]; bl.innerHTML = "Block"; bl.style.color = "red"; bl.onclick = () => { window.blockPlayer(name); }; }; }; }; const getClock = () => { var date = new Date(); var d = date.getDate(); var d1 = date.getDay(); var h = date.getHours(); var m = date.getMinutes(); var s = date.getSeconds() var session = "PM"; if(h == 2){ h = 12; }; if(h < 13) { session = "AM" }; if(h > 12){ session = "PM"; h -= 12; }; h = (h < 10) ? "0" + h : h; m = (m < 10) ? "0" + m : m; s = (s < 10) ? "0" + s : s; return `${h}:${m} ${session}`; } var emojiList = { hmm: "https://cdn.discordapp.com/emojis/724365641963929611.png?size=48", pog: "https://cdn.discordapp.com/emojis/721070353337811026.png?size=48", pepehands: "https://cdn.discordapp.com/emojis/733406770139103293.png?size=48", pepeEyes: "https://cdn.discordapp.com/emojis/869573233794486323.gif?size=48", pepeHappy: "https://cdn.discordapp.com/emojis/801475958883614811.png?size=48", sadge: "https://cdn.discordapp.com/emojis/826530556974989344.png?size=48", ha: "https://cdn.discordapp.com/emojis/782756472886525953.png?size=48", kekw: "https://cdn.discordapp.com/emojis/748511358076846183.png?size=48", pogEyes: "https://cdn.discordapp.com/emojis/786979080406564885.png?size=48", appalled: "https://cdn.discordapp.com/emojis/830880294881853530.png?size=48", pogYou: "https://cdn.discordapp.com/emojis/790293794716516430.png?size=48", pogChag: "https://cdn.discordapp.com/emojis/831156303497134090.png?size=48", pogey: "https://cdn.discordapp.com/emojis/790293759861719050.png?size=48", weirdChamp: "https://cdn.discordapp.com/emojis/757553915389673502.png?size=48", monkaS: "https://cdn.discordapp.com/emojis/757179783573405766.png?size=48", yep: "https://cdn.discordapp.com/emojis/758356179477987339.png?size=48", weirdButOkay: "https://cdn.discordapp.com/emojis/831156194247966782.gif?size=48", pogpogpogpog: "https://cdn.discordapp.com/emojis/869580566096379974.gif?size=48", wooyeah: "https://cdn.discordapp.com/emojis/791008461420888084.gif?size=48", idk: "https://cdn.discordapp.com/emojis/882513306164805642.gif?size=48", } Game.currentGame.network.emitter.removeListener("PACKET_RPC", Game.currentGame.network.emitter._events.PACKET_RPC[1]) const onMessageReceived = e => { if (blockedNames.includes(e.displayName) || window.chatDisabled) { return; }; let a = Game.currentGame.ui.getComponent("Chat"), b = e.displayName.replace(/<(?:.|\n)*?>/gm, ''), c = e.message.replace(/<(?:.|\n)*?>/gm, '') .replace(/(?:f|F)uck/gi, ``) .replace(/n+[i1]+gg+[a@]+/i, ``); let arr = c.split(':'); for (let i = 1; i < arr.length; i += 2) { // console.log(arr[i]); if (!emojiList[arr[i]]) { // console.log(arr); arr = [c]; } else { arr[i] = `` }; } let d = a.ui.createElement(`
Block ${b} - ${getClock()}: ${arr.join(" ")}
`); a.messagesElem.appendChild(d); a.messagesElem.scrollTop = a.messagesElem.scrollHeight; }; Game.currentGame.network.addRpcHandler("ReceiveChatMessage", onMessageReceived); !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); }; addEventListener('keyup', function(e) { if(document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if(e.key === "~") { window.addMarker(); game.ui.components.PopupOverlay.showHint(`Added Marker #${markerId - 1}`); }; } }); var map = document.getElementById("hud-map"); let markerId = 1; window.addMarker = () => { map.insertAdjacentHTML("beforeend", `
`) }; window.ssMode = () => { window.ssModeToggle = !window.ssModeToggle; var mba = document.querySelectorAll([".hud-bottom-right", ".hud-bottom-left", ".hud-bottom-center", ".hud-center-left", ".hud-center-right", ".hud-chat", ".hud-chat-messages", ".hud-top-right", ".refrsh"]); 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-shield-bar")); 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")); }; document.addEventListener("keydown", e => { if(document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if(e.key === "Escape") { window.ssMode(); }; }; }) window.frss = true; const fullRSS = () => { if(!window.frss) { return; }; let resources = ["wood", "stone", "gold"]; let pt = game.ui.playerTick; let rc = game.ui.components.Resources; for(let i = 0; i < resources.length; i++) { let rs = resources[i]; rc[`${rs}Elem`].innerHTML = Math.round(pt[rs]).toLocaleString("en"); }; rc.tokensElem.innerHTML = Math.round(pt.token).toLocaleString("en"); }; let sipt = setInterval(() => { game.ui.addListener('playerTickUpdate', fullRSS); }, 10); setTimeout(() => { clearInterval(sipt); }, 90); game.ui.components.Chat.sendMessage2 = game.ui.components.Chat.sendMessage; game.ui.components.Chat.sendMessage = (msg) => { switch(msg) { case "!luid": for (let i of game.ui.components.Leaderboard.leaderboardData) game.ui.components.PopupOverlay.showHint("Please check console!") && console.log(`${i.rank + 1}# - ${i.name}: ${i.uid}`); break; case "!coloralt": document.getElementById("coloralt").click(); break; case "!resetcolor": window.resetColor(); break; case "!server": game.ui.components.PopupOverlay.showHint(`Server has been up since: ${new Date(Date.now() - game.world.replicator.serverTime)}`); break; case "!ar": options.ar = true; break; case "!dar": options.ar = false; break; case "!rwp": options.rwp = true; break; case "!drwp": options.rwp = false; break; default: game.ui.components.Chat.sendMessage2(msg); }; }; game.network.sendRpc2 = game.network.sendRpc; game.network.sendRpc = (data) => { if(data.name === "MakeBuilding" && data.type === "Wall" && options.wallBlock) { let offset = 48; let oldOffset = 48 let earlyOffset = 48; game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + offset, y: data.y - offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - offset, y: data.y - offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + offset, y: data.y + offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - offset, y: data.y + offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - offset, y: data.y, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + offset, y: data.y, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x, y: data.y - offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x, y: data.y + offset, yaw: data.yaw }); offset *= 2; game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + offset, y: data.y - offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - offset, y: data.y - offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + offset, y: data.y + offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - offset, y: data.y + offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - offset, y: data.y, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + offset, y: data.y, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x, y: data.y - offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x, y: data.y + offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + oldOffset, y: data.y + offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - oldOffset, y: data.y + offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + oldOffset, y: data.y - offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - oldOffset, y: data.y - offset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + offset, y: data.y - oldOffset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - offset, y: data.y - oldOffset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x + offset, y: data.y + oldOffset, yaw: data.yaw }); game.network.sendRpc2({ name: "MakeBuilding", type: data.type, x: data.x - offset, y: data.y + oldOffset, yaw: data.yaw }); }; // xy game.network.sendRpc2(data); }; let wallElem = document.createElement("a"); wallElem.classList.add("hud-buff-bar-item"); wallElem.setAttribute("data-building", "Wall"); document.getElementsByClassName("hud-buff-bar")[0].appendChild(wallElem); wallElem.style.display = "none"; addFunctionToElem('14i', 'wallBlock', '5x5 Walls', 'btn-red?btn-blue'); document.addEventListener("keydown", e => { if(document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (e.key === "!") { getId('14i').click(); if (wallElem.style.display == "none" || wallElem.style.display == "") { wallElem.style.display = "block"; } else { wallElem.style.display = "none"; }; }; }; }) /* function appendToolTip(elem) { let elemBounding = elem.getBoundingClientRect(); let toolTip = document.createElement("div"); toolTip.classList.add(`hud-tooltip-top`); toolTip.style.top = `${elemBounding.top - (elemBounding.height - 10)}px`; toolTip.style.left = elemBounding.left + 'px'; toolTip.style.display = 'block'; elem.insertAdjacentElement("beforebegin", toolTip); } */ let shield = document.createElement("a"); shield.classList.add("hud-toolbar-item"); shield.classList.add("hud-toolbar-item-shield"); shield.setAttribute("data-item", "ZombieShield"); shield.setAttribute("data-tier", "1"); document.getElementsByClassName("hud-toolbar-inventory")[0].appendChild(shield); document.getElementsByClassName("hud-toolbar-item-shield")[0].addEventListener("click", function() { if (game.ui.inventory.ZombieShield) { Game.currentGame.network.sendRpc({ name: "BuyItem", itemName: "ZombieShield", tier: game.ui.inventory.ZombieShield.tier + 1}); } else { Game.currentGame.network.sendRpc({ name: "BuyItem", itemName: "ZombieShield", tier: 1}); } }); Game.currentGame.network.addRpcHandler("DayCycle", function(e) { if (game.ui.inventory.ZombieShield) { if (game.ui.inventory.ZombieShield.tier === 10) { shield.style.display = "none"; } else if (shield.style.display === "none" && game.ui.inventory.ZombieShield.tier !== 10) { shield.style.display = "block"; }; }; if (shield.style.display === "none" && !game.ui.inventory.ZombieShield) shield.style.display = "block"; if (game.ui.playerTick && e.isDay) getactiveCommingbosswaves2() ? bossAlert.style.display = "block" : bossAlert.style.display = "none"; }); game.network.addEnterWorldHandler((e) => { setTimeout(() => { game.world.myUid = null; game.world.getMyUid = () => { return e.uid; }; }, 1000); if (!e.allowed) { getElem("hud-intro-play")[0].innerText = ""; getId('playspan').style.margin = '-130px 0px 0px 545px'; getId('playspan').style.display = "block"; }; }); window.sendAitoAlt = () => { if (options.aito) { let ws = new WebSocket(`ws://${game.options.servers[game.options.serverId].hostname}:80`); ws.binaryType = "arraybuffer"; ws.onclose = () => { ws.isclosed = true; } ws.onopen = () => { ws.network = new Game.currentGame.networkType(); 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.onmessage = msg => { ws.data = ws.network.codec.decode(msg.data); if (ws.data.opcode === 4) { game.network.sendPingIfNecessary = function() { this.connecting = false; this.connected = true; var pingInProgress = (this.pingStart != null); if (pingInProgress) { return; } if (this.pingCompletion != null) { var msSinceLastPing = (new Date().getTime() - this.pingCompletion.getTime()); if (msSinceLastPing <= 5000) { return; } } this.pingStart = new Date(); this.sendPing({ nonce: 0 }); this.sendRpc(game.metrics.metrics); }; } if (ws.data.opcode === 5) { /* let imports = { a: { a: function(a) { console.log(a) }, d: function(a) { console.log(a) }, b: function(a, b, c) { console.log(a, b, c) }, g: function() {}, c: function(a) { console.log(a) }, f: function(a) { console.log(a) }, e: function(a) { console.log(a) }, } }; (async () => { await fetch('asset/zombs_wasm.wasm').then(response => response.arrayBuffer()).then(bytes => WebAssembly.instantiate(bytes, imports)).then(result => { let asm = { memory: result.instance.exports.h, _MakeBlendField: function(a, b) { return result.instance.exports.l(a, b) }, _free: result.instance.exports.q, __wasm_call_ctors: result.instance.exports.j, _main: result.instance.exports.k, stackSave: result.instance.exports.m, stackRestore: result.instance.exports.n, stackAlloc: result.instance.exports.o, malloc: result.instance.exports.p } return asm.memory; }) })(); */ game.network.sendPingIfNecessary = function() { this.connecting = false; this.connected = false; var pingInProgress = (this.pingStart != null); if (pingInProgress) { return; }; if (this.pingCompletion != null) { var msSinceLastPing = (new Date().getTime() - this.pingCompletion.getTime()); if (msSinceLastPing <= 5000) { return; } }; this.pingStart = new Date(); this.sendPing({ nonce: 0 }); this.sendRpc(game.metrics.metrics); }; game.world.myUid = null; ws.network.sendPacket(4, { displayName: game.options.nickname, extra: ws.data.extra }); // failsafe setTimeout(() => { if (ws.data.opcode === 5) { game.network.sendPingIfNecessary = function() { this.connecting = false; this.connected = true; var pingInProgress = (this.pingStart != null); if (pingInProgress) { return; } if (this.pingCompletion != null) { var msSinceLastPing = (new Date().getTime() - this.pingCompletion.getTime()); if (msSinceLastPing <= 5000) { return; } } this.pingStart = new Date(); this.sendPing({ nonce: 0 }); this.sendRpc(game.metrics.metrics); }; ws.close(); console.log('failed decoding opcode 4, might ran out of time to decode / reached the decoding limit, watch out for disconnections'); } }, 2500); }; if (ws.data.uid) { ws.uid = ws.data.uid; } if (ws.data.name) { ws.dataType = ws.data; } if (!options.aito && !ws.isclosed) { ws.isclosed = true; 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.sendInput({ 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 }); } } ws.network.sendPing({nonce: 0}); ws.network.sendRpc(game.metrics.metrics); } if (ws.data.name == "PartyShareKey") { ws.psk = ws.data; }; }; }; }; let timesTried = 0; window.playerFinder = () => { let rank; rank = (document.getElementById("findrank").value == "") ? 1 : document.getElementById("findrank").value; if (options.finder) { let ver = false; let playerData = game.ui.components.Leaderboard.leaderboardData[rank - 1]; let ws = new WebSocket(`ws://${game.options.servers[game.options.serverId].hostname}:80`); ws.binaryType = "arraybuffer"; ws.onclose = () => { ws.isclosed = true; } ws.onopen = (data) => { ws.network = new Game.currentGame.networkType(); 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.onEnterWorld = () => { // useless } ws.onmessage = msg => { ws.data = ws.network.codec.decode(msg.data); if (ws.data.opcode === 4) { game.network.sendPingIfNecessary = function() { this.connecting = false; this.connected = true; var pingInProgress = (this.pingStart != null); if (pingInProgress) { return; } if (this.pingCompletion != null) { var msSinceLastPing = (new Date().getTime() - this.pingCompletion.getTime()); if (msSinceLastPing <= 5000) { return; } } this.pingStart = new Date(); this.sendPing({ nonce: 0 }); this.sendRpc(game.metrics.metrics); }; } if (ws.data.opcode === 5) { /* let imports = { a: { a: function(a) { console.log(a) }, d: function(a) { console.log(a) }, b: function(a, b, c) { console.log(a, b, c) }, g: function() {}, c: function(a) { console.log(a) }, f: function(a) { console.log(a) }, e: function(a) { console.log(a) }, } }; (async () => { await fetch('asset/zombs_wasm.wasm').then(response => response.arrayBuffer()).then(bytes => WebAssembly.instantiate(bytes, imports)).then(result => { let asm = { memory: result.instance.exports.h, _MakeBlendField: function(a, b) { return result.instance.exports.l(a, b) }, _free: result.instance.exports.q, __wasm_call_ctors: result.instance.exports.j, _main: result.instance.exports.k, stackSave: result.instance.exports.m, stackRestore: result.instance.exports.n, stackAlloc: result.instance.exports.o, malloc: result.instance.exports.p } return asm.memory; }) })(); */ game.network.sendPingIfNecessary = function() { this.connecting = false; this.connected = false; var pingInProgress = (this.pingStart != null); if (pingInProgress) { return; }; if (this.pingCompletion != null) { var msSinceLastPing = (new Date().getTime() - this.pingCompletion.getTime()); if (msSinceLastPing <= 5000) { return; } }; this.pingStart = new Date(); this.sendPing({ nonce: 0 }); this.sendRpc(game.metrics.metrics); }; game.world.myUid = null; ws.network.sendPacket(4, { displayName: game.options.nickname, extra: ws.data.extra }); // failsafe setTimeout(() => { if (ws.data.opcode === 5) { game.network.sendPingIfNecessary = function() { this.connecting = false; this.connected = true; var pingInProgress = (this.pingStart != null); if (pingInProgress) { return; } if (this.pingCompletion != null) { var msSinceLastPing = (new Date().getTime() - this.pingCompletion.getTime()); if (msSinceLastPing <= 5000) { return; } } this.pingStart = new Date(); this.sendPing({ nonce: 0 }); this.sendRpc(game.metrics.metrics); }; ws.close(); console.log('failed decoding opcode 4, might ran out of time to decode / reached the decoding limit, watch out for disconnections'); } }, 2500); }; if (ws.data.uid) { ws.uid = ws.data.uid; } if (ws.data.entities) { let partyUid = []; for (let i2 of game.ui.playerPartyMembers) partyUid.push(i2.playerUid); for (let i in ws.data.entities) { if (ws.data.entities[i].uid == playerData.uid) { options.finder = false; window.playerX = Math.round(ws.data.entities[i].position.x); window.playerY = Math.round(ws.data.entities[i].position.y); document.getElementById("sendFinder").click(); game.ui.components.PopupOverlay.showHint(`Found player at X: ${window.playerX}, Y: ${window.playerY}.`); map.insertAdjacentHTML("beforeend", `
`) console.log(ws.data.entities[i], timesTried); timesTried = 0; ws.close(); } if (ws.data.entities[i].name) { ver = true; if (ws.data.entities[i].uid !== playerData.uid && ws.data.entities[i].uid !== ws.uid && partyUid.indexOf(ws.data.entities[i].uid) < 0) console.log(ws.data.entities[i]); }; if (ws.data.entities[i].model == "GoldStash") { let stashUid = ws.data.entities[i].uid; map.insertAdjacentHTML("beforeend", `
`) console.log(ws.data.entities[i]); setTimeout(() => { document.getElementById(`${stashUid}`).remove(); }, 240000); } } ws.network.sendInput({left: 1, up: 1}); } if (ws.data.name == "DayCycle") { ws.isDay = ws.data.response.isDay; } if (ws.data.name == "Dead") { ws.network.sendInput({respawn: 1}); } if (ver && !ws.isclosed) { ws.isclosed = true; if (timesTried < 24) { setTimeout(() => { timesTried++; ws.close(); window.playerFinder(); }, 5000); } else { setTimeout(() => { ws.close(); }, 5000) } } if (ws.data.name == "PartyShareKey") { ws.psk = ws.data; ws.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: game.ui.playerPartyShareKey}); } switch(ws.data.opcode) { case 4: ws.onEnterWorld(ws.data); break; } } } } function findNearestAltToStash() { if (window.allSockets.length < 1) return; let altArray = []; let targetGoldStash = Object.values(Game.currentGame.world.entities).find(building => building.fromTick.model == "GoldStash"); if (targetGoldStash.targetTick.partyId == game.ui.playerPartyId) return; for (let i in window.allSockets) if (!window.allSockets[i].myPlayer.dead) altArray.push(window.allSockets[i].myPlayer); if (altArray.length < 1) return; altArray.sort((a, b) => { return measureDistance(targetGoldStash.fromTick.position, a.position) - measureDistance(targetGoldStash.fromTick.position, b.position); }); return altArray[0]; }; window.findNearestAlt = findNearestAltToStash; function buySpear(ws, tier, startingTier) { let i = startingTier ? startingTier : 1; let buyLoop = () => { ws.network.sendRpc({name: "BuyItem", itemName: "Spear", tier: i}); ++i; if (i > Number(tier)) { ws.network.sendRpc({name: "EquipItem", itemName: "Spear", tier: ws.inventory ? ws.inventory.Spear.tier : ws.ui.inventory.Spear.tier}); return; } setTimeout(buyLoop(), 100); } buyLoop(); } function hexToRgb(hex) { var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); if(result){ var r= parseInt(result[1], 16); var g= parseInt(result[2], 16); var b= parseInt(result[3], 16); return [r, g, b]; } return null; }; let enemyStash; window.togglexkey = () => { window.xkey = !window.xkey; enemyStash = Object.values(Game.currentGame.world.entities).find(building => building.fromTick.model == "GoldStash"); } window.allSockets = []; let cloneTimeout = false; let targetPos = {x: 0, y: 0}; let inull = true; let i1 = true; let i2 = true; let i3 = true; window.sendWs = () => { let mousePosition3; let isOnControl = true; let isTrue = true; let altElem = document.createElement('div'); let altDisplay = document.createElement("p"); let ws = new WebSocket(`ws://${game.options.servers[game.options.serverId].hostname}:80`); ws.binaryType = "arraybuffer"; 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(); altDisplay.innerHTML = `Socket #${ws.cloneId}, State: [Closed]`; } ws.onopen = () => { ws.network = new game.networkType; 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.onEnterWorld = () => { altname++; game.network.sendPingIfNecessary = function() { this.connecting = false; this.connected = true; var pingInProgress = (this.pingStart != null); if (pingInProgress) { return; } if (this.pingCompletion != null) { var msSinceLastPing = (new Date().getTime() - this.pingCompletion.getTime()); if (msSinceLastPing <= 5000) { return; } } this.pingStart = new Date(); this.sendPing({ nonce: 0 }); this.sendRpc(game.metrics.metrics); }; } ws.onmessage = msg => { ws.data = ws.network.codec.decode(msg.data); if (ws.data.opcode === 4) { ws.onEnterWorld(); console.log(ws.data); console.log(`${ws.data.players + 1}/32 players, ${ws.cloneId} alts in`); } if (ws.data.opcode === 5) { /* let imports = { a: { a: function(a) { console.log(a) }, d: function(a) { console.log(a) }, b: function(a, b, c) { console.log(a, b, c) }, g: function() {}, c: function(a) { console.log(a) }, f: function(a) { console.log(a) }, e: function(a) { console.log(a) }, } }; (async () => { await fetch('asset/zombs_wasm.wasm').then(response => response.arrayBuffer()).then(bytes => WebAssembly.instantiate(bytes, imports)).then(result => { let asm = { memory: result.instance.exports.h, _MakeBlendField: function(a, b) { return result.instance.exports.l(a, b) }, _free: result.instance.exports.q, __wasm_call_ctors: result.instance.exports.j, _main: result.instance.exports.k, stackSave: result.instance.exports.m, stackRestore: result.instance.exports.n, stackAlloc: result.instance.exports.o, malloc: result.instance.exports.p } return asm.memory; }) })(); */ game.network.sendPingIfNecessary = function() { this.connecting = false; this.connected = false; var pingInProgress = (this.pingStart != null); if (pingInProgress) { return; }; if (this.pingCompletion != null) { var msSinceLastPing = (new Date().getTime() - this.pingCompletion.getTime()); if (msSinceLastPing <= 5000) { return; } }; this.pingStart = new Date(); this.sendPing({ nonce: 0 }); this.sendRpc(game.metrics.metrics); }; game.world.myUid = null; ws.network.sendPacket(4, {displayName: game.options.nickname, extra: ws.data.extra }); setTimeout(() => { if (ws.data.opcode == 5) { altDisplay.id = `alt${ws.cloneId}`; altDisplay.innerHTML = `Socket #${ws.cloneId}, State: [Failed Opcode 4]`; document.getElementById("altstate").appendChild(altDisplay); }; }, 5000); }; /* if (ws.data.opcode === 9) { console.log(ws.data); }; */ if (isTrue) { isTrue = !isTrue; if (ws.psk) { ws.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: game.ui.getPlayerPartyShareKey()}); altElem.classList.add('hud-map-player'); altElem.style.display = "block"; document.getElementsByClassName('hud-map')[0].appendChild(altElem); altDisplay.id = `alt${ws.cloneId}`; altDisplay.innerHTML = `Socket #${ws.cloneId}, State: [Open]`; document.getElementById("altstate").appendChild(altDisplay); } else { setTimeout(() => { if (ws.psk) { ws.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: game.ui.getPlayerPartyShareKey()}); altElem.classList.add('hud-map-player'); altElem.style.display = "block"; document.getElementsByClassName('hud-map')[0].appendChild(altElem); altDisplay.id = `alt${ws.cloneId}`; altDisplay.innerHTML = `Socket #${ws.cloneId}, State: [Open]`; document.getElementById("altstate").appendChild(altDisplay); }; }, 1000) } ws.network.sendInput({left: 1, 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) { if (e.keyCode == 81 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { setTimeout(() => { var nextWeapon = location.hostname == "zombs.io" ? 'Pickaxe' : "Crossbow"; var weaponOrder = location.hostname == "zombs.io" ? ['Pickaxe', 'Spear', 'Bow', 'Bomb'] : ["Crossbow", '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 (e.keyCode == 72 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { ws.network.sendRpc({name: 'LeaveParty'}); } if (e.keyCode == 74 && document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { ws.network.sendRpc({name: 'JoinPartyByShareKey', partyShareKey: game.ui.playerPartyShareKey}); } if (e.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 (e.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 (e.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 (e.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}) } } } let KeyCode = e.keyCode; if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (!ws.automove) { if (KeyCode == 104) { ws.network.sendInput({up: 1, down: 0}); } if (KeyCode == 102) { ws.network.sendInput({right: 1, left: 0}); } if (KeyCode == 98) { ws.network.sendInput({down: 1, up: 0}); } if (KeyCode == 100) { ws.network.sendInput({left: 1, right: 0}); } if (KeyCode == 87) { ws.network.sendInput({up: 1, down: 0}); } if (KeyCode == 68) { 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 (e.keyCode == 82) { // key R (wtf) ws.network.sendRpc({name: "BuyItem", itemName: "HealthPotion", tier: 1}) ws.network.sendRpc({name: "EquipItem", itemName: "HealthPotion", tier: 1}) } if (KeyCode == 78) { // key N ws.network.sendRpc({ "name": "EquipItem", "itemName": "PetCARL", "tier": ws.inventory.PetCARL.tier }) } if (KeyCode == 77) { // Key M 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) { // key ] 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 == 104) { ws.network.sendInput({up: 0}); } if (KeyCode == 102) { ws.network.sendInput({right: 0}); } if (KeyCode == 98) { ws.network.sendInput({down: 0}); } if (KeyCode == 100) { 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}); } } if (KeyCode == 187) { 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 (KeyCode == 188) { if (ws.myPet) { ws.network.sendRpc({name: "DeleteBuilding", uid: ws.myPet.uid}); } } } } } }) document.getElementsByClassName("hud")[0].addEventListener("mousedown", function(e) { let mouseToWorld = game.renderer.screenToWorld(game.ui.mousePosition.x,game.ui.mousePosition.y); if (!ws.isclosed) { if (e.which === 3 && isOnControl) { if (window.mousemove) { window.mousemove = false; window.moveaway = true; if (ws.myPlayer.position.y - mouseToWorld.y > 1) { ws.network.sendInput({up: 0}) } else { ws.network.sendInput({up: 1}) } if (-ws.myPlayer.position.y + mouseToWorld.y > 1) { ws.network.sendInput({down: 0}) } else { ws.network.sendInput({down: 1}) } if (-ws.myPlayer.position.x + mouseToWorld.x > 1) { ws.network.sendInput({right: 0}) } else { ws.network.sendInput({right: 1}) } if (ws.myPlayer.position.x - mouseToWorld.x > 1) { ws.network.sendInput({left: 0}) } else { ws.network.sendInput({left: 1}) } } if (!window.mousemove) { ws.automove = true; if (ws.myPlayer.position.y - mouseToWorld.y > 1) { ws.network.sendInput({up: 0}) } else { ws.network.sendInput({up: 1}) } if (-ws.myPlayer.position.y + mouseToWorld.y > 1) { ws.network.sendInput({down: 0}) } else { ws.network.sendInput({down: 1}) } if (-ws.myPlayer.position.x + mouseToWorld.x > 1) { ws.network.sendInput({right: 0}) } else { ws.network.sendInput({right: 1}) } if (ws.myPlayer.position.x - mouseToWorld.x > 1) { ws.network.sendInput({left: 0}) } else { ws.network.sendInput({left: 1}) } } } 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.which === 3) { ws.network.sendInput({up: 0}) ws.network.sendInput({down: 0}) ws.network.sendInput({right: 0}) ws.network.sendInput({left: 0}) if (!window.altFollowPlayer && window.moveaway === true) { window.mousemove = true; window.moveaway = false; } else ws.automove = false; } 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 (window.mouseclick) { if (e.button == 2) targetPos = game.renderer.screenToWorld(game.ui.mousePosition.x,game.ui.mousePosition.y); } } }); let t1 = location.hostname == "zombs.io" ? 0 : 1; document.getElementsByClassName("hud-shop-item")[t1 + 0].addEventListener('click', function() { if (!ws.isclosed) 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.isclosed) { if (!ws.inventory.Spear) { ws.network.sendRpc({name: "BuyItem", itemName: "Spear", tier: 1}); } else { ws.network.sendRpc({name: "BuyItem", itemName: "Spear", tier: ws.inventory.Spear.tier+1}); } } }); document.getElementsByClassName("hud-shop-item")[t1 + 2].addEventListener('click', function() { if (!ws.isclosed) { 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.isclosed) { 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() { if (!ws.isclosed) ws.network.sendRpc({name: "BuyItem", itemName: "ZombieShield", tier: ws.inventory.ZombieShield ? (ws.inventory.ZombieShield.tier + 1) : 1}); }); document.getElementsByClassName("hud-toolbar-item")[t1 + 0].addEventListener('mouseup', function(e) { if (!e.button && !ws.isclosed) { 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.isclosed) { ws.network.sendRpc({name: "EquipItem", itemName: "Spear", tier: ws.inventory.Spear.tier}); } }); document.getElementsByClassName("hud-toolbar-item")[t1 + 2].addEventListener('mouseup', function(e) { if (!e.button && !ws.isclosed) { 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.isclosed) { 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.isclosed) { ws.network.sendRpc({name: "EquipItem", itemName: "HealthPotion", tier: 1}); } }); document.getElementsByClassName("hud-toolbar-item")[t1 + 5].addEventListener('mouseup', function(e) { if (!e.button && !ws.isclosed) { ws.network.sendRpc({name: "EquipItem", itemName: "PetHealthPotion", tier: 1}); } }); document.getElementsByClassName("hud-toolbar-item")[t1 + 6].addEventListener("mouseup", function(e) { if (!e.button && !ws.isclosed) { ws.network.sendRpc({name: "EquipItem", itemName: "PetWhistle", tier: 1}) } }); document.getElementsByClassName("hud-toolbar-item")[t1 + 7].addEventListener('mouseup', function(e) { if (!e.button && !ws.isclosed) { ws.network.sendRpc({name: "BuyItem", itemName: "ZombieShield", tier: ws.inventory.ZombieShield ? (ws.inventory.ZombieShield.tier + 1) : 1}); }; }); if (window.aim) { ws.autoaim = true; } if (window.move) { ws.automove = true; } document.getElementById("deleteAllAlt").addEventListener('click', () => { ws.close(); altname = ws.cloneId; }) document.getElementById("resp").addEventListener('click', () => { ws.network.sendInput({respawn: 1}); }) document.getElementById("coloralt").addEventListener('click', () => { for (let i in game.world.entities) { if (game.world.entities[i].entityClass === "PlayerEntity" && game.world.entities[i].fromTick.uid === ws.uid) { var hexValue = "1234567890abcdef"; var hexLength = 6; var hex = ""; for (let i = 0; i < hexLength; i++) hex += hexValue[Math.floor(Math.random() * hexValue.length)]; let hr = hexToRgb(hex); game.world.entities[i].currentModel.nameEntity.setColor(hr[0], hr[1], hr[2]); }; }; }) document.getElementsByClassName("controlon")[0].addEventListener('click', () => { isOnControl = true; }) document.getElementsByClassName("controloff")[0].addEventListener('click', () => { isOnControl = false; }) document.getElementsByClassName("hud-respawn-btn")[0].addEventListener('click', () => { if (options.rwp) { ws.network.sendInput({respawn: 1}); } }) } 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.getMyUid(); 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]; // AS FAR AS I CAN TELL THE LINE BELOW IS USELESS AS FUCK 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]; } /* if (ws.data.entities[i].model == "Tree" || ws.data.entities[i].model == "Stone" || ws.data.entities[i].model == "NeutralCamp") { if (!entityMaps.has(i)) { entityMaps.add(i); game.world.createEntity(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]; } } 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.getMyUid(), canSell: 1}); ws.network.sendRpc({name: "SetOpenParty", isOpen: 1}); setTimeout(() => { ws.network.sendRpc({name: "SetPartyName", partyName: ws.cloneId + ""}); }, 1000); } } if (game.ui.playerPartyId == ws.myPlayer.partyId && game.ui.playerPartyLeader) { game.network.sendRpc({name: "SetPartyMemberCanSell", uid: ws.uid, canSell: 1}); }; }, 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.name == "PartyApplicant") { ws.partyApplicant = ws.data.response; if (ws.partyApplicant.applicantUid == game.world.getMyUid()) { ws.network.sendRpc({name: "PartyApplicantDecide", applicantUid: game.world.getMyUid(), accepted: 1}) } } if (ws.data.name == "ReceiveChatMessage") { ws.message = ws.data; if (window.allSockets[ws.cloneId-1]) { window.allSockets[ws.cloneId-1] = ws; }; if (ws.message.response.uid == game.world.getMyUid()) { if (ws.message.response.message == "c") isOnControl = true; if (ws.message.response.message == `c${ws.cloneId}`) isOnControl = true; if (ws.message.response.message == "u") isOnControl = false; if (ws.message.response.message == `u${ws.cloneId}`) isOnControl = false; if (ws.message.response.message == `!psk ${ws.cloneId}`) copyText(`${ws.psk.response.partyShareKey}`); if (ws.message.response.message == `!info ${ws.cloneId}`) game.ui.components.PopupOverlay.showHint(`${ws.uid} - ${ws.cloneId}`); if (ws.message.response.message == `!dc ${ws.cloneId}`) ws.close(); if (ws.message.response.message == "!s") { document.getElementById("altrss").innerHTML += `

${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};

`; setTimeout(() => { document.getElementById("altrss").innerHTML = ""; }, 10000); } if (ws.message.response.message == "!h") ws.autohi = !ws.autohi; if (ws.message.response.message == "!ahrc") { ws.ahrc = true; }; if (ws.message.response.message == `!ahrc ${ws.cloneId}`) { game.ui.components.PopupOverlay.showHint(`Turned on AHRC for ${ws.cloneId}`); ws.ahrc = true; }; if (ws.message.response.message == "!!ahrc") { ws.ahrc = false; }; if (ws.message.response.message == `!!ahrc ${ws.cloneId}`) { game.ui.components.PopupOverlay.showHint(`Turned off AHRC for ${ws.cloneId}`); ws.ahrc = false; } if (ws.message.response.message == "!space") { ws.network.sendInput({space: 0}); ws.network.sendInput({space: 1}); } if (ws.message.response.message == `${ws.cloneId}`) { ws.network.sendInput({space: 0}); ws.network.sendInput({space: 1}); ws.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: Game.currentGame.ui.getPlayerPartyShareKey() + ""}); } if (ws.message.response.message == "!upgrade") for (let i in ws.buildings) ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid}); if (ws.message.response.message == "!re") ws.network.sendInput({respawn: 1}); if (ws.message.response.message == `!re ${ws.cloneId}`) ws.network.sendInput({respawn: 1}); if (ws.message.response.message == "!upStash") { for (let i in ws.buildings) { if (ws.buildings[i].type == "GoldStash") { ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid}); break; } } } if (ws.message.response.message.includes("!up") && [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].indexOf(Number(ws.message.response.message[3])) + 1 >= 1) { const towerOrder = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].indexOf(Number(ws.message.response.message[3])); const towerType = ['Harvester', 'Wall', 'Door', 'SlowTrap', 'ArrowTower', 'CannonTower', 'MeleeTower', 'BombTower', 'MagicTower', 'GoldMine'][towerOrder]; for (let i in ws.buildings) { if (ws.buildings[i].type == towerType) { ws.network.sendRpc({name: "UpgradeBuilding", uid: ws.buildings[i].uid}); } } } } } if (ws.autohi) { if (ws.data.entities) { for (let i in ws.data.entities) { if (ws.data.entities[i].name) { ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `hi ${ws.data.entities[i].name}`}); } } } } 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 (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.currentGame.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}) } } } ws.network.sendPing({nonce: 0}); ws.network.sendRpc(game.metrics.metrics); } 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 (ws.data.name == "Dead") { if (options.ar) { ws.network.sendInput({respawn: 1}); } if (window.autoRaid) { ws.network.sendRpc({name: 'LeaveParty'}); }; if (window.xkey) { ws.network.sendInput({respawn: 1}); setTimeout(() => { ws.network.sendRpc({name: "BuyItem", itemName: "Bomb", tier: 1}); ws.network.sendRpc({name: "EquipItem", itemName: "Bomb", tier: 1}); }, 250); } } if(window.mousemove && !window.altFollowPlayer) { ws.automove = true; let mouseToWorld = game.renderer.screenToWorld(game.ui.mousePosition.x,game.ui.mousePosition.y); if (ws.myPlayer) { if (ws.myPlayer.position) { if (ws.myPlayer.position.y - mouseToWorld.y > 1) { ws.network.sendInput({ down: 0 }) } else { ws.network.sendInput({ down: 1 }) } if (-ws.myPlayer.position.y + mouseToWorld.y > 1) { ws.network.sendInput({ up: 0 }) } else { ws.network.sendInput({ up: 1 }) } if (-ws.myPlayer.position.x + mouseToWorld.x > 1) { ws.network.sendInput({ left: 0 }) } else { ws.network.sendInput({ left: 1 }) } if (ws.myPlayer.position.x - mouseToWorld.x > 1) { ws.network.sendInput({ right: 0 }) } else { ws.network.sendInput({ right: 1 }) } } } } if (window.altFollowPlayer && !window.mousemove) { let myPos = game.ui.playerTick.position; if (ws.myPlayer) { if (ws.myPlayer.position) { if (ws.myPlayer.position.y - myPos.y > 1) { ws.network.sendInput({ down: 0 }) } else { ws.network.sendInput({ down: 1 }) } if (-ws.myPlayer.position.y + myPos.y > 1) { ws.network.sendInput({ up: 0 }) } else { ws.network.sendInput({ up: 1 }) } if (-ws.myPlayer.position.x + myPos.x > 1) { ws.network.sendInput({ left: 0 }) } else { ws.network.sendInput({ left: 1 }) } if (ws.myPlayer.position.x - myPos.x > 1) { ws.network.sendInput({ right: 0 }) } else { ws.network.sendInput({ right: 1 }) } } } }; if (window.mouseclick) { if (window.mousemove) document.getElementsByClassName("emm")[0].click(); if (!ws.automove) ws.automove = true; if (ws.myPlayer) { if (ws.myPlayer.position) { if (1 == 1) { if (ws.myPlayer.position.y - targetPos.y > 1) { ws.network.sendInput({ down: 0 }) } else { ws.network.sendInput({ down: 1 }) } if (-ws.myPlayer.position.y + targetPos.y > 1) { ws.network.sendInput({ up: 0 }) } else { ws.network.sendInput({ up: 1 }) } if (-ws.myPlayer.position.x + targetPos.x > 1) { ws.network.sendInput({ left: 0 }) } else { ws.network.sendInput({ left: 1 }) } if (ws.myPlayer.position.x - targetPos.x > 1) { ws.network.sendInput({ right: 0 }) } else { ws.network.sendInput({ right: 1 }) } } } } } if (window.xkey) { let myPos = enemyStash; if (ws.myPlayer) { if (ws.myPlayer.position) { if (1 == 1) { if (ws.myPlayer.position.y - myPos.y > 100) { ws.network.sendInput({ down: 0 }) } else { ws.network.sendInput({ down: 1 }) } if (-ws.myPlayer.position.y + myPos.y > 100) { ws.network.sendInput({ up: 0 }) } else { ws.network.sendInput({ up: 1 }) } if (-ws.myPlayer.position.x + myPos.x > 100) { ws.network.sendInput({ left: 0 }) } else { ws.network.sendInput({ left: 1 }) } if (ws.myPlayer.position.x - myPos.x > 100) { ws.network.sendInput({ right: 0 }) } else { ws.network.sendInput({ right: 1 }) } }; }; }; }; if (ws.autoaim) { if (ws.playerTick) { ws.network.sendInput({mouseMoved: game.inputPacketCreator.screenToYaw((-ws.myPlayer.position.x + ws.playerTick.position.x)*100, (-ws.myPlayer.position.y + ws.playerTick.position.y)*100)}) } } if (window.shouldStartScript) { if (getbosswaves() && getIsZombiesActive() && game.ui.playerPartyMembers.length !== 1) { if (inull) { inull = false; ws.network.sendRpc({name: "LeaveParty"}); setTimeout(() => { inull = true; }, 250); } } if (ws.dayTicker < -18 && ws.dayTicker >= -23 && !ws.isDay && getIsZombiesActive() && game.ui.playerPartyMembers.length !== 1) { if (i1) { i1 = false; ws.network.sendRpc({name: "LeaveParty"}); setTimeout(() => { i1 = true; }, 250); } } if (!getIsZombiesActive() && game.ui.playerPartyMembers.length !== 4 && !getactiveCommingbosswaves()) { if (i2) { i2 = false; ws.network.sendRpc({name: "JoinPartyByShareKey", partyShareKey: Game.currentGame.ui.getPlayerPartyShareKey() + ""}); setTimeout(() => { i2 = true; }, 250); } } if (ws.dayTicker > 18 && ws.dayTicker <= 23 && getIsZombiesActive() && ws.isDay && game.ui.playerPartyMembers.length !== 4) { if (i3) { i3 = false; ws.network.sendRpc({name: "LeaveParty"}); setTimeout(() => { i3 = true; }, 250) } } } if (ws.data.opcode == 0) { if (options.heal) { if (ws.myPlayer) { let playerHealth = (ws.myPlayer.health/ws.myPlayer.maxHealth) * 100; if (playerHealth <= 50) { ws.network.sendRpc({name: "BuyItem", itemName: "HealthPotion", tier: 1}) ws.network.sendRpc({name: "EquipItem", itemName: "HealthPotion", tier: 1}) } } if (ws.myPet) { let petHealth = (ws.myPet.health/ws.myPet.maxHealth) * 100; if (petHealth <= 70) { ws.network.sendRpc({name: "BuyItem", itemName: "PetHealthPotion", tier: 1}) ws.network.sendRpc({name: "EquipItem", itemName: "PetHealthPotion", tier: 1}) } } } if (options.spamChat) { if (getId('4i2').value === "") { const randomSpamText = [`${garbageGenerator()} BIG RAID ${garbageGenerator()}`, `?verify`, "hi", "ez", "Super Idolçš„ç¬‘å®¹éƒ½æ²¡ä½ çš„ç”œå…«æœˆæ£åˆçš„é˜³å…‰éƒ½æ²¡ä½ è€€çœ¼çƒçˆ± 105 °Cçš„ä½ æ»´æ»´æ¸…çº¯çš„è’¸é¦æ°´"]; const randomSpam = Math.floor(Math.random() * randomSpamText.length); let randomText = randomSpamText[randomSpam]; ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `${randomText}`}); } else { ws.network.sendRpc({name: "SendChatMessage", channel: "Local", message: `${garbageGenerator()} ${getId('4i2').value} ${garbageGenerator()}`}); }; }; if (window.Join4Tier2Spear === true) { if (!ws.inventory.Spear) { ws.network.sendRpc({name: 'JoinPartyByShareKey', partyShareKey: game.ui.playerPartyShareKey}); if (ws.myPlayer.gold >= spearCostArray[document.getElementById('speartier').value - 1]) { buySpear(ws, document.getElementById('speartier').value); ws.network.sendRpc({name: 'LeaveParty'}); }; } }; if (ws.ahrc) { for(let uid in ws.buildings) { let obj = ws.buildings[uid]; if (obj.type == "Harvester") { let amount = obj.tier * 0.05 - 0.02; ws.network.sendRpc({name: "AddDepositToHarvester", uid: obj.uid, deposit: amount}); ws.network.sendRpc({name: "CollectHarvester", uid: obj.uid}); }; }; }; if (window.joinRandomAlt) { let randomAlt = Math.floor(Math.random() * window.allSockets.length); ws.network.sendRpc({name: 'JoinPartyByShareKey', partyShareKey: window.allSockets[randomAlt].psk.response.partyShareKey}); }; if (options.autoAim && window.targets.length > 0) { const myPos = ws.myPlayer.position; const target = window.targets[0]; const reversedAim = game.inputPacketCreator.screenToYaw((target.position.x - myPos.x) * 100, (target.position.y - myPos.y) * 100); ws.network.sendPacket(3, {mouseMoved: reversedAim}); } if (options.antiAttack) { if (ws.myPet) { for (let i in window.allSockets) { if (ws.myPet.lastPetDamageTarget == window.allSockets[i].uid || ws.myPet.lastPetDamageTarget == game.world.getMyUid()) { ws.network.sendRpc({name: "EquipItem", itemName: "PetWhistle", tier: 1}); }; }; }; }; 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.activebow) { ws.network.sendInput({space: 0}) ws.network.sendInput({space: 1}) }; }; }; }; var getIsZombiesActive = function () { let isZombiesActive = false; for (let i in game.world.entities) { if (game.world.entities[i].fromTick.model !== "NeutralTier1") { if (game.world.entities[i].fromTick.entityClass == "Npc") { isZombiesActive = true; } } } return isZombiesActive; }; var getactiveCommingbosswaves = function () { let activeCommingbosswave = false; let aftercommingbosswaves = [48, 56, 64, 72, 80, 88, 96, 104, 120]; for (let i = 0; i < aftercommingbosswaves.length; i++) { if (game.ui.playerTick.wave == aftercommingbosswaves[i]) { activeCommingbosswave = true; } } return activeCommingbosswave; }; var getactiveCommingbosswaves2 = function () { let activeCommingbosswave = false; let aftercommingbosswaves = [8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 120]; for (let i = 0; i < aftercommingbosswaves.length; i++) { if (game.ui.playerTick.wave == aftercommingbosswaves[i]) { activeCommingbosswave = true; } } return activeCommingbosswave; }; var getbosswaves = function () { let activebosswave = false; let allbosswaves = [9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97, 105, 121]; for (let i = 0; i < allbosswaves.length; i++) { if (game.ui.playerTick.wave == allbosswaves[i]) { activebosswave = true; } } return activebosswave; }; // session saver part from eh + jrcc /* let sessionElem = document.createElement('optgroup'); sessionElem.innerHTML = ` `; sessionElem.label = "Sessions"; game.ui.components.Intro.serverElem.appendChild(sessionElem); window.s = sessionElem; let sesOn = false; let sessionUrl = "SessionSaver.iwebbysaregod.repl.co"; JSON.safeStringify = (obj, indent = 2) => { let cache = []; const retVal = JSON.stringify(obj, (key, value) => typeof value === "object" && value !== null ? cache.includes(value) ? undefined : cache.push(value) && value : value, indent); cache = null; return retVal; }; game.network.connect2 = game.network.connect; game.network.connect = options => { let isUsingSession = false, sessionId = null; for (let i of sessionElem.children) { if (i.selected) { isUsingSession = true; sessionId = i.value; }; } if (isUsingSession) { let sesWs = new WebSocket(`wss://${sessionUrl}`); sesWs.onopen = () => { sesWs.send(JSON.stringify({ sessionId: sessionId, type: "init", o: "get" })); let hasEnteredWorld = false; sesWs.onmessage = msg => { let data = JSON.parse(msg.data); if (data.type == "data") { if (data.o == "get") { if (!hasEnteredWorld) { hasEnteredWorld = true; game.world.onEnterWorld({allowed: true}); game.ui.components.Intro.onEnterWorld({allowed: true}); game.world.init(); }; data.data.entities = JSON.parse(data.data.entities); game.renderer.lookAtPosition(data.data.tick.position.x, data.data.tick.position.y); game.world.localPlayer = data.data.tick; for (let uid in data.data.entities) { if (!game.world.entities[uid]) { game.world.createEntity(data.data.entities[uid]) }; } }; }; } sesWs.onclose = e => { game.ui.components.Intro.onConnectionError(); console.log(e.reason); getElem("hud-intro-play")[0].innerText = ""; getId('playspan').style.margin = '-130px 0px 0px 545px'; getId('playspan').style.display = "block"; }; }; return; }; game.network.connect2(options); }; */ getElem('hud-shop-item')[6].remove(); // more horns getElem('hud-shop-item')[8].remove(); // more pet window.altNames = ""; let sm = document.querySelector("#hud-menu-settings"); sm.style.backgroundColor = "rgba(28, 92, 65, 0.55)"; sm.style.border = "5px solid white"; sm.innerHTML = `

Main Menu



` let searchpgs = document.getElementById("searchpgs"); let srchbtn = document.getElementById("srchbtn"); searchpgs.addEventListener("keydown", function(e) { if(e.keyCode === 13) { window.searchTab(this.value); }; }); srchbtn.addEventListener("click", function(e) { window.searchTab(searchpgs.value); }); window.focusedTab = 1; let tabId = 2; let tabs = document.getElementById("tabs"); let addTab = document.getElementById("addtab"); let addTabRightEffect = 175; let addTabDownEffect = -40; let tabsAmt = 1; let pageDisp = document.getElementById("pageDisp"); let tabsData = [{ type: "mainMenu", html: `

sasquatch

Developer: eh#2907

Co-Developer: deathrain


Categories

`, keywords: [] }, { type: "score", html: `

Score


`, keywords: ["score", "wr", "4player", "4p", "trick", "base"], name: "Score", category: true }, { type: "waves", html: `

Waves


`, keywords: ["wave", "wr", "base", "alt", "bot", "clone"], name: "Waves", category: true }, { type: "alts", html: `

Alts


# of alts: //nlt

Removing alts is still a work in progress, sometimes it may not work

//pche

`, keywords: ["alt", "bot", "4p", "trick", "fill", "clone"], name: "Alts", cache: ``, category: true, script: ` let slctbnv = document.getElementById("slctbnv"); slctbnv.innerHTML = window.altNames; let bn = document.getElementById("BotName"); let an = document.getElementById("ALTname"); slctbnv.onchange = () => { bn.value = this.value; }; an.onclick = () => { let bnv = bn.value; localStorage.name = bnv; window.altNames += '
'; window.focusTab(window.focusedTab, { pche: window.getTabDataByType("alts").cache, nlt: window.nlt }); }; ` }, { type: "offense", html: `

Offense


`, keywords: ["raid", "kill", "offense", "offend"], name: "Offense", category: true }, { type: "defense", html: `

Defense


`, keywords: ["defense", "defend", "anti", "rebuild", "re build", "auto rebuild", "autorebuild", "auto", "shield", "fixed shield", "fixedshield", "afs", "arp", "revive", "pet"], name: "Defense", category: true }, { type: "playertrick", html: `

Player Trick

Will apply to the current alts, not send them


Related Pages

`, script: ` let tglpt = document.getElementById("tglpt"); if(window.playerTrickToggle) { tglpt.classList.add("btn-red"); tglpt.innerText = "Disable Player Trick" } else { tglpt.classList.add("btn-green"); tglpt.innerText = "Enable Player Trick" }; tglpt.addEventListener("click", function() { if(this.classList.contains("btn-green")) { this.classList.replace("btn-green", "btn-red"); this.innerText = "Disable Player Trick"; } else { this.classList.replace("btn-red", "btn-green"); this.innerText = "Enable Player Trick"; }; window.togglePlayerTrick(); }); `, keywords: ["4p", "4player", "trick", "score", "wr", "bot", "alt", "4 player"], name: "Player Trick", category: false }, { type: "search", html: `

//sqt

//rsl
`, keywords: [] }, { type: "afs", html: `

Auto Fix Shield

Automatically tries to upgrade to the maximum tier of shield, while fixing the low shield health glitch


Related Pages

`, script: ` let tglpt = document.getElementById("afstgl"); if(window.afsToggle) { tglpt.classList.add("btn-red"); tglpt.innerText = "Disable AFS" } else { tglpt.classList.add("btn-green"); tglpt.innerText = "Enable AFS" }; tglpt.addEventListener("click", function() { if(this.classList.contains("btn-green")) { this.classList.replace("btn-green", "btn-red"); this.innerText = "Disable AFS"; } else { this.classList.replace("btn-red", "btn-green"); this.innerText = "Enable AFS"; }; window.toggleAFS(); }); `, keywords: ["afs", "defense", "shield", "fix"], name: "AFS", category: false }, { type: "arp", html: `

Auto Revive Pets

May create lag


Related Pages

`, script: ` let arptgl = document.getElementById("arptgl"); if(window.arpToggle) { arptgl.classList.add("btn-red"); arptgl.innerText = "Disable Revive" } else { arptgl.classList.add("btn-green"); arptgl.innerText = "Enable Revive" }; arptgl.addEventListener("click", function() { if(this.classList.contains("btn-green")) { this.classList.replace("btn-green", "btn-red"); this.innerText = "Disable Revive"; } else { this.classList.replace("btn-red", "btn-green"); this.innerText = "Enable Revive"; }; window.toggleARP(); }); `, name: "Auto Revive", keywords: ["arp", "revive", "pet", "defense"], category: false }, { type: "misc", html: `

Miscellaneous

`, name: "Miscellaneous", keywords: ["misc", "zoom"], category: true }, { type: "ssts", html: `

Score Stats

Average SPW / player: N/A

`, name: "Score Stats", keywords: ["score", "stat", "analytic"], category: false }]; let currentTabs = [{ elem: document.getElementById("tab1"), type: "mainMenu", id: 1, ict: 0 }]; let bfTabs = [{ title: "Main Menu", type: "mainMenu", html: tabsData[0].html }]; let bfIndex = 0; window.nlt = 0; //pageDisp.style.overflow = "scroll"; sm.style.overflow = "scroll"; addTab.style.transition = "margin 300ms"; const arrAvg = arr => arr.reduce((a, b) => a + b, 0) / arr.length; window.scores = []; game.network.addRpcHandler("DayCycle", () => { window.newScore = game.ui.playerTick.score; window.scores.push(window.newScore - window.oldScore) window.oldScore = game.ui.playerTick.score; let cts = currentTabs[window.focusedTab]; if(cts) { if(cts.type === "ssts") { document.getElementById("aspw").innerText = `Average SPW: ${arrAvg(window.scores)}`; }; }; }); window.getTabDataByType = type => tabsData.find(i => i.type === type); const getTabById = id => currentTabs.find(i => i.id === id); pageDisp.innerHTML = window.getTabDataByType("mainMenu").html; const hint = (txt, time) => { game.ui.components.PopupOverlay.showHint(txt, time); }; const addRmTabFunctionality = (element, ict) => { element.addEventListener("click", function(e) { e.stopPropagation(); this.parentElement.parentElement.remove(); addTab.style.marginLeft = `${addTabRightEffect -= 150}px`; if((tabsAmt--) <= 1) { addTab.style.marginTop = `0px`; } else { addTab.style.marginTop = `-40px`; }; addTab.style.display = "block"; let ct = document.getElementsByClassName("tab"); let ctl = ct[ct.length - 1]; if(ctl) { let ctlid = parseInt(ctl.id.replace("tab", "")); window.focusTab(ctlid, true); }; currentTabs.splice(ict, 1); if(tabsAmt === 0) { pageDisp.innerHTML = ``; }; for(let itc of currentTabs) { itc.ict = currentTabs.indexOf(itc); }; }); }; const addTabFocusOnClickFunctionality = element => { element.addEventListener("click", function(e) { let irddt = {}; let ird = parseInt(this.id.replace("tab", "")); try { irddt = window.getTabDataByType(currentTabs[ird - 1].type); } catch {}; window.focusTab(ird, { pche: irddt.cache || "", nlt: window.nlt }); console.log(ird); }); }; addRmTabFunctionality(document.getElementById("rmtab1")); addTabFocusOnClickFunctionality(document.getElementById("tab1")); window.focusTab = (id, data) => { window.focusedTab = id; for(let i of currentTabs) { if(i.id !== id) { i.elem.style.backgroundColor = "#4b806a"; } else if(i.id === id) { i.elem.style.backgroundColor = "#6fa890"; let tdt = window.getTabDataByType(i.type); let vtdth = tdt.html; for(let iokvtd in data) { vtdth = vtdth.replaceAll(`//${iokvtd}`, data[iokvtd]); }; pageDisp.innerHTML = vtdth; if(tdt.script) { eval(tdt.script); }; } else { i.elem.style.backgroundColor = "#4b806a"; }; }; }; window.makeTab = (text, type) => { if((tabsAmt + 1) > 3) { addTab.style.display = "none"; return; } else { tabsAmt++; }; let tab = document.createElement("div"); tab.classList.add("tab"); tab.innerHTML = `

${text}

`; tab.id = `tab${tabId}`; console.log(tab.id); tabs.append(tab); let elem = document.getElementById(`tab${tabId}`); let ctobj = { elem: elem, type: type, id: tabId }; let ict = currentTabs.length - 1; ctobj.ict = ict; currentTabs.push(ctobj); for(let itc of currentTabs) { itc.ict = currentTabs.indexOf(itc); }; console.log(currentTabs); let tdt = window.getTabDataByType(type); window.focusTab(tabId, { sqt: text, pche: tdt.cache || "" }); addTab.style.marginLeft = `${addTabRightEffect += 150}px`; console.log(`${tabsAmt} tabsAmt`); let oldTabId = tabId; tabId++; if(tabsAmt === 3) { addTab.style.display = "none"; }; if(tabsAmt >= 1) { addTab.style.marginTop = "-40px"; }; let currentRmTab = document.getElementById(`rmtab${oldTabId}`); addRmTabFunctionality(currentRmTab, ict); addTabFocusOnClickFunctionality(document.getElementById(`tab${oldTabId}`)); bfTabs.push({ title: text, script: tdt.script, html: tdt.html, type: type }); bfIndex++; return ctobj; }; window.redirectTab = function(text, type) { let gd = getTabById(window.focusedTab); let gid = gd.elem; gid.innerHTML = `

${text}

`; currentTabs[gd.ict].type = type; let tdt = window.getTabDataByType(type); pageDisp.innerHTML = tdt.html; bfTabs.push({ title: text, script: tdt.script, html: tdt.html, type: type }); bfIndex++; if(tdt.script) { eval(tdt.script); }; addRmTabFunctionality(document.getElementById(`rmtab${gid.id}`), gid.ict); let idrtd = gd.id; let irddt = window.getTabDataByType(currentTabs[idrtd - 1].type); window.focusTab(idrtd, { pche: irddt.cache || "", nlt: window.nlt }); }; window.redirectTab2 = function(text, type) { let gd = getTabById(window.focusedTab); let gid = gd.elem; gid.innerHTML = `

${text}

`; currentTabs[gd.ict].type = type; let tdt = window.getTabDataByType(type); pageDisp.innerHTML = tdt.html; if(tdt.script) { eval(tdt.script); }; addRmTabFunctionality(document.getElementById(`rmtab${gid.id}`), gid.ict); let idrtd = gd.id; let irddt = window.getTabDataByType(currentTabs[idrtd - 1].type); window.focusTab(idrtd, { pche: irddt.cache || "", nlt: window.nlt }); }; window.bfRedirect = index => { let bfri = bfTabs[index]; window.redirectTab2(bfri.title, bfri.type); }; window.bfb = () => { let bfim = bfTabs[bfIndex - 1]; if(bfim) { window.bfRedirect(bfIndex---1); }; }; window.bff = () => { let bfip = bfTabs[bfIndex + 1]; if(bfip) { window.bfRedirect(bfIndex+++1); }; }; const qryify = qry => { return (qry.length > 2) ? `${qry.slice(0, 2)}...` : qry }; window.searchTab = function(query) { if(getTabById(window.focusedTab)) { let gd = getTabById(window.focusedTab); let gid = gd.elem; let rsl = ``; for(let itd of tabsData) { for(let itkd of itd.keywords) { if(query.toLowerCase().includes(itkd) && !rsl.includes(itd.name)) { rsl += `
`; }; }; }; if(rsl.length === 0) { rsl = `No results for ${query}`; }; let data = { sqt: `Results for: ${query}`, rsl: rsl }; gid.innerHTML = `

Search - ${qryify(query)}

`; gid.type = "search"; let tdt = window.getTabDataByType("search"); let vtdth = tdt.html; for(let iokvtd in data) { vtdth = vtdth.replaceAll(`//${iokvtd}`, data[iokvtd]); }; pageDisp.innerHTML = vtdth; if(tdt.script) { eval(tdt.script); }; addRmTabFunctionality(document.getElementById(`rmtab${gid.id}`), gid.ict); } else { window.makeTab(`Search - ${qryify(query)}`, "search"); }; }; addTab.addEventListener("click", function() { window.makeTab("Main Menu", "mainMenu"); }); let sockets = []; window.sendWs = () => { document.getElementById("nfnlt").innerHTML = `# of alts: ${window.nlt+++1}`; let hc = `

`; let iframe = document.createElement("iframe"); iframe.style.display = "none"; iframe.src = `http://zombs.io/#/${game.options.serverId}/${game.ui.getPlayerPartyShareKey()}`; let ifd = `s${Math.floor(Math.random() * 100000)}`; iframe.id = ifd; document.body.append(iframe); let ifde = document.getElementById(ifd); ifde.addEventListener('load', function() { this.contentWindow.eval(` document.querySelector(".hud-intro-play").click(); game.network.addEnterWorldHandler(() => { console.log("loaded alt"); game.network.sendInput({ left: 1, up: 1 }); game.stop(); }); `); }); let si = sockets.length; ifde.rmh = hc; ifde.si = si; ifde.nli = window.nlt; sockets.push(ifde); window.getTabDataByType("alts").cache += hc; window.focusTab(window.focusedTab, { nlt: window.nlt, pche: window.getTabDataByType("alts").cache }); }; window.rmAlt = num => { let sck = sockets[num-1]; window.nlt--; console.log(num); sck.remove(); console.log(sck.nli); document.getElementById(`rmalt${sck.nli}`).remove(); window.getTabDataByType("alts").cache = document.getElementById("pches").innerHTML; window.focusTab(window.focusedTab, { nlt: window.nlt, pche: window.window.getTabDataByType ("alts").cache }); }; const kickAll = () => { for (let i in game.ui.playerPartyMembers) { if (game.ui.playerPartyMembers[i].playerUid == game.ui.playerTick.uid) continue; game.network.sendRpc({ name: "KickParty", uid: game.ui.playerPartyMembers[i].playerUid }); }; }; const joinAll = () => { sockets.forEach(socket => { console.log(socket); socket.contentWindow.eval(` game.network.sendRpc({ name: "JoinPartyByShareKey", partyShareKey: "${game.ui.getPlayerPartyShareKey()}" }); `); }); }; let isDay, tickStarted, tickToEnd, hasKicked = false, hasJoined = false; game.network.addEntityUpdateHandler(tick => { if(window.playerTrickToggle) { if (!hasKicked) { if (tick.tick >= tickStarted + 18 * (1000 / game.world.replicator.msPerTick)) { kickAll(); hasKicked = true; }; }; if (!hasJoined) { if (tick.tick >= tickStarted + 118 * (1000 / game.world.replicator.msPerTick)) { joinAll(); hasJoined = true; }; }; }; }); game.network.addRpcHandler("DayCycle", e => { isDay = !!e.isDay; if (!isDay) { tickStarted = e.cycleStartTick; tickToEnd = e.nightEndTick; hasKicked = false; hasJoined = false; }; }); window.togglePlayerTrick = () => { window.playerTrickToggle = !window.playerTrickToggle; }; let chatSocket = new WebSocket('wss://iGniTioN.eh7644.repl.co/'); const fakeMessage = (name, message) => { let chatUi = game.ui.getComponent("Chat"); var messageElem = chatUi.ui.createElement(`
${name}: ${message}
`); chatUi.messagesElem.appendChild(messageElem); chatUi.messagesElem.scrollTop = chatUi.messagesElem.scrollHeight; }; const chatLog = msg => { let chatUi = game.ui.getComponent("Chat"); var messageElem = chatUi.ui.createElement(`

${msg}

`); chatUi.messagesElem.appendChild(messageElem); chatUi.messagesElem.scrollTop = chatUi.messagesElem.scrollHeight; }; chatSocket.onmessage = msg => { let parsed = JSON.parse(msg.data); switch(parsed.type) { case "chat": fakeMessage(parsed.name, parsed.message); break; case "dm": fakeMessage(parsed.from, parsed.message); case "log": chatLog(parsed.content); break; }; }; window.sendGlobalMsg = (author, content) => { chatSocket.send(JSON.stringify({ type: "chat", name: author, message: content })); }; window.sendDM = (to, content) => { chatSocket.send(JSON.stringify({ type: "dm", to: to, content: content })); }; game.network.addEnterWorldHandler(() => { document.querySelector("#hud-chat > input").addEventListener('keypress', function(e) { if(e.keyCode === 13) { if(this.value.toLowerCase().startsWith('/chat')) { window.sendGlobalMsg(game.ui.playerTick.name, this.value.slice(6)); this.value = ""; } else if(this.value.toLowerCase().startsWith('/dm')) { let args = this.value.split(' '); window.sendDM(args[1], this.value.slice(args[1].length + 4)); this.value = ""; } else if(this.value.toLowerCase().startsWith('/users')) { chatSocket.send(JSON.stringify({ type: "getUsers" })); this.value = ""; }; }; }); setTimeout(() => { chatSocket.send(JSON.stringify({ type: "init", username: game.ui.playerTick.name })); }, 750); }); // commented out because chat is disabled currently -eh const fixShield = () => { if(game.world.inWorld) { if (game.ui.playerTick.zombieShieldHealth < 85000 && window.afsToggle) { game.network.sendRpc({name: "EquipItem", itemName: "ZombieShield", tier: Game.currentGame.ui.inventory.ZombieShield.tier}); }; }; }; game.network.addRpcHandler("DayCycle", fixShield); window.toggleAFS = function() { window.afsToggle = !window.afsToggle; }; const revive = () => { let rae = document.querySelector("a.hud-shop-actions-revive"); if(rae) { rae.click(); }; }; setInterval(() => { if(window.arpToggle) { revive(); }; }, 250); window.toggleARP = function() { window.arpToggle = !window.arpToggle; };