CanWaterBallSplash
OxideCarbonEntityCalled to determine whether to water ball splash.
Return true to allow the action and false to block it.
object CanWaterBallSplash(ItemDefinition liquidDef, Vector3 position, float radius, int amount, bool funWater)Работает — метод игры в этой сборке тот же, под который написан хук.
Параметры
- liquidDef
- ItemDefinition
- position
- Vector3
- radius
- float
- amount
- int
- funWater
- bool
Возвращаемое значение
objectВозвращённое значение заменяет результат игры; null — игра решает сама.
Пример
object — можно повлиять на игру: вернуть значение, чтобы изменить или отменить действие.
private object CanWaterBallSplash(ItemDefinition liquidDef, Vector3 position, float radius, int amount, bool funWater)
{
Puts("CanWaterBallSplash");
// ничего не меняем — игра продолжит как обычно
return null;
// повлиять на игру:
// return false; // своё значение вместо результата игры
}Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.
Место встраивания
Rust.opj (Oxide)
bool WaterBall.DoSplash(Vector3, float, ItemDefinition, int, bool)
Передаёт: ItemDefinition liquidDef, Vector3 position, float radius, int amount, bool funWater
РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (a2, a0, a1, a3, a4)Assembly-CSharp.dll
Где вызывается (код игры этой ветки)
public static bool DoSplash(Vector3 position, float radius, ItemDefinition liquidDef, int amount, bool funWater = false)
{
object returnvar = Interface.CallHook("CanWaterBallSplash", liquidDef, position, radius, amount, funWater);
if (returnvar is bool)
{
return (bool)returnvar;
}
List<BaseEntity> obj = Pool.Get<List<BaseEntity>>();
Vis.Entities(position, radius, obj, 1220225811);
int num = 0;
int num2 = amount;
// …Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.