Greasy Fork is available in English.

Lolz Transparent Chat

Убирает фон у чата лолзтим.

// ==UserScript==
// @name         Lolz Transparent Chat
// @namespace    http://tampermonkey.net/
// @version      2.1
// @description  Убирает фон у чата лолзтим.
// @match        https://lzt.market/*
// @match        https://lolz.live/*
// @match        https://zelenka.guru/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const blurEnabled = true; // Установите true для включения размытия или false для его отключения

    const applyStylesToChat = (chatElement) => {
        if (chatElement) {
            chatElement.style.backgroundColor = 'rgba(0, 0, 0, 0.4)';
            chatElement.style.backdropFilter = blurEnabled ? 'blur(8px)' : 'none';
            chatElement.style.border = '1px solid rgba(255, 255, 255, 0.2)';

            const childElements = chatElement.querySelectorAll('*');
            childElements.forEach(el => {
                el.style.setProperty('background-color', 'transparent', 'important');
                el.style.border = 'none';
            });

            const taggedMessageBlocks = chatElement.querySelectorAll('.chat2-message-tagged.lztng-4kgdqr .chat2-message-block.lztng-4kgdqr');
            taggedMessageBlocks.forEach(block => {
                block.style.setProperty('background', 'transparent', 'important');
                block.style.setProperty('border', '2px solid rgb(0, 150, 0)', 'important');
                block.style.borderRadius = '10px';
                block.style.padding = '4px';
            });

            const messageBlocks = chatElement.querySelectorAll('.chat2-message-block');
            messageBlocks.forEach(block => {
                if (!block.closest('.chat2-message-tagged')) {
                    block.style.setProperty('background-color', 'transparent', 'important');
                    block.style.setProperty('border', '1px solid rgba(128, 128, 128, 0.5)', 'important');
                    block.style.borderRadius = '5px';
                }
            });

            const messageHeaders = chatElement.querySelectorAll('.chat2-message-header');
            messageHeaders.forEach(header => {
                header.style.setProperty('background-color', 'transparent', 'important');
                header.style.border = 'none';
            });

            const messageTexts = chatElement.querySelectorAll('.chat2-message-text');
            messageTexts.forEach(text => {
                text.style.setProperty('background-color', 'transparent', 'important');
                text.style.border = 'none';
            });

            addTextAfterNick('ВПН', ' @GodlikeGL');
        }
    };

    const addTextAfterNick = (nick, additionalText) => {
        const nickElements = document.querySelectorAll('span');
        nickElements.forEach(nickElement => {
            if (nickElement.textContent === nick) {
                if (!nickElement.nextSibling || nickElement.nextSibling.textContent !== additionalText) {
                    const additionalTextNode = document.createElement('span');
                    additionalTextNode.textContent = additionalText;
                    additionalTextNode.style.color = 'rgba(255, 255, 255, 0.8)';
                    additionalTextNode.style.marginLeft = '4px';
                    nickElement.parentNode.insertBefore(additionalTextNode, nickElement.nextSibling);
                }
            }
        });
    };

    const createRainbowText = (nickElement) => {
        if (!nickElement.classList.contains('rainbow-applied')) {
            nickElement.style.backgroundImage = 'linear-gradient(90deg, red, orange, yellow, green, cyan, blue, violet)';
            nickElement.style.webkitBackgroundClip = 'text';
            nickElement.style.webkitTextFillColor = 'transparent';
            nickElement.style.fontWeight = 'bold';
            nickElement.style.fontSize = '16px';
            nickElement.style.animation = 'rainbow 3s linear infinite';
            nickElement.classList.add('rainbow-applied');
        }
    };

    const applyRainbowNick = () => {
        const nickElements = document.querySelectorAll('span');
        nickElements.forEach(nickElement => {
            if (nickElement.textContent === 'Маркет') {
                createRainbowText(nickElement);
            }
        });
    };

    const initializeChatStyling = () => {
        const chatElement = document.querySelector('[class^="chat2-floating"]');

        if (chatElement) {
            applyStylesToChat(chatElement);

            const observer = new MutationObserver(() => {
                applyStylesToChat(chatElement);
                applyRainbowNick();
            });

            observer.observe(chatElement, {
                childList: true,
                subtree: true
            });
        } else {
            setTimeout(initializeChatStyling, 300);
        }

        applyRainbowNick();
    };

    const addRainbowAnimationStyles = () => {
        const style = document.createElement('style');
        style.textContent = `
            @keyframes rainbow {
                0% { background-position: 0% 50%; }
                100% { background-position: 100% 50%; }
            }
        `;
        document.head.appendChild(style);
    };

    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', () => {
            addRainbowAnimationStyles();
            initializeChatStyling();
        });
    } else {
        addRainbowAnimationStyles();
        initializeChatStyling();
    }
})();