// ==UserScript== // @name Xeraphinite - zombs.io // @namespace http://tampermonkey.net/ // @version 2.14 // @description fontawesome icons (both svgs and converted to pngs) added. // @author rdm, god of simping // @match http://zombs.io/ // @icon https://cdn.discordapp.com/attachments/854376044522242059/907931471518502922/flowerxeraphinite.png // @grant none // @require https://greasyfork.org/scripts/47911-font-awesome-all-js/code/Font-awesome%20AllJs.js?version=275337 // @downloadURL none // ==/UserScript== // v0.1: basic html and css added // v0.2: html and css done (except party hud) // v0.3: all html and css done // v0.4: some functions added // v0.41: added credits // v0.5: reworked sell menu // v0.6: find it out yourself // v0.61: small adjustments, almost ready for release // v0.7: added crossbow toolbar icon and afs // v0.8: autobow added // v0.9: marker functions, v1.0? // v1.0: official release, added changelog button // v1.1: added rendering options, pretty big update imo // v1.2: fixed score logger, added some small functions // v1.3: ui change, added chat spammer... // v1.4: funky button toggle in party hud, woohoo // v1.5: HUGE ui changes and bug fixes // v1.53: just a note, score logger will be deleted in v1.6. // v1.55: quick feature debug, you can now resize chat. // v1.6: score logger is gone. // v1.7: name a useless feature // v1.72: critical fix of not being abled to request to parties, sorry! // v.75: quick afs update, refined some stuff // v1.8: great new chat system by Morpheus_ ! // v1.82: updated to comply with the new patch update, smaller ahrc raw code. // v1.9: added ignition's show rss counter. // v1.92: last minor update of v1.0, refined functions and temporary disabled sell all functions. // v2.0: ui themes (more coming soon), refined functions and tidied up the code. // v2.1: 1 more themes + screenshot mode. // v2.11: record base fix. /* remove cringe icons & intro styles */ document.querySelectorAll('.ad-unit, .hud-intro-left, .hud-intro-youtuber, .hud-intro-footer, .hud-intro-stone, .hud-intro-tree, .hud-intro-social, .hud-intro-more-games').forEach(el => el.remove()); document.getElementsByClassName("hud-intro-form")[0].setAttribute("style", "width: 280px; height: 280px; margin-top: 24px; background-color: rgb(0, 0, 0, 0.0);"); document.getElementsByClassName("hud-intro-guide")[0].setAttribute("style", "width: 280px; height: 400px; margin-top: 8px; background-color: rgb(0, 0, 0, 0.0);"); if (localStorage.themeClass == undefined) localStorage.setItem('themeClass', 'summer'); // intro screen options since people complain about me putting only two waifus to simp let setColor = { themeColor: { summer: '#1eacbf', mirai: '#1eacbf', zettai: '#13c2b4', blossom: '#e492dd', }, lightThemeColor: { summer: '#1cb2c9', mirai: '#1cb2c9', zettai: '#59d4ca', blossom: '#d47acd', }, hoverColor: { summer: '#10c7e3', mirai: '#10c7e3', zettai: '#40eddf', blossom: '#ff7df4', }, background: { summer: 'https://cdn.discordapp.com/attachments/854376044522242059/907880671610040330/background.jpg', mirai: 'https://cdn.discordapp.com/attachments/854376044522242059/924865286719557672/BG_Mirai_Light.webp', zettai: 'https://cdn.discordapp.com/attachments/854376044522242059/946654780367978516/BG_zettai_light.webp', blossom: 'https://cdn.discordapp.com/attachments/854376044522242059/897760137043902474/another_one.png', }, menuBackground: { summer: 'rgba(28, 178, 201, 0.5)', mirai: 'rgba(28, 178, 201, 0.5)', zettai: 'rgba(60, 207, 195, 0.5)', blossom: 'rgba(158, 47, 142, 0.55)', }, }; let susArray = [` `, '', '', '', ''] let cssTitle = ` .hud-intro::before { background-image: url(${setColor.background[localStorage.themeClass]}); background-size: cover; } .btn-fixed { display: inline-block; height: 25px; line-height: 25px; padding: 0 12px; background: #444; color: #eee; border: 0; font-size: 14px; vertical-align: top; text-align: center; text-decoration: none; text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4); box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); border-radius: 4px; transition: all 0.15s ease-in-out; } .search-bar { background-color: #FFF; outline: none; border: 2px solid white; border-radius: 5px; color: black; font-size: 16px; vertical-align: middle; margin: 0 5px 0 0; } .btn:hover { cursor: pointer; } .border-theme { border: 3px solid ${setColor.themeColor[localStorage.themeClass]}; border-radius: 4px; background: none; transition: all 0.15s ease-in-out; } .border-theme:hover { cursor: pointer; border-color: ${setColor.hoverColor[localStorage.themeClass]}; } .btn-theme { background-color: ${setColor.themeColor[localStorage.themeClass]}; } .btn-theme:hover { background-color: ${setColor.hoverColor[localStorage.themeClass]}; } .hud-xera-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; } .hud-xera-anchor-no-hover { 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; } .hud-xera-anchor::after { content: ' '; display: block; position: absolute; top: 16px; 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-xera-anchor-no-hover::after { content: ' '; display: block; position: absolute; top: 16px; 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-xera-anchor[data-item=record]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/916849867370938450/WHITE.png'); top: 13px; } .hud-xera-anchor[data-item=build]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/916853186491469914/ALSO_WHITE.png'); top: 13px; } .hud-xera-anchor[data-item=deletebase]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/916854543977955348/WHITE_CIRCLE.png'); top: 13px; } .hud-xera-anchor[data-item=upall]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/916855487457271838/DOUBLE_WHITE.png'); top: 13px; } .hud-xera-anchor[data-item=togglechat]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/917286994667769886/THE_WHITE_TOGGLE.png'); top: 13px; } .hud-xera-anchor[data-item=ahrc]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/917623699115507752/FILL_THE_WHITE.png'); top: 13px; } .hud-xera-anchor[data-item=exactrss]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/917624255104057354/EQUAL_TO_THE_WHITE.png'); top: 13px; } .hud-xera-anchor-no-hover[data-item=rdmcolor]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/923866937677725737/A_WHITE_PALLETTE.png'); top: 13px; } .hud-xera-anchor-no-hover[data-item=spamchat]::after { background-image: url('https://cdn.discordapp.com/attachments/854376044522242059/917297025970757652/A_WHITE_SPAMMER.png'); top: 13px; } .hud-input-value { margin: 0 0 60px; border-radius: 4px 4px 0 0; } .disabled-class { opacity: 0.4 !important; cursor: not-allowed !important; } .hud-xera-actions { position: absolute; top: 100%; left: 0; right: 0; height: 50px; margin: 0; padding: 10px; background: rgba(255, 255, 255, 0.05); border-radius: 0 0 4px 4px; } .hud-xera-anchor:hover { background: rgba(255, 255, 255, 0.2); } .hud-menu-settings span { color: rgba(255, 255, 255, 0.4); font-size: 12px; display: flex; } .hud-intro-main { border-radius: 5px; padding: 0px 25px 25px 25px; width: 580px; height: 290px; max-height: 400px; background-image: linear-gradient(to bottom right, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)) } .hud-intro .hud-intro-form .hud-intro-play { background-color: ${setColor.themeColor[localStorage.themeClass]}; } .hud-intro .hud-intro-form .hud-intro-play:hover { background-color: ${setColor.hoverColor[localStorage.themeClass]}; } `; let styles = document.createElement("style"); styles.appendChild(document.createTextNode(cssTitle)); document.head.appendChild(styles); styles.type = "text/css"; document.getElementsByClassName('hud-intro-corner-bottom-left')[0].insertAdjacentHTML("afterbegin", ` `); document.getElementsByClassName('hud-intro-corner-bottom-right')[0].insertAdjacentHTML("afterbegin", `

