- // ==UserScript==
- // @name Zombs.io Script
- // @namespace -
- // @version v1
- // @description Cool. Check greasyfork description.
- // @author Nudo#3310
- // @match *://zombs.io/*
- // @require http://code.jquery.com/jquery-3.3.1.min.js
- // @require https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js
- // @grant none
- // ==/UserScript==
-
- //
-
- let cvs = document.querySelector('canvas')
- /*
- let elm = document.getElementsByTagName('*')
- for(let i = 0; i < elm.length; ++i) {
- elm[i].oncontextmenu = null
- }
- */
- let openMenu = `
- <div class="hud-spell-icon" data-type="SettingsHack"></div>
- <div class="hack-info-holder">
- <div class="hack-inner">
- <div>
- <h4>Settings</h4>
- <h5>Hack</h5>
- </div>
- <div>
- <p>Here you can enable hacks ;3</p>
- </div>
- <div>
- <p style="color: #8ecc51">Click</p>
- </div>
- </div>
- </div>
- <style>
- .hack-inner h4 {
- display: block;
- margin: 0;
- color: #d0d0d0;
- }
- .hack-inner p {
- margin: 10px 0 0;
- color: #eeeeee;
- white-space: nowrap;
- font-size: 14px;
- }
- .hack-inner h5 {
- display: block;
- margin: 0;
- color: rgba(255, 255, 255, 0.6);
- }
- .hack-inner {
- display: flex;
- flex-direction: column;
- background: rgba(0, 0, 0, 0.4);
- padding: 10px;
- border-radius: 4px;
- }
- .hack-inner::after {
- content: ' ';
- display: block;
- position: absolute;
- top: 50%;
- right: 100%;
- margin-top: -6px;
- border-top: 6px solid transparent;
- border-bottom: 6px solid transparent;
- border-right: 6px solid rgba(0, 0, 0, 0.4);
- }
- .hack-info-holder {
- display: none;
- position: absolute;
- left: 76px;
- top: -25px;
- }
- .hud-spell-icons .hud-spell-icon[data-type=SettingsHack]::before {
- background-image: url(https://media.discordapp.net/attachments/776127909651808276/945227208602046524/settings-ico.png);
- }
- </style>
- `
- $("#hud-spell-icons").prepend(openMenu)
- $('[data-type="SettingsHack"]').hover(() => {
- $('.hack-info-holder').css("display", "block")
- }, () => {
- $('.hack-info-holder').css("display", "none")
- })
-
- let menu = `
- <div class="menu-holder">
- <div class="menu-wrapper">
- <div class="menu-title">
- <h3>Settings</h3>
- <a class="menu-close" id="closeSettings"></a>
- </div>
- <div class="menu-navbar">
- <div class="nav-btns">
- <div id="mainBtn" style="background: rgba(0, 0, 0, 0.4); color: rgba(255, 255, 255, 0.4)">Main</div>
- <div id="miscBtn">Misc</div>
- <div id="sellBtn">Sell</div>
- <div id="botsBtn">Bots</div>
- <div id="upgradesBtn">Upgrades</div>
- <div id="autobaseBtn">AutoBase</div>
- </div>
- </div>
- <div class="menu-content" id="main" style="display: block;"></div>
- <div class="menu-content" id="misc"></div>
- <div class="menu-content" id="bots"></div>
- <div class="menu-content" id="sell"></div>
- <div class="menu-content" id="upgrades"></div>
- <div class="menu-content" id="autobase" style="width: 530px"></div>
- <div class="menu-footer">
- <span>Made by Nudo#3310</span>
- </div>
- </div>
- </div>
- <style>
- .toggler-mark {
- display: none;
- width: 6px;
- height: 12px;
- border: solid #777;
- border-width: 0 3px 3px 0;
- transform: rotate(45deg);
- border-radius: 2px;
- margin-left: 4.2px;
- }
- .toggler-checkbox {
- margin-right: 10px;
- margin-top: 2px;
- background: rgba(0, 0, 0, .4);
- width: 15px;
- border-radius: 2px;
- height: 15px;
- }
- .toggler-action {
- color: rgba(255, 255, 255, 0.4);
- font-size: 14px;
- }
- .toggler-active {
- display: block;
- }
- .toggler-display {
- margin-top: 5px;
- padding: 10px;
- background: #444;
- border-radius: 4px;
- height: 35px;
- display: flex;
- cursor: pointer;
- align-items: center;
- justify-content: space-between;
- }
- .toggler-info {
- display: flex;
- flex-direction: column;
- }
- .toggler-info #toggler-name {
- font-weight: 1000;
- color: #eee;
- font-size: 16px;
- }
- .toggler-info #toggler-desc {
- color: rgba(255, 255, 255, 0.4);
- font-size: 14px;
- }
- .toggler-container {
- width: -webkit-fill-available;
- padding: 10px;
- margin: 2px;
- background: rgba(255, 255, 255, 0.1);
- border-radius: 3px;
- color: #eee;
- display: flex;
- justify-content: space-between;
-
- }
- .toggler-display {
- transition: all 0.15s ease-in-out;
- }
- .toggler-display:hover {
- background-color: #555;
- color: #fff;
- }
- /*
- .menu-navbar #autobaseBtn::after {
- content: 'BETA';
- display: inline-block;
- vertical-align: middle;
- height: 16px;
- line-height: 16px;
- margin: 0 0 0 6px;
- padding: 0 4px;
- font-size: 10px;
- background: #c9523c;
- color: #eee;
- text-shadow: 0 1px 3px rgb(0 0 0 / 20%);
- border-radius: 2px;
- }
- */
- .menu-content {
- display: none;
- flex-direction: column;
- height: 300px;
- padding: 10px;
- background: rgba(0, 0, 0, 0.2);
- overflow-y: auto;
- border-radius: 0 3px 3px 3px;
- }
- .menu-footer {
- position: relative;
- bottom: -5px;
- }
- .menu-footer span {
- font-weight: 1000;
- font-size: 18px;
- color: #d0d0d0;
- }
-
- .menu-navbar {
- width: 100%;
- }
- .nav-btns {
- display: flex;
- }
- .nav-btns div {
- cursor: pointer;
- display: flex;
- 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;
- justify-content: center;
- align-items: center;
- width: 75px;
- height: 35px;
- }
- .nav-btns div:first-child {
- border-radius: 3px 0 0;
- }
- .nav-btns div:last-child {
- border-radius: 0 3px 0 0;
- }
- /*.nav-btns div:active, .nav-btns div:hover {
- background: rgba(0, 0, 0, 0.2);
- color: #eee;
- }*/
- .menu-title {
- width: 100%;
- height: auto;
- display: flex;
- justify-content: space-between;
- }
- .menu-wrapper h3 {
- display: block;
- margin: 0;
- line-height: 20px;
- }
- .menu-close::after {
- transform: rotate( 320deg);
- }
- .menu-close {
- cursor: pointer;
- width: 30px;
- height: 30px;
- opacity: 0.2;
- transition: all 0.15s ease-in-out;
- }
- .menu-close::before {
- transform: rotate(45deg);
- }
- .menu-close::before, .menu-close::after {
- content: ' ';
- position: absolute;
- height: 30px;
- width: 2px;
- background: #eee;
- }
- .menu-close:hover, .menu-close:active {
- opacity: 0.4;
- }
- .menu-wrapper {
- width: 600px;
- height: 420px;
- padding: 20px;
- background: rgba(0, 0, 0, 0.6);
- color: #eee;
- border-radius: 4px;
- z-index: 15;
- }
- .menu-holder {
- display: none;
- position: absolute;
- width: 100%;
- top: 0;
- height: 100%;
- align-items: center;
- justify-content: center;
- }
- </style>
- `
-
- $("#hud").append(menu)
-
- $('[data-type="SettingsHack"]').click(() => {
- cvs.style.filter = "blur(8px)"
- $(".menu-holder").css(`display`, `flex`)
- })
-
- $("#closeSettings").click(() => {
- cvs.style.filter = "none"
- $(".menu-holder").css(`display`, `none`)
- })
-
- $(document).mouseup((e) => {
- if ($(".menu-holder").has(e.target).length === 0){
- $(".menu-holder").hide()
- cvs.style.filter = "none"
- }
- })
-
- let btns = ["mainBtn", "miscBtn", "autobaseBtn", "sellBtn", "upgradesBtn", "botsBtn"]
-
- $(`#${btns[0]}`).css({"background": "rgba(0, 0, 0, 0.2)", "color": "#eee"})
-
- function activeButton(e) {
- for (let i = 0; i < btns.length; i++) {
- if (e.target.id == btns[i]) $(`#${btns[i]}`).css({"background": "rgba(0, 0, 0, 0.2)", "color": "#eee"})
- else $(`#${btns[i]}`).css({"background": "rgba(0, 0, 0, 0.4)", "color": "rgba(255, 255, 255, 0.4)"})
- }
- }
-
- $("#mainBtn").click((e) => {
- activeButton(e)
- $("#main").css("display", "flex")
- $("#misc").css("display", "none")
- $("#upgrades").css("display", "none")
- $("#sell").css("display", "none")
- $("#autobase").css("display", "none")
- $("#bots").css("display", "none")
- })
-
- $("#miscBtn").click((e) => {
- activeButton(e)
- $("#misc").css("display", "flex")
- $("#main").css("display", "none")
- $("#upgrades").css("display", "none")
- $("#sell").css("display", "none")
- $("#autobase").css("display", "none")
- $("#bots").css("display", "none")
- })
-
- $("#autobaseBtn").click((e) => {
- activeButton(e)
- $("#autobase").css("display", "flex")
- $("#main").css("display", "none")
- $("#misc").css("display", "none")
- $("#upgrades").css("display", "none")
- $("#sell").css("display", "none")
- $("#bots").css("display", "none")
- })
-
- $("#sellBtn").click((e) => {
- activeButton(e)
- $("#sell").css("display", "flex")
- $("#main").css("display", "none")
- $("#misc").css("display", "none")
- $("#autobase").css("display", "none")
- $("#upgrades").css("display", "none")
- $("#bots").css("display", "none")
- })
-
- $("#upgradesBtn").click((e) => {
- activeButton(e)
- $("#upgrades").css("display", "flex")
- $("#main").css("display", "none")
- $("#misc").css("display", "none")
- $("#autobase").css("display", "none")
- $("#sell").css("display", "none")
- $("#bots").css("display", "none")
- })
- $("#botsBtn").click((e) => {
- activeButton(e)
- $("#bots").css("display", "flex")
- $("#upgrades").css("display", "none")
- $("#main").css("display", "none")
- $("#misc").css("display", "none")
- $("#autobase").css("display", "none")
- $("#sell").css("display", "none")
- })
-
- let packets = {
- 0: "PACKET_ENTITY_UPDATE",
- 1: "PACKET_PLAYER_COUNTER_UPDATE",
- 2: "PACKET_SET_WORLD_DIMENSIONS",
- 3: "PACKET_INPUT",
- 4: "PACKET_ENTER_WORLD",
- 7: "PACKET_PING",
- 9: "PACKET_RPC",
- PACKET_ENTER_WORLD: 4,
- PACKET_ENTITY_UPDATE: 0,
- PACKET_INPUT: 3,
- PACKET_PING: 7,
- PACKET_PLAYER_COUNTER_UPDATE: 1,
- PACKET_RPC: 9,
- PACKET_SET_WORLD_DIMENSIONS: 2
- }
-
- let ar = [null, Infinity];
-
- class Handler {
- constructor() {
- this.msg = null
- this.uid = null
- this.players = {}
- this.buildings = {}
- this.entities = {}
- this.myPlayer = null
- this.myPet = null
- this.alive = false
- this.visibleModel = null
- this.myStash = null
- this.uaDate = Date.now()
- this.myPartyKey = null
- this.bossWaves = [9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97, 105, 121]
- this.proc = {
- health: {
- player: 100,
- pet: 100
- }
- }
- }
- updateUid() {
- if (this.msg.uid) {
- this.uid = this.msg.uid
- this.players = {}
- this.buildings = {}
- this.entities = {}
- window.msg = 0
- }
- }
- buyItem(e) {
- Game.currentGame.network.sendRpc({
- "name": "BuyItem",
- "itemName": e,
- "tier": 1
- })
- }
- equipItem(e) {
- Game.currentGame.network.sendRpc({
- "name": "EquipItem",
- "itemName": e,
- "tier": 1
- })
- }
- useItem(e) {
- this.buyItem(e)
- this.equipItem(e)
- }
- entitiesAction(model, action) {
- this.entities = Game.currentGame.world.entities
- for (let ind in this.entities) {
- if (!this.entities.hasOwnProperty(ind)) continue
- let obj = this.entities[ind]
- action(obj, model)
- }
- }
- updateMyStash() {
- this.entitiesAction("GoldStash", (e, m) => {
- if (e.fromTick.model == m) {
- this.myStash = e
- }
- })
- }
- upgradeAll() {
- this.entitiesAction("GoldStash", (e, m) => {
- if (e.fromTick.model != m) {
- Game.currentGame.network.sendRpc({
- name: "UpgradeBuilding",
- uid: e.fromTick.uid
- })
- }
- })
- }
- /*revivePets() {
- for(let idn in game.world.entities) {
- if(game.world.entities[idn].fromTick.model == "PetCARL" || game.world.entities[idn].fromTick.model == "PetMiner") {
- Game.currentGame.network.sendRpc({
- name: "purchaseItem",
- itemName: "PetRevive",
- uid: game.world.entities[idn].fromTick.uid
- });
- }
- }
- }*/
- sellPets() {
- for(let idn in game.world.entities) {
- if(game.world.entities[idn].fromTick.model == "PetCARL" || game.world.entities[idn].fromTick.model == "PetMiner") {
- Game.currentGame.network.sendRpc({
- name: "DeleteBuilding",
- uid: game.world.entities[idn].fromTick.uid
- });
- }
- }
- }
- delAction(model) {
- this.entities = Game.currentGame.world.entities
- for (let ind in this.entities) {
- if (!this.entities.hasOwnProperty(ind)) continue;
- if (this.entities[ind].fromTick.model == model) {
- Game.currentGame.network.sendRpc({
- name: "DeleteBuilding",
- uid: this.entities[ind].fromTick.uid
- });
- }
- }
- }
- sellBuilding(model, {verify, content}) {
- if (verify) {
- Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation(content, 1e4, () => {
- this.delAction(model)
- })
- } else {
- this.delAction(model)
- }
- }
- sellAll() {
- Game.currentGame.ui.getComponent("PopupOverlay").showConfirmation("Are you sure?", 1e4, () => {
- this.entities = Game.currentGame.world.entities
- for (let ind in this.entities) {
- if (!this.entities.hasOwnProperty(ind)) continue;
- if (this.entities[ind].fromTick.model != "GoldStash") {
- Game.currentGame.network.sendRpc({
- name: "DeleteBuilding",
- uid: this.entities[ind].fromTick.uid
- });
- }
- }
- })
- }
- ahrc() {
- let depTier = [0.07, 0.11, 0.17, 0.22, 0.25, 0.28, 0.42, 0.65]
- this.entitiesAction("Harvester", (e) => {
- if (e.fromTick.deposit > 0) {
- Game.currentGame.network.sendRpc({
- name: "CollectHarvester",
- uid: e.fromTick.uid
- });
- }
- for (let i = 0; i < depTier.length; i++) {
- let tc = i + 1
- if (e.fromTick.tier == tc) {
- if (e.fromTick.deposit <= 0) {
- Game.currentGame.network.sendRpc({
- name: "AddDepositToHarvester",
- uid: e.fromTick.uid,
- deposit: depTier[i]
- });
- }
- }
- }
- })
- }
- heal(type) {
- switch (type) {
- case "proc":
- if (this.myPlayer) {
- this.proc.health.player = (this.myPlayer.health / this.myPlayer.maxHealth) * 100
- if (this.myPet) {
- this.proc.health.pet = (this.myPet.health / this.myPet.maxHealth) * 100
- }
- }
- window.proc = this.proc
- break
- case "player":
- if (this.myPlayer) {
- if (this.proc.health.player <= 35) {
- this.useItem("HealthPotion")
- }
- }
- break
- case "pet":
- if (this.myPet) {
- if (this.proc.health.pet <= 35) {
- this.useItem("PetHealthPotion")
- }
- }
- break
- }
- }
- waveInfo() {
- if ($("#hud-day-night-overlay").css("opacity") < 0.5) {
- if (!scoreLog.n || Date.now() - scoreLog.n >= 1000) {
- if ($("#hud-day-night-overlay").css("opacity") < 0.5) {
- scoreLog.night = true
- scoreLog.day = false
- }
- scoreLog.n = Date.now()
- }
- }
- if ($("#hud-day-night-overlay").css("opacity") > 0.5) {
- if (!scoreLog.d || Date.now() - scoreLog.d >= 1000) {
- if ($("#hud-day-night-overlay").css("opacity") > 0.5) {
- scoreLog.night = false
- scoreLog.day = true
- }
- scoreLog.d = Date.now()
- }
- }
- if (scoreLog.timer.enabled) {
- if (!scoreLog.timer.dateS || Date.now() - scoreLog.timer.dateS >= 1000) {
- scoreLog.timer.sec -= 1
- scoreLog.timer.dateS = Date.now()
- }
- $("#wave-timer").text(scoreLog.timer.sec + "s")
- document.getElementById("waveBarInner").style.width = 100 * (scoreLog.timer.sec / scoreLog.timer.max) + "%"
- }
- }
- autoRespawn() {
- if (document.querySelector('.hud-respawn').style.display == "none") return
- game.inputPacketScheduler.scheduleInput({
- respawn: 1
- })
- document.querySelector('.hud-respawn').style.display = "none"
- }
- clickImitation(e) {
- switch (e) {
- case "space":
- game.network.sendInput({space: 0})
- game.network.sendInput({space: 1})
- break
- case "up":
- Game.currentGame.network.sendInput({
- up: 1
- })
- break
- case "down":
- Game.currentGame.network.sendInput({
- down: 1
- })
- break
- case "left":
- Game.currentGame.network.sendInput({
- left: 1
- })
- break
- case "right":
- Game.currentGame.network.sendInput({
- right: 1
- })
- break
- }
- }
- putBuilding(x, y, model, yaw = 180) {
- Game.currentGame.network.sendRpc({
- name: "MakeBuilding",
- x: x,
- y: y,
- type: model,
- yaw: yaw
- })
- }
- findNearPlayer(ourUID, ourX, ourY) {
- ar[0] = null;
- ar[1] = Infinity;
- for(let key in Game.currentGame.world.entities) {
- const entity = Game.currentGame.world.entities[key];
- if(!entity || entity.targetTick.uid == ourUID || !entity.targetTick || entity.entityClass !== "PlayerEntity" || game.world.localPlayer.entity.targetTick.partyId == entity.targetTick.partyId) continue;
- const position = entity.targetTick.position;
- const dist = (ourX - position.x) ** 2 + (ourY - position.y) ** 2;
- if(dist < ar[1]){
- ar[1] = dist;
- ar[0] = entity;
- }
- }
- return ar;
- }
- setMouseMoved(e) {
- game.network.sendInput({
- mouseMoved: e
- })
- }
- lookYaw({x1, x2}, {y1, y2}) {
- return game.inputPacketCreator.screenToYaw((-x1 + x2) * 100, (-y1 + y2) * 100)
- }
- autoAim() {
- if (this.players.uid) {
- const [target, distSqrd] = this.findNearPlayer(
- game.world.localPlayer.entity.targetTick.uid,
- game.world.localPlayer.entity.targetTick.position.x,
- game.world.localPlayer.entity.targetTick.position.y);
- if (target) {
- this.setMouseMoved(this.lookYaw({
- x1: game.world.localPlayer.entity.targetTick.position.x,
- x2: target.targetTick.position.x
- }, {
- y1: game.world.localPlayer.entity.targetTick.position.y,
- y2: target.targetTick.position.y
- }))
- console.log(target.targetTick)
- document.querySelector(".player-info-holder").innerHTML += `
- <div class="box">
- <div id="name" style="color: #cc5151">Aim at: ${target.targetTick.name}</div>
- </div>`
- }
- }
- }
- buySpear() {
- let getTierText = $("[data-item='Spear'] > .hud-shop-item-tier").text()
- let getTier = getTierText.split(" ")[1]
- if (getTier == 1 && this.myPlayer.gold > 1400) {
- this.useItem("Spear")
- }
- }
- update() {
- if (tgl.autorespawn) this.autoRespawn()
- this.waveInfo()
- this.updateUid()
- this.alive = game.world.inWorld
- if (this.msg.entities) {
- if (window.msg == 0) {
- game.world.replicator.onEntityUpdate(this.msg);
- }
- if (this.msg.entities[this.uid].name) {
- this.myPlayer = this.msg.entities[this.uid];
- }
- for (let ind in this.myPlayer) {
- if (this.myPlayer[ind] !== this.msg.entities[this.uid][ind] && this.msg.entities[this.uid][ind] !== undefined) {
- this.myPlayer[ind] = this.msg.entities[this.uid][ind];
- }
- }
- if (this.myPlayer.petUid) {
- if (this.msg.entities[this.myPlayer.petUid]) {
- if (this.msg.entities[this.myPlayer.petUid].model) {
- this.myPet = this.msg.entities[this.myPlayer.petUid];
- }
- }
- for (let ind in this.myPet) {
- if (this.msg.entities[this.myPlayer.petUid]) {
- if (this.myPet[ind] !== this.msg.entities[this.myPlayer.petUid][ind] && this.msg.entities[this.myPlayer.petUid][ind] !== undefined) {
- this.myPet[ind] = this.msg.entities[this.myPlayer.petUid][ind]
- }
- }
- }
- }
- }
- if (this.alive) {
- //this.revivePets()
- updatePlayerInfo()
- this.updateMyStash()
- this.myPartyKey = Game.currentGame.ui.getPlayerPartyShareKey()
- this.heal("proc")
- if (tgl.autoaim) {
- this.autoAim()
- }
- if (tgl.autobuyspear) {
- this.buySpear()
- }
- if (lockYaw.active) {
- this.setMouseMoved(lockYaw.yaw)
- }
- if (tgl.autospacebar) {
- this.clickImitation("space")
- }
- if (tgl.autoheal) {
- this.heal("player")
- }
- if (tgl.petheal) {
- this.heal("pet")
- }
- if (tgl.ahrc) {
- this.ahrc()
- }
- if (tgl.upgradesall) {
- // Anti lag night
- if (scoreLog.night) {
- if (!this.uaDate || Date.now() - this.uaDate >= 1000) {
- this.upgradeAll()
- this.uaDate = Date.now()
- }
- } else {
- this.upgradeAll()
- }
- }
- if (tgl.bsbase) {
- BSBase()
- }
- }
- }
- }
-
- let handler = new Handler()
- game.network.addPacketHandler = (e, cb) => {
- game.network.emitter.on(packets[e], cb)
- }
-
- game.network.emitter.removeListener('PACKET_ENTITY_UPDATE', game.network.emitter._events.PACKET_ENTITY_UPDATE)
-
- game.network.addPacketHandler(0, e => {
- handler.msg = e
- handler.update()
- })
-
- for (let i = 0; i < 10; i++) {
- game.network.addPacketHandler(i, function(e) {
- handler.msg = e
- handler.update()
- })
- }
-
-
- window.sendBot = () => {
- console.log("Send bot")
- // connect(game.options.servers[game.options.serverId].hostname, "8000")
- }
-
-
- let playerInfo = `
- <div class="player-info-holder">
- </div>
- <style>
- .box {
- font-weight: 1000;
- color: white;
- display: flex;
- foxt-size: 14px;
- }
- .box #name {
- color: #a79aef;
- text-shadow: 0px 0px 5px blue, 0px 0px 5px blue;
- }
- .player-info-holder {
- pointer-events: none;
- position: absolute;
- display: flex;
- flex-direction: column;
- top: 290px;
- left: 76px;
- }
- </style>
- `
-
- $("#hud").append(playerInfo)
-
- function addPlayer(name, res, party) {
- document.querySelector(".player-info-holder").innerHTML += `
- <div class="box">
- <div id="name" style="color: ${handler.myPlayer.partyId == party ? "#8ecc51" : "#a79aef"}">${name} </div>
- <div id="res">[${res}]</div>
- </div>
- `
- }
-
- function updatePlayerInfo() {
- document.querySelector(".player-info-holder").innerHTML = ""
- Object.entries(Game.currentGame.world.entities).forEach((stuff => {
- if (stuff[1].targetTick.entityClass == "PlayerEntity" && ((stuff[1].targetTick.uid !== Game.currentGame.world.entities[Game.currentGame.world.getMyUid()].targetTick.uid) || window.useSamePI)) {
- let rr = Game.currentGame.world.entities[stuff[1].targetTick.uid].targetTick
- handler.players = rr
- let hp = (rr.health / rr.maxHealth) * 100
- let res = `Gold: ${rr.gold},
- Wood: ${rr.wood},
- Stone: ${rr.stone},
- Hp: ${~~(hp)}%`
- addPlayer(stuff[1].targetTick.name, res, rr.partyId)
- }
- }))
- }
-
- let dimension = 1;
-
- const onWindowResize = () => {
- const renderer = Game.currentGame.renderer;
- let canvasWidth = window.innerWidth * window.devicePixelRatio;
- let canvasHeight = window.innerHeight * window.devicePixelRatio;
- let ratio = Math.max(canvasWidth / (1920 * dimension), 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;
- }
-
- onWindowResize()
-
- window.addEventListener("resize", () => {
- onWindowResize()
- })
-
- window.dpr = (e) => {
- window.devicePixelRatio = e
- onWindowResize()
- }
-
- function disableEvent() {
- let els = [".menu-holder", "#hud-menu-party", "#hud-menu-shop", "#hud-menu-settings"]
- for (let i = 0; i < els.length; i++) {
- if ($(els[i]).css("display") != "none") {
- return true
- }
- return false
- }
- }
-
- window.addEventListener("wheel", function(e, t = 1.003) {
- if (disableEvent() || !tgl.wheelzoom || $("#hud-chat").hasClass("is-focused")) return
- if (e.deltaY > 0) {
- for(let i = 0; i < 50; i++) {
- setTimeout(() => {
- dimension = dimension * t
- onWindowResize()
- }, i * 5)
- };
- } else if(e.deltaY <= 1){
- for(let i = 0; i < 50; i++) {
- setTimeout(() => {
- dimension = dimension / t
- onWindowResize()
- }, i * 5)
- };
- }
- });
-
- let lockYaw = {
- active: false,
- yaw: 0
- }
-
- let clearChat = {
- cmd: "!clear",
- active: false
- }
-
- function checkChat() {
- if ($(".hud-chat-input").val() == clearChat.cmd) {
- clearChat.active = true
- }
- }
-
- document.addEventListener("keydown", e => {
- if (e.code == "Enter") {
- checkChat()
- if (clearChat.active) {
- document.querySelector(".hud-chat-messages").innerHTML = ""
- clearChat.active = false
- setTimeout(() => {
- document.querySelector(".hud-chat-messages").innerHTML = ""
- }, 500)
- }
- }
- if (e.code == "KeyX") {
- lockYaw.active = !lockYaw.active
- if (lockYaw.active) {
- lockYaw.yaw = game.world.localPlayer.entity.targetTick.yaw
- } else {
- lockYaw.yaw = null
- }
- }
- })
-
- let dni = `
- <div class="dni-holder">
- <div id="lastscore">Score for last night: 0</div>
- <div class="waveBar">
- <div class="timer-holder">
- <span id="wave-timer">0s</span>
- </div>
- <div id="waveBarInner"></div>
- </div>
- </div>
- <style>
- .timer-holder {
- position: absolute;
- width: 200px;
- height: 30px;
- display: flex;
- margin-left: -3px;
- margin-top: -3px;
- justify-content: center;
- align-items: center;
- }
- .timer-holder span {
- font-size: 20px;
- font-weight: 1000;
- color: #2d2d2d;
- }
- #waveBarInner {
- width: 0%;
- height: 100%;
- background: rgba(255, 255, 255, 0.4);
- border-radius: 6px;
- }
- .waveBar {
- margin: 5px;
- padding: 3px;
- width: 200px;
- height: 30px;
- background: rgb(0 0 0 / 20%);
- border-radius: 6px;
- }
- #lastscore {
- font-weight: 1000;
- font-size: 25px;
- color: #d0d0d0;
- }
- .dni-holder {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- flex-direction: column;
- }
- </style>
- `
-
- $("#hud").append(dni)
-
- let scoreLog = {
- night: false,
- day: false,
- d: Date.now(),
- n: Date.now(),
- new: null,
- old: null,
- last: null,
- date: Date.now(),
- timer: {
- sec: 0,
- dateS: Date.now(),
- enabled: false,
- max: 59
- }
- }
-
- Game.currentGame.network.addRpcHandler("DayCycle", () => {
- if (scoreLog.night) {
- scoreLog.timer.sec = scoreLog.timer.max
- document.getElementById("waveBarInner").style.width = "100%"
- scoreLog.timer.enabled = true
- scoreLog.old = Game.currentGame.ui.playerTick.score
- $("#lastscore").text(`Score for last night: ...`)
- }
- if (scoreLog.day) {
- document.getElementById("waveBarInner").style.background = "rgba(255, 255, 255, 0.4)"
- $("#wave-timer").text("0s")
- document.getElementById("waveBarInner").style.width = "0%"
- scoreLog.timer.enabled = false
- scoreLog.new = Game.currentGame.ui.playerTick.score
- scoreLog.last = (scoreLog.new - scoreLog.old)
- $("#lastscore").text(`Score for last night: ${scoreLog.last}`)
- }
- })
-
-
- let checkbMAIN = [{
- name: "AutoPlayerHeal",
- desc: "Auto uses heal potion",
- id: "autoheal",
- action: "Enabled",
- active: true,
- button: false
- },{
- name: "AutoPetHeal",
- desc: "Auto uses pet heal potion",
- id: "petheal",
- action: "Enabled",
- active: true,
- button: false
- },{
- name: "AHRC",
- desc: "Auto collect resources from harvester",
- id: "ahrc",
- action: "Disabled",
- active: false,
- button: false
- },{
- name: "AutoSpear",
- desc: "Auto buy spear [tier: 1]",
- id: "autobuyspear",
- action: "Disabled",
- active: false,
- button: false
- },{
- name: "AutoSpaceBar",
- desc: "Automatically clicks on the space bar",
- id: "autospacebar",
- action: "Disabled",
- active: false,
- button: false
- },{
- name: "AutoAim",
- desc: "you will look at the enemy, but you will not turn around",
- id: "autoaim",
- action: "Disabled",
- active: false,
- button: false
- }]
- let checkbMISC = [{
- name: "WheelZoom",
- desc: "Changes the visible part of the game",
- id: "wheelzoom",
- action: "Enabled",
- active: true,
- button: false
- },{
- name: "LeaveFromClan",
- desc: "You will leave the clan you are in",
- id: "leaveclan",
- action: "Leave",
- button: true
- },{
- name: "AutoRespawn",
- desc: "Respawn you after death",
- id: "autorespawn",
- action: "Enabled",
- active: true,
- button: false
- }]
- let checkbSELL = [{
- name: "SellPets",
- desc: "Remove your pet",
- id: "sellpets",
- action: "Sell",
- button: true
- },{
- name: "All",
- desc: "Sell everything",
- id: "sellall",
- action: "Sell",
- button: true
- },{
- name: "Walls",
- desc: "Sell walls",
- id: "sellwalls",
- action: "Sell",
- button: true
- },{
- name: "Doors",
- desc: "Sell doors",
- id: "selldoors",
- action: "Sell",
- button: true
- },{
- name: "Traps",
- desc: "Sell traps",
- id: "selltraps",
- action: "Sell",
- button: true
- },{
- name: "ArrowTowers",
- desc: "Sell arrow towers",
- id: "sellarrows",
- action: "Sell",
- button: true
- },{
- name: "CannonTowers",
- desc: "Sell cannon towers",
- id: "sellcannons",
- action: "Sell",
- button: true
- },{
- name: "MeleeTowers",
- desc: "Sell melee towers",
- id: "sellmelees",
- action: "Sell",
- button: true
- },{
- name: "BombTowers",
- desc: "Sell bomb towers",
- id: "sellbombs",
- action: "Sell",
- button: true
- },{
- name: "MageTowers",
- desc: "Sell mage towers",
- id: "sellmages",
- action: "Sell",
- button: true
- },{
- name: "GoldMines",
- desc: "Sell gold mines",
- id: "sellgoldmines",
- action: "Sell",
- button: true
- },{
- name: "Harvesters",
- desc: "Sell harvesters",
- id: "sellharvesters",
- action: "Sell",
- button: true
- },{
- name: "GoldStash",
- desc: "Sell gold stash",
- id: "sellgoldstash",
- action: "Sell",
- button: true
- }]
- let checkbBOTS = [{
- name: "SendBot",
- desc: "Send one bot",
- id: "sendbot",
- action: "Send",
- button: true
- }]
- let checkbUPGRADES = [{
- name: "UpgradesAll",
- desc: "Improves all buildings",
- id: "upgradesall",
- action: "Disabled",
- active: false,
- button: false
- }]
- let checkbAUTOBASE = [{
- name: "BSBase",
- desc: "[BryanSmithBase] Hack will create a base for you by itself",
- id: "bsbase",
- action: "Disabled",
- active: false,
- button: false
- }]
-
- let tgl = {
- autoheal: true,
- petheal: true,
- ahrc: false,
- wheelzoom: true,
- upgradesall: false,
- autorespawn: true,
- autospacebar: false,
- autoaim: false,
- bsbase: false,
- autobuyspear: false
- }
-
- function addTogglerHTML(loc, button, name, desc, id, action, active) {
- if (!button) {
- document.getElementById(loc).innerHTML += `
- <div class="toggler-container">
- <div class="toggler-info">
- <div id="toggler-name">${name}</div>
- <div id="toggler-desc">${desc}</div>
- </div>
- <div class="toggler-display" id="${id}">
- <span class="toggler-checkbox"><span class="toggler-mark ${active ? "toggler-active" : ""}" id="${id}-checkbox"></span></span>
- <span class="toggler-action" id="${id}-action">${action}</span>
- </div>
- </div>
- `
- } else {
- document.getElementById(loc).innerHTML += `
- <div class="toggler-container">
- <div class="toggler-info">
- <div id="toggler-name">${name}</div>
- <div id="toggler-desc">${desc}</div>
- </div>
- <div class="toggler-display" id="${id}">
- <span class="toggler-action">${action}</span>
- </div>
- </div>
- `
- }
- }
-
- function checkboxGenerator() {
- for (let i = 0; i < checkbMAIN.length; i++) {
- if (checkbMAIN[i].name) addTogglerHTML("main", checkbMAIN[i].button, checkbMAIN[i].name, checkbMAIN[i].desc, checkbMAIN[i].id, checkbMAIN[i].action || null, checkbMAIN[i].active || null)
- }
- for (let i = 0; i < checkbMISC.length; i++) {
- if (checkbMISC[i].name) addTogglerHTML("misc", checkbMISC[i].button, checkbMISC[i].name, checkbMISC[i].desc, checkbMISC[i].id, checkbMISC[i].action || null, checkbMISC[i].active || null)
- }
- for (let i = 0; i < checkbSELL.length; i++) {
- if (checkbSELL[i].name) addTogglerHTML("sell", checkbSELL[i].button, checkbSELL[i].name, checkbSELL[i].desc, checkbSELL[i].id, checkbSELL[i].action || null, checkbSELL[i].active || null)
- }
- for (let i = 0; i < checkbBOTS.length; i++) {
- if (checkbBOTS[i].name) addTogglerHTML("bots", checkbBOTS[i].button, checkbBOTS[i].name, checkbBOTS[i].desc, checkbBOTS[i].id, checkbBOTS[i].action, checkbBOTS[i].active)
- }
- for (let i = 0; i < checkbUPGRADES.length; i++) {
- if (checkbUPGRADES[i].name) addTogglerHTML("upgrades", checkbUPGRADES[i].button, checkbUPGRADES[i].name, checkbUPGRADES[i].desc, checkbUPGRADES[i].id, checkbUPGRADES[i].action || null, checkbUPGRADES[i].active || null)
- }
- for (let i = 0; i < checkbAUTOBASE.length; i++) {
- if (checkbAUTOBASE[i].name) addTogglerHTML("autobase", checkbAUTOBASE[i].button, checkbAUTOBASE[i].name, checkbAUTOBASE[i].desc, checkbAUTOBASE[i].id, checkbAUTOBASE[i].action || null, checkbAUTOBASE[i].active || null)
- }
- }
-
- checkboxGenerator()
-
- function updateCheckBox(n, e) {
- if (e) {
- $(`#${n}-action`).text("Enabled")
- $(`#${n}-checkbox`).addClass("toggler-active")
- } else {
- $(`#${n}-action`).text("Disabled")
- $(`#${n}-checkbox`).removeClass("toggler-active")
- }
- }
-
- $("#autoheal").click(() => (tgl.autoheal = !tgl.autoheal, updateCheckBox("autoheal", tgl.autoheal)))
- $("#petheal").click(() => (tgl.petheal = !tgl.petheal, updateCheckBox("petheal", tgl.petheal)))
- $("#ahrc").click(() => (tgl.ahrc = !tgl.ahrc, updateCheckBox("ahrc", tgl.ahrc)))
- $("#wheelzoom").click(() => (tgl.wheelzoom = !tgl.wheelzoom, updateCheckBox("wheelzoom", tgl.wheelzoom)))
- $("#leaveclan").click(() => Game.currentGame.network.sendRpc({name: "LeaveParty"}))
- $("#upgradesall").click(() => (tgl.upgradesall = !tgl.upgradesall, updateCheckBox("upgradesall", tgl.upgradesall)))
- $("#sendbot").click(() => window.sendBot())
- $("#autorespawn").click(() => (tgl.autorespawn = !tgl.autorespawn, updateCheckBox("autorespawn", tgl.autorespawn)))
- $("#autospacebar").click(() => (tgl.autospacebar = !tgl.autospacebar, updateCheckBox("autospacebar", tgl.autospacebar)))
- $("#autoaim").click(() => (tgl.autoaim = !tgl.autoaim, updateCheckBox("autoaim", tgl.autoaim)))
- $("#sellpets").click(() => handler.sellPets())
- $("#bsbase").click(() => (tgl.bsbase = !tgl.bsbase, updateCheckBox("bsbase", tgl.bsbase)))
- $("#autobuyspear").click(() => (tgl.autobuyspear = !tgl.autobuyspear, updateCheckBox("autobuyspear", tgl.autobuyspear)))
-
- $("#sellall").click(() => handler.sellAll())
- $("#sellwalls").click(() => handler.sellBuilding("Wall", {verify: false, content: ""}))
- $("#selldoors").click(() => handler.sellBuilding("Door", {verify: false, content: ""}))
- $("#selltraps").click(() => handler.sellBuilding("SlowTrap", {verify: false, content: ""}))
- $("#sellarrows").click(() => handler.sellBuilding("ArrowTower", {verify: false, content: ""}))
- $("#sellcannons").click(() => handler.sellBuilding("ConnonTower", {verify: false, content: ""}))
- $("#sellmelees").click(() => handler.sellBuilding("MeleeTower", {verify: false, content: ""}))
- $("#sellbombs").click(() => handler.sellBuilding("BombTower", {verify: false, content: ""}))
- $("#sellmages").click(() => handler.sellBuilding("MageTower", {verify: false, content: ""}))
- $("#sellgoldmines").click(() => handler.sellBuilding("GoldMine", {verify: false, content: ""}))
- $("#sellharvesters").click(() => handler.sellBuilding("Harvester", {verify: false, content: ""}))
- $("#sellgoldstash").click(() => handler.sellBuilding("GoldStash", {verify: true, content: "Are you sure?"}))
-
- function OWBase() {
- if (!handler.myStash.targetTick) return
- let stash = handler.myStash.targetTick
- let stashPosition = {
- x: stash.position.x,
- y: stash.position.y
- }
- }
-
- function BSBase() {
- if (!handler.myStash.targetTick) return
- let stash = handler.myStash.targetTick
- let stashPosition = {
- x: stash.position.x,
- y: stash.position.y
- }
- handler.putBuilding(stashPosition.x + 0, stashPosition.y + 0, 'GoldStash', 0);
- handler.putBuilding(stashPosition.x + -192, stashPosition.y + -48, 'GoldMine', 0);
- handler.putBuilding(stashPosition.x + -192, stashPosition.y + 48, 'GoldMine', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + -192, 'GoldMine', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + -192, 'GoldMine', 0);
- handler.putBuilding(stashPosition.x + 192, stashPosition.y + -48, 'GoldMine', 0);
- handler.putBuilding(stashPosition.x + 192, stashPosition.y + 48, 'GoldMine', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + 192, 'GoldMine', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + 192, 'GoldMine', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + 288, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + 288, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + 288, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + 288, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + -288, stashPosition.y + -48, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + -288, stashPosition.y + 48, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + -288, stashPosition.y + 144, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + -288, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + -288, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 288, stashPosition.y + -144, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 288, stashPosition.y + -48, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 288, stashPosition.y + 48, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 288, stashPosition.y + 144, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 384, stashPosition.y + 144, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 480, stashPosition.y + 144, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 336, stashPosition.y + 240, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 432, stashPosition.y + 240, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 384, stashPosition.y + 336, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + 384, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + 480, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + 576, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + 240, stashPosition.y + 432, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + -288, stashPosition.y + -144, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -384, stashPosition.y + -144, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -480, stashPosition.y + -144, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -432, stashPosition.y + -240, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -336, stashPosition.y + -240, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -336, stashPosition.y + 240, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + 384, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -240, stashPosition.y + 432, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + -288, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + -384, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + -480, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -240, stashPosition.y + -432, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -336, stashPosition.y + -384, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + -288, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + -384, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + -480, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 240, stashPosition.y + -432, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 336, stashPosition.y + -384, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 336, stashPosition.y + -240, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 432, stashPosition.y + -240, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 528, stashPosition.y + -240, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 480, stashPosition.y + -144, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 576, stashPosition.y + -144, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + 384, stashPosition.y + -144, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 384, stashPosition.y + -48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 384, stashPosition.y + 48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 480, stashPosition.y + -48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 480, stashPosition.y + 48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 576, stashPosition.y + -48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 576, stashPosition.y + 48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 528, stashPosition.y + 240, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + 480, stashPosition.y + 336, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + 240, stashPosition.y + 528, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + 576, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + 384, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + 384, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + 480, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + 480, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + 576, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + 480, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + 576, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -240, stashPosition.y + 528, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -336, stashPosition.y + 480, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -384, stashPosition.y + -48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -384, stashPosition.y + 48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -384, stashPosition.y + 144, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -480, stashPosition.y + -48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -480, stashPosition.y + 48, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -480, stashPosition.y + 144, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -432, stashPosition.y + 240, 'CannonTower', 0);
- handler.putBuilding(stashPosition.x + -384, stashPosition.y + 336, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + 336, stashPosition.y + 480, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -480, stashPosition.y + 336, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -528, stashPosition.y + 240, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + 480, stashPosition.y + -336, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + -480, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + -384, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + -384, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + -480, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 48, stashPosition.y + -576, 'BombTower', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + -576, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + 240, stashPosition.y + -528, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + 336, stashPosition.y + -480, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -48, stashPosition.y + -576, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + -576, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -240, stashPosition.y + -528, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -336, stashPosition.y + -480, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -576, stashPosition.y + 48, 'ArrowTower', 0);
- handler.putBuilding(stashPosition.x + -576, stashPosition.y + 144, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -576, stashPosition.y + -48, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -576, stashPosition.y + -144, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -528, stashPosition.y + -240, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -480, stashPosition.y + -336, 'MagicTower', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + -192, 'Harvester', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + -192, 'Harvester', 0);
- handler.putBuilding(stashPosition.x + 144, stashPosition.y + 192, 'Harvester', 0);
- handler.putBuilding(stashPosition.x + -144, stashPosition.y + 192, 'Harvester', 0);
- handler.putBuilding(stashPosition.x + -648, stashPosition.y + -168, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -648, stashPosition.y + -120, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -648, stashPosition.y + -72, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -648, stashPosition.y + -24, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -648, stashPosition.y + 24, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -648, stashPosition.y + 72, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -648, stashPosition.y + 120, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -648, stashPosition.y + 168, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -696, stashPosition.y + -120, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -696, stashPosition.y + -72, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -696, stashPosition.y + -24, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -696, stashPosition.y + 24, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -696, stashPosition.y + 72, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -696, stashPosition.y + 120, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 600, stashPosition.y + 120, 'Door', 0);
- handler.putBuilding(stashPosition.x + 552, stashPosition.y + 120, 'Door', 0);
- handler.putBuilding(stashPosition.x + 552, stashPosition.y + 168, 'Door', 0);
- handler.putBuilding(stashPosition.x + 600, stashPosition.y + 168, 'Door', 0);
- handler.putBuilding(stashPosition.x + 648, stashPosition.y + -168, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 648, stashPosition.y + -120, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 648, stashPosition.y + -72, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 648, stashPosition.y + -24, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 648, stashPosition.y + 24, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 648, stashPosition.y + 72, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 648, stashPosition.y + 120, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 648, stashPosition.y + 168, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 696, stashPosition.y + -120, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 696, stashPosition.y + -72, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 696, stashPosition.y + -24, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 696, stashPosition.y + 24, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 696, stashPosition.y + 72, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 696, stashPosition.y + 120, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -168, stashPosition.y + -648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -120, stashPosition.y + -648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -72, stashPosition.y + -648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -24, stashPosition.y + -648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 24, stashPosition.y + -648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 72, stashPosition.y + -648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 120, stashPosition.y + -648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 168, stashPosition.y + -648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -120, stashPosition.y + -696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -72, stashPosition.y + -696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -24, stashPosition.y + -696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 24, stashPosition.y + -696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 72, stashPosition.y + -696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 120, stashPosition.y + -696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -168, stashPosition.y + 648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -120, stashPosition.y + 648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -72, stashPosition.y + 648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -24, stashPosition.y + 648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 24, stashPosition.y + 648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 72, stashPosition.y + 648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 120, stashPosition.y + 648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 168, stashPosition.y + 648, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -120, stashPosition.y + 696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -72, stashPosition.y + 696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + -24, stashPosition.y + 696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 24, stashPosition.y + 696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 72, stashPosition.y + 696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 120, stashPosition.y + 696, 'Wall', 0);
- handler.putBuilding(stashPosition.x + 216, stashPosition.y + 312, 'Door', 0);
- handler.putBuilding(stashPosition.x + 216, stashPosition.y + 360, 'Door', 0);
- handler.putBuilding(stashPosition.x + 264, stashPosition.y + 360, 'Door', 0);
- handler.putBuilding(stashPosition.x + 216, stashPosition.y + -120, 'Door', 0);
- handler.putBuilding(stashPosition.x + -216, stashPosition.y + -120, 'Door', 0);
- handler.putBuilding(stashPosition.x + -216, stashPosition.y + 120, 'Door', 0);
- handler.putBuilding(stashPosition.x + 216, stashPosition.y + 120, 'Door', 0);
- handler.putBuilding(stashPosition.x + 216, stashPosition.y + -312, 'Door', 0);
- handler.putBuilding(stashPosition.x + 216, stashPosition.y + -360, 'Door', 0);
- handler.putBuilding(stashPosition.x + 264, stashPosition.y + -360, 'Door', 0);
- handler.putBuilding(stashPosition.x + -216, stashPosition.y + -360, 'Door', 0);
- handler.putBuilding(stashPosition.x + -216, stashPosition.y + -312, 'Door', 0);
- handler.putBuilding(stashPosition.x + -264, stashPosition.y + -360, 'Door', 0);
- handler.putBuilding(stashPosition.x + -216, stashPosition.y + 312, 'Door', 0);
- handler.putBuilding(stashPosition.x + -216, stashPosition.y + 360, 'Door', 0);
- handler.putBuilding(stashPosition.x + -264, stashPosition.y + 360, 'Door', 0);
- }
-
-
-
-
-
-
-