banner
Рейтинг
Голоса0

Ядро ReservedItemSlotCore

Категория - Моды для Lethal Company
0
Версия мода:1
Версия игры:2.0.37
Mод успешно проверен на отсутствие вирусов
1649.29K16.97K

Репорт мод

  • image
modalImage

Об этом моде

ReservedItemSlotCore

Совместим с V64!

Основной мод для всех модов ReservedItemSlot.


Этот мод необходим для работы моих модов ReservedItemSlot, таких как ReservedFlashlightSlot и ReservedWalkieSlot.

Эти моды дадут вам бесплатные выделенные слоты в инвентаре для соответствующих предметов. Эти слоты будут отображаться в правой части экрана, складываясь вертикально.


Вы не сможете переключиться на эти слоты вручную, прокручивая экран. Вместо этого для переключения на эти предметы нужно удерживать Alt (горячая клавиша по умолчанию) и прокручивать экран вверх и вниз, чтобы переключаться между ними.

Таким образом, вы можете переключаться на эти предметы, чтобы бросить их, а также выполнять другие действия, такие как зарядка, хранение и т. д.


Захват зарезервированных предметов, а также переключение между основным хотбаром и зарезервированными слотами хотбара должны синхронизироваться между клиентами, использующими этот мод.

Если это уместно, в этих модах будут специальные привязки клавиш для активации предметов без необходимости их текущего выбора.


Все клиенты, использующие этот основной мод, будут синхронизироваться с хостом и иметь одинаковые зарезервированные слоты предметов, независимо от того, какой из модов зарезервированных слотов предметов у них установлен.

Использование зарезервированных слотов для предметов от хоста для модов, которых у вас нет, не должно вызывать проблем, но вы не сможете воспользоваться дополнительными возможностями мода, такими как специальные горячие клавиши для зарезервированных предметов, и не увидите эти зарезервированные предметы у игроков, пока они не находятся в данный момент.

Это может измениться или быть скорректировано в будущем, но в настоящее время это сделано для того, чтобы попытаться сохранить одинаковый размер инвентаря у всех, чтобы помочь с синхронизацией.

Это также может помочь в отправке зарезервированных слотов для предметов другим клиентам с хоста, если я добавлю функциональность для их создания в конфиг, или если я создам мод ReservedCustomItemSlot, который будет модом на стороне сервера.


~Использование этого мода в то время, когда у хоста нет этого мода, было разрешено, но ожидайте ошибок и проблем с рассинхронизацией. Используйте с осторожностью!

Этот мод снова будет отключен для нехостовых клиентов, если у хоста нет этого мода по различным причинам.

Для тех, кто достаточно упрям, это может быть принудительно разрешено в конфиге. Вы были предупреждены!



Покупка зарезервированных слотов предметов (новое в 2.0.0)

Зарезервированные слоты для предметов можно купить в терминале. На данный момент покупка зарезервированных слотов разблокирует слот для каждого игрока. В настоящее время нет возможности настроить его разблокировку для каждого игрока.

Вы можете ввести «reserved» в терминале, чтобы просмотреть подсказки о том, как приобрести зарезервированные слоты предметов.

Для модов Reserved Item Slot, которые поддерживают эту функцию, цены могут быть настроены в конфиге. Все зарезервированные слоты предметов, которые я сделал, имеют такие конфиги.

Купленные слоты предметов будут сохранены в сохранении вашей игры. Выход из игры и повторная загрузка сохранения должны перезагрузить все ранее разблокированные слоты предметов. Разблокированные слоты будут сброшены при начале новой игры.

Покупка слотов предметов может быть отключена в конфиге.


Настраиваемый

Каждая из следующих конфигураций должна поддерживаться каждым модом Reserved Item Slot.

Добавляет поддержку, позволяющую модам Reserved Item Slot настраивать цену слота предметов в конфиге.

Добавляет поддержку, позволяющую модам Reserved Item Slot настраивать приоритет слота предмета в конфиге.

Чем выше приоритет, тем ниже по порядку они будут располагаться в правой части экрана.

Отрицательный приоритет заставит слоты предметов отображаться в правой части экрана, если это не отключено в конфиге.

Добавляет поддержку добавления дополнительных предметов в зарезервированные слоты в конфиге.

Добавляет поддержку удаления существующих предметов из зарезервированных слотов в конфиге.


Поддерживает InputUtils

Все необходимые горячие клавиши для этого мода могут управляться во внутриигровом меню привязки клавиш.

