Пример #1
0
        private FuBenData GetFuBenData(GameClient client, int fuBenID)
        {
            bool      isNotify  = false;
            FuBenData fuBenData = Global.GetFuBenData(client, fuBenID);

            int dayID = TimeUtil.NowDateTime().DayOfYear;

            if (null == fuBenData)
            {
                fuBenData = Global.AddFuBenData(client, fuBenID, dayID, 0, 0, 0);
            }

            if (fuBenData.DayID != dayID)
            {
                fuBenData.DayID     = dayID;
                fuBenData.EnterNum  = 0;
                fuBenData.FinishNum = 0;

                isNotify = true;
            }

            //将新的副本的数据通知自己
            if (isNotify)
            {
                GameManager.ClientMgr.NotifyFuBenData(client, fuBenData);
            }

            return(fuBenData);
        }
Пример #2
0
        /// <summary>
        /// 通知组队副本进入的消息
        /// </summary>
        /// <param name="roleIDsList"></param>
        /// <param name="minLevel"></param>
        /// <param name="maxLevel"></param>
        /// <param name="mapCode"></param>
        public void NotifyTeamFuBenEnterMsg(List <int> roleIDsList, int minLevel, int maxLevel, int leaderMapCode, int leaderRoleID, int fuBenID, int fuBenSeqID, int enterNumber, int maxFinishNum, bool igoreNumLimit = false)
        {
            if (null == roleIDsList || roleIDsList.Count <= 0)
            {
                return;
            }
            for (int i = 0; i < roleIDsList.Count; i++)
            {
                GameClient otherClient = GameManager.ClientMgr.FindClient(roleIDsList[i]);
                if (null == otherClient)
                {
                    continue;                      //不在线,则不通知
                }
                //级别不匹配,则不通知
                int unionLevel = Global.GetUnionLevel(otherClient.ClientData.ChangeLifeCount, otherClient.ClientData.Level);
                if (unionLevel < minLevel || unionLevel > maxLevel)
                {
                    continue;
                }

                if (!igoreNumLimit)
                {
                    FuBenData fuBenData = Global.GetFuBenData(otherClient, fuBenID);
                    int       nFinishNum;
                    int       haveEnterNum = Global.GetFuBenEnterNum(fuBenData, out nFinishNum);
                    if ((enterNumber >= 0 && haveEnterNum >= enterNumber) || (maxFinishNum >= 0 && nFinishNum >= maxFinishNum))
                    {
                        continue;
                    }
                }

                //通知组队副本进入的消息
                GameManager.ClientMgr.NotifyTeamMemberFuBenEnterMsg(otherClient, leaderRoleID, fuBenID, fuBenSeqID);
            }
        }
Пример #3
0
        private int GetFinishNum(GameClient client, TodayInfo todayInfo)
        {
            int       num       = 0;
            FuBenData fuBenData = GetFuBenData(client, todayInfo.FuBenID);

            switch ((ETodayType)todayInfo.Type)
            {
            case ETodayType.Exp:
            case ETodayType.Gold:
                num = fuBenData.EnterNum;
                break;

            case ETodayType.KaLiMa:
            case ETodayType.Lo:
            case ETodayType.EM:
                num = fuBenData.FinishNum;
                break;

            case ETodayType.Tao:
                DailyTaskData dailyTaskData = Global.FindDailyTaskDataByTaskClass(client, (int)TaskClasses.TaofaTask);
                num = dailyTaskData == null ? 0 : dailyTaskData.RecNum;
                break;
            }

            return(Math.Max(0, num));
        }
Пример #4
0
        /// <summary>
        /// 获取万魔塔扫荡次数
        /// </summary>
        public static int GetSweepCount(GameClient client)
        {
            FuBenData fuBenData = Global.GetFuBenData(client, nWanMoTaSweepFuBenOrder);

            if (null == fuBenData)
            {
                return(0);
            }

            return(fuBenData.EnterNum);
        }
