Class PlayerInteractionHandler

java.lang.Object
handling.channel.handler.PlayerInteractionHandler

public class PlayerInteractionHandler extends Object
處理玩家互動封包,統一管理交易、玩家商店、雇用商人與迷你遊戲的全部操作。

本類別以私有列舉 Interaction 定義所有互動動作碼,並在單一 PlayerInteraction 方法內以 switch 分派:

  • 一對一交易INVITE_TRADE / SET_ITEMS / SET_MESO / CONFIRM_TRADE — 透過 MapleTrade 管理交易流程。
  • 玩家商店MaplePlayerShop):建立、上架、購買、 下架道具及收取楓葉幣。
  • 雇用商人HiredMerchant):進出、維護、黑名單管理 及楓葉幣領取。
  • 迷你遊戲MapleMiniGame):圍棋(Omok)/翻牌, 含準備、開始、落子、認輸、求和及再來一局等狀態機轉換。

MapleServerHandler 分派,共用 LittleEndianAccessor 讀取封包,回傳封包由 PlayerShopPacketCWvsContext 組裝。

  • Constructor Details

    • PlayerInteractionHandler

      public PlayerInteractionHandler()
  • Method Details

    • PlayerInteraction

      public static final void PlayerInteraction(LittleEndianAccessor slea, MapleClient c, MapleCharacter chr)
      處理玩家互動封包的統一入口,依封包首位的動作碼分派至對應的交易、玩家商店、 雇用商人或迷你遊戲處理流程。

      讀取封包首個位元組並透過 PlayerInteractionHandler.Interaction.getByAction(int) 解析為動作; 若 chrnull 或動作無法辨識則直接略過。其餘流程多會變動遊戲狀態 並送出/廣播回應封包,常見副作用包含:

      包含多項防護檢查(例如交易前清除捲動位置、地圖功能限制 FieldLimitType、 道具是否可交易、購買數量與庫存空間驗證等),不符條件時不執行對應操作。

      Parameters:
      slea - 待解析的封包讀取器,首個位元組為互動動作碼
      c - 觸發此互動的玩家連線
      chr - 觸發此互動的角色;為 null 時直接返回