public void ReqLogin(PackMsg pack) { ReqLogin data = pack.msg.reqLogin; ServerSession session = pack.session; //判断当前账号是否上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin, }; //已上线,返回错误信息 if (cacheSvc.IsAcctOnLine(data.acct)) { msg.err = (int)ErrorCode.AcctIsOnLine; } else { //未上线: //账号是否存在 PlayerData _playerData = cacheSvc.GetPlayerDate(data.acct, data.pwd); if (_playerData == null) { //账号存在 但密码错误 msg.err = (int)ErrorCode.WrongPwd; } //存在 返回账号数据 else { //计算离线增加体力 int stamina = _playerData.stamina; long now = timeSvc.GetNowTime(); long milliSecondsSpan = now - _playerData.time; int growStamina = (int)(milliSecondsSpan / (1000 * 60 * PECommon.StaminaAddSpace)) * PECommon.StaminaAddCount; //PECommon.Log(milliSecondsSpan / 60000+ " " + milliSecondsSpan.ToString() + " " + growStamina.ToString()); if (growStamina > 0) { int maxStamina = PECommon.GetStaminaLimitByLv(_playerData.lv); if (_playerData.stamina < maxStamina) { _playerData.stamina += growStamina; if (_playerData.stamina > maxStamina) { _playerData.stamina = maxStamina; } } } if (stamina != _playerData.stamina) { cacheSvc.UpdatePlayerData(_playerData.id, _playerData); } msg.rspLogin = new RspLogin { //将账号数据存到回应包里 playerData = _playerData }; //将账号数据存储进缓存层 cacheSvc.StoreIdOnline(data.acct, session, _playerData); } } //回应客户端 pack.session.SendMsg(msg); }