RustTip

OnEyePosValidate

OxideCarbonPlayer

Called when an eye pos is validated.

object OnEyePosValidate(AttackEntity attackEntity, BasePlayer player, Vector3 eyePos, bool checkLineOfSight)
Works — the game method in this build is the one the hook was written for.

Parameters

attackEntity
AttackEntity
player
BasePlayer
eyePos
Vector3
checkLineOfSight
bool

Return value

objectThe returned value replaces the game result; null lets the game decide.

Example

object — you can affect the game: return a value to change or cancel the action.

private object OnEyePosValidate(AttackEntity attackEntity, BasePlayer player, Vector3 eyePos, bool checkLineOfSight)
{
    Puts("OnEyePosValidate");

    // change nothing — the game continues as usual
    return null;

    // to affect the game:
    // return false; // your value instead of the game result
}

Works in both Oxide and Carbon: Carbon loads Oxide plugins as is.

Injection point

Rust.opj (Oxide)
bool AttackEntity.ValidateEyePos(BasePlayer, Vector3, bool)

Passes: AttackEntity attackEntity, BasePlayer player, Vector3 eyePos, bool checkLineOfSight

WorksReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (this, a0, a1, a2)Assembly-CSharp.dll

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

protected bool ValidateEyePos(BasePlayer player, Vector3 eyePos, bool checkLineOfSight = true)
{
	object returnvar = Interface.CallHook("OnEyePosValidate", this, player, eyePos, checkLineOfSight);
	if (returnvar is bool)
	{
		return (bool)returnvar;
	}
	bool flag = true;
	if (eyePos.IsNaNOrInfinity())
	{
		string shortPrefabName = ShortPrefabName;
// …

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.