InputUtils не является зависимостью, но рекомендуется!


Поддержка API (примеры ниже)

Добавляет API-функции, с помощью которых разработчики могут легко создавать свои собственные моды Reserved Item Slot или добавлять свои предметы в существующие Reserved Item Slots.

При создании ReservedItemData для определенного предмета разработчики могут указать целевую кость, к которой будет прикреплен предмет у игрока (и врага в маске), а также задать смещение позиции/вращения.

Мои моды ReservedItemSlot

ReservedFlashlightSlot

ReservedWalkieSlot

ReservedWeaponSlot

ReservedUtilitySlot

ReservedSprayPaintSlot

Другие моды Reserved Item Slot могут существовать на Thunderstore!


Совместимость модов

HotbarPlus совместим!

LethalThings Utility Belt совместим (или должен быть совместим)! (надеюсь, так и останется).

Этот мод может плохо работать с Advanced Company. Используйте на свой страх и риск!

Работа других модов, добавляющих слоты для хотбаров, не гарантируется.

Другие моды, которые могут изменить расположение слотов хотбара (HUD), не гарантируют хорошей работы с этими модами, но технически могут работать.


Если вы дочитали до этого момента и вам нравятся мои моды.

Пожалуйста, поддержите меня здесь!

Это, конечно, не обязательно, но я буду очень признателен! =)





Примеры API

Прежде всего, убедитесь, что вы добавили последнюю версию ReservedItemSlotCore.dll в ссылки вашего проекта VS.

ПРИМЕЧАНИЕ

Добавление несуществующих предметов (по ошибке или из не загруженного мода) в ReservedItemSlotData ничего не нарушит.

Добавление элемента в существующий ReservedItemSlotData, который был создан из не загруженного мода, ничего не нарушит.


Добавление предметов вашего мода в существующий слот зарезервированных предметов

Этот класс будет использоваться для добавления предметов из вашего мода в существующие слоты зарезервированных предметов, которые были созданы другим модом, и если ReservedItemSlotCore включен.


Создайте класс, подобный этому, в отдельном файле.


using ReservedItemSlotCore.Data;



public static class ReservedItemSlotsCompat

{

  public static void AddItemsToReservedItemSlots()

  {

    // Название вашего предмета, как оно отображается в игре

    ReservedItemData myReservedItemData = new ReservedItemData(«ItemDisplayName»);

     

    // Ничего страшного, если мод, создавший этот слот для предмета, не включен на клиенте. Ничего не сломается

    ReservedItemSlotData.TryAddItemDataToReservedItemSlot(myReservedItemData, «nameOfItemSlot»);

  }

}


ИЛИ, чтобы ваш предмет был виден при ношении в кобуре:



используя ReservedItemSlotCore.Data;


public static class ReservedItemSlotsCompat

{

  public static void AddItemsToReservedItemSlots()

  {

    // Аргументы: ItemDisplayName, ParentBone(enum), PositionOffset, RotationOffset

    ReservedItemData myReservedItemData = new ReservedItemData(«ItemDisplayName», PlayerBone.Spine3, new Vector3(0.2f, 0.25f, 0), new Vector3(90, 0, 0));

   

    // Ничего страшного, если мод, создавший этот слот для предмета, не включен на клиенте. Ничего не сломается

    ReservedItemSlotData.TryAddItemDataToReservedItemSlot(myReservedItemData, «nameOfItemSlot»);

  }  

}


И в метод Awake (или Start) в классе Plugin добавьте вот это: (желательно после привязки конфигов)

Если ваш мод не зависит от ReservedItemSlotCore, а только опционально добавляет ваши предметы в Reserved Item Slots, если они существуют, то проверка того, включен ли этот мод, очень важна!


if (BepInEx.Bootstrap.Chainloader.PluginInfos.ContainsKey(«FlipMods.ReservedItemSlotCore»))

  ReservedItemSlotsCompat.AddItemsToReservedItemSlots(); // Это будет вызов вашей функции


И последнее, но не менее важное: добавьте этот заголовок SoftDependency над определением класса вашего плагина

Если ваш мод зависит от ReservedItemSlotCore, то вы можете изменить BepInDependency.DependencyFlags.SoftDependency на BepInDependency.DependencyFlags.HardDependency.


[BepInDependency(«FlipMods.ReservedItemSlotCore», BepInDependency.DependencyFlags.SoftDependency)] // Добавьте эту строку

