Like Share Discussion Bookmark Smile

J.J. Huang   2022-05-11   天堂私服 9.變身檔分析/修改   瀏覽次數:

天堂私服 | 客戶端和登入器與變身檔關係分析

章節用意

針對客戶端與登入器對list.sprlist.spz的關係做分析。

版本資訊

  • 客戶端版本
    • 天堂(Lineage 3.81C)
  • 核心版本
    • L1J-3.80c
  • 登入器版本
    • L1J-3.80c

前言

在開始分析前,請務必先將變身檔新增修改<快速入門>文章閱讀與實際操作過;還有對SPZ、XML加解密 工具的工具的了解與使用。
另外以下說明可能並不是非常正確的,因為我也在自行分析學習中,所以只是做一個自己理解的簡單說明。
<如有錯誤或是可以提供更詳細的說明,歡迎糾正與分享。>

說明

開始說明前,要先理解一些簡單的定義:

  • 客戶端:表示天堂的主程式。
    • 例:Lineage 3.81CLineage 7.2CLineage 8.8C
  • 登入器:表示私服的登入程式
    • 例:L1Login-Login_363L1Login-Login_380

      註:部分版本可能找不到對應的登入器版本,往往都是使用lin.bin檔直接做登入使用。

  • 變身檔:基本上就是list.sprlist.spz檔,該部分有分為兩種 -
    • 客戶端使用
      • 所謂的客戶端使用,就是在沒有使用登入器的方式去做登入時/或是登入器沒有設定讀取自定義變身檔的時候,客戶端所讀取的變身檔的一系列操作、動作編碼等等;此時候客戶端就是讀取text.pak內的list.sprlist.spz設定。
    • 登入器使用
      • 登入器的使用,通常是針對登入器內提供的變身檔並打包成pak檔,並設定給登入器使用,此時就會讀取設定的pak變身檔設定。

問題

看完定義後,產生幾個疑問:

  • 不使用登入器的變身檔:
      1. 客戶端到底是讀取list.spr、還是list.spz為主呢?
      1. 單修改list.sprlist.spz是否有效果?
      1. 單修改list.sprlist.spz其一是否會造成遊戲崩潰呢?
  • 使用登入器的變身檔:
      1. 自定義變身檔未設定的部分,是否會讀取客戶端內的list.sprlist.spz的設定?
      1. 自定義變身檔未設定的部分,是否會與客戶端內的list.sprlist.spz的設定衝突?

分析

以下將針對上述產生的五個問題做嘗試並分析:

  • 前置作業:
    • 將登入器的Login.ini設定改為不讀取自定義的變身檔,並將客戶端內放的TW13081901.pak一併先刪除。
    • 已先將相關的spr圖檔吃檔完成。
    • list.spr抽檔完成。
    • list.spz抽檔完成,並解密完成。

      註:list.sprlist.spz會備份最原始檔已利後面的分析。

  • 指令使用:
    • 使用GM的權限角色。
    • 輸入影像動畫指令。
      1
      .gfxid ${圖檔編號} ${數量} ${名稱}
    • 此範例變身編號,使用的主要編號為362
      1
      .gfxid 362 1 1
    • 可見下圖,放置出來的圖檔並不會正常呼吸或是人物晃動,就是死板板的一張圖片。

      註:該放置會在畫面上產生一個類似NPC的角色,當伺服器重開後,該NPC就會移除。


  • 驗證一:
    • 修改list.spr,新增#362(舊版死亡騎士-焚焰)的變身檔。
    • list.spr丟至text目錄,並吃檔。
    • 重新登入觀看結果。
    • 依舊是死板板,表示沒有效果。
  • 驗證二:
    • 將原始的list.spr丟至text目錄,並吃檔,做還原的動作。
    • 修改list.spz,新增#362(舊版死亡騎士-焚焰)的變身檔。
    • list.spz丟至text目錄,並吃檔。<注意吃檔回去需加密>
    • 重新登入觀看結果。
    • 可見舊版死亡騎士-焚焰正常在呼吸,表示顯示正常。

根據上面的操作,可以對123的問題做出解釋:

  • 客戶端是依list.spz為主。
  • 單修改list.spr是沒有效果,list.spz是有效果的。
  • 單修改是不會造成崩潰。

  • 驗證三:
    • 不還原list.spz的情況下,使用登入器設定讀取自定義變身檔的情況下。
    • 更新登入器Login.ini設定改為讀取自定義的變身檔,並將TW13081901.pak放置客戶端。
    • 重新登入觀看結果。
    • 結果是死板板,表示沒有效果。
  • 驗證四:
    • 修改登入器變身檔TW13081901.txt,新增#362(舊版死亡騎士-焚焰)的變身檔。
    • 重新打包TW13081901.pak,並將TW13081901.pak再次放置客戶端覆蓋。
    • 重新登入觀看結果。
    • 可見舊版死亡騎士-焚焰正常在呼吸,表示顯示正常。

根據上面的操作,可以對45的問題做出解釋:

  • 自定義變身檔未設定的部分是完全不讀取客戶端。
  • 自定義變身檔未設定的部分不會與客戶端衝突。

注意

  • 使用登入器的變身檔:
    • 每次編輯完TW13081901.txt後,重新產生TW13081901.pak
    • 務必再次更新登入器設定,讀取自定義的變身檔,重新產生Login.ini
    • 然後將Login.iniTW13081901.pak,放置/覆蓋客戶端。
  • 原因解釋:
    • 如果只單純更新TW13081901.pak,客戶端重新登入”可能”不會抓取到最正確的變身檔編碼。

      註:因為在研究和測試過程中有發生過此狀況,固建議就是都一起更新。

總結

  • 不使用登入器的變身檔:
      1. 客戶端到底是讀取list.spr、還是list.spz為主呢?
        • 客戶端是依list.spz為主。
      1. 單修改list.sprlist.spz是否有效果?
        • 單修改list.spr是沒有效果list.spz是有效果的
      1. 單修改list.sprlist.spz其一是否會造成遊戲崩潰呢?
        • 單修改是不會造成崩潰。
  • 使用登入器的變身檔:
      1. 自定義變身檔未設定的部分,是否會讀取客戶端內的list.sprlist.spz的設定?
        • 自定義變身檔未設定的部分是完全不讀取客戶端
      1. 自定義變身檔未設定的部分,是否會與客戶端內的list.sprlist.spz的設定衝突?
        • 自定義變身檔未設定的部分不會與客戶端衝突

結語

這個部份在網路上也沒有人對其做分析與教學,希望透過這樣的分析教學可以讓大家對這部分有更進一步的了解。

原創文章真的不易,希望多多支持,感謝。
最後建議回顧一下首章天堂私服 | 天堂私服架設教學,了解其章結目錄,此處會不定時更新。

免責聲明

  • 本部落格文章中皆不提供任何所謂的遊戲「主程式」、「模擬器」、「登入器」…等等相關程式的下載點。
  • 本部落格文章中所見之遊戲主程式和服務器端程序均來自網路發佈,版本歸原作者所有
  • 本部落格文章為研究SQL資料庫與修改JAVA語法使用,非商業用途,亦無做營運事實等任何一切商業行為
  • 本部落格文章內容是為研究學習設計思想和原理為目的,絕沒有故意侵權或惡意抄襲、篡改其他遊戲內容