Здравствуйте, господа. Кто знает, как получить Container например Research Table. Заранее спасибо!
ResearchTable.inventory.GetSlot(0)
ResearchTable.inventory.GetSlot(1)
public object OnItemResearched(ResearchTable researchtable, int scrapforresearch)
{
Item item = researchtable.inventory.GetSlot(0);
return scrapforresearch;
}
тоесть OnItemAddToContainer не будет работать?@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 из корого можно узнать что там лежит
void OnItemAddedToContainer(ItemContainer container, Item item)
{
for (int i = 0; i < this.itemList.Count; i++)
{
Item item = this.itemList[i];
// Что-то делаем с Item
}
}
в общем, кладешь предмет в стол изучения - он удаляется, вот.@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.
Ты скажи что нужно тебе, я постараюсь помочь это сделать
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, 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; } } }