UESP 技能 和 套裝 抓取程式 與 中文補翻譯說明

把程式整理成有介面的了,之前都是在自己電腦直接跑程式

所以現在有需要更新就自己照流程按按按就可以了 (大概沒整個詳測)

下述所有頁面並沒有做權限設定

文章都設到 2020 1 月文章,應該也沒幾個會爬文的所以就懶得鎖東鎖西了
我覺得就不用特別宣傳有需要就去按一按就好了

由於都公開,所以資料庫備份已經改成 每4小時 就自動備份一次
出問題大不了只會損失 4 小時資料
應該是沒差了

如果有需要也可以叫別人去這些頁面操作


套裝資料 手動中文翻譯 說明

http://www.eso-tw.com/dbeditorset/

目前網站中有 當滑鼠壓到套裝 的 icon 右邊會彈出 套裝資料
資料都是自動抓取 UESP 的 json 資料

這邊提供給熱心幫忙的朋友手動協助翻譯
使用上就是在看的到的輸入框直接打字就可以了,當你焦點離開輸入框後會自動存檔
存檔成功框框會變成綠色2秒鐘
失敗會變紅
沒變色就是你又沒修改 or 有 bug 了

如果欄位是空白的,將會自動去比對 ESO 語言包,和漢化組語言包,複雜比對後秀出中文翻譯
當然如果比對失敗就沒有啦 XD

語言包的更新請看最下面的說明


自動擷取 UESP 套裝資料的程式

http://www.eso-tw.com/autoloadset/

不操作

可以透過第一個 下拉選單 檢視 目前公會網站有的套裝資料
也可以瀏覽備份的資料表來確定 step3 時要 copy 哪一份翻譯

step1

按下去會自動
開始抓 UESP 的資料,抓完後會在下方列出 UESP 所有的套裝資料
自己判斷一下,可不可以做下一動,基本上也沒啥好判斷的就是了

step2

按下去會自動
將公會網站套裝資料備份然後 "清空"
(備份是確保可以還原 , 清空目的是希望刪除不存在的套裝)
接著將下方表單中所有 data 寫入資料庫
如果這各步驟有出現錯誤,請紀錄有問題的套裝名稱後通知我,通常是文字格式異常的問題
就算出現錯誤,也可以再按一下 step2 的按鈕,讓它繼續跑完剩下的套裝
頂多就是有幾件暫時無法在網站上顯示而已

step3 (非必要)

以下內容為 '有' 奴隸手動新增 資料庫時才有意義 , 保留文字避免我失意
step2 所建立的新資料中,只會有 UESP 剛剛抓到的資料
不會有中文翻譯
你可以先用第一個下拉選單確定一下哪一個備份中的翻譯是比較完整的
選好後再按下 step3 的按鈕,從備份的資料複製中文翻譯到剛剛 step2 建立的新資料中
但如果套裝有改名字,會無法自動 copy 原本翻譯好的 要手動去改


自動擷取 UESP 技能資料的程式

http://www.eso-tw.com/autoloadskill/

這邊流程比較複雜一點
所以不能一個頁面做完
會分成 3 頁負責不同階段的工作

index.php 擷取 UESP 技能

因為 UESP 的技能資料是包含 LV1~4 的技能,所以看到抓到 3000 多個技能是正常的
但是由於 UESP 的資料是沒有一個 樹狀 結構,你認真看抓回來的資料就知道了 XD
所以如果要按分類,按職業三系,按學習等級排列
是無法直接用現在的資料分析出來
所以這個步驟主要是先複製到暫存資料庫
才能用跑 sql 的方式來重新分類、過濾和整理 USEP 的技能資料

一樣如果有技能卡住,出現無法寫入資料庫的問題,請紀錄有問題的技能名稱和 id 後通知我
請一定要給 id 不然一樣的技能名稱超多的,會不知道是哪一筆有問題

當然可以再按一下 step2 的按鈕,讓它繼續跑完剩下的技能
頂多就是有幾個暫時無法在網站上顯示而已

filter.php 分析 UESP 技能

這個頁面會列出分析完的 USEP 技能
我會略過

  • rank = 0
  • skillIndex = -1
  • 同樣名稱的技能只留 rank 最高的
  • 至於為何是上面這 3 種過濾條件,我現在想不起來為啥

如果沒問題就可以按下 開始將技能整合到公會資料庫 來完成技能寫入資料庫的動作
我很確定就算有問題你也無法看出來,畢竟資料多到哭爸,UESP排序又超級亂
所以反正這步驟就是按下按紐就對了

icon.php 把圖片抓回我們主機

如果你在上一個步驟很認真閱讀了頁面中文字
你會發現剛剛說可以寫入的資料筆數,和這一頁顯示寫入正確的筆數 不一樣了
不要問我為什麼,因為我也沒去查過,但從文章編輯中的瀏覽技能功能中看
感覺所有技能都有抓到的樣子,所以我也懶得查了,如果你能發現 bug 再跟我說

