RustTip

CanDeployItem

OxideCarbonItem

Called to determine whether to deploy item.

Return true to allow the action and false to block it.

object CanDeployItem(BasePlayer player, Deployer deployer, NetworkableId local2)
Works — the game method in this build is the one the hook was written for.

Parameters

player
BasePlayer
deployer
Deployer
local2
NetworkableId

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 CanDeployItem(BasePlayer player, Deployer deployer, NetworkableId local2)
{
    Puts("CanDeployItem");

    // 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 Deployer.DoDeploy(BaseEntity.RPCMessage)

Passes: BasePlayer player, Deployer deployer, NetworkableId local2

WorksReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (a0.player, this, l2)Assembly-CSharp.dll

Where it is called (this branch's game code)

// …
{
	return;
}
Deployable deployable = GetDeployable();
if (!(deployable == null))
{
	Ray ray = msg.read.Ray();
	NetworkableId entityID = msg.read.EntityID();
	if (Interface.CallHook("CanDeployItem", msg.player, this, entityID) != null)
	{
		return;
	}
	if (deployable.toSlot)
	{
		DoDeploy_Slot(deployable, ray, entityID);
	}
	else
// …

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.