您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Script for auto add players to your party
// ==UserScript== // @name Gota.io auto invite // @name:ru Gota.io авто инвайтер // @namespace Gota.io script by Madzal // @author Madzal // @version 3 // @homepage http://gota.io/web // @supportURL http://www.YouTube.com/user/madzal777 // @description Script for auto add players to your party // @description:ru Скрипт для авто добавления игроков в твою команду // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZ // @match http://gota.io/web/ // @exclude file://* // @run-at document-end // @encoding utf-8 // @grant none // @noframes // @license MIT // // ==/UserScript== (function() { 'use strict'; // Enforce strict mode for cleaner code let observer = null; // To hold the MutationObserver instance function handlePlayerInvite(node) { // Check if the inserted node is a chat message containing a canvas // This assumes chat messages for player IDs are structured in a predictable way const canvas = node.querySelector("canvas[data-player-id]"); if (canvas) { const playerid = canvas.getAttribute("data-player-id"); const partyCanvas = document.getElementById("party-canvas"); // Ensure partyCanvas exists and has the correct height before sending an invite if (partyCanvas && partyCanvas.height !== 205) { console.log('Sending invite to player - ' + playerid); // Ensure 'player' and 'Packet' objects are available in the page context. // If they are not, you might need to use 'unsafeWindow.player' or 'unsafeWindow.Packet' // However, since @grant none is used, the script runs in the page context by default. if (typeof player !== 'undefined' && typeof Packet !== 'undefined' && typeof Packet.sendPartyAction !== 'undefined') { player.sendPacket(new Packet.sendPartyAction(0, playerid)); } else { console.warn("Gota.io game objects (player or Packet) not found. Cannot send invite."); } } } } function startAutoInvite() { const chatBody = document.getElementById("chat-body"); if (!chatBody) { console.error("Chat body element not found. Auto invite cannot start."); return; } // Options for the observer (which mutations to observe) const config = { childList: true, subtree: true }; // Callback function to execute when mutations are observed const callback = (mutationsList, observerInstance) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { for (const addedNode of mutation.addedNodes) { // Check if the added node is an element and not just text if (addedNode.nodeType === 1) { // Node.ELEMENT_NODE handlePlayerInvite(addedNode); } } } } }; // Create a new MutationObserver instance observer = new MutationObserver(callback); // Start observing the target node for configured mutations observer.observe(chatBody, config); console.log("Auto invite started. Monitoring chat for new players."); // Disable the start button and enable the stop button document.getElementById("start_invite").disabled = true; document.getElementById("stop_invite").disabled = false; } function stopAutoInvite() { if (observer) { observer.disconnect(); // Stop observing observer = null; console.log("Auto invite stopped."); } // Disable the stop button and enable the start button document.getElementById("start_invite").disabled = false; document.getElementById("stop_invite").disabled = true; } // --- Script Initialization --- // Create buttons const startButton = document.createElement("input"); startButton.className = "gota-btn"; startButton.type = "button"; startButton.value = "Start Auto Invite"; startButton.id = "start_invite"; startButton.addEventListener("click", startAutoInvite, false); const stopButton = document.createElement("input"); stopButton.className = "gota-btn"; stopButton.type = "button"; stopButton.value = "Stop Script"; stopButton.id = "stop_invite"; stopButton.addEventListener("click", stopAutoInvite, false); stopButton.disabled = true; // Initially disabled until invite starts // Append buttons to the Gota.io UI const mainTop = document.getElementsByClassName("main-top")[0]; if (mainTop) { const mydiv = document.createElement("div"); mydiv.className = "main-version"; mydiv.style.margin = "15px"; mydiv.appendChild(startButton); mydiv.appendChild(stopButton); mainTop.appendChild(mydiv); } else { console.error("Could not find '.main-top' element to append buttons."); } })();