Skip to content
hydaiPublic

About

用來存放 ff14 相關工具的地方

Topics

Resources

Stars

8 stars

Watchers

2 watching

Forks

Repository files navigation

FF14.tw

繁體中文 FF14 多功能工具網站。

特色

  • 純靜態 HTML/CSS/JavaScript
  • 工具獨立封裝 (tools/)
  • 多語言介面支援(繁體中文/English/日本語)
  • 響應式設計(含手機版漢堡選單,選單最上面就是工具清單)
  • 導航列:首頁、工具 ▾、修改紀錄、版權聲明(關於、回報問題、GitHub 在頁尾);「工具 ▾」選單在每一頁都能直接換工具,並標示目前所在的工具
  • 工具名稱動態顯示於導航列
  • 開源專案

🛠️ 已實作工具

副本資料庫 (dungeon-database/)

  • 803 個副本 (2.x - 7.x,362 個可見項目)
  • 精簡列表,不放圖:一列一個副本,寫名稱、類型、版本和等級,版本由新到舊;先列 30 個,「顯示更多」每次再加 30 個
  • 點一列就在原地展開名稱、簡介、機制、掉落物與獎勵(名稱可以選取複製),可以同時展開好幾列;換搜尋、篩選或語言之後,展開的列照舊
  • 搜尋名稱、簡介、機制或掉落物(不分大小寫);名稱以外命中的欄位直接寫在那一列上(掉落物、機制、簡介各一行,命中的字標出來),掉落物有好幾項符合時只列第一項並寫還有幾項也符合;列表上方寫共幾個或找到幾個
  • 依類型與版本篩選:同一組選幾個都算,兩組之間要同時符合;沒有等級篩選(等級跟著版本走)。手機上篩選收進筆數那一行右邊的「篩選」按鈕(選了幾個會寫在按鈕上),點開才展開;電腦版面篩選一直在,筆數排在篩選下面
  • 找不到時寫出找不到什麼(搜尋字和篩選都有時,會說是在選了的篩選裡找不到),並附「清除搜尋」與「清除篩選」
  • 還只有範本內容或重複的 441 筆先藏起來(資料檔的 visible: false,補好資料再改回 true);類型與版本名稱照官方用語(聯盟任務、蒼天之禁城)
  • 每一列都是按鈕,用 Tab 移動、Enter 或空白鍵展開和收起
  • 資料來源:灰機Wiki

仙人微彩計算機 (mini-cactpot/)

  • 點格子旁的小數字盤填數字(焦點在格子上或小數字盤開著時也能按鍵盤 1–9),填好的格子再點可以改或清除
  • 狀態列寫下一步(點遊戲翻開的那一格 → 刮哪一格 → 選哪條線與平均 MGP,一樣好的用「或」連起來),沒翻開的格子寫刮了之後平均可拿多少 MGP,推薦的格子與線標綠色,填滿 4 格後外圈寫每條線的平均
  • 獎金表一直顯示(手機在盤面下面、電腦在右邊),標出推薦的線還可能出現的總和
  • 上一步會寫出退回了什麼,「下一張」清空盤面、按錯可以救回來

Wondrous Tails 預測器 (wondrous-tails/)

  • 4x4 盤面點一格貼上貼紙、再點一次拿掉,最多 9 張,貼滿後其他的格子不能點;盤面上方寫「已貼 N/9 張」
  • 連線機率「現在」與「重置之後」並排:貼滿 9 張時至少 1/2/3 條線的機率,每個機率配一條長條;「重置之後」只在貼 3~7 張(遊戲能重置)時有數字,其他張數寫「—」。只列機率、不給建議,要不要重置由玩家決定
  • 連線標示:已經連成的線,線上的格子框綠色;再貼一張就連成線的空格用綠色虛線框(貼滿 9 張時不標),格子的名稱也會唸給螢幕閱讀器
  • 「清空盤面」在盤面右上角,按下去同一顆按鈕變成「復原」,按錯了可以放回去
  • 手機上機率緊接在盤面下面,電腦上盤面在左、機率在右

