您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add role filtering to drafter.gg
// ==UserScript== // @name drafter.gg role filtering // @description Add role filtering to drafter.gg // @namespace Violentmonkey Scripts // @version 1.2 // @license MIT // @grant none // @author Driky // @run-at document-end // @include https://drafter.gg* // @include https://drafter.gg/simulation // @include https://drafter.gg/draft // ==/UserScript== const grid_selector = "html body div#root div div div.MuiGrid-root.MuiGrid-container.MuiGrid-spacing-xs-2 div.MuiGrid-root.MuiGrid-item.MuiGrid-grid-xs-6 div.MuiGrid-root.MuiGrid-container.MuiGrid-spacing-xs-2"; const center_part_selector = "html body div#root div div div.MuiGrid-root.MuiGrid-container.MuiGrid-spacing-xs-2 div.MuiGrid-root.MuiGrid-item.MuiGrid-grid-xs-6"; const TOP = 0, JUNGLE = 1, MID = 2, BOT = 3, SUPP = 4, UNKNOWN = -1, ALL = 5; const ALL_ID = "all_button", TOP_ID = "top_button", JUNGLE_ID = "jungle_button", MID_ID = "mid_button", BOT_ID = "bot_button", SUPP_ID = "supp_button"; let champion_nodes_by_role = new Map() champion_nodes_by_role.set(TOP, new Map()); champion_nodes_by_role.set(JUNGLE, new Map()); champion_nodes_by_role.set(MID, new Map()); champion_nodes_by_role.set(BOT, new Map()); champion_nodes_by_role.set(SUPP, new Map()); champion_nodes_by_role.set(UNKNOWN, new Map()); function waitForElm(selector) { return new Promise(resolve => { if (document.querySelector(selector)) { return resolve(document.querySelector(selector)); } const observer = new MutationObserver(mutations => { if (document.querySelector(selector)) { observer.disconnect(); resolve(document.querySelector(selector)); } }); observer.observe(document.body, { childList: true, subtree: true }); }); } function getChampionRole(name){ switch (name) { case "Aatrox": case "Akali": case "Camille": case "Chogath": case "Darius": case "DrMundo": case "Fiora": case "Gangplank": case "Garen": case "Gnar": case "Gragas": case "Gwen": case "Illaoi": case "Irelia": case "Jax": case "Jayce": case "Kayle": case "Kennen": case "Kled": case "Lillia": case "Malphite": case "Mordekaiser": case "Nasus": case "Olaf": case "Ornn": case "Quinn": case "Renekton": case "Riven": case "Rumble": case "Sejuani": case "Sett": case "Shen": case "Shyvana": case "Singed": case "Sion": case "TahmKench": case "Teemo": case "Tryndamere": case "Urgot": case "Vayne": case "Volibear": case "Wukong": case "Yasuo": case "Yone": case "Yorick": return TOP; case "Amumu": case "Briar": case "Belveth": case "Diana": case "Ekko": case "Elise": case "Evelynn": case "Fiddlesticks": case "Graves": case "Hecarim": case "Ivern": case "JarvanIV": case "Karthus": case "KSante": case "Kayn": case "Khazix": case "Kindred": case "LeeSin": case "Lillia": case "MasterYi": case "Naafiri": case "Nidalee": case "Nocturne": case "Nunu": case "Pantheon": case "Poppy": case "Rammus": case "RekSai": case "Rengar": case "Sejuani": case "Shaco": case "Shyvana": case "Skarner": case "Taliyah": case "Talon": case "Trundle": case "Udyr": case "Vi": case "Viego": case "Volibear": case "Warwick": case "MonkeyKing": case "XinZhao": case "Zac": case "Zed": return JUNGLE; case "Ahri": case "Akali": case "Akshan": case "Anivia": case "Annie": case "AurelionSol": case "Azir": case "Cassiopeia": case "Corki": case "Ekko": case "Fizz": case "Galio": case "Gangplank": case "Heimerdinger": case "Irelia": case "Kassadin": case "Katarina": case "Leblanc": case "Lissandra": case "Lux": case "Malzahar": case "Neeko": case "Orianna": case "Qiyana": case "Ryze": case "Swain": case "Sylas": case "Syndra": case "Taliyah": case "Talon": case "TwistedFate": case "Veigar": case "Vex": case "Viktor": case "Vladimir": case "Xerath": case "Yasuo": case "Yone": case "Zed": case "Ziggs": case "Zoe": return MID; case "Aphelios": case "Ashe": case "Caitlyn": case "Draven": case "Ezreal": case "Jhin": case "Jinx": case "Kaisa": case "Kalista": case "KogMaw": case "Lucian": case "MissFortune": case "Nilah": case "Samira": case "Sivir": case "Tristana": case "Twitch": case "Varus": case "Vayne": case "Xayah": case "Yasuo": case "Zeri": case "Ziggs": return BOT; case "Alistar": case "Amumu": case "Ashe": case "Bard": case "Blitzcrank": case "Brand": case "Braum": case "Janna": case "Karma": case "Leona": case "Lulu": case "Lux": case "Maokai": case "Milio": case "MissFortune": case "Morgana": case "Nami": case "Nautilus": case "Pantheon": case "Pyke": case "Rakan": case "Rell": case "Renata": case "Senna": case "Seraphine": case "Sona": case "Soraka": case "Swain": case "Taric": case "Thresh": case "Velkoz": case "Xerath": case "Yuumi": case "Zilean": case "Zyra": return SUPP; default: console.log(`UNKNOW ${name}`); return UNKNOWN; } } function showOnlyChampionOfRole(role){ champion_nodes_by_role.forEach((champion_map, champion_map_key) => { champion_map.forEach((champion_element, champion_name_key) => { if(champion_element != undefined){ if(champion_map_key == role || role == ALL){ champion_element.style.display = ""; } else { champion_element.style.display = "none"; } } }); }); } function styleRoleElement(element, id, role, text) { element.id = id; element.style.flexBasis = "15%"; element.style.textAlign = "center"; element.style.backgroundColor = "grey" element.onclick = ()=>{showOnlyChampionOfRole(role)}; element.textContent = text; } function createRoleSelectionMenu(center_part_element){ let container = document.createElement("div"); container.style.display = "flex"; container.style.flexFlow = "row"; container.style.justifyContent = "space-evenly"; let all_button = document.createElement("div"); let top_button = document.createElement("div"); let jungle_button = document.createElement("div"); let mid_button = document.createElement("div"); let bot_button = document.createElement("div"); let supp_button = document.createElement("div"); styleRoleElement(all_button, ALL_ID, ALL, "ALL"); styleRoleElement(top_button, TOP_ID, TOP, "TOP"); styleRoleElement(jungle_button, JUNGLE_ID, JUNGLE, "JUNGLE"); styleRoleElement(mid_button, MID_ID, MID, "MID"); styleRoleElement(bot_button, BOT_ID, BOT, "BOT"); styleRoleElement(supp_button, SUPP_ID, SUPP, "SUPP"); container.append(all_button); container.append(top_button); container.append(jungle_button); container.append(mid_button); container.append(bot_button); container.append(supp_button); center_part_element.insertBefore(container, center_part_element.firstChild); } function buildChampDataStruct(champions_grid_element){ [...champions_grid_element.children].forEach((champion_element) => { let champion_name = champion_element.getElementsByTagName('a')[0].href; let champion_role; if(champion_name != "" && champion_name != null && champion_name != undefined) { champion_name = champion_name.replace("https://drafter.gg/","").trim(); champion_role = getChampionRole(champion_name); } else{ console.log(`Tried to get champion's name and got: ${champion_name}`); champion_role = UNKNOWN; } // console.log(`Adding ${champion_name} to ${champion_role}`); champion_nodes_by_role.get(champion_role).set(champion_name, champion_element); }); } waitForElm(grid_selector).then((champions_grid_element) => { waitForElm(center_part_selector).then((center_part_element) => { buildChampDataStruct(champions_grid_element); createRoleSelectionMenu(center_part_element); }); });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址