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

洱海月 v0-07-0300 封包解析:ID 238 GCBankAcquireList(银行仓库列表下发)

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

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

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

×

GCBankAcquireList 是银行仓库界面的主结果包,用来下发仓库容量、存款和所有非空格物品。

包信息

项目 内容
封包 ID 238
包名 GCBankAcquireList
方向 Server -> Client
对应请求 CGBankAcquireList
包长 变长;7 + item_entries
作用 同步银行仓库容量、存款和物品列表

包体结构

偏移 长度 字段 类型 含义
0x00 0x01 used_space uint8 非空条目数量
0x01 0x01 all_space uint8 仓库总格数
0x02 0x04 save_money uint32 仓库存款
0x06 0x01 reserved_flag int8 当前 Lua 默认写 1
0x07 变长 bank_items list 每条至少含 bag_index + has_item + count,有物品时继续写 ItemInfo

当前实际行为

  • 当前场景服会在发送前先刷新银行物品的锁定状态。
  • 现役发送链只把非空格子写进 bank_items,因此 used_space 等于非空条目数,不等于总格数。
  • 单条记录里 has_item 字段当前实际固定写 1,表示后面跟随完整 ItemInfo。

服务端落点

  • 协议定义:/home/ubuntu/Game2/services/game/packet.lua
  • 请求入口:/home/ubuntu/Game2/services/msgagent.lua
  • 场景处理:/home/ubuntu/Game2/services/scene/scenecore.lua

关键代码

function scenecore:char_bank_acquire_list(who)
    local obj = self.objs[who]
    local bank_item_list = obj:copy_item_container_raw_data_with_lock_state(bank_bag_container)
    local msg = packet_def.GCBankAcquireList.new()
    msg.all_space = bank_bag_container:get_size()
    msg.save_money = obj:get_bank_save_money()
    msg.used_space = table.nums(bank_item_list)
    ...
    self:send2client(obj, msg)
end

结论

  1. GCBankAcquireList(238) 是银行仓库界面的主列表包。
  2. 包头固定 7 字节,后面按非空格条目追加物品记录。
  3. 当前项目里它会同时同步仓库容量、存款和所有非空仓库物品。
您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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