OnPlayerConnected
OxideCarbonPlayerCalled when a remote RCON command is received.
Provides access to the raw RCON message so you can log or modify behavior.
void OnPlayerConnected(BasePlayer player)Метод изменился — проверить — код метода игры отличается от того, под который записан хук в Oxide. Хук всё равно вызывается, но место вызова могло сместиться — стоит проверить после обновления.
Параметры
- player
- BasePlayer
Возвращаемое значение
voidВозвращаемое значение игнорируется — хук только уведомляет.
Пример
private void OnPlayerConnected(BasePlayer player)
{
Puts("OnPlayerConnected");
}Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.
Где вызывается
ядро Oxide (Oxide.Rust)
RustCore::IOnPlayerConnected(BasePlayer basePlayer)
Код ядра Oxide — отсюда вызывается хук
// …
Covalence.PlayerManager.PlayerConnected(basePlayer);
IPlayer player = Covalence.PlayerManager.FindPlayerById(basePlayer.UserIDString);
if (player != null)
{
basePlayer.IPlayer = player;
Interface.CallHook("OnUserConnected", player);
}
Interface.Oxide.CallHook("OnPlayerConnected", basePlayer);
}Место встраивания
Rust.opj (Oxide)
void BasePlayer.PlayerInit(Network.Connection)
Встроен служебный хук IOnPlayerConnected — этот хук вызывает его обработчик в ядре Oxide/Carbon
Метод изменился — проверитьReturnBehavior: ContinueArgumentBehavior: JustThisAssembly-CSharp.dll
Где вызывается (код игры этой ветки)
// …
if ((bool)BaseGameMode.GetActiveGameMode(serverside: true))
{
BaseGameMode.GetActiveGameMode(serverside: true).OnPlayerConnected(this);
}
if (net != null)
{
EACServer.OnStartLoading(net.connection);
}
Interface.CallHook("IOnPlayerConnected", this);
if (IsAdmin)
{
if (ConVar.AntiHack.noclip_protection <= 0)
{
ChatMessage("antihack.noclip_protection is disabled!");
}
if (ConVar.AntiHack.speedhack_protection <= 0)
{
// …Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.