WGCTeamBoardGiveInfo 是组队平台 / 招募看板的列表下发包。当前 Game.exe 可以直接确认:它有一个固定 20 字节头部,随后按 board_type 区分两种不同的条目结构,分别对应队伍招募列表和玩家求组列表。
包信息
| 项目 |
内容 |
| 封包 ID |
752 |
| 包名 |
WGCTeamBoardGiveInfo |
| 方向 |
WGC TeamBoard / World -> 游戏客户端链路 |
| 包长 |
变长:20 + entry_list |
| 当前 Lua 协议定义 |
现役 /home/ubuntu/Game2 未检出 |
| 当前 Lua 发送点 |
现役 /home/ubuntu/Game2 未检出 |
| 当前用途 |
下发组队招募板或玩家求组板的分页列表内容 |
当前 Game.exe 可直接确认:
GetPacketID() = 752;
GetPacketSize() = 20 + sum(entry_size);
Read() = read_header + read_entry_list;
Write() = write_header + write_entry_list;
Execute() = 2;
包体结构
公共头部
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x01 |
board_type |
uint8 |
板类型;当前 Game.exe 可确认 1 和 2 两类 |
0x01 |
0x04 |
reserved_u32 |
uint32 |
当前 Game.exe 未检出稳定语义 |
0x05 |
0x02 |
reserved_u16 |
uint16 |
当前 Game.exe 未检出稳定语义 |
0x07 |
0x04 |
reserved_u32_2 |
uint32 |
当前 Game.exe 未检出稳定语义 |
0x0B |
0x04 |
reserved_u32_3 |
uint32 |
当前 Game.exe 未检出稳定语义 |
0x0F |
0x04 |
entry_count |
uint32 |
条目数量 |
0x13 |
0x01 |
header_flag |
uint8 |
头部附带标记 |
board_type = 1 队伍招募条目
| 偏移 |
长度 |
字段 |
类型 |
含义 |
+0x00 |
0x04 |
publisher_guid |
int32 |
发布者角色 GUID |
+0x04 |
0x01 |
name_len |
uint8 |
发布者名字长度 |
+0x05 |
name_len |
publisher_name |
char[n] |
发布者名字 |
| 动态 |
0x04 |
menpai_mask |
uint32 |
招募门派掩码 |
| 动态 |
0x01 |
min_level |
uint8 |
最低等级 |
| 动态 |
0x01 |
max_level |
uint8 |
最高等级 |
| 动态 |
0x01 |
topic_len |
uint8 |
招募标题长度 |
| 动态 |
topic_len |
topic |
char[n] |
招募标题 |
| 动态 |
0x01 |
team_member_count |
uint8 |
当前队伍人数 |
| 动态 |
0x01 |
goal_id |
uint8 |
招募目标类型 |
单条长度公式:14 + name_len + topic_len
board_type = 2 玩家求组条目
| 偏移 |
长度 |
字段 |
类型 |
含义 |
+0x00 |
0x04 |
publisher_guid |
int32 |
发布者角色 GUID |
+0x04 |
0x01 |
name_len |
uint8 |
发布者名字长度 |
+0x05 |
name_len |
publisher_name |
char[n] |
发布者名字 |
| 动态 |
0x01 |
topic_len |
uint8 |
求组标题长度 |
| 动态 |
topic_len |
topic |
char[n] |
求组标题 |
| 动态 |
0x01 |
goal_id |
uint8 |
目标类型 |
| 动态 |
0x04 |
level |
uint32 |
发布者等级 |
| 动态 |
0x01 |
menpai_id |
uint8 |
发布者门派 ID |
单条长度公式:12 + name_len + topic_len
当前实际行为
- 当前客户端执行链会把
a1 + 24 这段完整数据交给 CTeamBoardDataPool::AddData 一类的内部列表池。
board_type = 1 时,客户端按“队伍招募板”条目解析。
board_type = 2 时,客户端按“玩家求组板”条目解析。
- 当前条目字段命名不是单纯来自旧工程,而是由现役
Game.exe 的真实序列化顺序,再结合客户端 TeamPT 系列界面展示项共同收敛出来的结果。
- 公共头部中的 4 个保留字段当前还没有足够证据给出稳定业务语义,因此本文继续保留
reserved_* 命名。
服务端落点
当前现役服务端未检出以下内容:
/home/ubuntu/Game2/services/game/packet.lua
/home/ubuntu/Game2/services/msgagent.lua
/home/ubuntu/Game2/services/scene/scenecore.lua
因此,这条包当前主要依据现役 Game.exe 与客户端界面消费方式整理,现役 Lua 主链未检出同名发送链。
关键代码
当前 Game.exe 的头部结构:
read_u8(board_type);
read_u32(reserved_u32);
read_u16(reserved_u16);
read_u32(reserved_u32_2);
read_u32(reserved_u32_3);
read_u32(entry_count);
read_u8(header_flag);
read_entry_list(board_type, entry_count);
长度公式:
size = 20;
if (board_type == 1)
size += sum(name_len + topic_len + 14);
else if (board_type == 2)
size += sum(name_len + topic_len + 12);
else
size = 0;
结论
WGCTeamBoardGiveInfo(752) 的当前结论可以稳定收敛为:
- 它是组队平台列表数据下发包。
- 固定头部为
20 字节,后面按 board_type 分两种条目结构。
board_type = 1 对应队伍招募板,board_type = 2 对应玩家求组板。
- 公共头部中的多个字段目前仍缺乏现役语义证据,应继续保留
reserved_* 命名。
|