// ==UserScript== // @name LZT_Trophy // @namespace https://greasyfork.org/ru/users/1142494-llimonix // @version 0.14 // @description Отображение всех трофеев в профиле пользователя // @author llimonix // @match https://zelenka.guru/* // @match https://lolz.live/* // @icon https://cdn-icons-png.flaticon.com/512/2830/2830919.png // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { let pageCounter = $('.page_counter'); if (pageCounter.length > 0) { let hrefValue = pageCounter.attr('href'); let parts = hrefValue.replace('members/', '').split("/"); let value = parts[0]; let trophy; if (~hrefValue.indexOf("members/")) { value = `members/${value}`; } XenForo.ajax(`${value}/trophies`, {}).then(data => { trophy = data.templateHtml; let parser = new DOMParser(); trophy = parser.parseFromString(trophy, 'text/html'); let overlayScrollElements = $(trophy).find('.overlayScroll'); let totalCount = overlayScrollElements.length; if (totalCount > 1) { overlayScrollElements.first().remove(); } let trophies = $(trophy).find('.trophy'); let trophiesList = trophies.map((_, trophy) => trophy.id).get(); let trophiesstyle = $(trophy).find('.trophy-icon'); let trophystyleList = trophiesstyle.map((_, trophy) => { const style = trophy.style.cssText; const match = style.match(/url\((.*?)\)/); return match ? match[1].replace(/['"]/g, '') : null; }).get(); // Функция для форматирования чисел function formatNumber(num) { if (num >= 1000) { // Округляем до одного знака после запятой и добавляем K return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'K'; } return num.toString(); } // Извлекаем счетчики из названий трофеев let trophyCountersMap = {}; $(trophy).find('.trophy').each(function() { let trophyId = $(this).attr('id'); let titleText = $(this).find('.title').text().trim(); let counterMatch = titleText.match(/—\s*([\d\s]+)/); if (counterMatch) { let numberStr = counterMatch[1].replace(/\s+/g, ''); let number = parseInt(numberStr); if (!isNaN(number) && number !== 1) { trophyCountersMap[trophyId] = formatNumber(number); } } }); let titletrophy = $(trophy).find('.title'); let titleTexttrophyList = titletrophy.map((_, trophy) => { let fullText = trophy.textContent.trim(); let cleanText = fullText.split(' — ')[0].trim(); return cleanText; }).get(); let trophyLinks = {}; for (let i = 0; i < titleTexttrophyList.length; i++) { let element = titleTexttrophyList[i]; $(trophy).find('.title:contains(' + element + ')').each(function () { let href = $(this).closest('.trophy').find('.trophy-icon').attr('href'); if (href) { trophyLinks[element] = href; } else { trophyLinks[element] = "None"; } }); } let htmlTrophy = "