Class World.Buddy
java.lang.Object
handling.world.World.Buddy
- Enclosing class:
World
好友(Buddy)跨頻道協調子系統。
提供好友聊天、好友清單異動、加好友請求與上下線通知等靜態工具方法。多數方法透過
World.Find.findChannel(int) 定位好友所在頻道後對其連線送出封包,並讀寫對方的
BuddyList;具跨頻道封包送出與狀態變更副作用。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidbuddyChanged(int cid, int cidFrom, String name, int channel, BuddyList.BuddyOperation operation, String group) 在目標玩家的好友清單上套用一筆新增或刪除異動,並通知其客戶端更新好友頻道。static void將好友聊天訊息送給多名收件者。static void通知好友:本角色已離線。static void通知好友:本角色已上線。static BuddyList.BuddyAddResultrequestBuddyAdd(String addName, int channelFrom, int cidFrom, String nameFrom, int levelFrom, int jobFrom) 處理一筆加好友請求,將請求投遞給目標玩家。
-
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- 寄件者角色 IDnameFrom- 寄件者角色名稱chattext- 聊天內容
-
buddyChanged
public static void buddyChanged(int cid, int cidFrom, String name, int channel, BuddyList.BuddyOperation operation, String group) 在目標玩家的好友清單上套用一筆新增或刪除異動,並通知其客戶端更新好友頻道。於各頻道定位
cid對應角色後,依operation對其BuddyList寫入:BuddyList.BuddyOperation.ADDED:若清單已含cidFrom,覆寫該筆並送出更新頻道封包(頻道顯示為channel - 1)。BuddyList.BuddyOperation.DELETED:若清單已含cidFrom,將其頻道設為離線(-1)並送出更新封包,保留原可見狀態。
cid所在頻道或角色時不做任何事。具好友清單狀態變更與封包送出副作用。- Parameters:
cid- 被異動的目標角色 IDcidFrom- 異動來源(對方)角色 IDname- 對方角色名稱channel- 對方所在頻道(從 1 起算)operation- 異動類型(新增或刪除)group- 好友分組名稱
-
requestBuddyAdd
public static BuddyList.BuddyAddResult requestBuddyAdd(String addName, int channelFrom, int cidFrom, String nameFrom, int levelFrom, int jobFrom) 處理一筆加好友請求,將請求投遞給目標玩家。於各頻道依名稱定位目標角色:
- 目標好友清單已滿 → 回傳
BuddyList.BuddyAddResult.BUDDYLIST_FULL。 - 目標清單尚未含請求者 → 對目標客戶端發出加好友請求(
addBuddyRequest)。 - 目標清單已含且為可見 → 回傳
BuddyList.BuddyAddResult.ALREADY_ON_LIST。
BuddyList.BuddyAddResult.OK。具對目標客戶端送出請求封包的副作用。- Parameters:
addName- 欲加入的目標角色名稱channelFrom- 請求者所在頻道cidFrom- 請求者角色 IDnameFrom- 請求者角色名稱levelFrom- 請求者等級jobFrom- 請求者職業- Returns:
- 加好友結果碼(
OK/BUDDYLIST_FULL/ALREADY_ON_LIST)
- 目標好友清單已滿 → 回傳
-
loggedOn
通知好友:本角色已上線。對
buddies中每位好友,於其所在頻道將本角色的好友項目頻道更新為channel並送出更新封包。 具跨頻道封包送出副作用。- Parameters:
name- 上線角色名稱characterId- 上線角色 IDchannel- 上線角色所在頻道buddies- 待通知的好友角色 ID 陣列
-
loggedOff
通知好友:本角色已離線。對
buddies中每位好友,於其所在頻道將本角色的好友項目頻道更新為離線(-1)並送出更新封包。 具跨頻道封包送出副作用。- Parameters:
name- 離線角色名稱characterId- 離線角色 IDchannel- 離線角色原所在頻道buddies- 待通知的好友角色 ID 陣列
-