НЕ РЕШЕНО Как получить Container

Хостинг игровых серверов

ХУЙ228

Распиздяй
Прохожий
17 Дек 2017
707
196
@ZiPPY, у большинства объектов это "inventory"

Т.е. для ResearchTable это будет
Код:
ResearchTable.inventory.GetSlot(0)
Контейнер с исследуемым объектом.

Код:
ResearchTable.inventory.GetSlot(1)
Контейнер с металлоломом.

--

P.S. Учти ResearchTable не статический класс. Вставив код выше в свой код у тебя ничего не заработает. Что бы получить контейнер тебе нужно его использовать например в методе "OnItemResearched"
Код:
    public object OnItemResearched(ResearchTable researchtable, int scrapforresearch)
    {
        Item item = researchtable.inventory.GetSlot(0);
      
        return scrapforresearch;
    }

Где переменная item уже будет нести в себе объект Item из корого можно узнать что там лежит :)
 
Последнее редактирование:
  • Like
Реакции: ZiPPY

ZiPPY

Прохожий
16 Янв 2018
220
26
https://vk.com/spacejam_rust
vk.com
@ZiPPY, у большинства объектов это "inventory"

Т.е. для ResearchTable это будет
Код:
ResearchTable.inventory.GetSlot(0)
Контейнер с исследуемым объектом.

Код:
ResearchTable.inventory.GetSlot(1)
Контейнер с металлоломом.

--

P.S. Учти ResearchTable не статический класс. Вставив код выше в свой код у тебя ничего не заработает. Что бы получить контейнер тебе нужно его использовать например в методе "OnItemResearched"
Код:
    public object OnItemResearched(ResearchTable researchtable, int scrapforresearch)
    {
        Item item = researchtable.inventory.GetSlot(0);
     
        return scrapforresearch;
    }

Где переменная item уже будет нести в себе объект Item из корого можно узнать что там лежит :)
тоесть OnItemAddToContainer не будет работать?
 

ХУЙ228

Распиздяй
Прохожий
17 Дек 2017
707
196
@ZiPPY, подозреваю идет все таки речь о методе OnItemAddedToContainer.

Код:
void OnItemAddedToContainer(ItemContainer container, Item item)
{
    for (int i = 0; i < this.itemList.Count; i++)
    {
        Item item = this.itemList[i];
        // Что-то делаем с Item
    }
}

У ItemContainer есть List с Item`s это itemList.

Ты скажи что нужно тебе, я постараюсь помочь это сделать :)
 

ZiPPY

Прохожий
16 Янв 2018
220
26
https://vk.com/spacejam_rust
vk.com
@ZiPPY, подозреваю идет все таки речь о методе OnItemAddedToContainer.

Код:
void OnItemAddedToContainer(ItemContainer container, Item item)
{
    for (int i = 0; i < this.itemList.Count; i++)
    {
        Item item = this.itemList[i];
        // Что-то делаем с Item
    }
}

У ItemContainer есть List с Item`s это itemList.

Ты скажи что нужно тебе, я постараюсь помочь это сделать :)
в общем, кладешь предмет в стол изучения - он удаляется, вот.
 

ХУЙ228

Распиздяй
Прохожий
17 Дек 2017
707
196
@ZiPPY, https://oxidemod.org/threads/getting-container-type.29017/#post-379301

Плагин не дает возможности положить Item который указан в List`е itemBlacklist в стол изучения.

Код:
using System.Collections.Generic;
using System;

namespace Oxide.Plugins
{
    [Info("BlockItemResearch", "Sorrow", 0.1)]
    [Description("Block Item Research")]

    class BlockItemResearch : RustPlugin
    {
        private List<string> itemBlacklist = new List<String>
        {
            "rifle.ak",
            "rifle.bolt"
        };

        private object CanMoveItem(Item item, PlayerInventory playerLoot, uint targetContainerId, int targetSlot)
        {
            // Find the container object the player is attempting to move an item to.
            ItemContainer targetContainer = playerLoot.FindContainer(targetContainerId);
            // Try to cast the entity owner of the container to ResearchTable. This will return a ResearchTable object if the owner is indeed a research table, otherwise this will be null.
            ResearchTable researchTable = (ResearchTable)targetContainer.entityOwner;

            if (researchTable == null)
            {
                // Target isn't a research table so we don't want to do anything here
                return null;
            }

            // The item is being put in a research table. Check if we allow this item to be researched!
            string itemShortname = item.info.shortname;
            if (itemBlacklist.Contains(itemShortname))
            {
                // The item is blacklisted, don't allow it to be put in the container!
                return false;
            }

            // This is another item so we can let the game decide what needs to happen.
            return null;
        }
    }
}
 

ZiPPY

Прохожий
16 Янв 2018
220
26
https://vk.com/spacejam_rust
vk.com
@ZiPPY, https://oxidemod.org/threads/getting-container-type.29017/#post-379301

Плагин не дает возможности положить Item который указан в List`е itemBlacklist в стол изучения.

Код:
using System.Collections.Generic;
using System;

namespace Oxide.Plugins
{
    [Info("BlockItemResearch", "Sorrow", 0.1)]
    [Description("Block Item Research")]

    class BlockItemResearch : RustPlugin
    {
        private List<string> itemBlacklist = new List<String>
        {
            "rifle.ak",
            "rifle.bolt"
        };

        private object CanMoveItem(Item item, PlayerInventory playerLoot, uint targetContainerId, int targetSlot)
        {
            // Find the container object the player is attempting to move an item to.
            ItemContainer targetContainer = playerLoot.FindContainer(targetContainerId);
            // Try to cast the entity owner of the container to ResearchTable. This will return a ResearchTable object if the owner is indeed a research table, otherwise this will be null.
            ResearchTable researchTable = (ResearchTable)targetContainer.entityOwner;

            if (researchTable == null)
            {
                // Target isn't a research table so we don't want to do anything here
                return null;
            }

            // The item is being put in a research table. Check if we allow this item to be researched!
            string itemShortname = item.info.shortname;
            if (itemBlacklist.Contains(itemShortname))
            {
                // The item is blacklisted, don't allow it to be put in the container!
                return false;
            }

            // This is another item so we can let the game decide what needs to happen.
            return null;
        }
    }
}
Мне не запретить нужно, а просто чтобы все предметы нормально изучались, а скин айди которого я укажу пропадал