角色卡產生器 (character-card/)

  • 做一張自己的冒險者自介卡,貼到 Discord、LINE、Facebook、Instagram,部隊招募、找固定隊時一張講完;填名字、伺服器和主職就能下載,其他都是選填
  • 卡片由程式直接畫在 canvas 上,畫面上的預覽就是下載的那一張圖;橫版 1200×675、直版 1080×1350;有三種風格,在「樣式」裡換,換了不用重填:「名片」(深色玻璃底,資訊最完整)、「海報」(預設,截圖鋪滿整張卡,主要的字都在下方)、「資訊卡」(淺色底,字最好讀)
  • 欄位:角色名稱、伺服器(繁中服 6 個排第一,再來是國際服 85 個,也可以自己輸入)、主職(34 個職業依職能分組,官方名稱)與等級;選填的有其他職業(最多 3 個)、稱號、部隊名稱與簡稱、大國防聯軍、一句話自我介紹、聯絡方式、遊玩時段(平日、假日 × 早上、下午、晚上、深夜)、喜歡的內容(最多 6 個)、在找什麼(固定隊、部隊、朋友);稱號、自我介紹等文字裡的國旗與 emoji 會整個畫在卡片上,不會被拆成兩半;字數上限和欄位旁的計數一樣(以 Unicode 字元算:多數 emoji 算 1 個字、國旗算 2 個,帶膚色或組合的 emoji 算更多),打到上限時放不下的國旗與 emoji 整個不放,不會只剩一半(較舊的瀏覽器(例如 Firefox 125 以前)沒有切字的功能,國旗還是會被拆開)
  • 「海報」只畫其中一部分:名字、伺服器、部隊簡稱、稱號、主職與等級、其他職業、喜歡的內容、自我介紹與遊玩時段;部隊名稱全名、大國防聯軍、在找什麼與聯絡方式只有「名片」與「資訊卡」會畫出來(選了海報時,這四個欄位底下各有一行小字「海報風格不會畫出這一項(名片、資訊卡會)」,填了照樣會記住)。沒填的選填欄位整塊不畫
  • 重點色預設跟著主職的職能(坦克藍、補師綠、輸出紅、生產紫、採集金),也可以自己選
  • 角色圖:上傳截圖(自動縮小,記在這個瀏覽器裡),在卡片上用滑鼠拖曳移動、用滑桿縮放(100%~300%),也能用「左右」「上下」兩個滑桿移動(鍵盤、單指點一下就能用,不必拖曳),或按「置中」「填滿」,每一種風格的橫版與直版各記一份;手機上手指從卡片滑要能捲動頁面,所以要先按「調整圖片」才拖得動;沒有上傳時用程式畫的預設背景;「名片」的背景是壓暗的模糊截圖
  • 下載:電腦直接存成 ff14-<角色名稱>.png;手機(以及觸控為主的裝置)改成用整個畫面顯示做好的圖,寫「長按圖片即可儲存」(LINE、Facebook 等內建瀏覽器常常不能直接下載);「分享」要瀏覽器能傳檔案才會出現,「複製圖片」要瀏覽器支援才會出現(手機版面不顯示);在 LINE 的內建瀏覽器裡多一行「在 LINE 裡可能存不了圖,建議先用瀏覽器打開再填:用瀏覽器打開」(LINE 和手機的瀏覽器不共用記住的資料,所以要在填之前就換)
  • 必填沒填就按下載時不產生圖,在欄位下面寫錯誤,並把焦點移到第一個沒填的欄位
  • 手機版面:上面一張小卡跟著畫面(點一下看大圖),下面用分頁切換五組欄位(基本、名片、怎麼玩、圖片、樣式),最下方固定「下載圖片」與「分享」(分享要瀏覽器支援才有),打字時(文字欄與文字框,選單不算)按鈕列收起來;手機轉向再轉回來,回到最後選的分頁,不會跳回「基本」;電腦版面兩欄,預覽在右邊;橫放的小手機(畫面寬 560px 以上、高 500px 以下,例如 iPhone SE)也用兩欄,表單與預覽都看得到
  • 記住填過的欄位與上傳的圖片(只記在這個瀏覽器);圖片太大存不進去時會寫「這次不會記住」,文字欄位照樣記住;「清除全部」要按兩次;瀏覽器封鎖網站資料時照常運作(只是不記住)
  • 介面支援三語;卡片上的日子與時段、喜歡的內容、「名片」與「資訊卡」上的小標、大國防聯軍與在找什麼、職業名稱也跟著介面語言換,「Lv」、FF14.tw、SE 的版權字與伺服器名稱三語都一樣

