您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Export a table of all your cards
// ==UserScript== // @name Idle-Pixel TCG Exporter // @namespace luxferre.dev // @version 1.0.0 // @description Export a table of all your cards // @author Lux-Ferre // @license MIT // @match *://idle-pixel.com/login/play* // @grant none // @require https://greasyfork.org/scripts/441206-idlepixel/code/IdlePixel+.js?anticache=20220905 // @require https://greasyfork.org/scripts/491983-idlepixel-plugin-paneller/code/IdlePixel%2B%20Plugin%20Paneller.js?anticache=20241218 // ==/UserScript== (function() { 'use strict'; class TCGExport extends IdlePixelPlusPlugin { constructor() { super("tcg_export", { about: { name: GM_info.script.name, version: GM_info.script.version, author: GM_info.script.author, description: GM_info.script.description } }) this.card_data = {} } onLogin() { this.createModal() Paneller.registerPanel("tcg_export", "Export TCG to Clipboard", IdlePixelPlus.plugins.tcg_export.export_click) } onMessageReceived(data) { if (!data.startsWith("REFRESH_TCG=")){return} this.card_data = {} const input = data.slice(12) const values = input.split("~"); for (let i = 0; i < values.length; i += 3) { if (i + 2 < values.length) { const name = values[i + 1]; const holo = values[i + 2].toLowerCase() === "true" if (!(name in this.card_data)) { this.card_data[name] = { base: 0, holo: 0 } } if(holo){ this.card_data[name].holo += 1 } else { this.card_data[name].base += 1 } } } } createModal(){ const modalString = ` <div id="tcg_export_modal" class="modal fade" data-bs-theme="dark" role="dialog" tabindex="-1""> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-body" style="overflow: hidden"> <div id="tcg_export_response" class="text-center" style="color: white;"></div> </div> </div> </div> </div> ` const modalElement = $.parseHTML(modalString) $(document.body).append(modalElement) } export_click(){ IdlePixelPlus.sendMessage("RFRESH_TCG_CLIENT") setTimeout(() => { IdlePixelPlus.plugins.tcg_export.export() }, 3000) } export(){ let csv = `id,base,holo\n` for (const [key, value] of Object.entries(this.card_data)) { const new_row = `${key},${value.base},${value.holo}\n` csv += new_row } this.copy_to_clipboard(csv) } copy_to_clipboard(text) { navigator.clipboard.writeText(text).then(() => { $("#tcg_export_response").text("Text copied to clipboard!") $("#tcg_export_modal").modal("show") }).catch(err => { $("#tcg_export_response").text(`Error copying text: ${err}`) $("#tcg_export_modal").modal("show") }); } } const plugin = new TCGExport(); IdlePixelPlus.registerPlugin(plugin); })();