Option will save after hitting the Play button! `); game.ui.components.Intro.submitElem.addEventListener('click', () => { localStorage.setItem('themeClass', document.getElementById('introBackground').value); }) /* random character gen */ var availableCharacters = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890~!@#$%^&*()_+`-=[]{};':,./<>?\|"; var textLength = 29; var text = ""; for (let i = 0; i < textLength; i++) text += availableCharacters[Math.floor(Math.random() * availableCharacters.length)]; /* name stuffs here */ document.getElementsByClassName('hud-intro-name')[0].setAttribute('maxlength', 29); let guide = document.getElementsByClassName("hud-intro-guide")[0]; guide.innerHTML = `

Usernames



`; guide.style.height = "260px"; function invisiblename() { document.getElementsByClassName('hud-intro-name')[0].value = "ㅤ"; }; function randomname() { document.getElementsByClassName('hud-intro-name')[0].value = `${text}`; }; document.querySelector('.hud-intro-invisible').addEventListener('click', invisiblename); document.querySelector('.hud-intro-random').addEventListener('click', randomname); /* ui styles */ document.getElementsByClassName('hud-top-right')[0].insertAdjacentHTML("beforeend", `
`); document.getElementsByClassName('hud-top-right')[0].insertAdjacentHTML("beforeend", `
`); document.getElementsByClassName("hud-menu-icons")[0].insertAdjacentHTML("beforeend", `
`); function getRandomItem(array) { return array[Math.floor(Math.random() * array.length)]; }; document.getElementsByClassName('hud-respawn')[0].insertAdjacentHTML('beforeend', `${getRandomItem(susArray)}`); document.body.insertAdjacentHTML('beforeend', `

