您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
xhat
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/536283/1590706/Chatttt.js
// crossDomainChat.js (New Tab for Cross-Domain Chat) Tabs.CrossDomainChat = { tabOrder: 2140, // Adjust order as needed tabLabel: "Cross-Domain Chat", tabColor: "orange", myDiv: null, chatHistory: [], // Store chat history maxHistory: 200, // Maximum number of messages to store domains: [], // List of domains to chat with init(div) { this.myDiv = div; this.paint(); }, paint() { const m = ` <div class="divHeader" align="center">Cross-Domain Chat</div> <br> <div align="center"> <label for="chatDomains">Domains (comma-separated):</label> <input type="text" id="chatDomains" class="btInput" value="${this.domains.join(', ')}"> <br><br> <textarea id="chatInput" rows="3" cols="50" class="btInput" placeholder="Enter message..."></textarea> <br> <button id="sendButton" class="buttonv2 std blue">Send</button> <br><br> <div id="chatDisplay" style="height: 400px; overflow-y: scroll;"></div> </div> `; this.myDiv.innerHTML = m; // Event listeners $("#sendButton").click(() => this.sendMessage()); $("#chatDomains").change(() => this.updateDomains()); }, updateDomains() { const domainsInput = $("#chatDomains").val(); this.domains = domainsInput.split(',').map(d => d.trim()).filter(d => d !== ""); // Clean up domains this.saveDomains(); // Save domains to storage (using GM_setValue or similar) }, sendMessage() { const message = $("#chatInput").val().trim(); if (message === "" || this.domains.length === 0) { return; } // Add message to chat history this.addMessage(Seed.player.name, message, getServerId()); // Add sender's domain this.displayChat(); // Send message to other domains (implementation omitted) // This would involve sending cross-domain messages or using a shared server. // You'll need to devise a secure and reliable communication method. $("#chatInput").val(""); // Clear input field }, addMessage(sender, message, domain) { this.chatHistory.push({ sender, message, timestamp: Date.now(), domain }); if (this.chatHistory.length > this.maxHistory) { this.chatHistory.shift(); // Remove oldest message } this.saveChatHistory(); // Save chat history to storage }, displayChat() { const chatDisplay = $("#chatDisplay"); chatDisplay.empty(); // Clear previous messages this.chatHistory.forEach(msg => { const messageElement = $("<div></div>"); messageElement.html(`[${new Date(msg.timestamp).toLocaleTimeString()}] [${msg.domain}] ${msg.sender}: ${msg.message}`); chatDisplay.append(messageElement); }); // Scroll to bottom chatDisplay.scrollTop(chatDisplay[0].scrollHeight); }, // ... (Implement saveDomains and saveChatHistory using GM_setValue or similar) ... show() { this.loadDomains(); // Load saved domains this.loadChatHistory(); // Load saved chat history this.displayChat(); }, hide() { // ... (Any logic to run when the tab is hidden) ... } };