您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces Torn's pixel honor bar names with a larger, more legible font, while maintaining color outlines for staff roles and those that opt to display blue name.
// ==UserScript== // @name Torn: More Legible Player Names // @namespace http://tampermonkey.net/ // @version 2.4 // @description Replaces Torn's pixel honor bar names with a larger, more legible font, while maintaining color outlines for staff roles and those that opt to display blue name. // @author GingerBeardMan // @match https://www.torn.com/* // @grant none // @license GNU GPLv3 // ==/UserScript== (function () { 'use strict'; // Load Manrope font const fontLink = document.createElement('link'); fontLink.href = 'https://fonts.googleapis.com/css2?family=Manrope:wght@700&display=swap'; fontLink.rel = 'stylesheet'; document.head.appendChild(fontLink); // Inject styling const style = document.createElement('style'); style.textContent = ` .custom-honor-text { font-family: 'Manrope', sans-serif !important; font-weight: 700 !important; font-size: 12px !important; color: white !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; pointer-events: none !important; position: absolute !important; top: 50%; left: 0; transform: translateY(-50%); width: 100% !important; height: auto; display: flex !important; align-items: center; justify-content: center; text-align: center !important; line-height: 1 !important; margin: 0 !important; padding: 0 !important; z-index: 10 !important; } .honor-text-svg { display: none !important; } .outline-black { text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000 !important; } .outline-blue { text-shadow: -1px -1px 0 #310AF5, 1px -1px 0 #310AF5, -1px 1px 0 #310AF5, 1px 1px 0 #310AF5 !important; } .outline-red { text-shadow: -1px -1px 0 #ff4d4d, 1px -1px 0 #ff4d4d, -1px 1px 0 #ff4d4d, 1px 1px 0 #ff4d4d !important; } .outline-green { text-shadow: -1px -1px 0 #3B9932, 1px -1px 0 #3B9932, -1px 1px 0 #3B9932, 1px 1px 0 #3B9932 !important; } .outline-orange { text-shadow: -1px -1px 0 #ff9c40, 1px -1px 0 #ff9c40, -1px 1px 0 #ff9c40, 1px 1px 0 #ff9c40 !important; } .outline-purple { text-shadow: -1px -1px 0 #c080ff, 1px -1px 0 #c080ff, -1px 1px 0 #c080ff, 1px 1px 0 #c080ff !important; } `; document.head.appendChild(style); // Determine the outline style based on role function getOutlineClass(wrap) { if (wrap.classList.contains('admin')) return 'outline-red'; if (wrap.classList.contains('officer')) return 'outline-green'; if (wrap.classList.contains('moderator')) return 'outline-orange'; if (wrap.classList.contains('helper')) return 'outline-purple'; if (wrap.classList.contains('blue')) return 'outline-blue'; return 'outline-black'; } // Replace honor bar name with custom text function replaceHonorText() { document.querySelectorAll('.honor-text-wrap').forEach(wrap => { const sprite = wrap.querySelector('.honor-text-svg'); const existing = wrap.querySelector('.custom-honor-text'); if (sprite) sprite.style.display = 'none'; if (existing) return; const text = wrap.getAttribute('data-title') || wrap.getAttribute('aria-label') || wrap.innerText || ''; const cleaned = text.trim().toUpperCase(); if (!cleaned) return; const div = document.createElement('div'); div.className = `custom-honor-text ${getOutlineClass(wrap)}`; div.textContent = cleaned; wrap.appendChild(div); }); } // Run initially replaceHonorText(); // Watch for dynamic changes const observer = new MutationObserver(replaceHonorText); observer.observe(document.body, { childList: true, subtree: true }); })();