Renderer





The ground will start/stop rendering.



All NPCs (including players, apparently) will start/stop rendering.



Trees, Stones, Crystals and Buildings will start/stop rendering. Can be a performance increase if you have travelled to too many places on the map...



Projectiles will start/stop rendering. Good for sitting in large bases!



Everything.



Freezes renderer.

`); var xyshow = document.createElement("p"); xyshow.style = 'position: relative;top: 17px;right: 0px;font-weight: 900;font-family: "Hammersmith One";text-shadow: 1px 0 0 #fff, -1px 0 0 #fff, 0 1px 0 #fff, 0 -1px 0 #fff, 0.5px 0.5px #fff, -0.5px -0.5px 0 #fff, 0.5px -0.5px 0 #fff, -0.5px 0.5px 0 #fff;'; xyshow.innerHTML = "loading x/y coordinate"; xyshow.className = "xyshowcoordinate"; document.querySelector(".hud-bottom-left").appendChild(xyshow); let cssMain = ` #hud-menu-party { top: 51%; width: 610px; height: 480px; background-color: ${setColor.menuBackground[localStorage.themeClass]}; border: 5px solid white; } .hud-menu-party .hud-party-tag { width: 120px; } .hud-menu-party .hud-party-share { width: 280px; } .hud-menu-party .hud-party-grid .hud-party-link.is-active { background: ${setColor.lightThemeColor[localStorage.themeClass]} !important; } .hud-menu-party .hud-party-visibility { background: ${setColor.lightThemeColor[localStorage.themeClass]}; } .hud-menu-party .hud-party-visibility:hover, .hud-menu-party .hud-party-visibility:active { background: ${setColor.lightThemeColor[localStorage.themeClass]}; } .hud-popup-overlay .hud-popup-confirmation .hud-confirmation-actions .btn.btn-green { background: ${setColor.lightThemeColor[localStorage.themeClass]}; } .hud-chat .hud-chat-message { white-space: unset; word-break: break-word; } .hud-chat .hud-chat-messages { max-height: 340px; min-height: 35px; resize: vertical; } .hud-chat { height: 380px; } #hud-menu-shop { top: 54.5%; left: 50.5%; width: 690px; height: 500px; background-color: ${setColor.menuBackground[localStorage.themeClass]}; border: 5px solid white; margin: -350px 0 0 -350px; padding: 20px 20px 20px 20px; } .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip { background: ${setColor.lightThemeColor[localStorage.themeClass]}; } .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip:hover, .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip:active { background: ${setColor.lightThemeColor[localStorage.themeClass]}; } .hud-menu-shop .hud-shop-grid .hud-shop-item .hud-shop-item-actions .hud-shop-actions-equip.is-disabled { background: none; } .hud-menu-shop .hud-shop-grid .hud-shop-item[data-item=HatComingSoon] .hud-shop-item-coming-soon { background: none; } #hud-menu-settings { height: 550px; background-color: ${setColor.menuBackground[localStorage.themeClass]}; border: 5px solid white; } .hud-menu-settings .hud-xera-grid { display: block; height: 460px; padding: 10px; margin-top: 18px; background: rgba(0, 0, 0, 0.2); overflow: auto; } .hud-respawn .hud-respawn-info .hud-respawn-btn { background: ${setColor.lightThemeColor[localStorage.themeClass]}; } .hud-respawn .hud-respawn-info .hud-respawn-btn:hover { background: ${setColor.lightThemeColor[localStorage.themeClass]}; } #hud-building-overlay { background-color: ${setColor.menuBackground[localStorage.themeClass]}; border: 1px solid white; } .btn.btn-green.hud-building-upgrade { background-color: ${setColor.themeColor[localStorage.themeClass]} } .hud-building-overlay .hud-building-upgrade.is-disabled { background: ${setColor.themeColor[localStorage.themeClass]} !important; } .hud-building-overlay .hud-tooltip-health .hud-tooltip-health-bar { background: ${setColor.lightThemeColor[localStorage.themeClass]} } .hud-menu-icons .hud-menu-icon[data-type=More]::before { background-image: url("https://media.discordapp.net/attachments/870020008128958525/876133010360107048/unknown.png"); background-size: 30px; } .hud-menu-more { background-color: ${setColor.menuBackground[localStorage.themeClass]}; border: 5px solid white; } .hud-menu-icons .hud-menu-icon::before { filter: drop-shadow(1px 1px 0px #000) drop-shadow(-1px 1px 0px #000) drop-shadow(1px -1px 0px #000) drop-shadow(-1px -1px 0px #000) } ::-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); } /* sliders from ignition, very beautiful and nice */ .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: #1eacbf; } input:focus + .slider { box-shadow: 0 0 1px #1eacbf; } input:checked + .slider:before { -webkit-transform: translateX(26px); -ms-transform: translateX(26px); transform: translateX(30px); } .slider.round { border-radius: 34px; } .slider.round:before { border-radius: 50%; } `; let stylesMain = document.createElement("style"); stylesMain.appendChild(document.createTextNode(cssMain)); document.head.appendChild(stylesMain); stylesMain.type = "text/css"; /* main code incoming */ // // // /* main css */ let menu = document.querySelector("#hud-menu-settings"); menu.style.overflow = "auto"; menu.innerHTML = `


