Пример #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 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);
        }
Пример #3
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);
    }
Пример #4
0
    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);
    }
Пример #5
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);
    }