GCComboSkillOperation 是当前项目里已接入的连招操作同步包。现役 Lua 会在默认连招展示、进入连招、取消连招和冷却中断时发送这条包。
包信息
| 项目 |
内容 |
| 封包 ID |
1092 |
| 包名 |
GCComboSkillOperation |
| 方向 |
Server -> Client |
| 对应请求 |
无专用请求 |
| 固定包长 |
36 |
| 作用 |
同步连招状态、技能 ID 和连招列表 |
包体结构
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x04 |
cur_comb |
int32 |
当前连招状态值 |
0x04 |
0x04 |
skill_id |
int32 |
当前连招技能 ID |
0x08 |
0x04 |
reserved_1 |
int32 |
保留参数;当前 Lua 默认不使用 |
0x0C |
0x04 |
tempnum |
int32 |
当前阶段附加数值 |
0x10 |
0x14 |
combo_list[5] |
uint32[5] |
连招列表或默认展示列表 |
总长度:
36 字节
当前实际行为
- 当前
human:send_default_skill_combo_operation() 会下发默认展示包,内容为 cur_comb=0、skill_id=764、tempnum=0、combo_list={764,764,787,0,1}。
human:add_skill_combo_operation(skill_id) 在进入连招时下发 cur_comb=1、tempnum=1;重复触发时下发 cur_comb=4、tempnum=0 并清空状态。
human:combo_skill_cool_downd(skill_id) 会在冷却中断时下发 cur_comb=2、tempnum=-1。
- 当前 Lua 只显式使用
cur_comb、skill_id、tempnum 和 combo_list,中间的 reserved_1 保持默认值。
服务端落点
- 协议定义:
/home/ubuntu/Game2/services/game/packet.lua
- 发送逻辑:
/home/ubuntu/Game2/services/scene/obj/human.lua
关键代码
packet.GCComboSkillOperation = {
bos = function(self)
local stream = bostream.new()
stream:writeint(self.cur_comb)
stream:writeint(self.skill_id)
stream:writeint(self.unknow_3)
stream:writeint(self.tempnum)
for i = 1, 5 do
stream:writeuint(self.combo_list[i])
end
return stream:get()
end
}
function human:add_skill_combo_operation(skill_id)
if self.skill_comb_operation == nil then
self.skill_comb_operation = { skill_id = skill_id}
self.skill_comb_operation.cur_comb = 1
local msg = packet_def.GCComboSkillOperation.new()
msg.cur_comb = 1
msg.skill_id = skill_id
msg.tempnum = 1
self:get_scene():send2client(self, msg)
else
local msg = packet_def.GCComboSkillOperation.new()
msg.cur_comb = 4
msg.skill_id = skill_id
msg.tempnum = 0
self:get_scene():send2client(self, msg)
self.skill_comb_operation = nil
end
end
结论
GCComboSkillOperation(1092) 是当前项目已接入的连招操作同步包。
- 结构固定为
cur_comb + skill_id + reserved_1 + tempnum + combo_list[5]。
- 现役 Lua 已明确使用这条包同步默认连招、进入连招、取消连招和冷却中断。
|