GCCharStopAction 是角色动作或技能被中断时的广播包,当前项目明确用它通知客户端停止当前表现。
包信息
| 项目 |
内容 |
| 封包 ID |
279 |
| 包名 |
GCCharStopAction |
| 方向 |
Server -> Client |
| 对应请求 |
无专用请求;当前由服务端主动广播 |
| 固定包长 |
12 |
| 作用 |
广播对象 ID、逻辑计数和停止时间 |
包体结构
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x04 |
m_objID |
uint32 |
停止动作的对象 ID |
0x04 |
0x04 |
logic_count |
uint32 |
逻辑计数 |
0x08 |
0x04 |
stop_time |
uint32 |
停止时间或剩余表现时间 |
总长度:
12 字节
当前实际行为
- 当前
character.lua、std_impact_014.lua 以及部分 AI 中断逻辑都会发送这条包。
- 现役注释已经明确说明:客户端只会对能力开始包作出反应,中断时必须走
GCCharStopAction。
- 因此这条包在当前版本里是动作打断和中断表现的关键同步包。
服务端落点
- 协议定义:
/home/ubuntu/Game2/services/game/packet.lua
- 主要广播点:
/home/ubuntu/Game2/services/scene/obj/character.lua
- 相关影响逻辑:
/home/ubuntu/Game2/services/scene/skill/impact_logic/std_impact_014.lua
- 说明注释:
/home/ubuntu/Game2/services/scene/ability/base.lua
关键代码
packet.GCCharStopAction = {
bos = function(self)
local stream = bostream.new()
stream:writeuint(self.m_objID)
stream:writeuint(self.logic_count)
stream:writeuint(self.stop_time)
return stream:get()
end
}
结论
GCCharStopAction(279) 是角色动作中断广播包。
- 结构固定为
m_objID + logic_count + stop_time。
- 当前客户端中断表现主要依赖它,而不是靠能力开始包自行结束。
|