RustTip

OnUserUnbanned

OxideCarbonPlayer

Called when an user is unbanned.

void OnUserUnbanned(string playerName, string playerId, string address)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

playerName
string
playerId
string
address
string

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

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

Пример

private void OnUserUnbanned(string playerName, string playerId, string address)
{
    Puts("OnUserUnbanned");
}

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

Где вызывается

ядро Oxide (Oxide.Rust)
RustCore::OnServerUserRemove(ulong steamId)

Код ядра Oxide — отсюда вызывается хук

private void OnServerUserRemove(ulong steamId)
{
    if (serverInitialized && ServerUsers.users.ContainsKey(steamId) && ServerUsers.users[steamId].group == ServerUsers.UserGroup.Banned)
    {
        string playerId = steamId.ToString();
        IPlayer player = Covalence.PlayerManager.FindPlayerById(playerId);
        Interface.CallHook("OnPlayerUnbanned", player?.Name ?? "Unnamed", steamId, player?.Address ?? "0");
        Interface.CallHook("OnUserUnbanned", player?.Name ?? "Unnamed", playerId, player?.Address ?? "0");
    }
}

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

Rust.opj (Oxide)
void ServerUsers.Remove(ulong)

Встроен служебный хук OnServerUserRemove — этот хук вызывает его обработчик в ядре Oxide/Carbon

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

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

public static void Remove(ulong uid)
{
	Interface.CallHook("OnServerUserRemove", uid);
	users.Remove(uid);
}

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