コード例 #1
0
        //可以增加或者删除物品(count是负数的时候),添加物品的时候可以在数量后面加"xxAttr1:4,xxAttr2:5"添加该物品的附加属性
        public bool DealItems(Dictionary <string, string> itemDict, DoerAttrParser doerAttrParser = null)
        {
            doerAttrParser = doerAttrParser ?? new DoerAttrParser(this);
            foreach (var itemId in itemDict.Keys)
            {
                string    value       = itemDict[itemId];
                Hashtable addAttrDict = new Hashtable();                 //带属性
                int       pos         = value.IndexOf("(");
                if (pos != -1)
                {
                    string attrString = value.Substring(pos + 1, value.Length - pos - 2);                     //最后一个)也要删除
                    value = value.Substring(0, pos);

                    addAttrDict = attrString.ToDictionary <string, string>().ToHashtable();
                }

                int count = doerAttrParser.ParseInt(value);
                if (count < 0)                 //remove Items
                {
                    count = Math.Abs(count);
                    Item[] items = this.RemoveItems(itemId, count);
                    for (var i = 0; i < items.Length; i++)
                    {
                        var item = items[i];
                        item.Destruct();
                    }
                }
                else                 //add Items
                {
                    Item item = Client.instance.itemFactory.NewDoer(itemId) as Item;
                    for (int i = 0; i < count; i++)
                    {
                        if (!addAttrDict.IsNullOrEmpty())
                        {
                            var list = new ArrayList(addAttrDict.Keys);
                            for (var j = 0; j < list.Count; j++)
                            {
                                var attrName = (string)list[j];
                                addAttrDict[attrName] = doerAttrParser.Parse(addAttrDict[attrName] as string);
                            }

                            item.AddAll(addAttrDict);
                        }

                        bool isCanFold = item.CanFold();
                        if (isCanFold)
                        {
                            item.SetCount(count);
                            this.AddItem(item);
                            break;
                        }

                        this.AddItem(item);
                    }
                }
            }

            return(true);
        }
コード例 #2
0
ファイル: Mission.cs プロジェクト: uiopsczc/Test
        public Dictionary <string, int> GetRewards(DoerAttrParser doerAttrParser)
        {
            Dictionary <string, int> result = new Dictionary <string, int>();

            Dictionary <string, string> rewardDict = GetCfgMissionData()._reward_dict;

            if (!rewardDict.IsNullOrEmpty())
            {
                foreach (string itemId in rewardDict.Keys)
                {
                    string curItemId   = doerAttrParser.ParseString(itemId);
                    string countString = rewardDict[itemId];
                    int    count       = doerAttrParser.ParseInt(countString);
                    result[curItemId] = count;
                }
            }

            return(result);
        }
コード例 #3
0
ファイル: FindItemMission.cs プロジェクト: uiopsczc/Test
        public override bool OnAccept(User user)
        {
            if (!base.OnAccept(user))
            {
                return(false);
            }
            DoerAttrParser doerAttrParser               = new DoerAttrParser(Client.instance.user, this, this.GetOwner(), null);
            Dictionary <string, string> findItemDict    = GetCfgMissionData()._find_item_dict;
            Dictionary <string, int>    curFindItemDict = new Dictionary <string, int>();

            foreach (var itemId in findItemDict.Keys)
            {
                string itemCountString = findItemDict[itemId];
                int    itemCount       = doerAttrParser.ParseInt(itemCountString, 0);
                curFindItemDict[itemId] = itemCount;
            }

            this.Set("find_item_dict", curFindItemDict);
            return(true);
        }