RustTip

OnRconCommand

OxideCarbonGlobal

Called when an RCON command is received from a remote client.

Provides access to the raw RCON message so you can log or modify behavior.

object OnRconCommand(System.Net.IPAddress ip, string command, string[] arguments)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

ip
System.Net.IPAddress
command
string
arguments
string[]

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

objectВерните не null, чтобы отменить действие игры.

Пример

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

private object OnRconCommand(System.Net.IPAddress ip, string command, string[] arguments)
{
    Puts("OnRconCommand");

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

    // повлиять на игру:
    // return false; // не null — действие игры отменяется
}

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

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

ядро Oxide (Oxide.Rust)
RustCore::IOnRconMessage(IPAddress ipAddress, string command)

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

// …

        string[] fullCommand = CommandLine.Split(message.Message);

        if (fullCommand.Length >= 1)
        {
            string cmd = fullCommand[0].ToLower();
            string[] args = fullCommand.Skip(1).ToArray();

            if (Interface.CallHook("OnRconCommand", ipAddress, cmd, args) != null)
            {
                return true;
            }
        }
    }

    return null;
}

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

Carbon
void Facepunch.RCon.OnCommand(Facepunch.RCon.Command cmd)
РаботаетAssembly-CSharp

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

private static void OnCommand(Command cmd)
{
	try
	{
		if (Interface.CallHook("OnRconCommand", ip, command, arguments) != null)
		{
			return;
		}
		responseIdentifier = cmd.Identifier;
		responseConnection = cmd.ConnectionId;
		isInput = true;
		if (Print)
		{
// …

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