CGGuildJoin 是旧版客户端里用于申请加入指定帮会的请求包。
包信息
| 项目 |
内容 |
| 封包 ID |
110 |
| 包名 |
CGGuildJoin |
| 对应回包 |
GCGuildReturn |
| 回包 ID |
604 |
| 作用 |
向指定帮会提交加入申请 |
包体结构
按当前 Game.exe 与 Lua 现状,这条包只有一个帮会编号字段。
| 偏移 |
长度 |
字段 |
类型 |
含义 |
0x00 |
0x02 |
guild_id |
int16 |
目标帮会 ID |
总长度:
2 字节
当前实际行为
- 当前 Lua 服务端收到后,会进入
ma_guild:CGGuildJoin()。
- 当前实现会把当前角色插入该帮会的
PREPARE 状态。
PREPARE 在当前项目里就是“申请列表等待批准”。
- 如果成功取到帮会信息,会回一条
GCGuildReturn。
- 回包类型是
GUILD_RETURN_JOIN = 2。
- 这条回包的语义不是“已经正式入帮”,而是“加入申请已提交,等待批准”。
返回结果
与这条包直接相关的当前返回值如下:
| 项目 |
值 |
含义 |
GUILD_RETURN_JOIN |
2 |
加入申请列表,等待批准 |
服务端落点
这条包在当前项目里的关键位置如下:
- 协议定义:
- 请求入口:
- 帮会业务处理:
msgagent_module/ma_guild.lua
关键代码
协议字段
packet.CGGuildJoin = {
xy_id = packet.XYID_CG_GUILD_JOIN,
bis = function(self, buffer)
local stream = bistream.new()
stream:attach(buffer)
self.guild_id = stream:readshort()
end
}
请求入口
function request:CGGuildJoin()
ma_func:CGGuildJoin(self)
end
当前 Lua 处理
function ma_guild:CGGuildJoin(request)
local guild_id = request.guild_id
self:insert_my_guild_uinfo(guild_id, define.GUILD_POISTION.PREPARE)
local cg = {}
cg.guild_id = guild_id
local guild = skynet.call(".Guildmanager", "lua", "ask_guild_info", cg)
if guild then
local msg = packet_def.GCGuildReturn.new()
msg.return_type = define.GUILD_RETURN_TYPE.GUILD_RETURN_JOIN
msg.id = guild_id
msg.confederate_id = guild.confederate_id
msg.name = guild.name
self:send2client(msg)
skynet.send(".Guildmanager", "lua", "on_new_prepare", guild_id)
end
end
结论
CGGuildJoin 这条包本质上就是“向指定帮会发起加入申请”的请求包。
当前项目里真正要记住的只有四点:
- 这条包的 ID 是
110。
- 包体长度是
2 字节,只有一个 guild_id。
- 当前 Lua 实现里,这条包对应的是“进入帮会申请列表等待批准”,不是直接正式入帮。
- 成功回包是
GCGuildReturn(return_type = 2)。
|