/// <summary> /// 配置的功能是否开启 /// </summary> /// <param name="client"></param> /// <param name="id"></param> /// <returns></returns> public static bool IsGongNengOpened(GameClient client, GongNengIDs id) { SystemXmlItem xmlItem = null; if (GameManager.SystemSystemOpen.SystemXmlItemDict.TryGetValue((int)id, out xmlItem)) { int trigger = xmlItem.GetIntValue("TriggerCondition"); if (trigger == 7) { if (client.ClientData.MainTaskID < xmlItem.GetIntValue("TimeParameters")) { return(false); } return(true); } else if (trigger == 1) { int[] paramArray = xmlItem.GetIntArrayValue("TimeParameters"); if (paramArray.Length == 2) { if (Global.GetUnionLevel(paramArray[0], paramArray[1]) > Global.GetUnionLevel(client)) { return(false); } } return(true); } } return(true); }
/// <summary> /// 配置的功能是否开启 /// </summary> /// <param name="client"></param> /// <param name="id"></param> /// <returns></returns> public static bool IsGongNengOpened(GameClient client, GongNengIDs id, bool hint = false) { SystemXmlItem xmlItem = null; if (GameManager.SystemSystemOpen.SystemXmlItemDict.TryGetValue((int)id, out xmlItem)) { int trigger = xmlItem.GetIntValue("TriggerCondition"); // 等级 if (trigger == 1) { int[] paramArray = xmlItem.GetIntArrayValue("TimeParameters"); if (paramArray.Length == 2) { if (Global.GetUnionLevel(paramArray[0], paramArray[1]) > Global.GetUnionLevel(client)) { if (hint) { string msg = string.Format(Global.GetLang("开启此功能需要达到【{0}】转【{1}】级"), paramArray[0], paramArray[1]); GameManager.ClientMgr.NotifyHintMsg(client, msg); } return(false); } } return(true); } // 完成指定任务 else if (trigger == 7) { int taskId = xmlItem.GetIntValue("TimeParameters"); if (client.ClientData.MainTaskID < taskId) { if (hint) { string msg = string.Format(Global.GetLang("开启此功能需要完成主线任务【{0}】"), GlobalNew.GetTaskName(taskId)); GameManager.ClientMgr.NotifyHintMsg(client, msg); } return(false); } return(true); } // 羽毛阶数 else if (trigger == 14) { string str = xmlItem.GetStringValue("TimeParameters"); if (string.IsNullOrEmpty(str)) { return(true); } string[] fields = str.Split(','); if (fields.Length != 2) { return(true); } int suit = Convert.ToInt32(fields[0]); int star = Convert.ToInt32(fields[1]); return((client.ClientData.MyWingData.WingID > suit) || (client.ClientData.MyWingData.WingID == suit && client.ClientData.MyWingData.ForgeLevel >= star)); } // 成就阶数 else if (trigger == 15) { if (client.ClientData.ChengJiuLevel < xmlItem.GetIntValue("TimeParameters")) { return(false); } } // 军衔阶数 else if (trigger == 16) { int junxian = GameManager.ClientMgr.GetShengWangLevelValue(client); if (junxian < xmlItem.GetIntValue("TimeParameters")) { return(false); } } else if (trigger == 20) { int bangHuiLevel = Global.GetBangHuiLevel(client); if (bangHuiLevel < xmlItem.GetIntValue("TimeParameters")) { return(false); } } } return(true); }
public static void initialize() { try { int[] nParams = GameManager.systemParamsList.GetParamValueIntArrayByName("LuoLanFaZhen", ','); if (nParams.Length != 5) { throw new Exception("systemParamsList.LuoLanFaZhen参数数量应该是5"); } LuoLanFaZhenCopySceneManager.SpecialBossID = nParams[0]; LuoLanFaZhenCopySceneManager.SpecialMapCode = nParams[1]; LuoLanFaZhenCopySceneManager.SpecialAwardRate = nParams[2]; LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID = nParams[3]; LuoLanFaZhenCopySceneManager.SpecialTeleRate = nParams[4]; SystemXmlItem systemFuBenItem = null; if (GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID, out systemFuBenItem) && systemFuBenItem != null) { LuoLanFaZhenCopySceneManager.FinalBossID = systemFuBenItem.GetIntValue("BossID", -1); } LuoLanFaZhenCopySceneManager.systemLuoLanFaZhen.LoadFromXMlFile("Config/LuoLanFaZhen.xml", "", "MapID", 0); List <int> listMapCode = LuoLanFaZhenCopySceneManager.systemLuoLanFaZhen.SystemXmlItemDict.Keys.ToList <int>(); foreach (int mapcode in listMapCode) { SystemXmlItem systemFazhenMap = null; if (LuoLanFaZhenCopySceneManager.systemLuoLanFaZhen.SystemXmlItemDict.TryGetValue(mapcode, out systemFazhenMap) && systemFazhenMap != null) { SystemFazhenMapData sysMapData = new SystemFazhenMapData(); sysMapData.MapCode = mapcode; int[] specailParams = systemFazhenMap.GetIntArrayValue("TeShuMapID", '|'); if (specailParams != null && specailParams.Length >= 3) { sysMapData.SpecialDestMapCode = specailParams[0]; sysMapData.SpecialDestX = specailParams[1]; sysMapData.SpecialDestY = specailParams[2]; } else { sysMapData.SpecialDestMapCode = -1; sysMapData.SpecialDestX = -1; sysMapData.SpecialDestY = -1; } int[] gateIds = systemFazhenMap.GetIntArrayValue("ChuanSongMenID", '|'); string strDestMapTemp = systemFazhenMap.GetStringValue("MuDidiID"); string[] strDestMapTemp2 = strDestMapTemp.Split(new char[] { '|' }); if (gateIds.Length != strDestMapTemp2.Length) { throw new Exception("LuoLanFaZhen.xml传送门数量和目标地图数量不一致"); } for (int i = 0; i < gateIds.Length; i++) { sysMapData.listGateID.Add(gateIds[i]); } for (int i = 0; i < strDestMapTemp2.Length; i++) { string[] strDestMapTemp3 = strDestMapTemp2[i].Split(new char[] { ',' }); sysMapData.listDestMapCode.Add(Convert.ToInt32(strDestMapTemp3[0])); } LuoLanFaZhenCopySceneManager.m_AllMapGatesStaticData[mapcode] = sysMapData; } } } catch (Exception) { throw new Exception("罗兰法阵配置项出错"); } }
public static bool IsGongNengOpened(GameClient client, GongNengIDs id, bool hint = false) { int versionGongNengId = (int)id; if (versionGongNengId >= 100000 && versionGongNengId < 120000) { versionGongNengId -= 100000; } bool result; if (!GameManager.VersionSystemOpenMgr.IsVersionSystemOpen(versionGongNengId)) { result = false; } else if (null == client) { result = true; } else if (client.ClientData.HideGM > 0) { result = true; } else { SystemXmlItem xmlItem = null; if (GameManager.SystemSystemOpen.SystemXmlItemDict.TryGetValue((int)id, out xmlItem)) { int trigger = xmlItem.GetIntValue("TriggerCondition", -1); if (trigger == 1) { int[] paramArray = xmlItem.GetIntArrayValue("TimeParameters", ','); if (paramArray.Length == 2) { if (Global.GetUnionLevel(paramArray[0], paramArray[1], false) > Global.GetUnionLevel(client, false)) { if (hint) { string msg = string.Format(GLang.GetLang(374, new object[0]), paramArray[0], paramArray[1]); GameManager.ClientMgr.NotifyHintMsg(client, msg); } return(false); } } return(true); } if (trigger == 7) { int taskId = xmlItem.GetIntValue("TimeParameters", -1); if (client.ClientData.MainTaskID < taskId) { if (hint) { string msg = string.Format(GLang.GetLang(375, new object[0]), GlobalNew.GetTaskName(taskId)); GameManager.ClientMgr.NotifyHintMsg(client, msg); } return(false); } return(true); } else if (trigger == 14) { string str = xmlItem.GetStringValue("TimeParameters"); if (string.IsNullOrEmpty(str)) { return(true); } string[] fields = str.Split(new char[] { ',' }); if (fields.Length != 2) { return(true); } int suit = Convert.ToInt32(fields[0]); int star = Convert.ToInt32(fields[1]); return(client.ClientData.MyWingData.WingID > suit || (client.ClientData.MyWingData.WingID == suit && client.ClientData.MyWingData.ForgeLevel >= star)); } else if (trigger == 15) { if (client.ClientData.ChengJiuLevel < xmlItem.GetIntValue("TimeParameters", -1)) { return(false); } } else if (trigger == 16) { int junxian = GameManager.ClientMgr.GetShengWangLevelValue(client); if (junxian < xmlItem.GetIntValue("TimeParameters", -1)) { return(false); } } else if (trigger == 17) { if (TimeUtil.GetOffsetDays(Global.GetKaiFuTime()) < xmlItem.GetIntValue("TimeParameters", -1)) { return(false); } } else if (trigger == 18) { if ((ulong)client.ClientData.TotalDayLoginNum < (ulong)((long)xmlItem.GetIntValue("TimeParameters", -1))) { return(false); } } else if (trigger == 20) { int bangHuiLevel = Global.GetBangHuiLevel(client); if (bangHuiLevel < xmlItem.GetIntValue("TimeParameters", -1)) { return(false); } } else if (trigger == 21) { if (client.ClientData.RebornLevel < xmlItem.GetIntValue("TimeParameters", -1)) { return(false); } } } result = true; } return(result); }