這個頁面會列出 目前主機上 所有技能圖片
如果沒有圖片就會出現 等待中 的狀態
你可以按下 只抓沒有圖片的技能 把它補齊

但是由於 UESP 的技能圖示,是使用技能名稱當做檔案名稱
所以如果 ESO 沒換技能名稱但是有換圖示,這邊是無法自動判斷的
也就是說你光是按下 只抓沒有圖片的技能 是無法更新到這些新圖示
就只能按下 全部重抓

抓圖只能 1 張 1 張的跟 USEP download
並且為了不要被誤會成攻擊行為,所以會故意跑慢一點
建議你要執行這個動作的時候,確保你是開一個新的瀏覽器視窗,上面不要有一堆亂七八糟的分頁
就讓它獨立慢慢的把圖片抓完


更新 ESO + 漢化組語言包

http://www.eso-tw.com/autoloadlang/

學霸加森 1 秒教會你如何取得語言包資料

首先 ESO 的語言包是有做過編碼的,不確定編碼的格式或金鑰是什麼,但 UESP 有提供解編碼程式

http://en.uesp.net/wiki/Online:EsoExtractData

下載檔案後,解壓縮到你爽的地方
開啟 CMD 或是 POWERSHELL 切換到你解壓縮的目錄裡面,要不要把這執行檔加環境變數就隨你
輸入命令 : 執行檔路徑 -l 語言檔路徑

範例 : 
./EsoExtractData.exe -l ./data/zh.lang

這樣你會得到 zh.lang.csv 和 zh.lang.id.csv 兩個檔案,有 id 的那個檔沒屁用不用管它

ESO官方的語言包 UESP 有整理好放在 http://esoitem.uesp.net/viewlog.php 最下面有個 ESO Raw File Download
點進去就可以抓你要的版本,然後挑選 lang.zip 檔案抓回來
解壓縮後就可以看到它已經解編好的 en.lang.csv 不需要自己再解編一次,當然你很閒也可以

整理 CSV 檔案內容

由於語言包的 CSV 內容是整個遊戲的所有翻譯,整包尺寸都超過 50MB,且跟技能與套裝無關的翻譯也不需要
所以你必須先手動的把內容先過濾出來,很簡單啦大概 1 分鐘而已

  1. 使用文字編輯器打開 CSV 檔案,請不要白癡的用 Excel 打開,會超級慢而且之後可能會有編碼問題,上傳有機率造成錯誤,文字編輯器請選擇那種有 多行同時編輯功能的 用 筆記本 或 notepad 可能會弄到哭出來
    註 : 你也可以用 Excel 處理,請記得存檔為 CSV 格式,並選擇使用 UTF-8 作為存檔編碼
  2. 打開檔案後你可以看到類似下方範例中的樣子 (中英文混搭是我整理過 ESO+漢化組的檔案 示範說明用)
    第 1 組數字應該是 分類功能 
    第 3 組數字應該是該資料的 群組編號
    第 4 組數字應該是該資料的 唯一編號
    • 198758357 : 應該是名稱類的,包含技能,裝備名稱,buff 名稱 ... 等等
    • 132143172 : 應該是複雜效果,包含技能效果,套裝第五件效果,buff 效果 ... 等等
    • 50040644 : 應該是技能有 morph 的時後,多出來的那條綠色的說明文字
  3. 請你開啟一個空白的純文字檔案 (請一定確定該檔案是用 UTF-8 編碼)
    如果你沒有調整過你的 筆記本 設定,它預設不是用 UTF-8 編碼,你整理好要選另存新檔,這樣它會有選項給你
    google 筆記本 utf-8 會有很多教學
    1. 先將所有 132143172 的內容,整行複製丟到空白文件的開頭
    2. 再將所有 50040644 的內容,整行複製丟到空白文件
    3. 最後才將最多的 198758357 的內容,整行複製丟到空白文件的尾端
    4. 存檔好了記得把檔案名稱改成 xxx.csv (xxx隨便你)
  4. 在可多行文字編輯器中整行複製的方法是,先全選你要的編號,然後按一下 Home,再按住 Shift + End
    然後 ctrl + c 就可以了