宗長計算機 (faux-hollows-foxes/)

  • Faux Hollows Foxes 活動的 6x6 盤面(252 種盤面資料);盤面上方的狀態列寫現在要做什麼、還能翻幾次:① 點遊戲裡被擋住的格子 → ② 找劍 → ③ 找寶箱 → ④ 翻宗長(不一定有)→ 完成,剩的次數不夠翻完劍或寶箱時直接跳到下一個目標;下一格框綠色,一樣好的全部框
  • 標障礙物時,候選格顯示障礙物機率,不可能是障礙物的格子點不了;其他障礙物的位置能確定時自動補上(斜線加虛線框,拿掉手動標的它補上的跟著消失),擺法只剩一種就進入翻格
  • 還沒翻的格子寫劍、寶箱的機率(例如 ⚔️75%、📦13%,0 不寫);宗長只放 🦊,意思是「宗長有出現的話,可能在這格」,不寫數字(宗長出現的機率沒有公開,拿盤面的比例當機率會每翻開一個空格就往上加,最後變成 100%),找到宗長之後其他格就不再放 🦊
  • 翻開一格後點它,在格子旁邊的小選單選劍、寶箱、宗長或空(上三列開在下方、下三列開在上方):和其他格對不上的選項是灰的,只剩一種可能時點一下就標好;點標好的格子可以改選或清除,翻了好幾格之後回頭改,機率、🦊、下一格都跟著重算
  • 候選依劍藍、寶箱紅、宗長黃等分底色;「隱藏機率」只隱藏百分比數字,圖示、候選底色與建議綠框都保留
  • 「上一步」會寫出退回了什麼,「重做」恢復退回的動作;「重置遊戲」另放一行,清空盤面後仍能用上一步救回來。格子都是按鈕,可以用鍵盤操作,格子的名稱也會把提示唸給螢幕閱讀器

寶圖搜尋器 (treasure-map-finder/)

  • 真實寶圖座標資料庫(227個座標)
  • 先選等級(G8、G10、G12、G14、G15、G17、G18,可多選),再選地區:地區只列出所選等級有寶圖的地區並附張數,每個等級都能依地區篩選
  • 一次列出所有符合的寶圖(不分頁);卡片直接顯示座標與最近的傳送點,點縮圖開啟詳細檢視
  • 詳細檢視:加入/移除清單、複製,在目前的結果裡用按鈕或 ← → 切換上一張與下一張,地圖標示最近的傳送點(手機版為全螢幕)
  • 複製鈕會複製一句可以直接貼到隊伍頻道的話(例如 /p G17 烏爾科帕恰 (13.7, 14.2) 最近:瓦群佩洛),地名與最近的傳送點隨介面語言
  • 步驟提示(選等級、加入清單、生成路線)標出目前進行到哪一步
  • 清單入口一直看得到(電腦版捲動時固定在畫面上方、手機版固定在畫面底部),清單是空的時顯示「組隊」,有寶圖就顯示「生成路線」
  • 記住上次選的等級與地區
  • 清單面板:每一列直接顯示座標與最近的傳送點,✕ 直接移除;「複製分享連結」、「匯入」、「清空清單」;手機上面板高度是畫面的 85%
  • 分享連結:複製一條帶 ?maps= 的連結,打開連結時可以選「加進我的清單」或「取代我的清單」;以前「匯出」的內容仍然可以匯入;匯入與清空都是頁面裡的對話框,預設不會丟掉原本的清單
  • 路線規劃:清單有 1 張以上就能生成,路線顯示在清單面板的第二頁,一站一張寶圖,寶圖多的地區先跑;標出目前這一站、可以標記完成(進度記在這台裝置、保留 12 小時),「複製下一站」一次複製一站,「全部複製」一站一行
  • 複製格式:預設和卡片的隊伍頻道句子相同、前面加站號(例如 /p 1/6 G17 烏爾科帕恰 (21.6, 23.9) 最近:瓦群佩洛),可以換成中文、English、日本語範本或自訂,點變數就能插入,預覽用目前這一站的真實資料
  • 瀏覽器封鎖網站資料時,清單與路線照常運作(只是記不住)
  • 隊伍協作:最多 8 人、8 張寶圖,多人同步、斷線重試與私人操作憑證;建立或加入時在頁面裡選要不要帶自己的寶圖(預設帶進);預設名字是「光之戰士+3 碼字串」(例如光之戰士K7Q),同一台裝置每次都一樣;可以複製邀請連結,打開時先問「加入隊伍 X?」;清單和路線每張圖都寫是誰的,路線複製到隊伍頻道的句子也帶上主人的名字;連不上時顯示「連不上,重試中」

