RustTip

CanVendingAcceptItem

OxideCarbonVending

Called to determine whether to vending accept item.

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

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

Параметры

vendingMachine
VendingMachine
item
Item
targetSlot
int
player
BasePlayer

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

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

Пример

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

private object CanVendingAcceptItem(VendingMachine vendingMachine, Item item, int targetSlot, BasePlayer player)
{
    Puts("CanVendingAcceptItem");

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

    // повлиять на игру:
    // return false; // своё значение вместо результата игры
}

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

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

Rust.opj (Oxide)
bool VendingMachine.CanAcceptItem(BasePlayer, Item, int)

Передаёт: VendingMachine vendingMachine, Item item, int targetSlot, BasePlayer player

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

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

public bool CanAcceptItem(BasePlayer player, Item item, int targetSlot)
{
	object returnvar = Interface.CallHook("CanVendingAcceptItem", this, item, targetSlot, player);
	if (returnvar is bool)
	{
		return (bool)returnvar;
	}
	BasePlayer basePlayer = item.GetRootContainer()?.GetOwnerPlayer();
	if (transactionActive || industrialItemIncoming)
	{
		return true;
// …

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