Перейти к содержимому






- - - - -

Репозитории II: новая версия

Написано Umbakano Jr, 29 мая 2013 · 511 просмотры

Достаточно поигравшись с модом Репозитории (Collector bags v1.0) и столкнувшись с рядом проблем в совместимости, я понял, что надо менять концепцию мода. И менять кардинально. Поэтому, начинаю новый проект с "чистого листа". А поскольку задачи, которые я буду решать, могут заинтересовать начинающих мододелов, постараюсь как можно детальнее проиллюстрировать весь процесс создания мода.

Первым делом попробую сформулировать новый алгоритм.
Но прежде, напомню о назначении или "призвании" мода Репозитории - хранилища по категориям, этакие "бездонные сумки", автоматически сортирующие все попадающие в инвентарь объекты, что избавляет игрока от необходимости постоянно их выкладывать и в то же время, легко доступны.

Главной проблемой первой версии мода стали объекты не подлежащие немедленной сортировке. И если задачу, например, с медвежьими шкурами, которые надо насобирать определенное количество, или Алыми корнями Нирна и тому подобное, можно решить путем создания "стоп-листа", то специальные объекты из DLC HearthFire вообще не видны игроку и не должны перемещаться из инвентаря! Таким образом, правильное решение - это отсутствие действия автосортировки по-умолчанию!

Итак! Цели обозначены, проблемы определены. Попробую представить порядок действий мода, пока в общих чертах.

Объекты попадающие в инвентарь остаются в нем. Игрок создает и редактирует список объектов для автосортировки. В результате, объекты из этого списка, попадая в инвентарь, автоматически сортируются по категориям в хранилища.
Такой подход позволит "штатную" работу квестовым и "невидимым служебным" предметам. Это удобно для изучения новых ингредиентов, которые желательно "съесть", а потом уже собирать, а также для продуктов питания, например, порционные бурдюки с водой желательно оставлять в инвентаре.
Доступ к хранилищам - через удаленную активацию контейнера.


Необходимые шаги по созданию мода:

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

* На каждый контейнер вешаю скрипт, проверяющий поступающий объект на наличие "keyword" характеризующего данную категорию. Это исключит попадание "сторонних" объектов в это хранилище.

* Если в первой версии, любой объект попавший в инвентарь подвергался сортировке, то теперь этого не будет. При попадании объекта в инвентарь ничего не происходит! Это позволит работать игровым скриптам в "штатном" режиме.

* Автосортировка будет производится на основе списка объектов, выбранных игроком. Нужно придумать механизм создания такого списка. В первой версии это был динамически создаваемый FormList.

* Имея список для сортировки, можно использовать функцию AddInventoryEventFilter() для реагирования на событие добавления объекта. Объекты из списка будут автоматически рассортированы по хранилищам.

* Добавление в хранилище объектов "не из списка", т.е. одноразовое, сделать без открытия соответствующего хранилища. Просто выбрав в инвентаре объект и нажав "горячую клавишу" , отправляю его в нужное хранилище. Это значительно сэкономит время обработки и решит проблему с зависанием открытия сундука, время от времени появлявшуюся в первой версии мода.

* Доступ к хранилищам для изъятия объектов. Если организовать доступ через меню, это получится слишком громоздко и не вместится в одно окно, что усложнит скрипт. Вероятно, использую метод из первой версии - создание специальных объектов инвентаря в каждой категории.

* Автовыгрузка перед использованием станков крафтинга. Вероятно, использую метод из первой версии - создание специального объекта инвентаря в категории Разное.

Ну вот, в общих чертах, алгоритм готов и можно приступать к созданию!

Открываем Creation Kit, выбираем пиктограмму Открыть.
В появившемся окошке выделяем флажком файл Skyrim.esm и жмем ОК.
Некоторые модмейкеры выделяют и файл Update.esm, но делать это не нужно!
Это не испортит ваш мод, но может добавить проблем в случае создания патчей на его основе.

Изображение


Первым шагом будет создание контейнеров. В окне Object Window выбираю категорию Container.
Мне важно, как будут выглядеть контейнеры, ведь игроку, при обновлении мода, потребуется с ними взаимодействовать. Поэтому выбираю модель ларцов, они небольшие по размеру и это важно, ведь категорий, а значит и хранилищ, будет много.

Изображение


Для простоты создания, нахожу готовый контейнер, использующий модель StrongBox01 и очищаю его содержимое. Даю ему свое название и имя и при закрытии указываю - создать новую форму.

Изображение

Немного о названиях объектов внутри мода.
Рекомендуется, хотя совсем не обязательно, использовать префиксы в названиях создаваемых объектов. Это значительно облегчает их поиск, выделяет среди встроенных игровых объектов! Префиксы - это произвольные сокращения или легко набираемые аббревиатуры, размещаемые в начале названия объекта и одинаковые в пределах одного мода. Например, xxxNewBox или aaaaNewBox.
Для своих модов я применяю сокращения от английского названия файла плагина, в данном случае CB_, поскольку файл называется Collector bags.



Создав этот объект, можно сохранить мод.
Жмем на пиктограмму Сохранить и, в появившемся окне, вписываем название для своего плагина.
Название должно быть на английском языке, точнее, использовать символы английского алфавита, и очень желательно, информативным - чтобы по названию можно было бы понять о чем он.

Изображение

Сохранив свою работу, закрываем Creation Kit. Продолжим завтра...
Продолжение здесь.