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

洱海月 v0-07-0300 封包解析:ID 1029 CGAskFashionDepotData(请求时装衣柜快照)

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

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

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

×

CGAskFashionDepotData 是客户端向服务端请求时装衣柜完整数据的请求包。当前版本里,Lua 服务端收到后会直接回发 GCAskFashionDepotData 的整包快照。

包信息

项目 内容
封包 ID 1029
包名 CGAskFashionDepotData
方向 CG 客户端 -> 游戏服
固定包长 10
专用回包 GCAskFashionDepotData(1028)
当前 Lua 协议定义 /home/ubuntu/Game2/services/game/packet.lua
当前请求入口 /home/ubuntu/Game2/services/msgagent.lua 的 request:CGAskFashionDepotData()
当前场景落点 /home/ubuntu/Game2/services/scene/scenecore.lua 的 ask_fashion_depot_data()
当前用途 请求服务端下发完整时装衣柜数据

当前 Game.exe 可直接确认:

GetPacketID()   = 1029;
GetPacketSize() = 10;
Read()          = read_u8(request_type), read_u32(param_1), read_u32(param_2), read_u8(reserved_1);
Write()         = 同结构写回;
Execute()       = 2;

包体结构

偏移 长度 字段 类型 含义
0x00 0x01 request_type uint8 请求类型;当前 Lua 未使用
0x01 0x04 param_1 uint32 预留参数;当前 Lua 未使用
0x05 0x04 param_2 uint32 预留参数;当前 Lua 未使用
0x09 0x01 reserved_1 uint8 预留字节;当前 Lua 未使用

当前实际行为

  • 当前 Lua request:CGAskFashionDepotData() 不读取请求包里的业务参数。
  • 请求进入场景层后,服务端会直接调用 ask_fashion_depot_data(),再回发完整 GCAskFashionDepotData 快照。
  • 当前 packet.lua 的 Lua 版本只定义了前 9 字节:
    • uint8
    • uint32
    • uint32
  • Game.exe 可以确认线上客户端类仍保留最后的 1 字节尾字段,因此协议总长以 10 字节为准。
  • 当前场景逻辑并不依赖这 4 个字段的值。

服务端落点

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

关键代码

当前 Lua 请求入口

function request:CGAskFashionDepotData()
    skynet.call(my_scene, "lua", "ask_fashion_depot_data", my_obj_id)
end

当前 Lua 协议定义

packet.CGAskFashionDepotData = {
    xy_id = packet.XYID_CG_ASK_FASHION_DEPOT_DATA,
    ctor = function(self)
        self.unknow_1 = 0
        self.unknow_2 = 0
        self.unknow_3 = 0
    end,
    bis = function(self, buffer)
        local stream = bistream.new()
        stream:attach(buffer)
        self.unknow_1 = stream:readuchar()
        self.unknow_2 = stream:readuint()
        self.unknow_3 = stream:readuint()
    end
}

当前 Game.exe 关键结论

__int64 GetPacketID()   { return 1029; }
__int64 GetPacketSize() { return 10; }

__int64 Read(Packet *pkt, Stream *s) {
    s->Read(&pkt->request_type, 1);
    s->Read(&pkt->param_1, 4);
    s->Read(&pkt->param_2, 4);
    s->Read(&pkt->reserved_1, 1);
    return 1;
}

结论

  1. CGAskFashionDepotData 的客户端协议总长是固定 10 字节。
  2. 当前 Lua 只实际消费前 9 字节,最后 1 字节尾字段未接入业务逻辑。
  3. 现役服务端处理链不依赖包内参数,只把它当作“请求整包时装衣柜快照”的触发器。
  4. 当前主回包是 GCAskFashionDepotData(1028)。
您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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