/// <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); }
public bool Judge(GameClient client, string arg, out string failedMsg) { failedMsg = ""; bool bOK = true; GongNengIDs gongnengId = (GongNengIDs)Convert.ToInt32(arg); if (!GlobalNew.IsGongNengOpened(client, gongnengId, false)) { bOK = false; } if (!bOK) { failedMsg = string.Format("物品对应的功能没有开启", new object[0]); } return(bOK); }
/// <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 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); }