示例#1
0
 public void ReleasNormalAttack()
 {
     if (entityPlayer.currentAnimState == AniState.Attack)
     {
         if (comboIdx < comboArr.Length - 1)
         {
             //500ms内进行点击,存数据
             double nowTime = timerSvc.GetNowTime();
             if (nowTime - lastAtkTime < Constants.ComboSpace && lastAtkTime != 0)
             {
                 entityPlayer.comboQue.Enqueue(comboArr[++comboIdx]);
                 lastAtkTime = nowTime;
             }
         }
         else
         {
             comboIdx    = 0;
             lastAtkTime = 0;
         }
     }
     else if (entityPlayer.currentAnimState == AniState.Idle || entityPlayer.currentAnimState == AniState.Move)
     {
         comboIdx    = 0;
         lastAtkTime = timerSvc.GetNowTime();
         entityPlayer.Attack(111);
     }
 }
示例#2
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);
    }
示例#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 = (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);
    }
示例#5
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);
    }
示例#6
0
    /// <summary>
    /// 在线玩家计算体力增长与消息推送
    /// </summary>
    /// <param name="tid"></param>
    public void CalcPowerAdd(int tid)
    {
        //计算体力增长
        PECommon.Log("All Online Player Calc Power Incress....");
        GameMsg msg = new GameMsg
        {
            cmd = (int)CMD.PshPower
        };

        msg.pshPower = new PshPower();

        //所有在线玩家获得实时的体力增长推送数据
        Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache();

        foreach (var item in onlineDic)
        {
            PlayerData    pd       = item.Value;
            ServerSession session  = item.Key;
            int           power    = pd.power;
            int           powerMax = PECommon.GetPowerLimit(pd);
            if (pd.power >= powerMax)
            {
                continue;
            }
            else
            {
                pd.power += PECommon.PowerAddCount;
                pd.time   = timerSvc.GetNowTime();
                if (pd.power > powerMax)
                {
                    pd.power = powerMax;
                }
            }
            if (pd.power != power)
            {
                pd.time = timerSvc.GetNowTime();
                if (!cacheSvc.UpdatePlayerData(pd.id, pd))
                {
                    msg.err = (int)ErrorCode.UpdateDbError;
                }
                else
                {
                    msg.pshPower.power = pd.power;
                    session.SendMsg(msg);//推送给在线玩家
                }
            }
        }
    }
示例#7
0
    /// <summary>
    /// 清空下线玩家的缓存数据
    /// </summary>
    /// <param name="session"></param>
    public void ClearOffLineData(ServerSession session)
    {
        PlayerData pd = cacheSvc.GetPlayerDataBySettion(session);

        pd.time = timerSvc.GetNowTime();
        if (!cacheSvc.UpdatePlayerData(pd.id, pd))
        {
            PECommon.Log("Update OffLine Account Time Error");
        }
        cacheSvc.AcctOffLine(session);
    }
示例#8
0
    private void CalcPowerAdd(int tId)
    {
        //计算体力增长

        GameMsg msg = new GameMsg
        {
            cmd      = (int)CMD.PshPower,
            pshPower = new PshPower()
        };

        Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache();

        foreach (var item in onlineDic)
        {
            PlayerData    pd      = item.Value;
            ServerSession session = item.Key;

            int powerMax = PECommon.GetPowerLimit(pd.lv);
            if (pd.power >= powerMax)
            {
                //不回复体力
                continue;
            }
            else
            {
                //回复体力
                pd.power += PECommon.PowerAddCount;
                if (pd.power > powerMax)
                {
                    //限定回复,防止溢出体力最大值
                    pd.power = powerMax;
                    pd.time  = timeSvc.GetNowTime();
                }


                if (!cacheSvc.UpdataPlayerData(pd.id, pd))
                {
                    msg.err = (int)ErrorCode.UpdateDBError;
                }
                else
                {
                    msg.pshPower.power = pd.power;
                    session.SendMsg(msg);
                }
            }
        }
    }
示例#9
0
    private void CalPowerAdd(int tid)
    {
        // TODo 计算体力的增加
        Common.Log("All Online Player Calc Power Increase…… ……");

        GameMsg msg = new GameMsg {
            cmd = (int)CMD.PshPower
        };

        msg.pshPower = new PshPower();

        // 所有在线玩家获得实时的体力增长推送
        Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache();

        foreach (var item in onlineDic)
        {
            PlayerData    pd       = item.Value;
            ServerSession session  = item.Key;
            int           powerMax = Common.GetPowerLimit(pd.lv);
            if (pd.power >= powerMax)
            {
                continue;
            }
            else
            {
                pd.power += Common.PowerAddCount;
                // 同时更新一下时间(避免意外下线,无法更新下线时间的情况)
                pd.time = timerSvc.GetNowTime();
                if (pd.power > powerMax)
                {
                    pd.power = powerMax;
                }
            }

            if (cacheSvc.UpdatePlayerData(pd.id, pd) == false)
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.pshPower.power = pd.power;
                session.SendMsg(msg);
            }
        }
    }
示例#10
0
    /// <summary>
    /// 增加体力
    /// </summary>
    private void CalcPowerAdd(int tid)
    {
        // 计算体力增长
        PECommon.Log("所有在线玩家的体力增长计算....");
        GameMsg msg = new GameMsg {
            cmd = (int)CMD.PshPower
        };

        msg.pshPower = new PshPower();

        // 所有在线玩家获得实时的体力增长,推送数据
        Dictionary <ServerSession, PlayerData> onlineDic = cacheSvc.GetOnlineCache();

        foreach (var item in onlineDic)
        {
            PlayerData    pd      = item.Value;
            ServerSession session = item.Key;
            // 体力增长上限
            int powerMax = PECommon.GetPowerLimit(pd.lv);
            if (pd.power >= powerMax)
            {
                continue;
            }
            else
            {
                pd.power += PECommon.PowerAddCount;
                pd.time   = timerSvc.GetNowTime(); // 更新玩家在线时间
                if (pd.power > powerMax)           // 上限
                {
                    pd.power = powerMax;
                }
            }
            // 将更新后的数据,更新到缓存
            if (!cacheSvc.UpdatePlayerData(pd.id, pd))
            {
                msg.err = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.pshPower.power = pd.power;
                session.SendMsg(msg);
            }
        }
    }
示例#11
0
    private void CalcPowerAdd(int tid)
    {
        //计算体力增长
        PshPower msg = new PshPower();
        //所有在线玩家获得实时的体力增长推送数据
        Dictionary <ClientSocket, PlayerData> onlineDic = cacheSvc.GetOnlineCache();

        if (onlineDic.Count > 0)
        {
            KDCommon.Log("All Online Player Calc Power Incress....");
        }

        foreach (var item in onlineDic)
        {
            PlayerData   pd      = item.Value;
            ClientSocket session = item.Key;

            int powerMax = KDCommon.GetPowerLimit(pd.Lv);
            if (pd.Power >= powerMax)
            {
                continue;
            }
            else
            {
                pd.Power += KDCommon.PowerAddCount;
                pd.Time   = timerSvc.GetNowTime();
                if (pd.Power > powerMax)
                {
                    pd.Power = powerMax;
                }
            }
            if (!cacheSvc.UpdatePlayerData(pd.Id, pd))
            {
                msg.error = (int)ErrorCode.UpdateDBError;
            }
            else
            {
                msg.Power = pd.Power;
                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.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);
    }
示例#13
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);
    }
示例#14
0
    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);
    }