找回密码
 registerss
搜索

洱海月 v0-07-0300 封包解析:ID 1108 CGAuctionMultiBuyItem(拍卖行批量购买请求)

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

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

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

×

CGAuctionMultiBuyItem 是客户端提交给游戏服的拍卖行批量购买请求包。当前 /home/ubuntu/Game2 的协议层已经保留了解包定义,能够稳定确认它由“条目数 + 最多 10 条购买项”组成;每条购买项都携带目标物品 GUID、卖家 GUID、货架索引和成交价格。

包信息

项目 内容
封包 ID 1108
包名 CGAuctionMultiBuyItem
方向 CG 客户端 -> 游戏服
包长 变长;空包头 1 字节,完整形态为 1 + 17 * count
数量上限 count <= 10
当前 Lua 状态 已定义解包,但当前主链未检出明确处理入口
专用回包 无专用回包

当前 Game.exe 与 Lua 协议层结论一致:

PacketID   = 1108;
PacketSize = 1 + 17 * count;

包体结构

主包结构

偏移 长度 字段 类型 含义
0x00 0x01 count uint8 批量购买条目数量,当前协议限制最大 10
0x01 0x11 * count buy_items buy_item[count] 批量购买项列表

buy_item 结构

偏移 长度 字段 类型 含义
+0x00 0x08 item_guid bytes[8] 拍卖行目标物品 GUID
+0x08 0x04 seller_guid int32 卖家角色 GUID
+0x0C 0x01 listing_index uint8 卖家货架 / 列表内索引
+0x0D 0x04 price uint32 本次购买时客户端提交的成交价格

当前实际行为

  • 当前 Lua bis() 会先读取 count,仅当 count <= 0xA 时继续解包。
  • 每条购买项都会按固定 17 字节读取,不存在额外类型分支。
  • 当前 Lua 协议层变量名虽然用了 packet.ItemInfo.new():bis(stream),但按当前 Game.exe 的包长可以确认这里实际占用的是 8 字节 GUID 段。
  • 现有证据可以稳定确认这是“拍卖行批量购买请求”而不是单条申请包。
  • 当前 /home/ubuntu/Game2 主链没有检出明确的处理入口,因此它更像是客户端与协议层仍保留、但现役 Lua 场景逻辑未正式接线的请求包。

服务端落点

当前 Lua 服务端落点如下:

  • /home/ubuntu/Game2/services/game/packet.lua
    • 定义 CGAuctionMultiBuyItem
    • bis() 读取 count 与 buy_items
    • 限制最多 10 条

当前主链未找到以下内容:

  • /home/ubuntu/Game2/services/msgagent.lua 中的显式分发入口
  • /home/ubuntu/Game2/services/scene 中的同名业务处理
  • 当前 Lua 服务端对应的批量购买专用回包

关键代码

当前 Lua 的解包逻辑

local count = stream:readuchar()
if count <= 0xA then
    for i = 1, count do
        local buy = {}
        buy.item_guid = packet.ItemInfo.new()
        buy.item_guid:bis(stream)
        buy.seller_guid = stream:readint()
        buy.index = stream:readuchar()
        buy.price = stream:readuint()
        table.insert(self.buy_items, buy)
    end
end

当前 Game.exe 的长度约束

if (count > 10)
    return 1;
return 1 + 17 * count;

结论

  1. CGAuctionMultiBuyItem(1108) 是一条批量购买请求包,包体由 count 和最多 10 条购买项组成。
  2. 单条购买项固定 17 字节,可稳定确认字段为 item_guid + seller_guid + listing_index + price。
  3. 当前 /home/ubuntu/Game2 已定义这条协议的解包,但现役主链未检出明确处理入口。
  4. 这条包的最终结构判断以当前 Game.exe 和当前 Lua 协议层为准,不需要借助旧 Server 才能成立。
您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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