GCXbwCopySceneFullData 是华山论剑副本场景的一条整块全量同步包。当前 Game.exe 明确确认它固定 748 字节,包含三块大数据区和三个尾部参数;客户端收到后会整块刷新本地 XBW 场景缓存,并把增量标记置为已准备。
包信息
| 项目 |
内容 |
| 封包 ID |
993 |
| 包名 |
GCXbwCopySceneFullData |
| 方向 |
GC 服务端 -> 客户端 |
| 包长 |
748 字节 |
| 当前 Lua 服务端 |
/home/ubuntu/Game2/services/game/packet.lua 未定义 |
| 主要作用 |
以全量快照形式刷新华山论剑副本场景缓存 |
当前 Game.exe 虚函数结论:
GetPacketID() = 993;
GetPacketSize() = 748;
Read() = 0x1406196E0;
Write() = 0x140619780;
Execute() = 0x1406196D0 -> 0x140095710;
包体结构
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x270 |
scene_full_blob |
bytes[624] |
场景全量状态块 |
0x270 |
0x40 |
scene_extra_blob |
bytes[64] |
附加状态块 |
0x2B0 |
0x30 |
result_preview_blob |
bytes[48] |
结果/表现预览块 |
0x2E0 |
0x04 |
reserved_1 |
uint32 |
尾部附加参数 |
0x2E4 |
0x04 |
reserved_2 |
uint32 |
尾部附加参数 |
0x2E8 |
0x04 |
event_arg |
uint32 |
客户端事件 935 的参数 |
当前实际行为
- 客户端收到后,会把整包内容拷贝进 XBW 场景缓存。
- 同步完成后,会把缓存里的“增量准备标记”设置为
1。
- 最后触发事件
935,事件参数就是尾部 event_arg。
- 这条包通常用来一次性刷新整份场景状态,而不是只打局部补丁。
服务端落点
- 当前
Game2 Lua 服务端未定义 GCXbwCopySceneFullData
- 当前结论主要来自
Game.exe
- 这条协议与
GCXbwCopySceneBasicData(991)、GCXbwCopySceneData(992) 属于同一套 XBW 场景同步链
关键代码
当前 Game.exe 读包逻辑
read(scene_full_blob, 624);
read(scene_extra_blob, 64);
read(result_preview_blob, 48);
read(reserved_1, 4);
read(reserved_2, 4);
read(event_arg, 4);
当前 Game.exe 执行逻辑
copy_full_snapshot_to_xbw_cache(packet);
xbw_scene_cache.increment_ready = 1;
dispatch_event(935, event_arg);
结论
GCXbwCopySceneFullData 是当前华山论剑副本的全量刷新包。它固定 748 字节,客户端收到后会直接覆盖整块 XBW 场景缓存,并触发一次全量刷新事件 935。
|