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

洱海月 v0-07-0300 封包解析:ID 1308 GCPVPActSyncBossPos(PVP 活动 Boss 坐标同步)

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

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

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

×

GCPVPActSyncBossPos 是当前客户端保留的一条 PVP 活动 Boss 坐标同步包。按当前 Game.exe 的 Read() / Write() / Execute() 结论,它会先下发一个共享的 creature_id,再附带最多 3 组坐标,用于在客户端刷新或清空活动 Boss 标记。

包信息

项目 内容
封包 ID 1308
包名 GCPVPActSyncBossPos
方向 GC 服务端 -> 客户端
包长 变长:5 + 8 * boss_count
当前 Lua 协议定义 现役 /home/ubuntu/Game2 未检出
当前 Lua 发送点 现役 /home/ubuntu/Game2 未检出
当前用途 同步 PVP 活动 Boss 的坐标列表,并按共享 creature_id 填充显示名

当前 Game.exe 可直接确认:

GetPacketID()   = 1308;
GetPacketSize() = 5 + 8 * boss_count;
Read()          = read_u8(count) + read_u32(creature_id) + read_float2[count];
Write()         = 同结构写回;
Execute()       = 2;

包体结构

偏移 长度 字段 类型 含义
0x00 0x01 boss_count uint8 坐标数量;当前客户端最多处理 3 个槽位
0x01 0x04 creature_id uint32 共享 Boss 配置 ID;客户端会用它到 CreatureDBC 查名字
0x05 0x08 * boss_count boss_pos_list float[2] * N 每条为一组 x / y 坐标

单条坐标记录的逻辑结构为:

相对偏移 长度 字段 类型 含义
+0x00 0x04 pos_x float 坐标 X
+0x04 0x04 pos_y float 坐标 Y

当前实际行为

  • boss_count == 0 时,当前客户端会直接清空现有 Boss 标记列表。
  • boss_count > 0 时,客户端会先清空旧列表,再按最多 3 个槽位写入新坐标。
  • creature_id 不随每条坐标重复携带,而是整包共享;客户端会用这一个 ID 去 CreatureDBC 查名称,并把同一个名字填到本次同步的各个槽位。
  • 当数量不足 3 时,其余槽位会被写成无效坐标。
  • 当前 Execute() 最终只负责刷新本地状态,不会再向 Lua 主链回传。

服务端落点

当前现役服务端未检出以下内容:

  • /home/ubuntu/Game2/services/game/packet.lua
  • /home/ubuntu/Game2/services/msgagent.lua
  • /home/ubuntu/Game2/services/scene/scenecore.lua

因此,GCPVPActSyncBossPos 在当前版本应视为“客户端保留的活动坐标同步包”,而不是现役 Lua 主链中可见的广播协议。

关键代码

Read() {
    read_u8(boss_count);
    read_u32(creature_id);
    for (i = 0; i < boss_count && i < 3; ++i)
        read_float2(boss_pos_list[i]);
    return 1;
}

GetPacketSize() {
    return 5 + 8 * boss_count;
}

Execute() {
    if (boss_count == 0) {
        clear_boss_pos_list();
        return 2;
    }

    clear_boss_pos_list();
    for (i = 0; i < 3; ++i) {
        set_boss_pos(i, boss_pos_list[i]);
        set_boss_name(i, CreatureDBC[creature_id].name);
    }
    return 2;
}

结论

GCPVPActSyncBossPos(1308) 的当前结论可以稳定收敛为:

  1. 它是一条 共享 creature_id + 最多 3 组坐标 的活动 Boss 标记同步包。
  2. creature_id 的真实作用是给客户端查 Boss 名字。
  3. 当前 Lua 主链未检出发送链,因此最终结论以当前 Game.exe 为准。
您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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