OnMetalDetectorFlagRequest
OxideCarbonPlayerCalled when metal detector flag request occurs.
void OnMetalDetectorFlagRequest(BaseMetalDetector baseMetalDetector, Vector3 local1, BasePlayer local0)Works — the game method in this build is the one the hook was written for.
Parameters
- baseMetalDetector
- BaseMetalDetector
- local1
- Vector3
- local0
- BasePlayer
Return value
voidThe return value is ignored — the hook only notifies.
Example
private void OnMetalDetectorFlagRequest(BaseMetalDetector baseMetalDetector, Vector3 local1, BasePlayer local0)
{
Puts("OnMetalDetectorFlagRequest");
}Works in both Oxide and Carbon: Carbon loads Oxide plugins as is.
Injection point
Rust.opj (Oxide)
void BaseMetalDetector.RPC_RequestFlag(BaseEntity.RPCMessage)
Passes: BaseMetalDetector baseMetalDetector, Vector3 local1, BasePlayer local0
WorksReturnBehavior: ContinueArgumentBehavior: UseArgumentString (this, l1, l0)Assembly-CSharp.dll
Where it is called (this branch's game code)
// …
[RPC_Server.CallsPerSecond(2uL)]
[RPC_Server.InputValidation(new Type[] { typeof(Vector3) })]
private void RPC_RequestFlag(RPCMessage rpc)
{
BasePlayer player = rpc.player;
if (!(player == null) && !player.InSafeZone() && nearestSource != null)
{
Vector3 pos = rpc.read.Vector3();
Interface.CallHook("OnMetalDetectorFlagRequest", this, pos, player);
if (nearestSource.VerifyScanPosition(player.transform.position, pos, out var spotPos))
{
nearestSource.Detected(spotPos);
}
}
}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.