Sell







lte's sell numpad sucks lol

Build



Record Base Record your base with this button! Build Recorded Base Build your base instantly with this button! Delete Recorded Base! Delete your recorded base with this button! Upgrade All OFF Upgrade all of your towers with this toggle!
Base saver system made by Apex, give him some love! Discord server

Chat



Toggle Chat OFF Hide your chat with this toggle! Spam Chat Spam your nonsensical chat messages with this!
c
c

Miscellaneous



Activate AHRC OFF Automatically refills your harvesters, only 1 gold each! Enable Exact RSS Counter OFF Gives you exact infos about your resource units! Random Color Make names look les... more fancy!
c
c

Help



General

+ Record base(s): You can save a base with the button, "Record Base!", and build the saved base with "Build Recorded Base!" button. In case you need to delete for another one, just click "Delete Recorded Base!".

+ Upgrade All: Automatically upgrades everything in your base to maximum tier possible.

+ AHRC: Stands for "Automatic Harvester Resource Collector", automatically refills your harvester(s) and collects them back to you.

+ Exact RSS Counter: "De-truncate" your resource stats.

+ Join party by PSK function: PSK stands for Party Share Key, use this to join your previous parties!


Keybinds

- // Enable show other players' RSS.

= // Toggle Exact RSS Counter.

~ // Add a marker on the minimap.

? // Toggles on screenshot mode.

X // Toggles on mod menu.






Xeraphinite, v2.1

