RustTip

OnAddVendingOffer

OxideCarbonVending

Called when add vending offer occurs.

void OnAddVendingOffer(VendingMachine vendingMachine, ProtoBuf.VendingMachine.SellOrder local2)
Works — the game method in this build is the one the hook was written for.

Parameters

vendingMachine
VendingMachine
local2
ProtoBuf.VendingMachine.SellOrder

Return value

voidThe return value is ignored — the hook only notifies.

Example

private void OnAddVendingOffer(VendingMachine vendingMachine, ProtoBuf.VendingMachine.SellOrder local2)
{
    Puts("OnAddVendingOffer");
}

Works in both Oxide and Carbon: Carbon loads Oxide plugins as is.

Injection point

Rust.opj (Oxide)
void VendingMachine.AddSellOrder(int, int, int, int, byte, ulong, ulong)

Passes: VendingMachine vendingMachine, ProtoBuf.VendingMachine.SellOrder local2

WorksReturnBehavior: ContinueArgumentBehavior: UseArgumentString (this, l2)Assembly-CSharp.dll

Where it is called (this branch's game code)

// …
		sellOrder.itemToSellID = itemToSellID;
		sellOrder.itemToSellAmount = itemToSellAmount;
		sellOrder.currencyID = currencyToUseID;
		sellOrder.currencyAmountPerItem = currencyAmount;
		sellOrder.currencyIsBP = bpState == 3 || bpState == 2;
		sellOrder.itemToSellIsBP = bpState == 3 || bpState == 1;
		sellOrder.sellSkinId = sellSkinId;
		sellOrder.costSkinId = costSkinId;
		Interface.CallHook("OnAddVendingOffer", this, sellOrder);
		sellOrders.sellOrders.Add(sellOrder);
		ClearPendingOrder();
		RefreshSellOrderStockLevel(itemDefinition);
		UpdateMapMarker();
		SendNetworkUpdate();
	}
}

Sources: Rust.opj from OxideMod/Oxide.Rust (MIT) and hook metadata of the Carbon documentation (MIT). Method code is decompiled from this branch's server.