您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Based of ZeDoCaixao's script; will flip jesterrace's #Trading [Have] & [Want] for TheLounge instances.
// ==UserScript== // @name GGn TheLounge Trading Swap // @description Based of ZeDoCaixao's script; will flip jesterrace's #Trading [Have] & [Want] for TheLounge instances. // @namespace https://gazellegames.net // @version 2.0 // @match https://yourTheLounge.url/* // @grant none // @icon https://gazellegames.net/favicon.ico // @supportURL https://github.com/freshwater/userscripts // ==/UserScript== (function() { 'use strict'; function flipTradeContent(contentElement) { const nodes = Array.from(contentElement.childNodes); let wantStart = -1; let haveStart = -1; for (let i = 0; i < nodes.length; i++) { const node = nodes[i]; const text = node.textContent || ""; if (wantStart === -1 && /\[WANT\]/i.test(text)) { wantStart = i; } if (haveStart === -1 && /\[HAVE\]/i.test(text)) { haveStart = i; break; } } if (wantStart === -1 || haveStart === -1 || wantStart >= haveStart) { return false; } const beforeWant = nodes.slice(0, wantStart); const wantSection = nodes.slice(wantStart, haveStart); const haveSection = nodes.slice(haveStart); const spaceNode = document.createTextNode(' '); const newContent = [ ...beforeWant, ...haveSection, spaceNode, ...wantSection ]; while (contentElement.firstChild) { contentElement.removeChild(contentElement.firstChild); } newContent.forEach(node => { contentElement.appendChild(node); }); return true; } function processMessageElement(element) { const userElem = element.querySelector( '.user, .username, .sender, .nick, .author, .by' ); if (!userElem) return; const username = userElem.textContent.trim(); if (!username.includes('jesterrace')) return; const contentElem = element.querySelector( '.content, .text, .message, .msg, .body' ); if (!contentElem) return; flipTradeContent(contentElem); } function handleNewMessages(mutations) { for (const mutation of mutations) { for (const node of mutation.addedNodes) { if (node.nodeType !== 1) continue; if (node.matches('.message, .msg, .chat-line')) { processMessageElement(node); } const messages = node.querySelectorAll('.message, .msg, .chat-line'); messages.forEach(processMessageElement); } } } const observer = new MutationObserver(handleNewMessages); observer.observe(document.body, { childList: true, subtree: true }); document.querySelectorAll('.message, .msg, .chat-line').forEach(processMessageElement); })();