您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
宝可梦卡牌模拟器PTCG-SIM(https://ptcgsim.online)的简单汉化工具
// ==UserScript== // @name PTCG-SIM汉化 // @match *://*ptcgsim.online/* // @grant none // @version 1.3.5 // @author akatsukikyoko // @description 宝可梦卡牌模拟器PTCG-SIM(https://ptcgsim.online)的简单汉化工具 // @license MIT // @namespace Violentmonkey Scripts // ==/UserScript== var allNodes = document.body.querySelectorAll('*') var allNodeArr = Array.from(allNodes) var textObj = { //功能 "Attack": "招式", "Pass": "跳过", "Set Up": "开始", "Reset": "重开", "Set Up Both": "双方开始", "Reset Both": "双方重开", "+Turn":"+回合", "Coin":"硬币", "Options":"设置", "Online Multiplayer Mode":"在线多人模式", "Generate":"建房", " Join Room ":"加入房间", "Import":"导入", "Settings":"设置", "Dark mode":"深色模式", "Hide containers":"隐藏分区", "Watch Tutorial":"查看教程", "Upload File":"文件上传", "Change Card Back":"更换卡背", //介绍文本 "Welcome to PTCG-sim!":"欢迎来到PTCG-sim!", //说明 "Move card...":"移动卡牌", "to Hand ":"到手牌", "to Discard ":"到弃牌区", "to Bench ":"到备战区", "to Active ":"到战斗场", "to Stadium ":"到竞技场", "to Lost Zone ":"到放逐区", "to Prizes ":"到奖赏卡区", "to Board ":"到展示区", "to Deck (top) ":"到牌库(顶端)", "to Deck (bottom) ":"到牌库(底)", "to Deck (switch) ":"到牌库(任意)", "to Deck (shuffle)":"到牌库(洗牌)", "Shuffle deck":"洗切牌库", "View top card(s)":"看牌库顶", "View bottom card(s)":"看牌库底", "View":"查看", "Hand":"手牌", "Discard hand":"丢弃手牌", "Shuffle hand into deck ":"洗回牌库", "Shuffle hand to bottom ":"洗切手牌并放到牌库底", "Playboard":"玩家展示区", "Discard all":"丢弃全部", "Move all to hand":"全部加入手牌", "Shuffle all into deck":"全部洗回牌库", "Card actions":"卡牌操作", "Attach ":"附加", "Evolve ":"进化", "View ":"查看", "Toggle ability/Use stadium":"发动特性/使用竞技场", "Damage counter":"伤害指示物", "Increase ":"增加", "Decrease ":"减少", "Remove ":"移除", "Special condition":"特殊状态", "Add/Toggle":"增加/标记", "Remoce":"移除", "Rotate card(s)":"旋转卡片", "Rotate Pokémon BREAK ":"旋转宝可梦BREAK", "Look/cover card (only yourself)":"查看/覆盖卡牌(只有自己)", "Hide card (both players)":"覆盖卡牌(双方都看不到)", "Reveal card (both players)":"翻开卡牌(双方)", "Put face-down card in active":"将卡牌反面朝上移入战斗场", "Change type...":"改变类型", "to Tool ":"为道具", "to Energy ":"为能量", "to Pokémon ":"为宝可梦", "General ":"通用", "Set up ":"开始", "Reset ":"重开", "Start turn ":"回合开始", "Flip coin ":"硬币", "Flip board ":"换向", "Announce mulligan ":"重抽(开始阶段无基础)", "Close popups ":"关闭弹窗", "Toggle ability/effect":"使用特性/效果", "Reveal/hide card":"翻开/盖住卡牌", //二级菜单 "Clear battle log":"清理战斗记录", "Export battle log":"导出战斗记录", "Confirm":"确认", "Undo":"撤销", "Cancel":"取消", "Save":"保存", "Shuffle deck":"洗牌", "Draw card(s)":"摸牌(复数)", "View top card(s)":"查看牌库顶的牌(复数)", "View bottom card(s)":"查看牌库底的牌(复数)", "Move card... ":"移动卡牌...", "to Hand":"到手牌", "to Discard":"到弃牌区", "to Bench":"到备战区", "to Active":"到战斗场", "to Stadium":"到竞技场", "to Lost Zone":"到放逐区", "to Prizes":"到奖赏卡区", "to Board":"到展示区", "to Deck (top)":"到牌库(顶端)", "to Deck (bottom)":"到牌库(底)", "to Deck (switch)":"到牌库(任意)", "to Deck (shuffle)":"到牌库(洗牌)", "Change type...\n":"改变类型", "to Energy":"能量", "to Tool":"道具", "to Pokémon":"宝可梦", "Hand":"手牌", "Prizes":"奖赏卡", "Deck":"牌库", "Playboard":"展示区", "Toggle ability/effect":"标记特性/效果使用", "Damage counter":"伤害指示物", "Shuffle prizes":"洗切奖赏卡", "Reveal/hide prizes":"展示/隐藏奖赏卡", "Look/cover prizes":"查看/盖上奖赏卡(自己)", "Move card...":"移动卡牌...", "Discard hand":"丢弃手牌", "Shuffle hand into deck":"手牌洗入牌库", "Shuffle hand to bottom":"手牌洗入牌堆底", "Reveal/hide hand":"展示/隐藏手牌", "Reveal/hide random card":"展示/隐藏随机卡牌", "Special condition":"特殊状态", "Add/Toggle ":"增加标记", "Rotate BREAK ":"旋转BREAK", "Undo ":"撤销", //Other "Shuffle":"洗牌", "Close":"关闭", "Shuffle all to Deck":"全部洗回牌库", "Sort":"排序", "Discard all":"全部丢弃", "Shuffle all":"全部洗回牌库", "Lost Zone all":"全部放逐", 'Shuffle to bottom':'洗入牌堆底', "To Hand":"加入手牌", "Leave in play":"退出", "Looking at cards...":"查看卡牌", "Move attached cards":"移动附上的卡牌", "Alt (1P only)":"单人模式对手卡组", "Main":"主卡组", "Spectator mode":"观战模式", "Hide opponent's hand (1P mode)":"隐藏1p玩家手牌(1p模式)", } let chatboxContent; let chatboxContent_group; let intervalId = setInterval(function() { try{ chatboxContent_group = document.querySelectorAll('p.self-text, p.announcement, p.opp-text'); //console.log(chatboxContent_group); for (let i=0;i<chatboxContent_group.length;i++){ if(i>chatboxContent_group.length-15){ chatboxContent=chatboxContent_group[i].innerText; //简介 chatboxContent = chatboxContent.replace('PTCG-sim is an', ' PTCG-sim是一个'); chatboxContent = chatboxContent.replace('open-source', '开源'); chatboxContent = chatboxContent.replace(' tool to simulate card games. It supports single player and online multiplayer.', '的卡牌游戏模拟工具,它支持单人模式或双人在线模式'); chatboxContent = chatboxContent.replace('Import your decklist by clicking the “Import” tab above, then press “Set Up” to start a game.', '用 导入 菜单导入你的卡组,然后按 开始 来开始游戏'); chatboxContent = chatboxContent.replace('Drag or use keybinds (hold ', ' 长按'); chatboxContent = chatboxContent.replace(') to move cards. Happy testing!', '确认移动卡牌的快捷键,祝您测试愉快'); //翻译 chatboxContent = chatboxContent.replace(/ put/g, ' 将'); chatboxContent = chatboxContent.replace(/ lost-zoned/g, ' 放逐了'); chatboxContent = chatboxContent.replace(/ moved/g, ' 移动'); chatboxContent = chatboxContent.replace(/ move/g, ' 移动'); chatboxContent = chatboxContent.replace(/ tails/g, ' 反面'); chatboxContent = chatboxContent.replace(/ heads/g, ' 正面'); chatboxContent = chatboxContent.replace(/ flipped/g, ' 投出了'); chatboxContent = chatboxContent.replace(/ attacked/g, ' 使用招式'); chatboxContent = chatboxContent.replace(/ passed/g, ' 回合结束'); chatboxContent = chatboxContent.replace(/ deck/g, ' 牌库'); chatboxContent = chatboxContent.replace(/ discard/g, ' 弃牌区'); chatboxContent = chatboxContent.replace(/ stadium/g, ' 竞技场'); chatboxContent = chatboxContent.replace(/ hand/g, ' 手牌'); chatboxContent = chatboxContent.replace(/ in to/g, ' 到'); chatboxContent = chatboxContent.replace(/ card(s)/g, ' 卡牌'); chatboxContent = chatboxContent.replace(/ stopped/g, ' 停止'); chatboxContent = chatboxContent.replace(/ card/g, ' 卡牌'); chatboxContent = chatboxContent.replace(/ shuffled /g, ' 洗切'); chatboxContent = chatboxContent.replace(/ lost zone/g, ' 放逐区'); chatboxContent = chatboxContent.replace(/ prizes/g, ' 奖赏卡'); chatboxContent = chatboxContent.replace(/ bench/g, ' 备战区'); chatboxContent = chatboxContent.replace(/ board/g, ' 展示区'); chatboxContent = chatboxContent.replace(/ drew for turn/g, ' 回合开始抽牌'); chatboxContent = chatboxContent.replace(/ attached/g, ' 附上'); chatboxContent = chatboxContent.replace(/ looked at /g, ' 查看了'); chatboxContent = chatboxContent.replace(/ of /g, ''); chatboxContent = chatboxContent.replace(/ card /g, ' 卡牌'); chatboxContent = chatboxContent.replace(/ top /g, ' 在上方的'); chatboxContent = chatboxContent.replace(/ in to /g, ' 加入'); chatboxContent = chatboxContent.replace(/ setup/g, ' 开始'); chatboxContent = chatboxContent.replace(/ hid /g, ' 隐藏了'); chatboxContent = chatboxContent.replace(/ evolved/g, ' 进化'); chatboxContent = chatboxContent.replace(/ drew/g, ' 抽'); chatboxContent = chatboxContent.replace(/ bottom/g, ' 底下'); chatboxContent = chatboxContent.replace(/ and/g, ' 并'); chatboxContent = chatboxContent.replace(/ their/g, ' 他的'); chatboxContent = chatboxContent.replace(/ used/g, ' 使用了'); chatboxContent = chatboxContent.replace(/ ability/g, ' 特性'); chatboxContent = chatboxContent.replace(/ into/g, ' 到'); chatboxContent = chatboxContent.replace(/ revealed /g, ' 翻开'); chatboxContent = chatboxContent.replace(/ in /g, ' 在'); chatboxContent = chatboxContent.replace(/Blue /g, '蓝色方 '); chatboxContent = chatboxContent.replace(/Red /g, '红色方 '); chatboxContent = chatboxContent.replace(/ active/g, ' 战斗场'); chatboxContent = chatboxContent.replace(/ to /g, '->'); chatboxContent = chatboxContent.replace(/ took back /g, ' 撤回了 '); chatboxContent = chatboxContent.replace(/ last /g, ' 最后的 '); chatboxContent = chatboxContent.replace(/ imported/g, ' 导入了'); chatboxContent = chatboxContent.replace(/ has no more /g, ' 没有更多的'); chatboxContent = chatboxContent.replace(/ has an invalid /g, ' 无效'); chatboxContent = chatboxContent.replace(/ is looking through/g, ' 在查看'); chatboxContent = chatboxContent.replace(/ looking at/g, ' 查看'); chatboxContent = chatboxContent.replace('from', ' | '); //二次润色 chatboxContent = chatboxContent.replace(' 卡牌(s)', ' 张卡牌'); chatboxContent = chatboxContent.replace(' 弃牌区ed', ' 丢弃了'); chatboxContent = chatboxContent.replace('卡牌牌库', ' 牌库中的卡牌'); chatboxContent = chatboxContent.replace('Blue的', '蓝色方的'); chatboxContent = chatboxContent.replace('Red的', '红色方的'); chatboxContent = chatboxContent.replace(' starting', ' 起始的'); chatboxContent = chatboxContent.replace(' set', ' 设置'); chatboxContent = chatboxContent.replace('底下牌库', '牌库底'); chatboxContent = chatboxContent.replace('top ', '顶端的 '); chatboxContent = chatboxContent.replace('bottom ', '底端的 '); chatboxContent = chatboxContent.replace("'s", ' 的'); chatboxContent = chatboxContent.replace('附上 张卡牌', '张附加的卡片'); chatboxContent = chatboxContent.replace('洗切prizes', '洗切奖赏卡'); chatboxContent_group[i].innerText = chatboxContent; } } }catch (error) { console.error('Error occurred while monitoring chatbox content:', error); } }, 2000); // 每2秒执行一次 var excutNode = ['IMG','BR','HR','FORM','SELECT','OPTION','INPUT','SCRIPT','STYLE','ts'] console.time('translate') allNodeArr.forEach(item=>{ if (item.childNodes && !excutNode.includes(item.nodeName)) { item.childNodes.forEach(item => { if(item.nodeName === '#text'){ var text = textObj[item.data] if(text){ item.data = text } } }) } }) console.timeEnd('translate'); try{ const settingsTogglesElement = document.getElementById('settingsToggles'); const linkElement = document.createElement('a'); linkElement.href = 'http://himesakazone.cc:4600/deck'; linkElement.textContent = '一键导入繁中、日版卡组'; // 你可以自定义这里的文本 // 将超链接添加到settingsTogglesElement中 settingsTogglesElement.appendChild(linkElement); }catch{ }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址