找回密码
 registerss
搜索

洱海月 v0-07-0300 封包解析:ID 1026 GCMovieOpr(过场影片操作)

[复制链接]
Waylee 发表于 2026-4-15 16:42 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

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

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

×

GCMovieOpr 是客户端过场影片控制包。当前 Game.exe 保留了完整的读写和执行链,用来触发影片播放,或在特定分支下回调 OnMovieEnd 脚本。

包信息

项目 内容
封包 ID 1026
包名 GCMovieOpr
方向 GC 游戏服 -> 客户端
固定包长 9
当前 Lua 协议定义 未检出
当前 Lua 发送点 未检出
当前用途 控制客户端播放指定影片,或触发影片结束脚本回调

当前 Game.exe 可直接确认:

GetPacketID()   = 1026;
GetPacketSize() = 9;
Read()          = read_u8(op_type), read_u32(movie_id), read_u32(param);
Write()         = write_u8(op_type), write_u32(movie_id), write_u32(param);
Execute()       = op_type == 1 时播放影片,否则走 OnMovieEnd(movie_id) 回调链;

包体结构

偏移 长度 字段 类型 含义
0x00 0x01 op_type uint8 影片操作类型;当前执行链明确处理 1
0x01 0x04 movie_id uint32 影片或过场资源 ID
0x05 0x04 param uint32 预留参数;当前执行链未直接使用

当前实际行为

  • 当前 Lua 服务端未检出同名协议定义和发送点。
  • 当前客户端执行链只在 op_type == 1 时进入已确认的播放分支。
  • 若客户端能从影片属性表中拿到 movie_id 对应资源,就会向界面层发送 Play 操作。
  • 若影片资源不存在,客户端会构造一条本地脚本执行链,回调 OnMovieEnd(movie_id)。
  • param 虽然在线上包体中保留,但当前执行函数未直接读取它。

服务端落点

  • 当前 /home/ubuntu/Game2 未检出 packet.GCMovieOpr
  • 当前 /home/ubuntu/Game2 未检出同名发送点

关键代码

当前 Game.exe 读写结构

__int64 Write(Packet *pkt, Stream *s) {
    s->Write(&pkt->op_type, 1);
    s->Write(&pkt->movie_id, 4);
    s->Write(&pkt->param, 4);
    return 1;
}

__int64 Read(Packet *pkt, Stream *s) {
    s->Read(&pkt->op_type, 1);
    s->Read(&pkt->movie_id, 4);
    s->Read(&pkt->param, 4);
    return 1;
}

当前 Game.exe 执行分支

if (pkt && pkt->op_type == 1) {
    if (FindMovieAttr(pkt->movie_id)) {
        UI->SendMessage("Play");
    } else {
        ExecuteScript("OnMovieEnd", pkt->movie_id);
    }
}
return 2;

结论

  1. GCMovieOpr 是固定 9 字节的影片控制包。
  2. 当前可确认字段是 op_type + movie_id + param。
  3. 当前客户端只明确处理 op_type == 1 的播放分支。
  4. 当前 Lua 主链未接入这条包,现役行为主要由客户端本地执行逻辑决定。
您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

GMT+8, 2026-10-24 13:56 , Processed in 0.027992 second(s), 27 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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