包信息
| 项目 |
内容 |
| 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 这一种提示模式。
|