Пример #1
0
    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);
    }
Пример #2
0
    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);
    }
Пример #3
0
    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);
    }
Пример #4
0
        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);
        }
Пример #5
0
    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);
    }
Пример #6
0
        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);
        }
Пример #7
0
    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);
    }
Пример #8
0
    /// <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);
    }
Пример #9
0
    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);
    }
Пример #10
0
    /// <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);
    }
Пример #11
0
    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);
    }
Пример #12
0
    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);
    }
Пример #13
0
    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);
    }
Пример #14
0
    /// <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);
    }