• Добрый день, если вы испытываете проблемы с пополнением баланса, свяжитесь с @MrFallen.

Помогите Пишу плагин на замену ресурсов при добычи

prizma

19 Мар 2023
11
0
0
например: игрок добывает серу ему в инвентарь идёт метал а не сера
написал данный код:
void OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item)
{
//BasePlayer player = entity.ToPlayer();
if (item.info.shortname == "sulfur.ore")
{
Item metalItem = ItemManager.CreateByItemID(ItemManager.FindItemDefinition("metal.ore").itemid, item.amount);
item.RemoveFromContainer();
entity.GiveItem(metalItem);
}
}
но не могу понять почему предмет sulfur.ore не удаляется вот строка где должно быть удаление item.RemoveFromContainer();
 
Возможно, проблема заключается в том, что переменная "item" является аргументом метода OnDispenserGather и изменение ее значения не повлияет на исходную сущность, содержащую данный предмет. Для решения этой проблемы можно использовать метод "entity.TakeItem(item)" вместо "item.RemoveFromContainer()", чтобы удалить предмет из контейнера, в котором он находится.

Исправленный код будет выглядеть так:

void OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item)
{
if (item.info.shortname == "sulfur.ore")
{
Item metalItem = ItemManager.CreateByItemID(ItemManager.FindItemDefinition("metal.ore").itemid, item.amount);
entity.TakeItem(item);
entity.GiveItem(metalItem);
}
}
 
Активность
Пока никто не печатает сообщение