CanMoveItem
OxideCarbonItemCalled to determine whether to move item.
Return true to allow the action and false to block it.
object CanMoveItem(Item local5, PlayerInventory playerInventory, ItemContainerId local1, int local2, int local3, ItemMoveModifier local4)Метод изменился — проверить — код метода игры отличается от того, под который записан хук в Oxide. Хук всё равно вызывается, но место вызова могло сместиться — стоит проверить после обновления.
Параметры
- local5
- Item
- playerInventory
- PlayerInventory
- local1
- ItemContainerId
- local2
- int
- local3
- int
- local4
- ItemMoveModifier
Возвращаемое значение
objectВерните не null, чтобы отменить действие игры.
Пример
object — можно повлиять на игру: вернуть значение, чтобы изменить или отменить действие.
private object CanMoveItem(Item local5, PlayerInventory playerInventory, ItemContainerId local1, int local2, int local3, ItemMoveModifier local4)
{
Puts("CanMoveItem");
// ничего не меняем — игра продолжит как обычно
return null;
// повлиять на игру:
// return false; // не null — действие игры отменяется
}Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.
Место встраивания
Rust.opj (Oxide)
void PlayerInventory.MoveItem(BaseEntity.RPCMessage)
Передаёт: Item local5, PlayerInventory playerInventory, ItemContainerId local1, int local2, int local3, ItemMoveModifier local4
Метод изменился — проверитьReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (l5, this, l1, l2, l3, l4)Assembly-CSharp.dll
Где вызывается (код игры этой ветки)
// …
Item item = FindItemByUID(id);
if (item == null)
{
msg.player.ShowToast(GameTip.Styles.Error, PlayerInventoryErrors.InvalidItem, false);
ConstructionErrors.Log(msg.player, id.ToString());
}
else
{
if (Interface.CallHook("CanMoveItem", item, this, itemContainerId, num, num2, itemMoveModifier) != null)
{
return;
}
if (item.IsLocked() || (item.parent != null && item.parent.IsLocked()))
{
return;
}
BaseEntity entityOwner = item.GetEntityOwner();
// …Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.