Пример #5
0
        private bool SetFinishNum(GameClient client, TodayInfo todayInfo, SystemXmlItem fuBenInfo)
        {
            int num = todayInfo.NumMax - todayInfo.NumEnd;

            switch ((ETodayType)todayInfo.Type)
            {
            case ETodayType.Exp:
            case ETodayType.Gold:
                Global.UpdateFuBenData(client, todayInfo.FuBenID, num, num);
                break;

            case ETodayType.KaLiMa:
            case ETodayType.EM:
            case ETodayType.Lo:
                Global.UpdateFuBenData(client, todayInfo.FuBenID, num, num);
                break;

            case ETodayType.Tao:
            {
                DailyTaskData taoData = null;
                Global.GetDailyTaskData(client, (int)TaskClasses.TaofaTask, out taoData, true);

                taoData.RecNum = todayInfo.NumMax;
                Global.UpdateDBDailyTaskData(client, taoData, true);
            }
            break;
            }

            FuBenData fuBenData = Global.GetFuBenData(client, todayInfo.FuBenID);

            if (fuBenData != null && (fuBenData.EnterNum != 0 || fuBenData.FinishNum != 0))
            {
                //记录通关副本数量
                int           dayID    = TimeUtil.NowDateTime().DayOfYear;
                RoleDailyData roleData = client.ClientData.MyRoleDailyData;
                if (null == roleData || dayID != roleData.FuBenDayID)
                {
                    roleData            = new RoleDailyData();
                    roleData.FuBenDayID = dayID;
                    client.ClientData.MyRoleDailyData = roleData;
                }

                int count = todayInfo.NumMax - todayInfo.NumEnd;
                roleData.TodayFuBenNum += count;

                int level = fuBenInfo.GetIntValue("FuBenLevel");
                DailyActiveManager.ProcessCompleteCopyMapForDailyActive(client, level, count); //活跃
                ChengJiuManager.ProcessCompleteCopyMapForChengJiu(client, level, count);       //成就
            }

            return(true);
        }
Пример #6
0
        public int GetWanMoXiaGuCount(GameClient client)
        {
            int count = 0;

            foreach (int id in this.RuntimeData.FuBenIds)
            {
                FuBenData fuBenData = Global.GetFuBenData(client, id);
                int       c;
                Global.GetFuBenEnterNum(fuBenData, out c);
                count += c;
            }
            return(count);
        }
Пример #7
0
        public static int GetSweepCount(GameClient client)
        {
            FuBenData fuBenData = Global.GetFuBenData(client, SweepWanMotaManager.nWanMoTaSweepFuBenOrder);
            int       result;

            if (null == fuBenData)
            {
                result = 0;
            }
            else
            {
                result = fuBenData.EnterNum;
            }
            return(result);
        }
Пример #8
0
        private int GetFinishNum(GameClient client, TodayInfo todayInfo)
        {
            int       num       = 0;
            FuBenData fuBenData = this.GetFuBenData(client, todayInfo.FuBenID);

            switch (todayInfo.Type)
            {
            case 1:
            case 2:
                num = fuBenData.EnterNum;
                break;

            case 3:
            case 4:
            case 5:
                num = fuBenData.FinishNum;
                break;

            case 6:
            {
                DailyTaskData dailyTaskData = Global.FindDailyTaskDataByTaskClass(client, 9);
                num = ((dailyTaskData == null) ? 0 : dailyTaskData.RecNum);
                break;
            }

            case 7:
                num = Global.QueryDayActivityEnterCountToDB(client, client.ClientData.RoleID, TimeUtil.NowDateTime().DayOfYear, 2);
                break;

            case 8:
                num = Global.QueryDayActivityEnterCountToDB(client, client.ClientData.RoleID, TimeUtil.NowDateTime().DayOfYear, 1);
                break;

            case 9:
                num = Global.QueryDayActivityEnterCountToDB(client, client.ClientData.RoleID, TimeUtil.NowDateTime().DayOfYear, 6);
                break;

            case 10:
            case 11:
            case 12:
                num = fuBenData.EnterNum;
                break;
            }
            return(num);
        }
Пример #9
0
        /// <summary>
        /// 返回boss副本剩余次数字符串
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public String GetBossFuBenLeftTimeString(GameClient client)
        {
            int bossFuBenID = Global.FindBossFuBenIDByRoleLevel(client.ClientData.Level);

            if (bossFuBenID > 0)
            {
                FuBenData fbData = Global.GetFuBenData(client, bossFuBenID);
                if (null != fbData)
                {
                    int nFinishNum;
                    return(String.Format("{0}", Math.Max(0, Global.GetBossFuBenCanFreeEnterNum(client) - Global.GetFuBenEnterNum(fbData, out nFinishNum)) + Global.GetBossFuBenCanExtEnterNum(client)));
                }
                else
                {
                    return(String.Format("{0}", Global.GetBossFuBenCanFreeEnterNum(client) + Global.GetBossFuBenCanExtEnterNum(client)));
                }
            }

            return("0");
        }
