您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
create your own points on the map and move along them repeatedly
- // ==UserScript==
- // @name Customisable auto move
- // @namespace https://tampermonkey.net/
- // @version v1.0
- // @description create your own points on the map and move along them repeatedly
- // @author me ofc and probably chatgpt
- // @match *://zombs.io/*
- // @license MIT
- // @require https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js
- // ==/UserScript==
- /* global game */
- /* global Game */
- let markerIds = 0;
- let maxMarkers = 69420;
- let markers = [];
- let goToMarkerInterval;
- let repeatingMoveInterval;
- let currentIndex = 0;
- let markermoveTimeout;
- function addMarker(x, y) {
- if (markerIds >= maxMarkers) {
- game.ui.getComponent('PopupOverlay').showHint('Max number of markers reached.', 1500);
- } else {
- markerIds++;
- markers.push({ id: markerIds, x, y });
- var map = document.getElementById("hud-map");
- map.insertAdjacentHTML("beforeend", `<div data-marker-id="${markerIds}" style="color: red; display: block; left: ${x}px; top: ${y}px; position: absolute;" class='hud-map-player marker-placed-by-command'></div>`);
- game.ui.getComponent('PopupOverlay').showHint(`Added Marker ${markerIds}`, 1500);
- }
- }
- function resetMarkerIds() {
- markerIds = 0;
- markers = [];
- game.ui.getComponent('PopupOverlay').showHint('Marker IDs reset.', 1500);
- }
- function moveToNextMarker() {
- if (markers.length === 0) {
- game.ui.getComponent('PopupOverlay').showHint('No markers placed.', 1500);
- return;
- }
- currentIndex = (currentIndex + 1) % markers.length;
- const marker = markers[currentIndex];
- if (marker) {
- goToMarkerPos(marker.x, marker.y);
- }
- }
- function startRepeatingMove() {
- if (markers.length === 0) {
- game.ui.getComponent('PopupOverlay').showHint('No markers placed.', 1500);
- return;
- }
- repeatingMoveInterval = setInterval(() => {
- moveToNextMarker();
- }, 100);
- }
- function stopRepeatingMove() {
- clearInterval(goToMarkerInterval);
- clearTimeout(markermoveTimeout);
- game.network.sendInput({ left: 0, right: 0, up: 0, down: 0 });
- game.ui.getComponent('PopupOverlay').showHint('Successfully stopped MapMover.', 4000);
- }
- function handleMarkerMove() {
- stopRepeatingMove();
- currentIndex = 0;
- moveToNextMarker();
- }
- game.network.addRpcHandler('ReceiveChatMessage', function (e) {
- if (e.uid == game.ui.playerTick.uid) {
- const message = e.message.trim();
- if (message === "!markers") {
- addMarker(game.ui.playerTick.position.x, game.ui.playerTick.position.y);
- } else if (message === "!delmarkers") {
- const markerElements = document.querySelectorAll('.marker-placed-by-command');
- markerElements.forEach(markerElement => {
- const markerId = markerElement.getAttribute("data-marker-id");
- if (markerId) {
- const idToRemove = parseInt(markerId);
- const indexToRemove = markers.findIndex(m => m.id === idToRemove);
- if (indexToRemove !== -1) {
- markers.splice(indexToRemove, 1);
- markerElement.remove();
- }
- }
- });
- game.ui.getComponent('PopupOverlay').showHint('Deleted Markers', 1500);
- resetMarkerIds();
- } else if (message === "!markermove") {
- handleMarkerMove();
- } else if (message === "!stop") {
- stopRepeatingMove();
- }
- }
- });
- function goToMarkerPos(x, y) {
- clearInterval(goToMarkerInterval);
- goToMarkerInterval = setInterval(() => {
- let myX = Math.round(game.ui.playerTick.position.x);
- let myY = Math.round(game.ui.playerTick.position.y);
- let offset = 69
- if (-myX + x > offset) game.network.sendInput({ left: 0 }); else game.network.sendInput({ left: 1 });
- if (myX - x > offset) game.network.sendInput({ right: 0 }); else game.network.sendInput({ right: 1 });
- if (-myY + y > offset) game.network.sendInput({ up: 0 }); else game.network.sendInput({ up: 1 });
- if (myY - y > offset) game.network.sendInput({ down: 0 }); else game.network.sendInput({ down: 1 });
- if (-myX + x < offset && myX - x < offset && -myY + y < offset && myY - y < offset) {
- game.ui.getComponent('PopupOverlay').showHint('Finished moving!', 1e4);
- clearInterval(goToMarkerInterval);
- markermoveTimeout = setTimeout(() => {
- moveToNextMarker();
- }, 100);
- }
- });
- }