Lodestone 角色查詢 (lodestone-lookup/)

  • 用名字加伺服器找人(直接列出符合的角色與部隊,點一下打開),或貼上 Lodestone 角色頁的網址或 ID;只能查國際版的角色
  • 打開時最上面是「我的角色」(在角色頁設定,點一下打開),接著是找人與最近查過的 5 個人;都只記在自己的瀏覽器裡
  • 查到之後是角色標頭(名字、稱號、伺服器與部隊、現在的職業、資料時間)加六個分頁:職業(官方分組、滿級幾個)、成就、裝備(每一格的圖示與染色;Lodestone 的角色頁沒有裝備名稱)、收藏(坐騎與寵物,可篩選名稱)、部隊(資料與成員)、其他(大國防聯軍、生日、守護神、開始城市、個人簡介);打開哪個分頁才載入哪個
  • 名稱與成就顯示可以選 English/日本語(記住選擇);中文介面的職業、大國防聯軍與部隊活動重點等用官方繁中
  • 網址帶 ?id= 可以分享,上一頁、下一頁不會離開這個工具
  • 使用 logstone API(hydai/logstone)取得資料;API 還是舊版時,搜尋改給到 Lodestone 官網搜尋的連結
  • 提供直接前往官方 Lodestone 頁面的連結

