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
结论
GCBankAcquireList(238) 是银行仓库界面的主列表包。
- 包头固定 7 字节,后面按非空格条目追加物品记录。
- 当前项目里它会同时同步仓库容量、存款和所有非空仓库物品。
|