RustTip

CanBeAwardedAdventGift

OxideCarbonSeasonal

Called to determine whether the entity can be awarded advent gift.

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

object CanBeAwardedAdventGift(AdventCalendar adventCalendar, BasePlayer player)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

adventCalendar
AdventCalendar
player
BasePlayer

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

objectРезультат проверяется особым образом — смотрите код вызова ниже.

Пример

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

private object CanBeAwardedAdventGift(AdventCalendar adventCalendar, BasePlayer player)
{
    Puts("CanBeAwardedAdventGift");

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

    // повлиять на игру:
    // return null; // null — игра продолжит как обычно
}

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

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

Rust.opj (Oxide)
bool AdventCalendar.WasAwardedTodaysGift(BasePlayer)

Передаёт: AdventCalendar adventCalendar, BasePlayer player

РаботаетReturnBehavior: CustomAssembly-CSharp.dll

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

public bool WasAwardedTodaysGift(BasePlayer player)
{
	object result = Interface.CallHook("CanBeAwardedAdventGift", this, player);
	// … проверка результата (Modify-хук, см. Rust.opj)
	if (!playerRewardHistory.ContainsKey(player.userID))
	{
		return false;
	}
	DateTime now = DateTime.Now;
	if (((overrideAdventCalendarMonth > 0) ? overrideAdventCalendarMonth : now.Month) != startMonth)
	{
// …

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