OnWaterCollect
OxideEntityobject OnWaterCollect(WaterCatcher waterCatcher)
object OnWaterCollect(WaterPump waterPump, ItemDefinition itemDefinition)Работает — метод игры в этой сборке тот же, под который написан хук.
Параметры
- waterCatcher
- WaterCatcher
Возвращаемое значение
objectЕсли вернуть значение типа результата метода, игра сразу вернёт его; null — продолжит как обычно.
Пример
object — можно повлиять на игру: вернуть значение, чтобы изменить или отменить действие.
private object OnWaterCollect(WaterCatcher waterCatcher)
{
Puts("OnWaterCollect");
// ничего не меняем — игра продолжит как обычно
return null;
// повлиять на игру:
// return null; // null — игра продолжит как обычно
}Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.
Место встраивания 1
Rust.opj (Oxide)
void WaterCatcher.CollectWater()
Передаёт: WaterCatcher waterCatcher
РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: JustThisAssembly-CSharp.dll
Где вызывается (код игры этой ветки)
// …
return;
}
float num = ((overrideCollectInterval > 0f) ? overrideCollectInterval : 60f);
nextCollect = num + Random.Range(0f, num * 0.1f);
if (inventory == null || IsFull())
{
return;
}
if (Interface.CallHook("OnWaterCollect", this) != null)
{
return;
}
float num2 = collectionRates.baseRate;
if (requireOutside)
{
Vector3 position = transform.position;
num2 += Climate.GetFog(position) * collectionRates.fogRate;
// …Место встраивания 2
Rust.opj (Oxide)
void WaterPump.CreateWater()
Передаёт: WaterPump waterPump, ItemDefinition itemDefinition
РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (this, l0)Assembly-CSharp.dll
Где вызывается (код игры этой ветки)
private void CreateWater()
{
if (!IsFull())
{
ItemDefinition itemDefinition = WaterResource.SV_GetAtPoint(WaterResourceLocation.position);
if (itemDefinition != null)
{
if (Interface.CallHook("OnWaterCollect", this, itemDefinition) != null)
{
return;
}
inventory.AddItem(itemDefinition, AmountPerPump, 0uL);
UpdateOnFlag();
}
}
}Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.