特殊採集時間管理器 (timed-gathering/)

  • 艾歐澤亞時間特殊採集點管理:一種素材一張卡片(同一種素材的幾個時段合在一張),標題是介面語言的名稱,下面小字寫另外兩種語言的名稱,再加上地點(英文、日文介面寫英文、日文的地區與地點,地點就是地區本身時只寫一次)、座標與每天的艾歐澤亞時間時段
  • 直接寫還剩多久:現在可採的寫「還剩 m:ss(到幾點)」,還沒到的寫「幾點出現 · 還要 N 分」(不到 10 分鐘改寫 m:ss),全天的素材寫「全天都可以採」;倒數每秒走,現在可採的排在最前面,接著是快出現的,全天的最後,素材出現或結束時自動重排
  • 搜尋框用中文、日文或英文都搜得到(連英文的地區與地點名稱,例如 Yak T'el、Mamook),好幾個字時每個字都要符合,命中的字會標出來;還可以依類型與版本篩選;英文、日文介面的卡片和清單顯示英文、日文名稱
  • 「提醒我」(全天的素材沒有)與頁面最上面的「我的提醒」:素材出現前 0/1/2/3/5/10 分鐘通知(預設 1 分鐘,所有提醒共用);設定時離出現已經不到這麼久,就在出現時提醒,設定時已經開始的那一次不補;每次出現都提醒,直到取消;頁面要開著才會響
  • 提醒到時間時,頁面上跳出提示並發出提示音,瀏覽器允許時再加系統通知;通知被封鎖,或瀏覽器不支援、不讓網頁跳通知時,仍然有頁面提示和聲音,「網頁提醒」開關照樣能用,「我的提醒」下方寫出目前只有頁面提示和聲音;關掉「網頁提醒」時到時間什麼都不做,提醒清單照樣留著
  • 「我的提醒」先列 5 個(手機 3 個),其餘按「顯示全部」;標題列有「測試通知」;另一個分頁新增或取消提醒時這一頁跟著變;以前開著「採集提醒」的人,預設清單裡的素材(全天的除外)會自動放進「我的提醒」
  • 「複製鬧鐘」:複製這種素材下一次出現的一行遊戲內 /alarm 指令(正在可採時複製的是再下一段),貼到遊戲的聊天輸入框就設好;卡片或提醒列下面會寫出複製了什麼,剪貼簿不能用時改寫成請自己選取複製
  • 多清單管理(新增、移除、匯出/匯入)與整份清單的巨集匯出照舊;卡片上的「加入清單」會把這種素材的每個時段一起加進去
  • 瀏覽器封鎖網站資料時,頁面照常載入,提醒與清單記不住,但這次打開期間設好的提醒照樣會響,「加入清單」也照樣加得進去(並提醒重新整理後就不見了)
  • 多語言支援

攻略資料 (guide/)

  • FF14 新手攻略指南,8 個子頁面:部隊、大國防聯軍、副本、風脈、隊伍系統、探索筆記、專屬陸行鳥、目錄首頁
  • 部隊、副本、風脈、探索筆記 4 個主題還在撰寫中:攻略首頁的卡片與目錄都標「撰寫中」,頁面內文只有一句「還在撰寫中」(副本頁多一句連到副本資料庫),搜尋引擎先不收錄(noindex),寫好之後再拿掉
  • 手機上(橫放也一樣)目錄收成一行「目錄」,點開才展開,不在框裡捲動
  • 專屬陸行鳥文章裡的染色計算器已經獨立成「陸行鳥染色計算器」,原本的位置(#color-calculator)留著一張連到新工具的卡片
  • 多語言支援

陸行鳥染色計算器 (chocobo-color/)

  • 選陸行鳥現在的顏色和想要的顏色,一打開就是答案(沒有「計算」鈕):共幾顆、要準備哪些水果各幾顆,以及照什麼順序餵(清單上面一行寫「餵食順序:照 1 → 4 餵,一段餵完再換下一段」)
  • 同時比較「直接調色」和「先餵 1 顆拉札漢檸檬(變回沙漠黃)再調色」,用顆數少的,一樣多就用檸檬;用了檸檬時另外寫直接調色要幾顆。例如魔花綠變回沙漠黃只要 1 顆檸檬(直接調色要 80 顆)
  • 餵食順序合成幾段(連續餵同一種水果算一段,段數最少,每一步都不超出 RGB 0~255),例如沙漠黃 → 素雪白 34 顆分 4 段;每一段可以打勾,第一個還沒勾的段標成「下一段」,跳著勾時被跳過的段會提醒「第 N 段還沒勾:不照順序餵,顏色可能會跑掉」(打勾照樣自由)
  • 記住上次選的顏色和勾到哪一段;全部勾完之後,下次打開時目前顏色自動換成目標顏色(畫面寫「已經是…,不用餵。」)
  • 點「目前顏色」或「目標顏色」按鈕打開色票面板:85 色依色系分 7 組,選目標顏色時每格寫從目前顏色要餵幾顆(已經算進檸檬);手機上面板蓋滿畫面
  • 瀏覽器封鎖網站資料時照常運作(只是不記住)
  • 多語言支援
  • 資料來源:ffxivchocobo.com(data/chocobo-colors.json)

檢舉模板產生器 (report-generator/)

  • 快速產生不當行為檢舉的模板文字
  • 協助玩家進行申訴

巨集轉換器 (macro-converter/)

  • 把英文、日文攻略裡的生產巨集換成繁體中文(目標語言也可以選英文或日文);範圍只有生產技能與文字指令,戰鬥、採集技能還沒有收錄,頁面上也有寫明
  • 貼上或打字就立刻轉換,沒有「轉換」鈕;目標語言預設繁體中文,改了會記住,切換網站介面語言不會改它
  • 轉不了的地方會列出來:技能名沒有收錄、指令不認得,或那一行根本不是指令(貼上的標題、表格複製下來的編號、# 備註:遊戲裡沒有 / 開頭的一行會當成聊天訊息送出)時,輸出上方依行號列出是第幾行的哪個詞或哪一行(例如第 3 行的「/foo」不是認得的指令),輸出裡那一段照原文保留
  • 超過 15 行時多一條提醒:遊戲裡一個巨集最多 15 行,要分成幾個巨集
  • 常見的英文簡寫(/mlock、/merror、/e、/p 等)原樣保留,不算轉不了;/micon、/macroicon 後面的技能名會一起翻譯,遊戲裡的巨集圖示才不會失效
  • 「複製」鈕複製整份輸出,按下去會暫時變成「✓ 已複製」
  • 資料載入失敗時,工具最上面顯示錯誤訊息與「重試」鈕
  • 資料來源:data/macro-mappings.json

天氣預報 (weather-forecast/)

  • 查看艾歐澤亞 73 個地區的天氣預報;地區是依 14 個區域分組的下拉選單,手機上不用再捲過一整排按鈕
  • 答案優先:選好地區和天氣,第一張卡就寫它下次什麼時候出現(今天/明天+幾點)、還要等多久、到幾點結束;正在下時改寫到幾點、還剩多久與下一次;找不到時寫「60 天內沒有符合的時段」
  • 連在一起的同一種天氣合成一段;設了時段(艾歐澤亞時間)時,答案只算時段裡的部分,並寫出整段與其中在時段內的部分
  • 記住上次選的地區、天氣、前置天氣與時段,下次打開直接接著看;分享連結(網址 hash)優先於這台裝置記住的
  • 時段與前置天氣(釣魚用)收在預設收起的「更多條件」;答案卡下面是「之後幾次」(先列 5 次,「顯示更多」最多 50 次),最下面是這個地區的天氣時刻表(每 8 個艾歐澤亞小時一列,先列 24 列,「顯示更多」最多 200 列)
  • 「提醒我」:天氣開始前 1/3/5/10/15/30 分鐘提醒(預設 5 分鐘);設定時離開始已經不到這麼久,就在開始時提醒;每次出現都提醒,直到取消;頁面要開著才會響
  • 提醒到時間時,頁面上跳出提示並發出提示音,瀏覽器允許時再加系統通知;通知被封鎖,或瀏覽器不支援、不讓網頁跳通知時,仍然有頁面提示和聲音
  • 提醒有自己的地區和天氣:換地區或打開別人的分享連結都不會取消,答案卡顯示的不是它的目標時,上方用一行寫出提醒中的是哪個
  • 瀏覽器封鎖網站資料時,頁面照常運作(選擇與提醒記不住,這次打開期間提醒照樣會響)

🏗️ 技術架構

開發環境

由於部分工具需要載入 JSON 資料檔案,受瀏覽器 CORS 限制影響,建議使用本地伺服器進行開發:

# 推薦:使用本地伺服器
python3 -m http.server
# 或
npx serve .

# 瀏覽器訪問
http://localhost:8000

需要本地伺服器的工具:

  • 副本資料庫 (dungeon-database/) - 載入 /data/dungeons.json
  • 寶圖搜尋器 (treasure-map-finder/) - 載入 /data/aetherytes.json、/data/treasure-maps.json、/data/zones.json
  • Lodestone 角色查詢 (lodestone-lookup/) - 使用 logstone API
  • 特殊採集時間管理器 (timed-gathering/) - 載入 /data/timed-gathering.json
  • 巨集轉換器 (macro-converter/) - 載入 /data/macro-mappings.json
  • 陸行鳥染色計算器 (chocobo-color/) - 載入 /data/chocobo-colors.json
  • 角色卡產生器 (character-card/) - 不載入資料檔,但用 file:// 直接開時,卡片上的職業圖示會讓瀏覽器不讓 canvas 轉成圖:預覽照常,下載、分享、複製圖片會失敗

可直接開啟的工具:

  • 仙人微彩計算機
  • Wondrous Tails 預測器
  • 宗長計算機
  • 檢舉模板產生器
  • 天氣預報
  • 攻略資料(8 個頁面都不載入資料檔)

分享預覽與主畫面圖示: 由 node scripts/share-preview.mjs pages/images 產生(images 要本機的 Chrome 與網路),改了頁面標題、說明或新增工具後重跑。

測試與協作 API

使用 Node 24,在專案根目錄執行:

npm --prefix api ci
node --test

測試涵蓋 UI/資料契約、非同步競爭與真實 Miniflare/workerd 的 SQLite Durable Object;需允許本機連接埠。GitHub Actions 會在 push/Pull Request 執行相同測試及 Worker 環境 dry-run。

寶圖協作另開一個終端執行 npm --prefix api run dev(本機 API 為 localhost:8787),靜態頁面使用 localhost:8000 或 8080。部署與舊隊伍過渡方式見 API 文件。

專案結構

ff14.tw/
├── .gitignore              # Git 忽略規則
├── CNAME                   # GitHub Pages 自訂網域
├── LICENSE
├── TERMINOLOGY.md          # FF14 繁中服官方用語對照
├── index.html              # 主頁
├── about.html              # 關於頁面
├── changelog.html          # 修改紀錄頁面
├── copyright.html          # 版權聲明頁
├── 404.html                # 404 頁(GitHub Pages 對不存在的網址顯示它)
├── manifest.webmanifest    # 網站的主畫面設定(每個工具目錄也各有一個)
├── api/                    # Cloudflare Workers API(寶圖隊伍協作,含自己的 package.json / wrangler.toml)
│   └── treasure-room-worker.js
├── data/                   # 資料檔案
│   ├── dungeons.json       # 副本資料庫 (803 筆)
│   ├── treasure-maps.json  # 寶圖座標資料 (227 筆)
│   ├── macro-mappings.json # 巨集轉換器對照表
│   ├── timed-gathering.json # 特殊採集點資料
│   ├── chocobo-colors.json # 陸行鳥毛色配方資料
│   ├── zones.json          # 地區定義與元資料
│   ├── aetherytes.json     # 傳送點資料
│   ├── zone-translations.json # 地區名稱翻譯 (zh/en/ja)
│   └── ff14-gp.csv         # GP 值參考資料
├── assets/                 # 共用資源
│   ├── css/
│   │   ├── tokens.css      # 設計 token(顏色/字級/間距/陰影唯一來源)
│   │   ├── common.css      # 全域樣式(含漢堡選單)
│   │   ├── pages.css       # 關於/版權聲明/404 頁面專用樣式
│   │   ├── tools-common.css    # 工具共用樣式(@import 匯入 buttons/cards/forms/tags)
│   │   ├── changelog.css   # 修改紀錄頁面專用樣式
│   │   └── components/     # UI 元件
│   │       ├── buttons.css
│   │       ├── cards.css
│   │       ├── forms.css
│   │       ├── tags.css
│   │       └── language-switcher.css
│   ├── js/
│   │   ├── common.js       # 共用函式庫(含漢堡選單、FF14Utils)
│   │   ├── security-utils.js # 安全工具(XSS 防護)
│   │   ├── modal-manager.js  # 對話框管理
│   │   ├── reminder-scheduler.js # 提醒排程(頁內提示、提示音、系統通知;天氣預報與特殊採集時間管理器的「提醒我」使用)
│   │   ├── cell-popover.js # 格子旁的小選單(不是對話框;仙人微彩、宗長計算機使用)
│   │   ├── ff14-game-data.js # 共用的遊戲資料:職業、國際服與繁中服的伺服器(角色卡產生器、Lodestone 角色查詢使用)
│   │   ├── changelog.js    # 修改紀錄頁腳本(收合列的「N 條」與網址 # 展開)
│   │   ├── home.js         # 首頁腳本(最近使用)
│   │   ├── not-found.js    # 404 頁腳本(工具清單)
│   │   ├── components/     # 動態載入元件
│   │   │   ├── tools-registry.js   # 工具登錄表(全站工具清單的唯一來源)
│   │   │   ├── nav-template.js     # 導航列模板
│   │   │   ├── footer-template.js  # 頁尾模板
│   │   │   └── layout-loader.js    # 佈局載入器
│   │   └── i18n/           # 國際化系統
│   │       ├── i18n-manager.js
│   │       └── translations/
│   │           ├── common.js
│   │           └── tools/  # 各工具翻譯檔(report-generator 尚無)
│   └── images/             # 圖片資源
│       ├── ff14tw.ico      # 網站 favicon
│       ├── ff14tw-logo.png # logo 原檔(1024×1024,預覽圖與主畫面圖示都從它產生)
│       ├── og/             # 21 張分享預覽圖(由 scripts/share-preview.mjs 產生)
│       ├── icons/          # 4 張主畫面圖示(同上)
│       ├── se/             # Square Enix 官方素材
│       │   └── FFXIVJobIcons/  # FF14 職業圖示 (45個)
│       ├── tools/          # 工具用圖片(目前只有副本圖片的說明檔,頁面不顯示副本圖片)
│       └── ui/             # 介面小圖示
├── scripts/                # 開發用腳本(不隨網站部署)
│   ├── generate-macro-mappings.py
│   ├── add-design-links.mjs
│   ├── remove-dark-mode-links.mjs
│   ├── replace-noscript-nav.mjs
│   ├── share-preview.mjs   # 分享預覽與主畫面圖示的產生腳本(pages、images 兩個指令)
│   └── share-preview/      # 它的模組與預覽圖範本 card.html
├── tests/                  # 73 份 node --test 測試(下列為部分範例)
│   ├── character-card-paint.test.js    # 角色卡三種風格共用的畫圖小工具
│   ├── character-card-style-a.test.js  # 角色卡風格「名片」
│   ├── character-card-style-c.test.js  # 角色卡風格「資訊卡」
│   ├── design-system.test.js
│   ├── docs.test.js
│   ├── gathering-materials.test.js
│   ├── gathering-reminders.test.js
│   ├── helpers/            # 測試輔助模組(不是測試檔)
│   │   ├── cactpot-page.js         # 仙人微彩頁的頁面替身
│   │   ├── canvas-recorder.js      # 記錄呼叫的 2D context 替身(node 裡沒有 canvas;角色卡的測試使用)
│   │   ├── card-drawing.js         # 角色卡畫圖測試共用的輔助(載入畫圖腳本、範例資料、讀畫圖記錄)
│   │   ├── card-page.js            # 角色卡產生器頁的頁面替身
│   │   ├── chocobo-page.js         # 陸行鳥染色計算器頁的頁面替身
│   │   ├── dungeon-page.js         # 副本資料庫頁的頁面替身
│   │   ├── gathering-page.js       # 採集頁的頁面替身
│   │   ├── hollows-page.js         # 宗長計算機頁的頁面替身
│   │   ├── notification-stubs.js   # Notification/AudioContext 替身
│   │   └── wondrous-page.js        # 天書奇談頁的頁面替身
│   ├── modal-manager-stack.test.js
│   ├── pages.test.js
│   ├── scripts.test.js
│   ├── timed-gathering-eorzea-time.test.js
│   ├── timed-gathering-page.test.js
│   └── timed-gathering-search.test.js
└── tools/                  # 工具目錄
    ├── character-card/     # 角色卡產生器
    │   ├── index.html
    │   ├── card-state.js       # 欄位、字數上限、預設值與記住(localStorage),不碰 DOM
    │   ├── card-layout.js      # 版面計算(名字縮放、折行、膠囊排列、截圖填滿與拖曳縮放)
    │   ├── card-paint.js       # 三種風格共用的畫圖小工具(字、膠囊、圖示、預設背景、照片框…),不碰 DOM
    │   ├── card-style-a.js     # 風格「名片」的顏色、版面與畫法
    │   ├── card-style-b.js     # 風格「海報」的顏色、版面與畫法
    │   ├── card-style-c.js     # 風格「資訊卡」的顏色、版面與畫法
    │   ├── card-renderer.js    # 照 model.style 交給那一種風格把卡片畫在 canvas 上,並列出要載入的字型
    │   ├── card-image.js       # 角色圖縮小成 JPEG 與讀回、名片的模糊背景小圖
    │   ├── card-export.js      # 下載、分享、複製與內建瀏覽器偵測
    │   ├── script.js           # 頁面:表單、風格、預覽、分頁、上傳與拖曳、位置滑桿、輸出
    │   └── style.css
    ├── chocobo-color/      # 陸行鳥染色計算器
    ├── dungeon-database/   # 副本資料庫
    ├── faux-hollows-foxes/ # 宗長計算機
    ├── guide/              # 攻略資料
    ├── lodestone-lookup/   # Lodestone 角色查詢
    ├── macro-converter/    # 巨集轉換器
    ├── mini-cactpot/       # 仙人微彩計算機
    ├── report-generator/   # 檢舉模板產生器
    ├── timed-gathering/    # 特殊採集時間管理器
    ├── treasure-map-finder/# 寶圖搜尋器
    ├── weather-forecast/   # 天氣預報
    └── wondrous-tails/     # Wondrous Tails 預測器

架構

  • 動態載入 header/footer 元件(JavaScript 模組化)
  • 簡潔導航列(含工具名稱顯示)
  • CSS 自訂屬性
  • FF14Utils 全域物件
  • Class-based JavaScript
  • 響應式設計
  • 國際化支援(I18nManager)
  • 共用元件系統 (/assets/css/components/)
  • 佈局元件系統 (/assets/js/components/)
    • 按鈕元件 (buttons.css)
    • 卡片元件 (cards.css)
    • 表單元件 (forms.css)
    • 標籤/徽章元件 (tags.css)
    • 語言切換器 (language-switcher.css)
    • 載入狀態與訊息元件 (tools-common.css)

🚀 部署

本專案透過 GitHub Pages 自動部署至 ff14.tw

🤝 貢獻指南

  1. Fork 本專案
  2. 建立功能分支:git checkout -b feature/new-tool
  3. 提交變更:git commit -m 'feat: add new tool'
  4. 推送到分支:git push origin feature/new-tool
  5. 建立 Pull Request

開發規範

  • 繁體中文/台灣用語
  • ES6+ class-based JavaScript
  • 響應式設計
  • FF14 官方配色
  • 優先使用共用元件,避免重複定義樣式
  • 新工具必須引入 tools-common.css

📄 版權聲明

非官方粉絲網站。FF14 相關內容版權歸 SQUARE ENIX 所有。 圖片來源:Square Enix Official Fankit 僅供教育與非商業用途。

聯絡


Made with ❤️ for FF14 Taiwan Community

About

用來存放 ff14 相關工具的地方

Topics

Resources

Stars

8 stars

Watchers

2 watching

Forks

Used by

Contributors

Languages