Class World.Buddy

java.lang.Object
handling.world.World.Buddy
Enclosing class:
World

public static class World.Buddy extends Object
好友(Buddy)跨頻道協調子系統。

提供好友聊天、好友清單異動、加好友請求與上下線通知等靜態工具方法。多數方法透過 World.Find.findChannel(int) 定位好友所在頻道後對其連線送出封包,並讀寫對方的 BuddyList;具跨頻道封包送出與狀態變更副作用。

  • Constructor Details

    • Buddy

      public Buddy()
  • Method Details

    • buddyChat

      public static void buddyChat(int[] recipientCharacterIds, int cidFrom, String nameFrom, String chattext)
      將好友聊天訊息送給多名收件者。

      逐一在各頻道定位每個收件角色,僅當對方好友清單中該寄件者為「可見」時才送出 CField.multiChat(String, String, int) 封包。若收件者連線正受 GM 監看,會額外對所有 GM 廣播一則監看訊息; 找不到對方所在頻道或角色時略過該名收件者。

      Parameters:
      recipientCharacterIds - 收件角色 ID 陣列
      cidFrom - 寄件者角色 ID
      nameFrom - 寄件者角色名稱
      chattext - 聊天內容
    • buddyChanged

      public static void buddyChanged(int cid, int cidFrom, String name, int channel, BuddyList.BuddyOperation operation, String group)
      在目標玩家的好友清單上套用一筆新增或刪除異動,並通知其客戶端更新好友頻道。

      於各頻道定位 cid 對應角色後,依 operation 對其 BuddyList 寫入:

      找不到 cid 所在頻道或角色時不做任何事。具好友清單狀態變更與封包送出副作用。
      Parameters:
      cid - 被異動的目標角色 ID
      cidFrom - 異動來源(對方)角色 ID
      name - 對方角色名稱
      channel - 對方所在頻道(從 1 起算)
      operation - 異動類型(新增或刪除)
      group - 好友分組名稱
    • requestBuddyAdd

      public static BuddyList.BuddyAddResult requestBuddyAdd(String addName, int channelFrom, int cidFrom, String nameFrom, int levelFrom, int jobFrom)
      處理一筆加好友請求,將請求投遞給目標玩家。

      於各頻道依名稱定位目標角色:

      找不到目標所在頻道或角色時仍回傳 BuddyList.BuddyAddResult.OK。具對目標客戶端送出請求封包的副作用。
      Parameters:
      addName - 欲加入的目標角色名稱
      channelFrom - 請求者所在頻道
      cidFrom - 請求者角色 ID
      nameFrom - 請求者角色名稱
      levelFrom - 請求者等級
      jobFrom - 請求者職業
      Returns:
      加好友結果碼(OKBUDDYLIST_FULLALREADY_ON_LIST
    • loggedOn

      public static void loggedOn(String name, int characterId, int channel, int[] buddies)
      通知好友:本角色已上線。

      buddies 中每位好友,於其所在頻道將本角色的好友項目頻道更新為 channel 並送出更新封包。 具跨頻道封包送出副作用。

      Parameters:
      name - 上線角色名稱
      characterId - 上線角色 ID
      channel - 上線角色所在頻道
      buddies - 待通知的好友角色 ID 陣列
    • loggedOff

      public static void loggedOff(String name, int characterId, int channel, int[] buddies)
      通知好友:本角色已離線。

      buddies 中每位好友,於其所在頻道將本角色的好友項目頻道更新為離線(-1)並送出更新封包。 具跨頻道封包送出副作用。

      Parameters:
      name - 離線角色名稱
      characterId - 離線角色 ID
      channel - 離線角色原所在頻道
      buddies - 待通知的好友角色 ID 陣列