RustTip

OnEntityDestroy

OxideEntity
object OnEntityDestroy(CH47HelicopterAIController cH47HelicopterAIController)
object OnEntityDestroy(BradleyAPC bradleyAPC)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

cH47HelicopterAIController
CH47HelicopterAIController

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

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

Пример

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

private object OnEntityDestroy(CH47HelicopterAIController cH47HelicopterAIController)
{
    Puts("OnEntityDestroy");

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

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

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

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

Rust.opj (Oxide)
void CH47HelicopterAIController.OnDied(HitInfo)

Передаёт: CH47HelicopterAIController cH47HelicopterAIController

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

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

public override void OnDied(HitInfo info)
{
	if (Interface.CallHook("OnEntityDestroy", this) != null)
	{
		return;
	}
	if (!OutOfCrates())
	{
		DropCrate();
	}
	base.OnDied(info);
// …

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

Rust.opj (Oxide)
void BradleyAPC.OnDied(HitInfo)

Передаёт: BradleyAPC bradleyAPC

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

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

public override void OnDied(HitInfo info)
{
	if (isClient)
	{
		return;
	}
	if (Interface.CallHook("OnEntityDestroy", this) != null)
	{
		return;
	}
	CreateExplosionMarker(10f);
	Effect.server.Run(explosionEffect.resourcePath, mainTurretEyePos.transform.position, Vector3.up, null, broadcast: true);
	Vector3 zero = Vector3.zero;
	GameObject gibSource = servergibs.Get().GetComponent<ServerGib>()._gibSource;
	List<ServerGib> list = ServerGib.CreateGibs(servergibs.resourcePath, gameObject, gibSource, zero, 3f);
// …

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