public static ITTriggerDb Parse(XElement xml) { ITTriggerDb rst = new ITTriggerDb(); if (xml.Attribute("name") != null) { rst.Name = Tools.GetXmlAttribute(xml, "name"); } if (xml.Attribute("minlevel") != null) { rst.MinLevel = Tools.GetXmlAttributeInt(xml, "minlevel"); } if (xml.Attribute("maxlevel") != null) { rst.MaxLevel = Tools.GetXmlAttributeInt(xml, "maxlevel"); } if (xml.Elements("trigger") != null) { foreach (var node in xml.Elements("trigger")) { rst.Triggers.Add(ITTrigger.Parse(node)); } } return(rst); }
static public ITTriggerDb GetTriggerDb(int level) { ITTriggerDb rst = new ITTriggerDb(); foreach (var t in ItemTriggerDb) { if (t.MinLevel <= level && t.MaxLevel >= level) { rst.Triggers.AddRange(t.Triggers); } } return(rst); }
static public void Init() { Items.Clear(); ItemTriggerDb.Clear(); foreach (var itemXmlFile in GameProject.GetFiles("item")) { XElement xmlRoot = Tools.LoadXml("Scripts/" + itemXmlFile); if (xmlRoot.Name == "items") { foreach (XElement node in Tools.GetXmlElements(xmlRoot, "item")) { Items.Add(Item.Parse(node)); } } else if (xmlRoot.Name == "item_triggers") { foreach (XElement node in Tools.GetXmlElements(xmlRoot, "item_trigger")) { ItemTriggerDb.Add(ITTriggerDb.Parse(node)); } } } }
public bool IsCheat(int itemLevel) { ITTriggerDb db = ItemManager.GetTriggerDb(itemLevel); bool findMatch = false; foreach (var t in db.Triggers) { if (t.Name == this.Name) { for (int i = 0; i < Argvs.Count; ++i) { string argv = Argvs[i]; ITParam p = t.Params[i]; if (p.Min != -1 && (int.Parse(argv) >= p.Min && int.Parse(argv) <= p.Max)) { findMatch = true; } else if (p.Pool != string.Empty) { bool find = false; foreach (var pp in p.PoolList) { if (pp == argv) { find = true; } } if (find) { findMatch = true; } } } } } return(!findMatch); }