RustTip

OnPlayerSetInfo

OxideCarbonPlayer

Called when player set info occurs.

void OnPlayerSetInfo(Network.Connection connection, string key, string val)
void OnPlayerSetInfo(object connection, string key, string val)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

connection
Network.Connection
key
string
val
string

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

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

Пример

private void OnPlayerSetInfo(Network.Connection connection, string key, string val)
{
    Puts("OnPlayerSetInfo");
}

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

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

Rust.opj (Oxide)
void ServerMgr.ClientReady(Network.Message)

Передаёт: Network.Connection connection, string key, string val

РаботаетReturnBehavior: ContinueArgumentBehavior: UseArgumentString (a0.connection, l3.name, l3.value)Assembly-CSharp.dll

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

// …
	return;
}
using (packet.read.UseRepeatedElementLimit(512))
{
	using (ClientReady clientReady = packet.read.Proto<ClientReady>())
	{
		foreach (ClientReady.ClientInfo item in clientReady.clientInfo)
		{
			Interface.CallHook("OnPlayerSetInfo", packet.connection, local3.name, local3.value);
			packet.connection.info.Set(item.name, item.value);
		}
		packet.connection.globalNetworking = clientReady.globalNetworking;
		packet.connection.state = Network.Connection.State.Connected;
		connectionQueue.JoinedGame(packet.connection);
		Analytics.Azure.OnPlayerConnected(packet.connection);
		AddPartyMembersToTeam(packet.connection, clientReady.party);
		using (TimeWarning.New("ClientReady"))
// …

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

Rust.opj (Oxide)
void BasePlayer.SetInfo(string, string)

Передаёт: object connection, string key, string val

РаботаетReturnBehavior: ContinueArgumentBehavior: UseArgumentString (this.net.connection, a0, a1)Assembly-CSharp.dll

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

public virtual void SetInfo(string key, string val)
{
	if (IsConnected)
	{
		Interface.CallHook("OnPlayerSetInfo", this.net.connection, key, val);
		net.connection.info.Set(key, val);
	}
}

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