public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; // 当前账号是否已经上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin, }; if (cacheSvc.IsOnlineAcct(data.acct) == true) { // 已上线,返回错误信息 msg.err = (int)ErrorCode.AcctIsOnline; } else { // 未上线:1、账号是否存在;存在,检测密码;不存在,则创建默认的账号密码 PlayerData playerData = cacheSvc.GetPlayerData(data.acct, data.pass); if (playerData == null) { // 存在,密码错误 msg.err = (int)ErrorCode.WrongPassword; } else { // 计算离线体力增长 int power = playerData.power; long now = timerSvc.GetNowTime(); long milliSeconds = now - playerData.time; int addPower = (int)(milliSeconds / (1000 * 60 * Common.PowerAddSpace)) * Common.PowerAddCount; if (addPower > 0) { int powerMax = Common.GetPowerLimit(playerData.lv); if (playerData.power < powerMax) { playerData.power += addPower; if (playerData.power > powerMax) { playerData.power = powerMax; } } } if (power != playerData.power) { cacheSvc.UpdatePlayerData(playerData.id, playerData); } msg.rspLogin = new RspLogin { playerData = playerData }; // 缓存账号数据 cacheSvc.AcctOnline(data.acct, pack.session, playerData); } } // 回应客户端 pack.session.SendMsg(msg); }