public void ReqFBFightEnd(MsgPack pack)
    {
        ReqFBFightEnd data = pack.msg.reqFBFightEnd;

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

        // 校验战斗是否合法
        if (data.win == true)
        {
            if (data.costtime > 0 && data.resthp > 0)
            {
                // 根据对应副本ID获取奖励
                MapCfg     rd = cfgSvc.GetMapCfg(data.fbId);
                PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.session);

                // 任务进度更新
                TaskSys.Instance.CalcTaskPrgs(pd, 2);

                pd.coin    += rd.coin;
                pd.crystal += rd.exp;
                Common.CalcExp(pd, rd.exp);

                if (pd.fuben == data.fbId)
                {
                    pd.fuben += 1;
                }

                // 更新数据库
                if (cacheSvc.UpdatePlayerData(pd.id, pd) == false)
                {
                    msg.err = (int)ErrorCode.UpdateDBError;
                }
                else
                {
                    RspFBFightEnd rspFBFightEnd = new RspFBFightEnd {
                        win      = data.win,
                        fbId     = data.fbId,
                        resthp   = data.resthp,
                        costtime = data.costtime,

                        coin    = pd.coin,
                        lv      = pd.lv,
                        exp     = pd.exp,
                        crystal = pd.crystal,
                        fuben   = pd.fuben
                    };

                    msg.rspFBFightEnd = rspFBFightEnd;
                }
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }

        pack.session.SendMsg(msg);
    }
    /// <summary>
    /// 胜利后请求结算,失败不需要
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void EndBattle(object sender, GameEventArgs e)
    {
        EndBattleEventArgs ne = e as EndBattleEventArgs;

        GameEntry.UI.CloseUIForm(UIFormId.PlayerCtrlForm);
        GameEntry.UI.RmvAllHpItemInfo();

        if (ne.IsWin)
        {
            double endTime = GameEntry.Timer.GetNowTime();
            //发送结算战斗请求
            //TODO
            CSPacketBase msg = new ReqFBFightEnd {
                Win      = ne.IsWin,
                Fbid     = m_Fbid,
                Resthp   = ne.RestHP,
                Costtime = (int)(endTime - m_StartTime)
            };
            GameEntry.Net.SendMsg(msg);
        }
        else
        {
            SetBattleEndWndState(FBEndType.Lose);
        }
    }
Exemple #3
0
    public void ReqFBFightEnd(MsgPack pack)
    {
        ReqFBFightEnd data = pack.msg.reqFBFightEnd;

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

        //校验战斗是否合法
        if (data.win)
        {
            if (data.costtime > 0 && data.resthp > 0)
            {
                //根据副本ID获取到相应的奖励
                MapCfg     rd = cfgSvc.GetMapCfg(data.fbid);
                PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.session);

                //任务进度数据更新
                msg.pshTaskPrgs = TaskSys.Instance.GetPshTaskPrgs(pd, 2);

                pd.coin    += rd.coin;
                pd.crystal += rd.crystal;
                PECommon.CalcExp(pd, rd.exp);

                if (pd.fuben == data.fbid)
                {
                    pd.fuben += 1;
                }

                if (!cacheSvc.UpdatePlayerData(pd.id, pd))
                {
                    msg.err = (int)ErrorCode.UpdateDBError;
                }
                else
                {
                    msg.rspFBFightEnd = new RspFBFightEnd {
                        win      = data.win,
                        fbid     = data.fbid,
                        resthp   = data.resthp,
                        costtime = data.costtime,

                        coin    = pd.coin,
                        lv      = pd.lv,
                        exp     = pd.exp,
                        crystal = pd.crystal,
                        fuben   = pd.fuben,
                    };
                }
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }

        pack.session.SendMsg(msg);
    }
