GCChristmasThiefPos 是客户端保留的一条节日活动坐标包。当前 Game.exe 能确认它固定为 4 字节,携带一组 int16 坐标;客户端收包后会把它更新到本地的“圣诞盗贼”位置缓存中。
包信息
| 项目 |
内容 |
| 封包 ID |
192 |
| 包名 |
GCChristmasThiefPos |
| 方向 |
Server -> Client |
| 包长 |
4 |
| 当前 Lua 协议定义 |
未发现 |
| 作用 |
同步圣诞盗贼活动目标的地图坐标 |
包体结构
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x02 |
thief_pos_x |
int16 |
圣诞盗贼坐标 X |
0x02 |
0x02 |
thief_pos_y |
int16 |
圣诞盗贼坐标 Y |
当前实际行为
- 当前
Game.exe 中,GetPacketID() 返回 192,GetPacketSize() 返回 4。
Read() / Write() 固定读写两段 2 字节坐标。
- 当前客户端
Execute() 的行为可以明确确认:
- 当
thief_pos_x != -1 且 thief_pos_y != -1 时,更新本地活动坐标缓存,并把活动标记置为有效
- 当任一坐标为
-1 时,清除当前活动标记
- 当前 Lua 服务端未发现这条包的协议定义或发送点。
- 从包名和执行逻辑看,这条包用于地图上“圣诞盗贼”一类节日目标的坐标提示。
服务端落点
当前 Lua 主链未发现这条包的正式落点:
/home/ubuntu/Game2/services/game/packet.lua
/home/ubuntu/Game2/services/msgagent.lua
/home/ubuntu/Game2/services/scene/scenecore.lua
关键代码
GetPacketID() = 192;
GetPacketSize() = 4;
Read(stream) {
read_i16(thief_pos_x);
read_i16(thief_pos_y);
}
Write(stream) {
write_i16(thief_pos_x);
write_i16(thief_pos_y);
}
Execute() {
if (thief_pos_x != -1 && thief_pos_y != -1) {
cached_x = thief_pos_x;
cached_y = thief_pos_y;
has_thief_pos = 1;
} else {
has_thief_pos = 0;
}
return 2;
}
结论
GCChristmasThiefPos(192) 是客户端仍保留解析能力的节日活动坐标包,结构就是 thief_pos_x + thief_pos_y 两个 int16。坐标有效时客户端更新活动目标位置,坐标为 -1/-1 时客户端清除活动标记。
|