您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
tab
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/538683/1603256/allie%20test.js
Tabs.AllianceChat = { tabOrder: 1100, tabLabel: 'Alliance Chat', tabDisabled: false, myDiv: null, chatTimer: null, onlineTimer: null, lastTimestamp: 0, chatArray: [], onlineMembers: [], maxMessages: 100, tabId: 'allianceChatTab', init: function(div){ var t = Tabs.AllianceChat; t.myDiv = div; t.createTab(); t.startChatTimer(); t.startOnlineTimer(); }, hide: function(){ var t = Tabs.AllianceChat; clearTimeout(t.chatTimer); clearTimeout(t.onlineTimer); }, show: function(){ var t = Tabs.AllianceChat; t.createTab(); t.startChatTimer(); t.startOnlineTimer(); }, startChatTimer: function() { var t = Tabs.AllianceChat; t.updateChat(); t.chatTimer = setTimeout(t.startChatTimer, 5000); // Update every 5 seconds }, startOnlineTimer: function() { var t = Tabs.AllianceChat; t.updateOnlineMembers(); t.onlineTimer = setTimeout(t.startOnlineTimer, 30000); // Update every 30 seconds }, createTab: function(){ var t = Tabs.AllianceChat; var html = '<div class="allianceChatContainer">'; html += '<div class="chatHeader">'+tx('ALLIANCE CHAT')+'</div>'; html += '<div class="chatMainArea">'; html += '<div id="allianceChatBox" class="chatBox"></div>'; html += '<div id="onlineMembersList" class="onlineMembers"></div>'; html += '</div>'; html += '<div class="chatInputContainer">'; html += '<input id="chatMessage" type="text" placeholder="'+tx('Type your message here...')+'">'; html += '<button id="btnSendChat" class="chatButton">'+tx('Send')+'</button>'; html += '</div>'; html += '<div class="chatControls">'; html += '<button id="btnClearChat" class="chatButton">'+tx('Clear Chat')+'</button>'; html += '<button id="btnToggleTimestamp" class="chatButton">'+tx('Toggle Timestamps')+'</button>'; html += '</div>'; html += '</div>'; t.myDiv.innerHTML = html; t.addEventListeners(); t.applyStyles(); }, addEventListeners: function() { var t = Tabs.AllianceChat; ById('btnSendChat').addEventListener('click', t.sendChat, false); ById('btnClearChat').addEventListener('click', t.clearChat, false); ById('btnToggleTimestamp').addEventListener('click', t.toggleTimestamps, false); ById('chatMessage').addEventListener('keypress', function(e){ if (e.keyCode == 13) t.sendChat(); }, false); }, applyStyles: function() { GM_addStyle(` .allianceChatContainer { display: flex; flex-direction: column; height: 500px; border: 1px solid #ccc; border-radius: 5px; overflow: hidden; } .chatHeader { background-color: #4a69bd; color: white; padding: 10px; font-weight: bold; text-align: center; } .chatMainArea { display: flex; flex-grow: 1; } .chatBox { flex-grow: 1; overflow-y: auto; padding: 10px; background-color: #f1f2f6; } .onlineMembers { width: 200px; overflow-y: auto; padding: 10px; background-color: #dfe4ea; border-left: 1px solid #a4b0be; } .chatInputContainer { display: flex; padding: 10px; background-color: #dfe4ea; } #chatMessage { flex-grow: 1; padding: 5px; border: 1px solid #a4b0be; border-radius: 3px; } .chatButton { padding: 5px 10px; margin-left: 5px; background-color: #4a69bd; color: white; border: none; border-radius: 3px; cursor: pointer; } .chatButton:hover { background-color: #3c55a5; } .chatControls { display: flex; justify-content: space-between; padding: 10px; background-color: #dfe4ea; } .chatMessage { margin-bottom: 5px; padding: 5px; border-radius: 3px; background-color: #ffffff; } .chatSender { font-weight: bold; color: #4a69bd; } .chatTimestamp { font-size: 0.8em; color: #a4b0be; } .onlineMembersHeader { font-weight: bold; margin-bottom: 10px; text-align: center; } .onlineMember { display: flex; justify-content: space-between; align-items: center; margin-bottom: 5px; padding: 3px; border-radius: 3px; background-color: #ffffff; } .memberName { font-weight: bold; } .memberTitle { font-style: italic; font-size: 0.8em; } .memberMight { font-size: 0.9em; color: #4a69bd; } `); }, updateChat: function() { var t = Tabs.AllianceChat; Chat.fetchAllianceChatNow(function(messages) { if (messages && messages.length > 0) { t.chatArray = messages.concat(t.chatArray); if (t.chatArray.length > t.maxMessages) { t.chatArray = t.chatArray.slice(0, t.maxMessages); } t.displayChat(); } }); }, displayChat: function() { var t = Tabs.AllianceChat; var chatBox = ById('allianceChatBox'); var html = ''; for (var i = 0; i < t.chatArray.length; i++) { var chat = t.chatArray[i]; html += '<div class="chatMessage">'; html += '<span class="chatSender">' + chat.name + ': </span>'; html += '<span class="chatContent">' + t.escapeHtml(chat.message) + '</span>'; html += '<span class="chatTimestamp"> ' + new Date(chat.time*1000).toLocaleTimeString() + '</span>'; html += '</div>'; } chatBox.innerHTML = html; chatBox.scrollTop = chatBox.scrollHeight; }, sendChat: function() { var t = Tabs.AllianceChat; var chatInput = ById('chatMessage'); var message = chatInput.value.trim(); if (message) { Chat.sendAllianceChat(message, function(result) { if (result) { chatInput.value = ''; t.updateChat(); } else { console.error('Failed to send message'); } }); } }, clearChat: function() { var t = Tabs.AllianceChat; t.chatArray = []; t.displayChat(); }, toggleTimestamps: function() { var timestamps = ByCl('chatTimestamp'); for (var i = 0; i < timestamps.length; i++) { timestamps[i].style.display = timestamps[i].style.display === 'none' ? '' : 'none'; } }, updateOnlineMembers: function() { var t = Tabs.AllianceChat; t.fetchOnlineMembers(function(members) { t.onlineMembers = members; t.displayOnlineMembers(); }); }, fetchOnlineMembers: function(callback) { var onlineMembers = []; var allianceMembers = Seed.allianceInfo.members; for (var memberId in allianceMembers) { if (allianceMembers.hasOwnProperty(memberId)) { var member = allianceMembers[memberId]; if (member.online) { onlineMembers.push({ name: member.name, might: member.might, title: member.title }); } } } onlineMembers.sort(function(a, b) { return b.might - a.might; }); callback(onlineMembers); }, displayOnlineMembers: function() { var t = Tabs.AllianceChat; var onlineList = ById('onlineMembersList'); var html = '<div class="onlineMembersHeader">'+tx('Online Members')+'</div>'; for (var i = 0; i < t.onlineMembers.length; i++) { var member = t.onlineMembers[i]; html += '<div class="onlineMember">'; html += '<span class="memberName">' + t.escapeHtml(member.name) + '</span>'; html += '<span class="memberTitle">' + t.escapeHtml(member.title) + '</span>'; html += '<span class="memberMight">' + t.formatNumber(member.might) + '</span>'; html += '</div>'; } onlineList.innerHTML = html; }, formatNumber: function(num) { return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }, escapeHtml: function(unsafe) { return unsafe .replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } };
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址