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

洱海月 v0-07-0300 封包解析:ID 011 CGStallShopName(摆摊店名设置)

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

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

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

×

CGStallShopName 是旧版客户端里用于提交摆摊店名的请求包。

包信息

项目 内容
封包 ID 011
包名 CGStallShopName
对应回包 当前 Lua 现状未见专属成功回包
作用 向服务端提交新的摆摊店名,供当前角色的摊位栏位写入名称

包体结构

当前 Game.exe 与 Lua 协议定义都能确认,这条包是“长度前缀 + 字符串内容”的变长结构。

固定头如下:

偏移 长度 字段 类型 含义
0x00 0x01 stall_name_len uint8 摊位名长度,当前客户端与 Lua 都限制最大 34

后续字符串段如下:

偏移 长度 字段 类型 含义
0x01 stall_name_len stall_name char[n] 摆摊店名原始字节串

当前 Game.exe 的 GetPacketSize() 公式为:

stall_name_len + 1

也就是:

  • 最短 1 字节
  • 名字内容每增加 1 字节,总长度同步增加 1
  • 当前有效最大长度为 35 字节,其中:
    • 1 字节长度头
    • 34 字节店名字节串

当前实际行为 / 模式说明

  • 当前 Game.exe 中,CGStallShopName::GetPacketID() 返回 11。
  • 当前 Game.exe 的 Read() 先读 1 字节长度,再把超过 34 的长度强制截成 34,最后按该长度读取店名字节串。
  • 当前 Game.exe 的 Write() 也是先写长度,再写对应长度的名字内容。
  • 当前 Game.exe 的 Execute() 对客户端侧是空处理,直接返回。
  • 当前 Lua 协议定义同样是:
    • 先读 len
    • len > 34 时截断为 34
    • 再读取 stall_name
    • 最后做一次 gbk.toutf8()
  • 当前 Lua 请求入口是 request:CGStallShopName()。
  • 当前场景服处理函数 scenecore:char_stall_shop_name() 会直接把包里的 stall_name 写入当前角色的 stall_box:
    • stall_box:set_stall_name(ssn.stall_name)
  • 因此这条包在当前版本里的用途非常直接,就是“修改当前摆摊店名”。

服务端落点

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

关键代码

当前 Lua 协议定义

***付费内容***

当前 Lua 请求入口

function request:CGStallShopName()
    skynet.call(my_scene, "lua", "char_stall_shop_name", my_obj_id, self)
end

当前 Lua 场景处理

function scenecore:char_stall_shop_name(who, ssn)
    local obj = self.objs[who]
    local stall_box = obj:get_stall_box()
    stall_box:set_stall_name(ssn.stall_name)
end

当前 Game.exe 的读写与执行结论

***付费内容***

结论

这条包在当前旧版项目里要记住六点:

  1. CGStallShopName 的封包 ID 是 011。
  2. 它不是定长包,而是 stall_name_len + 1 的变长结构。
  3. 当前客户端和 Lua 都把摊位名最大长度限制为 34 字节。
  4. 包体核心字段只有两个:stall_name_len 和 stall_name。
  5. 当前 Lua 收到后会把店名转成 UTF-8,并直接写入 stall_box:set_stall_name()。
  6. 当前版本里,这条包的作用就是“修改当前摆摊店名”,没有额外业务分支。
付费看帖
剩余 17% 内容需要支付 10.00 金币 后可完整阅读
支持付费阅读,激励作者创作更好的作品。
已有1人购买阅读
  • 1751
您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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