RustTip

CanAcceptItem

OxideCarbonItem

Called to determine whether to accept item.

Return true to allow the action and false to block it.

object CanAcceptItem(ItemContainer itemContainer, Item item, int targetPos, BasePlayer player)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

itemContainer
ItemContainer
item
Item
targetPos
int
player
BasePlayer

Возвращаемое значение

objectВозвращённое значение заменяет результат игры; null — игра решает сама.

Пример

object — можно повлиять на игру: вернуть значение, чтобы изменить или отменить действие.

private object CanAcceptItem(ItemContainer itemContainer, Item item, int targetPos, BasePlayer player)
{
    Puts("CanAcceptItem");

    // ничего не меняем — игра продолжит как обычно
    return null;

    // повлиять на игру:
    // return default(ItemContainer.CanAcceptResult); // своё значение вместо результата игры
}

Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.

Место встраивания

Rust.opj (Oxide)
ItemContainer.CanAcceptResult ItemContainer.CanAcceptItem(BasePlayer, Item, int)

Передаёт: ItemContainer itemContainer, Item item, int targetPos, BasePlayer player

РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (this, a1, a2, a0)Assembly-CSharp.dll

Где вызывается (код игры этой ветки)

// …
			break;
		}
	}
	if (!flag)
	{
		return CanAcceptResult.CannotAccept;
	}
}
object returnvar = Interface.CallHook("CanAcceptItem", this, item, targetPos, player);
if (returnvar is ItemContainer.CanAcceptResult)
{
	return (ItemContainer.CanAcceptResult)returnvar;
}
if (blockedItems != null && blockedItems.Contains(item.info))
{
	return CanAcceptResult.CannotAccept;
}
// …

Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.