RustTip

CanChangeGrade

OxideCarbonStructure

Called to determine whether to change grade.

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

object CanChangeGrade(BasePlayer player, BuildingBlock buildingBlock, BuildingGrade.Enum iGrade, ulong iSkin)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

player
BasePlayer
buildingBlock
BuildingBlock
iGrade
BuildingGrade.Enum
iSkin
ulong

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

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

Пример

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

private object CanChangeGrade(BasePlayer player, BuildingBlock buildingBlock, BuildingGrade.Enum iGrade, ulong iSkin)
{
    Puts("CanChangeGrade");

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

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

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

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

Rust.opj (Oxide)
bool BuildingBlock.CanChangeToGrade(BuildingGrade.Enum, ulong, BasePlayer)

Передаёт: BasePlayer player, BuildingBlock buildingBlock, BuildingGrade.Enum iGrade, ulong iSkin

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

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

private bool CanChangeToGrade(BuildingGrade.Enum iGrade, ulong iSkin, BasePlayer player)
{
	object returnvar = Interface.CallHook("CanChangeGrade", player, this, iGrade, iSkin);
	if (returnvar is bool)
	{
		return (bool)returnvar;
	}
	if (player.IsInCreativeMode && Creative.freeBuild)
	{
		return true;
	}
// …

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