0x04. 协议 LOGIN_PASSWORD 登录成功的Client字段的初始化和填充以及回包

**WORD 登录成功的Client字段的初始化和填充以及回包 当客户端在启动时 connect 服务端成功时,会在 LoginServerInitializer.initChannel 中通过 Client.createLoginClient客户端IP, SessionID, PacketProcessor.getLoginServerProcessor() 登录过程协议包 进行初始化。 最终将 new clientsocketChannel.pipeline()** 绑定一起。

new Client 字段的填充。

Client.createLoginClientnew Client 进行的基本的初始化。此时客户端还未登录和选择世界,所以都是 -1

Client.type = Type.LOGIN
Client.sessionId = sessionId.getAndIncrement();
Client.remoteAddress = 客户端IP
Client.packetProcessor = PacketProcessor.getLoginServerProcessor();
Client.world = -1;
Client.channel = -1;

LOGIN_PASSWORD 协议中

Client.accountName = 登录账户
Client.accId = sql.accounts.id
Client.gmlevel = 0
Client.pin = sql.accounts.pin
Client.pic = sql.accounts.pic
Client.gender = sql.accounts.gender Client.characterSlots = sql.accounts.characterslots
Client.lang = sql.accounts.language
Client.loggedIn = 当前账户是否已经登录
Client.accountCharacterCount = sql.xxx 联合查询当前世界的角色信息
Client.gmlevel = sql.角色中是否存在GM角色

服务端登录成功回包

包头: SendOpcode.LOGIN_STATUS
+4: 0 登录成功
+2: 0 unknow
+4: 账户ID
+1: 性别
+4(boolen): 是否强制GM模式
+1: 是否强制GM模式
+1: 国家代码, 默认0 +str: 账户名称 == 登录的账户
+1: 0, 占位符
+1: 0, unknow +4(long): 0, unknow +4(long): 0, unknow +4(int): 1, 移除世界选择界面?
+1: 是否启动PIN码
+1: 2, 禁用PIN码

评论*

* 为必填