RustTip

CanPlaceOnRack

CarbonGlobal

Called to determine whether to place on rack.

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

object CanPlaceOnRack(WeaponRack rack, BasePlayer player, Item item, int gridCellIndex, int rotation)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

rack
WeaponRack
player
BasePlayer
item
Item
gridCellIndex
int
rotation
int

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

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

Пример

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

private object CanPlaceOnRack(WeaponRack rack, BasePlayer player, Item item, int gridCellIndex, int rotation)
{
    Puts("CanPlaceOnRack");

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

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

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

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

Carbon
bool WeaponRack.MountWeapon(Item item, BasePlayer player, int gridCellIndex, int rotation, bool sendUpdate)
РаботаетAssembly-CSharp

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

private bool MountWeapon(Item item, BasePlayer player, int gridCellIndex, int rotation, bool sendUpdate = true)
{
	if (Interface.CallHook("CanPlaceOnRack", this, player, item, gridCellIndex, rotation) is bool result)
	{
		return result;
	}
	if (item == null)
	{
		return false;
	}
	if (player == null)
// …

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