找回密码
 registerss
搜索
查看: 20|回复: 0

洱海月 v0-07-0300 封包解析:ID 473 GCMissionModify(任务增量更新)

[复制链接]
  • 打卡等级:本地老炮
  • 打卡总天数:603
  • 打卡月天数:1
  • 打卡总奖励:600
  • 最近打卡:2026-10-03 06:32:28
Waylee 发表于 2026-4-15 11:22 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?registerss

×

GCMissionModify 是任务系统的增量更新包。当前 Lua 与 Game.exe 都能确认,它按 m_nFlag 分成两种结构:一种只推送 mission_id + mission_index,另一种直接带完整任务数据。

包信息

项目 内容
封包 ID 473
包名 GCMissionModify
方向 Server -> Client
包长 7 / 42
对应请求 任务状态变化时主动触发
作用 增量更新单条任务或单个任务索引

包体结构

偏移 长度 字段 类型 含义
0x00 0x01 m_nFlag uint8 更新模式;当前 1 为索引更新,其余值走完整任务数据
0x01 0x06 mission_index_update bytes[6] mission_id:uint16 + mission_index:uint32
0x01 41 m_aMissionData bytes[41] 完整任务条目:任务 ID、索引、标志和 8 个参数

当前实际行为

  • 当前 human:update_md_value() 和登录初始化流程都会发送 GCMissionModify。
  • 当 m_nFlag == 1 时,当前 Lua 实际发的是 mission_id:uint16 + mission_index:uint32。
  • 否则,当前 Lua 会把整条任务数据打进 m_aMissionData。
  • 因此这条包是任务系统的“局部刷新”,用来避免频繁回整包 GCMissionList。

服务端落点

  • 协议定义:/home/ubuntu/Game2/services/game/packet.lua
  • 发送入口:/home/ubuntu/Game2/services/scene/obj/human.lua

关键代码

if self.m_nFlag == 1 then
    stream:writeuchar(self.m_nFlag)
    stream:writeushort(self.mission_id)
    stream:writeuint(self.mission_index)
else
    stream:writeuchar(self.m_nFlag)
    -- 写完整 m_aMissionData
end

结论

GCMissionModify(473) 是标准的任务增量回包。当前版本里,m_nFlag 决定它是“只刷新任务索引”还是“刷新整条任务数据”。

您需要登录后才可以回帖 登录 | registerss

本版积分规则

QQ|手机版|雪舞知识库 ( 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 )|天天打卡

GMT+8, 2026-10-4 11:26 , Processed in 0.062884 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表