Пример #10
0
 private bool ProcessMoRiJudgeJoin(GameClient client, int nID, byte[] bytes, string[] cmdParams)
 {
     try
     {
         SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode);
         if (sceneType != SceneUIClasses.Normal)
         {
             client.sendCmd(nID, -21, false);
             return(true);
         }
         if (!this.IsGongNengOpened(client, true))
         {
             client.sendCmd(nID, -2001, false);
             return(true);
         }
         if (client.ClientData.SignUpGameType != 0)
         {
             client.sendCmd(nID, -2002, false);
             return(true);
         }
         if (KuaFuManager.getInstance().IsInCannotJoinKuaFuCopyTime(client))
         {
             client.sendCmd(nID, -2004, false);
             return(true);
         }
         SystemXmlItem systemFuBenItem = null;
         if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(70000, out systemFuBenItem))
         {
             client.sendCmd(nID, -3, false);
             return(true);
         }
         int minLevel       = systemFuBenItem.GetIntValue("MinLevel", -1);
         int maxLevel       = systemFuBenItem.GetIntValue("MaxLevel", -1);
         int nMinZhuanSheng = systemFuBenItem.GetIntValue("MinZhuanSheng", -1);
         int nMaxZhuanSheng = systemFuBenItem.GetIntValue("MaxZhuanSheng", -1);
         if (client.ClientData.ChangeLifeCount < nMinZhuanSheng || (client.ClientData.ChangeLifeCount == nMinZhuanSheng && client.ClientData.Level < minLevel))
         {
             client.sendCmd(nID, "-19".ToString(), false);
             return(true);
         }
         if (client.ClientData.ChangeLifeCount > nMaxZhuanSheng || (client.ClientData.ChangeLifeCount == nMaxZhuanSheng && client.ClientData.Level > maxLevel))
         {
             client.sendCmd(nID, "-19".ToString(), false);
             return(true);
         }
         FuBenData fuBenData = Global.GetFuBenData(client, 70000);
         if (fuBenData != null && fuBenData.FinishNum >= systemFuBenItem.GetIntValue("FinishNumber", -1))
         {
             client.sendCmd(nID, "-16".ToString(), false);
             return(true);
         }
         int result = 0;
         if (result == 1)
         {
             client.ClientData.SignUpGameType = 3;
             GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 1, 0, 0, 0, 3);
         }
         client.sendCmd(nID, result.ToString(), false);
         return(true);
     }
     catch (Exception ex)
     {
         DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false);
     }
     return(false);
 }
Пример #11
0
        private bool SetFinishNum(GameClient client, TodayInfo todayInfo, SystemXmlItem fuBenInfo)
        {
            int num = todayInfo.NumMax - todayInfo.NumEnd;

            switch (todayInfo.Type)
            {
            case 1:
            case 2:
                Global.UpdateFuBenData(client, todayInfo.FuBenID, num, num);
                break;

            case 3:
            case 4:
            case 5:
                Global.UpdateFuBenData(client, todayInfo.FuBenID, num, num);
                break;

            case 6:
            {
                DailyTaskData taoData = null;
                Global.GetDailyTaskData(client, 9, out taoData, true);
                taoData.RecNum = todayInfo.NumMax;
                Global.UpdateDBDailyTaskData(client, taoData, true);
                break;
            }

            case 7:
            {
                int nType = 2;
                Global.UpdateDayActivityEnterCountToDB(client, client.ClientData.RoleID, TimeUtil.NowDateTime().DayOfYear, nType, todayInfo.NumMax);
                break;
            }

            case 8:
            {
                int nType = 1;
                Global.UpdateDayActivityEnterCountToDB(client, client.ClientData.RoleID, TimeUtil.NowDateTime().DayOfYear, nType, todayInfo.NumMax);
                break;
            }

            case 9:
            {
                int nType = 6;
                Global.UpdateDayActivityEnterCountToDB(client, client.ClientData.RoleID, TimeUtil.NowDateTime().DayOfYear, nType, todayInfo.NumMax);
                break;
            }

            case 10:
            case 11:
            case 12:
                Global.UpdateFuBenData(client, todayInfo.FuBenID, num, num);
                break;
            }
            FuBenData fuBenData = Global.GetFuBenData(client, todayInfo.FuBenID);

            if (fuBenData != null && (fuBenData.EnterNum != 0 || fuBenData.FinishNum != 0))
            {
                int           dayID    = TimeUtil.NowDateTime().DayOfYear;
                RoleDailyData roleData = client.ClientData.MyRoleDailyData;
                if (roleData == null || dayID != roleData.FuBenDayID)
                {
                    roleData.FuBenDayID    = dayID;
                    roleData.TodayFuBenNum = 0;
                }
                int count = todayInfo.NumMax - todayInfo.NumEnd;
                roleData.TodayFuBenNum += count;
                int level = fuBenInfo.GetIntValue("FuBenLevel", -1);
                DailyActiveManager.ProcessCompleteCopyMapForDailyActive(client, level, count);
                ChengJiuManager.ProcessCompleteCopyMapForChengJiu(client, level, count);
            }
            return(true);
        }
