/// <summary> /// 处理登录注册请求 /// </summary> /// <param name="msg"></param> public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; //给客户端的回应消息 GameMsg rspMsg = new GameMsg() { cmd = (int)CMD.RspLogin, rspLogin = new RspLogin() { }, }; //当前账号已上线 产生错误码 if (cacheSvc.IsAcctOnLine(data.acct)) { rspMsg.err = (int)ErrorCode.AcctIsOnline; } //当前账号未上线 else { PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pass); if (pd != null)//账密匹配 产生玩家数据(这里包含了创建账号) { //更新玩家体力值 int power = pd.power; long time = pd.time; long now = TimerSvc.Instance.GetNowTime(); pd.time = now; long millSeconds = now - time; int addPower = (int)(millSeconds / (1000 * 1 * PECommon.PowerAddMinute) * PECommon.PowerAddCount); if (addPower > 0) { int powerMax = PECommon.GetPowerLimit(pd); pd.power = power + addPower > powerMax ? powerMax : power + addPower; } if (pd.power > power) { cacheSvc.UpdatePlayerData(pd.id, pd); } //将此账号添加到字典中 cacheSvc.AddAcctOnline(data.acct, pack.session, pd); rspMsg.rspLogin.playerData = pd; } else//账密不匹配 产生错误码 { rspMsg.err = (int)ErrorCode.ErrorPass; } } //回应客户端 pack.session.SendMsg(rspMsg); }