您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Crafting tab organizer for SF
当前为
// ==UserScript== // @name Crafting Tab Organizer // @namespace http://tampermonkey.net/ // @version 0.1 // @author Alucardeck // @description Crafting tab organizer for SF // @match https://play.soulforged.net/ // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; var craftMap = {}; craftMap["Crafting"] = "375c63,11b698,1bda06,0f664a,ce8de9,fcf7c9"; craftMap["Crafting (Tools)"] = "fd63c7,3ca9dd,08639e,2affab,babb47,c30017,a0b77a,068720"; craftMap["Crafting (Furniture)"] = "2078f7,e0f499"; craftMap["Cooking"] = "7a1efc,5444b8,a6e350"; craftMap["Leatherworking"] = "8090f2"; craftMap["Tailoring"] = ""; craftMap["Farming"] = "286daf,c01bcc"; craftMap["Carpentry"] = "dcc180"; craftMap["Doctoring"] = "a929f9"; craftMap["Doctoring (Butcher)"] = "74c20f,a2636a,dc3986,dc4872,3c77c0"; craftMap["Not Mapped"] = ""; var categoryOrder = Object.keys(craftMap).sort(); function organizeCrafts() { // check if tab is active if (!getCraftIconTab().classList.contains("active")) return; // header var mainBlock = document.querySelector("#app > div.main-component > div > div.controls > div > div > div > div.tab-contents > div > div > div > div > div:nth-child(1)"); var header = mainBlock.firstChild; mainBlock.removeChild(header); var craftNodeList = mainBlock.querySelectorAll("div > div.craft-list-item"); var mappedItems = {}; [].forEach.call(craftNodeList, craft => { var block = craft.parentElement; var code = getCode(craft); var category = getCategory(code); if (category == "Not Mapped") { appendCodeToButton(craft, code); } if (!mappedItems[category]) mappedItems[category] = []; mappedItems[category].push(block); mainBlock.removeChild(block); }); for (var category of categoryOrder) { if (mappedItems[category]) { var categoryHeader = header.cloneNode(true); categoryHeader.firstChild.firstChild.innerHTML = category; mainBlock.appendChild(categoryHeader); for (var item of mappedItems[category]) { mainBlock.appendChild(item); } } } } function appendCodeToButton(craft, code) { var btn = craft.querySelector("div > div.buttons"); var div = document.createElement('div'); div.innerText = code; btn.appendChild(div); } function getCode(craft) { return craft.firstChild.firstChild.firstChild.firstChild.firstChild.style.backgroundImage.substr(14, 6); } function getCategory(code) { for (var category of categoryOrder) { if (craftMap[category].includes(code)) { return category; } } return "Not Mapped"; } function getCraftIconTab() { return document.querySelector("#app > div.main-component > div > div.controls > div > div > div > div.tab-headers > div.tab-header:nth-child(4)"); } document.addEventListener("click", () => organizeCrafts()); })();