Class PlayerInteractionHandler
java.lang.Object
handling.channel.handler.PlayerInteractionHandler
處理玩家互動封包,統一管理交易、玩家商店、雇用商人與迷你遊戲的全部操作。
本類別以私有列舉 Interaction 定義所有互動動作碼,並在單一
PlayerInteraction 方法內以 switch 分派:
- 一對一交易:
INVITE_TRADE/SET_ITEMS/SET_MESO/CONFIRM_TRADE— 透過MapleTrade管理交易流程。 - 玩家商店(
MaplePlayerShop):建立、上架、購買、 下架道具及收取楓葉幣。 - 雇用商人(
HiredMerchant):進出、維護、黑名單管理 及楓葉幣領取。 - 迷你遊戲(
MapleMiniGame):圍棋(Omok)/翻牌, 含準備、開始、落子、認輸、求和及再來一局等狀態機轉換。
由 MapleServerHandler 分派,共用 LittleEndianAccessor
讀取封包,回傳封包由 PlayerShopPacket 及
CWvsContext 組裝。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic final voidPlayerInteraction(LittleEndianAccessor slea, MapleClient c, MapleCharacter chr) 處理玩家互動封包的統一入口,依封包首位的動作碼分派至對應的交易、玩家商店、 雇用商人或迷你遊戲處理流程。
-
Constructor Details
-
PlayerInteractionHandler
public PlayerInteractionHandler()
-
-
Method Details
-
PlayerInteraction
public static final void PlayerInteraction(LittleEndianAccessor slea, MapleClient c, MapleCharacter chr) 處理玩家互動封包的統一入口,依封包首位的動作碼分派至對應的交易、玩家商店、 雇用商人或迷你遊戲處理流程。讀取封包首個位元組並透過
PlayerInteractionHandler.Interaction.getByAction(int)解析為動作; 若chr為null或動作無法辨識則直接略過。其餘流程多會變動遊戲狀態 並送出/廣播回應封包,常見副作用包含:- 建立或結束
MapleTrade一對一交易、設定交易道具與楓葉幣、確認交易。 - 建立或操作
MaplePlayerShop/HiredMerchant: 上架、購買、下架道具、領取楓葉幣、維護黑名單與訪客清單。 - 進行
MapleMiniGame圍棋(Omok)/翻牌的狀態轉換: 準備、開始、落子、認輸、求和及再來一局。 - 透過
MapleClient對玩家庫存(MapleInventoryManipulator) 與商店物件進行新增/移除,並以PlayerShopPacket及CWvsContext回傳結果。
包含多項防護檢查(例如交易前清除捲動位置、地圖功能限制
FieldLimitType、 道具是否可交易、購買數量與庫存空間驗證等),不符條件時不執行對應操作。- Parameters:
slea- 待解析的封包讀取器,首個位元組為互動動作碼c- 觸發此互動的玩家連線chr- 觸發此互動的角色;為null時直接返回
- 建立或結束
-