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

洱海月 v0-07-0300 封包解析:ID 999 GCXbwLobbyInfo(新比武大厅状态)

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

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

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

×

GCXbwLobbyInfo 是当前客户端保留的新比武大厅状态同步包。Game.exe 已能稳定确认它为固定 12 字节结构,并且客户端 Lua 接口还能直接读取 bHaveTeam、teamNum、bInLobby、nextMatchTime 等大厅状态键。

包信息

项目 内容
封包 ID 999
包名 GCXbwLobbyInfo
方向 GC 服务端 -> 客户端
固定包长 12
当前 Lua 协议定义 未发现
当前 Lua 发送入口 未发现
主要作用 同步客户端本地新比武大厅状态并触发大厅界面刷新

当前 Game.exe 可直接确认:

GCXbwLobbyInfo
GetPacketID()   = 999;
GetPacketSize() = 12;
Read            = 0x140618650;
Write           = 0x140618720;
Execute thunk   = 0x140618640 -> sub_140095880;

包体结构

偏移 长度 字段 类型 含义
0x00 0x01 bHaveTeam uint8 是否已有队伍
0x01 0x01 teamNum uint8 队伍人数
0x02 0x01 bMenPaiFit uint8 门派条件是否满足
0x03 0x01 bInLobby uint8 是否处于大厅状态
0x04 0x01 bXbwTeamFit uint8 新比武队伍条件是否满足
0x05 0x04 nextMatchTime uint32 下次匹配或刷新时间
0x09 0x01 round_or_dayWinCnt_1 uint8 包尾双字节状态区之一
0x0A 0x01 round_or_dayWinCnt_2 uint8 包尾双字节状态区之一
0x0B 0x01 timeType uint8 时间类型/时间阶段

客户端脚本侧还可以读取 round 与 dayWinCnt。结合当前 Read() 顺序和大厅状态 getter,可以确定这两个值来自包尾的两个单字节状态位,但暂时无法仅凭现役证据 100% 区分它们在线路上的先后次序,因此本文保留为 round_or_dayWinCnt_*。

当前实际行为

当前客户端 Execute() 会把整条包写入本地新比武大厅状态块,并立即触发事件 945。此外,客户端内置 Lua getter sub_140074100 能读取以下键:

  • bHaveTeam
  • teamNum
  • bMenPaiFit
  • bInLobby
  • bXbwTeamFit
  • timeType
  • round
  • nextMatchTime
  • dayWinCnt

这说明 GCXbwLobbyInfo 的 12 字节并不是匿名保留字段,而是大厅界面脚本实际读取的一组状态快照。

服务端落点

当前 /home/ubuntu/Game2 未发现这条协议的现役落点:

  • 未发现协议定义:/home/ubuntu/Game2/services/game/packet.lua
  • 未发现消息服入口:/home/ubuntu/Game2/services/msgagent.lua
  • 未发现世界服或场景服发送链:/home/ubuntu/Game2/services/world、/home/ubuntu/Game2/services/scene

关键代码

当前 Game.exe 的读写骨架

Read(stream) {
    read_u8(bHaveTeam);
    read_u8(teamNum);
    read_u8(bMenPaiFit);
    read_u8(bInLobby);
    read_u8(bXbwTeamFit);
    read_u32(nextMatchTime);
    read_u8(round_or_dayWinCnt_1);
    read_u8(round_or_dayWinCnt_2);
    read_u8(timeType);
}

当前 Game.exe 的执行结论

Execute() {
    update_local_xbw_lobby_state(packet);
    fire_event(945);
    return 2;
}

结论

  1. GCXbwLobbyInfo(999) 是固定 12 字节的新比武大厅状态同步包。
  2. 当前客户端已明确把其中的大部分字段暴露成 bHaveTeam/teamNum/bInLobby/nextMatchTime/timeType 等脚本可读状态。
  3. 包尾两个 uint8 最终对应 round/dayWinCnt,但在线路上的精确先后仍建议保守处理。
  4. 当前 /home/ubuntu/Game2 未发现现役发送链。
您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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