> ==== 寫在前面 ====
>
血盟成員「某某某」登入遊戲。> 還記得當初只要簡單修改 Systemmsg-tw.dat 檔案, 就可以讓血盟成員登入訊息, 更加的符合人性, 至少, 可以看出是誰上線了.
> 3章之後, 由於 DAT 檔加密改變, 之前的 L2Decrypt 早已無法使用.
> 現在縱然透過
L2encdec 可以解開 DAT 檔的外層加密, 但由於資料封裝的關係, 解密的 DAT 檔仍為二元檔, 難以直接編輯.
> LushiferEvil板友在
無限遠教學中, 也提到了這個困難, 但是他針對的是 L2Decrypt 新版, 而我的著眼點不同.
> 由於 L2Decrypt 久未更新, 因此針對 DAT 檔的編輯, 遲遲無法達成. 直到後來
>
Dstuff 網站又釋出了
L2asm & disasm (v0.98) 軟體, 用來進行 DAT 檔的資料解封.
> 無奈的是, 這個軟體並"不支援"萬國碼(UNICODE), 因此只能用來處理美版天二, 中文版不論加密或解密都會產生錯誤結果.
> 由於 L2asm/L2disasm 這套軟體的確可以解開DAT檔的封裝, 但dstuff討論區中, 該作者並無打算改寫程式讓其支援萬國碼, 亦無打算釋出程式庫, 這點使的透過L2asm/L2disasm 軟體來處理中文版DAT檔有相當難度.
> 知道了這個消息之後, 相當振奮, 因為代表的DAT擋不是不能解, 而只是目前沒有適合的軟體協助; 在研究了該軟體之後, 我參考他的DDF format以及舊版本解開的systemmsg-tw.dat , 進行直接暴力破解DAT檔, 經過一天非常痛苦的 Hex 編輯後, 終於把他完成了.
> ==== 作法(寫給有興趣想自己作的人看) ====
> 1. 所有的DAT檔, 在原始狀況下都是加密的(v413), 所以在做任何操作之前, 請使用L2encdec解開. 這邊也代表著, 沒有進行 L2encdec 的 L2.exe Patch, 將無法套用這個修改. 所以第一步就是先參考LushiferEvil那篇文章, 套用修改.
> 2. 將資料夾中的 systemmsg-tw.dat 檔透過L2encdec解密, 得到 dec-systemmsg-tw.dat
> 3. 參考 L2asm/disasm 中, systemmsg-e.ddf內容(可能需要配合閱讀MANUAL), 可以得知 systemmsg.dat 的檔案儲存格式
> 4. 拿出 Hex Editor(我是用UltraEdit), 尋找 3001000001000000, 這代表著血盟成員登入遊戲時所引發的系統訊息的 id/UNK_0 (計8bytes)
> 00064a0: 0030 0100 0001 0000 008a 4088 df76 1062 .0........@..v.b
> 00064b0: e154 7b76 6551 4a90 3262 0230 0000 0000 .T{veQJ.2b.0....
> 這串火星玩意就是血盟成員登入遊戲這句話
> (也可以直接找我附上的位址)
> 5. 透過 Hex Insert 在 0x00064b2 後面增加五個bytes, 內容為
0c30 2400 7300 3100 0d30. 這個代表著"「某某某」"字樣. 修改完如下:
> 00064a0: 0030 0100 0001 0000 008a 4088 df76 1062 .0........@..v.b
> 00064b0: e154
0c30 2400 7300 3100 0d30 7b76 6551 .T.0$.s.1..0{veQ
> 00064c0: 4a90 3262 0230 0000 0000 0000 799b b0ff J.2b.0......y...
> 6. 由於變更了字串長度 因此前面也需要做變動如下:
> 00064a0: 0030 0100 0001 0000 008
f 4088 df76 1062 .0........@..v.b
> 00064b0: e154 0c30 2400 7300 3100 0d30 7b76 6551 .T.0$.s.1..0{veQ
> 7. 最後這區的成果應該長這樣:
> 00064a0: 0030 0100 0001 0000 008f 4088 df76 1062 .0........@..v.b
> 00064b0: e154 0c30 2400 7300 3100 0d30 7b76 6551 .T.0$.s.1..0{veQ
> 00064c0: 4a90 3262 0230 0000 0000 0000 799b b0ff J.2b.0......y...
> ==== 成品(寫給懶的看上面那堆的) ====
> 1.
無限遠+鎖右鍵+user.ini除霧+穿牆+血盟登入訊息顯示ID 懶人更新包(1.8M)> 注意 這邊只附上有修改過的, 抓回去直接把裡面檔案解壓縮到
C:\Program Files\NCTaiwan\天堂II序幕\system中覆蓋原始檔案
> 提供給完全未安裝過無限遠, 想一次搞定的人下載. 不包含原先system資料夾內未更動檔案, 所以大小小很多.
> 2.
Systemmsg-tw.dat修改顯示ID(40K)> 給已經裝好無限遠, 只需要血盟登入訊息的人使用, 使用方法同上.
> 3.
Systemmsg-tw.dat修改顯示ID+字型顏色象牙白(40K)> 下午閒來無事做的, 因為有朋友反應登入的字樣很容易洗頻的時候沒注意到
> 改成跟種田/瞬殺發動時相同的顏色.
> 4.
無限遠+鎖右鍵+user.ini除霧+穿牆+血盟登入訊息顯示ID+象牙白 超級懶人包(15.1M)> 將
C:\Program Files\NCTaiwan\天堂II序幕\資料夾中system子目錄完全砍掉, 用這個檔案解壓出來的system資料夾取代即可
> 提供給完全未安裝過無限遠, 不清楚哪些檔案要保留, 上面的三個怎麼弄都不行,
> 已經快要火大的人下載.
> 有人說上面的連結有問題(雖然我點還是可以), 那我放另個位置你們自己選著下吧
>
懶人包(1.8M) - TANet>
血盟登入訊息+ID(40K) - TANet>
血盟登入訊息+ID+象牙白(40K) - TANet>
超級懶人包(15.2M) - TANet> ==== 寫在最後 ====
> 盯了一天的 Hex code, 頭有夠暈, 最後總算是完成了, 希望能夠拋磚引玉, 看還沒有什麼需要變動的訊息, 再做修改囉.
> 補充一下, 目前要更動"訊息字型的顏色"比較簡單, 要改變字串內容比較難.
> 要播放聲音也還算容易, 例如想要的話也可以把好友登入的音效套用到血盟成員登入上面, 也可以把血盟成員登入遊戲這句話改成紫色. DAT能解開對於客製化用戶端是非常重要的一步. :)