Пример #12
0
        // 报名末日审判
        private bool ProcessMoRiJudgeJoin(GameClient client, int nID, byte[] bytes, string[] cmdParams)
        {
            try
            {
                SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode);
                if (sceneType != SceneUIClasses.Normal)
                {
                    client.sendCmd(nID, StdErrorCode.Error_Denied_In_Current_Map.ToString());
                    return(true);
                }

                if (!IsGongNengOpened(client, true))
                {
                    client.sendCmd(nID, StdErrorCode.Error_Not_In_valid_Time.ToString());
                    return(true);
                }

                if (client.ClientData.SignUpGameType != (int)GameTypes.None)
                {
                    client.sendCmd(nID, StdErrorCode.Error_Denied_In_Activity_Time.ToString());
                    return(true);
                }

                if (KuaFuManager.getInstance().IsInCannotJoinKuaFuCopyTime(client))
                {
                    client.sendCmd(nID, StdErrorCode.Error_Time_Punish.ToString());
                    return(true);
                }

                SystemXmlItem systemFuBenItem = null;
                if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(MoRiJudgeConsts.CopyId, out systemFuBenItem))
                {
                    client.sendCmd(nID, StdErrorCode.Error_Config_Fault.ToString());
                    return(true);
                }

                int minLevel       = systemFuBenItem.GetIntValue("MinLevel");
                int maxLevel       = systemFuBenItem.GetIntValue("MaxLevel");
                int nMinZhuanSheng = systemFuBenItem.GetIntValue("MinZhuanSheng");
                int nMaxZhuanSheng = systemFuBenItem.GetIntValue("MaxZhuanSheng");

                // 先判断等级
                if (client.ClientData.ChangeLifeCount < nMinZhuanSheng ||
                    (client.ClientData.ChangeLifeCount == nMinZhuanSheng && client.ClientData.Level < minLevel))
                {
                    client.sendCmd(nID, StdErrorCode.Error_Level_Limit.ToString());
                    return(true);
                }

                if (client.ClientData.ChangeLifeCount > nMaxZhuanSheng ||
                    (client.ClientData.ChangeLifeCount == nMaxZhuanSheng && client.ClientData.Level > maxLevel))
                {
                    client.sendCmd(nID, StdErrorCode.Error_Level_Limit.ToString());
                    return(true);
                }

                // 判断剩余次数
                FuBenData fuBenData = Global.GetFuBenData(client, MoRiJudgeConsts.CopyId);
                if (fuBenData != null && fuBenData.FinishNum >= systemFuBenItem.GetIntValue("FinishNumber"))
                {
                    client.sendCmd(nID, StdErrorCode.Error_No_Residue_Degree.ToString());
                    return(true);
                }

                int result = 0;// MoRiJudgeClient.getInstance().MoRiJudgeSignUp(client.strUserID, client.ClientData.RoleID, client.ClientData.ZoneID, client.ClientData.CombatForce);
                if (result == (int)KuaFuRoleStates.SignUp)
                {
                    // 报名成功
                    client.ClientData.SignUpGameType = (int)GameTypes.MoRiJudge;

                    // 报名统计
                    GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 1, 0, 0, 0, (int)GameTypes.MoRiJudge);
                }

                //发送结果给客户端
                client.sendCmd(nID, result.ToString());
                return(true);
            }

            catch (Exception ex)
            {
                DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false);
            }

            return(false);
        }