"198758357","0","15540","25426816","Toppling Charge"
"132143172","0","15540","19799741","用神聖的長矛衝向敵人,造成<<1>>,擊暈他們<<2>>,並使其失衡。\n\n如果其正在施法,則可以打斷目標。"
"50040644","0","15540","9848296","@E總是會擊暈敵人並使他們失衡,無論他們是否正在施法。"
"198758357","0","15540","22091417","Toppling Charge"
"132143172","0","15540","18053390","Charge with your divine lance to impale an enemy, dealing <<1>>, stunning them for <<2>>, and setting them Off Balance.\n\nInterrupts the target if they were casting."
"50040644","0","15540","9148346","@EAlways stuns the enemy and sets them Off Balance, regardless if they are casting."
"198758357","0","66899","9075448","Spell Power Cure"
"198758357","0","66899","25720934","技能治癒"
"132143172","0","66899","18262002","When you overheal yourself or an ally, you give the target Major Courage for <<1>> which increases their Weapon and Spell Damage by <<2>>."
"132143172","0","66899","20032605","當你治療自己或一名生命值為|cffffff100|r%生命值的盟友時,有|cffffff50|r%機率給予目標勇氣(強)<<1>>,增加其武器和法術傷害<<2>>。"

上傳檔案

上傳檔案就沒啥好說的了,請盡量填寫上傳的版本,中英文是分開的
如果檔按過大 2 個 CSV 加起來超過 20MB,你可以分 2 次傳
也可以把單一個 CSV 拆成 2 份傳,例如每 12345 行存一個 CSV

請注意每次上傳的時候 CSV 檔案開頭一定要是全部的 132143172 分類
因為 程式碼跑到 198758357 分類的時候,會去檢查這個 名稱 它有沒有對應的 132143172
如果沒有,表示它不是技能名稱,也不是套裝名稱,也不是 Buff 名稱
就會略過不進資料庫,並免資料太過查詢速度會變慢

2020-11-05 實測
英文語言包共有 80萬6千行
整理好 CSV 後 3 個分類會剩 7萬6千行
匯入資料庫過濾掉沒用的 198758357 剩下 1萬筆資料
所以能省掉很多不必要的搜尋負擔務必要做好再上傳

格式化語言包中數值參數

目前語言包中很多 |cXXXXXX|r 或是 <<X>> 的內容
它主要是提供遊戲可以在這邊做顏色變換,和插入計算過後的數值用的
舉一個極端一點的例子

UESP 給的資料長這樣

Crush the earth beneath you, dealing $1 Physical Damage to all enemies within 6 meters of you. Debris ripped from the ground is held around you for 10 seconds.Activating the ability again allows you to launch part of the debris at an enemy, dealing $2 Physical Damage, up to 3 times. The final cast stuns for 2.5 seconds.Each hit applies Stagger, increasing damage taken by 65 per stack for 5 seconds.

ESO 語言包長這樣

Crush the earth beneath you, dealing <<1>> to all enemies within |cffffff6|r meters of you. Debris ripped from the ground is held around you for <<2>>.\n\nActivating the ability again allows you to launch part of the debris at an enemy, dealing <<3>>, up to |cffffff3|r times. The final cast stuns for <<4>>.\n\nEach hit applies Stagger, increasing damage taken by <<5>> per stack for <<6>>.

漢化語言包長這樣

用岩石衝擊敵人, 造成 <<1>>,並對其施加一層錯亂效果,持續<<2>>。每層增加<<3>>點目標受到的傷害。\n\n被錯亂效果疊加到|cffffff3|r層的敵人將被眩暈<<4>>,且所有層數會被移除。

有上顏色的地方就是 變數 由於 UESP 有提供計算公式,所以公會網站上你是可以輸入你的 血魔耐武法 讓數值接近遊戲中的數值,我也有做這部分,但現在漢化要把他們套上這些數值就比較麻煩

上面這種極端的狀況連數量都對不起來就沒辦法了,而有的是順序不一樣(中英文語法問題)
然後還要再做文字分析 ... balabala

目前 20201107的程式分析結果

漢化比對失敗-變數數量不同 : 196 筆,通常發生在漢化太舊,跟ESO語言包不符合

USEP比對失敗-變數不足 : 5 筆,目前發生在,UESP的資料,與ESP語言包不符合 (應該是這幾天改版問題)

多行編輯器推薦

免費 : https://code.visualstudio.com/

小錢 : https://www.sublimetext.com/3

大錢 : https://www.jetbrains.com


避免自己忘記自己資料表在幹嘛的筆記

透過 autoloadset 自動把 UESP 上的資料庫抓回來 (純英文) > oj_set

透過 autoloadskill 自動把 UESP 上的資料庫抓回來 (純英文) > oj_skills

透過 autoloadlang 比對 UESP 和 漢化包 中的語言檔案 > oj_lang4eso
此 2 者的語言包資料都不一定是最新的

前台觸發 popup 事件時 , 會用 function findmyZlang($rep)
oj_set > 比對 oj_lang4eso > 頁面同時秀出中英文
oj_skills > 比對 oj_lang4eso > 頁面同時秀出中英文
oj_set oj_skills 揭有預留中文欄位來覆蓋 oj_lang4eso 中文字
但因為沒有奴隸肯做 , 所以功能頁面先刪掉了