OnUserRespawned
OxideCarbonPlayerCalled when an user is respawned.
void OnUserRespawned(Oxide.Core.Libraries.Covalence.IPlayer player)Метод изменился — проверить — код метода игры отличается от того, под который записан хук в Oxide. Хук всё равно вызывается, но место вызова могло сместиться — стоит проверить после обновления.
Параметры
- player
- Oxide.Core.Libraries.Covalence.IPlayer
Возвращаемое значение
voidВозвращаемое значение игнорируется — хук только уведомляет.
Пример
private void OnUserRespawned(Oxide.Core.Libraries.Covalence.IPlayer player)
{
Puts("OnUserRespawned");
}Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.
Где вызывается
ядро Oxide (Oxide.Rust)
RustCore::OnPlayerRespawned(BasePlayer basePlayer)
Код ядра Oxide — отсюда вызывается хук
private void OnPlayerRespawned(BasePlayer basePlayer)
{
IPlayer player = basePlayer.IPlayer;
if (player != null)
{
Interface.CallHook("OnUserRespawned", player);
}
}Место встраивания
Rust.opj (Oxide)
void BasePlayer.RespawnAt(Vector3, Quaternion, BaseEntity)
Встроен служебный хук OnPlayerRespawned — этот хук вызывает его обработчик в ядре Oxide/Carbon
Метод изменился — проверитьReturnBehavior: ContinueArgumentBehavior: JustThisAssembly-CSharp.dll
Где вызывается (код игры этой ветки)
// …
}
Analytics.Azure.OnPlayerRespawned(this, spawnPointEntity);
if ((bool)activeGameMode)
{
BaseGameMode.GetActiveGameMode(serverside: true).OnPlayerRespawn(this);
}
if (IsConnected)
{
Interface.CallHook("OnPlayerRespawned", this);
EACServer.OnStartLoading(net.connection);
}
ProcessMissionEvent(BaseMission.MissionEventType.RESPAWN, 0, 0f);
PlayerInjureState = GetInjureState();
}Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.