`; function modm() { if(menu.style.display == "none" || menu.style.display == "") { menu.style.display = "block"; } else { menu.style.display = "none"; }; }; /* main code */ var showRSS = false; var AHRC = false; var upgradeAll = false; var petTimeout = false; var heal = true; var autobow = false; var getRss = false; var allowed1 = true; 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 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"; } } game.network.addEntityUpdateHandler(() => { if (game.network.connected) { if(upgradeAll) { let entities = game.world.entities; for (let uid in entities) { if (!entities.hasOwnProperty(uid)) continue; game.network.sendRpc({name: "UpgradeBuilding", uid: entities[uid].fromTick.uid}); } } if (AHRC) { let entities = Game.currentGame.world.entities; for (let uid in entities) { let obj = entities[uid]; if (obj.fromTick.model == "Harvester") { let amount = obj.fromTick.tier * 0.05 - 0.02; game.network.sendRpc({name: "AddDepositToHarvester", uid: obj.fromTick.uid, deposit: amount}); game.network.sendRpc({name: "CollectHarvester", uid: obj.fromTick.uid}); }; }; }; if (autobow) { game.network.sendInput({space: 0}) game.network.sendInput({space: 1}) } } 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; } if(!window.zoomonscroll) { window.zoom(document.getElementById("zoomSlider").value); }; }); Game.currentGame.ui._events.playerPetTickUpdate.push(pet => { if (pet.health <= 0) { Game.currentGame.network.sendRpc({name: "BuyItem", itemName: "PetRevive", tier: 1}); Game.currentGame.network.sendRpc({name: "EquipItem", itemName: "PetRevive", tier: 1}); } if (heal) { let petHealth = (pet.health / pet.maxHealth) * 100; if (petHealth <= 50) { game.network.sendRpc({name: "BuyItem", itemName: "PetHealthPotion", tier: 1}); game.network.sendRpc({name: "EquipItem", itemName: "PetHealthPotion", tier: 1}); }; }; }); game.ui._events.playerTickUpdate.push(player => { if (heal) { let playerHealth = (player.health / player.maxHealth) * 100; if (playerHealth <= 50) healPlayer(); } xyshow.innerHTML = `X: ${Math.round(player.position.x - 13)}, Y: ${Math.round(player.position.y) - 13}`; }); function healPlayer() { Game.currentGame.network.sendRpc({ "name": "EquipItem", "itemName": "HealthPotion", "tier": 1 }) Game.currentGame.network.sendRpc({ "name": "BuyItem", "itemName": "HealthPotion", "tier": 1 }) } 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(); }; document.getElementsByClassName("0i")[0].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(); }) }) document.getElementsByClassName("1i")[0].addEventListener('click', () => { sellAllByType("Wall") }); document.getElementsByClassName("2i")[0].addEventListener('click', () => { sellAllByType("Door") }); document.getElementsByClassName("3i")[0].addEventListener('click', () => { sellAllByType("SlowTrap") }); document.getElementsByClassName("4i")[0].addEventListener('click', () => { sellAllByType("ArrowTower") }); document.getElementsByClassName("5i")[0].addEventListener('click', () => { sellAllByType("CannonTower") }); document.getElementsByClassName("6i")[0].addEventListener('click', () => { sellAllByType("MeleeTower") }); document.getElementsByClassName("7i")[0].addEventListener('click', () => { sellAllByType("BombTower") }); document.getElementsByClassName("8i")[0].addEventListener('click', () => { sellAllByType("MagicTower") }); document.getElementsByClassName("9i")[0].addEventListener('click', () => { sellAllByType("GoldMine") }); document.getElementsByClassName("10i")[0].addEventListener('click', () => { sellAllByType("Harvester") }); document.getElementsByClassName("11i")[0].addEventListener('click', () => { Game.currentGame.network.sendRpc({name: "DeleteBuilding", uid: game.ui.getPlayerPetUid()}); }); document.getElementsByClassName("3i2")[0].addEventListener('click', function() { upgradeAll = !upgradeAll; let upalltoggle = document.getElementById('upalltoggle'); if (upgradeAll) { upalltoggle.style.color = "green"; upalltoggle.innerText = "ON"; } else { upalltoggle.style.color = "red"; upalltoggle.innerText = "OFF"; } }) document.getElementsByClassName("0i4")[0].addEventListener('click', function() { AHRC = !AHRC; let ahrctoggle = document.getElementById('ahrctoggle'); if (AHRC) { ahrctoggle.style.color = "green"; ahrctoggle.innerText = "ON"; } else { ahrctoggle.style.color = "red"; ahrctoggle.innerText = "OFF"; } }) document.getElementsByClassName("1i4")[0].addEventListener('click', function() { window.frss = !window.frss; let rsstoggle = document.getElementById('exactrsstoggle'); if (window.frss) { rsstoggle.style.color = "green"; rsstoggle.innerText = "ON"; } else { rsstoggle.style.color = "red"; rsstoggle.innerText = "OFF"; } }) document.getElementsByClassName("hud-Close-icon")[0].addEventListener("click", function () { menu.style.display = "none"; }); 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"); } window.RecordBase = function() { 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)) { 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.savedBase = baseStr; console.log(baseStr); } window.buildRecordedBase = function() { 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]) }); } } BuildBase(localStorage.savedBase); } window.DeleteRecordedbase = function() { Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure you want to delete the recorded base?", 1e4, function() { game.ui.components.PopupOverlay.showHint("Recorded base has been successfully deleted!"); localStorage.savedBase = null; }) } game.network.sendRpc2 = game.network.sendRpc; const placeWall = (x, y) => { game.network.sendRpc2({ name: 'MakeBuilding', x: x, y: y, type: "Wall", yaw: 0 }); }; game.network.sendRpc = (data) => { let gridPos = { x: data.x, y: data.y }; if(data.name === "MakeBuilding" && data.type === "Wall" && window.x3builds) { placeWall(gridPos.x, gridPos.y); placeWall(gridPos.x + 48, gridPos.y); placeWall(gridPos.x, gridPos.y + 48); placeWall(gridPos.x - 48, gridPos.y); placeWall(gridPos.x, gridPos.y - 48); placeWall(gridPos.x - 48, gridPos.y + 48); placeWall(gridPos.x + 48, gridPos.y - 48); placeWall(gridPos.x + 48, gridPos.y + 48); placeWall(gridPos.x - 48, gridPos.y - 48); }; game.network.sendRpc2(data); }; 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(); console.log(dimension); } } // 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(); }; window.toggleZoS = () => { dimension -= 0.02; window.zoomonscroll = !window.zoomonscroll; let zs = document.getElementById("zsd"); zs.style.display = zs.style.display == "none" ? "block" : "none"; }; window.zoomOut = () => { let zs = document.getElementById("zoomSlider"); zs.value = parseInt(zs.value) + 1; }; window.zoomIn = () => { let zs = document.getElementById("zoomSlider"); zs.value = parseInt(zs.value) - 1; }; // cutdown version of ignition's zoom // Zombs.io Emoji System + Chat Blocker // Morpheus_ , ehScripts const blockedUids = []; window.blockPlayer = name => { game.ui.components.PopupOverlay.showConfirmation(`Are you sure you want to block ${window.filterXSS(name)} (${uid})?`, 3500, () => { blockedUids.push(uid); for (let bl of Array.from(document.getElementsByClassName(`uid${uid}`))) { bl.innerHTML = "Unblock"; bl.style.color = "blue"; bl.onclick = () => window.unblockPlayer(name, uid); }; }, () => {}); }; window.unblockPlayer = name => { this.blockedUids.splice(blockedUids.indexOf(uid), 1); for (let bl of Array.from(document.getElementsByClassName(`uid${uid}`))) { bl.innerHTML = "Block"; bl.style.color = "red"; bl.onclick = () => window.blockPlayer(name, uid); }; }; 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", whale: "https://media.discordapp.net/attachments/876015747204268033/950597451897770064/1f433.png?width=48&height=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", WYSI: "https://cdn.discordapp.com/emojis/816356638767972402.gif?size=48", } Game.currentGame.network.emitter.removeListener("PACKET_RPC", Game.currentGame.network.emitter._events.PACKET_RPC[1]); const onMessageReceived = function(e) { if (blockedUids.includes(e.uid) || window.chatDisabled) return; let a = Game.currentGame.ui.getComponent("Chat"), b = window.filterXSS(e.displayName), c = window.filterXSS(e.message) .replace(/(?:f|F)uck/gi, ``) .replace(/s[3e]x+/gi, ``) .replace(/n+[i1]+gg+[a@]+/i, ``); let arr = c.split(':'); for (let i = 1; i < arr.length; i += 2) { if (!emojiList[arr[i]]) arr = [c]; else arr[i] = ``; } let d = a.ui.createElement(`
Block ${b}: ${arr.join(" ")}${getClock()}
`); d.children[0].onclick = () => game.script.handlers.chat.blockPlayer(b, e.uid); a.messagesElem.appendChild(d); a.messagesElem.scrollTop = a.messagesElem.scrollHeight; }; Game.currentGame.network.addRpcHandler("ReceiveChatMessage", onMessageReceived); let chattoggle = document.getElementById("togglechattoggle"); window.toggleChat = () => { window.chatDisabled = !window.chatDisabled; let chat = document.getElementsByClassName("hud-chat")[0]; if (window.chatDisabled) { chat.style.display = "none"; chattoggle.style.color = "green"; chattoggle.innerText = "ON"; } else { chat.style.display = "block"; chattoggle.style.color = "red"; chattoggle.innerText = "OFF"; }; }; // toggle chat, from ignition (function() { // modified private parties tab code, except the new tab in the party menu is used differently (not private parties) let getElement = (Element) => { return document.getElementsByClassName(Element); } let getId = (Element) => { return document.getElementById(Element); } getElement("hud-party-members")[0].style.display = "block"; getElement("hud-party-grid")[0].style.display = "none"; let privateTab2 = document.createElement("a"); privateTab2.className = "hud-party-tabs-link"; privateTab2.id = "privateTab2"; privateTab2.innerHTML = "Share Keys"; let privateHud2 = document.createElement("div"); privateHud2.className = "hud-private hud-party-grid"; privateHud2.id = "privateHud2"; privateHud2.style = "display: none;"; getElement("hud-party-tabs")[0].appendChild(privateTab2); getElement("hud-menu hud-menu-party")[0].insertBefore(privateHud2, getElement("hud-party-actions")[0]); getId("privateTab2").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("privateTab2").className = "hud-party-tabs-link is-active"; getId("privateHud2").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("privateHud2").getAttribute("style") == "display: none;") { getId("privateHud2").setAttribute("style", "display: block;"); } } getElement("hud-party-tabs-link")[0].onmouseup = e => { getId("privateHud2").setAttribute("style", "display: none;"); if (getId("privateTab2").className == "hud-party-tabs-link is-active") { getId("privateTab2").className = "hud-party-tabs-link" } } getElement("hud-party-tabs-link")[1].onmouseup = e => { getId("privateHud2").setAttribute("style", "display: none;"); if (getId("privateTab2").className == "hud-party-tabs-link is-active") { getId("privateTab2").className = "hud-party-tabs-link" } } getId("privateHud2").innerHTML = `

