您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在旅法师营地网站上,显示万智套牌的一些有用的信息。https://www.iyingdi.com/web/tools/mtg/decks
// ==UserScript== // @name 旅法师营地 万智牌助手 中英转换 造价分析 样式自定义 // @name:en more info about mtg decks on iyingdi.com // @namespace https://greasyfork.org/zh-CN/scripts/406297-%E6%97%85%E6%B3%95%E5%B8%88%E8%90%A5%E5%9C%B0-%E4%B8%87%E6%99%BA%E7%89%8C%E5%8A%A9%E6%89%8B-%E4%B8%AD%E8%8B%B1%E8%BD%AC%E6%8D%A2-%E9%80%A0%E4%BB%B7%E5%88%86%E6%9E%90-%E6%A0%B7%E5%BC%8F%E8%87%AA%E5%AE%9A%E4%B9%89 // @version 0.5 // @description 在旅法师营地网站上,显示万智套牌的一些有用的信息。https://www.iyingdi.com/web/tools/mtg/decks // @description:en Show more info about decks which are on https://www.iyingdi.com/web/tools/mtg/decks // @author acbetter // @run-at document-start // @require https://unpkg.com/jquery@3/dist/jquery.min.js // @require https://unpkg.com/ajax-hook@2/dist/ajaxhook.min.js // @match https://www.iyingdi.com/web/tools/mtg/decks/deckdetail/* // @match https://www.iyingdi.com/web/tools/mtg/userdecks/deckdetail/* // @grant none // @license GPL-v3 // ==/UserScript== /* global $ */ // 如有 Bug 请在 NGA 论坛我的帖子进行反馈。 // by 一个爱打牌的程序员。私人脚本可联系我付费定制,QQ:610915518 var tt; var tttime = 1000; var jsonDeck = {}; var isEnglish = false; var dictCname = {}; var dictEname = {}; $(window).on('load', function() { // tt = setTimeout(function() { loopFunction(); }, 1000); }); function ffN(nuum){ // formatNumber return (" " + nuum).slice(-2); } function loopFunction() { clearTimeout(tt); tttime = 1000; isEnglish = false; dictCname = {}; dictEname = {}; if ($('.formatName').length){ console.log('旅法师营地助手: 套牌加载成功', jsonDeck); showRarityInfo(); } else { tttime = tttime * 2; if (tttime < 20000) { console.log('旅法师营地助手: 套牌加载失败,在 x 秒后会重新加载...'); tt = setTimeout(function() { loopFunction(); }, 3000); } else { console.log('旅法师营地助手: 套牌加载失败,而且已超时,不再会重新加载。'); } } } function showRarityInfo() { // var rarityInfo = JSON.parse(jsonDeck.deck.rarityInfo) var rarityInfo = {'Land' : 0, 'Rare Land' : 0, 'Common' : 0, 'Uncommon' : 0, 'Rare' : 0, 'Mythic Rare' : 0} if (jsonDeck.cards.hasOwnProperty('主牌')){ for (const [keey, valuees] of Object.entries(jsonDeck.cards['主牌'])) { for (const valuee of valuees){ if (valuee[1].mainType == '地' && valuee[1].rarity == 'Rare'){ rarityInfo['Rare Land'] += parseInt(valuee[0]); } else { rarityInfo[valuee[1].rarity] += parseInt(valuee[0]); } dictCname[valuee[1].ename] = valuee[1].cname; dictEname[valuee[1].cname] = valuee[1].ename; } } } var rarityInfoS = {'Land' : 0, 'Rare Land' : 0, 'Common' : 0, 'Uncommon' : 0, 'Rare' : 0, 'Mythic Rare' : 0} // 备牌 if (jsonDeck.cards.hasOwnProperty('备牌')){ for (const [keey, valuees] of Object.entries(jsonDeck.cards['备牌'])) { for (const valuee of valuees){ if (valuee[1].mainType == '地' && valuee[1].rarity == 'Rare'){ rarityInfoS['Rare Land'] += parseInt(valuee[0]); } else { rarityInfoS[valuee[1].rarity] += parseInt(valuee[0]); } dictCname[valuee[1].ename] = valuee[1].cname; dictEname[valuee[1].cname] = valuee[1].ename; } } } // font-variant-numeric: tabular-nums; var rarityInfoHtml = '<div class="player" style="margin-top: 12px;">卡牌构成:' + ffN(rarityInfo.Land) + 'BL ' + ffN(rarityInfo['Rare Land']) + 'RL '+ ffN(rarityInfo.Common) + 'C '+ ffN(rarityInfo.Uncommon) + 'U ' + ffN(rarityInfo.Rare) + 'R ' + ffN(rarityInfo['Mythic Rare']) + 'MR</div>' var rarityInfoSHtml = '<div class="player" style="margin-top: 12px;">备牌构成:' + ffN(rarityInfoS.Land) + 'BL '+ ffN(rarityInfoS['Rare Land']) + 'RL '+ ffN(rarityInfoS.Common) + 'C '+ ffN(rarityInfoS.Uncommon) + 'U ' + ffN(rarityInfoS.Rare) + 'R ' + ffN(rarityInfoS['Mythic Rare']) + 'MR</div>' $('.player').after(rarityInfoHtml + rarityInfoSHtml); var showEnglishNameHtml = '<button id="changeNameButton" type="button" style="width:100%;height:32px;background:#4d4f73;border-radius:2px;text-align:center;cursor:pointer;margin-top:10px;font-size:14px;line-height:30px;color:#fff;overflow:hidden">文/A 卡牌名称中英替换</button>'; $('.action-box').after(showEnglishNameHtml); $("#changeNameButton").on('click', function() { changeName(); }); } function changeName() { var dictXname = dictEname; if (isEnglish) { dictXname = dictCname; } $('div[class="name inline-block"]').each(function(){ $(this).text(dictXname[$(this).text()]); }); isEnglish = !isEnglish; console.log('旅法师营地助手: 卡牌名称中英替换成功'); } ah.proxy({ onRequest: (config, handler) => { handler.next(config) }, onError: (err, handler) => { handler.next(err) }, onResponse: (response, handler) => { if (response.config.url.toString().includes('format=json')){ console.log('旅法师营地助手: 读取套牌数据', response) // jsonDeck = response.response jsonDeck = JSON.parse(response.response) tt = setTimeout(function() { loopFunction(); }, 1500); } handler.next(response) } })