您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Бродягам
// ==UserScript== // @name Оформление логов для лучших Бродяг // @namespace https://logs.blackrussia.online/ // @version 1.0 // @description Бродягам // @author От Бродяг // @match https://logs.blackrussia.online/gslogs/* // @icon https://freepngimg.com/thumb/eagle/20-eagle-black-siluet-png-image-download-thumb.png // @license Lukky // ==/UserScript== (function () { 'use strict'; scriptInit(); function createStyleButton(element) { const styleToggle = document.createElement('button'); styleToggle.className = 'style-button'; styleToggle.id = 'style-modal-toggle'; styleToggle.href = '#!'; styleToggle.tabIndex = '0'; styleToggle.dataset.bsToggle = 'modal'; styleToggle.dataset.bsTarget = '#container-background'; styleToggle.textContent = 'STYLE'; const replaceElement = document.querySelector(element); replaceElement.replaceWith(styleToggle); } function createStyleContainerBg(element) { const containerBg = document.createElement('div'); containerBg.className = 'modal fade'; containerBg.id = 'container-background'; containerBg.tabIndex = '-1'; containerBg.style.dispaly = 'none'; containerBg.ariaHidden = 'true'; const parentElement = document.querySelector(element); parentElement.parentNode.insertBefore(containerBg, parentElement); const containerContent = document.createElement('div'); containerContent.className = 'modal-dialog modal-dialog-centered'; containerContent.id = 'style-container-content'; containerBg.appendChild(containerContent); const styleContainer = document.createElement('div'); styleContainer.className = 'modal-content'; containerContent.appendChild(styleContainer); const styleContHead = document.createElement('div'); const styleContBody = document.createElement('div'); styleContHead.className = 'modal-header'; styleContBody.className = 'modal-body'; styleContBody.style.display = 'flex'; styleContBody.style.flexDirection = 'column'; styleContainer.appendChild(styleContHead); styleContainer.appendChild(styleContBody); const styleTitleBadge = document.createElement('span'); styleTitleBadge.className = 'badge bg-success'; styleTitleBadge.textContent = 'STYLE'; styleTitleBadge.style.fontSize = '16px'; styleContHead.appendChild(styleTitleBadge); const styleTitleText = document.createElement('span'); styleTitleText.className = 'style-title-text'; styleTitleText.textContent = 'Переключатель Тем'; styleContHead.appendChild(styleTitleText); const styleClose = document.createElement('button'); styleClose.type = 'button'; styleClose.className = 'btn-close'; styleClose.dataset.bsDismiss = 'modal'; styleClose.ariaLabel = 'Close'; styleContHead.appendChild(styleClose); const switchStyleBlock = document.createElement('label'); switchStyleBlock.className = 'switch'; switchStyleBlock.innerHTML = ` <input type="checkbox" id="styleToggleCheck"> <span class="slider round" style="padding-right: 20px;"></span> <div class="addingText tooltip-style" style="display: block; width: max-content; margin: 5px; margin-left: 50px">Включить Переливание Текста <span class="tooltip-style-text">Добавляет анимированный градиент на некоторые элементы (повышается нагрузка)</span></div> </span> `; styleContBody.appendChild(switchStyleBlock); const styleToggleCheck = document.getElementById('styleToggleCheck'); if (localStorage.getItem('styleThemeEnabled') === 'true') { styleToggleCheck.checked = true; applyTextGradient(); } styleToggleCheck.addEventListener('change', function () { if (styleToggleCheck.checked) { applyTextGradient(); localStorage.setItem('styleThemeEnabled', 'true'); } else { removeTextGradient(); localStorage.setItem('styleThemeEnabled', 'false'); } }); const switchNumsBlock = document.createElement('label'); switchNumsBlock.className = 'switch'; switchNumsBlock.innerHTML = ` <input type="checkbox" id="switchNumsCheck"> <span class="slider round" style="padding-right: 20px;"></span> <div class="addingText tooltip-style" style="display: block; width: max-content; margin: 5px; margin-left: 50px">Включить Разряды Чисел <span class="tooltip-style-text">Переключает способ отображения чисел (1000 => 1 000)<br>Требуется Перезагрузка</span><img src='https://cdn-icons-png.flaticon.com/512/25/25429.png' style='width: 15px; height: 15px; filter: invert(1)'></img></div> </span> `; switchNumsBlock.style.marginTop = '20px'; styleContBody.appendChild(switchNumsBlock); const switchNumsCheck = document.getElementById('switchNumsCheck'); if (localStorage.getItem('numsSeparateEnabled') === 'true') { switchNumsCheck.checked = true; applyNumsSeparate(); } switchNumsCheck.addEventListener('change', function () { if (switchNumsCheck.checked) { applyNumsSeparate(); localStorage.setItem('numsSeparateEnabled', 'true'); location.reload(); } else { localStorage.setItem('numsSeparateEnabled', 'false'); location.reload(); } }); const switchCopyBankBlock = document.createElement('label'); switchCopyBankBlock.className = 'switch'; switchCopyBankBlock.innerHTML = ` <input type="checkbox" id="switchBankCopyCheck"> <span class="slider round" style="padding-right: 20px;"></span> <div class="addingText tooltip-style" style="display: block; width: max-content; margin: 5px; margin-left: 50px">Включить Режим Доказательств <span class="tooltip-style-text">Копирование описания транзакций всех категорий (кроме Бизнесы/Фракции) в без системной информации<br>Требуется перезагрузка</span><img src='https://cdn-icons-png.flaticon.com/512/25/25429.png' style='width: 15px; height: 15px; filter: invert(1)'></img></div> </span> `; switchCopyBankBlock.style.marginTop = '20px'; styleContBody.appendChild(switchCopyBankBlock); const switchCopyBank = document.getElementById('switchBankCopyCheck'); if (localStorage.getItem('bankCheckEnabled') === 'true') { switchCopyBank.checked = true; applyCopyDocs(); } switchCopyBank.addEventListener('change', function () { if (switchCopyBank.checked) { applyCopyDocs(); localStorage.setItem('bankCheckEnabled', 'true'); location.reload(); } else { localStorage.setItem('bankCheckEnabled', 'false'); location.reload(); } }); const fontSelectorBlock = document.createElement('label'); fontSelectorBlock.className = 'font-selector-block'; styleContBody.appendChild(fontSelectorBlock); const fontSelector = document.createElement('select'); fontSelector.className = 'selector'; fontSelector.id = 'font-selector'; const storedFont = localStorage.getItem('selectedFont') || 'Roboto'; const fonts = ['Bad Script', 'Comfortaa', 'Fira Sans', 'Marmelad', 'Montserrat', 'Neucha', 'Play', 'Roboto', 'Sofia Sans', 'Ubuntu']; fonts.forEach(font => { const option = document.createElement('option'); option.value = font; option.textContent = font; if (font === storedFont) { option.selected = true; document.body.style.fontFamily = font; } fontSelector.appendChild(option); }); fontSelector.addEventListener('change', function () { const selectedFont = this.value; document.body.style.fontFamily = selectedFont; localStorage.setItem('selectedFont', selectedFont); }); fontSelectorBlock.appendChild(fontSelector); const fontSelectorText = document.createElement('span'); fontSelectorText.className = 'addingText'; fontSelectorText.textContent = 'Выбор Шрифта'; fontSelectorBlock.appendChild(fontSelectorText); const colorSelectorBlock = document.createElement('label'); colorSelectorBlock.className = 'color-selector-block'; styleContBody.appendChild(colorSelectorBlock); const colorSelector = document.createElement('select'); colorSelector.className = 'selector'; colorSelector.id = 'color-selector'; const storedColor = localStorage.getItem('selectedColor') || 'WHITE'; const colors = ['-------МЯГКИЕ-------', 'PINK', 'KHAKI', 'SKYBLUE', 'PALEGREEN', '', '-------ЯРКИЕ-------', 'RED', 'LIME', 'CYAN', 'WHITE', 'YELLOW', 'MAGENTA', 'DEEPPINK',]; const colorCodes = { 'PINK': '#FFC0CB', 'KHAKI': '#F0E68C', 'SKYBLUE': '#87CEEB', 'PALEGREEN': '#98FB98', 'RED': '#FF0000', 'LIME': '#00FF00', 'CYAN': '#00FFFF', 'WHITE': '#FFFFFF', 'YELLOW': '#FFFF00', 'MAGENTA': '#FF00FF', 'DEEPPINK': '#FF1493' }; colors.forEach(color => { const option = document.createElement('option'); option.value = color; option.textContent = color; if (color === storedColor) { option.selected = true; applySelectedStyle(colorCodes[color]); } colorSelector.appendChild(option); }); colorSelector.addEventListener('change', function () { if (this.value !== '-------МЯГКИЕ-------' && this.value !== '' && this.value !== '-------ЯРКИЕ-------') { const selectedColor = this.value; localStorage.setItem('selectedColor', selectedColor); applySelectedStyle(colorCodes[selectedColor]); } }); colorSelectorBlock.appendChild(colorSelector); const colorSelectorText = document.createElement('span'); colorSelectorText.className = 'addingText'; colorSelectorText.textContent = 'Выбор Цвета'; colorSelectorBlock.appendChild(colorSelectorText); const brightnessSliderBlock = document.createElement('label'); brightnessSliderBlock.className = 'brightness-slider-block'; styleContBody.appendChild(brightnessSliderBlock); const storedBright = localStorage.getItem('savedBrightness') || '100'; const htmlContent = document.querySelector('html'); const brightnessSlider = document.createElement('input'); htmlContent.style.filter = `brightness(${storedBright}%)` brightnessSlider.id = 'brightness-slider'; brightnessSlider.type = 'range'; brightnessSlider.min = '30'; brightnessSlider.max = '100'; brightnessSlider.style.marginTop = '30px'; brightnessSlider.style.marginRight = '10px'; brightnessSlider.value = storedBright; brightnessSlider.addEventListener('input', function () { const brightnessValue = this.value; localStorage.setItem('savedBrightness', brightnessValue); htmlContent.style.filter = `brightness(${brightnessValue}%)`; }); brightnessSliderBlock.appendChild(brightnessSlider); const brightnessSliderText = document.createElement('span'); brightnessSliderText.className = 'addingText'; brightnessSliderText.textContent = 'Выбор Яркости'; brightnessSliderBlock.appendChild(brightnessSliderText); const nickColorBlock = document.createElement('label'); nickColorBlock.className = 'color-picker-nickname'; styleContBody.appendChild(nickColorBlock); const colorNickElement = document.createElement('input'); const nickColor = localStorage.getItem('playerNameColor') || '#ff8800'; colorNickElement.className = 'color-picker'; colorNickElement.type = 'color'; colorNickElement.value = nickColor; colorNickElement.addEventListener('input', function () { const selectedColor = colorNickElement.value; const tdElements = document.querySelectorAll('td.td-player-name[data-v-2d76ca92=""]'); localStorage.setItem('playerNameColor', selectedColor); tdElements.forEach(function (td) { const playerNick = td.querySelector('a'); if (playerNick) { playerNick.style.color = selectedColor; playerNick.style.textShadow = '0px 0px 1px' + selectedColor; } }); }); nickColorBlock.appendChild(colorNickElement); const colorNickText = document.createElement('span'); colorNickText.className = 'addingText'; colorNickText.textContent = 'Цвет Никнеймов'; nickColorBlock.appendChild(colorNickText); const categoryColorBlock = document.createElement('label'); nickColorBlock.className = 'color-picker-category'; styleContBody.appendChild(categoryColorBlock); const colorCategoryElement = document.createElement('input'); const categoryColor = localStorage.getItem('categoryColor') || '#0088ff'; colorCategoryElement.className = 'color-picker'; colorCategoryElement.type = 'color'; colorCategoryElement.value = categoryColor; colorCategoryElement.addEventListener('input', function () { const selectedColor = colorCategoryElement.value; const tdElements = document.querySelectorAll('td.td-category[data-v-2d76ca92=""]'); localStorage.setItem('categoryColor', selectedColor); tdElements.forEach(function (td) { const category = td.querySelector('a'); if (category) { category.style.color = selectedColor; category.style.textShadow = '0px 0px 1px' + selectedColor; } }); }); categoryColorBlock.appendChild(colorCategoryElement); const colorCategoryText = document.createElement('span'); colorCategoryText.className = 'addingText'; colorCategoryText.textContent = 'Цвет Категорий'; categoryColorBlock.appendChild(colorCategoryText); const bugReportBlock = document.createElement('label'); bugReportBlock.className = 'bug-report-block'; styleContBody.appendChild(bugReportBlock); const bugReportTG = document.createElement('a'); bugReportTG.href = 'https://t.me/solukky' bugReportTG.target = '_blank'; bugReportTG.innerHTML = `<img class="bug-report-button" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Telegram_logo.svg/512px-Telegram_logo.svg.png"></img>`; bugReportBlock.appendChild(bugReportTG); const bugReportVK = document.createElement('a'); bugReportVK.href = 'https://vk.me/solukky' bugReportVK.target = '_blank'; bugReportVK.innerHTML = `<img class="bug-report-button" src="https://cdn-icons-png.flaticon.com/512/145/145813.png"></img>`; bugReportBlock.appendChild(bugReportVK); const bugReportGF = document.createElement('a'); bugReportGF.href = 'https://greasyfork.org/ru/scripts/475162-theme-font-changer/feedback' bugReportGF.target = '_blank'; bugReportGF.innerHTML = `<img class="bug-report-button" src="https://raw.githubusercontent.com/JasonBarnabe/greasyfork/master/public/images/blacklogo512.png"></img>`; bugReportBlock.appendChild(bugReportGF); const bugReportText = document.createElement('span'); bugReportText.className = 'addingText'; bugReportText.textContent = 'Баг / Предложение'; bugReportBlock.appendChild(bugReportText); } function applyNumsSeparate() { function formatNumbersInTable() { const tableCells = document.querySelectorAll('td.td-transaction-amount, td.td-balance-after'); tableCells.forEach(cell => { const text = cell.textContent.trim(); if (!isNaN(text.replace(/,/g, ''))) { const originalValue = parseInt(text.replace(/,/g, '')); const formattedValue = originalValue.toLocaleString('ru'); cell.textContent = formattedValue.toString(); cell.addEventListener('copy', function (event) { event.clipboardData.setData('text/plain', formattedValue.replace(/\s/g, '')); event.preventDefault(); }); } }); } window.onload = function () { formatNumbersInTable(); }; const observer = new MutationObserver(function (mutationsList) { formatNumbersInTable(); }); const config = { childList: true, subtree: true }; observer.observe(document.body, config); } function applyCopyDocs() { function formatTransactionsInTable() { const tableRows = document.querySelectorAll('tr.second-row'); tableRows.forEach(row => { const transactionCell = row.querySelector('.td-transaction-desc'); const playerName = row.previousSibling.querySelector('.td-player-name a').textContent; const categoryName = row.previousSibling.querySelector('.td-category a').textContent; const transactionAmount = row.previousSibling.querySelector('.td-transaction-amount').textContent; const transactionDate = row.previousSibling.querySelector('.td-time').textContent.replace(/\s/g, ' | '); const originalText = transactionCell.textContent; transactionCell.addEventListener('copy', function (event) { const selection = window.getSelection().toString(); if (selection.length >= transactionCell.textContent.length) { function replaceData(expected = '', regex = '') { if (regex != '') { var final = originalText.replace(regex, expected); } else { var final = expected; } event.clipboardData.setData('text/plain', final); event.preventDefault(); } function notSupported() { alert('Данная строка не поддерживается скриптом, отправьте эту строку автору скрипта'); event.clipboardData.setData('text/plain', originalText); event.preventDefault(); } if (categoryName === 'BlackPass') { if (originalText.includes('Получил')) { replaceData(`[BlackPass | ${transactionDate}] ${playerName} - $1`, /(Получил .+)/,); } else if (originalText.includes('+ Выдача')) { replaceData(`[BlackPass | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей`); } } else if (categoryName === 'Helper чат') { if (originalText) { replaceData(`[Helper чат | ${transactionDate}] ${playerName} - Написал "$1"`, /^(.*)$/); } } else if (categoryName == 'NonRP чат') { if (originalText) { replaceData(`[NonRP чат | ${transactionDate}] ${playerName} - Написал "$1"`, /^(.*)$/); } } else if (categoryName == 'RP чат') { if (originalText) { replaceData(`[RP чат | ${transactionDate}] ${playerName} - Написал "$1"`, /^(.*)$/); } } else if (categoryName == 'VIP чат') { if (originalText) { replaceData(`[VIP чат | ${transactionDate}] ${playerName} - Написал "$1"`, /^(.*)$/); } } else if (categoryName == 'Админ-блокировки') { if (originalText) { replaceData(`[Админ-блокировки | ${transactionDate}] ${playerName} - "$1"`, /^(.*)$/); } } else if (categoryName == 'Админ-действия') { if (originalText) { replaceData(`[Админ-действия | ${transactionDate}] ${playerName} - "$1"`, /^(.*)$/); } } else if (categoryName == 'Админ-общий-чат') { if (originalText) { replaceData(`[Глобальный чат (/msg) | ${transactionDate}] ${playerName} - Написал "$1"`, /^(.*)$/); } } else if (categoryName == 'Админ-супердействия') { if (originalText) { replaceData(`[Админ-супердействия | ${transactionDate}] ${playerName} - "$1"`, /^(.*)$/); } } else if (categoryName == 'Админ-чат') { if (originalText) { replaceData(`[Админ-чат | ${transactionDate}] ${playerName} - Написал "$1"`, /^(.*)$/); } } else if (categoryName == 'Аккаунт игрока') { if (originalText.includes('законопослушности')) { replaceData(`[Законопослушность | ${transactionDate}] ${playerName} - Изменение законопослушности, итог: $1. Причина: $2`, /^.*значение: (.*). Причина: (.*)/); } else if (originalText.includes('уровень')) { replaceData(`[Уровень игрока | ${transactionDate}] ${playerName} - $1`, /^(.*)$/); } else if (originalText.includes('Сменил пароль')) { replaceData(`[Пароль | ${transactionDate}] ${playerName} - $1`, /^(.*)$/); } else if (originalText.includes('EXP:')) { replaceData(`[Опыт (EXP) | ${transactionDate}] ${playerName} - $1`, /^(.*)$/); } else if (originalText.includes('Привязал аккаунт')) { replaceData(`[Аккаунт | ${transactionDate}] ${playerName} - $1`, /^\+ (.*)$/); } } else if (categoryName == 'Античит') { if (originalText) { replaceData(`[Античит | ${transactionDate}] ${playerName} - Подозрение на чит: $1`, /^.*: (.*) \|.*$/); } } else if (categoryName == 'Аренда транспорта') { if (originalText) { replaceData(`[Аренда Транспорта | ${transactionDate}] ${playerName} $1 за ${transactionAmount.replace('-', '')} рублей`, /^(.*)$/); } } else if (categoryName == 'Аукцион') { if (originalText.includes('Выставил')) { replaceData(`[Аукцион | ${transactionDate}] ${playerName} - $1 рублей`, /^(.*)$/); } else if (originalText.includes('Выиграл')) { replaceData(`[Аукцион | ${transactionDate}] ${playerName} - $1`, /^(.*)$/); } else if (originalText.includes('Продал')) { replaceData(`[Аукцион | ${transactionDate}] ${playerName} - Продал $1 и получил ${transactionAmount} рублей`, /^.*аукционе (.*) \(возвращено.*$/); } else if (originalText.includes('Вернул')) { replaceData(`[Аукцион | ${transactionDate}] ${playerName} - $1`, /^(.*)$/); } else if (originalText.includes('Ставка')) { replaceData(`[Аукцион | ${transactionDate}] ${playerName} $1, сумма: ${transactionAmount.replace('-', '')} рублей`, /^(.*)$/); } else if (originalText.includes('Возвращена')) { replaceData(`[Аукцион | ${transactionDate}] ${playerName} - Возвращена ставка, сумма: ${transactionAmount} рублей`); } } else if (categoryName == 'Банковская система') { if (originalText.includes('Пополнил счет')) { replaceData(`[Банк | ${transactionDate}] ${playerName} - Пополнил свой счет на ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Пополнил банк. счет')) { replaceData(`[Банк | ${transactionDate}] ${playerName} - Пополнил свой дополнительный счет на ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('руб в банкомате')) { replaceData(`[Банк | ${transactionDate}] ${playerName} - Снял ${transactionAmount} рублей в банкомате`); } else if (originalText.includes('Продлил аренду')) { replaceData(`[Банк | ${transactionDate}] ${playerName} - Продлил аренду имущества на ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Перевел на счет')) { replaceData(`[Банк | ${transactionDate}] ${playerName} - Перевел ${transactionAmount} рублей на банковский счет, владелец $1`, /^.*владелец (.*) \[sql:.*$/); } } else if (categoryName == 'Взаимодействие с игроками') { if (originalText.includes('Получение денег')) { replaceData(`[Передача денег | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей от игрока $1`, /^.*от (.*) \(.*$/); } else if (originalText.includes('Передача денег')) { replaceData(`[Передача денег | ${transactionDate}] ${playerName} - Передал ${transactionAmount.replace('-', '')} рублей игроку $1`, /^.*игроку (.*) \(.*$/); } } else if (categoryName == 'Взаимодействие с казино') { if (originalText.includes('Вышел из казино')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Вышел из казино и получил ${transactionAmount} рублей`); } else if (originalText.includes('Сделал ставку в казино')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Поставил ${transactionAmount.replace('-', '')} рублей на игру "Кости"`); } else if (originalText.includes('Проиграл в казино (пред. ставка)')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Проиграл поставленную на игру "Кости" ставку`); } else if (originalText.includes('Получил выигрыш в казино набрав')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Выиграл ${transactionAmount} рублей в игре "Кости"`); } else if (originalText.includes('Получил процент')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Получил процент в размере ${transactionAmount} рублей в качестве Крупье`); } else if (originalText.includes('Блекджек (ставка')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Поставил ${transactionAmount.replace('-', '')} рублей на игру "BlackJack"`); } else if (originalText.includes('Победил Блекджек')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Выиграл ${transactionAmount} рублей в игре "BlackJack"`); } else if (originalText.includes('Ничья Блекджек')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Вернул ${transactionAmount} рублей из-за Ничьи в игре "BlackJack"`); } else if (originalText.includes('Ставка на миниигру')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Поставил ${transactionAmount.replace('-', '')} рублей на игру "Дурак"`); } else if (originalText.includes('Проиграл в казино дурак')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Проиграл поставленную ставку на игру "Дурак"`); } else if (originalText.includes('Выиграл в казино дурак')) { replaceData(`[Казино | ${transactionDate}] ${playerName} - Выиграл ${transactionAmount} рублей в игре "Дурак"`); } } else if (categoryName == 'Восстановления') { if (originalText) { replaceData(`[Восстановление | ${transactionDate}] ${playerName} - Восстановил $2 игроку $1`, /^игроку (.*) \[.*\] (.*)$/); } } else if (categoryName == 'Донат') { if (originalText.includes('Конвертировал')) { replaceData(`[Донат | ${transactionDate}] ${playerName} - Конвертировал Black Coins в игровую валюту и получил ${transactionAmount} рублей`); } else if (originalText.includes('Выиграл')) { replaceData(`[Донат | ${transactionDate}] ${playerName} - Выиграл ${transactionAmount} рублей при открытии кейса`); } } else if (categoryName == 'Жалобы/Вопросы') { if (originalText.includes('Жалоба от')) { replaceData(`[Репорт | ${transactionDate}] ${playerName} - Ответил на жалобу игрока $1; "$2"`, /^Жалоба от (.*) \[.*\]\: (.*)$/); } else if (originalText.includes('Вопрос от')) { replaceData(`[Вопрос | ${transactionDate}] ${playerName} - Ответил игроку $2; Вопрос: "$1", Ответ: "$3"`, /^Вопрос (.*)\[.*\].*игроку (.*)\[.*\] ответ (.*)$/); } } else if (categoryName == 'Имущество игрока') { if (originalText.includes('Получил из промокода')) { replaceData(`[Промо | ${transactionDate}] ${playerName} - $1`, /^(.*?)$/); } else if (originalText.includes('Приобрел улучшение для дома')) { replaceData(`[Дом | ${transactionDate}] ${playerName} - Приобрел улучшение для своего дома за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Приобрел дом')) { replaceData(`[Дом | ${transactionDate}] ${playerName} - Приобрел дом за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Приобрел подвальное помещение')) { replaceData(`[Дом | ${transactionDate}] ${playerName} - Приобрел подвал для своего дома за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Продажа своего дома')) { replaceData(`[Дом | ${transactionDate}] ${playerName} - Продал свой дом государству за $1 рублей`, /^.*итого: (.*) рублей.*$/); } else if (originalText.includes('Продажа дома')) { replaceData(`[Дом | ${transactionDate}] ${playerName} - Продал дом игроку $1 за ${transactionAmount}`, /^.*игроку (.*)$/); } else if (originalText.includes('Слетел дом')) { replaceData(`[Дом | ${transactionDate}] ${playerName} - Дом слетел и игрок получил ${transactionAmount} рублей`); } else if (originalText.includes('Слетел гараж')) { replaceData(`[Гараж | ${transactionDate}] ${playerName} - Гараж слетел и игрок получил ${transactionAmount} рублей`); } else if (originalText.includes('Продажа гаража')) { replaceData(`[Гараж | ${transactionDate}] ${playerName} - Продал свой гараж государству за ${transactionAmount} рублей`); } else if (originalText.includes('Покупка гаража')) { replaceData(`[Гараж | ${transactionDate}] ${playerName} - Купил гараж за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Улучшение гаража')) { replaceData(`[Гараж | ${transactionDate}] ${playerName} - Купил улучшение для гаража за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Купил гараж')) { replaceData(`[Гараж | ${transactionDate}] ${playerName} - Купил гараж за ${transactionAmount.replace('-', '')} рублей у игрока $1`, /^игрока (.*). .*$/); } else if (originalText.includes('Продал гараж')) { replaceData(`[Гараж | ${transactionDate}] ${playerName} - Продал гараж за ${transactionAmount} рублей игроку $1`, /^.*игроку (.*). .*$/); } else if (originalText.includes('Приобрел улучшение для подвала')) { replaceData(`[Дом | ${transactionDate}] ${playerName} - Улучшил подвал своего дома за ${transactionAmount.replace('-', '')} рублей`); } } else if (categoryName == 'Квесты') { if (originalText) { replaceData(`[Квесты | ${transactionDate}] ${playerName} - Выполнил $1 квест и получил ${transactionAmount}`, /^\+ Выполнение (.*) квеста$/); } } else if (categoryName == 'Контейнеры') { if (originalText.includes('Продал содержимое')) { replaceData(`[Контейнеры | ${transactionDate}] ${playerName} - Продал содержимое контейнера $1 и получил ${transactionAmount} рублей`, /^.*содержимое (.*) контейнера.*$/); } else if (originalText.includes('Победа в торгах')) { replaceData(`[Контейнеры | ${transactionDate}] ${playerName} - Выиграл торги за контейнер за ${transactionAmount.replace('-', '')}`); } else if (originalText.includes('Выиграл')) { replaceData(`[Контейнеры | ${transactionDate}] ${playerName} - Получил $1 ($2) после победы на торгах за контейнер`, /^Выиграл (.*) в .*: (.*) \(.*$/); } } else if (categoryName == 'Купоны') { if (originalText) { replaceData(`[Купон | ${transactionDate}] ${playerName} - Получил купон: ID $1`, /^.*ID (.*)$/); } } else if (categoryName == 'Лицензии') { if (originalText.includes('Оплата экзамена')) { replaceData(`[Лицензии | ${transactionDate}] ${playerName} $1 за ${transactionAmount.replace('-', '')} рублей`, /^(.*?)$/); } else if (originalText.includes('Приобрел в правительстве')) { replaceData(`[Лицензии | ${transactionDate}] ${playerName} $1 за ${transactionAmount.replace('-', '')} рублей`, /^(.*?)$/); } else if (originalText.includes('Лицензия анулирована')) { replaceData(`[Лицензии | ${transactionDate}] ${playerName} - $1`, /^(.*?)$/); } } else if (categoryName == 'Личное транспортное средство') { if (originalText.includes('Купил изменение')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Купил изменение "$1" на автомобиль $2 за ${transactionAmount.replace('-', '')} рублей`, /^.*изменение "(.*)" на авто (.*) \[.*$/); } else if (originalText.includes('Купил деталь')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Купил деталь "$1" на автомобиль $2 за ${transactionAmount.replace('-', '')} рублей`, /^.*деталь "(.*)".* на авто (.*) \[.*$/); } else if (originalText.includes('Установил номерные')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Установил номер $1 на свой автомобиль`, /^.*знаки (.*) \(.*$/); } else if (originalText.includes('Снял номерные')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Снял номер $1 со своего автомобиля`, /^.*знаки (.*) \(.*$/); } else if (originalText.includes('Отметил свое')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Отметил свой автомобиль по GPS`); } else if (originalText.includes('Продажа транспорта')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Продал автомобиль $1 игроку $2 за ${transactionAmount} рублей`, /^.* транспорта (.*) \(.*\) для игрока (.*) \[.*$/); } else if (originalText.includes('Продал транспортное')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Продал автомобиль $1 государству за ${transactionAmount} рублей`, /^.*средство (.*) \(.*\)$/); } else if (originalText.includes('Покупка транспорта') && originalText.includes('у игрока')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Купил автомобиль $1 у игрока $2 за ${transactionAmount.replace('-', '')} рублей`, /^.* Покупка транспорта (.*) \(.*$/); } else if (originalText.includes('Покупка транспорта') && originalText.includes('в автосалоне')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Купил автомобиль $1 в автосалоне за ${transactionAmount.replace('-', '')} рублей`, /^.* Покупка транспорта (.*) \(.*$/); } else if (originalText.includes('Обменялся')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Обменял свой автомобиль $3 на автомобиль $2 игрока $1 без доплаты`, /^Обменялся с (.*) \(Авто (.*) \(.*\) на Авто (.*) \(.*$/); } else if (originalText.includes('+ Доплата за обмен')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Обменял свой автомобиль $3 на автомобиль $2 игрока $1 с доплатой ${transactionAmount.replace('-', '')}`, /^.*обмен от (.*) \(Авто (.*) \(.*\) на Авто (.*) \(.*$/); } else if (originalText.includes('- Доплата за обмен')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Обменял свой автомобиль $3 на автомобиль $2 игрока $1 с доплатой ${transactionAmount.replace('-', '')}`, /^.*игроку (.*) \(Авто (.*) \(.*\) на Авто (.*) \(.*$/); } else if (originalText.includes('Выиграл')) { replaceData(`[Транспорт | ${transactionDate}] ${playerName} - Выиграл автомобиль $1 в BlackPass`, /^.*blackpass: (.*) \[.*$/); } } else if (categoryName == 'Лотерея') { if (originalText.includes('Приобрел')) { replaceData(`[Лотерея | ${transactionDate}] ${playerName} - Приобрел лотерейный билет, число $1`, /^.*число: (.*)$/); } else if (originalText.includes('Выигрыш')) { replaceData(`[Лотерея | ${transactionDate}] ${playerName} - Выиграл ${transactionAmount} рублей в лотерею, $1`, /^.*совпали (.*)$/);; } } else if (categoryName == 'Мероприятия') { if (originalText.includes('Выдача денег')) { replaceData(`[BlackPass | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей из BlackPass`); } else if (originalText.includes('Аренда лодки')) { replaceData(`[Аренда | ${transactionDate}] ${playerName} - Арендовал лодку за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('За отметку')) { replaceData(`[GPS | ${transactionDate}] ${playerName} - Отметил дом на GPS за ${transactionAmount.replace('-', '')} рублей`); } } else if (categoryName == 'Мобильный телефон') { if (originalText.includes('Пополнил')) { replaceData(`[Телефон | ${transactionDate}] ${playerName} - Пополнил счет телефона на ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Приобрел смену')) { replaceData(`[Телефон | ${transactionDate}] ${playerName} - Сменил номер за ${transactionAmount.replace('-', '')} рублей. Новый номер: $1`, /^.*Новый номер: (.*)$/); } } else if (categoryName == 'Начальные работы') { if (originalText.includes('кладо')) { replaceData(`[Кладоискатель | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей, затраченное время: $1`, /^.*выполнил за (.*)\)$/); } else if (originalText.includes('электрик')) { replaceData(`[Электрик | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за выполнение вызова`); } else if (originalText.includes('капитану')) { replaceData(`[Водолаз | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за продажу предмета`); } else if (originalText.includes('заказа инкассатор')) { replaceData(`[Инкассация | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за выполнение заказа`); } else if (originalText.includes('транспорта инкассатор')) { replaceData(`[Инкассатор | ${transactionDate}] ${playerName} - Арендовал рабочий транспорт за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Арендовал прицеп')) { replaceData(`[Транспортная Компания | ${transactionDate}] ${playerName} - Арендовал прицеп`); } else if (originalText.includes('Выполнил заказ за')) { replaceData(`[Транспортная Компания | ${transactionDate}] ${playerName} - Выполнил заказ за $1 секунд и получил ${transactionAmount} рублей`, /^.*заказ за (\d+) секунд.$/); } else if (originalText.includes('[ТК] Аренда Т/О')) { replaceData(`[Транспортная Компания | ${transactionDate}] ${playerName} - Арендовал фуру за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Загрузил груз')) { replaceData(`[Транспортная Компания | ${transactionDate}] ${playerName} - Загрузил груз в прицеп`); } else if (originalText.includes('Дошел к разгрузке')) { replaceData(`[Транспортная Компания | ${transactionDate}] ${playerName} - Дошел к разгрузке за $1 секунд`, /^.*разгрузке за (.*) секунд$/); } else if (originalText.includes('+ Механик, починка')) { replaceData(`[Механик | ${transactionDate}] ${playerName} - Починил автомобиль игроку $1 за ${transactionAmount} рублей`, /^.*игроку (.*)$/); } else if (originalText.includes('- Починка')) { replaceData(`[Механик | ${transactionDate}] ${playerName} - Починил автомобиль у игрока $1 за ${transactionAmount.replace('-', '')} рублей`, /^.*механика (.*)$/); } else if (originalText.includes('Зарплата водителем автобуса')) { replaceData(`[Автобус | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за маршрут`); } else if (originalText.includes('Аредовал автобус')) { replaceData(`[Автобус | ${transactionDate}] ${playerName} - Арендовал автобус за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('шахтер')) { replaceData(`[Шахта | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за смену`); } else if (originalText.includes('в МЧС')) { replaceData(`[МЧС | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за задание`); } else if (originalText.includes('курьера')) { replaceData(`[Курьер | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за заказ`);; } else if (originalText.includes('газовика')) { replaceData(`[Газовик | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за заказ`); } else if (originalText.includes('такси')) { replaceData(`[Такси | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за заказ`); } else if (originalText.includes('завод')) { replaceData(`[Завод | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за смену`); } } else if (categoryName == 'Номера') { if (originalText.includes('Купил')) { replaceData(`[Номер | ${transactionDate}] ${playerName} - Купил номер $1 за ${transactionAmount.replace('-', '')} рублей`, /^.*транспорта (.*) \(.*$/); } else if (originalText.includes('Обновил')) { replaceData(`[Номер | ${transactionDate}] ${playerName} - Обновил номер при покупке за ${transactionAmount.replace('-', '')}`); } } else if (categoryName == 'Обмен баллов') { if (originalText.includes('+')) { replaceData(`[E-Points | ${transactionDate}] ${playerName} - $1`, /^\+ (.*).$/); } } else if (categoryName == 'Объявления') { if (originalText.includes('Отправил')) { replaceData(`[СМИ | ${transactionDate}] ${playerName} - Отправил объявление "$1" за ${transactionAmount.replace('-', '')} рублей`, /^.*объявление: (.*)$/) } else if (originalText.includes('Отредактировал')) { replaceData(`[СМИ | ${transactionDate}] ${playerName} - Отредактировал объявление игрока $1 за ${transactionAmount} рублей, текст: "$2"`, /^.*объявление (\w+): (.*) \(.*$/); } } else if (categoryName == 'Остальное') { if (originalText.includes('Переместил')) { replaceData(`[Инвентарь | ${transactionDate}] ${playerName} - $1`, /^(.*)$/); } } else if (categoryName == 'Охота') { if (originalText.includes('Приобрел')) { replaceData(`[Охота | ${transactionDate}] ${playerName} - $1 за ${transactionAmount.replace('-', '')} рублей`, /^- (.*)$/); } else if (originalText.includes('Получил за продажу')) { replaceData(`[Охота | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за продажу животного`); } else if (originalText.includes('вознаграждение')) { replaceData(`[Охота | ${transactionDate}] ${playerName} - Получил вознаграждение: $1`, /^.*\((.*)\)$/); } } else if (categoryName == 'Подключения/Отключания') { if (originalText.includes('подключился')) { replaceData(`[Сервер | ${transactionDate}] ${playerName} - Подключился к серверу, ID: ${transactionAmount}`); } else if (originalText.includes('отключился')) { replaceData(`[Сервер | ${transactionDate}] ${playerName} - Отключился от сервера, ID: ${transactionAmount}`); } } else if (categoryName == 'Пожертвования') { if (originalText.includes('Пожертвовал')) { replaceData(`[Пожертвования | ${transactionDate}] ${playerName} - Пожертвовал ${transactionAmount.replace('-', '')} рублей в банке`); } } else if (categoryName == 'Покупка кустов с наркотиками') { if (originalText.includes('Приобрел')) { replaceData(`[Покупка кустов | ${transactionDate}] ${playerName} - Купил $1 кустов за ${transactionAmount.replace('-', '')} рублей`, /^.*. \((.*).\)$/); } } else if (categoryName == 'Покупка предметов в магазине') { if (originalText.includes('Приобрел')) { replaceData(`[Покупка в магазине | ${transactionDate}] ${playerName} - Купил $1 за ${transactionAmount.replace('-', '')} рублей`, /^- Приобрел (.*) в бизнесе .*$/); } } else if (categoryName == 'Попрошайничество') { if (originalText.includes('Получил')) { replaceData(`[Попрошайничество | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за попрошайничество`); } } else if (categoryName == 'Промокоды') { if (originalText.includes('Получил за введенный')) { replaceData(`[Промо | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за введенный промокод "$1"`, /^.*\((.*)\)$/); } else if (originalText.includes('Получил за введенные')) { replaceData(`[Промо | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за введенные промокоды (/checkpromo)`); } else if (originalText.includes('Создал')) { replaceData(`[Промо | ${transactionDate}] ${playerName} - Создал промокод "$1" за ${transactionAmount.replace('-', '')} рублей`, /^.*промокод (.*)$/); } } else if (categoryName == 'Реклама') { if (originalText.includes('Получил')) { replaceData(`[Реклама | ${transactionDate}] ${playerName} - Получил мут за повторение сообщения "$1"`, /^.*Текст: (.*)$/); } else if (originalText.includes('подозревается')) { replaceData(`[Промо | ${transactionDate}] ${playerName} - Подозревается в рекламе. Текст: "$1"`, /^.*рекламе! \[(.*)\]$/); } } else if (categoryName == 'Реферальная система') { if (originalText.includes('Получил вознаграждение')) { replaceData(`[Рефералы | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за реферера (пригласившего)`); } else if (originalText.includes('Получил деньги')) { replaceData(`[Реферала | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за реферала (приглашенного)`); } } else if (categoryName == 'Рулетка') { if (originalText.includes('Забрал')) { replaceData(`[Рулетка | ${transactionDate}] ${playerName} - Забрал выигрыш из рулетки: $1`, /^.*выигрыш: (.*)$/); } } else if (categoryName == 'Рыболовство') { if (originalText.includes('Продал')) { replaceData(`[Рыболовство | ${transactionDate}] ${playerName} - Продал рыбу в рыболовном магазине`); } } else if (categoryName == 'Свадьба') { if (originalText.includes('Покупка')) { replaceData(`[Свадьба | ${transactionDate}] ${playerName} - Купил обручальные кольца за ${transactionAmount.replace('-', '')} рублей`); } else if (originalText.includes('Арендовал')) { replaceData(`[Свадьба | ${transactionDate}] ${playerName} - Арендовал свадебный $1 за ${transactionAmount.replace('-', '')} рублей`, /^.*средство: (.*)$/); } } else if (categoryName == 'Семейный чат') { if (originalText) { replaceData(`[Семейный чат | ${transactionDate}] ${playerName} - Написал "$1"`, /^.*\]: (.*)$/); } } else if (categoryName == 'Семьи') { if (originalText.includes('Взял') || originalText.includes('Положил в сейф') || originalText.includes('Выдал') || originalText.includes('Выгнал') || originalText.includes('Принял')) { replaceData(`[Семьи | ${transactionDate}] ${playerName} - $1`, /^.*\)\] (.*)$/); } else if (originalText.includes('Покинул')) { replaceData(`[Семьи | ${transactionDate}] ${playerName} - Покинул свою семью`); } else if (originalText.includes('Снял')) { replaceData(`[Семьи | ${transactionDate}] ${playerName} - Снял ${transactionAmount} рублей со счета семьи`); } else if (originalText.includes('Положил')) { replaceData(`[Семьи | ${transactionDate}] ${playerName} - Положил ${transactionAmount.replace('-', '')} рублей на счет семьи`); } } else if (categoryName == 'Склад фракции') { if (originalText.includes('Положил')) { replaceData(`[Склад фракции | ${transactionDate}] ${playerName} - Положил ${transactionAmount.replace('-', '')} рублей на склад фракции`); } else if (originalText.includes('Взял')) { replaceData(`[Склад фракции | ${transactionDate}] ${playerName} - Взял ${transactionAmount} рублей со склада фракции`); } } else if (categoryName == 'Смена имени') { if (originalText) { replaceData(`[Смена имени | ${transactionDate}] ${playerName} - Сменил имя на $1`, /^.*на (.*) \(.*$/); } } else if (categoryName == 'Сообщения') { if (originalText) { replaceData(`[SMS | ${transactionDate}] ${playerName} - Написал игроку $1: "$2"`, /^Для (.*)\[.*\]: (.*)$/); } } else if (categoryName == 'Телефонные звонки') { if (originalText) { replaceData(`[Звонок | ${transactionDate}] ${playerName} - Написал игроку $1: "$2"`, /^.* > (.*)\[.*\]: (.*)$/); } } else if (categoryName == 'Трейды') { if (originalText.includes('начат')) { replaceData(`[Трейды | ${transactionDate}] ${playerName} - Начал трейд`); } else if (originalText.includes('не завершился')) { replaceData(`[Трейды | ${transactionDate}] ${playerName} - Обмен отменен`); } else if (originalText.includes('успешно закончен')) { replaceData(`[Трейды | ${transactionDate}] ${playerName} - Обмен завершен`); } else if (originalText.includes('добавил предмет')) { replaceData(`[Трейды | ${transactionDate}] ${playerName} - Добавил предмет $1 в обмен`, /^.*предмет (.*) \(.*$/); } else if (originalText.includes('добавил') && originalText.includes('рублей')) { replaceData(`[Трейды | ${transactionDate}] ${playerName} - Добавил $1 рублей в обмен`, /^.*добавил (.*) рублей$/); } else if (originalText.includes('написал')) { replaceData(`[Трейды | ${transactionDate}] ${playerName} - Написал "$1" в чате обмена`, /^.*написал: (.*)$/); } else if (originalText.includes('+ Доплата')) { replaceData(`[Трейды | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей после обмена с игроком $1`, /^.*с игроком (.*) \[.*$/); } else if (originalText.includes('- Доплата')) { replaceData(`[Трейды | ${transactionDate}] ${playerName} - Доплатил ${transactionAmount.replace('-', '')} рублей за обмен с игроком $1`, /^.*с игроком (.*) \[.*$/); } } else if (categoryName == 'Ферма') { if (originalText.includes('Арендовал на ферме')) { replaceData(`[Ферма | ${transactionDate}] ${playerName} - Арендовал $1 за ${transactionAmount.replace('-', '')} рублей`, /^.*: (.*)$/); } else if (originalText.includes('Арендовал') && originalText.includes('минут')) { replaceData(`[Ферма | ${transactionDate}] ${playerName} - Арендовал $1 за ${transactionAmount.replace('-', '')} рублей`, /^.*Арендовал (.*)$/); } else if (originalText.includes('Получил')) { replaceData(`[Ферма | ${transactionDate}] ${playerName} - Получил ${transactionAmount} рублей за работу на ферме`); } } else if (categoryName == 'Штрафы') { if (originalText.includes('Оплатил')) { replaceData(`[Штрафы | ${transactionDate}] ${playerName} - Оплатил штраф(-ы) на сумму ${transactionAmount.replace('-', '')} рублей`); } } else { event.clipboardData.setData('text/plain', originalText); event.preventDefault(); } } }); }); } window.onload = function () { formatTransactionsInTable(); }; const observer = new MutationObserver(function (mutationsList) { formatTransactionsInTable(); }); const config = { childList: true, subtree: true }; observer.observe(document.body, config); } function applySelectedStyle(color) { function darkenColor(hexCode, percent) { percent = Math.max(0, Math.min(100, percent)); var r = parseInt(hexCode.substring(1, 3), 16); var g = parseInt(hexCode.substring(3, 5), 16); var b = parseInt(hexCode.substring(5, 7), 16); r = Math.round(r * (100 - percent) / 100); g = Math.round(g * (100 - percent) / 100); b = Math.round(b * (100 - percent) / 100); var result = '#' + (r < 16 ? '0' : '') + r.toString(16) + (g < 16 ? '0' : '') + g.toString(16) + (b < 16 ? '0' : '') + b.toString(16); return result; } const darkColor80 = darkenColor(color, 80); const darkColor50 = darkenColor(color, 50); const darkColor20 = darkenColor(color, 20); const currentStyleElement = document.getElementById('customStyle'); if (currentStyleElement) { currentStyleElement.remove(); } const styleElement = document.createElement('style'); styleElement.id = 'customStyle'; styleElement.textContent = ` /* Selected Font Accent Stylesheet */ /* In development */ h1, h2, h3, h4, h5, h6 { color: ${color} !important; text-shadow: 0px 0px 10px ${color} !important; } #log-filter[data-v-2d76ca92] .form-label[data-v-2d76ca92] { color: ${color} !important; text-shadow: 0px 0px 2px ${color} !important; } #log-filter-section[data-v-2d76ca92] { border: 1px solid ${color} !important; } .navbar-dark .navbar-nav .nav-link { color: ${color} !important; text-shadow: 0px 0px 2px ${color} !important; } #log-table[data-v-2d76ca92]>:not(:last-child)>:last-child>*, .table>:not(:last-child)>:last-child>* { color: ${color} !important; border-bottom: 1px solid ${color} !important; } #log-table[data-v-2d76ca92] .first-row[data-v-2d76ca92] td[data-v-2d76ca92] { color: ${color} !important; text-shadow: 0px 0px 2px ${color} !important; } #log-table[data-v-2d76ca92]>:not(caption)>*>*, .table-borderless>:not(caption)>*>* { border-bottom: 1px solid ${color} !important; } #log-table[data-v-2d76ca92] .second-row[data-v-2d76ca92] td[data-v-2d76ca92] { color: ${color} !important; text-shadow: 0px 0px 2px ${color} !important; } .form-control { color: ${color} !important; border: 1px solid ${color} !important; } .form-control:focus { box-shadow: 0px 0px 10px ${color} !important; } .multiselect.is-open.is-active { box-shadow: 0px 0px 10px ${color} !important; } .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4), .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu), .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3), .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu) { color: ${color} !important; border: 1px solid ${color} !important; background: ${darkColor80} !important; } .autoComplete_wrapper>input { border: 1px solid ${color} !important; } .dp__input { border: 1px solid ${color} !important; color: ${color} !important; } .dp__calendar_header_item { color: ${color} !important; } .dp__month_year_row { color: ${color} !important; } .dp__overlay_cell_pad { color: ${color} !important;; } body::-webkit-scrollbar-track { background: ${darkColor80} !important; } body::-webkit-scrollbar-thumb { background: linear-gradient(${darkColor80}, ${color}, ${darkColor80}) !important; } .style-button { box-shadow: 0px 0px 10px ${darkColor20} !important; border-color: ${darkColor20} !important; color: ${darkColor20} !important; } .style-button:hover { background: ${darkColor80} !important; box-shadow: 0px 0px 10px ${color} !important; border-color: ${color} !important; color: ${color} !important; } .modal-content { box-shadow: 0 0 10px ${color} !important; } .modal-header { border: 1px solid ${color} !important; } .modal-body { border: 1px solid ${color} !important; color: ${color} !important; } .style-title-text { color: ${color} !important; } .bg-success { border: 1px solid ${color} !important; box-shadow: 0px 0px 10px ${color} !important; color: ${color} !important; } .bug-report-block { border: 2px solid ${color} !important; box-shadow: 0 0 5px ${color} !important; } .bug-report-button { border: 2px solid ${color} !important; box-shadow: 0 0 5px ${color} !important; } .bi-funnel { color: ${color} !important; } .selector { border: 1px solid ${color} !important; box-shadow: 0 0 5px ${color} !important; color: ${color} !important; background: ${darkColor80} !important; } .selector:hover { background: ${darkColor50} !important; } .selector option { background: ${darkColor80} !important; } input[type=range] { box-shadow: 0px 0px 5px ${color} !important; } input[type=range]::-webkit-slider-runnable-track { border: 2px solid ${color} !important; background-color: ${darkColor80} !important; } input[type=range]::-webkit-slider-runnable-track:hover { background-color: ${darkColor50} !important; } input[type=range]::-webkit-slider-thumb { background: ${darkColor80} !important; } input[type=range]::-webkit-slider-thumb:hover { background: ${darkColor50} !important; } input[type="color"] { border: 2px solid ${color} !important; box-shadow: 0px 0px 5px ${color} !important; } input[type="color"]:hover { box-shadow: 0px 0px 10px 2px ${color} !important; } .show-filter-btn[data-v-2d76ca92] { background: ${darkColor80} !important; } .navbar-brand { color: ${darkColor20} !important; } .navbar-brand:hover { color: ${color} !important; } .bi-arrow-bar-right { color: ${color} !important; } #next-page-btn[data-v-2d76ca92], .btn-secondary, .close-btn, .icon-btn, .show-filter-btn { border-color: ${color} !important; color: ${color} !important; } #prev-page-btn[data-v-2d76ca92], .btn-outline-secondary { border-color: ${color} !important; color: ${color} !important; } .bi-sort-down::before { color: ${color} !important; text-shadow: 0px 0px 2px ${color} !important; } .slider { background-color: ${darkColor20} !important; box-shadow: 0 0 5px ${darkColor20} !important; transition: all .4s ease; } .slider:hover{ background-color: ${darkColor50} !important; } .slider:before { background-color: ${color} !important; } input:checked + .slider { background-color: ${darkColor80} !important; } input:checked + .slider:hover { background-color: ${darkColor50} !important; } ` ; document.head.appendChild(styleElement); } function applyTextGradient() { const textGradient = document.createElement('style'); textGradient.id = 'text-gradient'; textGradient.textContent = ` /* Text Gradient Stylesheet */ /* Gradient Keyframes (Animation) */ @keyframes gradientCategory { 0% {background-position: 0% 100%;} 100% {background-position: 1200% 100%;} } /* Table Nickname & Category Gradient */ .td-category[data-v-2d76ca92] a[data-v-2d76ca92] { background: linear-gradient(45deg, #00ffff, #0045ff, #00ffff); background-size: 150% 150%; animation: gradientCategory 5s linear infinite; color: transparent !important; -webkit-background-clip: text; font-style: italic; font-weight: 700; text-decoration: none; text-shadow: 0px 0px 10px #08f; padding-right: 3px; } .td-player-name[data-v-2d76ca92] a[data-v-2d76ca92] { background: linear-gradient(45deg, #ffff00, #ff4400, #ffff00); background-size: 150% 150%; animation: gradientCategory 5s linear infinite; color: transparent !important; -webkit-background-clip: text; font-style: italic; font-weight: 700; text-decoration: none; text-shadow: 0px 0px 10px #f80; padding-right: 3px; } /* "Black Logs" Gradient */ .navbar-brand { background: linear-gradient(45deg, #00ccff, #ff4400, #00ccff); background-size: 150% 150%; animation: gradientCategory 5s linear infinite; color: transparent !important; -webkit-background-clip: text; font-style: italic; font-weight: 700; text-decoration: none; text-shadow: 0px 0px 10px #888; padding-right: 3px; } `; document.head.appendChild(textGradient); } function removeTextGradient() { var textGradient = document.querySelector('#text-gradient'); document.head.removeChild(textGradient); } function applyMenuStyles() { const pseudoClasses = document.createElement('style'); pseudoClasses.id = 'elements-pseudo-classes'; pseudoClasses.textContent = ` /* Style Menu Elements Stylesheet */ /* Style Button CSS + Pseudo Classes */ .style-button { color: #ffffff; background: transparent; border: 3px solid #ffffff; border-radius: 10px; box-shadow: 0px 0px 10px #ffffff; width: 10%; transition-duration: 0.5s; } .style-button:hover { background: #222; box-shadow: 0px 0px 10px #aaaaff; border-color: #aaaaff; color: #aaaaff; } /* Style Title Text CSS */ .style-title-text { font-size: 24px; color: #fff; font-weight: 600; } /* Switch CSS + Pseudo Classes */ .switch { position: relative; display: inline-block; width: 60px; height: 34px; padding-left: 20px; } .switch input { display: none; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #aaaaaa; box-shadow: 0 0 5px #aaaaaa; transition: all .4s ease; } .slider:hover{ background-color: #666666; } .slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: #cccccc; box-shadow: 0 0 5px #000000; transition: all .4s ease; } input:checked + .slider { background-color: #222222; } input:checked + .slider:hover { background-color: #666666; } input:focus + .slider { box-shadow: 0 0 5px #222222; background-color: #444444; } input:checked + .slider:before { transform: translateX(26px); } .slider.round { border-radius: 34px; } .slider.round:before { border-radius: 50%; } /* Tooltip CSS */ .tooltip-style { position: relative; display: inline-block; border-bottom: 1px dotted; } .tooltip-style .tooltip-style-text { visibility: hidden; background-color: #222222; color: #fff; text-align: center; border-radius: 6px; padding: 5px; position: absolute; z-index: 1; width: 300px; bottom: 100%; left: 50%; margin-left: -150px; margin-bottom: 10px; transition: opacity 0.3s; opacity: 0; font-size: 16px; } .tooltip-style:hover .tooltip-style-text { visibility: visible; opacity: 0.95; } /* Selector CSS + Pseudo Classes */ .selector { background: #222222; border: 1px solid #cccccc; border-radius: 20px; box-shadow: 0 0 5px #cccccc; color: #cccccc; cursor: pointer; font-size: 18px; margin-right: 10px; margin-top: 25px; padding: 4px; text-align: center; width: 40%; transition-duration: 0.5s; } .selector:hover { background: #444444; color: #ffffff; box-shadow: 0 0 5px #ffffff; } .selector option{ background: #222222; } /* Slider CSS + Pseudo Classes */ input[type=range] { width: 40%; border-radius: 10px; -webkit-appearance: none; -moz-appearance: none; appearance: none; box-shadow: 0px 0px 5px #cccccc; } input[type=range]::-webkit-slider-runnable-track { border-radius: 10px; height: 10px; border: 2px solid #cccccc; background-color: #222222; transition-duration: 0.5s; } input[type=range]::-webkit-slider-runnable-track:hover { border-radius: 10px; height: 10px; border: 2px solid #cccccc; background-color: #444444; } input[type=range]::-webkit-slider-thumb { background: #222222; border: 1px solid #cccccc; box-shadow: 0px 0px 2px #cccccc; border-radius: 25px; cursor: pointer; width: 15px; height: 30px; -webkit-appearance: none; margin-top: -10px; transition-duration: 0.5s; } input[type=range]::-webkit-slider-thumb:hover { background: #444444; border: 1px solid #ffffff; box-shadow: 0px 0px 2px #000000; border-radius: 25px; cursor: pointer; width: 20px; height: 40px; -webkit-appearance: none; margin-top: -15px; } input[type=range]::-moz-range-track { border-radius: 10px/100%; height: 5px; border: 1px solid cyan; background-color: #fff; } input[type=range]::-moz-range-thumb { background: #ecf0f1; border: 1px solid cyan; border-radius: 10px/100%; cursor: pointer; } /* Color Pickers CSS + Pseudo Classes */ .color-picker { margin-top: 25px; margin-right: 10px; width: 40%; vertical-align: bottom; } input[type="color"]::-webkit-color-swatch-wrapper { padding: 2px; } input[type="color"]::-webkit-color-swatch { border: none; border-radius: 20px; } input[type="color"] { -webkit-appearance: none; border: 2px solid #ffffff; background: #000; border-radius: 20px; overflow: hidden; outline: none; cursor: pointer; box-shadow: 0px 0px 5px #ffffff; transition-duration: 0.5s; } input[type="color"]:hover { -webkit-appearance: none; border: 2px solid #ffffff; background: #444444; border-radius: 20px; overflow: hidden; outline: none; cursor: pointer; box-shadow: 0px 0px 10px 2px #ffffff; } /* Adding Text CSS */ .addingText { font-size: 20px; font-style: italic; font-weight: 800; vertical-align: middle; } /* Bug Report CSS */ .bug-report-block { margin-top: 25px; margin-bottom: 5px; padding: 10px; border: 2px solid #fff; border-radius: 20px; box-shadow: 0 0 5px #fff; } .bug-report-button { width: 7%; margin-right: 5%; transition-duration: 0.5s; border: 2px solid #fff; border-radius: 50%; box-shadow: 0 0 5px #fff; } .bug-report-button:hover { filter: brightness(0.5); } `; document.head.appendChild(pseudoClasses); } function applySavedColors() { const savedNick = localStorage.getItem('playerNameColor'); const savedCategory = localStorage.getItem('categoryColor'); const savedColors = document.createElement('style'); savedColors.id = 'stored-NickCategory-Colors'; savedColors.textContent = ` /* Saved Nickname & Category Stylesheet */ /* Nickname */ .td-player-name[data-v-2d76ca92] a[data-v-2d76ca92] { color: ${savedNick}; text-shadow: 0px 0px 1px ${savedNick}; } /* Category */ .td-category[data-v-2d76ca92] a[data-v-2d76ca92] { color: ${savedCategory}; text-shadow: 0px 0px 1px ${savedCategory}; } `; document.head.appendChild(savedColors); } function applyBodyStyle() { const bodyStyle = document.createElement('style'); bodyStyle.id = 'main-body-theme'; bodyStyle.textContent = ` /* Main Page Stylesheet */ /* Page Heading */ h1, h2, h3, h4, h5, h6 { color: #fff; text-shadow: 0px 0px 10px #fff; } .navbar-dark .navbar-brand, .navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover { color: #fff; font-weight: 900; transition-duration: 0.5s; } .bg-success { background: #000 !important; border: 1px solid #fff; box-shadow: 0px 0px 10px #fff; } .badge { border-radius: 7px; color: #fff; font-weight: 500; } .navbar-dark .navbar-nav .nav-link { color: #fff; text-shadow: 0px 0px 10px #fff; } .bi-arrow-left::before { color: #fff; } .show-filter-btn[data-v-2d76ca92] { background: #333; border-bottom-left-radius: 10px; } .alert[data-v-0c0e47d2] { border-radius: 20px; box-shadow: 0 0 10px 2px #f00; } /* Page Body */ .bg-dark { bs-bg-opacity: 0; background: #000 !important; } #game-logs-app { background: #000; } body { background-color: #000; background-size: 100%; } body::-webkit-scrollbar { width: 16px; } body::-webkit-scrollbar-track { background: #222; } body::-webkit-scrollbar-thumb { background: #fff; } .accessible-servers .page-intro { color: #0ff; text-align: center; text-shadow: 0px 0px 10px #fff; } .accessible-servers .game-logs-link { font-size: 1.5rem; text-shadow: 0px 0px 10px #f0f; transition-duration: 0.5s; } a { color: #faf; text-decoration: none; } a:hover { color: #f0f; } /* Page Footer */ #next-page-btn[data-v-2d76ca92], .btn-secondary, .close-btn, .icon-btn, .show-filter-btn { background-color: #222; border-color: #fff; color: #fff; } #next-page-btn[data-v-2d76ca92]:hover, .btn-secondary:hover, .close-btn:hover, .icon-btn:hover, .show-filter-btn:hover { background-color: #444; border-color: #aaa; color: #fff; } #prev-page-btn[data-v-2d76ca92], .btn-outline-secondary { border-color: #fff; color: #fff; } #prev-page-btn[data-v-2d76ca92]:hover, .btn-outline-secondary:hover { background-color: #444; border-color: #aaa; color: #fff; } /* Logs Table - Main */ #log-table[data-v-2d76ca92]>:not(:last-child)>:last-child>*, .table>:not(:last-child)>:last-child>* { border: 1px solid #111; border-bottom: 1px solid #fff; background: #111; color: #fff; } #log-table[data-v-2d76ca92] .first-row[data-v-2d76ca92] td[data-v-2d76ca92] { text-align: center; background: #111; color: #fff; text-shadow: 0px 0px 2px #fff; } #log-table[data-v-2d76ca92] .second-row[data-v-2d76ca92] td[data-v-2d76ca92] { padding: 0.5rem 0.5rem 0.5rem 1.5rem; background: #000; color: #fff; text-shadow: 0px 0px 2px #fff; } #log-table[data-v-2d76ca92]>:not(caption)>*>*, .table-borderless>:not(caption)>*>* { border: 1px solid rgba(0, 0, 0, 0); border-bottom: 1px solid #fff; } #log-table[data-v-2d76ca92] .first-row[data-v-2d76ca92] td[data-v-2d76ca92] { border: 1px solid rgba(0, 0, 0, 0); text-align: center; } /* Logs Table - Strokes */ .td-category[data-v-2d76ca92] a[data-v-2d76ca92] { color: #08f; -webkit-background-clip: text; font-style: italic; font-weight: 700; text-decoration: none; text-shadow: 0px 0px 1px #08f; padding-right: 3px; } .td-player-name[data-v-2d76ca92] a[data-v-2d76ca92] { color: #f80; -webkit-background-clip: text; font-style: italic; font-weight: 700; text-decoration: none; text-shadow: 0px 0px 1px #f80; padding-right: 3px; } .td-index[data-v-2d76ca92] { background: linear-gradient(90deg, rgba(51, 51, 51, 1) 0%, rgba(17, 17, 17, 1) 100%) !important; color: #fff; } .bi-sort-down::before { color: #f90; text-shadow: 0px 0px 2px #f90; } .bi-sort-up::before { color: #f90; text-shadow: 0px 0px 2px #f90; } /* Logs Filter - Main */ #log-filter-section[data-v-2d76ca92] { background: #000; border: 1px solid #fff; border-radius: 25px; height: 1000px; } #log-filter[data-v-2d76ca92] .form-label[data-v-2d76ca92] { color: #fff; font-weight: 500; } #log-filter[data-v-2d76ca92] .close-btn[data-v-2d76ca92] { height: 41px; background: #000; border-bottom-left-radius: 10px; border: 1px solid #000; } .btn-primary, .submit-btn { background-color: #000; border: 3px solid #0af; border-radius: 10px; color: #0ff; } .btn-primary:hover, .submit-btn:hover { background-color: #033; border-color: #fff; color: #fff; transition: all .2s ease-in-out; } .btn-outline-danger { border: 3px solid #f00; color: #f00; border-radius: 10px; } .btn-outline-danger:hover { background-color: #900; border-color: #fff; color: #fff; transition: all .2s ease-in-out; } .bi-question-circle-fill::before { color: #666; text-shadow: 0px 0px 10px #000; } strong { color: #0ff; } /* Logs Filter - Strokes */ .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4), .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu), .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3), .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu) { border-bottom-right-radius: 0; border-top-right-radius: 0; background: #111; color: #fff; border: 1px solid #fff; } .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback):not(.field-error) { border-bottom-left-radius: 0; border-top-left-radius: 0; margin-left: -1px; background: #000; color: #fff; } .multiselect-search { background: #000; border: 0; bottom: 0; box-sizing: border-box; color: #fff; left: 0; outline: none; width: 100%; } .multiselect-option { align-items: center; box-sizing: border-box; cursor: pointer; background: #000; text-decoration: none; } .multiselect .multiselect-option.is-pointed { background-color: #222; color: #fff; } .multiselect .multiselect-option.is-pointed.is-selected { background-color: #666; color: #fff; } .multiselect .multiselect-option.is-selected { background-color: #444; color: #fff; } .multiselect-dropdown::-webkit-scrollbar { width: 12px; } .multiselect-dropdown::-webkit-scrollbar-track { background: #222; border-left: 1px solid #fff; } .multiselect-dropdown::-webkit-scrollbar-thumb { background-color: #fff; border-radius: 20px; border: 1px solid #222; } .multiselect.is-open.is-active { box-shadow: 0px 0px 10px #fff; } .dropdown-menu { background-color: #222; } .dropdown-menu show { position: absolute; inset: 0px auto auto 0px; margin: 0px; transform: translate(-1px, 40px); background: #333; } .dropdown-item:focus, .dropdown-item:hover { background-color: #444; color: #1e2125; } .autoComplete_wrapper>input { background-color: #000; background-origin: border-box; background-position: left 1.05rem top 0.8rem; background-repeat: no-repeat; background-size: 1.4rem; border: 1px solid #fff; border-radius: 4px; box-sizing: border-box; color: #f90; outline: none; transition: all .4s ease; width: 100%; } .autoComplete_wrapper>input:focus { border: 1px solid #f90; color: #f90; } .autoComplete_wrapper>input:hover { color: #a60; transition: all .3s ease; } .autoComplete_wrapper>ul>li { background-color: #000; color: #fff; transition: all .2s ease; } .autoComplete_wrapper>ul>li:hover, .autoComplete_wrapper>ul>li[aria-selected=true] { background-color: #222; } .autoComplete_wrapper>ul>li mark { background-color: transparent; color: #f90; font-weight: 700; } .autoComplete_wrapper>ul::-webkit-scrollbar { width: 12px; } .autoComplete_wrapper>ul::-webkit-scrollbar-track { background: #222; border-left: 1px solid #fff; } .autoComplete_wrapper>ul::-webkit-scrollbar-thumb { background-color: #fff; border-radius: 20px; border: 1px solid #222; } .form-control { background-color: #000; border: 1px solid #fff; color: #fff; font-weight: 400; transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; width: 100%; } .form-control:focus { background-color: #000; border-color: #fff; box-shadow: 0px 0px 10px #fff; color: #fff; } textarea.form-control { min-height: 100px; resize: none; } .lookup-symbol[data-v-2d76ca92] { color: #fff; font-weight: 500; text-shadow: 0px 0px 10px #fff; } .lookup-comment[data-v-2d76ca92] { color: #fff; font-weight: 400; text-shadow: 0px 0px 10px #fff; } .dp__input { background-color: #111; border: 1px solid #fff; border-radius: 5px; color: #fff; transition: border-color .2s cubic-bezier(.645, .045, .355, 1); width: 100%; } .dp__input_icons { color: #0ff; } .dp__month_year_row { background: #111; color: #fff; } .dp__inner_nav svg { color: #0ff; } .dp__calendar_header, .dp__calendar_wrap { background: #111; } .dp__calendar_header_item { color: #fff; } .dp__cell_inner { color: #fff; } .dp__active_date, .dp__range_end, .dp__range_start { background: #666; color: #fff; } .dp__date_hover:hover, .dp__date_hover_end:hover, .dp__date_hover_start:hover { background: #444; color: #fff; transition: all .5s ease-in-out; } .dp__cell_disabled, .dp__cell_offset { color: #444; } .dp__button { background: #222; } .dp__button_bottom { background: #222; color: #0ff; } .dp__button:hover { background: #333; color: #077; transition: all .5s ease-in-out; } .dp__month_year_select:hover { background: #222; color: #fff; transition: all .5s ease-in-out; } .dp__overlay_cell, .dp__overlay_cell_active { background: #444; } .dp__overlay_container { background: #000; } .dp__overlay_cell_disabled, .dp__overlay_cell_disabled:hover { background: #111; color: #444; } .dp__time_display { color: #aaa; } .dp__time_display:hover { background: #111; color: #fff; transition: all .3s ease-in-out; } .dp__inc_dec_button:hover { background: #222; color: #0ff; transition: all .3s ease-in-out; } .dp__cell_in_between, .dp__overlay_cell:hover { background: #666; color: #fff; transition: all .3s ease-in-out; } .dp__overlay_cell_pad { padding: 10px 0; color: #999; } .dp__inner_nav:hover { background: #333; color: #fff; transition: all .3s ease-in-out; } .dp__today { border: 1px solid #fff; } #playerNameInput::placeholder { color: #a60; } /* Loading Overlay */ #loading-overlay[data-v-173ec149] { height: 100%; width: 100%; } #loading-overlay-heading[data-v-173ec149] { font-weight: 500; letter-spacing: 1px; text-align: center; text-transform: uppercase; background: linear-gradient(90deg, #ffffff, #444444, #ffffff); background-size: 150% 150%; background-clip: text; -webkit-background-clip: text; color: transparent !important; filter: saturate(0); animation: textGradient 5s linear infinite; text-shadow: none !important; } #loading-overlay[data-v-173ec149] .spinner[data-v-173ec149] { border-width: 0.375rem; color: #fff; height: 4rem; width: 4rem; } #loading-overlay-container[data-v-173ec149] { background-color: #000; height: 100%; justify-content: center; width: 100%; } /* Modal Dialog */ .modal [type=button], .modal [type=submit] { margin-left: 0.5rem; filter: invert(1); } .modal-header { background: #000; border: 1px solid #fff; align-items: center; border-bottom: 1px solid #dee2e6; border-top-left-radius: 25px; border-top-right-radius: 25px; } .modal-body { background: #000; border: 1px solid #fff; color: #fff; position: relative; border-bottom-left-radius: 25px; border-bottom-right-radius: 25px; } .modal-content { border-radius: 25px; box-shadow: 0 0 10px #fff; } .modal-open { padding-right: 0px !important; } .modal-backdrop { height: 100%; width: 100%; } .modal.fade.show { padding-right: 80px !important; padding-left: 80px !important; } .alert-danger, .alert-modal.failure .modal-content, .default-error-page .exception { background-color: #000; border: 5px solid #f11; border-radius: 50px; color: #fff; } .fade { transition: opacity .15s linear; backdrop-filter: blur(5px); } /* Media & Gradient */ @keyframes textGradient { 0% { background-position: 0% 50%; } 100% { background-position: 1200% 50%; } } #placeholder-pic[data-v-9c1e68e2] { display: block; opacity: 0; margin: auto; } #placeholder-msg[data-v-9c1e68e2] { color: #0aa; text-align: center; } #content-placeholder[data-v-9c1e68e2] { background-image: url(https://snipboard.io/8kBudo.jpg); background-repeat: no-repeat; background-size: contain; background-position: center; } `; document.head.appendChild(bodyStyle); } function applyNewFonts() { const fontStyles = document.createElement('style'); fontStyles.id = 'import-fonts'; fontStyles.textContent = ` /* Import Fonts Stylesheet */ /* Imported Fonts: --- Bad Script --- --- Comfortaa --- --- Fira Sans --- --- Marmelad --- --- Montserrat --- --- Neucha --- --- Play --- --- Roboto --- --- Sofia Sans --- --- Ububntu --- */ /* Powered by Google Fonts API */ @import url('https://fonts.googleapis.com/css2?family=Bad+Script&family=Comfortaa&family=Fira+Sans&family=Marmelad&family=Montserrat&family=Neucha&family=Play&family=Roboto:ital@1&family=Sofia+Sans&family=Ubuntu&display=swap');`; document.head.appendChild(fontStyles); } function replaceTableHeading() { const titleElement = document.querySelector('div.container-fluid span.badge.bg-success'); const tableHeading = document.querySelector('#log-table-heading'); if (titleElement && tableHeading) { tableHeading.textContent += ' - ' + titleElement.textContent; }; } function replaceSpinnerImage() { const spinnerElement = document.querySelector('div.spinner.spinner-border[data-v-173ec149=""]'); if (spinnerElement) { const gifImageUrl = 'https://rb.ru/media/upload_tmp/2018/d1.gif'; const gifImage = document.createElement('img'); gifImage.id = 'replaced-loading-image'; gifImage.src = gifImageUrl; gifImage.style.width = '160px'; gifImage.style.height = '120px'; gifImage.style.filter = 'saturate(0)'; spinnerElement.replaceWith(gifImage); } } function addListenersAttributes() { const inputNameElement = document.querySelector('#playerNameInput'); const transactionData = document.querySelector('#log-filter-form__transaction-desc'); const playerIdElement = document.querySelector('#log-filter-form__player-id'); const playerIpElement = document.querySelector('#log-filter-form__player-ip'); const transactionAmountElement = document.querySelector('#log-filter-form__transaction-amount'); const transactionAfterElement = document.querySelector('#log-filter-form__balance-after'); const otherElement = document.querySelector('.btn.btn-primary'); inputNameElement.addEventListener('keydown', function (event) { if (event.key === 'Enter' || event.key === 'Tab') { const otherElement = document.querySelector('.btn.btn-primary'); otherElement.click(); } }); transactionData.addEventListener('keydown', function (event) { if (event.key === 'Enter' || event.key === 'Tab') { event.preventDefault(); otherElement.click(); }; }); playerIdElement.setAttribute('autocomplete', 'off'); playerIpElement.setAttribute('autocomplete', 'off'); transactionAmountElement.setAttribute('autocomplete', 'off'); transactionAfterElement.setAttribute('autocomplete', 'off'); } function setPageTitle() { const titleElement = document.querySelector('div.container-fluid span.badge.bg-success'); document.title += ' - ' + titleElement.textContent; } function scriptInit() { setPageTitle(); replaceTableHeading(); applyNewFonts(); applyBodyStyle(); replaceSpinnerImage(); applySavedColors(); const styleButton = createStyleButton('div.container-fluid span.badge.bg-success'); const styleContainerBg = createStyleContainerBg('main'); applyMenuStyles(); addListenersAttributes(); } })();