OnPlayerSetInfo
OxideCarbonPlayerCalled when player set info occurs.
void OnPlayerSetInfo(Network.Connection connection, string key, string val)
void OnPlayerSetInfo(object connection, string key, string val)Метод изменился — проверить — код метода игры отличается от того, под который записан хук в Oxide. Хук всё равно вызывается, но место вызова могло сместиться — стоит проверить после обновления.
Параметры
- 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). Код методов — декомпиляция сервера этой ветки.