RustTip

OnTrapTrigger

OxideTraps
object OnTrapTrigger(BearTrap bearTrap, GameObject obj)
object OnTrapTrigger(Landmine landmine, GameObject obj)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

bearTrap
BearTrap
obj
GameObject

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

objectЕсли вернуть значение типа результата метода, игра сразу вернёт его; null — продолжит как обычно.

Пример

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

private object OnTrapTrigger(BearTrap bearTrap, GameObject obj)
{
    Puts("OnTrapTrigger");

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

    // повлиять на игру:
    // return null; // null — игра продолжит как обычно
}

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

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

Rust.opj (Oxide)
void BearTrap.ObjectEntered(GameObject)

Передаёт: BearTrap bearTrap, GameObject obj

РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: AllAssembly-CSharp.dll

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

public override void ObjectEntered(GameObject obj)
{
	if (Armed())
	{
		if (Interface.CallHook("OnTrapTrigger", this, obj) != null)
		{
			return;
		}
		hurtTarget = obj;
		Invoke(DelayedFire, 0.05f);
	}
}

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

Rust.opj (Oxide)
void Landmine.ObjectEntered(GameObject)

Передаёт: Landmine landmine, GameObject obj

РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: AllAssembly-CSharp.dll

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

// …
	{
		if (!Armed())
		{
			CancelInvoke(Arm);
			blocked = true;
		}
		else
		{
			if (Interface.CallHook("OnTrapTrigger", this, obj) != null)
			{
				return;
			}
			BasePlayer ply = obj.ToBaseEntity() as BasePlayer;
			Trigger(ply);
		}
	}
}

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