Пример #13
0
        /// <summary>
        /// 获得剩余次数
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        private static int GetLeftCountByType(GameClient client, int type, int copyId)
        {
            int leftnum = 0;

            switch ((CandoType)type)
            {
            case CandoType.DailyTask:
            {
                DailyTaskData dailyTaskData = Global.FindDailyTaskDataByTaskClass(client, 8);
                if (null == dailyTaskData)
                {
                    return(Global.MaxDailyTaskNumForMU);
                }
                int maxnum = Global.GetMaxDailyTaskNum(client, 8, dailyTaskData);


                //获取最大日常任务次数

                leftnum = maxnum - dailyTaskData.RecNum;
            }
            break;

            case CandoType.StoryCopy:
            case CandoType.GoldCopy:
            case CandoType.GroupCopy:
            case CandoType.EXPCopy:
            {
                SystemXmlItem systemFuBenItem = null;
                if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(copyId, out systemFuBenItem))
                {
                    return(-1);
                }
                int total = systemFuBenItem.GetIntValue("EnterNumber");
                if (type == (int)CandoType.StoryCopy || type == (int)CandoType.GroupCopy)
                {
                    total = systemFuBenItem.GetIntValue("FinishNumber");
                }


                if (type == (int)CandoType.GoldCopy || type == (int)CandoType.EXPCopy)
                {
                    int[] nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinBiFuBenNum");
                    if (type == (int)CandoType.EXPCopy)
                    {
                        nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinYanFuBenNum");
                    }
                    if (client.ClientData.VipLevel > 0 && client.ClientData.VipLevel <= (int)VIPEumValue.VIPENUMVALUE_MAXLEVEL && nAddNum != null && nAddNum.Length > 0 && nAddNum.Length <= 13)
                    {
                        total = total + nAddNum[client.ClientData.VipLevel];
                    }
                }

                FuBenData tmpfubdata = Global.GetFuBenData(client, copyId);
                if (null != tmpfubdata)
                {
                    leftnum = total - tmpfubdata.EnterNum;
                }
                else
                {
                    return(total);
                }
            }
            break;

            case CandoType.DemonSquare:
            {
                int nMapID = Global.GetDaimonSquareCopySceneIDForRole(client);
                DaimonSquareDataInfo bcDataTmp = null;

                Data.DaimonSquareDataInfoList.TryGetValue(nMapID, out bcDataTmp);

                int nDate  = DateTime.Now.DayOfYear;                       // 当前时间
                int nCount = Global.QueryDayActivityEnterCountToDB(client, client.ClientData.RoleID, nDate, (int)SpecialActivityTypes.DemoSque);
                if (nCount < 0)
                {
                    nCount = 0;
                }
                int nVipLev = client.ClientData.VipLevel;

                int   nNum  = 0;
                int[] nArry = null;
                nArry = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPEnterDaimonSquareCountAddValue");

                if (nVipLev > 0 && nArry != null && nArry[nVipLev] > 0)
                {
                    nNum = nArry[nVipLev];
                }
                leftnum = bcDataTmp.MaxEnterNum + nNum - nCount;
            }
            break;

            case CandoType.AngelTemple:
            {
                DateTime now = DateTime.Now;

                string        nowTime        = DateTime.Now.ToString("HH:mm");
                List <string> timePointsList = GameManager.AngelTempleMgr.m_AngelTempleData.BeginTime;

                leftnum = 0;
                for (int i = 0; i < timePointsList.Count; i++)
                {
                    DateTime staticTime  = DateTime.Parse(timePointsList[i]);
                    DateTime perpareTime = staticTime.AddMinutes((double)(GameManager.AngelTempleMgr.m_AngelTempleData.PrepareTime / 60));

                    if (now <= perpareTime)
                    {
                        leftnum += 1;
                    }
                }
            }
            break;

            case CandoType.BloodCity:
            {
                int nMapID = Global.GetBloodCastleCopySceneIDForRole(client);
                BloodCastleDataInfo bcDataTmp = null;

                if (!Data.BloodCastleDataInfoList.TryGetValue(nMapID, out bcDataTmp))
                {
                    break;
                }

                int nDate = DateTime.Now.DayOfYear;                              // 当前时间
                int nType = (int)SpecialActivityTypes.BloodCastle;               // 血色堡垒

                int nCount = Global.QueryDayActivityEnterCountToDB(client, client.ClientData.RoleID, nDate, nType);
                if (nCount < 0)
                {
                    nCount = 0;
                }
                // VIP检测

                int nVipLev = client.ClientData.VipLevel;

                int   nNum  = 0;
                int[] nArry = null;
                nArry = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPEnterBloodCastleCountAddValue");

                if (nVipLev > 0 && nArry != null && nArry[nVipLev] > 0)
                {
                    nNum = nArry[nVipLev];
                }
                leftnum = bcDataTmp.MaxEnterNum + nNum - nCount;
            }
            break;

            case CandoType.Arena:
            {
                leftnum = JingJiChangManager.getInstance().GetLeftEnterCount(client);
            }
            break;

            case CandoType.OldBattlefield:
            {
                //古墓 古战场  剩余时间
                BufferData bufferData = Global.GetBufferDataByID(client, (int)BufferItemTypes.GuMuTimeLimit);
                leftnum = (int)(bufferData.BufferVal - bufferData.BufferSecs);
            }
            break;

            case CandoType.PartWar:
            {
                leftnum = GameManager.BattleMgr.LeftEnterCount();
            }
            break;

            case CandoType.PKKing:
            {
                leftnum = GameManager.ArenaBattleMgr.LeftEnterCount();
            }
            break;

            case CandoType.WanmoTower:
            {
                leftnum = 1;
                if (SweepWanMotaManager.GetSweepCount(client) >= SweepWanMotaManager.nWanMoTaMaxSweepNum)
                {
                    leftnum = 0;
                }
            }
            break;

            case CandoType.TaofaTaskCanDo:
            {
                DailyTaskData dailyTaskData = Global.FindDailyTaskDataByTaskClass(client, (int)TaskClasses.TaofaTask);
                if (null == dailyTaskData)
                {
                    return(Global.MaxTaofaTaskNumForMU);
                }
                int maxnum = Global.GetMaxDailyTaskNum(client, (int)TaskClasses.TaofaTask, dailyTaskData);

                //获取最大讨伐任务次数
                leftnum = maxnum - dailyTaskData.RecNum;
            }
            break;

            case CandoType.CrystalCollectCanDo:
            {
                //获取剩余水晶采集次数
                int temp = 0;
                CaiJiLogic.ReqCaiJiLastNum(client, 0, out temp);
                leftnum = temp;
            }
            break;
            }
            return(leftnum);
        }
