在開始分析前,要知道GM指令的指令效果與使用方式,才方便開啟除錯(Debug)進行分析。
效果:生成指定的套裝。
範例:
.itemset ${套裝名稱}
1.分析資料表:
先進入commands表,找到itemset的指令。
class_name是L1CreateItemSet。
2.分析程式碼:
透過搜尋L1CreateItemSet開啟程式碼。
src/l1j/server/server/command/executor/L1CreateItemSet.java
啟動模擬器除錯模式,並啟動天堂遊戲登入。
使用創立套裝的GM指令。(由於不知道套裝設定的名稱,先帶入1)
.imteset 1
會顯示1 是未定義的套裝內容。
回到IDEA,斷點於43。
回到天堂遊戲內,再次執行創立套裝的GM指令。
.imteset 1
使用評估表達式Evaluate Expression來分析GMCommandsConfig.ITEM_SETS。
可發現抓取的key為dkset。
點擊Mute Breakpoints將所有斷點先關閉,Resume Program恢復程式
回到天堂遊戲內,再次執行創立套裝的GM指令,將1改為dkset。
.imteset dkset
發現創立了死亡騎士套裝並且全部都是+10(請用鑑定卷軸鑑定)。
至此可以知道有設定一個死亡騎士的套裝,並且名稱為dkset且全部都是+10的。
此時我們繼續分析其他程式碼;關於GMCommandsConfig.ITEM_SETS的部分,後面會分析。
2.分析程式碼:
到此基本上就對創立套裝的指令分析完成。
結論
程式碼:
src/l1j/server/server/command/executor/L1CreateItemSet.java
處理客戶端來的GM指令itemset的處理。
src/l1j/server/server/GMCommandsConfig.java
GM指令相關的設定檔,透過XML欄設定提供。
./data/xml/GmCommands/GMCommands.xml
存放GM指令對應的XML內容。
|
|
|
|
|
|