CGMissionContinue 是任务对话继续请求包,当前现役 Lua 已接入,并直接把请求转给目标对象脚本的 OnMissionContinue。
包信息
| 项目 |
内容 |
| 封包 ID |
373 |
| 包名 |
CGMissionContinue |
| 方向 |
Client -> Server |
| 对应回包 |
无专用回包 |
| 固定包长 |
12 |
| 作用 |
继续某个 NPC / 脚本任务对话流程 |
包体结构
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x04 |
m_idNPC |
int32 |
目标 NPC 或对象 ID |
0x04 |
0x04 |
reserved_1 |
int32 |
当前 Lua 字段名为 unknow,未参与实际调用 |
0x08 |
0x04 |
m_idScript |
int32 |
任务脚本 ID |
总长度:
12 字节
当前实际行为
- 当前
msgagent.lua 会把请求直接转给场景服 char_mission_continue。
- 现役场景服真正使用的是
m_idNPC 和 m_idScript 两个字段,随后调用 OnMissionContinue。
- 中间 4 字节当前没有参与现役 Lua 主链调用。
服务端落点
- 协议定义:
/home/ubuntu/Game2/services/game/packet.lua
- 请求入口:
/home/ubuntu/Game2/services/msgagent.lua
- 场景处理:
/home/ubuntu/Game2/services/scene/scenecore.lua
关键代码
function scenecore:char_mission_continue(who, ma)
local obj_id = ma.m_idNPC
local obj = self.objs[obj_id]
if obj then
self.scriptenginer:call(obj:get_script_id(), "OnMissionContinue", who, ma.m_idNPC, ma.m_idScript)
end
end
结论
CGMissionContinue(373) 是任务继续对话请求包。
- 结构可以明确写成
m_idNPC + reserved_1 + m_idScript。
- 当前真正决定行为的是
m_idNPC 和 m_idScript。
|