Like Share Discussion Bookmark Smile

J.J. Huang   2022-05-05   天堂私服 8.對話檔分析/修改   瀏覽次數:次   DMCA.com Protection Status

天堂私服 | 執行行動分析<強化魔法師篇>

章節用意

透過分析”強化魔法師”NPC的對話檔,嘗試分析與伺服器之間的互動,並不會介紹過多的程式碼,僅大略提及說明。

版本資訊

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

前言

在開始分析前,請務必先將以下文章閱讀完畢。

分析

以下分析使用銀騎士村莊倫德羅(強化魔法師)來做分析修改範例。
可見該NPC第一頁對話檔內有「接受強大火花魔法」黃色字體,點擊後在金錢足夠的情況下,於身上施放近戰的輔助技能,且對話框會顯示好,完成了

  • 1.使用名稱找尋:
    • 進入資料庫搜尋spawnlist_npclocation倫德羅
    • 透過npcid去搜尋對應的行動。
    • 資料庫搜尋npcactionnpcid81356
    • 最終可以取得對話檔名稱為bs_01
      1
      2
      3
      4
      SELECT * FROM spawnlist_npc WHERE location = '倫德羅'
      -- 81356
      SELECT * FROM npcaction WHERE npcid = 81356
      -- bs_01
  • 2.使用抽檔程式抽檔:
    • 使用抽檔工具去看bs_01對話檔。
    • 以下為bs_01對話檔的內容,對應倫德羅的對話框第一頁的內容。
    • 透過抽檔工具匯出該對話檔`bs_01-c.html。
  • 3.查看對話檔:
    • 以下使用編輯器去開啟。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      <html>
      <body>
      <font fg=ffffff><p align=left><name></p></font>
      <br>
      您目前可以<font fg=ffffaf>花費3000金幣</font>購買魔法或是以低廉的價格製造<a link="bs_m5">魔法卷軸。</a>
      <br><br>
      <font fg=ffffaf>[適用於近距離攻擊的魔法]</font><br>
      <a action="a">「接受強大火花魔法」</a><br>
      <font fg=ffffaf>[適用於遠距離攻擊的魔法]</font><br>
      <a action="b">「接受猛烈暴風魔法」</a><br>
      <font fg=ffffaf>[適用於法術攻擊的魔法]</font><br>
      <a action="c">「接受清淨靈魂魔法」</a><br>
      [製作魔法卷軸]<br>
      <font fg=ffffaf>少量製造:</font><a action="1">1個</a>/<a action="2">5個</a>/<a action="3">10個</a><br>
      <font fg=ffffaf>大量製造:</font><a action="4">100個</a>/<a action="5">500個</a><br>
      <br>
      亞丁大陸上魔法的流動正在產生變化,說不定再也無法使用魔法,
      因此我們遵照塔拉斯的命令來到這裡,幫助正在修練中的魔法師,
      我們會收取少許的費用,請您不要為此感到不悅。<br><br>
      <a link="bs_02"> 「開玩笑的吧?」</a><br>
      </body>
      </html>
    • 這邊來針對「接受強大火花魔法」的內容分析。
    • 可見使用<a>標籤,且action屬性的值為a
    • 所以在伺服器端會收到a這個字串做判斷對應。
  • 4.分析程式碼:
    • 透過搜尋C_NPCAction開啟程式碼。
      1
      src/l1j/server/server/clientpackets/C_NPCAction.java
    • 4345~4371,為主要的判斷與處理邏輯。
    • 可以看到扣款3000元判斷:
      • 成功後會設定htmlid = bs_done
      • 失敗後會設定htmlid = bs_adena
    • 至於為何知道是這支程式、這段程式碼,<請自行分析、閱讀程式碼>
  • 5.使用抽檔程式抽檔:
    • 使用抽檔工具去看bs_donebs_adena對話檔。
    • 以下為bs_donebs_adena對話檔的內容,對應倫德羅的對話框第二頁的內容。

結論

  • 程式碼:
    • src/l1j/server/server/clientpackets/C_NPCAction.java
      • 處理客戶端來的NPCaction處理。

結語

在此章節主要分析對話檔與伺服器端之間的互動,可以了解透過action屬性的值來執行一些動作;
像是增加人物狀態、兌換物品、內掛設定、商店購買…等等,基本上都可以透過來作互動執行。

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

免責聲明

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