GCZBSGMVisable 是争霸赛 GM 观战 / 镜头可视化同步包。当前 Game.exe 已能稳定确认它是固定 24 字节的 GC 包,包体由 6 个 uint32 组成。结合客户端 NoDiffMatch_Camera 与 NoDiffMatch_Camera_Tiny 的脚本消费方式,可以把后四个整型稳定理解为观战相机使用的 x / z / heading / pitch 视角参数。
包信息
| 项目 |
内容 |
| 封包 ID |
1142 |
| 包名 |
GCZBSGMVisable |
| 方向 |
GC 服务端 -> 客户端 |
| 固定包长 |
24 |
| 当前 Lua 状态 |
当前 /home/ubuntu/Game2 主链未检出同名协议定义或发送链 |
| 主要作用 |
同步争霸赛 GM 观战目标与镜头参数 |
当前 Game.exe 的直接结论为:
PacketID = 1142;
PacketSize = 24;
包体结构
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x04 |
view_type |
uint32 |
观战 / 镜头分支类型 |
0x04 |
0x04 |
player_obj_id |
uint32 |
目标玩家对象 ID |
0x08 |
0x04 |
camera_x |
uint32 |
镜头参数 x |
0x0C |
0x04 |
camera_z |
uint32 |
镜头参数 z |
0x10 |
0x04 |
camera_heading |
uint32 |
镜头朝向参数 |
0x14 |
0x04 |
camera_pitch |
uint32 |
镜头俯仰参数 |
当前实际行为
- 当前客户端会把这条包交给争霸赛观战相机界面处理。
NoDiffMatch_Camera.lua 中已经出现稳定调用:
ZBS:SetPlayerWatchPosDirection(data.type, data.x, data.z, data.h, data.p)
- 这说明包尾四个整型参数确实会被消费成观战位置与朝向参数。
- 当前
view_type 会决定使用哪种观战展示模式,player_obj_id 则用于锁定当前观战目标玩家。
NoDiffMatch_Camera_Tiny 同样监听了 ZBS_GMVISABLE_SHOW 与 ZBS_GMVISABLE_TINYSHOW,说明这条包同时服务普通观战与小窗观战模式。
服务端落点
当前 /home/ubuntu/Game2 主链未找到 GCZBSGMVisable 的现役 Lua 落点,已确认的检查范围包括:
/home/ubuntu/Game2/services/game/packet.lua
/home/ubuntu/Game2/services/msgagent.lua
/home/ubuntu/Game2/services/scene
当前客户端可确认的消费界面为:
NoDiffMatch_Camera
NoDiffMatch_Camera_Tiny
关键代码
当前 Game.exe 的读写顺序
Read(stream) {
read(view_type, 4);
read(player_obj_id, 4);
read(camera_x, 4);
read(camera_z, 4);
read(camera_heading, 4);
read(camera_pitch, 4);
}
当前客户端观战脚本的消费方式
ZBS:SetPlayerWatchPosDirection(data.type, data.x, data.z, data.h, data.p)
结论
GCZBSGMVisable(1142) 是固定 24 字节的争霸赛 GM 观战视角同步包。
- 包体已经可以稳定确认成
view_type + player_obj_id + camera_x + camera_z + camera_heading + camera_pitch。
- 当前客户端确实把它用于普通观战和小窗观战两类镜头界面。
- 这条包的字段命名已经主要由当前
Game.exe 与当前客户端脚本消费方式共同坐实,不需要借助旧 Server 推断。
|