Exemple #4
0
    public void ReqFBFightEnd(MsgPack pack)
    {
        ReqFBFightEnd data = (ReqFBFightEnd)pack.msg;

        SCPacketBase msg = new RspFBFightEnd();

        //校验战斗是否合法
        if (data.Win)
        {
            if (data.Costtime > 0 && data.Resthp > 0)
            {
                //根据副本ID获取相应奖励
                MapCfg     rd = cfgSvc.GetMapCfg(data.Fbid);
                PlayerData pd = cacheSvc.GetPlayerDataBySession(pack.session);

                //任务进度数据更新
                TaskSys.Instance.CalcTaskPrgs(pd, 2);

                pd.Coin    += rd.coin;
                pd.Crystal += rd.crystal;
                KDCommon.CalcExp(pd, rd.exp);

                if (pd.Fuben == data.Fbid)
                {
                    pd.Fuben += 1;
                }

                if (!cacheSvc.UpdatePlayerData(pd.Id, pd))
                {
                    msg.error = (int)ErrorCode.UpdateDBError;
                }
                else
                {
                    RspFBFightEnd rspFBFight = new RspFBFightEnd {
                        Win      = data.Win,
                        Fbid     = data.Fbid,
                        Resthp   = data.Resthp,
                        Costtime = data.Costtime,

                        Coin    = pd.Coin,
                        Lv      = pd.Lv,
                        Exp     = pd.Exp,
                        Crystal = pd.Crystal,
                        Fuben   = pd.Fuben
                    };

                    msg = rspFBFight;
                }
            }
        }
        else
        {
            msg.error = (int)ErrorCode.ClientDataError;
        }

        pack.session.SendMsg(msg);
    }
Exemple #5
0
    public void ReqFBFightEnd(PackMsg pack)
    {
        ReqFBFightEnd data    = pack.msg.reqFBFightEnd;
        ServerSession session = pack.session;

        GameMsg msg = new GameMsg
        {
            cmd = (int)(CMD.RspFBFFightEnd),
        };
        PlayerData playerData = cacheSvc.GetPlayerDataCache(session);
        MapCfg     mapCfg     = cfgSvc.GetMapCfg(data.fbid);

        if (data.isWin)
        {
            if (data.costTime > 0 && data.restHp > 0)
            {
                TaskSys.Instance.CalcTaskProgs(playerData, 2);

                PECommon.UpdateExp(playerData, mapCfg.exp);
                playerData.coin    += mapCfg.coin;
                playerData.crystal += mapCfg.crystal;
                if (data.fbid == playerData.fuben)
                {
                    playerData.fuben++;
                }

                if (!cacheSvc.UpdatePlayerData(playerData.id, playerData))
                {
                    msg.err = (int)ErrorCode.UpdateDBError;
                }
                else
                {
                    RspFBFightEnd rspFBFightEnd = new RspFBFightEnd
                    {
                        isWin    = data.isWin,
                        fbid     = data.fbid,
                        restHp   = data.restHp,
                        costTime = data.costTime,
                        exp      = playerData.exp,
                        lv       = playerData.lv,
                        coin     = playerData.coin,
                        crystal  = playerData.crystal,
                        fuben    = playerData.fuben,
                    };

                    msg.rspFBFightEnd = rspFBFightEnd;
                }
            }
        }
        else
        {
            msg.err = (int)ErrorCode.UpdateDBError;
        }
        session.SendMsg(msg);
    }
Exemple #6
0
    public void ReqFBFightEnd(MsgPack pack)
    {
        ReqFBFightEnd data = pack.msg.reqFBFightEnd;
        GameMsg       msg  = new GameMsg
        {
            cmd = (int)CMD.RspFBFightEnd,
        };

        //校验战斗结果是否合法
        if (data.iswin)
        {
            if (data.costtime > 10 && data.resthp > 0)
            {
                //根据副本ID获取奖励数据
                MapCfg     mapcfg = CfgSvc.Instance.GetMapCfg(data.fbid);
                PlayerData pd     = CacheSvc.Instance.GetPlayerDataBySession(pack.session);

                pd.coin    += mapcfg.coin;
                pd.crystal += mapcfg.crystal;
                PECommon.CalcExp(pd, mapcfg.exp);

                if (pd.mission == data.fbid)
                {
                    pd.mission++;
                }

                if (!CacheSvc.Instance.UpdatePlayerData(pd.id, pd, pack.session))
                {
                    msg.err = (int)ErrorCode.UpdateDBError;
                }
                else
                {
                    RspFBFightEnd rspFBFightEnd = new RspFBFightEnd
                    {
                        iswin    = data.iswin,
                        fbid     = data.fbid,
                        resthp   = data.resthp,
                        costtime = data.costtime,

                        coin    = pd.coin,
                        lv      = pd.lv,
                        exp     = pd.exp,
                        crystal = pd.crystal,
                        fuben   = pd.mission,
                    };

                    msg.rspFBFightEnd = rspFBFightEnd;
                    //更新任务进度数据
                    TaskSys.Instance.CalcTaskPrgs(pd, 2);
                }
            }
            else
            {
                msg.err = (int)ErrorCode.ClientDataError;
            }
        }
        else
        {
            msg.err = (int)ErrorCode.ClientDataError;
        }

        pack.session.SendMsg(msg);
    }