RustTip

OnEntityDeath

OxideEntity
void OnEntityDeath(ResourceEntity resourceEntity, HitInfo info)
void OnEntityDeath(BaseCombatEntity baseCombatEntity, HitInfo info)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

resourceEntity
ResourceEntity
info
HitInfo

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

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

Пример

private void OnEntityDeath(ResourceEntity resourceEntity, HitInfo info)
{
    Puts("OnEntityDeath");
}

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

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

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

Передаёт: ResourceEntity resourceEntity, HitInfo info

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

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

public virtual void OnDied(HitInfo info)
{
	isKilled = true;
	Interface.CallHook("OnEntityDeath", this, info);
	Kill();
}

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

Rust.opj (Oxide)
void BaseCombatEntity.Die(HitInfo)

Передаёт: BaseCombatEntity baseCombatEntity, HitInfo info

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

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

// …
{
	if (IsDead())
	{
		return;
	}
	LogEntry(RustLog.EntryType.Combat, 2, "died");
	health = 0f;
	lifestate = LifeState.Dead;
	Interface.CallHook("OnEntityDeath", this, info);
	if (info != null && info.InitiatorPlayer != null && !info.InitiatorPlayer.IsNpc && info.InitiatorPlayer != this)
	{
		BaseMission.MissionEventPayload payload = new BaseMission.MissionEventPayload
		{
			NetworkIdentifier = info.InitiatorPlayer.net.ID,
			UintIdentifier = prefabID,
			IntIdentifier = 1,
			WorldPosition = transform.position
// …

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