包信息
| 项目 |
内容 |
| PacketID |
41 |
| 包名 |
GCNewMonster_SkillChannel |
| 方向 |
服务端 -> 客户端 |
| 长度 |
60 |
| 主要用途 |
怪物进入视野时,直接同步其“已处于持续施法中”的出生状态 |
| 当前主链状态 |
客户端仍保留处理逻辑;当前 Lua 主链未发现显式定义和发送链 |
包体结构
| 偏移 |
长度 |
字段 |
类型 |
含义 |
| 0 |
4 |
m_objID |
uint32 |
怪物对象 ID |
| 4 |
4 |
model_id |
int32 |
怪物模型 ID |
| 8 |
4 |
world_pos.x |
float |
当前世界坐标 X |
| 12 |
4 |
world_pos.y |
float |
当前世界坐标 Y |
| 16 |
4 |
dir |
float |
当前朝向 |
| 20 |
4 |
speed |
float |
当前速度 |
| 24 |
4 |
update_version |
uint32 |
状态更新版本字段 |
| 28 |
4 |
logic_count |
uint32 |
当前施法逻辑计数 |
| 32 |
4 |
skill_id |
uint32 |
持续施法技能 ID |
| 36 |
4 |
target_id |
uint32 |
施法目标对象 ID |
| 40 |
4 |
target_pos.x |
float |
施法目标点 X |
| 44 |
4 |
target_pos.y |
float |
施法目标点 Y |
| 48 |
4 |
skill_dir |
float |
施法朝向 |
| 52 |
4 |
reserved_skill_arg |
uint32 |
预留施法参数 |
| 56 |
4 |
total_time |
uint32 |
持续施法总时长 |
当前实际行为
- 当前
Game.exe 仍保留 GCNewMonster_SkillChannel 的完整客户端处理逻辑。
- 客户端收到后会先校验坐标,再按
m_objID + model_id 创建或匹配怪物对象。
- 随后客户端会应用
update_version,并立即派发一次持续施法事件。
- 当前
Temp_Release_v0-07-0300 的 Lua 主链里未找到 packet.GCNewMonster_SkillChannel 定义,也未找到显式发送链。
服务端落点
/home/ubuntu/Game2/services/game/packet.lua
- 当前未发现
GCNewMonster_SkillChannel 协议定义
/home/ubuntu/Game2/services/scene
/home/ubuntu/Game2/services/msgagent.lua
关键代码
validate_position(world_pos);
monster = find_or_create_monster(m_objID, model_id);
apply_update_version(monster, update_version);
dispatch_skill_channel_event(
logic_count,
skill_id,
target_id,
target_pos,
skill_dir,
reserved_skill_arg,
total_time
);
结论
GCNewMonster_SkillChannel 是客户端保留的“怪物出生时已处于持续施法状态”复合包。
当前项目里它同样更适合归类为客户端兼容协议,而不是 Lua 主链现役发送包。
|