GCNewSummoner_Death 是 GCNewSummoner 的死亡态变体。当前 Game.exe 已能确认:它与 GCNewSummoner 共用完全相同的 28 字节包体结构,只是执行阶段会在召唤物出生后立刻补一条死亡动作,让对象直接进入死亡状态。
包信息
| 项目 |
内容 |
| 封包 ID |
1345 |
| 包名 |
GCNewSummoner_Death |
| 方向 |
GC 服务端 -> 客户端 |
| 固定包长 |
28 |
| 当前 Lua 协议定义 |
未检出 |
| 当前 Lua 发送点 |
未检出 |
| 当前用途 |
把死亡状态的召唤物同步到客户端视野 |
包体结构
这条包与 GCNewSummoner(1344) 完全共用同一套读写布局:
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x04 |
obj_id |
uint32 |
召唤物对象 ID |
0x04 |
0x04 |
summoner_attr_id |
uint32 |
召唤物配置 / 属性表 ID |
0x08 |
0x04 |
world_pos.x |
float |
世界坐标 X |
0x0C |
0x04 |
world_pos.y |
float |
世界坐标 Y |
0x10 |
0x04 |
spawn_param |
uint32 |
出生附加参数 |
0x14 |
0x04 |
move_speed |
float |
移动速度 |
0x18 |
0x01 |
state_flag_1 |
uint8 |
状态字节 1 |
0x19 |
0x01 |
state_flag_2 |
uint8 |
状态字节 2 |
0x1A |
0x02 |
reserved_tail |
bytes[2] |
保留尾段 |
当前实际行为
- 客户端会先按
GCNewSummoner 的标准链路创建 / 匹配召唤物对象。
- 创建成功后,除了应用位置、初始化参数、速度和状态字节外,还会额外向对象补一条“死亡动作”:
- 如果当前选中目标正好是这个召唤物,客户端还会顺带关闭对应的选中目标表现。
- 因此,这条包不是普通出生包,而是“出生后立即进入死亡态”的召唤物同步包。
服务端落点
当前现役服务端未检出以下同名协议定义或发送链:
/home/ubuntu/Game2/services/game/packet.lua
/home/ubuntu/Game2/services/msgagent.lua
/home/ubuntu/Game2/services/scene/scenecore.lua
关键代码
Read() {
// 与 GCNewSummoner 完全相同
}
GetPacketSize() {
return 28;
}
Execute() {
summoner = find_or_create_summoner(obj_id, summoner_attr_id);
if (summoner) {
apply_spawn_fields(...);
apply_action_now(summoner, 500, 4); // 直接进入死亡动作
clear_target_if_needed(summoner);
}
return 2;
}
结论
GCNewSummoner_Death(1345) 可以直接理解为:
- 结构与
GCNewSummoner 完全相同。
- 差别只在执行阶段,它会把召唤物立即推入死亡动作。
- 当前版本里它属于客户端保留的死亡态召唤物出生包。
|