天堂123分類:天堂123新手區 天堂123玩家分享 天堂123私服技巧 天堂123架設教學 返回天堂123首頁
您当前位置: 天堂123 > 天堂架設 > 私服強化魔法師執行行動分析

私服強化魔法師執行行動分析

2022/7/16

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

對話檔分析/修改的相關文章
了解查找NPC對應對話檔方法。
了解對話檔的抽檔與修改方式。
了解其各種html標籤的說明與使用。
抽檔工具請參考:PakViewer 介紹
分析
以下分析使用銀騎士村莊的倫德羅(強化魔法師)來做分析修改範例。
可見該NPC第一頁對話檔內有「接受強大火花魔法」黃色字體,點擊後在金錢足夠的情況下,於身上施放近戰的輔助技能,且對話框會顯示好,完成了。


1.使用名稱找尋:
進入資料庫搜尋spawnlist_npc的location為倫德羅。
透過npcid去搜尋對應的行動。
資料庫搜尋npcaction的npcid為81356。
最終可以取得對話檔名稱為bs_01。
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.查看對話檔:
以下使用編輯器去開啟。

<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開啟程式碼。
src/l1j/server/server/clientpackets/C_NPCAction.java

4345~4371,為主要的判斷與處理邏輯。
可以看到扣款3000元判斷:
成功後會設定htmlid = bs_done。
失敗後會設定htmlid = bs_adena。
至於為何知道是這支程式、這段程式碼,<請自行分析、閱讀程式碼>。
5.使用抽檔程式抽檔:
使用抽檔工具去看bs_done與bs_adena對話檔。
以下為bs_done與bs_adena對話檔的內容,對應倫德羅的對話框第二頁的內容。

結論
程式碼:
src/l1j/server/server/clientpackets/C_NPCAction.java
處理客戶端來的NPC的action處理。