OnLoseCondition
OxideCarbonGlobalCalled when an item's condition is reduced or it breaks.
void OnLoseCondition(Item item, ref float amount)Работает — метод игры в этой сборке тот же, под который написан хук.
Параметры
- item
- Item
- amount
- ref float
Возвращаемое значение
voidВозвращаемое значение игнорируется — хук только уведомляет.
Пример
private void OnLoseCondition(Item item, ref float amount)
{
Puts("OnLoseCondition");
}Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.
Где вызывается
ядро Oxide (Oxide.Rust)
RustCore::IOnLoseCondition(Item item, float amount)
Код ядра Oxide — отсюда вызывается хук
private object IOnLoseCondition(Item item, float amount)
{
object[] arguments = { item, amount };
Interface.CallHook("OnLoseCondition", arguments);
amount = (float)arguments[1];
float condition = item.condition;
item.condition -= amount;
if (item.condition <= 0f && item.condition < condition)
{
item.OnBroken();
}
// …Место встраивания
Rust.opj (Oxide)
void Item.LoseCondition(float)
Встроен служебный хук IOnLoseCondition — этот хук вызывает его обработчик в ядре Oxide/Carbon
РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: AllAssembly-CSharp.dll
Где вызывается (код игры этой ветки)
public void LoseCondition(float amount)
{
if (hasCondition && !Debugging.disablecondition)
{
if (Interface.CallHook("IOnLoseCondition", this, amount) != null)
{
return;
}
float num = condition;
condition -= amount;
if (Global.developer > 0)
{
Debug.Log(info.shortname + " was damaged by: " + amount + "cond is: " + condition + "/" + maxCondition);
// …Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.