public static double GetNegativeRate(IObject self, IObject obj, double baseRate, ExtPropIndexes extPropIndex, MagicActionIDs actionId) { int selfZhuanSheng = 0; if (self is GameClient) { selfZhuanSheng = (self as GameClient).ClientData.ChangeLifeCount; baseRate = RoleAlgorithm.GetRoleNegativeRate(self as GameClient, baseRate, extPropIndex); } else if (self is Monster) { selfZhuanSheng = (self as Monster).MonsterInfo.ChangeLifeCount; } int objZhuanSheng = 0; if (obj is GameClient) { if ((obj as GameClient).buffManager.IsBuffEnabled(116)) { return(0.0); } if (actionId != MagicActionIDs.MU_ADD_JITUI && (obj as GameClient).buffManager.IsBuffEnabled(113)) { return(0.0); } if (CaiJiLogic.IsCaiJiState(obj as GameClient) && (extPropIndex == ExtPropIndexes.StateDingShen || extPropIndex == ExtPropIndexes.StateMoveSpeed || extPropIndex == ExtPropIndexes.StateJiTui || extPropIndex == ExtPropIndexes.StateHunMi)) { return(0.0); } objZhuanSheng = (obj as GameClient).ClientData.ChangeLifeCount; } else if (obj is Monster) { objZhuanSheng = (obj as Monster).MonsterInfo.ChangeLifeCount; } else if (obj is FakeRoleItem) { objZhuanSheng = (obj as FakeRoleItem).GetFakeRoleData().MyRoleDataMini.ChangeLifeCount; } double result; if (selfZhuanSheng > objZhuanSheng) { result = baseRate + 0.1 * Math.Pow((double)(selfZhuanSheng - objZhuanSheng), 2.0); } else { result = baseRate - 0.1 * Math.Pow((double)(selfZhuanSheng - objZhuanSheng), 2.0); } return(result); }
/// <summary> /// 加载参数配置文件 /// </summary> /// <returns></returns> private static int ReloadXmlFile_config_systemparams() { int ret = GameManager.systemParamsList.ReloadLoadParamsList(); //解析插旗战的日期和时间 JunQiManager.ParseWeekDaysTimes(); //解析皇城战的日期和时间 HuangChengManager.ParseWeekDaysTimes(); //解析王城战的日期和时间 WangChengManager.ParseWeekDaysTimes(); //重置皇城地图编号 Global.ResetHuangChengMapCode(); //重置皇宫的地图编号 Global.ResetHuangGongMapCode(); //坐骑的名称 Global.HorseNamesList = null; //坐骑的速度 Global.HorseSpeedList = null; //生肖竞猜配置 GameManager.ShengXiaoGuessMgr.ReloadConfig(); //古墓配置 Global.InitGuMuMapCodes(); Global.InitVipGumuExpMultiple(); //充值限制掉落的时间项 GameManager.GoodsPackMgr.ResetLimitTimeRange(); //缓存的二锅头物品列表 Global.ErGuoTouGoodsIDList = null; //绑定铜钱符每日使用次数列表缓存 Global._VipUseBindTongQianGoodsIDNum = null; //自动给予的物品的 GameManager.AutoGiveGoodsIDList = null; //加载采集配置 CaiJiLogic.LoadConfig(); return(ret); }
//刷新当前的功能开启状态,处理有关逻辑 public static void RefreshGongNeng(GameClient client) { CaiJiLogic.InitRoleDailyCaiJiData(client, false, false); HuanYingSiYuanManager.getInstance().InitRoleDailyHYSYData(client); Global.InitRoleDailyTaskData(client, false); // 检测触发开启守护之灵 GuardStatueManager.Instance().OnTaskComplete(client); // 检测开启梅林魔法书 [XSea 2015/6/23] GameManager.MerlinMagicBookMgr.InitMerlinMagicBook(client); // 魂石系统 SoulStoneManager.Instance().CheckOpen(client); ZhengBaManager.Instance().CheckGongNengCanOpen(client); FundManager.initFundData(client); CoupleArenaManager.Instance().CheckGongNengOpen(client); }
public static void RefreshGongNeng(GameClient client) { CaiJiLogic.InitRoleDailyCaiJiData(client, false, false); HuanYingSiYuanManager.getInstance().InitRoleDailyHYSYData(client); Global.InitRoleDailyTaskData(client, false); SingletonTemplate <GuardStatueManager> .Instance().OnTaskComplete(client); GameManager.MerlinMagicBookMgr.InitMerlinMagicBook(client); SingletonTemplate <SoulStoneManager> .Instance().CheckOpen(client); SingletonTemplate <ZhengBaManager> .Instance().CheckGongNengCanOpen(client); FundManager.initFundData(client); SingletonTemplate <CoupleArenaManager> .Instance().CheckGongNengOpen(client); ShenShiManager.getInstance().InitRoleShenShiData(client); JueXingManager.getInstance().InitRoleJueXingData(client); ZuoQiManager.getInstance().InitRoleZuoQiData(client); GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, true, false, 7); }
private static int ReloadXmlFile_config_systemparams() { int ret = GameManager.systemParamsList.ReloadLoadParamsList(); JunQiManager.ParseWeekDaysTimes(); LuoLanChengZhanManager.getInstance().InitConfig(); Global.ResetHuangChengMapCode(); Global.ResetHuangGongMapCode(); Global.HorseNamesList = null; Global.HorseSpeedList = null; GameManager.ShengXiaoGuessMgr.ReloadConfig(false); Global.InitGuMuMapCodes(); Global.InitVipGumuExpMultiple(); GameManager.GoodsPackMgr.ResetLimitTimeRange(); Global.ErGuoTouGoodsIDList = null; Global._VipUseBindTongQianGoodsIDNum = null; GameManager.AutoGiveGoodsIDList = null; CaiJiLogic.LoadConfig(); GameManager.MagicSwordMgr.LoadMagicSwordData(); GameManager.SummonerMgr.LoadSummonerData(); GameManager.MerlinMagicBookMgr.LoadMerlinSystemParamsConfigData(); Global.LoadItemLogMark(); Global.LoadLogTradeGoods(); Global.LoadForgeSystemParams(); KuaFuManager.getInstance().InitCopyTime(); SingletonTemplate <SoulStoneManager> .Instance().LoadJingHuaExpConfig(); SingletonTemplate <MonsterAttackerLogManager> .Instance().LoadRecordMonsters(); SingletonTemplate <CreateRoleLimitManager> .Instance().LoadConfig(); SingletonTemplate <SpeedUpTickCheck> .Instance().LoadConfig(); SingletonTemplate <NameManager> .Instance().LoadConfig(); SingletonTemplate <CoupleArenaManager> .Instance().InitSystenParams(); return(ret); }
public static void InitRoleDailyCaiJiData(GameClient client, bool isLogin, bool isNewday) { if (GlobalNew.IsGongNengOpened(client, GongNengIDs.CrystalCollect, false)) { if (isLogin) { client.ClientData.DailyCrystalCollectNum = Global.GetRoleParamsInt32FromDB(client, "CaiJiCrystalNum"); client.ClientData.CrystalCollectDayID = Global.GetRoleParamsInt32FromDB(client, "CaiJiCrystalDayID"); } bool bClear = false; if (isNewday) { if (client.ClientData.DailyCrystalCollectNum >= 0 && client.ClientData.CrystalCollectDayID > 0) { client.ClientData.OldCrystalCollectData = new OldCaiJiData(); client.ClientData.OldCrystalCollectData.OldDay = client.ClientData.CrystalCollectDayID; client.ClientData.OldCrystalCollectData.OldNum = client.ClientData.DailyCrystalCollectNum; } bClear = true; } else if (0 == client.ClientData.CrystalCollectDayID) { bClear = true; } if (bClear) { client.ClientData.DailyCrystalCollectNum = 0; client.ClientData.CrystalCollectDayID = TimeUtil.NowDateTime().DayOfYear; Global.SaveRoleParamsInt32ValueToDB(client, "CaiJiCrystalNum", 0, true); Global.SaveRoleParamsInt32ValueToDB(client, "CaiJiCrystalDayID", client.ClientData.CrystalCollectDayID, true); if (Global.GetMapSceneType(client.ClientData.MapCode) == SceneUIClasses.ShuiJingHuanJing) { CaiJiLogic.NotifyCollectLastNum(client, 0, CaiJiLogic.DailyNum); } } client._IconStateMgr.CheckCaiJiState(client); } }
public static int ReqStartCaiJi(GameClient client, int monsterId, out int GatherTime) { GatherTime = 0; CaiJiLogic.CancelCaiJiState(client); int result; if (TimeUtil.NOW() < client.ClientData.CurrentMagicActionEndTicks) { result = -43; } else if (client.ClientData.CurrentLifeV <= 0) { CaiJiLogic.CancelCaiJiState(client); result = -3; } else { Monster monster = GameManager.MonsterMgr.FindMonster(client.ClientData.MapCode, monsterId); if (null == monster) { result = -1; } else if (monster.MonsterType != 1601) { result = -4; } else if (monster.IsCollected) { result = -4; } else { SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); GetCaiJiTimeEventObject eventObj = new GetCaiJiTimeEventObject(client, monster); bool handled = GlobalEventSource4Scene.getInstance().fireEvent(eventObj, (int)sceneType); if (handled) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600.0) { return(-301); } GatherTime = eventObj.GatherTime; if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.HuanYingSiYuan) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600.0) { return(-301); } GatherTime = HuanYingSiYuanManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.YongZheZhanChang) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600.0) { return(-301); } GatherTime = YongZheZhanChangManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.KingOfBattle) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600.0) { return(-301); } GatherTime = KingOfBattleManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.Comp) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600.0) { return(-301); } GatherTime = CompManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.KarenEast) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600.0) { return(-301); } GatherTime = KarenBattleManager_MapEast.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.LingDiCaiJi) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 400.0) { return(-301); } GatherTime = LingDiCaiJiManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.EscapeBattle) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 400.0) { return(-301); } GatherTime = EscapeBattleManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 400.0) { return(-301); } SystemXmlItem CaiJiMonsterXmlItem = null; if (!GameManager.systemCaiJiMonsterMgr.SystemXmlItemDict.TryGetValue(monster.MonsterInfo.ExtensionID, out CaiJiMonsterXmlItem) || null == CaiJiMonsterXmlItem) { return(-4); } GatherTime = CaiJiMonsterXmlItem.GetIntValue("GatherTime", -1); if (client.ClientData.DailyCrystalCollectNum >= CaiJiLogic.DailyNum) { return(-5); } } Global.EndMeditate(client); CaiJiLogic.SetCaiJiState(client, monsterId, 0L, monster.UniqueID); result = 0; } } return(result); }
public static int ReqFinishCaiJi(GameClient client, int monsterId) { int result; if (monsterId != client.ClientData.CaijTargetId || client.ClientData.CaiJiStartTick == 0U || client.ClientData.CaijTargetId == 0) { CaiJiLogic.CancelCaiJiState(client); result = -3; } else if (client.ClientData.CurrentLifeV <= 0) { CaiJiLogic.CancelCaiJiState(client); result = -3; } else { Monster monster = GameManager.MonsterMgr.FindMonster(client.ClientData.MapCode, monsterId); if (null == monster) { CaiJiLogic.CancelCaiJiState(client); result = -1; } else if (monster.UniqueID != client.ClientData.CaiJiTargetUniqueID) { CaiJiLogic.CancelCaiJiState(client); result = -1; } else if (monster.MonsterType != 1601) { CaiJiLogic.CancelCaiJiState(client); result = -4; } else { SystemXmlItem CaiJiMonsterXmlItem = null; SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); GetCaiJiTimeEventObject eventObj = new GetCaiJiTimeEventObject(client, monster); bool handled = GlobalEventSource4Scene.getInstance().fireEvent(eventObj, (int)sceneType); int GatherTime; if (handled) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600.0) { return(-301); } GatherTime = eventObj.GatherTime; if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.HuanYingSiYuan) { GatherTime = HuanYingSiYuanManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else if (sceneType == SceneUIClasses.YongZheZhanChang) { GatherTime = YongZheZhanChangManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else if (sceneType == SceneUIClasses.KingOfBattle) { GatherTime = KingOfBattleManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else if (sceneType == SceneUIClasses.Comp) { GatherTime = CompManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else if (sceneType == SceneUIClasses.KarenEast) { GatherTime = KarenBattleManager_MapEast.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else if (sceneType == SceneUIClasses.LingDiCaiJi) { GatherTime = LingDiCaiJiManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { CaiJiLogic.CancelCaiJiState(client); return(GatherTime); } } else if (sceneType == SceneUIClasses.EscapeBattle) { GatherTime = EscapeBattleManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else { if (sceneType == SceneUIClasses.ShuiJingHuanJing) { if (client.ClientData.DailyCrystalCollectNum >= CaiJiLogic.DailyNum) { CaiJiLogic.CancelCaiJiState(client); return(-6); } } if (!GameManager.systemCaiJiMonsterMgr.SystemXmlItemDict.TryGetValue(monster.MonsterInfo.ExtensionID, out CaiJiMonsterXmlItem) || null == CaiJiMonsterXmlItem) { CaiJiLogic.CancelCaiJiState(client); return(-4); } GatherTime = CaiJiMonsterXmlItem.GetIntValue("GatherTime", -1); } GatherTime = GatherTime * CaiJiLogic.GatherTimePer / 100; uint intervalmsec = TimeUtil.timeGetTime() - client.ClientData.CaiJiStartTick; if ((ulong)intervalmsec < (ulong)((long)(GatherTime * 1000))) { CaiJiLogic.CancelCaiJiState(client); LogManager.WriteLog(LogTypes.Error, string.Format("采集读条时间不足intervalmsec={0}", intervalmsec), null, true); result = -5; } else { CaiJiLogic.CancelCaiJiState(client); if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 400.0) { result = -2; } else { lock (monster.CaiJiStateLock) { if (monster.IsCollected) { return(-4); } monster.IsCollected = true; } if (!GlobalEventSource4Scene.getInstance().fireEvent(new CaiJiEventObject(client, monster), (int)sceneType)) { if (sceneType == SceneUIClasses.HuanYingSiYuan) { HuanYingSiYuanManager.getInstance().OnCaiJiFinish(client, monster); } else if (sceneType == SceneUIClasses.LingDiCaiJi) { LingDiCaiJiManager.getInstance().OnCaiJiFinish(client, monster); } else { CaiJiLogic.UpdateCaiJiData(client); CaiJiLogic.NotifyCollectLastNum(client, 0, CaiJiLogic.DailyNum - client.ClientData.DailyCrystalCollectNum); float AwardRate = 1f; int rangeIndex = CaiJiLogic.JugeDateTimeInTimeRange(TimeUtil.NowDateTime(), CaiJiLogic.dateTimeRangeArray, true); if (rangeIndex >= 0) { AwardRate = CaiJiLogic.dateTimeRangeArray[rangeIndex].DoubleAwardRate; } int ExpAward = (int)(AwardRate * (float)CaiJiMonsterXmlItem.GetIntValue("ExpAward", -1)); int XingHunAward = (int)(AwardRate * (float)CaiJiMonsterXmlItem.GetIntValue("XingHunAward", -1)); int BindZuanShiAward = (int)(AwardRate * (float)CaiJiMonsterXmlItem.GetIntValue("BindZuanShiAward", -1)); int BindJinBiAward = (int)(AwardRate * (float)CaiJiMonsterXmlItem.GetIntValue("BindJinBiAward", -1)); int MoJingAward = (int)(AwardRate * (float)CaiJiMonsterXmlItem.GetIntValue("MoJingAward", -1)); if (ExpAward > 0) { GameManager.ClientMgr.ProcessRoleExperience(client, (long)ExpAward, true, true, false, "none"); } if (XingHunAward > 0) { GameManager.ClientMgr.ModifyStarSoulValue(client, XingHunAward, "采集获得星魂", true, true); } if (BindZuanShiAward > 0) { GameManager.ClientMgr.AddUserGold(client, BindZuanShiAward, "采集获得绑钻"); } if (BindJinBiAward > 0) { GameManager.ClientMgr.AddMoney1(client, BindJinBiAward, "采集获得绑金", true); GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, StringUtil.substitute(GLang.GetLang(28, new object[0]), new object[] { BindJinBiAward }), GameInfoTypeIndexes.Hot, ShowGameInfoTypes.OnlyErr, 0); } if (MoJingAward > 0) { GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, MoJingAward, "采集获得魔晶", true, true, false); } ProcessTask.ProcessAddTaskVal(client, TaskTypes.CaiJi_ShuiJingHuanJing, -1, 1, new object[0]); } } GameManager.MonsterMgr.DeadMonsterImmediately(monster); ProcessTask.Process(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, monster.RoleID, monster.MonsterInfo.ExtensionID, -1, TaskTypes.CaiJiGoods, null, 0, -1L, null); result = 0; } } } } return(result); }
//刷新当前的功能开启状态,处理有关逻辑 public static void RefreshGongNeng(GameClient client) { CaiJiLogic.InitRoleDailyCaiJiData(client, false, false); Global.InitRoleDailyTaskData(client, false); }
/// <summary> /// 请求开始采集 /// </summary> public static int ReqStartCaiJi(GameClient client, int monsterId, out int GatherTime) { GatherTime = 0; CaiJiLogic.CancelCaiJiState(client); //判断玩家当前状态能否采集 //死亡时不能采集 if (client.ClientData.CurrentLifeV <= 0) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-3); } //判断采集物是否存在 Monster monster = GameManager.MonsterMgr.FindMonster(client.ClientData.MapCode, monsterId); if (null == monster) //找不到采集物 { return(-1); } //判断是不是采集物 if (monster.MonsterType != (int)MonsterTypes.CaiJi) //不是采集物 { return(-4); } SystemXmlItem CaiJiMonsterXmlItem = null; if (!GameManager.systemCaiJiMonsterMgr.SystemXmlItemDict.TryGetValue(monster.MonsterInfo.ExtensionID, out CaiJiMonsterXmlItem) || null == CaiJiMonsterXmlItem) { return(-4); //传来的monsterID不对 } GatherTime = CaiJiMonsterXmlItem.GetIntValue("GatherTime"); //判断玩家与采集物的距离 if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 400) //判断距离 { return(-2); } if (monster.IsCollected) { return(-4); //已经被采集过了 } //刷新活动中与采集相关的信息 if (client.ClientData.DailyCrystalCollectNum >= DailyNum) { return(-5); //已经达到次数上限 } //结束冥想 Global.EndMeditate(client); //设置玩家的采集状态 SetCaiJiState(client, monsterId); return(0); //采集开始 }
/// <summary> /// 请求完成采集 /// </summary> public static int ReqFinishCaiJi(GameClient client, int monsterId) { //判断玩家当前状态能否采集 if (monsterId != client.ClientData.CaijTargetId || client.ClientData.CaiJiStartTick == 0 || client.ClientData.CaijTargetId == 0) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-3); } //死亡时不能采集 if (client.ClientData.CurrentLifeV <= 0) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-3); } //刷新活动中与采集相关的信息 if (client.ClientData.DailyCrystalCollectNum >= DailyNum) { CaiJiLogic.CancelCaiJiState(client); return(-6); //已经达到次数上限 } //判断采集物是否存在 Monster monster = GameManager.MonsterMgr.FindMonster(client.ClientData.MapCode, monsterId); if (null == monster) //找不到采集物 { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-1); } //判断是不是采集物 if (monster.MonsterType != (int)MonsterTypes.CaiJi) //不是采集物 { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-4); } SystemXmlItem CaiJiMonsterXmlItem = null; if (!GameManager.systemCaiJiMonsterMgr.SystemXmlItemDict.TryGetValue(monster.MonsterInfo.ExtensionID, out CaiJiMonsterXmlItem) || null == CaiJiMonsterXmlItem) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-4); //传来的monsterID不对 } //读条时间 long GatherTime = (long)CaiJiMonsterXmlItem.GetIntValue("GatherTime"); //读条时间不对不能采集 if (DateTime.Now.Ticks - client.ClientData.CaiJiStartTick < GatherTime * 1000 * 10000) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-5); } CaiJiLogic.CancelCaiJiState(client); //判断玩家与采集物的距离 if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 400) //判断距离 { return(-2); //太远了 } lock (monster.CaiJiStateLock) { if (monster.IsCollected) { return(-4); //已经被别人采了 } else { monster.IsCollected = true; } } //增加采集次数 UpdateCaiJiData(client); //通知客户端采集次数 NotifyCollectLastNum(client, 0, DailyNum - client.ClientData.DailyCrystalCollectNum); //清除采集物 GameManager.MonsterMgr.DeadMonsterImmediately(monster); //给予采集奖励 float AwardRate = 1.0f; //判断是否有双倍 int endMinute = 0; if (Global.JugeDateTimeInTimeRange(DateTime.Now, dateTimeRangeArray, out endMinute)) { AwardRate = DoubleAwardRate; } int ExpAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("ExpAward")); int XingHunAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("XingHunAward")); int BindZuanShiAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("BindZuanShiAward")); int BindJinBiAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("BindJinBiAward")); int MoJingAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("MoJingAward")); if (ExpAward > 0) { //处理角色经验 GameManager.ClientMgr.ProcessRoleExperience(client, ExpAward, true, true); } if (XingHunAward > 0) { GameManager.ClientMgr.ModifyStarSoulValue(client, XingHunAward, "采集获得星魂", true, true); } if (BindZuanShiAward > 0) { GameManager.ClientMgr.AddUserGold(client, BindZuanShiAward, "采集获得绑钻"); } if (BindJinBiAward > 0) { GameManager.ClientMgr.AddMoney1(client, BindJinBiAward, "采集获得绑金", true); } if (MoJingAward > 0) { GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, MoJingAward, "采集获得魔晶", true); } /* * Monster monster = GameManager.MonsterMgr.FindMonster(client.ClientData.MapCode, caiJiRoleID); * if (null != monster && monster.MonsterType == (int)MonsterTypes.CaiJi) * { * //首先判断背包是否已经满了,如果是则提示用户采集失败 * if (monster.MonsterInfo.FallGoodsPackID <= 0) * { * if (!Global.CanAddGoodsNum(client, 1)) * { * GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, * client, StringUtil.substitute(Global.GetLang("背包已满,无法将进行采集")), * GameInfoTypeIndexes.Error, ShowGameInfoTypes.ErrAndBox); * } * } * * //杀死怪物并处理任务 * Global.SystemKillMonster(client, monster); * } */ return(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); }
/// <summary> /// 加载参数配置文件 /// </summary> /// <returns></returns> private static int ReloadXmlFile_config_systemparams() { int ret = GameManager.systemParamsList.ReloadLoadParamsList(); //解析插旗战的日期和时间 JunQiManager.ParseWeekDaysTimes(); if (GameManager.OPT_ChengZhanType == 0) { //解析皇城战的日期和时间 HuangChengManager.ParseWeekDaysTimes(); //解析王城战的日期和时间 WangChengManager.ParseWeekDaysTimes(); } //重新读取罗兰城战配置文件 LuoLanChengZhanManager.getInstance().InitConfig(); //重置皇城地图编号 Global.ResetHuangChengMapCode(); //重置皇宫的地图编号 Global.ResetHuangGongMapCode(); //坐骑的名称 Global.HorseNamesList = null; //坐骑的速度 Global.HorseSpeedList = null; //生肖竞猜配置 GameManager.ShengXiaoGuessMgr.ReloadConfig(); //古墓配置 Global.InitGuMuMapCodes(); Global.InitVipGumuExpMultiple(); //充值限制掉落的时间项 GameManager.GoodsPackMgr.ResetLimitTimeRange(); //缓存的二锅头物品列表 Global.ErGuoTouGoodsIDList = null; //绑定铜钱符每日使用次数列表缓存 Global._VipUseBindTongQianGoodsIDNum = null; //自动给予的物品的 GameManager.AutoGiveGoodsIDList = null; //加载采集配置 CaiJiLogic.LoadConfig(); // 加载魔剑士静态数据 [XSea 2015/4/14] GameManager.MagicSwordMgr.LoadMagicSwordData(); // 加载梅林魔法书静态数据 [XSea 2015/6/19] GameManager.MerlinMagicBookMgr.LoadMerlinSystemParamsConfigData(); // LogGoods Global.LoadItemLogMark(); // logTradeGoods Global.LoadLogTradeGoods(); //强化最大等级相关配置 Global.LoadForgeSystemParams(); // 副本惩罚时间 KuaFuManager.getInstance().InitCopyTime(); // 魂石精华的经验配置 SoulStoneManager.Instance().LoadJingHuaExpConfig(); // 加载需要记录日志的怪物 MonsterAttackerLogManager.Instance().LoadRecordMonsters(); // 玩家创建角色限制管理 CreateRoleLimitManager.Instance().LoadConfig(); SpeedUpTickCheck.Instance().LoadConfig(); NameManager.Instance().LoadConfig(); CoupleArenaManager.Instance().InitSystenParams(); return(ret); }
/// <summary> /// 请求完成采集 /// </summary> public static int ReqFinishCaiJi(GameClient client, int monsterId) { //判断玩家当前状态能否采集 if (monsterId != client.ClientData.CaijTargetId || client.ClientData.CaiJiStartTick == 0 || client.ClientData.CaijTargetId == 0) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-3); } //死亡时不能采集 if (client.ClientData.CurrentLifeV <= 0) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-3); } //判断采集物是否存在 Monster monster = GameManager.MonsterMgr.FindMonster(client.ClientData.MapCode, monsterId); if (null == monster) //找不到采集物 { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-1); } //判断是不是采集物 if (monster.MonsterType != (int)MonsterTypes.CaiJi) //不是采集物 { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-4); } SystemXmlItem CaiJiMonsterXmlItem = null; int GatherTime = int.MaxValue; //采集条件判断 SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); if (sceneType == SceneUIClasses.HuanYingSiYuan) { //幻影寺院采集圣杯 GatherTime = HuanYingSiYuanManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else if (sceneType == SceneUIClasses.YongZheZhanChang) { // 勇者战场 水晶 GatherTime = YongZheZhanChangManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else if (sceneType == SceneUIClasses.KingOfBattle) { // 王者战场 水晶 GatherTime = KingOfBattleManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(-4); } } else { //水晶环境采集水晶 if (client.ClientData.DailyCrystalCollectNum >= DailyNum) { CaiJiLogic.CancelCaiJiState(client); return(-6); //已经达到次数上限 } //====Monsters=== //if (!GameManager.systemCaiJiMonsterMgr.SystemXmlItemDict.TryGetValue(monster.MonsterInfo.ExtensionID, out CaiJiMonsterXmlItem) || null == CaiJiMonsterXmlItem) //{ // //取消采集状态 // CaiJiLogic.CancelCaiJiState(client); // return -4; //传来的monsterID不对 //} //读条时间 GatherTime = CaiJiMonsterXmlItem.GetIntValue("GatherTime"); // 针对服务器时间漂移问题,对结束采集的读条时间进行缩短处理 GatherTime = GatherTime * GatherTimePer / 100; } //读条时间不对不能采集 uint intervalmsec = TimeUtil.timeGetTime() - client.ClientData.CaiJiStartTick; if (intervalmsec < GatherTime * 1000) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); LogManager.WriteLog(LogTypes.Error, string.Format("采集读条时间不足intervalmsec={0}", intervalmsec)); return(-5); } CaiJiLogic.CancelCaiJiState(client); //判断玩家与采集物的距离 if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 400) //判断距离 { return(-2); //太远了 } lock (monster.CaiJiStateLock) { if (monster.IsCollected) { return(-4); //已经被别人采了 } else { monster.IsCollected = true; } } //采集完成 bool handled = GlobalEventSource4Scene.getInstance().fireEvent(new CaiJiEventObject(client, monster), (int)sceneType); if (!handled) { if (sceneType == SceneUIClasses.HuanYingSiYuan) { //幻影寺院采集圣杯 HuanYingSiYuanManager.getInstance().OnCaiJiFinish(client, monster); } else { //水晶环境采集水晶 //增加采集次数 UpdateCaiJiData(client); //通知客户端采集次数 NotifyCollectLastNum(client, 0, DailyNum - client.ClientData.DailyCrystalCollectNum); //给予采集奖励 float AwardRate = 1.0f; //判断是否有双倍 int rangeIndex = JugeDateTimeInTimeRange(TimeUtil.NowDateTime(), dateTimeRangeArray); if (rangeIndex >= 0) { AwardRate = dateTimeRangeArray[rangeIndex].DoubleAwardRate; } int ExpAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("ExpAward")); int XingHunAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("XingHunAward")); int BindZuanShiAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("BindZuanShiAward")); int BindJinBiAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("BindJinBiAward")); int MoJingAward = (int)(AwardRate * CaiJiMonsterXmlItem.GetIntValue("MoJingAward")); if (ExpAward > 0) { //处理角色经验 GameManager.ClientMgr.ProcessRoleExperience(client, ExpAward, true, true); } if (XingHunAward > 0) { GameManager.ClientMgr.ModifyStarSoulValue(client, XingHunAward, "采集获得星魂", true, true); } if (BindZuanShiAward > 0) { GameManager.ClientMgr.AddUserGold(client, BindZuanShiAward, "采集获得绑钻"); } if (BindJinBiAward > 0) { GameManager.ClientMgr.AddMoney1(client, BindJinBiAward, "采集获得绑金", true); GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, StringUtil.substitute(Global.GetLang("获得绑定金币 +{0}"), BindJinBiAward), GameInfoTypeIndexes.Hot, ShowGameInfoTypes.OnlyErr, (int)HintErrCodeTypes.None); } if (MoJingAward > 0) { GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, MoJingAward, "采集获得魔晶", true); } /* * Monster monster = GameManager.MonsterMgr.FindMonster(client.ClientData.MapCode, caiJiRoleID); * if (null != monster && monster.MonsterType == (int)MonsterTypes.CaiJi) * { * //首先判断背包是否已经满了,如果是则提示用户采集失败 * if (monster.MonsterInfo.FallGoodsPackID <= 0) * { * if (!Global.CanAddGoodsNum(client, 1)) * { * GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, * client, StringUtil.substitute(Global.GetLang("背包已满,无法将进行采集")), * GameInfoTypeIndexes.Error, ShowGameInfoTypes.ErrAndBox); * } * } * * //杀死怪物并处理任务 * Global.SystemKillMonster(client, monster); * } */ } } //清除采集物 GameManager.MonsterMgr.DeadMonsterImmediately(monster); return(0); //采集完成 }
/// <summary> /// 请求开始采集 /// </summary> public static int ReqStartCaiJi(GameClient client, int monsterId, out int GatherTime) { GatherTime = 0; CaiJiLogic.CancelCaiJiState(client); //判断玩家当前状态能否采集 //死亡时不能采集 if (client.ClientData.CurrentLifeV <= 0) { //取消采集状态 CaiJiLogic.CancelCaiJiState(client); return(-3); } //判断采集物是否存在 Monster monster = GameManager.MonsterMgr.FindMonster(client.ClientData.MapCode, monsterId); if (null == monster) //找不到采集物 { return(-1); } //判断是不是采集物 if (monster.MonsterType != (int)MonsterTypes.CaiJi) //不是采集物 { return(-4); } if (monster.IsCollected) { return(-4); //已经被采集过了 } SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); if (sceneType == SceneUIClasses.HuanYingSiYuan) { //判断玩家与采集物的距离 if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600) //判断距离 { return(StdErrorCode.Error_Too_Far); } //幻影寺院采集圣杯 GatherTime = HuanYingSiYuanManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.YongZheZhanChang) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600) { return(StdErrorCode.Error_Too_Far); } GatherTime = YongZheZhanChangManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else if (sceneType == SceneUIClasses.KingOfBattle) { if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 600) { return(StdErrorCode.Error_Too_Far); } GatherTime = KingOfBattleManager.getInstance().GetCaiJiMonsterTime(client, monster); if (GatherTime < 0) { return(GatherTime); } } else { //判断玩家与采集物的距离 if (Global.GetTwoPointDistance(client.CurrentPos, monster.CurrentPos) > 400) //判断距离 { return(StdErrorCode.Error_Too_Far); } //水晶环境采集水晶 //====Monsters=== //SystemXmlItem CaiJiMonsterXmlItem = null; //if (!GameManager.systemCaiJiMonsterMgr.SystemXmlItemDict.TryGetValue(monster.MonsterInfo.ExtensionID, out CaiJiMonsterXmlItem) || null == CaiJiMonsterXmlItem) //{ // return -4; //传来的monsterID不对 //} //GatherTime = CaiJiMonsterXmlItem.GetIntValue("GatherTime"); //刷新活动中与采集相关的信息 if (client.ClientData.DailyCrystalCollectNum >= DailyNum) { return(-5); //已经达到次数上限 } } //结束冥想 Global.EndMeditate(client); //设置玩家的采集状态 SetCaiJiState(client, monsterId); return(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); }