在旅法师营地网站上,显示万智套牌的一些有用的信息。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)
}
})