WGCDDZDataInfo 是斗地主模块使用的批量数据同步包。当前客户端收到后会先清空 DDZ 数据池,再按 78 字节一条的记录数组整批拷贝,并触发相关界面刷新事件。
包信息
| 项目 |
内容 |
| 封包 ID |
1044 |
| 包名 |
WGCDDZDataInfo |
| 方向 |
WGC 世界服链路 -> 客户端 |
| 包长规则 |
24 + 78 * entry_count |
| 当前 Lua 协议定义 |
未检出 |
| 当前主发送点 |
未检出 |
| 当前用途 |
同步 DDZ 批量数据列表并刷新相关界面 |
当前 Game.exe 可直接确认:
GetPacketID() = 1044;
GetPacketSize() = 24 + 78 * entry_count;
Read()/Write() = 3 个 int32 头部 + 78 字节记录数组 + 3 个 int32 尾部参数;
Execute() = 清理 DDZ 数据池并刷新 UI;
包体结构
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x04 |
data_type |
int32 |
数据类别 |
0x04 |
0x04 |
ui_param |
int32 |
界面参数 |
0x08 |
0x04 |
entry_count |
int32 |
记录条数 |
0x0C |
78 * entry_count |
entry_list |
bytes[78] * n |
DDZ 批量记录数组 |
动态偏移 |
0x04 |
tail_arg_1 |
int32 |
尾部参数 1 |
动态偏移 |
0x04 |
tail_arg_2 |
int32 |
尾部参数 2 |
动态偏移 |
0x04 |
tail_arg_3 |
int32 |
尾部参数 3 |
当前实际行为
- 当前客户端执行函数会先清空既有 DDZ 数据池,再把
entry_list 整批拷贝到内存记录区。
- 包内单条记录长度固定为
78 字节,整包长度因此直接由 entry_count 控制。
- 数据同步完成后,客户端会触发 DDZ 相关界面刷新。
客户端/Interface/MenPaiFirstOne_BattleTable/MenPaiFirstOne_BattleTable.lua 当前仍监听 DDZ_OPEN_RANKINGCHARTS 与 DDZ_UPDATE_RANKINGCHARTS 事件,是这条包最明确的 UI 落点。
- 当前 Lua 服务端未检出
WGCDDZDataInfo 协议定义或发送入口。
服务端落点
- 当前 Lua 服务端未检出
WGCDDZDataInfo 协议定义。
- 当前 Lua 服务端未检出
WGCDDZDataInfo 发送点。
- 客户端相关界面脚本:
客户端/Interface/MenPaiFirstOne_BattleTable/MenPaiFirstOne_BattleTable.lua
关键代码
当前 Game.exe 长度规则
size = 24 + 78 * entry_count;
当前 DDZ 界面刷新事件
elseif event == "DDZ_OPEN_RANKINGCHARTS" then
MenPaiFirstOne_BattleTable_Update()
this:Show()
elseif event == "DDZ_UPDATE_RANKINGCHARTS" then
if this:IsVisible() == false then
return
end
MenPaiFirstOne_BattleTable_Update()
end
结论
WGCDDZDataInfo 是 24 + 78 * entry_count 的批量数据同步包。
- 包体核心是
78 字节定长记录数组,头尾各有 3 个 int32 辅助参数。
- 当前客户端收到后会重建 DDZ 数据池,并驱动排行榜 / 战表类界面刷新。
- 当前版本没有检出 Lua 服务端现役发送链,包体结论主要依据
Game.exe 和客户端界面行为。
|