/// <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); }
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); }