예제 #1
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;

            if (items != null)
            {
                foreach (FreeItem fi in items)
                {
                    if (!FreeItemManager.ContainsItem(args.Rule.FreeType, FreeUtil.ReplaceVar(fi.GetKey(), args)))
                    {
                        FreeGameItem gi = (FreeGameItem)fi.Clone();
                        gi.SetItemStack(FreeUtil.ReplaceVar(gi.GetItemStackVar(), args));
                        gi.SetKey(FreeUtil.ReplaceVar(gi.GetKey(), args));
                        gi.SetImg(FreeUtil.ReplaceVar(gi.GetImg(), args));
                        gi.SetName(FreeUtil.ReplaceVar(gi.GetName(), args));
                        gi.SetDesc(FreeUtil.ReplaceVar(gi.GetDesc(), args));
                        gi.SetCat(FreeUtil.ReplaceVar(gi.GetCat(), args));
                        gi.SetIconSize(FreeUtil.ReplaceVar(gi.GetIconSize(), args));
                        gi.SetWidth(FreeUtil.ReplaceNumber(gi.GetWidth(), args));
                        gi.SetHeight(FreeUtil.ReplaceNumber(gi.GetHeight(), args));
                        gi.Created(fr);
                        FreeItemManager.AddItem(args, args.Rule.FreeType, gi);
                    }
                }
            }
        }
예제 #2
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;

            if (StringUtil.IsNullOrEmpty(count) || count.Equals("0"))
            {
                count = INI_COUNT;
            }
            int      c    = FreeUtil.ReplaceInt(count, args);
            FreeItem item = FreeItemManager.GetItem(fr, FreeUtil.ReplaceVar(key, args), c);

            if (item != null)
            {
                if (!StringUtil.IsNullOrEmpty(time))
                {
                    ((FreeGameItem)item).SetTime(time);
                }
                item.Drop(fr, pos.Select(args));
                if (action != null)
                {
                    args.TempUse(ParaConstant.PARA_ITEM, item);
                    action.Act(args);
                    args.Resume(ParaConstant.PARA_ITEM);
                }
            }
        }
예제 #3
0
 // 如果快捷键里面的物品被清除,则为了效率保留技能,不做任何动作
 public override void DoAction(IEventArgs args)
 {
     if (this.ip != null && this.ip.GetInventory() != null)
     {
         if (this.ip.GetCount() > 0 && this.ip.GetInventory().GetName().Equals(this.inventory))
         {
             FreeItemManager.UseItem(this.ip, this.fd, (FreeRuleEventArgs)args);
         }
     }
 }
        public override void DoAction(IEventArgs args)
        {
            if (addtimePara == null)
            {
                addtimePara = new IntPara(ParaConstant.PARA_ITEM_ADD_TIME, 0);
            }
            FreeRuleEventArgs fr = (FreeRuleEventArgs)args;

            if (StringUtil.IsNullOrEmpty(count))
            {
                count = INI_COUNT;
            }
            FreeItem fi = FreeItemManager.GetItem(fr, FreeUtil.ReplaceVar(key, args), FreeUtil.ReplaceInt(count, args));

            if (StringUtil.IsNullOrEmpty(name))
            {
                name = InventoryManager.DEFAULT;
            }
            IGameUnit player = GetPlayer(args);

            if (player != null)
            {
                FreeData fd = (FreeData)player;
                args.TempUse(ParaConstant.PARA_PLAYER_CURRENT, fd);
                args.TempUse(ParaConstant.PARA_ITEM, fi);

                args.TempUsePara(new StringPara("from", ChickenConstant.BagGround));

                if (action != null)
                {
                    action.Act(args);
                }

                if (fd.freeInventory.GetInventoryManager().GetInventory(FreeUtil.ReplaceVar(name, args)).AddItem((ISkillArgs)args, fi, true))
                {
                    //addtimePara.setValue(fr.room.getServerTime());
                    fi.GetParameters().AddPara(addtimePara);
                }
                else
                {
                    if (failAction != null)
                    {
                        fr.TempUse(ParaConstant.PARA_ITEM, fi);
                        failAction.Act(args);
                        fr.Resume(ParaConstant.PARA_ITEM);
                    }
                }

                fr.ResumePara("from");
                fr.Resume(ParaConstant.PARA_PLAYER_CURRENT);
                fr.Resume(ParaConstant.PARA_ITEM);
            }
        }
예제 #5
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr     = (FreeRuleEventArgs)args;
            IGameUnit         player = GetPlayer(args);

            if (StringUtil.IsNullOrEmpty(item))
            {
                item = "item";
            }
            if (player != null)
            {
                FreeData fd = (FreeData)player;
                FreeItem fi = (FreeItem)fr.GetUnit(FreeUtil.ReplaceVar(item, args));
                FreeItemManager.UseItem(fd.GetFreeInventory().GetItemPosition(fi), fd, fr);
            }
        }