GCMenpaiInfo 是客户端里仍然保留的一个旧门派信息包。当前 Game.exe 可以明确确认它的包体只有 2 字节;但当前 Lua 服务端主链中已经找不到这条协议的定义、包 ID 常量和任何发送点,客户端 handler 也已经是空实现。
结合当前版本门派相关协议的写法,这 2 字节字段可以收敛命名为 menpai_id。不过就现役链路而言,这条包已经不是当前门派同步主包,更接近一个遗留保留包。
包信息
| 项目 |
内容 |
| 封包 ID |
272 |
| 包名 |
GCMenpaiInfo |
| 方向 |
GC 服务端 -> 客户端 |
| 固定包长 |
2 |
| 对应请求 |
无专用请求 |
| 主要作用 |
旧门派编号通知包;当前客户端仍保留类定义,但当前 Lua 主链未启用 |
当前 Game.exe 的虚函数结论为:
GetPacketID() = 272;
GetPacketSize() = 2;
包体结构
按当前 Game.exe 现状,这条包固定为 2 字节。
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x02 |
menpai_id |
uint16 |
门派编号 |
Game.exe 自身只能直接确认“这是一个 2 字节值”。字段名采用 menpai_id,主要依据是包名 GCMenpaiInfo,以及当前版本其他门派相关协议仍统一使用 uint16 menpai / menpai_id。
当前实际行为
- 当前 Lua 服务端全目录未找到
GCMenpaiInfo、XYID_GC_MENPAI_INFO 或对应的包定义,说明这条包在现版本 Lua 主链里已经不再定义也不再发送。
- 当前门派加入流程走的是
script_base:LuaFnJoinMenpai(),核心行为是:
- 调用
obj:set_menpai(menpai) 写入人物门派属性
- 重建心法列表
- 清理并重建门派技能
- 当前门派学习相关初始化则走
GCXinfaStudyInfo,不是 GCMenpaiInfo。
- 当前客户端
Game.exe 的 GCMenpaiInfo::Execute() 只是直接返回 2,没有任何额外界面刷新或状态落点。
综合当前 Lua 与当前 Game.exe,这条包应视为“当前未启用的遗留保留包”,而不是现役门派同步链中的关键协议。
服务端落点
- 当前 Lua 主链未定义:
/home/ubuntu/Game2/services/game/packet.lua
- 当前门派加入流程:
/home/ubuntu/Game2/lualib/script_base.lua
- 当前门派属性写入:
/home/ubuntu/Game2/services/scene/obj/human.lua
这些代码能说明当前门派流程仍在运行,但不再经过 GCMenpaiInfo。
关键代码
当前 Lua 的门派加入流程
function script_base:LuaFnJoinMenpai(selfId, menpai)
local obj = self.scene.objs[selfId]
obj:set_menpai(menpai)
obj:change_menpai_points()
obj:clear_xinfa_list(true)
...
obj:clear_menpai_skills()
...
end
这条现役流程里没有 GCMenpaiInfo 的构包与发送。
当前 Lua 的门派学习初始化
function script_base:DispatchXinfaLevelInfo(selfId, targetId, menpai)
local msg = packet_def.GCXinfaStudyInfo.new()
msg.teacher = targetId
msg.menpai = menpai
self.scene:send2client(selfId, msg)
end
当前需要把门派编号主动发给客户端时,Lua 主链实际使用的是 GCXinfaStudyInfo。
当前 Game.exe 的读写与执行结论
GetPacketID() = 272;
GetPacketSize() = 2;
Read(stream) {
read(buf + 24, 2);
}
Write(stream) {
write(buf + 24, 2);
}
Execute() {
return 2;
}
结论
GCMenpaiInfo 的封包 ID 是 272,固定长度 2 字节。
- 当前
Game.exe 只确认它携带一个 2 字节值,字段可按当前门派协议统一命名为 menpai_id。
- 当前 Lua 服务端主链已经不再定义和发送这条包。
- 当前客户端 handler 为空实现,说明它在现版本里也没有实际处理逻辑。
- 因此这条包应归类为“当前未启用的旧门派编号通知包”。
|