OnItemSkinChange
OxideCarbonItemCalled when an item skin is changed.
object OnItemSkinChange(int inventoryId, Item local5, RepairBench repairBench, BasePlayer local1)Works — the game method in this build is the one the hook was written for.
Parameters
- inventoryId
- int
- local5
- Item
- repairBench
- RepairBench
- local1
- BasePlayer
Return value
objectReturn non-null to cancel the game action.
Example
object — you can affect the game: return a value to change or cancel the action.
private object OnItemSkinChange(int inventoryId, Item local5, RepairBench repairBench, BasePlayer local1)
{
Puts("OnItemSkinChange");
// change nothing — the game continues as usual
return null;
// to affect the game:
// return false; // non-null cancels the game action
}Works in both Oxide and Carbon: Carbon loads Oxide plugins as is.
Injection point
Rust.opj (Oxide)
void RepairBench.ChangeSkin(BaseEntity.RPCMessage)
Passes: int inventoryId, Item local5, RepairBench repairBench, BasePlayer local1
WorksReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString ( l0.inventoryId, l5, this, l1)Assembly-CSharp.dll
Where it is called (this branch's game code)
// …
ItemId itemId = ((msg.read.Unread > 0) ? new ItemId(msg.read.UInt64()) : default(ItemId));
bool isValid = itemId.IsValid;
bool flag = !isValid || Time.realtimeSinceStartup > nextSkinChangeAudioTime;
Item slot = inventory.GetSlot(0);
if (slot == null || (isValid && slot.uid != itemId))
{
return;
}
if (Interface.CallHook("OnItemSkinChange", local0.inventoryId, slot, this, player) != null)
{
return;
}
if (inventoryId != 0 && !player.blueprints.CheckSkinOwnership(inventoryId, player))
{
debugprint("RepairBench.ChangeSkin player does not have item :" + inventoryId + ":");
return;
}
// …Sources: Rust.opj from OxideMod/Oxide.Rust (MIT) and hook metadata of the Carbon documentation (MIT). Method code is decompiled from this branch's server.