您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Removes the Mug Button on your attack pages
// ==UserScript== // @name Torn Mug-Be-Gone (Desktop & Mobile) // @namespace http://tampermonkey.net/ // @version 1.5 // @description Removes the Mug Button on your attack pages // @author HeyItzWerty [3626448] // @match https://www.torn.com/loader.php?sid=attack* // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // ==/UserScript== (function() { 'use strict'; // --- SINGLETON CHECK --- if (document.getElementById('mug-be-gone-wrapper')) { return; } // --- Configuration --- const DEFAULT_TOP = '100px'; const DEFAULT_LEFT = '20px'; const WRAPPER_SIZE = 90; // The new, larger invisible touch area size in pixels const BUTTON_SIZE = 70; // The visible button size in pixels // --- Create Elements --- const wrapper = document.createElement('div'); wrapper.id = 'mug-be-gone-wrapper'; const toggleButton = document.createElement('div'); toggleButton.id = 'mug-toggle-button'; toggleButton.textContent = 'Mug'; wrapper.appendChild(toggleButton); document.body.appendChild(wrapper); // --- Retrieve Saved Settings --- let buttonTop = GM_getValue('buttonTop', DEFAULT_TOP); let buttonLeft = GM_getValue('buttonLeft', DEFAULT_LEFT); // --- ON-LOAD POSITION VALIDATION --- function validateAndSetPosition(topStr, leftStr) { let top = parseInt(topStr, 10); let left = parseInt(leftStr, 10); const viewportWidth = window.innerWidth; const viewportHeight = window.innerHeight; if (left < 0) left = 0; if (left > viewportWidth - WRAPPER_SIZE) left = viewportWidth - WRAPPER_SIZE; if (top < 0) top = 0; if (top > viewportHeight - WRAPPER_SIZE) top = viewportHeight - WRAPPER_SIZE; wrapper.style.top = `${top}px`; wrapper.style.left = `${left}px`; } validateAndSetPosition(buttonTop, buttonLeft); let mugDisabled = GM_getValue('mugDisabled', false); function updateButtonState() { if (mugDisabled) { toggleButton.classList.add('disabled'); toggleButton.classList.remove('enabled'); } else { toggleButton.classList.add('enabled'); toggleButton.classList.remove('disabled'); } } updateButtonState(); // --- Unified Drag-and-Drop / Click Logic --- let isDragging = false; let hasDragged = false; let offsetX, offsetY; function dragStart(e) { if (e.type === 'touchstart') e.preventDefault(); isDragging = true; hasDragged = false; wrapper.style.cursor = 'grabbing'; const clientX = e.type === 'touchstart' ? e.touches[0].clientX : e.clientX; const clientY = e.type === 'touchstart' ? e.touches[0].clientY : e.clientY; offsetX = clientX - wrapper.getBoundingClientRect().left; offsetY = clientY - wrapper.getBoundingClientRect().top; } function dragMove(e) { if (!isDragging) return; e.preventDefault(); hasDragged = true; const clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; const clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY; const wrapperWidth = wrapper.offsetWidth; const wrapperHeight = wrapper.offsetHeight; const viewportWidth = window.innerWidth; const viewportHeight = window.innerHeight; let newLeft = clientX - offsetX; let newTop = clientY - offsetY; if (newLeft < 0) newLeft = 0; if (newLeft > viewportWidth - wrapperWidth) newLeft = viewportWidth - wrapperWidth; if (newTop < 0) newTop = 0; if (newTop > viewportHeight - wrapperHeight) newTop = viewportHeight - wrapperHeight; wrapper.style.left = `${newLeft}px`; wrapper.style.top = `${newTop}px`; } function dragEnd(e) { if (!isDragging) return; isDragging = false; wrapper.style.cursor = 'grab'; if (hasDragged) { GM_setValue('buttonTop', wrapper.style.top); GM_setValue('buttonLeft', wrapper.style.left); } else { mugDisabled = !mugDisabled; GM_setValue('mugDisabled', mugDisabled); updateButtonState(); findAndHideMugButton(); } } wrapper.addEventListener('mousedown', dragStart); document.addEventListener('mousemove', dragMove); document.addEventListener('mouseup', dragEnd); wrapper.addEventListener('touchstart', dragStart, { passive: false }); document.addEventListener('touchmove', dragMove, { passive: false }); document.addEventListener('touchend', dragEnd); // --- Function to Find and Hide the Mug Button --- function findAndHideMugButton() { if (!mugDisabled) return; const allButtons = document.querySelectorAll('button'); for (const btn of allButtons) { if (btn.textContent.trim().toLowerCase() === 'mug') { btn.style.setProperty('display', 'none', 'important'); break; } } } const observer = new MutationObserver(findAndHideMugButton); observer.observe(document.body, { childList: true, subtree: true }); // --- Chat Command to Reset Button Position --- document.addEventListener('keydown', (e) => { if (e.key === 'Enter' && e.target && e.target.tagName === 'INPUT' && typeof e.target.id === 'string' && e.target.id.includes('chat-input')) { if (e.target.value.trim() === '/mugreset') { e.preventDefault(); e.target.value = ''; validateAndSetPosition(DEFAULT_TOP, DEFAULT_LEFT); GM_setValue('buttonTop', DEFAULT_TOP); GM_setValue('buttonLeft', DEFAULT_LEFT); alert('Mug-Be-Gone button position has been reset!'); } } }); // --- Styles --- GM_addStyle(` #mug-be-gone-wrapper { position: fixed !important; width: ${WRAPPER_SIZE}px !important; height: ${WRAPPER_SIZE}px !important; z-index: 9999 !important; border-radius: 50% !important; cursor: grab !important; display: flex !important; justify-content: center !important; align-items: center !important; background-color: transparent !important; } #mug-toggle-button { width: ${BUTTON_SIZE}px !important; height: ${BUTTON_SIZE}px !important; /* <-- THIS WAS THE TYPO. IT IS NOW FIXED. */ background-color: #333 !important; color: white !important; border-radius: 50% !important; display: flex !important; justify-content: center !important; align-items: center !important; font-size: 18px !important; font-weight: bold !important; box-shadow: 0 0 10px 3px transparent !important; transition: box-shadow 0.3s ease !important; user-select: none !important; -webkit-user-select: none !important; } #mug-toggle-button.enabled { box-shadow: 0 0 15px 5px #0f0 !important; /* Green */ } #mug-toggle-button.disabled { box-shadow: 0 0 15px 5px #f00 !important; /* Red */ } `); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址