Class PetPacket
本類別以靜態方法提供遊戲頻道所需的寵物封包,包括:
- 生成 / 移除:
showPet(召喚或收回)、removePet(強制移除)。 - 道具欄同步:
updatePet更新寵物在EQUIPPED欄位的道具資料, 委由PacketHelper.addPetItemInfo(MaplePacketLittleEndianWriter, Item, MaplePet, boolean)序列化完整寵物道具資訊。 - 移動:
movePet序列化LifeMovementFragment移動路徑。 - 互動:
petChat(寵物說話氣泡)、commandResponse(指令反應動畫)、showPetLevelUp(升級特效)。 - 能力值更新:
updatePetFull同步MapleStat變動。
寵物實體為 MaplePet;
送出 opcode 來自 SendPacketOpcode;
組裝使用 MaplePacketLittleEndianWriter。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddPetInfo(MaplePacketLittleEndianWriter mplew, MapleCharacter chr, MaplePet pet, boolean showpet) 將單一寵物的顯示資訊寫入指定的封包寫入器。static final byte[]commandResponse(int cid, byte command, byte slot, boolean success, boolean food) 建構寵物指令反應動畫的封包。static final byte[]movePet(int cid, int pid, byte slot, Point pos, List<LifeMovementFragment> moves) 建構同步寵物移動路徑的封包。static final byte[]建構顯示寵物說話氣泡的封包。static final byte[]建構更新角色所有已召喚寵物能力值的封包。static final byte[]removePet(int cid, int index) 建構強制移除指定寵物的封包。static final byte[]showPet(MapleCharacter chr, MaplePet pet, boolean remove, boolean hunger) 建構在地圖上生成或收回寵物的封包(便捷多載,show預設為false)。static final byte[]showPet(MapleCharacter chr, MaplePet pet, boolean remove, boolean hunger, boolean show) 建構在地圖上生成或收回寵物的封包。static final byte[]showPetLevelUp(MapleCharacter chr, byte index) 建構寵物升級特效的封包。static final byte[]showPetUpdate(MapleCharacter chr, int uniqueId, byte index) 建構更新寵物例外清單(自動拾取忽略道具)的封包。static final byte[]建構更新道具欄中寵物道具資料的封包。
-
Constructor Details
-
PetPacket
public PetPacket()
-
-
Method Details
-
updatePet
建構更新道具欄中寵物道具資料的封包。以
INVENTORY_OPERATIONopcode 對EQUIPPED欄位下達移動 / 更新指令, 將寵物移至其道具欄位置並寫入寵物道具 ID 與唯一 ID,最後委由PacketHelper.addPetItemInfo(MaplePacketLittleEndianWriter, Item, MaplePet, boolean)序列化完整寵物道具資訊。常用於寵物召喚 / 收回後 同步客戶端道具欄。- Parameters:
pet- 目標寵物實體,提供道具欄位置、道具 ID 與唯一 IDitem- 對應的寵物道具,序列化其完整道具資訊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_PETopcode。- 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(true→SHOW_PET;false→SPAWN_PET),寫入擁有者角色 ID、寵物索引(取自MapleCharacter.getPetIndex(MaplePet))、生成 / 收回旗標與飢餓旗標。 當remove為false(生成)時,另以addPetInfo(MaplePacketLittleEndianWriter, MapleCharacter, MaplePet, boolean)附加寵物的完整顯示資訊。- Parameters:
chr- 寵物的擁有者角色pet- 目標寵物實體remove-true表示收回寵物,false表示生成寵物hunger- 是否因飢餓觸發此次顯示更新show-true使用SHOW_PETopcode,false使用SPAWN_PET- Returns:
- 封包位元組陣列
-
removePet
public static final byte[] removePet(int cid, int index) 建構強制移除指定寵物的封包。以
SPAWN_PETopcode 寫入角色 ID 與寵物索引,並附上長度為 0 的尾端, 通知客戶端將該寵物自地圖移除。- Parameters:
cid- 寵物擁有者的角色 IDindex- 欲移除寵物的索引- Returns:
- 封包位元組陣列
-
movePet
public static final byte[] movePet(int cid, int pid, byte slot, Point pos, List<LifeMovementFragment> moves) 建構同步寵物移動路徑的封包。以
MOVE_PETopcode 寫入角色 ID、寵物欄位、寵物唯一 ID,並委由PacketHelper.serializeMovementList(MaplePacketLittleEndianWriter, List)序列化LifeMovementFragment移動片段清單。- Parameters:
cid- 寵物擁有者的角色 IDpid- 寵物的唯一 IDslot- 寵物所在的欄位pos- 寵物座標(保留參數,未序列化進封包)moves- 寵物移動路徑片段清單- Returns:
- 封包位元組陣列
-
petChat
建構顯示寵物說話氣泡的封包。以
PET_CHATopcode 寫入角色 ID、寵物欄位、動作編號與聊天文字, 使客戶端在該寵物上方顯示對話氣泡。- Parameters:
cid- 寵物擁有者的角色 IDun- 寵物的動作 / 表情編號text- 寵物說話的文字內容slot- 寵物所在的欄位- Returns:
- 封包位元組陣列
-
commandResponse
public static final byte[] commandResponse(int cid, byte command, byte slot, boolean success, boolean food) 建構寵物指令反應動畫的封包。以
PET_COMMANDopcode 寫入角色 ID、寵物欄位與指令編號,並依command與success決定反應結果旗標:當command為 1 時走互動 分支,否則以success表示指令是否成功,使客戶端播放對應的寵物反應動畫。- Parameters:
cid- 寵物擁有者的角色 IDcommand- 寵物指令編號slot- 寵物所在的欄位success- 指令是否成功(影響反應動畫)food- 是否為餵食類指令(保留參數,未序列化進封包)- Returns:
- 封包位元組陣列
-
showPetLevelUp
建構寵物升級特效的封包。以
SHOW_FOREIGN_EFFECTopcode 寫入角色 ID、特效類型(6表寵物升級) 與寵物索引,使周遭客戶端在該寵物上播放升級特效。- Parameters:
chr- 寵物的擁有者角色index- 升級寵物的索引- Returns:
- 封包位元組陣列
-
showPetUpdate
建構更新寵物例外清單(自動拾取忽略道具)的封包。以
PET_EXCEPTION_LISTopcode 寫入角色 ID、寵物索引與寵物唯一 ID,並附上 數量為 0 的例外道具清單,用於同步寵物自動拾取的忽略項目。- Parameters:
chr- 寵物的擁有者角色uniqueId- 寵物的唯一 IDindex- 寵物的索引- Returns:
- 封包位元組陣列
-
petStatUpdate
建構更新角色所有已召喚寵物能力值的封包。以
UPDATE_STATSopcode 並帶入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)。當
showpet為true時,於最前另寫入 啟用旗標與寵物索引。供showPet(MapleCharacter, MaplePet, boolean, boolean, boolean)等封包建構流程內嵌寵物資料時使用。- Parameters:
mplew- 目標封包寫入器,寵物資料將寫入其中chr- 寵物的擁有者角色(用於取得寵物索引)pet- 欲序列化的寵物實體showpet-true時於最前附加啟用旗標與寵物索引
-