Платное Bag of Holding 1.9.1

API_GetApi​

Словарь<строка, объект> API_GetApi()
Возвращает словарь, в котором каждый ключ является делегатом метода API. Этот API предназначен для высокопроизводительных сценариев, в которых вам не нужны накладные расходы на вызов Bag of Holding через Oxide. Вместо этого ваш плагин должен вызывать Bag of Holding один раз (при загрузке Bag of Holding), кэшировать API и вызывать определенные методы API через делегатов, когда это необходимо.

Пример:

// Получить API. В идеале вы должны кэшировать это. Вам также следует повторно кэшировать это при перезагрузке Bag of Holding.
var api = BagOfHolding.Call("API_GetApi") as Dictionary<string, object>;

// Получите нужную функцию API. В идеале вы также должны кэшировать это. Имена такие же, как описано ниже, но без префикса «API_».
var isBagFunction = api["IsBag"] as Func<Item, bool>;

// Вызов функции API. Этот вызов не проходит через Oxide, поэтому он экономит циклы ЦП и позволяет избежать выделения кучи при передаче типов значений (например, при передаче чисел).
вар isBag = isBagFunction (пункт);

API_IsBag​

bool API_IsBag (предмет)
Возвращает, trueесли предмет является сумкой, иначе возвращает false.

API_IsLootingBag​

bool API_IsLootingBag (плеер BasePlayer)
Возвращает, trueесли игрок грабит сумку, иначе возвращает false.

Примечание. Если вы вызовете это сразу после OnLootEntityвызова перехватчика Oxide, это вернет false, потому что плагин должен проверять s ItemContainer, которые игрок собирает ( basePlayer.inventory.loot.containers), которые заполняются после OnLootEntityзавершения вызова перехватчика (именно здесь находится перехватчик Oxide). размещен, и плагин следует этому шаблону при явном вызове OnLootEntity). Следовательно, если вы хотите определить, открыл ли игрок только что сумку с помощью крючка OnLootEntity, вам следует запустить свою логику на следующем кадре (например, с помощью NextTick).

Вы можете полностью избежать вызова этого API, просто проверив, что в basePlayer.inventory.loot.containersсписке есть только один контейнер и что у него есть расширение parentItem. Если оба этих критерия соблюдены, игрок крадет какой-то предмет, необязательный из этого плагина, но он должен быть достаточно близок. Обратите внимание, что эта логика все еще должна присутствовать NextTickпо вышеупомянутой причине.

API_GetBagProfileName​

строка API_GetBagProfileName (элемент элемента)
Возвращает имя профиля сумки (а не отображаемое имя), в противном случае возвращается, nullесли предмет не является сумкой. Если вам нужно отображаемое имя, просто прочитайте item.name.

API_OpenBag​

bool API_OpenBag (плеер BasePlayer, предмет)
  • Попытки заставить игрока открыть сумку
  • Возвращает, trueесли предмет является допустимой сумкой для добычи (не запертой сумкой) и не заблокирован плагином через хук OnBagOpen.
  • Возвращает, falseесли предмет не был допустимой сумкой для добычи или заблокирован плагином через OnBagOpenхук.

API_CreateBag​

Item API_CreateBag (строка ProfileName, целое число = 1)
  • Создает сумку, используя указанное имя профиля, с указанным количеством стопки.
  • Возвращает сумку Itemв случае успеха
  • Возвращает, nullесли указанное имя профиля или сумма стека недействительны.
  • Примечание. Сумки также можно создавать, ItemManager.CreateByName("halloween.lootbag.large", amount, skinId)если известен идентификатор скина.

API_CreateKitBag​

Элемент API_CreateKitBag (строка ProfileName, строка KitName, инициатор BasePlayer = null)
  • Создает сумку, используя указанное имя профиля, и заполняет ее указанным комплектом.
  • Возвращает сумку Itemв случае успеха
  • Возвращает, nullесли указанное имя профиля или имя комплекта недействительно.
Если какие-либо предметы комплекта не помещаются в сумку, они передаются инициатору, BasePlayerесли таковые имеются, в противном случае удаляются.

API_ChangeBagProfile​

bool API_ChangeBagProfile (элемент элемента, строковое имя профиля, инициатор BasePlayer = null)
  • Обновляет предмет сумки до указанного профиля.
  • Возвращает, trueесли предмет является допустимой сумкой и если указанное имя профиля действительно.
  • Возвращает, falseесли предмет не является допустимой сумкой или если указанное имя профиля неверно.
  • Если целевой профиль имеет меньшую емкость, чем текущий профиль...
    • Переполняющиеся предметы попытаются сжать в сумку, переместив их в более ранние слоты.
    • Если уплотнение не удалось, оставшиеся элементы будут переданы инициатору, BasePlayerесли он предусмотрен.
    • Если BasePlayerинициатор не предусмотрен, вместимость мешка будет увеличена для размещения переполненных предметов.
  • Внимание: если предмет представляет собой стопку сумок, профиль всех сумок в стопке изменится.
  • Внимание: изменение профиля сумки, которая уже находится внутри контейнера, может привести к тому, что контейнер превысит настроенные ограничения на количество сумок.

API_UpgradeBag​

bool API_UpgradeBag (элемент элемента, инициатор BasePlayer = null)
  • Обновляет элемент сумки до профиля, указанного в конфигурации как цель обновления.
  • Возвращает, trueесли предмет является допустимой сумкой и если профиль сумки имеет действительную цель обновления в конфигурации.
  • Возвращает false, если предмет не является допустимой сумкой или если профиль сумки не имеет допустимой цели обновления в конфигурации.
  • Если целевой профиль имеет меньшую емкость, чем текущий профиль...
    • Переполняющиеся предметы попытаются сжать в сумку, переместив их в более ранние слоты.
    • Если уплотнение не удалось, оставшиеся элементы будут переданы инициатору, BasePlayerесли он предусмотрен.
    • Если BasePlayerинициатор не предусмотрен, вместимость мешка будет увеличена для размещения переполненных предметов.
  • Внимание: если предмет представляет собой стопку сумок, он улучшит все сумки в стопке.
  • Внимание! Обновление сумки, которая уже находится внутри контейнера, может привести к тому, что контейнер превысит настроенные ограничения на количество сумок.