Simple yet modern render options for zombia.io.
目前為
// ==UserScript==
// @name hackqd's Render Options {Zombia.io}
// @namespace http://tampermonkey.net/
// @version 1.9
// @description Simple yet modern render options for zombia.io.
// @author hackqd
// @match *://zombia.io/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
let disableBackground = false;
let disableProjectiles = false;
let disableBuildings = false;
let disableZombies = false;
let disableScenery = false;
let disablePlayers = false;
const settingsButton = document.createElement("div");
settingsButton.innerHTML = "⚙️";
settingsButton.style.position = "absolute";
settingsButton.style.top = "10px";
settingsButton.style.left = "10px";
settingsButton.style.width = "40px";
settingsButton.style.height = "40px";
settingsButton.style.background = "#717d7e";
settingsButton.style.color = "white";
settingsButton.style.fontSize = "24px";
settingsButton.style.textAlign = "center";
settingsButton.style.lineHeight = "40px";
settingsButton.style.borderRadius = "8px";
settingsButton.style.cursor = "pointer";
settingsButton.style.zIndex = "1000";
document.body.appendChild(settingsButton);
const settingsPanel = document.createElement("div");
settingsPanel.style.position = "absolute";
settingsPanel.style.top = "60px";
settingsPanel.style.left = "10px";
settingsPanel.style.padding = "15px";
settingsPanel.style.background = "rgba(255, 255, 255, 0.1)";
settingsPanel.style.backdropFilter = "blur(10px)";
settingsPanel.style.borderRadius = "12px";
settingsPanel.style.boxShadow = "0 4px 10px rgba(0, 0, 0, 0.4)";
settingsPanel.style.color = "white";
settingsPanel.style.display = "none";
settingsPanel.style.zIndex = "1000";
settingsPanel.style.minWidth = "200px";
settingsPanel.style.width = "auto";
document.body.appendChild(settingsPanel);
let isDragging = false;
let offsetX = 0;
let offsetY = 0;
settingsPanel.addEventListener('mousedown', (e) => {
isDragging = true;
offsetX = e.clientX - settingsPanel.offsetLeft;
offsetY = e.clientY - settingsPanel.offsetTop;
settingsPanel.style.cursor = "move";
});
document.addEventListener('mousemove', (e) => {
if (isDragging) {
settingsPanel.style.left = (e.clientX - offsetX) + "px";
settingsPanel.style.top = (e.clientY - offsetY) + "px";
}
});
document.addEventListener('mouseup', () => {
isDragging = false;
settingsPanel.style.cursor = "default";
});
const title = document.createElement("div");
title.innerText = "Render Options";
title.style.fontSize = "18px";
title.style.fontWeight = "bold";
title.style.marginBottom = "10px";
settingsPanel.appendChild(title);
const buttonContainer = document.createElement("div");
buttonContainer.style.display = "grid";
buttonContainer.style.gridTemplateColumns = "repeat(3, 1fr)";
buttonContainer.style.gridGap = "10px";
buttonContainer.style.marginBottom = "15px";
settingsPanel.appendChild(buttonContainer);
function createToggleButton(text, callback) {
const button = document.createElement("button");
button.innerText = text;
button.style.padding = "8px 15px";
button.style.background = "red";
button.style.color = "white";
button.style.border = "none";
button.style.cursor = "pointer";
button.style.borderRadius = "5px";
button.style.fontSize = "14px";
button.style.transition = "background-color 0.3s";
button.style.minWidth = "120px";
button.style.outline = "none";
button.addEventListener("click", callback);
buttonContainer.appendChild(button);
return button;
}
const toggleBackgroundButton = createToggleButton("Stop Rendering Background", function() {
disableBackground = !disableBackground;
toggleBackgroundButton.innerText = disableBackground ? "Start Rendering Background" : "Stop Rendering Background";
toggleBackgroundButton.style.background = disableBackground ? "green" : "red";
if (window.game && window.game.renderer && window.game.renderer.groundLayer) {
window.game.renderer.groundLayer.setVisible(!disableBackground);
} else {
console.warn("ground layer not found");
}
});
const toggleProjectilesButton = createToggleButton("Stop Rendering Projectiles", function() {
disableProjectiles = !disableProjectiles;
toggleProjectilesButton.innerText = disableProjectiles ? "Start Rendering Projectiles" : "Stop Rendering Projectiles";
toggleProjectilesButton.style.background = disableProjectiles ? "green" : "red";
if (window.game && window.game.renderer && window.game.renderer.projectiles) {
window.game.renderer.projectiles.setVisible(!disableProjectiles);
} else {
console.warn("projectile layer not found");
}
});
const toggleBuildingsButton = createToggleButton("Stop Rendering Buildings", function() {
disableBuildings = !disableBuildings;
toggleBuildingsButton.innerText = disableBuildings ? "Start Rendering Buildings" : "Stop Rendering Buildings";
toggleBuildingsButton.style.background = disableBuildings ? "green" : "red";
if (window.game && window.game.renderer && window.game.renderer.buildings) {
window.game.renderer.buildings.setVisible(!disableBuildings);
} else {
console.warn("building layer not found");
}
});
const toggleZombiesButton = createToggleButton("Stop Rendering Zombies", function() {
disableZombies = !disableZombies;
toggleZombiesButton.innerText = disableZombies ? "Start Rendering Zombies" : "Stop Rendering Zombies";
toggleZombiesButton.style.background = disableZombies ? "green" : "red";
if (window.game && window.game.renderer && window.game.renderer.zombieLayer) {
window.game.renderer.zombieLayer.setVisible(!disableZombies);
} else {
console.warn("zombie layer not found");
}
});
const toggleSceneryButton = createToggleButton("Stop Rendering Scenery", function() {
disableScenery = !disableScenery;
toggleSceneryButton.innerText = disableScenery ? "Start Rendering Scenery" : "Stop Rendering Scenery";
toggleSceneryButton.style.background = disableScenery ? "green" : "red";
if (window.game && window.game.renderer && window.game.renderer.scenery) {
window.game.renderer.scenery.setVisible(!disableScenery);
} else {
console.warn("scenery layer not found");
}
});
const togglePlayersButton = createToggleButton("Stop Rendering Players", function() {
disablePlayers = !disablePlayers;
togglePlayersButton.innerText = disablePlayers ? "Start Rendering Players" : "Stop Rendering Players";
togglePlayersButton.style.background = disablePlayers ? "green" : "red";
if (window.game && window.game.renderer && window.game.renderer.players) {
window.game.renderer.players.setVisible(!disablePlayers);
} else {
console.warn("player layer not found");
}
});
settingsButton.addEventListener("click", function() {
settingsPanel.style.display = (settingsPanel.style.display === "none") ? "block" : "none";
});
})();