RustTip

OnRefreshVendingStock

OxideCarbonVending

Called when refresh vending stock occurs.

void OnRefreshVendingStock(VendingMachine vendingMachine, ItemDefinition itemDef)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

vendingMachine
VendingMachine
itemDef
ItemDefinition

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

voidВозвращаемое значение игнорируется — хук только уведомляет.

Пример

private void OnRefreshVendingStock(VendingMachine vendingMachine, ItemDefinition itemDef)
{
    Puts("OnRefreshVendingStock");
}

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

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

Rust.opj (Oxide)
void VendingMachine.RefreshSellOrderStockLevel(ItemDefinition)

Передаёт: VendingMachine vendingMachine, ItemDefinition itemDef

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

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

// …
List<Item> obj = Pool.Get<List<Item>>();
GetItemsToSell(sellOrder, obj);
int num2 = sellOrder.itemToSellAmount;
if (ItemManager.FindItemDefinition(sellOrder.itemToSellID) == ItemManager.Items.Scrap && sellOrder.receivedQuantityMultiplier != 1f)
{
	num2 = GetTotalPriceForOrder(num2, sellOrder.receivedQuantityMultiplier);
}
sellOrder.inStock = ((obj.Count >= 0) ? (obj.Sum((Item x) => x.amount) / num2) : 0);
Interface.CallHook("OnRefreshVendingStock", this, itemDef);
float itemCondition = 0f;
float itemConditionMax = 0f;
int instanceData = 0;
List<int> list = Pool.Get<List<int>>();
int totalAttachmentSlots = 0;
int ammoType = 0;
int ammoCount = 0;
if (obj.Count > 0)
// …

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