RustTip

CanFastTrackCraftTask

OxideCarbonItem

Called to determine whether to fast track craft task.

Return true to allow the action and false to block it.

object CanFastTrackCraftTask(ItemCrafter itemCrafter, ItemCraftTask local2, int taskID)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

itemCrafter
ItemCrafter
local2
ItemCraftTask
taskID
int

Возвращаемое значение

objectВозвращённое значение заменяет результат игры; null — игра решает сама.

Пример

object — можно повлиять на игру: вернуть значение, чтобы изменить или отменить действие.

private object CanFastTrackCraftTask(ItemCrafter itemCrafter, ItemCraftTask local2, int taskID)
{
    Puts("CanFastTrackCraftTask");

    // ничего не меняем — игра продолжит как обычно
    return null;

    // повлиять на игру:
    // return false; // своё значение вместо результата игры
}

Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.

Место встраивания

Rust.opj (Oxide)
bool ItemCrafter.FastTrackTask(int)

Передаёт: ItemCrafter itemCrafter, ItemCraftTask local2, int taskID

РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (this, l2, a0)Assembly-CSharp.dll

Где вызывается (код игры этой ветки)

// …
if (itemCraftTask == null)
{
	return false;
}
if (itemCraftTask == value)
{
	return false;
}
object returnvar = Interface.CallHook("CanFastTrackCraftTask", this, itemCraftTask, taskID);
if (returnvar is bool)
{
	return (bool)returnvar;
}
value.endTime = 0f;
queue.Remove(itemCraftTask);
queue.AddFirst(itemCraftTask);
owner.Command("note.craft_fasttracked", taskID);
// …

Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.