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

洱海月 v0-07-0300 封包解析:ID 019 GCNotifyGoodBad(善恶值变动提示)

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

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

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

×

包信息

项目 内容
PacketID 19
包名 GCNotifyGoodBad
方向 服务端 -> 客户端
长度 5
主要用途 通知客户端本次善恶值变化量
当前主链状态 现役;角色善恶值变动时发送

包体结构

偏移 长度 字段 类型 含义
0 1 mode uint8 提示模式,当前 Lua 主链实际发送 0
1 4 bonus int32 本次善恶值增减量

当前实际行为

  • 当前 Lua 在 human:add_good_bad_value(add) 中维护角色善恶值。
  • 当 add ~= 0 时,服务端会先更新人物身上的善恶值,再发送 GCNotifyGoodBad。
  • 当前主链固定写入 mode = 0,bonus = add。
  • 当前客户端会根据 mode 选择提示模板,再把 bonus 作为本次增减数值显示出来。
  • 这条包只同步“变化量”,不直接下发最终总善恶值。

服务端落点

  • /home/ubuntu/Game2/services/game/packet.lua
    • 定义 GCNotifyGoodBad 的 5 字节结构
  • /home/ubuntu/Game2/services/scene/obj/human.lua
    • add_good_bad_value(add) 在善恶值变化后发送该包

关键代码

function human:add_good_bad_value(add)
    if add ~= 0 then
        local value = self:get_good_bad_value()
        value = value + add
        local config_info = configenginer:get_config("config_info")
        local MaxGoodBadValue = config_info.GoodBad.MaxGoodBadValue
        value = value > MaxGoodBadValue and MaxGoodBadValue or value
        self:set_good_bad_value(value)
        local msg = packet_def.GCNotifyGoodBad.new()
        msg.mode = 0
        msg.bonus = add
        self:get_scene():send2client(self, msg)
    end
end

结论

GCNotifyGoodBad 是当前版本的善恶值增减提示包,实际用途很单纯,就是把本次变化量推给客户端做提示显示。

现役主链已确认只发送 mode = 0 这一种提示模式。

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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