血盟成員「某某某」登入遊戲。還記得當初只要簡單修改 Systemmsg-tw.dat 檔案, 就可以讓血盟成員登入訊息, 更加的符合人性, 至少, 可以看出是誰上線了.
3章之後, 由於 DAT 檔加密改變, 之前的 L2Decrypt 早已無法使用.
現在縱然透過
L2encdec 可以解開 DAT 檔的外層加密, 但由於資料封裝的關係, 解密的 DAT 檔仍為二元檔, 難以直接編輯.
LushiferEvil板友在
無限遠教學中, 也提到了這個困難, 但是他針對的是 L2Decrypt 新版, 而我的著眼點不同.
由於 L2Decrypt 久未更新, 因此針對 DAT 檔的編輯, 遲遲無法達成. 直到後來
Dstuff 網站又釋出了
L2asm & disasm (v0.981) 軟體, 用來進行 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 後面增加10個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...
8. 最後透過 l2encdec -e 413 dec-systemmsg-tw.dat systemmsg-tw.dat 加密即可
==== 成品(寫給懶的看上面那堆的) ====
1.
7/3系統調整+env.int除霧+全彩訊息+無限遠+穿牆 更新包注意 這邊只附上有修改過的, 抓回去直接把裡面檔案解壓縮到
C:\Program Files\NCTaiwan\天堂II序幕\system中覆蓋原始檔案
提供給完全未安裝過無限遠, 想一次搞定的人下載. 不包含原先system資料夾內未更動檔案, 所以大小小很多.
2.
7/3 Systemmsg-tw.dat修改顯示ID+字型顏色象牙白下午閒來無事做的, 因為有朋友反應登入的字樣很容易洗頻的時候沒注意到
改成跟種田/瞬殺發動時相同的顏色. 抓下來後請改檔名為 systemmsg-tw.dat (前面的部份拿掉), 然後拷貝入system資料夾.
需要先做過l2encdec修補3.
7/3 Systemmsg-tw.dat修改全彩訊息抓下來後請拷貝入system資料夾.
需要先做過l2encdec修補4.
7/3系統調整+env.int除霧+全彩訊息+無限遠+穿牆 超級懶人包將
C:\Program Files\NCTaiwan\天堂II序幕\資料夾中system子目錄完全砍掉, 用這個檔案解壓出來的system資料夾取代即可
> 已經快要火大的人下載.
有人說上面的連結有問題(雖然我點還是可以), 那我放另個位置你們自己選著下吧
7/3血盟登入訊息+ID+象牙白7/3全彩訊息7/3系統調整+env.int除霧+全彩訊息+無限遠+穿牆 更新包7/3系統調整+env.int除霧+全彩訊息+無限遠+穿牆 超級懶人包==== 寫在最後 ====
盯了一天的 Hex code, 頭有夠暈, 最後總算是完成了, 希望能夠拋磚引玉, 看還沒有什麼需要變動的訊息, 再做修改囉.
補充一下, 目前要更動"訊息字型的顏色"比較簡單, 要改變字串內容比較難.
要播放聲音也還算容易, 例如想要的話也可以把好友登入的音效套用到血盟成員登入上面, 也可以把血盟成員登入遊戲這句話改成紫色. DAT能解開對於客製化用戶端是非常重要的一步. :)