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

洱海月 v0-07-0300 封包解析:ID 134 GCCharModifyAction(动作时间修正通知)

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

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

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

×

GCCharModifyAction 是当前旧版项目仍在使用的动作时间修正包。它用于把角色当前动作的逻辑计数和时间修正量下发给客户端,现役 Lua 会在引导动作、蓄力动作以及受击导致的动作时间变化时发送它。

包信息

项目 内容
封包 ID 134
包名 GCCharModifyAction
方向 Server -> Client
包长 12
当前 Lua 协议定义 已实现 bos()
作用 同步角色当前动作的逻辑计数与时间修正量

包体结构

偏移 长度 字段 类型 含义
0x00 0x04 m_objID int32 角色对象 ID
0x04 0x04 logic_count int32 当前动作逻辑计数
0x08 0x04 modify_time int32 本次动作时间修正值,单位毫秒

当前实际行为

  • 当前 Game.exe 中,GetPacketID() 返回 134,GetPacketSize() 返回 12。
  • Read() / Write() 顺序固定为 m_objID -> logic_count -> modify_time。
  • 当前 Lua 协议定义与 Game.exe 完全一致:
    • /home/ubuntu/Game2/services/game/packet.lua 只实现了 bos()
  • 现役发送点有两类:
    • actionenginer:broadcast_unit_channel_time_changed() 与 broadcast_unit_charge_time_changed() 会把 delta_time 发给客户端
    • character.lua 在角色处于施法动作且被伤害打断节奏时,也会下发同结构修正
  • 这条包不是“开始动作”广播,而是“当前动作时间被修正”的补丁包;真正的开始广播由其他动作包负责。

服务端落点

  • 协议定义:
    • /home/ubuntu/Game2/services/game/packet.lua
  • 现役发送点:
    • /home/ubuntu/Game2/lualib/actionenginer.lua
    • /home/ubuntu/Game2/services/scene/obj/character.lua

关键代码

packet.GCCharModifyAction = {
    bos = function(self)
        local stream = bostream.new()
        stream:writeint(self.m_objID)
        stream:writeint(self.logic_count)
        stream:writeint(self.modify_time)
        return stream:get()
    end
}
function actionenginer:broadcast_unit_channel_time_changed(actor, delta_time)
    local msg = packet_def.GCCharModifyAction.new()
    msg.m_objID = actor:get_obj_id()
    msg.logic_count = actor:get_logic_count()
    msg.modify_time = delta_time
    actor:get_scene():send2client(actor, msg)
end
local msg = packet_def.GCCharModifyAction.new()
msg.m_objID = selfId
msg.logic_count = self:get_logic_count()
msg.modify_time = continuance
scene:send2client(self, msg)

结论

GCCharModifyAction(134) 是当前版本现役动作修正包,固定 12 字节,结构已经可以明确写成 m_objID + logic_count + modify_time。它的核心用途不是启动动作,而是在动作进行中把剩余时间变化同步给客户端。

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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