allie test

tab

目前為 2025-06-08 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/538683/1603854/allie%20test.js

Tabs.Chat = {
    tabOrder: 900,
    tabLabel: 'Chat',
    tabDisabled: false,
    myDiv: null,
    chatDiv: null,
    inputDiv: null,

    init: function(div){
        var t = Tabs.Chat;
        t.myDiv = div;
        t.createMainDiv();
        t.applyCustomStyles();
    },

    createMainDiv: function(){
        var t = Tabs.Chat;
        var m = '<DIV class=divHeader align=center>'+tx('CHAT')+'</div>';
        
        m += '<div id="pbChatContent" class="pbChatContainer" style="height:400px; max-height:400px; overflow-y:auto;"></div>';
        m += '<div id="pbChatInput" style="margin-top:10px;">';
        m += '<textarea id="pbChatTextArea" rows="3" style="width:100%; margin-bottom:5px;"></textarea>';
        m += '<button id="pbChatSendButton" style="width:100%;">Send</button>';
        m += '</div>';

        t.myDiv.innerHTML = m;
        
        t.chatDiv = ById('pbChatContent');
        t.inputDiv = ById('pbChatInput');

        // Add event listeners
        ById('pbChatTextArea').addEventListener('keypress', function(e) {
            if (e.key === 'Enter' && !e.shiftKey) {
                e.preventDefault();
                t.sendChat();
            }
        });

        ById('pbChatSendButton').addEventListener('click', function() {
            t.sendChat();
        });

        t.hookChat();
    },

    applyCustomStyles: function(){
        var styleElement = document.createElement('style');
        styleElement.type = 'text/css';
        styleElement.innerHTML = `
            .pbChatContainer .chat-message {
                text-align: right;
                direction: rtl;
                margin-bottom: 5px;
            }
            .pbChatContainer .chat-message .chat-time {
                float: left;
                color: #888;
            }
            .pbChatContainer .chat-message .chat-user {
                margin-left: 5px;
                font-weight: bold;
            }
            .pbChatContainer .chat-message .chat-text {
                display: inline-block;
                direction: ltr;
                text-align: left;
            }
        `;
        document.head.appendChild(styleElement);
    },

    hookChat: function(){
        var t = Tabs.Chat;
        
        var gameChatContainer = document.querySelector('#mod_comm_list1');
        if (gameChatContainer) {
            t.updateChat();

            var observer = new MutationObserver(function(mutations) {
                mutations.forEach(function(mutation) {
                    if (mutation.type === 'childList') {
                        t.updateChat();
                    }
                });
            });

            observer.observe(gameChatContainer, { childList: true, subtree: true });
        } else {
            console.error('Could not find game chat container');
        }
    },

    updateChat: function(){
        var t = Tabs.Chat;
        var gameChatContainer = document.querySelector('#mod_comm_list1');
        if (gameChatContainer && t.chatDiv) {
            t.chatDiv.innerHTML = gameChatContainer.innerHTML;
            t.chatDiv.scrollTop = t.chatDiv.scrollHeight;
            
            // Add our custom class to each chat message
            var chatMessages = t.chatDiv.querySelectorAll('.chat-message');
            chatMessages.forEach(function(message) {
                message.classList.add('pbChatMessage');
            });
        }
    },

    sendChat: function(){
        var t = Tabs.Chat;
        var chatTextArea = ById('pbChatTextArea');
        var message = chatTextArea.value.trim();
        
        if (message !== '') {
            if (typeof uW.Chat === 'object' && typeof uW.Chat.sendMsg === 'function') {
                uW.Chat.sendMsg(message);
                chatTextArea.value = '';
                t.updateChat();
            } else {
                console.error('Could not find game chat send function');
            }
        }
    }
};

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址