public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; // 当前账号是否已经上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin }; if (cacheSvc.IsAcctOnLine(data.acct)) { // 已上线:返回错误信息 msg.err = (int)ErrorCode.AcctIsOnLine; } else { // 未上线: // 账号是否存在 PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pass); if (pd == null) { // 存在,密码错误 msg.err = (int)ErrorCode.WrongPass; } else { // 计算离线体力增长 int power = pd.power; long now = timerSvc.GetNowTime(); long milliseconds = now - pd.time; int addPower = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; if (addPower > 0) { int powerMax = PECommon.GetPowerLimit(pd.lv); if (pd.power < powerMax) { pd.power += addPower; if (pd.power > powerMax) { pd.power = powerMax; } } } if (power != pd.power) { cacheSvc.UpdatePlayerData(pd.id, pd); } msg.rspLogin = new RspLogin { playerData = pd }; // 缓存账号数据 cacheSvc.AcctOnLine(data.acct, pack.session, pd); } } // 回应客户端 pack.session.SendMsg(msg); }
public void ReqLogin(MsgPack pack) { RequestLogin data = pack.Msg.RequestLogin; //账号是否上线 NetMsg netMsg = new NetMsg { cmd = (int)Command.ResponseLogin }; if (_cacheSvc.IsAcctOnline(data.Acct)) { //己上线:返回错误信息 netMsg.err = (int)ErrorCode.AcctIsOnline; } else { //账号不在线 || 账号是否已经存在 PlayerData playerData = _cacheSvc.GetPlayerData(data.Acct, data.Pass); if (playerData == null) { //账号存在,密码错误 netMsg.err = (int)ErrorCode.WrongPass; } else { #region 计算离线玩家体力值 int power = playerData.Power; long timeNow = _timeSvc.GetNowTime(); long milliseconds = timeNow - playerData.Time; int addPower = (int)(milliseconds / (1000 * 60 * PeRoot.PowerAddSpace)) * PeRoot.PowerAddCount; if (addPower > 0) { int powerMax = PeRoot.GetPowerLimit(playerData.Level); if (playerData.Power < powerMax) { playerData.Power += addPower; if (playerData.Power > powerMax) { playerData.Power = powerMax; } } } if (power != playerData.Power) { _cacheSvc.UpdatePlayerData(playerData.Id, playerData); } #endregion netMsg.ResponseLogin = new ResponseLogin { PlayerData = playerData }; //缓存账号数据 _cacheSvc.AcctOnLine(data.Acct, pack.Session, playerData); } } pack.Session.SendMsg(netMsg); }
/// <summary> /// 响应登录的请求 /// </summary> /// <param name="pack">消息包</param> public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; // 回应客户端 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin // 操作码 }; // 判断是否在线,并做相应的处理 if (cacheSvc.IsAcctOnLine(data.acct)) // 已在线,返回错误信息 { msg.err = (int)ErrorCode.AcctIsOnLine; } else // 不在线,尝试登录 { PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pwd); // 获取玩家数据 if (pd == null) // 账号和密码不匹配 { msg.err = (int)ErrorCode.WrongPwd; } else // 登录成功 // 计算离线体力增长 { int power = pd.power; // 当前体力 long now = timerSvc.GetNowTime(); long milliseconds = now - pd.time; // 距离上一次下线的时间间隔 int addPower = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; // 需要增加的体力值 if (addPower > 0) { int powerMax = PECommon.GetPowerLimit(pd.lv); if (pd.power < powerMax) { pd.power += addPower; if (pd.power > powerMax) { pd.power = powerMax; } } } if (power != pd.power) { cacheSvc.UpdatePlayerData(pd.id, pd); } // 响应客户端的数据 msg.rspLogin = new RspLogin { playerData = pd // 返回玩家数据 }; // 缓存账号数据 cacheSvc.AcctOnLine(data.acct, pack.session, pd); } } // 回应客户端 pack.session.SendMsg(msg); }
public void ReqLogin(MsgPack msgPack) { ReqLogin reqLogin = msgPack.msg.reqLogin; //当前账号是否已经上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin }; //已上线,返回错误信息 if (cacheSvc.IsAcctOnLine(reqLogin.acct)) { msg.err = (int)ErrorCode.AcctIsOnLine; } else { //未上线 : //账号是否存在 PlayerData pd = CacheSvc.Instance.GetPlayerData(reqLogin.acct, reqLogin.pass); if (pd == null) { //存在:密码错误 msg.err = (int)ErrorCode.WrongPass; } else { msg.rspLogin = new RspLogin { playerData = pd }; //缓存账号数据 cacheSvc.AcctOnLine(reqLogin.acct, msgPack.session, pd); } } //不存在:创建默认的账号密码 //回应客户端 msgPack.session.SendMsg(msg); }
public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; // 当前账号是否已经上线 GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin }; if (cacheSvc.IsAcctOnLine(data.acct)) { // 已上线:返回错误信息 msg.err = (int)ErrorCode.AcctIsOnLine; } else { // 未上线: // 账号是否存在 PlayerData pd = cacheSvc.GetPlayerData(data.acct, data.pass); if (pd == null) { // 存在,密码错误 msg.err = (int)ErrorCode.WrongPass; } else { msg.rspLogin = new RspLogin { playerData = pd }; cacheSvc.AcctOnLine(data.acct, pack.session, pd); } } // 回应客户端 pack.session.SendMsg(msg); }