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

洱海月 v0-07-0300 封包解析:ID 426 CLAskCharLogin(角色登录请求)

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

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

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

×

CLAskCharLogin 是登录服收到“选中角色并进入游戏服”时的请求包。当前 Lua 登录服只真正使用其中的 guid 字段,第二个 PlayerID 字段在现版主链没有参与校验。

包信息

项目 内容
封包 ID 426
包名 CLAskCharLogin
方向 Client -> LoginServer
包长 6
对应回包 LCRetCharLogin
作用 提交目标角色 GUID,请登录服放行进入游戏服

包体结构

偏移 长度 字段 类型 含义
0x00 0x04 guid uint32 目标角色 GUID
0x04 0x02 PlayerID uint16 客户端选角附带索引,当前 Lua 登录服未使用

当前实际行为

  • 当前登录服在 logind.lua 的 XYID_CLASKCHARLOGIN 分支只取 packet.guid 做在线、角色归属和区服合法性校验。
  • 当前 PlayerID 在现役 Lua 主链没有进入任何校验逻辑。
  • 登录服校验通过后,会向 .gamed 申请登录子会话,再回 LCRetCharLogin 给客户端。
  • 如果角色已在线或重登冷却未结束,当前登录服会直接返回 result = 8 阻止继续进入。

服务端落点

  • 协议定义:/home/ubuntu/Game2/services/login/packet.lua
  • 登录入口:/home/ubuntu/Game2/services/login/logind.lua

关键代码

elseif packet.xy_id == packet_def.XYID_CLASKCHARLOGIN then
    local guid = packet.guid
    if skynet.call(".gamed", "lua", "check_guid_is_online", guid) then
        ret = packet_def.LCRetCharLogin.new()
        ret.result = 8
        loginservice.send(fd, idx, ret)
        return
    end
end

结论

CLAskCharLogin(426) 的现版主链重点只有一个:提交要进入游戏服的角色 GUID。PlayerID 仍保留在协议里,但当前登录服并不依赖它做实际放行判断。

您需要登录后才可以回帖 登录 | registerss

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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