Share Keys

`; game.network.addRpcHandler("PartyShareKey", function(e) { let psk = e.partyShareKey; let lnk = `http://zombs.io/#/${game.options.serverId}/${psk}/`; getId("privateHud2").innerHTML += `

${psk} [Link]

` }); document.getElementsByClassName("hud-party-actions")[0].insertAdjacentHTML("afterend", ` `); })(); // modified party tools from ignition let showpriv = true; document.getElementsByClassName('hud-party-tabs')[0].insertAdjacentHTML("beforeend", ` `); function checkStatus(party) { if (showpriv == true) { if(party.isOpen == 1) { return '[Open]'; } else if(!party.isOpen == 1) { return '[Private]'; } } else { return ''; } }; // let partyCheck = (all_parties) => { document.getElementsByClassName('hud-party-grid')[0].innerHTML = ''; for (let i in all_parties) { let parties = all_parties[i]; let tab = document.createElement('div'); tab.classList.add('hud-party-link'); tab.classList.add('custom-party'); tab.id = parties.partyId; tab.isPublic = parties.isOpen; tab.name = parties.partyName; tab.members = parties.memberCount; tab.innerHTML = ` ${parties.partyName} ${checkStatus(parties)} id: ${parties.partyId} ${parties.memberCount}/4 `; if(parties.memberCount == 4) { tab.classList.add('is-disabled'); } else { tab.style.display = 'block'; } setTimeout(() => { if (parties.partyId == game.ui.playerPartyId) tab.classList.add('is-active'); }, 1000); if (parties.isOpen !== 1 && showpriv == false) { tab.style.display = 'none'; } tab.addEventListener('click', function() { let isJoining = true; if(tab.isPublic == 1 && tab.members < 4) { isJoining = true; game.network.sendRpc({ name: 'JoinParty', partyId: Math.floor(tab.id) }); if(isJoining == true) { document.getElementsByClassName('hud-party-grid')[0].classList.add('is-disabled'); document.getElementsByClassName('hud-party-link')[0].classList.add('is-disabled'); setTimeout(() => { document.getElementsByClassName('hud-party-grid')[0].classList.remove('is-disabled'); document.getElementsByClassName('hud-party-link')[0].classList.remove('is-disabled'); }, 27500); } } else if(!tab.isPublic == 1) { isJoining = false; game.ui.components.PopupOverlay.showHint("You can't request private parties!"); } }); document.getElementsByClassName('hud-party-grid')[0].appendChild(tab); }; }; game.network.addRpcHandler("SetPartyList", (e) => { partyCheck(e) }); // const entirePop = document.getElementsByClassName("hud-intro-wrapper")[0].children[1]; const request = new XMLHttpRequest(); request.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { let data = JSON.parse(request.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}`); } } }; request.open("GET", "http://zombs.io/capacity", true); request.send(); // server pop by apex 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); }, 50); setTimeout(() => { clearInterval(sipt); }, 50); // full RSS from ignition, modified to refresh slower 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; }; window.randomColor = function() { for (let i in game.world.entities) { if (game.world.entities[i].entityClass === "PlayerEntity") { 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]); }; }; }; window.resetColor = function() { for (let i in game.world.entities) { if (game.world.entities[i].entityClass === "PlayerEntity") { game.world.entities[i].currentModel.nameEntity.setColor(220, 220, 220); }; }; }; var isSpamming = 0; function pauseChatSpam(e) { if (!isSpamming) { if (e !== "") { window.spammer = setInterval(() => { game.network.sendRpc({name: "SendChatMessage", channel: "Local", message: e}); }, 1500); } else { game.ui.components.PopupOverlay.showHint(`Please enter your message!`); }; } else if (isSpamming) { clearInterval(window.spammer); }; isSpamming = !isSpamming; }; document.querySelector('#togglespmch').addEventListener('click', function () { pauseChatSpam(document.querySelector('#spmchinput').value) let spamtoggle = document.querySelector('#spamtoggle') this.innerText = isSpamming ? "Disable Spam Chat" : "Enable Spam Chat" if (isSpamming) { this.classList.add("btn-red"); this.classList.remove("btn-theme"); } else { this.classList.add("btn-theme"); this.classList.remove("btn-red"); }; }); !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); } var map = document.getElementById("hud-map"); let markerId = 1; window.addMarker = () => { map.insertAdjacentHTML("beforeend", `
`) markerId++; }; let smm = document.getElementsByClassName("hud-menu-more")[0]; smm.style.overflow = "auto"; window.moreMenu = () => { let mm = document.getElementsByClassName("hud-menu-more")[0]; if(["none", ""].includes(mm.style.display)) { mm.style.display = "block"; for(let i of Array.from(document.getElementsByClassName("hud-menu"))) { if(i.classList.contains('hud-menu-more')) { return; }; i.style.display = "none"; }; } else { mm.style.display = "none"; }; }; var hasBeenInWorld = false; game.network.addEnterWorldHandler(() => { if(hasBeenInWorld) { return }; hasBeenInWorld = true; for(let i of Array.from(document.getElementsByClassName("hud-menu-icon"))) { if(i.dataset.type !== "More") { i.addEventListener('click', function() { document.getElementsByClassName("hud-menu-more")[0].style.display = "none"; }); }; }; }); document.getElementsByClassName("1z")[0].addEventListener('click', function() { window.ground(); this.className = "btn btn-theme 1z"; this.innerText = "Stop Rendering Ground?"; if (window.groundtoggle) { this.className = "btn btn-red 1z"; this.innerText = "Start Rendering Ground?"; } }) document.getElementsByClassName("1z1")[0].addEventListener('click', function() { window.grid(); this.className = "btn btn-green 1z1"; this.innerText = "Black Ground With Grid?"; if (window.gridtoggle) { this.className = "btn btn-red 1z1"; } }) document.getElementsByClassName("2z")[0].addEventListener('click', function() { window.npc(); this.className = "btn btn-theme 2z"; this.innerText = "Stop Rendering NPCs?"; if (window.npctoggle) { this.className = "btn btn-red 2z"; this.innerText = "Start Rendering NPCs?"; } }) document.getElementsByClassName("3z")[0].addEventListener('click', function() { window.env(); this.className = "btn btn-theme 3z"; this.innerText = "Stop Rendering Environment?"; if (window.envtoggle) { this.className = "btn btn-red 3z"; this.innerText = "Start Rendering Enviroment?"; } }) document.getElementsByClassName("4z")[0].addEventListener('click', function() { window.pjt(); this.className = "btn btn-theme 4z"; this.innerText = "Stop Rendering Projectiles?"; if (window.pjttoggle) { this.className = "btn btn-red 4z"; this.innerText = "Start Rendering Projectiles?"; } }) document.getElementsByClassName("5z")[0].addEventListener('click', function() { window.everything(); this.className = "btn btn-theme 5z"; this.innerText = `Stop Rendering Everything?`; if (window.everythingtoggle) { this.className = "btn btn-red 5z"; this.innerText = `Start Rendering Everything?`; } }) document.getElementsByClassName("6z")[0].addEventListener('click', function() { window.rndr(); this.className = "btn btn-theme 6z"; this.innerText = `Stop Renderer?`; if (window.rndrtoggle) { this.className = "btn btn-red 6z"; this.innerText = `Start Renderer?`; } }) window.ground = () => { window.groundtoggle = !window.groundtoggle; let z1 = document.getElementById('addon') let z1button = document.getElementsByClassName("1z1")[0] if (window.groundtoggle) { game.renderer.ground.setVisible(false) z1.style.display = "block"; } else { game.renderer.ground.setVisible(true) game.renderer.ground.setAlpha(1) z1.style.display = "none"; } if (z1button.classList.contains('btn-red') && z1.style.display === "block") { game.renderer.ground.setVisible(true) game.renderer.ground.setAlpha(0.25) } } window.grid = () => { window.gridtoggle = !window.gridtoggle; if (window.gridtoggle) { game.renderer.ground.setVisible(true) game.renderer.ground.setAlpha(0.25) } else { game.renderer.ground.setVisible(false) } } 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(); } } document.getElementsByClassName('hud')[0].addEventListener('mousedown', e => { if (!e.button) { game.network.sendPacket(3, { mouseDown: game.inputPacketCreator.screenToYaw(e.clientX, e.clientY) }) } smm.style.display = "none"; }) window.addName = name => { let id = `username${Math.floor(Math.random() * 9999)}`; localStorage.usernames = `${localStorage.usernames || ""}
`; }; (window.refreshNS = () => { let guide2 = document.getElementsByClassName("hud-intro-name-save")[0]; guide2.innerHTML = `
${localStorage.usernames || "

No saved names... sad.

"}


`; })(); 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.querySelector(".hud-bottom-left").insertAdjacentElement("afterbegin", xyshow); // original screenshot mode code by deathrain, modified by eh }; /* keybinds */ document.addEventListener('keyup', function (e) { if (e.key === "Enter" && game.ui.playerTick.dead === 1) { game.ui.components.Chat.startTyping(); }; if (e.key === "`") { window.addMarker(); game.ui.components.PopupOverlay.showHint(`Added Marker #${markerId-1}`); }; }); document.addEventListener("keydown", e => { if (document.activeElement.tagName.toLowerCase() !== "input" && document.activeElement.tagName.toLowerCase() !== "textarea") { if (e.keyCode == 189) { // key - getRss = !getRss; }; if (e.key === "!") { window.x3builds = !window.x3builds; game.ui.components.PopupOverlay.showHint("Toggled 3x3 Block."); }; if (e.key === "=") { document.getElementsByClassName("1i4")[0].click(); game.ui.components.PopupOverlay.showHint("Toggled Full RSS."); }; if (e.key === "g") { document.getElementsByClassName("0i3")[0].click(); game.ui.components.PopupOverlay.showHint("Toggled Chat."); }; if (e.key === " " && game.ui.playerTick.weaponName === 'Bow') { autobow = true; }; if (game.ui.playerTick.weaponName !== 'Bow') { autobow = false; }; if (e.key === "x") { modm(); }; if (e.key === "?") { window.ssMode(); }; }; });