RustTip

OnSignUpdated

OxideStructure
void OnSignUpdated(Signage signage, BasePlayer player, int int32)
void OnSignUpdated(PhotoFrame photoFrame, BasePlayer player)
void OnSignUpdated(CarvablePumpkin carvablePumpkin, BasePlayer player)
Метод изменился — проверить — код метода игры отличается от того, под который записан хук в Oxide. Хук всё равно вызывается, но место вызова могло сместиться — стоит проверить после обновления.

Параметры

signage
Signage
player
BasePlayer
int32
int

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

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

Пример

private void OnSignUpdated(Signage signage, BasePlayer player, int int32)
{
    Puts("OnSignUpdated");
}

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

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

Rust.opj (Oxide)
void Signage.UpdateSign(BaseEntity.RPCMessage)

Передаёт: Signage signage, BasePlayer player, int int32

Метод изменился — проверитьReturnBehavior: ContinueArgumentBehavior: UseArgumentString (this, a0.player, l0)Assembly-CSharp.dll

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

Rust.opj (Oxide)
void PhotoFrame.UpdateSign(BaseEntity.RPCMessage)

Передаёт: PhotoFrame photoFrame, BasePlayer player

Метод изменился — проверитьReturnBehavior: ContinueArgumentBehavior: UseArgumentString (this, a0.player)Assembly-CSharp.dll

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

// …
	if (!(msg.player == null) && CanUpdateSign(msg.player))
	{
		byte[] array = msg.read.BytesWithSize();
		if (array != null && ImageProcessing.IsValidPNG(array, 1024, 1024))
		{
			_overlayTextureCrc = FileStorage.server.Store(net.ID, 0uL, FileStorage.Type.png, array);
			Analytics.Azure.OnUGCCreated(msg.player, this, "photo_frame", array.Length);
			UGCModeration.Send(msg.player, this, "photo_frame", _overlayTextureCrc, FileStorage.Type.png);
			Interface.CallHook("OnSignUpdated", this, msg.player);
			LogEdit(msg.player);
			SendNetworkUpdate();
		}
	}
}

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

Rust.opj (Oxide)
void CarvablePumpkin.UpdateSign(BaseEntity.RPCMessage)

Передаёт: CarvablePumpkin carvablePumpkin, BasePlayer player

Метод изменился — проверитьReturnBehavior: ContinueArgumentBehavior: UseArgumentString (this, a0.player)Assembly-CSharp.dll

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