// ==UserScript==
// @name Circle Walls, Working 2022 Best Defense Script, OP Script ZOMBS.io
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Makes a circle of walls with radius 3. Super good for defending your base.
// @author DarkResurgence
// @match zombs.io
// @grant Bang
// @license MIT
// ==/UserScript==
function disconnectPartyMembers(member = 3) {
// Controlers
if (game.ui.playerPartyMembers[3] && game.ui.playerPartyMembers[0].playerUid == game.world.myUid) {
let fnc1 = game.network.emitter._events.PACKET_RPC[15];
let enabled = false;
game.network.emitter._events.PACKET_RPC[15] = (data) => {
if (enabled) {
fnc1(data)
}
}
let dcpacket1 = new Uint8Array(game.network.codec.encode(9, {name: "SetPartyMemberCanSell", uid: game.ui.playerPartyMembers[member].playerUid, canSell: 0}));
let dcpacket2 = new Uint8Array(game.network.codec.encode(9, {name: "SetPartyMemberCanSell", uid: game.ui.playerPartyMembers[member].playerUid, canSell: 1}));
for (let i = 0; i < 50000; i++) {
game.network.socket.send(dcpacket1);
game.network.socket.send(dcpacket2);
}
setTimeout(() => {
enabled = true;
game.network.socket.send([]);
}, 15000);
}
}
game.network.addRpcHandler("ReceiveChatMessage", e => {
if (e.uid == game.world.myUid) {
if (e.message.toLowerCase() == "!dis party") {
disconnectPartyMembers()
}
if (e.message.toLowerCase() == "!dis") {
game.network.socket.send([]);
}
}
})
let mousePs = {};
let shouldBuildWalls = true;
function placeWall(x, y) {
game.network.sendRpc({name: 'MakeBuilding', x: x, y: y, type: "Wall", yaw: 0});
}
document.addEventListener('mousemove', e => {
mousePs = {x: e.clientX, y: e.clientY};
if (shouldBuildWalls && game.inputManager.mouseDown && game.ui.components.PlacementOverlay.buildingId == "Wall") {
var buildingSchema = game.ui.getBuildingSchema();
var schemaData = buildingSchema.Wall;
var mousePosition = game.ui.getMousePosition();
var world = game.world;
var worldPos = game.renderer.screenToWorld(mousePs.x, mousePs.y);
var cellIndexes = world.entityGrid.getCellIndexes(worldPos.x, worldPos.y, {width: schemaData.gridWidth, height: schemaData.gridHeight});
var cellSize = world.entityGrid.getCellSize();
var cellAverages = { x: 0, y: 0 };
for (var i in cellIndexes) {
if (!cellIndexes[i]) {
return false;
}
var cellPos = world.entityGrid.getCellCoords(cellIndexes[i]);
var isOccupied = game.ui.components.PlacementOverlay.checkIsOccupied(cellIndexes[i], cellPos);
cellAverages.x += cellPos.x;
cellAverages.y += cellPos.y;
}
cellAverages.x = cellAverages.x/cellIndexes.length;
cellAverages.y = cellAverages.y/cellIndexes.length;
var gridPos = {
x: cellAverages.x * cellSize + cellSize/2,
y: cellAverages.y * cellSize + cellSize/2
};
placeWall(gridPos.x - 48 - 48 - 48, gridPos.y);
placeWall(gridPos.x + 48 + 48 + 48, gridPos.y);
placeWall(gridPos.x, gridPos.y + 48 + 48 + 48);
placeWall(gridPos.x, gridPos.y - 48 - 48 - 48);
placeWall(gridPos.x - 48, gridPos.y + 48 + 48 + 48);
placeWall(gridPos.x + 48, gridPos.y + 48 + 48 + 48);
placeWall(gridPos.x + 48 + 48 + 48, gridPos.y + 48);
placeWall(gridPos.x + 48 + 48 + 48, gridPos.y - 48);
placeWall(gridPos.x + 48, gridPos.y - 48 - 48 - 48);
placeWall(gridPos.x - 48, gridPos.y - 48 - 48 - 48);
placeWall(gridPos.x - 48 - 48 - 48, gridPos.y - 48);
placeWall(gridPos.x - 48 - 48 - 48, gridPos.y + 48);
placeWall(gridPos.x - 48 - 48, gridPos.y - 48 - 48);
placeWall(gridPos.x + 48 + 48, gridPos.y - 48 - 48);
placeWall(gridPos.x + 48 + 48, gridPos.y + 48 + 48);
placeWall(gridPos.x - 48 - 48, gridPos.y + 48 + 48);
placeWall(gridPos.x - 48 - 48, gridPos.y);
placeWall(gridPos.x + 48 + 48, gridPos.y);
placeWall(gridPos.x, gridPos.y - 48 - 48);
placeWall(gridPos.x, gridPos.y + 48 + 48);
placeWall(gridPos.x + 48, gridPos.y + 48 + 48);
placeWall(gridPos.x - 48, gridPos.y + 48 + 48);
placeWall(gridPos.x - 48 - 48, gridPos.y - 48);
placeWall(gridPos.x - 48 - 48, gridPos.y + 48);
placeWall(gridPos.x - 48, gridPos.y - 48 - 48);
placeWall(gridPos.x + 48, gridPos.y - 48 - 48);
placeWall(gridPos.x + 48 + 48, gridPos.y - 48);
placeWall(gridPos.x + 48 + 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);
placeWall(gridPos.x - 48, gridPos.y + 48);
placeWall(gridPos.x + 48, gridPos.y);
placeWall(gridPos.x - 48, gridPos.y);
placeWall(gridPos.x, gridPos.y + 48);
placeWall(gridPos.x, gridPos.y - 48);
}
})
let blockedNames = [];
window.blockPlayer = name => {
game.ui.components.PopupOverlay.showConfirmation(`Are you sure you want to block ${name}?`, 3500, () => {
blockedNames.push(name);
for(let msg of Array.from(document.getElementsByClassName("hud-chat-message"))) {
if(msg.childNodes[2].innerText === name) {
let bl = msg.childNodes[0];
bl.innerHTML = "Unblock";
bl.style.color = "red";
bl.onclick = () => {
window.unblockPlayer(name);
};
};
};
}, () => {});
};
window.unblockPlayer = name => {
blockedNames.splice(blockedNames.indexOf(name), 1);
for(let msg of Array.from(document.getElementsByClassName("hud-chat-message"))) {
if(msg.childNodes[2].innerText === name) {
let bl = msg.childNodes[0];
bl.innerHTML = "Block";
bl.style.color = "red";
bl.onclick = () => {
window.blockPlayer(name);
};
};
};
};
const getClock = () => {
var date = new Date();
var d = date.getDate();
var d1 = date.getDay();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds()
var session = "PM";
if(h == 2){
h = 12;
};
if(h < 13) {
session = "AM"
};
if(h > 12){
session = "PM";
h -= 12;
};
h = (h < 10) ? "0" + h : h;
m = (m < 10) ? "0" + m : m;
s = (s < 10) ? "0" + s : s;
return `${h}:${m} ${session}`;
}
Game.currentGame.network.emitter.removeListener("PACKET_RPC", Game.currentGame.network.emitter._events.PACKET_RPC[1]);
let onMessageReceived = (msg => {
let a = Game.currentGame.ui.getComponent("Chat"),
b = msg.displayName.replace(/<(?:.|\n)*?>/gm, ''),
c = msg.message.replace(/<(?:.|\n)*?>/gm, '')
if(blockedNames.includes(b) || window.chatDisabled) { return; };
let d = a.ui.createElement(`<div class="hud-chat-message"><a href="javascript:void(0);" onclick="window.blockPlayer(\`${b}\`)" style="color: red;">Block</a> <strong>${b}</strong> <small> at ${getClock()}</small>: ${c}</div>`);
a.messagesElem.appendChild(d);
a.messagesElem.scrollTop = a.messagesElem.scrollHeight;
})
Game.currentGame.network.addRpcHandler("ReceiveChatMessage", onMessageReceived);