Class CWvsContext

java.lang.Object
tools.packet.CWvsContext

public class CWvsContext extends Object
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static byte[]
    BombLieDetector(boolean error, int mapid, int channel)
    建構「炸彈測謊器」事件的封包(BOMB_LIE_DETECTOR)。
    static byte[]
    catchMob(int mobid, int itemid, byte success)
    建構「捕捉怪物」結果的封包。
    static byte[]
    changeCardSet(int set)
    建構切換「怪物卡片組」的封包。
    static byte[]
    changeChannelMsg(int channel, String msg)
    建構「自動換頻」提示訊息的封包。
    static byte[]
    charInfo(MapleCharacter chr, boolean isSelf)
    建構角色詳細資訊(人物卡)的封包(CHAR_INFO)。
    static byte[]
    建構清除畫面中央訊息的封包。
    static byte[]
    建構停用一組 NPC 的封包。
    static byte[]
    echoMegaphone(String name, String message)
    建構回音喇叭訊息的封包(ECHO_MESSAGE)。
    static byte[]
    建構「解除動作鎖定」封包。
    static byte[]
    建構擴充角色欄位結果的封包(EXPAND_CHARACTER_SLOTS)。
    static byte[]
    fairyPendantMessage(int termStart, int incExpR)
    建構「妖精吊墜」額外經驗加成提示的封包。
    static byte[]
    建構「尋友」搜尋結果清單的封包。
    static byte[]
    finishedGather(int type)
    建構物品欄整理(聚集)完成的封包。
    static byte[]
    finishedSort(int type)
    建構物品欄排序完成的封包。
    static byte[]
    followRequest(int chrid)
    建構「跟隨(組隊同行)邀請」的封包。
    static byte[]
    建構「尋友」角色詳細資訊的封包。
    static byte[]
    建構「尋友」錯誤提示的封包。
    static byte[]
    gatherSortItem(boolean gather, int type)
    建構物品欄聚集/排序完成的封包。
    static byte[]
    getAniMsg(int questID, int time)
    建構動畫訊息(Ani Message)的封包(SERVERMESSAGE 類型 23)。
    static byte[]
    getAvatarMega(MapleCharacter chr, int channel, int itemId, String text, boolean ear)
    建構「大聲公頭像喇叭(Avatar Megaphone)」訊息的封包。
    static byte[]
    getCard(int itemid, int level)
    建構取得「怪物卡片」的封包。
    static byte[]
    getCardDrops(int cardid, List<Integer> drops)
    建構顯示某張怪物卡片掉落來源怪物清單的封包。
    static byte[]
    建構角色「夥伴怪物(Familiar)」總覽資訊的封包。
    static byte[]
    getGachaponMega(String name, Item item, boolean isChest, int ch)
    建構轉蛋/寶箱中獎全頻廣播的封包(SERVERMESSAGE)。
    static byte[]
    getMidMsg(String msg, boolean keep, int index)
    建構指定位置之畫面中央訊息的封包。
    static byte[]
    建構怪物圖鑑資訊的封包(BOOK_INFO)。
    static byte[]
    getMulungMessage(boolean dc, String msg)
    建構武陵道場系統訊息的封包。
    static byte[]
    建構武陵道場排行榜的封包。
    static byte[]
    getOwlMessage(int msg)
    建構智慧之鳥(商店進入)結果提示的封包(OWL_RESULT)。
    static byte[]
    建構開啟智慧之鳥(雪域貓頭鷹)搜尋介面的封包(OWL_OF_MINERVA)。
    static byte[]
    getOwlSearched(int itemSearch, List<HiredMerchant> hms)
    建構智慧之鳥搜尋結果的封包(OWL_OF_MINERVA)。
    static byte[]
    getPeanutResult(int itemId, short quantity, int itemId2, short quantity2, int ourItem)
    建構「豆豆」(Pigmi)兌換結果的封包(PIGMI_REWARD)。
    static byte[]
    建構顯示任務完成動畫的封包(SHOW_QUEST_COMPLETION)。
    static byte[]
    建構畫面頂端跑馬燈訊息的封包。
    static byte[]
    建構名聲操作的錯誤回應封包。
    static byte[]
    建構贈送結婚禮物結果的封包(WEDDING_GIFT 子操作 11)。
    static byte[]
    GMPoliceMessage(boolean dc)
    建構「GM 警察(檢舉處置)」提示的封包。
    static byte[]
    itemMegaphone(String msg, boolean whisper, int channel, Item item)
    建構道具喇叭(Item Megaphone)的封包(SERVERMESSAGE 類型 8)。
    static byte[]
    建構開啟「個人資訊(Your Information)」面板的封包。
    static byte[]
    建構機械師傳送門的封包(MECH_PORTAL)。
    static byte[]
    Mulung_Pts(int recv, int total)
    建構武陵道場修練分數提示的封包。
    static byte[]
    MulungEnergy(int energy)
    建構更新武陵道場「氣」能量值的封包。
    static byte[]
    建構開啟「尋友(Friend Finder)」時的個人結果封包。
    static byte[]
    OnClaimSvrStatusChanged(boolean enable)
    建構檢舉伺服器啟用狀態變更的封包(REPORT_STATUS)。
    static byte[]
    OnFameResult(int op, String charname, boolean raise, int newFame)
    建構名聲操作結果的封包(FAME_RESPONSE)。
    static byte[]
    OnSetClaimSvrAvailableTime(int from, int to)
    建構設定檢舉伺服器可用時段的封包(REPORT_TIME)。
    static byte[]
    建構開啟「Pam 之歌(記憶之歌)」介面的封包。
    static byte[]
    pendantSlot(boolean p)
    建構啟用/停用「吊墜額外欄位(slot -59)」的封包。
    static byte[]
    potionDiscountMessage(int type, int potionDiscR)
    建構「藥水折扣」加成提示的封包。
    static byte[]
    professionInfo(String skil, int level1, int level2, int chance)
    建構「專業技能(採集/製作)」資訊的封包。
    static byte[]
    建構「收取結婚禮物」結果的封包。
    static byte[]
    report(int mode)
    建構玩家檢舉結果的封包(REPORT_RESPONSE)。
    static byte[]
    saveInformation(boolean fail)
    建構「個人資訊」儲存結果的封包。
    static byte[]
    sendCashPetFood(boolean success, byte index)
    建構使用「現金寵物食品」結果的封包。
    static byte[]
    sendEngagement(byte msg, int item, MapleCharacter male, MapleCharacter female)
    建構訂婚/結婚相關結果的封包(ENGAGE_RESULT)。
    static byte[]
    sendEngagementRequest(String name, int cid)
    建構求婚邀請的封包(ENGAGE_REQUEST)。
    static byte[]
    sendGhostPoint(String type, String amount)
    建構更新「組隊(party)」自訂數值的封包。
    static byte[]
    sendGhostStatus(String type, String amount)
    建構更新「地圖(map)」自訂數值的封包。
    static byte[]
    sendJobup(boolean family, int jobid, String name)
    建構家族/公會成員轉職廣播的封包。
    static byte[]
    sendLevelup(boolean family, int level, String name)
    建構家族/公會成員升級廣播的封包。
    static byte[]
    sendMarriage(boolean family, String name)
    建構家族/公會成員結婚廣播的封包。
    static byte[]
    建構開啟「粉紅豆巧克力」收集介面的封包。
    static byte[]
    建構更新「連線階段(session)」自訂數值的封包。
    static byte[]
    sendString(int type, String object, String amount)
    建構更新自訂鍵值對數值的通用封包。
    static byte[]
    建構結婚禮物「贈送」介面的封包(WEDDING_GIFT 子操作 9)。
    static byte[]
    建構結婚禮物「接收」介面的封包(WEDDING_GIFT 子操作 10)。
    static byte[]
    建構伺服器訊息(捲動橫幅)的封包。
    static byte[]
    serverNotice(int type, int channel, String message)
    建構指定類型與頻道的伺服器公告封包。
    static byte[]
    serverNotice(int type, int channel, String message, boolean smegaEar)
    建構指定類型、頻道與耳語旗標的伺服器公告封包。
    static byte[]
    serverNotice(int type, String message)
    建構指定類型的伺服器公告封包。
    static byte[]
    shopDiscount(int percent)
    建構商店折扣比率的封包。
    static byte[]
    建構「阿斯旺(Azwan)擊殺」提示的封包。
    static byte[]
    showBackgroundEffect(String eff, int value)
    建構顯示地圖背景特效的封包。
    static byte[]
    showMidMsg(String s, int l)
    建構畫面中央訊息的封包。
    static byte[]
    建構粉紅色任務系統訊息的封包。
    static byte[]
    建構生成「玩家 NPC」的封包。
    static byte[]
    spawnPortal(int townId, int targetId, int skillId, Point pos)
    建構生成傳送門(如回城卷/組隊傳送)的封包(SPAWN_PORTAL)。
    static byte[]
    建構設定臨時能力值的封包(TEMP_STATS)。
    static byte[]
    建構英雄(阿戰/默劇)教學用的臨時能力值封包。
    static byte[]
    建構「魔幻黑龍」(Balrog) 戰鬥用的臨時能力值封包。
    static byte[]
    建構重設(清除)臨時能力值的封包(TEMP_STATS_RESET)。
    static byte[]
    tripleSmega(List<String> message, boolean ear, int channel)
    建構三行高級喇叭(Three Line Megaphone)的封包(SERVERMESSAGE 類型 10)。
    static byte[]
    建構開啟「終極冒險家(Ultimate Explorer)」介面的封包。
    static byte[]
    updateAzwanFame(int level, int fame, boolean levelup)
    建構更新「阿斯旺(Azwan)名譽 / Honour」的封包。
    static byte[]
    建構更新「核心光環(Core Aura)」的封包。
    static byte[]
    updateExpPotion(int mode, int id, int itemId, boolean firstTime, int level, int potionDstLevel, int exp)
    建構更新經驗藥水(升等藥水)狀態的封包(EXP_POTION)。
    static byte[]
    建構更新角色性別的封包(UPDATE_GENDER)。
    static byte[]
    updateImp(MapleImp imp, int mask, int index, boolean login)
    建構更新「小惡魔寵物罐(Imp)」狀態的封包。
    static byte[]
    建構更新「小惡魔寵物罐(Imp)」時間欄位的封包。
    static byte[]
    建構更新獵人「美洲豹(Jaguar)」騎乘資訊的封包。
    static byte[]
    updateMount(MapleCharacter chr, boolean levelup)
    建構更新騎寵狀態的封包(UPDATE_MOUNT)。
    static byte[]
    updatePlayerStats(Map<MapleStat, Integer> mystats, boolean itemReaction, MapleCharacter chr)
    建構更新角色能力值的封包(UPDATE_STATS)。
    static byte[]
    建構更新角色能力值的封包(非道具反應)。
    static byte[]
    建構更新技能等級/熟練度的封包(UPDATE_SKILLS)。
    static byte[]
    建構更新「怪物卡片圖鑑」道具資訊的封包。
    static byte[]
    useAPSPReset(boolean spReset, int cid)
    建構 AP/SP 重置結果的封包。
    static byte[]
    useSkillBook(MapleCharacter chr, int skillid, int maxlevel, boolean canuse, boolean success)
    建構使用技能書結果的封包(USE_SKILL_BOOK)。
    static byte[]
    建構顯示黃色系統聊天訊息的封包。

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CWvsContext

      public CWvsContext()
  • Method Details

    • enableActions

      public static byte[] enableActions()
      建構「解除動作鎖定」封包。

      以空的 MapleStat 異動集合呼叫 updatePlayerStats(Map, boolean, MapleCharacter)itemReaction=true),用於在伺服器處理完一次操作後解除客戶端的動作鎖定,使角色可再次行動。

      Returns:
      封包位元組陣列
    • updatePlayerStats

      public static byte[] updatePlayerStats(Map<MapleStat, Integer> stats, MapleCharacter chr)
      建構更新角色能力值的封包(非道具反應)。

      itemReaction=false 委派至 updatePlayerStats(Map, boolean, MapleCharacter)

      Parameters:
      stats - 欲更新的 MapleStat 與其數值對應表
      chr - 目標角色(可為 null
      Returns:
      封包位元組陣列
    • updatePlayerStats

      public static byte[] updatePlayerStats(Map<MapleStat, Integer> mystats, boolean itemReaction, MapleCharacter chr)
      建構更新角色能力值的封包(UPDATE_STATS)。

      mystats 鍵集合計算 64 位元的更新遮罩後寫入,再依每個 MapleStat 的型別(byte/short/int/long)逐一序列化其數值;部分能力值 (如 AVAILABLEAP/AVAILABLESP)有特殊寫法。itemReaction 旗標決定客戶端是否將此更新視為道具反應(解除動作鎖定)。

      Parameters:
      mystats - 欲更新的 MapleStat 與其數值對應表
      itemReaction - 是否為道具反應(true 解除動作鎖定)
      chr - 目標角色(部分能力值序列化時讀取其狀態,可為 null
      Returns:
      封包位元組陣列
    • temporaryStats_Aran

      public static byte[] temporaryStats_Aran()
      建構英雄(阿戰/默劇)教學用的臨時能力值封包。

      填入一組固定的高數值臨時能力值(力/敏/智/運皆 999、攻擊 255、命中/迴避 999、 移速 140、跳躍 120)後委派至 temporaryStats(Map);亦用於默劇(Mercedes)教學。

      Returns:
      封包位元組陣列
    • temporaryStats_Balrog

      public static byte[] temporaryStats_Balrog(MapleCharacter chr)
      建構「魔幻黑龍」(Balrog) 戰鬥用的臨時能力值封包。

      讀取角色的總能力值(力/敏/智/運/物攻/魔攻),依等級每超過 90 等每 20 等遞增的 除數縮放後填入臨時能力值,再委派至 temporaryStats(Map)

      Parameters:
      chr - 目標角色(讀取其等級與總能力值)
      Returns:
      封包位元組陣列
    • temporaryStats

      public static byte[] temporaryStats(Map<MapleStat.Temp, Integer> mystats)
      建構設定臨時能力值的封包(TEMP_STATS)。

      mystats 鍵集合計算 32 位元更新遮罩後寫入,再逐一序列化每個 MapleStat.Temp 數值(移速/跳躍/未知為 byte,其餘為 short)。常用於特定地圖或 教學情境下暫時覆寫角色能力值。

      Parameters:
      mystats - 欲設定的臨時能力值 MapleStat.Temp 與其數值對應表
      Returns:
      封包位元組陣列
    • temporaryStats_Reset

      public static byte[] temporaryStats_Reset()
      建構重設(清除)臨時能力值的封包(TEMP_STATS_RESET)。

      僅寫入 opcode,使客戶端移除先前由 temporaryStats(Map) 套用的臨時能力值。

      Returns:
      封包位元組陣列
    • updateSkills

      public static byte[] updateSkills(Map<Skill, SkillEntry> update)
      建構更新技能等級/熟練度的封包(UPDATE_SKILLS)。

      逐一寫入每個 Skill 的技能 ID、當前等級、精通等級與到期時間 (SkillEntry),用於通知客戶端技能習得、升級或到期。

      Parameters:
      update - 欲更新的 Skill 與其 SkillEntry 對應表
      Returns:
      封包位元組陣列
    • giveFameErrorResponse

      public static byte[] giveFameErrorResponse(int op)
      建構名聲操作的錯誤回應封包。

      以無角色名、無新名聲值委派至 OnFameResult(int, String, boolean, int)op 為錯誤碼(如使用者名稱錯誤、等級不足、本日/本月次數已滿等)。

      Parameters:
      op - 名聲錯誤碼
      Returns:
      封包位元組陣列
    • OnFameResult

      public static byte[] OnFameResult(int op, String charname, boolean raise, int newFame)
      建構名聲操作結果的封包(FAME_RESPONSE)。

      寫入操作碼 op;當 op 為 0(給予名聲)或 5(收到名聲)時,附帶對方 角色名與升/降旗標,op==0 時再寫入更新後的名聲值。其餘 op 值為各類錯誤提示。

      Parameters:
      op - 操作碼(0=給予、5=收到,其餘為錯誤碼)
      charname - 對方角色名(null 視為空字串)
      raise - true 為提升名聲、false 為降低
      newFame - 更新後的名聲值(僅 op==0 時寫入)
      Returns:
      封包位元組陣列
    • BombLieDetector

      public static byte[] BombLieDetector(boolean error, int mapid, int channel)
      建構「炸彈測謊器」事件的封包(BOMB_LIE_DETECTOR)。

      寫入錯誤旗標(error 為 2、否則 1)、地圖 ID 與頻道(255 代表全頻道)。

      Parameters:
      error - 是否為錯誤狀態
      mapid - 目標地圖 ID
      channel - 目標頻道(255 代表全頻道)
      Returns:
      封包位元組陣列
    • report

      public static byte[] report(int mode)
      建構玩家檢舉結果的封包(REPORT_RESPONSE)。

      寫入結果碼 mode;當 mode==2(成功登記)時附帶額外的旗標與計數。 其餘 mode 值對應各類失敗提示(如稍後再試、楓幣不足、次數超限等)。

      Parameters:
      mode - 檢舉結果碼(2=成功登記)
      Returns:
      封包位元組陣列
    • OnSetClaimSvrAvailableTime

      public static byte[] OnSetClaimSvrAvailableTime(int from, int to)
      建構設定檢舉伺服器可用時段的封包(REPORT_TIME)。

      寫入可檢舉的起迄時間(時),客戶端據以顯示「僅可於 X 至 Y 時檢舉」等提示。

      Parameters:
      from - 可檢舉起始時間(時)
      to - 可檢舉結束時間(時)
      Returns:
      封包位元組陣列
    • OnClaimSvrStatusChanged

      public static byte[] OnClaimSvrStatusChanged(boolean enable)
      建構檢舉伺服器啟用狀態變更的封包(REPORT_STATUS)。

      寫入啟用旗標,通知客戶端目前是否開放檢舉功能。

      Parameters:
      enable - true 啟用檢舉、false 停用
      Returns:
      封包位元組陣列
    • updateMount

      public static byte[] updateMount(MapleCharacter chr, boolean levelup)
      建構更新騎寵狀態的封包(UPDATE_MOUNT)。

      讀取角色騎寵的等級、經驗值與疲勞度並寫入,附帶是否升級旗標, 用於同步騎寵成長狀態。

      Parameters:
      chr - 目標角色(讀取其 騎寵 狀態)
      levelup - 騎寵是否升級
      Returns:
      封包位元組陣列
    • getShowQuestCompletion

      public static byte[] getShowQuestCompletion(int id)
      建構顯示任務完成動畫的封包(SHOW_QUEST_COMPLETION)。

      寫入任務 ID,使客戶端播放對應任務的完成特效。

      Parameters:
      id - 完成的任務 ID
      Returns:
      封包位元組陣列
    • useSkillBook

      public static byte[] useSkillBook(MapleCharacter chr, int skillid, int maxlevel, boolean canuse, boolean success)
      建構使用技能書結果的封包(USE_SKILL_BOOK)。

      寫入角色 ID、習得的技能 ID 與最高等級,並附帶是否可用、是否成功的旗標, 用於告知客戶端技能書習得結果。

      Parameters:
      chr - 使用技能書的角色(讀取其 ID)
      skillid - 習得的技能 ID
      maxlevel - 該技能的最高等級
      canuse - 是否可使用該技能
      success - 技能書是否使用成功
      Returns:
      封包位元組陣列
    • useAPSPReset

      public static byte[] useAPSPReset(boolean spReset, int cid)
      建構 AP/SP 重置結果的封包。

      spReset 選用 SP_RESETAP_RESET 的 opcode, 寫入角色 ID 與成功旗標(0 為失敗)。

      Parameters:
      spReset - true 為 SP 重置、false 為 AP 重置
      cid - 目標角色 ID
      Returns:
      封包位元組陣列
    • updateExpPotion

      public static byte[] updateExpPotion(int mode, int id, int itemId, boolean firstTime, int level, int potionDstLevel, int exp)
      建構更新經驗藥水(升等藥水)狀態的封包(EXP_POTION)。

      mode 寫入不同欄位:mode==2 時附帶首次使用旗標、藥水道具 ID、 起始等級、可達上限等級與經驗值等資訊,用於同步升等藥水的進度。

      Parameters:
      mode - 操作模式(1/2 對應不同寫法)
      id - 經驗藥水識別值(0 時不寫入後續欄位)
      itemId - 藥水道具 ID
      firstTime - 是否為首次使用
      level - 起始等級
      potionDstLevel - 使用藥水可達的上限等級
      exp - 經驗值(隨機,近似藥水 ID)
      Returns:
      封包位元組陣列
    • expandCharacterSlots

      public static byte[] expandCharacterSlots(int mode)
      建構擴充角色欄位結果的封包(EXPAND_CHARACTER_SLOTS)。

      寫入結果碼 mode-1 表示已擴充過、0 表示失敗、 1 表示成功增加角色欄位數。

      Parameters:
      mode - 擴充結果碼
      Returns:
      封包位元組陣列
    • finishedGather

      public static byte[] finishedGather(int type)
      建構物品欄整理(聚集)完成的封包。

      gather=true 委派至 gatherSortItem(boolean, int)

      Parameters:
      type - 物品欄類型
      Returns:
      封包位元組陣列
    • finishedSort

      public static byte[] finishedSort(int type)
      建構物品欄排序完成的封包。

      gather=false 委派至 gatherSortItem(boolean, int)

      Parameters:
      type - 物品欄類型
      Returns:
      封包位元組陣列
    • gatherSortItem

      public static byte[] gatherSortItem(boolean gather, int type)
      建構物品欄聚集/排序完成的封包。

      gather 選用 FINISH_GATHERFINISH_SORT 的 opcode, 並寫入物品欄類型,通知客戶端整理動作已完成。

      Parameters:
      gather - true 為聚集完成、false 為排序完成
      type - 物品欄類型
      Returns:
      封包位元組陣列
    • updateGender

      public static byte[] updateGender(MapleCharacter chr)
      建構更新角色性別的封包(UPDATE_GENDER)。

      寫入角色性別;通常於進入商城(Cash Shop)時送出。

      Parameters:
      chr - 目標角色(讀取其 性別
      Returns:
      封包位元組陣列
    • charInfo

      public static byte[] charInfo(MapleCharacter chr, boolean isSelf)
      建構角色詳細資訊(人物卡)的封包(CHAR_INFO)。

      大量讀取目標角色狀態並序列化,包含等級、職業、PVP 階級、名聲、是否結婚、專業技能、 公會與聯盟名稱、已召喚寵物資訊、騎寵狀態、願望清單、勳章與已完成勳章任務,以及各項 性向(MapleTrait.MapleTraitType)等級。isSelf 影響其中一個旗標的寫入。

      Parameters:
      chr - 欲查看資訊的目標角色
      isSelf - 是否為查看自身資訊
      Returns:
      封包位元組陣列
    • getMonsterBookInfo

      public static byte[] getMonsterBookInfo(MapleCharacter chr)
      建構怪物圖鑑資訊的封包(BOOK_INFO)。

      寫入角色 ID 與等級後,委由角色的 怪物圖鑑 寫入其卡片收集資訊。

      Parameters:
      chr - 目標角色(讀取其等級與怪物圖鑑)
      Returns:
      封包位元組陣列
    • spawnPortal

      public static byte[] spawnPortal(int townId, int targetId, int skillId, Point pos)
      建構生成傳送門(如回城卷/組隊傳送)的封包(SPAWN_PORTAL)。

      寫入起點城鎮地圖與目標地圖 ID;當兩者皆非 999999999 時再寫入技能 ID 與座標。

      Parameters:
      townId - 起點城鎮地圖 ID
      targetId - 目標地圖 ID
      skillId - 產生傳送門的技能 ID
      pos - 傳送門座標
      Returns:
      封包位元組陣列
    • mechPortal

      public static byte[] mechPortal(Point pos)
      建構機械師傳送門的封包(MECH_PORTAL)。

      寫入傳送門座標,用於機械師(Mechanic)職業的傳送門技能。

      Parameters:
      pos - 傳送門座標
      Returns:
      封包位元組陣列
    • echoMegaphone

      public static byte[] echoMegaphone(String name, String message)
      建構回音喇叭訊息的封包(ECHO_MESSAGE)。

      寫入成功旗標、時間戳、發送者名稱與訊息內容。此功能已被 Nexon 移除。

      Parameters:
      name - 發送者角色名
      message - 訊息內容
      Returns:
      封包位元組陣列
    • showQuestMsg

      public static byte[] showQuestMsg(String msg)
      建構粉紅色任務系統訊息的封包。

      以類型 5(粉紅色文字)委派至 serverNotice(int, String)

      Parameters:
      msg - 訊息內容
      Returns:
      封包位元組陣列
    • Mulung_Pts

      public static byte[] Mulung_Pts(int recv, int total)
      建構武陵道場修練分數提示的封包。

      組成「獲得 N 分修練分數」的粉紅色訊息並委派至 showQuestMsg(String)

      Parameters:
      recv - 本次獲得的修練分數
      total - 累積的修練分數
      Returns:
      封包位元組陣列
    • serverMessage

      public static byte[] serverMessage(String message)
      建構伺服器訊息(捲動橫幅)的封包。

      以類型 4(Server Message)委派至內部的 serverMessage(int, int, String, boolean)

      Parameters:
      message - 訊息內容
      Returns:
      封包位元組陣列
    • serverNotice

      public static byte[] serverNotice(int type, String message)
      建構指定類型的伺服器公告封包。

      以頻道 0、非耳語委派至內部的 serverMessage(int, int, String, boolean)

      Parameters:
      type - 訊息類型(0=系統通知、1=彈窗、4=伺服器訊息、5=粉紅文字等)
      message - 訊息內容
      Returns:
      封包位元組陣列
    • serverNotice

      public static byte[] serverNotice(int type, int channel, String message)
      建構指定類型與頻道的伺服器公告封包。

      以非耳語委派至內部的 serverMessage(int, int, String, boolean)channel 對部分喇叭類型表示來源頻道(顯示時會減 1),對道具喇叭類型則可能表示道具 ID。

      Parameters:
      type - 訊息類型
      channel - 來源頻道(或依類型作為道具 ID)
      message - 訊息內容
      Returns:
      封包位元組陣列
    • serverNotice

      public static byte[] serverNotice(int type, int channel, String message, boolean smegaEar)
      建構指定類型、頻道與耳語旗標的伺服器公告封包。

      委派至內部的 serverMessage(int, int, String, boolean)smegaEar 對應高級喇叭是否附帶頻道入口(聽筒)。

      Parameters:
      type - 訊息類型
      channel - 來源頻道(或依類型作為道具 ID)
      message - 訊息內容
      smegaEar - 高級喇叭是否附帶頻道入口
      Returns:
      封包位元組陣列
    • getGachaponMega

      public static byte[] getGachaponMega(String name, Item item, boolean isChest, int ch)
      建構轉蛋/寶箱中獎全頻廣播的封包(SERVERMESSAGE)。

      isChest 寫入訊息類型(寶箱 21、轉蛋 20),附帶來源頻道、獲得者角色名, 並透過 PacketHelper.addItemInfo(MaplePacketLittleEndianWriter, Item) 寫入中獎道具資訊。

      Parameters:
      name - 獲得道具的角色名
      item - 中獎的道具
      isChest - true 為寶箱、false 為轉蛋
      ch - 來源頻道
      Returns:
      封包位元組陣列
    • getAniMsg

      public static byte[] getAniMsg(int questID, int time)
      建構動畫訊息(Ani Message)的封包(SERVERMESSAGE 類型 23)。

      寫入訊息類型 23、任務 ID 與顯示時間,用於播放與任務關聯的畫面動畫提示。

      Parameters:
      questID - 關聯的任務 ID
      time - 顯示時間
      Returns:
      封包位元組陣列
    • tripleSmega

      public static byte[] tripleSmega(List<String> message, boolean ear, int channel)
      建構三行高級喇叭(Three Line Megaphone)的封包(SERVERMESSAGE 類型 10)。

      寫入訊息類型 10,將 message 清單中的多行文字逐一序列化,附帶來源頻道 (顯示時減 1)與是否附帶頻道入口(聽筒)的旗標。

      Parameters:
      message - 多行訊息清單(最多三行)
      ear - 是否附帶頻道入口(聽筒)
      channel - 來源頻道
      Returns:
      封包位元組陣列
    • itemMegaphone

      public static byte[] itemMegaphone(String msg, boolean whisper, int channel, Item item)
      建構道具喇叭(Item Megaphone)的封包(SERVERMESSAGE 類型 8)。

      寫入訊息類型 8、訊息文字、來源頻道(顯示時減 1)與耳語旗標,並附帶道具位置; 當 itemnull 時再寫入完整道具資訊,使廣播訊息可顯示連結道具。

      Parameters:
      msg - 喇叭訊息文字
      whisper - 是否為耳語模式
      channel - 來源頻道
      item - 欲附帶顯示的道具(可為 null
      Returns:
      封包位元組陣列
    • getPeanutResult

      public static byte[] getPeanutResult(int itemId, short quantity, int itemId2, short quantity2, int ourItem)
      建構「豆豆」(Pigmi)兌換結果的封包(PIGMI_REWARD)。

      寫入兩組產出道具的 ID 與數量,以及投入的道具 ID,用於顯示豆豆兌換獲得的道具。

      Parameters:
      itemId - 第一項產出道具 ID
      quantity - 第一項產出道具數量
      itemId2 - 第二項產出道具 ID
      quantity2 - 第二項產出道具數量
      ourItem - 投入兌換的道具 ID
      Returns:
      封包位元組陣列
    • getOwlOpen

      public static byte[] getOwlOpen()
      建構開啟智慧之鳥(雪域貓頭鷹)搜尋介面的封包(OWL_OF_MINERVA)。

      寫入子操作 9,並列出 GameConstants.owlItems 中預設的熱門搜尋道具 ID。

      Returns:
      封包位元組陣列
    • getOwlSearched

      public static byte[] getOwlSearched(int itemSearch, List<HiredMerchant> hms)
      建構智慧之鳥搜尋結果的封包(OWL_OF_MINERVA)。

      寫入子操作 8 與搜尋道具 ID,彙整所有 雇傭商人 中符合搜尋的 MaplePlayerShopItem 並逐筆寫入店主名、地圖、商店描述、數量、組數、價格與店家識別 (依 InventoryHandler.OWL_ID 決定使用店主 ID/商店 ID/物件 ID);裝備類道具另附完整道具資訊。

      Parameters:
      itemSearch - 欲搜尋的道具 ID
      hms - 在售雇傭商人清單
      Returns:
      封包位元組陣列
    • getOwlMessage

      public static byte[] getOwlMessage(int msg)
      建構智慧之鳥(商店進入)結果提示的封包(OWL_RESULT)。

      寫入結果碼 msg0 為成功,其餘對應各類失敗提示 (房間已關閉、人數已滿、死亡中無法操作、僅限自由市場使用等)。

      Parameters:
      msg - 結果碼
      Returns:
      封包位元組陣列
    • sendEngagementRequest

      public static byte[] sendEngagementRequest(String name, int cid)
      建構求婚邀請的封包(ENGAGE_REQUEST)。

      寫入模式 0(求婚)、求婚者角色名與其角色 ID,用於向對象發出訂婚請求。

      Parameters:
      name - 求婚者角色名
      cid - 求婚者角色 ID
      Returns:
      封包位元組陣列
    • sendEngagement

      public static byte[] sendEngagement(byte msg, int item, MapleCharacter male, MapleCharacter female)
      建構訂婚/結婚相關結果的封包(ENGAGE_RESULT)。

      寫入結果碼 msg(11=訂婚、12=結婚、各類錯誤碼等);當為訂婚或結婚時附帶戒指道具、 男女雙方角色 ID 與姓名;當為 15(開啟喜帖)時寫入雙方姓名與婚禮類型。

      Parameters:
      msg - 結果碼(11=訂婚、12=結婚、15=開啟喜帖,其餘為各類提示)
      item - 戒指道具 ID
      male - 男方角色(讀取其 ID 與姓名)
      female - 女方角色(讀取其 ID 與姓名)
      Returns:
      封包位元組陣列
    • sendWeddingGive

      public static byte[] sendWeddingGive()
      建構結婚禮物「贈送」介面的封包(WEDDING_GIFT 子操作 9)。

      寫入子操作 9 與空的道具數量,用於開啟贈送結婚禮物的介面。

      Returns:
      封包位元組陣列
    • sendWeddingReceive

      public static byte[] sendWeddingReceive()
      建構結婚禮物「接收」介面的封包(WEDDING_GIFT 子操作 10)。

      寫入子操作 10 與空的道具數量,用於開啟接收結婚禮物的介面。

      Returns:
      封包位元組陣列
    • giveWeddingItem

      public static byte[] giveWeddingItem()
      建構贈送結婚禮物結果的封包(WEDDING_GIFT 子操作 11)。

      寫入子操作 11 與空的道具資訊欄位,表示贈送結果;相鄰的結果碼 12/13/14 分別對應「每項願望清單僅能贈送一份禮物」與贈送失敗等提示。

      Returns:
      封包位元組陣列
    • receiveWeddingItem

      public static byte[] receiveWeddingItem()
      建構「收取結婚禮物」結果的封包。

      固定回傳結果碼 15(搭配 SendPacketOpcode.WEDDING_GIFT), 用於提示玩家無法領取一次性道具等情況;之後寫入保留的時間與空的道具清單。

      Returns:
      封包位元組陣列
    • sendCashPetFood

      public static byte[] sendCashPetFood(boolean success, byte index)
      建構使用「現金寵物食品」結果的封包。

      使用 SendPacketOpcode.USE_CASH_PET_FOOD:先寫入成功旗標 (0 成功、1 失敗),成功時再寫入餵食的寵物欄位索引。

      Parameters:
      success - 餵食是否成功
      index - 被餵食寵物的欄位索引(僅在成功時序列化)
      Returns:
      封包位元組陣列
    • yellowChat

      public static byte[] yellowChat(String msg)
      建構顯示黃色系統聊天訊息的封包。

      使用 SendPacketOpcode.YELLOW_CHAT,將 msg 以畫面上方 的黃色提示文字呈現。

      Parameters:
      msg - 要顯示的黃色提示文字
      Returns:
      封包位元組陣列
    • shopDiscount

      public static byte[] shopDiscount(int percent)
      建構商店折扣比率的封包。

      使用 SendPacketOpcode.SHOP_DISCOUNT,寫入折扣百分比, 供客戶端套用商店購買價格。

      Parameters:
      percent - 折扣百分比
      Returns:
      封包位元組陣列
    • catchMob

      public static byte[] catchMob(int mobid, int itemid, byte success)
      建構「捕捉怪物」結果的封包。

      使用 SendPacketOpcode.CATCH_MOB,依序寫入成功旗標、所用道具 編號與目標怪物編號(如捕獲球之類的捕捉道具)。

      Parameters:
      mobid - 被捕捉的怪物編號
      itemid - 用於捕捉的道具編號
      success - 捕捉是否成功的旗標
      Returns:
      封包位元組陣列
    • spawnPlayerNPC

      public static byte[] spawnPlayerNPC(PlayerNPC npc)
      建構生成「玩家 NPC」的封包。

      使用 SendPacketOpcode.PLAYER_NPC,寫入 NPC 編號與名稱,並透過 PacketHelper.addCharLook(MaplePacketLittleEndianWriter, MapleCharacterLook, boolean) 附上其外觀資料。

      Parameters:
      npc - 要生成的玩家 NPC,提供編號、名稱與外觀
      Returns:
      封包位元組陣列
    • disabledNPC

      public static byte[] disabledNPC(List<Integer> ids)
      建構停用一組 NPC 的封包。

      使用 SendPacketOpcode.DISABLE_NPC,先寫入數量,再依序寫入每個 要停用的 NPC 編號。

      Parameters:
      ids - 要停用的 NPC 編號清單
      Returns:
      封包位元組陣列
    • getCard

      public static byte[] getCard(int itemid, int level)
      建構取得「怪物卡片」的封包。

      使用 SendPacketOpcode.GET_CARD:當 itemid > 0 時寫入旗標 1 並接著序列化卡片道具編號與等級,否則僅寫入旗標 0

      Parameters:
      itemid - 取得的卡片道具編號;<= 0 表示未取得卡片
      level - 該卡片的等級(僅在 itemid > 0 時序列化)
      Returns:
      封包位元組陣列
    • changeCardSet

      public static byte[] changeCardSet(int set)
      建構切換「怪物卡片組」的封包。

      使用 SendPacketOpcode.CARD_SET,寫入要切換到的卡片組編號。

      Parameters:
      set - 卡片組編號
      Returns:
      封包位元組陣列
    • upgradeBook

      public static byte[] upgradeBook(Item book, MapleCharacter chr)
      建構更新「怪物卡片圖鑑」道具資訊的封包。

      使用 SendPacketOpcode.BOOK_STATS,寫入圖鑑道具的欄位位置(位於 特殊負欄位 -55),並透過 PacketHelper.addItemInfo(MaplePacketLittleEndianWriter, Item) 附上完整道具資料。

      Parameters:
      book - 卡片圖鑑道具
      chr - 持有該道具的角色,供道具資訊序列化參考
      Returns:
      封包位元組陣列
    • getCardDrops

      public static byte[] getCardDrops(int cardid, List<Integer> drops)
      建構顯示某張怪物卡片掉落來源怪物清單的封包。

      使用 SendPacketOpcode.CARD_DROPS,先寫入卡片編號,再寫入掉落 怪物數量與各怪物編號;dropsnull 時數量視為 0。

      Parameters:
      cardid - 怪物卡片編號
      drops - 會掉落該卡片的怪物編號清單,可為 null
      Returns:
      封包位元組陣列
    • getFamiliarInfo

      public static byte[] getFamiliarInfo(MapleCharacter chr)
      建構角色「夥伴怪物(Familiar)」總覽資訊的封包。

      使用 SendPacketOpcode.FAMILIAR_INFO:先序列化角色已註冊的所有 MonsterFamiliar,再掃描其 USE 道具列表中卡片類別為 287 的夥伴 召喚卡(透過 MapleItemInformationProvider.getFamiliarByItem(int)),並寫入這些 尚可註冊的夥伴項目。會讀取角色的道具與夥伴狀態。

      Parameters:
      chr - 目標角色,提供已註冊夥伴與道具清單
      Returns:
      封包位元組陣列
    • MulungEnergy

      public static byte[] MulungEnergy(int energy)
      建構更新武陵道場「氣」能量值的封包。

      委派至 sendPyramidEnergy(String, String),以鍵 "energy" 傳遞能量值字串。

      Parameters:
      energy - 目前的氣能量值
      Returns:
      封包位元組陣列
    • sendPyramidEnergy

      public static byte[] sendPyramidEnergy(String type, String amount)
      建構更新「連線階段(session)」自訂數值的封包。

      委派至 sendString(int, String, String) 並以 type=1SendPacketOpcode.SESSION_VALUE)送出。常見鍵包含 energymassacre_*PRaid_Teamkill_count 等。

      Parameters:
      type - 要更新的數值鍵名
      amount - 對應的數值(字串)
      Returns:
      封包位元組陣列
    • sendGhostPoint

      public static byte[] sendGhostPoint(String type, String amount)
      建構更新「組隊(party)」自訂數值的封包。

      委派至 sendString(int, String, String) 並以 type=2SendPacketOpcode.PARTY_VALUE)送出,例如 PRaid_Point

      Parameters:
      type - 要更新的數值鍵名
      amount - 對應的數值(字串)
      Returns:
      封包位元組陣列
    • sendGhostStatus

      public static byte[] sendGhostStatus(String type, String amount)
      建構更新「地圖(map)」自訂數值的封包。

      委派至 sendString(int, String, String) 並以 type=3SendPacketOpcode.MAP_VALUE)送出,常見鍵如 Red_StageBlue_StageblueTeamDamageBamboo_Used 等。

      Parameters:
      type - 要更新的數值鍵名
      amount - 對應的數值(字串)
      Returns:
      封包位元組陣列
    • sendString

      public static byte[] sendString(int type, String object, String amount)
      建構更新自訂鍵值對數值的通用封包。

      type 選擇對應的送出操作碼:1SendPacketOpcode.SESSION_VALUE2SendPacketOpcode.PARTY_VALUE3SendPacketOpcode.MAP_VALUE;接著依序寫入鍵名與數值字串。為 sendPyramidEnergy(String, String)/sendGhostPoint(String, String)/sendGhostStatus(String, String) 的共用底層。

      Parameters:
      type - 數值範圍類型(1=session、2=party、3=map)
      object - 要更新的數值鍵名
      amount - 對應的數值(字串)
      Returns:
      封包位元組陣列
    • fairyPendantMessage

      public static byte[] fairyPendantMessage(int termStart, int incExpR)
      建構「妖精吊墜」額外經驗加成提示的封包。

      使用 SendPacketOpcode.EXP_BONUS,寫入加成種類(0x11=吊墜)、 起算時數(配戴時固定為 0)與額外經驗加成比率。注意 termStart 參數實際被 忽略,序列化時固定寫入 0。

      Parameters:
      termStart - 加成起算時數(目前未使用,序列化為 0)
      incExpR - 額外經驗加成比率(<= 0x3D
      Returns:
      封包位元組陣列
    • potionDiscountMessage

      public static byte[] potionDiscountMessage(int type, int potionDiscR)
      建構「藥水折扣」加成提示的封包。

      使用 SendPacketOpcode.POTION_BONUS,寫入加成種類 (0x11=吊墜、0x31=Evan 勳章)與藥水折扣比率。

      Parameters:
      type - 加成種類旗標
      potionDiscR - 藥水折扣比率(<= 0x3D
      Returns:
      封包位元組陣列
    • sendLevelup

      public static byte[] sendLevelup(boolean family, int level, String name)
      建構家族/公會成員升級廣播的封包。

      使用 SendPacketOpcode.LEVEL_UPDATE:先寫入來源旗標 (family ? 1 : 2,區分家族或公會通知),再寫入新等級與角色名稱。

      Parameters:
      family - true 為家族通知,false 為公會通知
      level - 升級後的等級
      name - 升級的角色名稱
      Returns:
      封包位元組陣列
    • sendMarriage

      public static byte[] sendMarriage(boolean family, String name)
      建構家族/公會成員結婚廣播的封包。

      使用 SendPacketOpcode.MARRIAGE_UPDATE:先寫入來源旗標 (family ? 1 : 0),再寫入角色名稱。

      Parameters:
      family - true 為家族通知,false 為公會通知
      name - 結婚的角色名稱
      Returns:
      封包位元組陣列
    • sendJobup

      public static byte[] sendJobup(boolean family, int jobid, String name)
      建構家族/公會成員轉職廣播的封包。

      使用 SendPacketOpcode.JOB_UPDATE:寫入來源旗標 (family ? 1 : 0)、新職業編號,以及角色名稱(非家族通知時於名稱前加上 "> " 前綴)。

      Parameters:
      family - true 為家族通知,false 為公會通知
      jobid - 轉職後的職業編號
      name - 轉職的角色名稱
      Returns:
      封包位元組陣列
    • getAvatarMega

      public static byte[] getAvatarMega(MapleCharacter chr, int channel, int itemId, String text, boolean ear)
      建構「大聲公頭像喇叭(Avatar Megaphone)」訊息的封包。

      使用 SendPacketOpcode.AVATAR_MEGA:依序寫入喇叭道具編號、發送者 名稱、訊息文字、頻道(以 channel - 1 序列化)與「擴音耳機」旗標,最後透過 PacketHelper.addCharLook(MaplePacketLittleEndianWriter, MapleCharacterLook, boolean) 附上發送者外觀。

      Parameters:
      chr - 發送喇叭的角色,提供名稱與外觀
      channel - 發送所在頻道(序列化時減 1)
      itemId - 使用的喇叭道具編號
      text - 喇叭訊息文字
      ear - 是否為含擴音耳機效果的喇叭
      Returns:
      封包位元組陣列
    • GMPoliceMessage

      public static byte[] GMPoliceMessage(boolean dc)
      建構「GM 警察(檢舉處置)」提示的封包。

      使用 SendPacketOpcode.GM_POLICE,寫入處置碼 (dc ? 10 : 0)以決定是否將該客戶端中斷連線。

      Parameters:
      dc - 是否要將客戶端中斷連線
      Returns:
      封包位元組陣列
    • pendantSlot

      public static byte[] pendantSlot(boolean p)
      建構啟用/停用「吊墜額外欄位(slot -59)」的封包。

      使用 SendPacketOpcode.PENDANT_SLOT,寫入旗標 (p ? 1 : 0)以開放或關閉第二個吊墜裝備欄位。

      Parameters:
      p - true 啟用額外吊墜欄位,false 停用
      Returns:
      封包位元組陣列
    • followRequest

      public static byte[] followRequest(int chrid)
      建構「跟隨(組隊同行)邀請」的封包。

      使用 SendPacketOpcode.FOLLOW_REQUEST,寫入發起跟隨邀請的 角色編號。

      Parameters:
      chrid - 發起跟隨邀請的角色編號
      Returns:
      封包位元組陣列
    • getTopMsg

      public static byte[] getTopMsg(String msg)
      建構畫面頂端跑馬燈訊息的封包。

      使用 SendPacketOpcode.TOP_MSG,將 msg 顯示為畫面頂端的 系統訊息。

      Parameters:
      msg - 要顯示的頂端訊息文字
      Returns:
      封包位元組陣列
    • showMidMsg

      public static byte[] showMidMsg(String s, int l)
      建構畫面中央訊息的封包。

      使用 SendPacketOpcode.MID_MSG:寫入位置/旗標 l、訊息 文字,再寫入是否移除的旗標(依 s 是否為空字串而定)。

      Parameters:
      s - 要顯示的中央訊息文字
      l - 訊息位置/顯示旗標
      Returns:
      封包位元組陣列
    • getMidMsg

      public static byte[] getMidMsg(String msg, boolean keep, int index)
      建構指定位置之畫面中央訊息的封包。

      使用 SendPacketOpcode.MID_MSG:寫入訊息應出現的螢幕位置 index、訊息文字,以及是否保留顯示的旗標(keep ? 0 : 1)。

      Parameters:
      msg - 要顯示的中央訊息文字
      keep - 是否持續保留訊息(true 保留)
      index - 訊息在螢幕上出現的位置
      Returns:
      封包位元組陣列
    • clearMidMsg

      public static byte[] clearMidMsg()
      建構清除畫面中央訊息的封包。

      使用 SendPacketOpcode.CLEAR_MID_MSG,僅含操作碼以移除目前顯示 的中央訊息。

      Returns:
      封包位元組陣列
    • updateJaguar

      public static byte[] updateJaguar(MapleCharacter from)
      建構更新獵人「美洲豹(Jaguar)」騎乘資訊的封包。

      使用 SendPacketOpcode.UPDATE_JAGUAR,透過 PacketHelper.addJaguarInfo(MaplePacketLittleEndianWriter, MapleCharacter) 序列化角色目前的美洲豹資料。會讀取角色狀態。

      Parameters:
      from - 擁有美洲豹的角色
      Returns:
      封包位元組陣列
    • loadInformation

      public static byte[] loadInformation()
      建構開啟「個人資訊(Your Information)」面板的封包。

      使用 SendPacketOpcode.YOUR_INFORMATION,以載入模式 2 開啟 面板,並寫入地區、生日、偏好活動旗標與常出沒地點旗標等欄位(此處皆序列化為佔位 0)。

      Returns:
      封包位元組陣列
    • saveInformation

      public static byte[] saveInformation(boolean fail)
      建構「個人資訊」儲存結果的封包。

      使用 SendPacketOpcode.YOUR_INFORMATION,以儲存模式 4 寫入 成功旗標(fail ? 0 : 1)。

      Parameters:
      fail - 儲存是否失敗(true 失敗)
      Returns:
      封包位元組陣列
    • myInfoResult

      public static byte[] myInfoResult()
      建構開啟「尋友(Friend Finder)」時的個人結果封包。

      使用 SendPacketOpcode.FIND_FRIEND,以模式 6 回應,於玩家 開啟尋友介面時送出(其餘欄位為佔位 0)。

      Returns:
      封包位元組陣列
    • findFriendResult

      public static byte[] findFriendResult(List<MapleCharacter> friends)
      建構「尋友」搜尋結果清單的封包。

      使用 SendPacketOpcode.FIND_FRIEND,以模式 8 寫入結果數量, 並對每位角色序列化編號、名稱、等級、職業等欄位(遊玩風格與所在地以 0 佔位)。 會讀取每位角色的狀態。

      Parameters:
      friends - 搜尋到的角色清單
      Returns:
      封包位元組陣列
    • friendFinderError

      public static byte[] friendFinderError()
      建構「尋友」錯誤提示的封包。

      使用 SendPacketOpcode.FIND_FRIEND,以模式 9 寫入錯誤碼 12(請稍後再試)。

      Returns:
      封包位元組陣列
    • friendCharacterInfo

      public static byte[] friendCharacterInfo(MapleCharacter chr)
      建構「尋友」角色詳細資訊的封包。

      使用 SendPacketOpcode.FIND_FRIEND,以模式 11 寫入角色編號, 並透過 PacketHelper.addCharLook(MaplePacketLittleEndianWriter, MapleCharacterLook, boolean) 附上其外觀資料。會讀取角色狀態。

      Parameters:
      chr - 要顯示詳細資訊的角色
      Returns:
      封包位元組陣列
    • showBackgroundEffect

      public static byte[] showBackgroundEffect(String eff, int value)
      建構顯示地圖背景特效的封包。

      使用 SendPacketOpcode.VISITOR,寫入特效名稱(例如 "Visitor") 與其數值參數。

      Parameters:
      eff - 背景特效名稱
      value - 特效數值參數
      Returns:
      封包位元組陣列
    • sendPinkBeanChoco

      public static byte[] sendPinkBeanChoco()
      建構開啟「粉紅豆巧克力」收集介面的封包。

      使用 SendPacketOpcode.PINKBEAN_CHOCO,寫入開啟模式(1=開啟、 0=更新)、是否全滿旗標與已收集巧克力的旗標位元(此處皆以佔位 0 序列化)。

      Returns:
      封包位元組陣列
    • changeChannelMsg

      public static byte[] changeChannelMsg(int channel, String msg)
      建構「自動換頻」提示訊息的封包。

      使用 SendPacketOpcode.AUTO_CC_MSG,寫入目標頻道與提示文字, 用於通知玩家即將自動切換頻道。

      Parameters:
      channel - 目標頻道編號
      msg - 提示文字
      Returns:
      封包位元組陣列
    • pamSongUI

      public static byte[] pamSongUI()
      建構開啟「Pam 之歌(記憶之歌)」介面的封包。

      使用 SendPacketOpcode.PAM_SONG,僅含操作碼以開啟對應介面。

      Returns:
      封包位元組陣列
    • ultimateExplorer

      public static byte[] ultimateExplorer()
      建構開啟「終極冒險家(Ultimate Explorer)」介面的封包。

      使用 SendPacketOpcode.ULTIMATE_EXPLORER,僅含操作碼以觸發對應介面。

      Returns:
      封包位元組陣列
    • professionInfo

      public static byte[] professionInfo(String skil, int level1, int level2, int chance)
      建構「專業技能(採集/製作)」資訊的封包。

      使用 SendPacketOpcode.PROFESSION_INFO,寫入技能識別字串、兩個等級 欄位與成功率;其中採礦/製藥類(識別字串以 "9200""9201" 開頭)會 強制以 100% 序列化,其餘採用傳入的 chance

      Parameters:
      skil - 專業技能識別字串
      level1 - 技能等級欄位一
      level2 - 技能等級欄位二
      chance - 成功率(特定採集類技能會被覆寫為 100)
      Returns:
      封包位元組陣列
    • updateAzwanFame

      public static byte[] updateAzwanFame(int level, int fame, boolean levelup)
      建構更新「阿斯旺(Azwan)名譽 / Honour」的封包。

      使用 SendPacketOpcode.UPDATE_HONOUR,依序寫入名譽等級、名譽值與 是否升級的旗標。

      Parameters:
      level - 名譽等級
      fame - 名譽值
      levelup - 是否伴隨名譽升級
      Returns:
      封包位元組陣列
    • showAzwanKilled

      public static byte[] showAzwanKilled()
      建構「阿斯旺(Azwan)擊殺」提示的封包。

      使用 SendPacketOpcode.AZWAN_KILLED,僅含操作碼以觸發對應提示。

      Returns:
      封包位元組陣列
    • updateCoreAura

      public static byte[] updateCoreAura(MapleCharacter chr)
      建構更新「核心光環(Core Aura)」的封包。

      使用 SendPacketOpcode.UPDATE_CORE_AURA,寫入旗標 1 後透過 PacketHelper.addCharacterInfo(MaplePacketLittleEndianWriter, MapleCharacter) 附上角色完整資訊。會讀取角色狀態。

      Parameters:
      chr - 套用核心光環的角色
      Returns:
      封包位元組陣列
    • updateImpTime

      public static byte[] updateImpTime()
      建構更新「小惡魔寵物罐(Imp)」時間欄位的封包。

      使用 SendPacketOpcode.UPDATE_IMP_TIME,寫入小惡魔編號與時間欄位 (此處皆以佔位 0 序列化)。

      Returns:
      封包位元組陣列
    • updateImp

      public static byte[] updateImp(MapleImp imp, int mask, int index, boolean login)
      建構更新「小惡魔寵物罐(Imp)」狀態的封包。

      使用 SendPacketOpcode.ITEM_POT:先寫入變更旗標 (login ? 0 : 1)、欄位索引(index + 1)與屬性遮罩 mask,再依 MapleImp.ImpFlag 各位元選擇性寫入對應屬性(飽食度、親密度、 等級、各時間戳等),時間欄位以 PacketHelper.getTime(long) 取當前系統時間序列化。

      當遮罩含 MapleImp.ImpFlag.SUMMONED 而查無對應道具罐資料 (MapleItemInformationProvider.getPot(int))時,改回傳 enableActions()。 會讀取 imp 與道具資料的狀態。

      Parameters:
      imp - 小惡魔寵物罐物件,提供道具編號與各屬性
      mask - 要更新的屬性位元遮罩(見 MapleImp.ImpFlag
      index - 小惡魔在欄位中的索引(序列化時加 1)
      login - 是否為登入時的初始化(true 標記為未變更)
      Returns:
      封包位元組陣列;查無道具罐資料時為 enableActions()
    • getMulungMessage

      public static byte[] getMulungMessage(boolean dc, String msg)
      建構武陵道場系統訊息的封包。

      使用 SendPacketOpcode.MULUNG_MESSAGE,寫入是否關閉客戶端視窗的 旗標(dc ? 1 : 0)與訊息文字。

      Parameters:
      dc - 是否在顯示後關閉客戶端(道場)視窗
      msg - 要顯示的訊息文字
      Returns:
      封包位元組陣列
    • getMulungRanks

      public static byte[] getMulungRanks(ResultSet rs) throws SQLException
      建構武陵道場排行榜的封包。

      使用 SendPacketOpcode.MULUNG_DOJO_RANKING:以 rs.last() 取得 總筆數,再 rs.beforeFirst() 重頭逐列寫入名次、角色名稱與通關時間;查無資料時寫入 一筆空白佔位列。需傳入可捲動(scrollable)的 ResultSet(連線層在 Connector/J 8.x 須以 scrollable cursor 建立,否則 last()/beforeFirst() 會 失敗)。會讀取資料庫查詢結果。

      Parameters:
      rs - 道場排行查詢結果(須為可捲動 ResultSet,含 nametime 欄位)
      Returns:
      封包位元組陣列
      Throws:
      SQLException - 讀取 rs 發生資料庫錯誤時