Пример #14
0
        private static int GetLeftCountByType(GameClient client, int type, int copyId)
        {
            int leftnum = 0;

            switch (type)
            {
            case 1:
            {
                DailyTaskData dailyTaskData = Global.FindDailyTaskDataByTaskClass(client, 8);
                if (null == dailyTaskData)
                {
                    return(10);
                }
                int maxnum = Global.GetMaxDailyTaskNum(client, 8, dailyTaskData);
                leftnum = maxnum - dailyTaskData.RecNum;
                goto IL_4AC;
            }

            case 5:
            {
                int nMapID = Global.GetDaimonSquareCopySceneIDForRole(client);
                DaimonSquareDataInfo bcDataTmp = null;
                Data.DaimonSquareDataInfoList.TryGetValue(nMapID, out bcDataTmp);
                int nDate  = TimeUtil.NowDateTime().DayOfYear;
                int nCount = Global.QueryDayActivityEnterCountToDB(client, client.ClientData.RoleID, nDate, 2);
                if (nCount < 0)
                {
                    nCount = 0;
                }
                int   nVipLev = client.ClientData.VipLevel;
                int   nNum    = 0;
                int[] nArry   = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPEnterDaimonSquareCountAddValue", ',');
                if (nVipLev > 0 && nArry != null && nArry[nVipLev] > 0)
                {
                    nNum = nArry[nVipLev];
                }
                leftnum = bcDataTmp.MaxEnterNum + nNum - nCount;
                goto IL_4AC;
            }

            case 6:
            {
                int nMapID = Global.GetBloodCastleCopySceneIDForRole(client);
                BloodCastleDataInfo bcDataTmp2 = null;
                if (!Data.BloodCastleDataInfoList.TryGetValue(nMapID, out bcDataTmp2))
                {
                    goto IL_4AC;
                }
                int nDate  = TimeUtil.NowDateTime().DayOfYear;
                int nType  = 1;
                int nCount = Global.QueryDayActivityEnterCountToDB(client, client.ClientData.RoleID, nDate, nType);
                if (nCount < 0)
                {
                    nCount = 0;
                }
                int   nVipLev = client.ClientData.VipLevel;
                int   nNum    = 0;
                int[] nArry   = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPEnterBloodCastleCountAddValue", ',');
                if (nVipLev > 0 && nArry != null && nArry[nVipLev] > 0)
                {
                    nNum = nArry[nVipLev];
                }
                leftnum = bcDataTmp2.MaxEnterNum + nNum - nCount;
                goto IL_4AC;
            }

            case 7:
            {
                DateTime      now            = TimeUtil.NowDateTime();
                string        nowTime        = TimeUtil.NowDateTime().ToString("HH:mm");
                List <string> timePointsList = GameManager.AngelTempleMgr.m_AngelTempleData.BeginTime;
                leftnum = 0;
                for (int i = 0; i < timePointsList.Count; i++)
                {
                    DateTime perpareTime = DateTime.Parse(timePointsList[i]).AddMinutes((double)(GameManager.AngelTempleMgr.m_AngelTempleData.PrepareTime / 60));
                    if (now <= perpareTime)
                    {
                        leftnum++;
                    }
                }
                goto IL_4AC;
            }

            case 8:
                leftnum = 1;
                if (SweepWanMotaManager.GetSweepCount(client) >= SweepWanMotaManager.nWanMoTaMaxSweepNum)
                {
                    leftnum = 0;
                }
                goto IL_4AC;

            case 9:
            {
                BufferData bufferData = Global.GetBufferDataByID(client, 34);
                leftnum = (int)(bufferData.BufferVal - (long)bufferData.BufferSecs);
                goto IL_4AC;
            }

            case 10:
                leftnum = GameManager.BattleMgr.LeftEnterCount();
                goto IL_4AC;

            case 11:
                leftnum = GameManager.ArenaBattleMgr.LeftEnterCount();
                goto IL_4AC;

            case 13:
                leftnum = JingJiChangManager.getInstance().GetLeftEnterCount(client);
                goto IL_4AC;

            case 15:
            {
                DailyTaskData dailyTaskData = Global.FindDailyTaskDataByTaskClass(client, 9);
                if (null == dailyTaskData)
                {
                    return(Global.MaxTaofaTaskNumForMU);
                }
                int maxnum = Global.GetMaxDailyTaskNum(client, 9, dailyTaskData);
                leftnum = maxnum - dailyTaskData.RecNum;
                goto IL_4AC;
            }

            case 16:
            {
                int temp = 0;
                CaiJiLogic.ReqCaiJiLastNum(client, 0, out temp);
                leftnum = temp;
                goto IL_4AC;
            }

            case 19:
                leftnum = HuanYingSiYuanManager.getInstance().GetLeftCount(client);
                goto IL_4AC;
            }
            if (copyId > 0)
            {
                SystemXmlItem systemFuBenItem = null;
                if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(copyId, out systemFuBenItem))
                {
                    return(-1);
                }
                int enternum  = systemFuBenItem.GetIntValue("EnterNumber", -1);
                int finishnum = systemFuBenItem.GetIntValue("FinishNumber", -1);
                int total     = (enternum < finishnum) ? finishnum : enternum;
                if (type == 4 || type == 3)
                {
                    int[] nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinBiFuBenNum", ',');
                    if (type == 3)
                    {
                        nAddNum = GameManager.systemParamsList.GetParamValueIntArrayByName("VIPJinYanFuBenNum", ',');
                    }
                    if (client.ClientData.VipLevel > 0 && client.ClientData.VipLevel <= VIPEumValue.VIPENUMVALUE_MAXLEVEL && nAddNum != null && nAddNum.Length > VIPEumValue.VIPENUMVALUE_MAXLEVEL)
                    {
                        total += nAddNum[client.ClientData.VipLevel];
                    }
                }
                FuBenData tmpfubdata = Global.GetFuBenData(client, copyId);
                if (null == tmpfubdata)
                {
                    return(total);
                }
                leftnum = total - tmpfubdata.EnterNum;
            }
IL_4AC:
            return(leftnum);
        }