|
|
2026-8-24追加更新
3.实现好友系统
好友系统实现
由于S4A12与A21版本差距不大,尝试A12获知的好友相关协议在A21做了验证,没有什么问题,所以直接以原协议迁移了相关代码并做了适配修改
修改目标与业务 owner
目标:S4A21 服务端补齐好友系统能力(好友添加/删除/列表/上下线/状态同步/生命周期响应),并修复好友相关的城镇残留白影问题。
业务 owner:UnitedFriendSystem(Server/DfoServer/Game/Friends/)。
移植说明:移植自 86JP 好友协议,参照 86JP 已知协议验证(MR 141)。单向语义、门控方向、三态频道、entry 布局、ADD/DELETE body、成功 ACK 13B、错误码表两项目一致。A21 侧差异:协议常量取 PacketTypesA21.cs;旧库迁移为 SqliteMigrations v9 add_united_friend_relations;USERINFO subtype0 按 A21 布局。
实现的功能:
添加好友请求 0x0122 信令实现
删除好友请求 0x0123 信令实现
下发好友列表协议 0x0111 实现
好友上下线通知协议 0x0112 实现
持久化:内存字典 + united_friend_relations 表(item_schema.sql 全库幂等建表,不新增迁移)
持久化
内存字典 + united_friend_relations 表(键为角色名,BINARY 大小写敏感,与 characters.name 对齐)。
建表双路径(无运行时隐式建表):
新库:item_schema.sql 直接建表(IF NOT EXISTS 幂等)。
旧库:SqliteMigrations v9 add_united_friend_relations 连续迁移补建(幂等,新库已建则自动跳过)。
支持场景
角色登录游戏后,服务端下发好友列表信息触发UI刷新
添加好友操作
删除好友操作
好友进入/离开频道时通知
好友改变状态时(进入副本/返回城镇等) 角色状态同步,即好友列表中会刷新角色的 在线/繁忙 小图标
好友升级/转职导致好友页面需要变更时,服务端全量下发刷新好友列表信息
好友角色删除时,通知客户端刷新好友列表,同时删除表项
[未实现] 好友角色更名时,迁移好友关系 ,角色更名接入待做(USE_RENAME_CARD 无 handler,HandleCharacterRenamedAsync 已就绪待挂载)) |
|