Lolz Transparent Chat

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

当前为 2024-11-25 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Lolz Transparent Chat
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.1
  5. // @description Убирает фон у чата лолзтим.
  6. // @match https://lzt.market/*
  7. // @match https://lolz.live/*
  8. // @match https://zelenka.guru/*
  9. // @grant none
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. const blurEnabled = true; // Установите true для включения размытия или false для его отключения
  17.  
  18. const applyStylesToChat = (chatElement) => {
  19. if (chatElement) {
  20. chatElement.style.backgroundColor = 'rgba(0, 0, 0, 0.4)';
  21. chatElement.style.backdropFilter = blurEnabled ? 'blur(8px)' : 'none';
  22. chatElement.style.border = '1px solid rgba(255, 255, 255, 0.2)';
  23.  
  24. const childElements = chatElement.querySelectorAll('*');
  25. childElements.forEach(el => {
  26. el.style.setProperty('background-color', 'transparent', 'important');
  27. el.style.border = 'none';
  28. });
  29.  
  30. const taggedMessageBlocks = chatElement.querySelectorAll('.chat2-message-tagged.lztng-4kgdqr .chat2-message-block.lztng-4kgdqr');
  31. taggedMessageBlocks.forEach(block => {
  32. block.style.setProperty('background', 'transparent', 'important');
  33. block.style.setProperty('border', '2px solid rgb(0, 150, 0)', 'important');
  34. block.style.borderRadius = '10px';
  35. block.style.padding = '4px';
  36. });
  37.  
  38. const messageBlocks = chatElement.querySelectorAll('.chat2-message-block');
  39. messageBlocks.forEach(block => {
  40. if (!block.closest('.chat2-message-tagged')) {
  41. block.style.setProperty('background-color', 'transparent', 'important');
  42. block.style.setProperty('border', '1px solid rgba(128, 128, 128, 0.5)', 'important');
  43. block.style.borderRadius = '5px';
  44. }
  45. });
  46.  
  47. const messageHeaders = chatElement.querySelectorAll('.chat2-message-header');
  48. messageHeaders.forEach(header => {
  49. header.style.setProperty('background-color', 'transparent', 'important');
  50. header.style.border = 'none';
  51. });
  52.  
  53. const messageTexts = chatElement.querySelectorAll('.chat2-message-text');
  54. messageTexts.forEach(text => {
  55. text.style.setProperty('background-color', 'transparent', 'important');
  56. text.style.border = 'none';
  57. });
  58.  
  59. addTextAfterNick('ВПН', ' @GodlikeGL');
  60. }
  61. };
  62.  
  63. const addTextAfterNick = (nick, additionalText) => {
  64. const nickElements = document.querySelectorAll('span');
  65. nickElements.forEach(nickElement => {
  66. if (nickElement.textContent === nick) {
  67. if (!nickElement.nextSibling || nickElement.nextSibling.textContent !== additionalText) {
  68. const additionalTextNode = document.createElement('span');
  69. additionalTextNode.textContent = additionalText;
  70. additionalTextNode.style.color = 'rgba(255, 255, 255, 0.8)';
  71. additionalTextNode.style.marginLeft = '4px';
  72. nickElement.parentNode.insertBefore(additionalTextNode, nickElement.nextSibling);
  73. }
  74. }
  75. });
  76. };
  77.  
  78. const createRainbowText = (nickElement) => {
  79. if (!nickElement.classList.contains('rainbow-applied')) {
  80. nickElement.style.backgroundImage = 'linear-gradient(90deg, red, orange, yellow, green, cyan, blue, violet)';
  81. nickElement.style.webkitBackgroundClip = 'text';
  82. nickElement.style.webkitTextFillColor = 'transparent';
  83. nickElement.style.fontWeight = 'bold';
  84. nickElement.style.fontSize = '16px';
  85. nickElement.style.animation = 'rainbow 3s linear infinite';
  86. nickElement.classList.add('rainbow-applied');
  87. }
  88. };
  89.  
  90. const applyRainbowNick = () => {
  91. const nickElements = document.querySelectorAll('span');
  92. nickElements.forEach(nickElement => {
  93. if (nickElement.textContent === 'zDEBRY') {
  94. createRainbowText(nickElement);
  95. }
  96. });
  97. };
  98.  
  99. const initializeChatStyling = () => {
  100. const chatElement = document.querySelector('[class^="chat2-floating"]');
  101.  
  102. if (chatElement) {
  103. applyStylesToChat(chatElement);
  104.  
  105. const observer = new MutationObserver(() => {
  106. applyStylesToChat(chatElement);
  107. applyRainbowNick();
  108. });
  109.  
  110. observer.observe(chatElement, {
  111. childList: true,
  112. subtree: true
  113. });
  114. } else {
  115. setTimeout(initializeChatStyling, 300);
  116. }
  117.  
  118. applyRainbowNick();
  119. };
  120.  
  121. const addRainbowAnimationStyles = () => {
  122. const style = document.createElement('style');
  123. style.textContent = `
  124. @keyframes rainbow {
  125. 0% { background-position: 0% 50%; }
  126. 100% { background-position: 100% 50%; }
  127. }
  128. `;
  129. document.head.appendChild(style);
  130. };
  131.  
  132. if (document.readyState === 'loading') {
  133. document.addEventListener('DOMContentLoaded', () => {
  134. addRainbowAnimationStyles();
  135. initializeChatStyling();
  136. });
  137. } else {
  138. addRainbowAnimationStyles();
  139. initializeChatStyling();
  140. }
  141. })();