Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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));
             }
         }
     }
 }
Пример #4
0
        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);
        }