我忘了一個機制就是自己注意看愛爾琳 22:00 就可以忽略誤差的問題了 XD
退坑了七八年最近才回鍋,很多貿易小工具都壞了,韓文每次都要找對照翻譯也很麻煩,所以就整理成以下腳本了,腳本只是將文字做替換而已,很安全,可以自己看 code。
主要針對韓國fantazm做了地區和物品的翻譯以及時間調整,時間調整僅供參考我也不保證一定對XD
注意的是杜卡特是售價而且不會和臺灣一樣所以可以忽略

腳本可自行安裝 TamperMonkey 之類的載入使用
主要針對韓國fantazm做了地區和物品的翻譯以及時間調整,時間調整僅供參考我也不保證一定對XD
注意的是杜卡特是售價而且不會和臺灣一樣所以可以忽略
主要功能
- 加上轉換臺灣時區並且校時
- 翻譯物品名稱及加上地點
- 翻譯地區名稱
- 翻譯地區名稱
腳本可自行安裝 TamperMonkey 之類的載入使用
// ==UserScript==
// @name 瑪奇走私繁體中文翻譯
// @description 翻譯走私預報
// @version 0.0.3
// @author 小毛毛蟲@愛麗莎
// @grant GM_addStyle
// @license MIT
// @namespace http://www.jamesdambrosio.com/homeindex.php?owner=suddy
// @match https://lute.fantazm.net/*
// ==/UserScript==
/* global $ */
GM_addStyle('.tw-time { color: red; }'); // 添加 CSS
(function() {
'use strict';
// 設定對應韓文到中文的字典
const translationMap = {
'????': '現實時間',
'??': '位置',
'???': '走私品',
'???': '杜卡特(售價)',
'??? ??':'嬰孩藥水(堤爾克那)',
'???? ??':'減肥藥水(堤爾克那)',
'??? ?? ??':'預防打鼾藥水(堤爾克那)',
'?? ??':'人蔘藥水(堤爾克那)',
'??? ??':'限-討喜藥水(堤爾克那)',
'??? ??':'蜘蛛絲手套(杜巴頓)',
'?? ??':'羊毛靴子(杜巴頓)',
'?? ??? ??':'食人魔屠夫面具(杜巴頓)',
'???? ??':'惡翅魅魔正裝(杜巴頓)',
'???? ???':'限-魅魔泳衣(杜巴頓)',
'???? ??':'班克爾煤炭(班克爾)',
'???':'大理石(班克爾)',
'???':'黃水晶(班克爾)',
'???? ??':'高地礦石(班克爾)',
'?':'限-鉛(班克爾)',
'?? ????':'莓燕麥片(艾明馬夏)',
'?? ??':'奶油啤酒(艾明馬夏)',
'?? ???? ??':'燻烤野生動物(艾明馬夏)',
'??? ???':'松露義大利麵(艾明馬夏)',
'?? ???':'限-烤全熊(艾明馬夏)',
'??? ??':'熱氣的結晶(塔爾汀)',
'??? ???':'留聲石(塔爾汀)',
'??? ??':'帕拉魯結晶(塔爾汀)',
'????? ??':'防護壁圓形結晶(塔爾汀)',
'?? ??':'限-鍊金結晶(塔爾汀)',
'?? ???':'迷你梳妝臺(塔拉)',
'? ???':'茶幾(塔拉)',
'?? ??':'搖椅(塔拉)',
'??? 2? ??':'小朋友兩層樓床(塔拉)',
'?? ???':'限-大型葡萄酒架(塔拉)',
'??? ?':'卡普海苔(卡普)',
'??? ?':'卡普牡蠣()',
'?? ????':'鯊魚魚鰭(卡普)',
'?? ???':'海蜇皮(卡普)',
'??? ??':'限-那伊德鱗片(卡普)',
'???':'鐵鞭子(貝爾法斯特)',
'?? ??':'闇之劍(貝爾法斯特)',
'??':'金庫(貝爾法斯特)',
'???? ?? ??':'骷髏食人魔盔甲(貝爾法斯特)',
'?? ???? ??':'限-摩根特頭盔仿製品(貝爾法斯特)',
'???? ???':'薄荷巧克力粉(克拉)',
'??? ??':'新鮮的石榴(克拉)',
'???? ????':'魔法之門模型(克拉)',
'??? ?? ??':'探險用救援工具(克拉)',
'??? ??? ???':'限-卡比仙人掌精華(克拉)',
'?? ???':'玻璃鵝卵石(比路里亞)',
'?? ??':'桂皮香水(比路里亞)',
'?? ???':'乾燥番紅花(比路里亞)',
'?? ?? ??':'侖格天然巖鹽(比路里亞)',
'??? ? ??':'限-比路里亞肉乾(比路里亞)',
'???? ?? ???':'庫爾勒克遺跡紀念品(科爾)',
'??? ?? ??':'儀式用大型面具(科爾)',
'??? ????':'拉圖勒樹梅(科爾)',
'?? ?? ?? ??':'遺物修復工具組(科爾)',
'???? ?? ??':'限-庫爾勒克天然橡膠(科爾)',
'??? ??? ??':'巴雷斯合成棉外套(巴雷斯)',
'?? ?? ??':'天然冰川泉水(巴雷斯)',
'???? ??':'溜冰鞋(巴雷斯)',
'??? ??':'滑雪板(巴雷斯)',
'??? ???':'限-巴雷斯伏特加(巴雷斯)',
'??? ?? ???? ??':' 杜加德走廊伐木場東邊',
'??? ?? ???? ???':' 杜加德走廊伐木場東南',
'??? ?? ???':' 杜加德走廊東南邊',
'???? ?? ???? ??':'亞斯特東邊',
'???? ?? ???? ???':'亞斯特東南',
'???? ?? ?????':'菲歐納地下城',
'? ?? ?? ????':'貝卡地下城',
'? ?? ?? ???':'山平爾平原西北',
'? ?? ?? ??':'山平爾平原北邊',
'? ?? ?? ???':'山平爾平原東南',
'? ?? ?? ??':'山平爾平原南邊',
'???? ?? ??':'索利亞庫林西邊',
'???? ?? ???? ??':'索利亞庫林巖石地帶東邊',
'???? ?? ????':'索利亞庫林巖石地帶',
'???? ?? ???? ??':'索利亞庫林巖石地帶西邊',
'?? ???? ??':' 塔爾汀巨石陣西邊',
'?? ??':'塔爾汀墓地',
'?? ??':'塔爾汀南邊',
'?? ???':'塔爾汀西南邊',
'?? ?? ???? ??':' 亞布內亞尼爾湖西邊',
'?? ?? ???? ???':' 亞布內亞尼爾湖西南',
'?? ?? ???? ???':' 亞布內亞尼爾湖西北',
'?? ?? ???? ???':' 亞布內亞尼爾湖東南',
'??? ?? ??':' 克里布山谷北邊',
'??? ?? ??':' 克里布山谷南邊',
'??? ?? ???':' 布拉格平原西北',
'??? ?? ??? ???':' 布拉格平原傑哈酒莊',
'??? ?? ??':' 布拉格平原北邊',
'??? ?? ??':' 布拉格平原東邊',
// 更多轉換...
};
// 函數用於校正時間
function adjustTime(timeStr) {
const timeParts = timeStr.split(':');
if (timeParts.length === 3) {
let hours = parseInt(timeParts[0], 10);
let minutes = parseInt(timeParts[1], 10);
let seconds = parseInt(timeParts[2], 10);
// 加上時差1小時又5分鐘
minutes += 5;
if (minutes >= 60) {
minutes -= 60;
hours += 1;
}
hours += 1;
// 處理超過24小時的情況
if (hours >= 24) {
hours -= 24;
}
// 轉回兩位數格式
const hoursStr = hours.toString().padStart(2, '0');
const minutesStr = minutes.toString().padStart(2, '0');
const secondsStr = seconds.toString().padStart(2, '0');
return `${hoursStr}:${minutesStr}:${secondsStr}`;
}
return '';
}
// 遍歷表格中特定的 td 元素並添加校正後的時間
function addAdjustedTime() {
$('#smug_content td[data-th="? ?"]').each(function() {
const originalTime = $(this).text();
const adjustedTime = adjustTime(originalTime);
if (adjustedTime) {
const timeHtml = `${originalTime} <br/><span class="tw-time">【 TW: ${adjustedTime} 】</span>`;
$(this).html(timeHtml);
}
});
}
// 函數用於轉換文本
function translateText(text) {
return translationMap[text.trim()] || text; // 去除空格後進行翻譯
}
// 遍歷表格中的所有 th 和 td 元素並轉換內容
function translateTable() {
$('#smug_content th, #smug_content td').each(function() {
$(this).contents().each(function() {
if (this.nodeType === Node.TEXT_NODE) {
this.nodeValue = translateText(this.nodeValue);
}
});
});
}
// 創建一個新的 MutationObserver 監聽器來監聽 DOM 變化
const observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.addedNodes && mutation.addedNodes.length > 0) {
// 每次 DOM 更新時,重新翻譯表格並添加校正時間
translateTable();
addAdjustedTime();
}
});
});
// 配置和啟動 MutationObserver
const config = { childList: true, subtree: true };
observer.observe(document.body, config);
})();