Class PetPacket

java.lang.Object
tools.packet.PetPacket

public class PetPacket extends Object
寵物(Pet)行為與狀態相關封包的建構器。

本類別以靜態方法提供遊戲頻道所需的寵物封包,包括:

寵物實體為 MaplePet; 送出 opcode 來自 SendPacketOpcode; 組裝使用 MaplePacketLittleEndianWriter

  • Constructor Details

    • PetPacket

      public PetPacket()
  • Method Details

    • updatePet

      public static final byte[] updatePet(MaplePet pet, Item item, boolean active)
      建構更新道具欄中寵物道具資料的封包。

      INVENTORY_OPERATION opcode 對 EQUIPPED 欄位下達移動 / 更新指令, 將寵物移至其道具欄位置並寫入寵物道具 ID 與唯一 ID,最後委由 PacketHelper.addPetItemInfo(MaplePacketLittleEndianWriter, Item, MaplePet, boolean) 序列化完整寵物道具資訊。常用於寵物召喚 / 收回後 同步客戶端道具欄。

      Parameters:
      pet - 目標寵物實體,提供道具欄位置、道具 ID 與唯一 ID
      item - 對應的寵物道具,序列化其完整道具資訊
      active - 寵物當前是否處於啟用(已召喚)狀態
      Returns:
      封包位元組陣列
    • showPet

      public static final byte[] showPet(MapleCharacter chr, MaplePet pet, boolean remove, boolean hunger)
      建構在地圖上生成或收回寵物的封包(便捷多載,show 預設為 false)。

      等同呼叫 showPet(MapleCharacter, MaplePet, boolean, boolean, boolean) 並以 false 帶入 show,即使用 SPAWN_PET opcode。

      Parameters:
      chr - 寵物的擁有者角色
      pet - 目標寵物實體
      remove - true 表示收回寵物,false 表示生成寵物
      hunger - 是否因飢餓觸發此次顯示更新
      Returns:
      封包位元組陣列
    • showPet

      public static final byte[] showPet(MapleCharacter chr, MaplePet pet, boolean remove, boolean hunger, boolean show)
      建構在地圖上生成或收回寵物的封包。

      show 旗標選擇 opcode(trueSHOW_PETfalseSPAWN_PET),寫入擁有者角色 ID、寵物索引(取自 MapleCharacter.getPetIndex(MaplePet))、生成 / 收回旗標與飢餓旗標。 當 removefalse(生成)時,另以 addPetInfo(MaplePacketLittleEndianWriter, MapleCharacter, MaplePet, boolean) 附加寵物的完整顯示資訊。

      Parameters:
      chr - 寵物的擁有者角色
      pet - 目標寵物實體
      remove - true 表示收回寵物,false 表示生成寵物
      hunger - 是否因飢餓觸發此次顯示更新
      show - true 使用 SHOW_PET opcode,false 使用 SPAWN_PET
      Returns:
      封包位元組陣列
    • removePet

      public static final byte[] removePet(int cid, int index)
      建構強制移除指定寵物的封包。

      SPAWN_PET opcode 寫入角色 ID 與寵物索引,並附上長度為 0 的尾端, 通知客戶端將該寵物自地圖移除。

      Parameters:
      cid - 寵物擁有者的角色 ID
      index - 欲移除寵物的索引
      Returns:
      封包位元組陣列
    • movePet

      public static final byte[] movePet(int cid, int pid, byte slot, Point pos, List<LifeMovementFragment> moves)
      建構同步寵物移動路徑的封包。

      MOVE_PET opcode 寫入角色 ID、寵物欄位、寵物唯一 ID,並委由 PacketHelper.serializeMovementList(MaplePacketLittleEndianWriter, List) 序列化 LifeMovementFragment 移動片段清單。

      Parameters:
      cid - 寵物擁有者的角色 ID
      pid - 寵物的唯一 ID
      slot - 寵物所在的欄位
      pos - 寵物座標(保留參數,未序列化進封包)
      moves - 寵物移動路徑片段清單
      Returns:
      封包位元組陣列
    • petChat

      public static final byte[] petChat(int cid, int un, String text, byte slot)
      建構顯示寵物說話氣泡的封包。

      PET_CHAT opcode 寫入角色 ID、寵物欄位、動作編號與聊天文字, 使客戶端在該寵物上方顯示對話氣泡。

      Parameters:
      cid - 寵物擁有者的角色 ID
      un - 寵物的動作 / 表情編號
      text - 寵物說話的文字內容
      slot - 寵物所在的欄位
      Returns:
      封包位元組陣列
    • commandResponse

      public static final byte[] commandResponse(int cid, byte command, byte slot, boolean success, boolean food)
      建構寵物指令反應動畫的封包。

      PET_COMMAND opcode 寫入角色 ID、寵物欄位與指令編號,並依 commandsuccess 決定反應結果旗標:當 command 為 1 時走互動 分支,否則以 success 表示指令是否成功,使客戶端播放對應的寵物反應動畫。

      Parameters:
      cid - 寵物擁有者的角色 ID
      command - 寵物指令編號
      slot - 寵物所在的欄位
      success - 指令是否成功(影響反應動畫)
      food - 是否為餵食類指令(保留參數,未序列化進封包)
      Returns:
      封包位元組陣列
    • showPetLevelUp

      public static final byte[] showPetLevelUp(MapleCharacter chr, byte index)
      建構寵物升級特效的封包。

      SHOW_FOREIGN_EFFECT opcode 寫入角色 ID、特效類型(6 表寵物升級) 與寵物索引,使周遭客戶端在該寵物上播放升級特效。

      Parameters:
      chr - 寵物的擁有者角色
      index - 升級寵物的索引
      Returns:
      封包位元組陣列
    • showPetUpdate

      public static final byte[] showPetUpdate(MapleCharacter chr, int uniqueId, byte index)
      建構更新寵物例外清單(自動拾取忽略道具)的封包。

      PET_EXCEPTION_LIST opcode 寫入角色 ID、寵物索引與寵物唯一 ID,並附上 數量為 0 的例外道具清單,用於同步寵物自動拾取的忽略項目。

      Parameters:
      chr - 寵物的擁有者角色
      uniqueId - 寵物的唯一 ID
      index - 寵物的索引
      Returns:
      封包位元組陣列
    • petStatUpdate

      public static final byte[] petStatUpdate(MapleCharacter chr)
      建構更新角色所有已召喚寵物能力值的封包。

      UPDATE_STATS opcode 並帶入 MapleStat.PET 遮罩, 依序寫入角色所有已召喚寵物(MaplePet.getSummoned())的唯一 ID; 不足 3 個時以 0 補滿至固定 3 組。讀取角色當前寵物狀態。

      Parameters:
      chr - 目標角色,提供其寵物清單
      Returns:
      封包位元組陣列
    • addPetInfo

      public static void addPetInfo(MaplePacketLittleEndianWriter mplew, MapleCharacter chr, MaplePet pet, boolean showpet)
      將單一寵物的顯示資訊寫入指定的封包寫入器。

      共用的序列化輔助方法,依序寫入寵物道具 ID、名稱、唯一 ID、座標(Y 上移 20)、 動作姿態與所在踏板(foothold)。當 showpettrue 時,於最前另寫入 啟用旗標與寵物索引。供 showPet(MapleCharacter, MaplePet, boolean, boolean, boolean) 等封包建構流程內嵌寵物資料時使用。

      Parameters:
      mplew - 目標封包寫入器,寵物資料將寫入其中
      chr - 寵物的擁有者角色(用於取得寵物索引)
      pet - 欲序列化的寵物實體
      showpet - true 時於最前附加啟用旗標與寵物索引