[BepInPlugin(«EXAMPLE_MOD_GUID», «EXAMPLE_MOD_NAME», «1.0.0»)] // У ВАС ДОЛЖНА БЫТЬ ЭТА СТРОКА ПОД ОПРЕДЕЛЕНИЕМ ВАШЕГО КЛАССА ПЛУГИНА.

public class Plugin : BaseUnityPlugin

{

  ...

}


Создание собственного ReservedItemSlot

Пример создания собственного ReservedItemSlotData и добавления предметов вашего мода (или существующих предметов в игре) в слот предметов.

Включите этот код в метод Awake (или Start) вашего класса Plugin. Вам не нужно создавать отдельный файл или класс для добавления этого кода.


using ReservedItemSlotCore.Data;


// УБЕДИТЕСЬ, ЧТО ВЫ ПОМЕСТИЛИ ЭТОТ ЗАГОЛОВОК НАД КЛАССОМ ПЛАГИНА

[BepInDependency(«FlipMods.ReservedItemSlotCore», BepInDependency.DependencyFlags.HardDependency)]

[BepInPlugin(«EXAMPLE_MOD_GUID», «EXAMPLE_MOD_NAME», «1.0.0»)] // У ВАС ДОЛЖНА БЫТЬ ЭТА СТРОКА ПОСЛЕ ОПРЕДЕЛЕНИЯ ВАШЕГО КЛАССА ПЛУГИНА.

public class Plugin : BaseUnityPlugin

{

  private void Awake()

  {

    // Ваш существующий код...


     // Это зарегистрирует ваши ReservedItemSlotData и будет добавлено в игру, если на хосте запущен мод.

    // Аргументы: ItemSlotName (формат не слишком важен), ItemSlotPriority, ItemSlotPrice

    ReservedItemSlotData myReservedItemSlot = ReservedItemSlotData.CreateReservedItemSlotData(«my_item_slot_name», 20, 100);


    // Создайте данные ReservedItemData для вашего элемента

    // Вы также можете добавить дополнительные аргументы, чтобы позволить этому предмету отображаться на игроках, когда он находится в кобуре. (см. предыдущий пример)

    ReservedItemData myReservedItemData = new ReservedItemData(«ItemDisplayName»);


    // Добавьте ReservedItemData в ваш ReservedItemSlotData, и готово!

    myReservedItemSlot.AddItemToReservedItemSlot(myReservedItemData);

  }

}


Другие функции API

Вот несколько примеров того, как вы можете получать и управлять зарезервированными предметами игроков.


PlayerControllerB localPlayerController = StartOfRound.Instance.localPlayerController;

for (int i = 0; i < SessionManager.numReservedItemSlotsUnlocked; i++)

{

  ReservedItemSlotData itemSlotData = SessionManager.GetUnlockedReservedItemSlot(i);

  if (itemSlotData != null)

  {

    // Получает индекс этого слота предметов в инвентаре игрока

    int indexInPlayerInventory = itemSlotData.GetIndexInInventory(localPlayerController); // можно передать любой контроллер игрока



    // Получает объект, который в данный момент удерживается в этом слоте указанным игроком, или возвращает null

    GrabbableObject heldObjectInSlot = itemSlotData.GetHeldObjectInSlot(localPlayerController); 



    // Получает рамку слота предмета (компонент изображения в HUD) для этого слота предмета. Применяется только для локального игрока

    Image itemSlotFrameHUD = itemSlotData.GetItemSlotFrameHUD();



    // Для проверки, примет ли зарезервированный слот для предметов определенный предмет (название предмета, как он выглядит в игре)

    // Вы также можете передать ссылку на GrabbableObject

    if (itemSlotData.ContainsItem(«Flashlight»))

      Plugin.Log(«Этот слот содержит фонарик»);

  }

}


Если вы создаете свой собственный ReservedItemSlotData, не забудьте также включить эту строку в список зависимостей в вашем файле manifest.json.

«FlipMods-ReservedItemSlotCore-2.0.7»



Если вы хотите посмотреть больше примеров, не стесняйтесь, посмотрите на мои существующие моды ReservedItemSlot на github!

Если вы считаете, что я что-то упустил, или столкнулись с какими-то проблемами, пожалуйста, дайте мне знать! Я довольно активен в дискорде моддинга Lethal Company, так что найдите меня!

Вы также можете оставлять сообщения о любых проблемах на github для этого мода!

Похожие Моды/Аддоны

Версия игры *

2.0.37 (FlipMods-ReservedItemSlotCore-2.0.37.zip)