コード例 #1
0
ファイル: SmallAnimalTrap.cs プロジェクト: Ekkelus/REY-Mod
        private void InventoryChanged(User obj)
        {
            Inventory inventory = GetComponent <PublicStorageComponent>().Storage;
            User      owner     = OwnerUser;
            User      creator   = Creator;

            if (owner == null && creator == null)
            {
                return;
            }
            if (owner == null)
            {
                owner = creator;
            }
            if (creator == null)
            {
                creator = owner;
            }


            if (!SkillUtils.UserHasSkill(owner, RequiredSkill, RequiredLevel) && (!SkillUtils.UserHasSkill(creator, RequiredSkill, RequiredLevel)))
            {
                if ((inventory.TotalNumberOfItems(typeof(RuinedCarcassItem)) == 0) && (!inventory.IsEmpty))
                {
                    InventoryChangeSet changes = new InventoryChangeSet(inventory);
                    changes.Clear();
                    changes.AddItem <RuinedCarcassItem>();
                    Result result = changes.TryApply();
                }
            }
        }
コード例 #2
0
ファイル: Note.cs プロジェクト: Ekkelus/REY-Mod
        //[Serialized] private string description = "An Empty note. You can copy text from a sign to it or use /writenote to add text.";
        //[Serialized] private string name = "Empty Note";
        //[Serialized] private bool empty = true;


        public override InteractResult OnActRight(InteractionContext context)
        {
            if (context.HasTarget && context.Target is WorldObject)
            {
                WorldObject wo = context.Target as WorldObject;
                if (wo.HasComponent <CustomTextComponent>())
                {
                    NoteItem noteItem = (NoteItem)Item.Create <NoteItem>();

                    noteItem.description = wo.GetComponent <CustomTextComponent>().Text;
                    noteItem.owner       = context.Player.User;

                    InventoryChangeSet inventoryChange = new InventoryChangeSet(context.Player.User.Inventory, context.Player.User);
                    inventoryChange.RemoveItem(typeof(EmptyNoteItem));
                    inventoryChange.AddItem(noteItem);
                    if (inventoryChange.TryApply().Success)
                    {
                        return(InteractResult.Success);
                    }
                    else
                    {
                        return(InteractResult.Failure("Not enough room in inventory".ToLocString()));//ChatManager.ServerMessageToPlayer("Not enough room in inventory",context.Player.User);
                    }
                }
            }


            return(base.OnActRight(context));
        }
コード例 #3
0
ファイル: MailChatCommands.cs プロジェクト: Ekkelus/REY-Mod
        public static void WriteText(User user, string text)
        {
            //string onestringtext = string.Concat(text);

            NoteItem noteItem = (NoteItem)Item.Create <NoteItem>();

            noteItem.description = text;
            noteItem.owner       = user;

            InventoryChangeSet inventoryChange = new InventoryChangeSet(user.Inventory, user);

            inventoryChange.AddItem(noteItem);
            inventoryChange.RemoveItem(typeof(EmptyNoteItem));
            if (inventoryChange.TryApply().Success)
            {
                return;
            }
            else
            {
                ChatManager.ServerMessageToPlayer("Not enough room in inventory", user);
            }
        }