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 msgPack) { ReqLogin data = msgPack.msg.reqLogin; //当前账号是否已经上线 NetMsg msg = new NetMsg(); msg.cmd = (int)CMD.RspLogin; //已上线:返回错误信息 if (cacheSvc.IsAcctOnLine(data.account)) { msg.err = (int)ErrorCode.AcctIsOnline; } else { //未上线: //账号是否存在 PlayerData playerData = cacheSvc.GetPlayerData(data.account, data.pass); if (playerData == null) { //存在密码错误 msg.err = (int)ErrorCode.WrongPass; } else { msg.rspLogin = new RspLogin(); msg.rspLogin.playerData = playerData; cacheSvc.AcctOnline(data.account, msgPack.session, playerData); } } //回应客户端 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 { //登入成功 //计算体力最大值 int power = pd.power; int powerMax = PECommon.GetPowerLimit(pd.lv); if (pd.power < powerMax) { long nowTime = timerSvc.GetNowTime(); long millisecendsCount = nowTime - pd.time; //计算玩家离线时间回复体力值 int addPower = (int)(millisecendsCount / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; if (addPower > 0) { pd.power += addPower; if (pd.power > powerMax) { pd.power = powerMax; } } } if (pd.power != power) { cacheSvc.UpdataPlayerData(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) { 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 playerData = cacheSvc.GetPlayerData(data.acct, data.pass); if (playerData == null) { msg.err = (int)ErrorCode.WrongPass; } else { msg.rspLogin = new RspLogin { playerData = playerData }; cacheSvc.AcctOnline(data.acct, pack.session, playerData); } } pack.session.SendMsg(msg); }
public void RequsetLogin(MsgPack packMsg) { RequestLoginMsg data = packMsg._msg.reqLoginMsg; //当前账号是否已经上线 NetMsg svrMsg = new NetMsg { cmd = (int)MsgCommand.Cmd_RspLogin, }; //1. 已上线,返回一个信息 if (cacheSvc.IsAccountOnLine(data._account)) { svrMsg.err = (int)ErroCode.Error_AccountIsOnline; } else { //2. 未上线: //账号存在:检测密码 PlayerData playerData = cacheSvc.GetPlayerData(data._account, data._pwd); if (playerData == null) { svrMsg.err = (int)ErroCode.Error_WrongPwd; } else { //计算离线体力增值 int curPower = playerData.power; long nowTime = TimerSvc.Instance.GetNowTime(); long timeInterval = nowTime - playerData.time; int increasePowerVal = (int)(timeInterval / (1000 * 60 * Constants.cPowerAddInterval)) * Constants.cPowerAddValPerChange; if (increasePowerVal > 0) { int maxPowerVal = CommonTools.CalcPowerLimit(playerData.lv); if (playerData.power < maxPowerVal) { playerData.power += increasePowerVal; playerData.power = (playerData.power > maxPowerVal) ? maxPowerVal : playerData.power; } } if (playerData.power != curPower) { cacheSvc.UpdatePlayerData(playerData.id, playerData); } //不存在:创建默认的账号密码 svrMsg.rspLoginMsg = new ResponseLoginMsg { _playerData = playerData }; //存储到缓存中 cacheSvc.SaveAccount(data._account, packMsg._session, playerData); } } //3.响应客户端的请求 packMsg._session.SendMsg(svrMsg); }
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); }
public void ReqLogin(MsgPack pack) { ReqLogin data = (ReqLogin)pack.msg; //当前账号是否已经上线 SCPacketBase msg = new RspLogin(); if (cacheSvc.IsAcctOnLine(data.Acct)) { //己上线:返回错误信息 msg.error = (int)ErrorCode.AcctIsOnline; } else { //未上线: //账号是否存在 PlayerData pd = cacheSvc.GetPlayerData(data.Acct, data.Pass); if (pd == null) { //存在,密码错误 msg.error = (int)ErrorCode.WrongPass; } else { //计算离线体力增长 int power = pd.Power; long now = timerSvc.GetNowTime(); long milliseconds = now - pd.Time; int addPower = (int)(milliseconds / (1000 * 60 * KDCommon.PowerAddSpace)) * KDCommon.PowerAddCount; if (addPower > 0) { int powerMax = KDCommon.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 = new RspLogin { PlayerData = pd }; //缓存账号数据 cacheSvc.AcctOnline(data.Acct, pack.session, pd); } } //回应客户端 pack.session.SendMsg(msg); }
/// <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 pack) { ReqLogin data = pack.gameMsg.val as 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 powerMax = Common.GetPowerLimit(pd.lv); if (pd.power < powerMax) { int addPower = PowerSys.GetAddPowerOffline(TimerSvc.Instance.GetNowTime() - pd.time); if (addPower + pd.power >= powerMax) { pd.power = powerMax; } else { pd.power += addPower; } } if (!cacheSvc.UpdatePlayerData(pd.id, pd)) { msg.err = (int)ErrorCode.UpdateDBError; } else { msg.val = new RspLogin { playerData = pd }; cacheSvc.AcctOnline(data.acct, pack.session, pd); } } } pack.session.SendMsg(msg); }
/// <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); }
public void ReqLogin(MsgPack pack) { ReqLogin data = pack.msg.reqLogin; GameMsg msg = new GameMsg { cmd = (int)CMD.RspLogin, rspLogin = new RspLogin { } }; //当前账号是否已上线 //已上线,返回错误信息 if (cacheSvc.IsAcctOnLine(data.acct)) { msg.err = (int)ErrorCode.AcctIsOnline; } else { //未上线 PlayerData _playerData = cacheSvc.GetPlayerData(data.acct, data.pass); //账号是否存在 if (_playerData == null) { //存在 密码错误 msg.err = (int)ErrorCode.WrongPass; } else { msg.rspLogin = new RspLogin { playerData = _playerData }; //添加缓存 cacheSvc.AcctOnline(data.acct, pack.session, _playerData); } } //回应客户端 pack.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); }
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); }
/// <summary> /// 响应登录请求 /// </summary> /// <param name="msg"></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 _palyerData = cacheSvc.GetPlayerData(data.acct, data.pass); if (_palyerData == null) //账号存在,密码错误 { msg.err = (int)ErrorCode.WrongPass; } else //账号密码正确 { #region 计算离线体力增长 //计算离线体力增长 int power = _palyerData.power; long now = timerSvc.GetNowTime(); long milliseconds = now - _palyerData.time; int addPower = (int)(milliseconds / (1000 * 60 * PECommon.PowerAddSpace)) * PECommon.PowerAddCount; if (addPower > 0) { int powerMax = PECommon.GetPowerLimit(_palyerData.lv); if (_palyerData.power < powerMax) { _palyerData.power += addPower; if (_palyerData.power > powerMax) { _palyerData.power = powerMax; } } } if (power != _palyerData.power) { cacheSvc.UpdatePlayerData(_palyerData.id, _palyerData); } #endregion msg.rspLogin = new RspLogin { playerData = _palyerData }; } //缓存账号数据 cacheSvc.AcctOnline(data.acct, pack.Session, _palyerData); } //回应客户端 pack.Session.SendMsg(msg); }