RustTip

OnVendingShopOpened

OxideVending
void OnVendingShopOpened(VendingMachine vendingMachine, BasePlayer player)
void OnVendingShopOpened(InvisibleVendingMachine invisibleVendingMachine, BasePlayer player)
void OnVendingShopOpened(NPCVendingMachine vendingMachine, BasePlayer player)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

vendingMachine
VendingMachine
player
BasePlayer

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

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

Пример

private void OnVendingShopOpened(VendingMachine vendingMachine, BasePlayer player)
{
    Puts("OnVendingShopOpened");
}

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

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

Rust.opj (Oxide)
void VendingMachine.RPC_OpenShop(BaseEntity.RPCMessage)

Передаёт: VendingMachine vendingMachine, BasePlayer player

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

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

Rust.opj (Oxide)
void NPCTalking.OnConversationAction(BasePlayer, string)

Передаёт: InvisibleVendingMachine invisibleVendingMachine, BasePlayer player

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

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

// …
	{
		ForceEndConversation(player);
		vendingMachine.PlayerOpenLoot(player, "vendingmachine.customer", doPositionChecks: false);
		return;
	}
}
ItemDefinition itemDefinition = ItemManager.FindItemDefinition("scrap");
NPCConversationResultAction[] array = conversationResultActions;
Interface.CallHook("OnVendingShopOpened", vendingMachine, player);
foreach (NPCConversationResultAction nPCConversationResultAction in array)
{
	if (!(nPCConversationResultAction.action == action))
	{
		continue;
	}
	CleanupConversingPlayers();
	foreach (BasePlayer conversingPlayer in conversingPlayers)
// …

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

Rust.opj (Oxide)
void TravellingVendor.SV_OpenMenu(BaseEntity.RPCMessage)

Передаёт: NPCVendingMachine vendingMachine, BasePlayer player

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

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