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

洱海月 v0-07-0300 封包解析:ID 002 CGDispelBuffReq(移除 Buff 请求)

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

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

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

×

CGDispelBuffReq 是旧版客户端里用于请求移除指定 Buff 的封包。

包信息

项目 内容
封包 ID 002
包名 CGDispelBuffReq
固定回包 无固定专用回包
作用 请求移除指定 Buff / Impact

包体结构

按当前 Game.exe 与 Lua 服务端现状,这条包按下面结构理解即可:

偏移 长度 字段 类型 含义
0x00 0x04 skill_id uint32 技能编号
0x04 0x02 impact_id uint16 Buff / Impact 编号
0x06 0x04 sn uint32 Buff 实例序号

总长度:

10 字节

当前真正决定移除目标的是:

  • sn

服务端落点

这条包在 Lua 服务端里的关键位置如下:

  • 协议定义:
    • services/game/packet.lua
  • 请求入口:
    • services/msgagent.lua
  • 场景侧处理:
    • services/scene/scenecore.lua

最终生效逻辑只有一行:

obj_me:unregister_impact_by_sn(req.sn)

当前实际行为

这条包在当前 Lua 服务端里的实际作用很明确:

  • 客户端发送 CGDispelBuffReq
  • 服务端进入场景服
  • 按 req.sn 注销对应的 impact / buff

也就是说,当前实现里:

  • skill_id 不参与判定
  • impact_id 不参与判定
  • 真正用于定位要移除哪条 Buff 的,是 sn

关键代码

协议字段

packet.CGDispelBuffReq = {
    xy_id = packet.XYID_CG_DISPEL_BUFF_REQ,
    bis = function(self, buffer)
        local stream = bistream.new()
        stream:attach(buffer)
        self.skill_id = stream:readuint()
        self.buffer_id = stream:readushort()
        self.sn = stream:readuint()
    end,
}

请求入口

function request:CGDispelBuffReq()
    skynet.call(my_scene, "lua", "char_dispel_buff", my_obj_id, self)
end

场景侧处理

function scenecore:char_dispel_buff(obj_id, req)
    local obj_me = self.objs[obj_id]
    obj_me:unregister_impact_by_sn(req.sn)
end

结论

CGDispelBuffReq 这条包本质上就是“按 Buff 实例序号请求移除 Buff”的封包。

当前项目里真正要记住的只有三点:

  1. 这条包的 ID 是 002。
  2. 当前 Game.exe 下包体长度是 10 字节,字段顺序是 4 + 2 + 4。
  3. 当前 Lua 服务端实际只使用 sn,通过 unregister_impact_by_sn(req.sn) 移除对应 Buff。
您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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