装备校验链/快捷栏/公会/好友情侣/交易仓库五项差距修复(增量 129)
- 装备校验:can_equip 按 CanEquipNow→FindEquipCell→EquipItem 精确重排, 新增 find_equip_cell() 1:1 复刻(RING/UNIQUE 占用翻转、COSTUME/BELT/DS), 帝国 antiflag 降级为 tooltip 提示,LIMIT_PCBANG/REAL_TIME* 语义与倒计时文案 - 快捷栏:死亡全槽禁用+激活守卫、变身(affect 220)技能置灰、 物品槽失配置灰(服务器回收/换武器后刷新) - 公会:GUILD_AUTH_* 权限位门控踢人/公告/技能升级,/gskillup、 被宣战应答弹窗(/war·/nowar)、资金存取行(40250 服务端已禁用仍保留 1:1) - 好友/情侣:messenger 三固定组(好友/公会/情侣),lover_login/logout/ near/far/divorce 命令事件→在线/在身边状态与离婚隐藏 - 交易/仓库:ExchangeState.last_notice(ALREADY/LESS_GOLD)结束浮层提示; 仓库改密 /safebox_change_password 三段输入;关窗补 /safebox_close·/mall_close; 仓库金钱经核实 40250 无 wire 协议,UI 定界只读 - app_flow:重连时 guild_marks_ready 重复连接加 is_connected 守卫 - 相机 look_at 零向量守卫(首帧/传送落点) - 测试:equip/love/guild 断言更新,79 项中 78 绿(game_camera_test 为 HEAD 既有失败);真服冒烟 LIVE_SMOKE PASS(192.168.21.203 全链路) - docs/CLIENT-GAP.md 同步增量 129 Co-Authored-By: Claude Code <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018kUFvQGYusuY3dkfGitmAe
This commit is contained in:
@@ -309,6 +309,10 @@ struct ExchangeState {
|
||||
int64_t peer_gold = 0;
|
||||
bool self_accept = false;
|
||||
bool peer_accept = false;
|
||||
// EXCHANGE_GC_ALREADY / LESS_GOLD 的线上的子头值(0 = 无)。服务器在成功与
|
||||
// 取消两种结局都发 GC_END(exchange.cpp EXCHANGE_END 统一 Cancel),成败区分
|
||||
// 只靠 CHAT_TYPE_INFO 文案;这里只承载这两个机器可判的附加码。
|
||||
uint8_t last_notice = 0;
|
||||
};
|
||||
|
||||
// --- guild (GC_GUILD) --------------------------------------------------------
|
||||
@@ -414,6 +418,11 @@ struct ServerCommandEvent {
|
||||
MobileAuthRequired,
|
||||
ComboChanged,
|
||||
GiftAvailable,
|
||||
LoverLogin,
|
||||
LoverLogout,
|
||||
LoverNear,
|
||||
LoverFar,
|
||||
LoverDivorce,
|
||||
};
|
||||
Kind kind = PartyRequestDenied;
|
||||
uint32_t value = 0; // item vnum / price, depending on kind
|
||||
@@ -460,6 +469,8 @@ struct LoverInfo {
|
||||
std::string name;
|
||||
uint8_t love_point = 0;
|
||||
bool valid = false;
|
||||
bool online = false; // CHAT_TYPE_COMMAND "lover_login"/"lover_logout"(marriage.cpp)
|
||||
bool near = false; // CHAT_TYPE_COMMAND "lover_near"/"lover_far"
|
||||
};
|
||||
|
||||
// The local player's full stat array (GC_PLAYER_POINTS), indexed by EPointTypes.
|
||||
@@ -645,6 +656,8 @@ public:
|
||||
void mut_marker_delete(int32_t id);
|
||||
void mut_observer(ObserverEvent::Kind kind, uint32_t vid, int32_t x, int32_t y);
|
||||
void mut_lover(const std::string &name, uint8_t love_point);
|
||||
void mut_lover_online(bool online);
|
||||
void mut_lover_near(bool near);
|
||||
void mut_love_point(uint8_t love_point);
|
||||
void mut_fishing(uint8_t subheader, uint32_t info, uint8_t dir);
|
||||
void mut_dungeon(uint8_t subheader, int32_t x, int32_t y, bool has_destination);
|
||||
@@ -675,7 +688,7 @@ public:
|
||||
void mut_exchange_gold(bool self, int64_t gold);
|
||||
void mut_exchange_accept(bool self, bool accepted);
|
||||
void mut_exchange_end();
|
||||
void mut_exchange_notice(); // server-side ALREADY / LESS_GOLD notice
|
||||
void mut_exchange_notice(uint8_t code); // EXCHANGE_GC_ALREADY / LESS_GOLD 子头值
|
||||
void mut_safebox_open(int size);
|
||||
void mut_safebox_money(int64_t money);
|
||||
void mut_safebox_set(uint16_t cell, uint32_t vnum, uint8_t count, uint32_t flags,
|
||||
|
||||
Reference in New Issue
Block a user