Переводим статью из архива документации Requiem.
Проблема, которую авторы Requiem хотели решить
При создании маг. эффекта или записи перка часто делаются проверки ключевых слов снаряжения актёра. И пока используются оригинальные ключевые слова, уже существовавшие в Skyrim, всё будет нормально и ваша работа будет иметь высокую совместимость с другими модами. Но тем не менее, эта система ключевых слов имеет серьёзные ограничения, поскольку выполнить одновременно две проверки ключевых слов одного и того же предмета. Можно спросить: "Носит ли этот персонаж снаряжение с ключевым словом ArmorHeavy?" и "Носит ли этот персонаж предмет (в теории - другого типа) с ключевым словом ArmorCuirass?", но не "Носит ли этот персонаж предмет с ключевыми словами ArmorHeavy и ArmorCuirass?"
Для решения этой проблемы пришлось бы создавать ключевое слово-комбинацию ArmorCuirassHeavy, а затем назначать его всем соответствующим предметам. Мало того, что это, мягко говоря, очень трудоёмкий процесс, так вдобавок эта система не будет поддерживать экипировку из других модов. Авторы Requiem столкнулись с этой проблемой при разработке версии 2.0. И для того, чтобы эту проблему решить, в Reqtificator был добавлен новый функционал, который может добавлять новые ключевые слова в записи брони после анализа уже имеющихся кл. слов в этих записях.
Таким образом, усилия по решению этого вопроса ограничиваются лишь трудозатратами на написание правил распространения ключевых слов, а совместимость с другими модами реализует Reqtificator.
Для решения этой проблемы пришлось бы создавать ключевое слово-комбинацию ArmorCuirassHeavy, а затем назначать его всем соответствующим предметам. Мало того, что это, мягко говоря, очень трудоёмкий процесс, так вдобавок эта система не будет поддерживать экипировку из других модов. Авторы Requiem столкнулись с этой проблемой при разработке версии 2.0. И для того, чтобы эту проблему решить, в Reqtificator был добавлен новый функционал, который может добавлять новые ключевые слова в записи брони после анализа уже имеющихся кл. слов в этих записях.
Таким образом, усилия по решению этого вопроса ограничиваются лишь трудозатратами на написание правил распространения ключевых слов, а совместимость с другими модами реализует Reqtificator.
Как это работает - небольшой пример
С каждым плагином, имеющим "Requiem.esp" в списке мастер-файлов, может предоставляться файл "KeywordAssignments_<plugin_name>.conf" в папке "Skyproc Patchers\Requiem\Data". Этот файл содержит правила распространения ключевых слов на экипировку из мода. Это могут быть как полностью новые правила, так и изменения правил из Requiem. Такой файл состоит из двух частей: объявления требуемых ключевых слов и, собственно, правил распространения, называемых "функциями". С помощью особенностей группируются правила, относящиеся друг к другу. Requiem, например, идёт с двумя группами - смена брони в бою и снижение урона от стрел.
Этот фрагмент - всё, что нужно для распространения ключевых слов Requiem, позволяющих вам менять экипировку в разгар боя. Для начала рассмотрим значения из этого фрагмента, а потом синтаксис.
Во-первых, мы объявляем ключевые слова, которые хотим использовать в своих правилах, в этом куске:
Можно определить как простые переменные (changeDuringCombat), так и целые объекты (armorParts {...}), содержащие переменные, для группировки ключевых слов. Ключевые слова задаются их 6-значным formID (без индекса в порядке загрузки), за которым через пробел следует имя содержащего это кл. слово плагина.
Затем мы определяем правило распространения:
Reqtificator расценивает все объекты с именами, начинающимися на "feature", в качестве правил распространения. Правила распространения могут содержать 4 специальные переменные со следующими значениями:
- keywords_none - элементы не должны иметь ни одного из этих кл. слов для соответствия этому правилу,
- keywords_any - элементы должны иметь минимум одно слово из перечисленных для соответствия этому правилу,
- keywords_all - элементы должны иметь все перечисленные кл. слова для соответствия этому правилу
- keywords_assign - список кл. слов, которые должны быть добавлены элементу, соответствующему этому правилу.
Что до синтаксиса, то "[...]" обозначают списки (или массивы, здесь без разницы), а "${ changeDuringCombat }" и "${ armorParts.shield }" - подстановки переменных.
После прочтения Ректификатором наших конфигурационных файлов они будут заменены их определениями, т.е. в конечном итоге это будет выглядеть так:
Таким образом, использование подстановки переменных позволяет использовать понятные имена для ключевых слов вместо использования formID, которые совершенно ничего не говорят о кл. слове, которое представляют.
Подводя итог - этот пример добавит кл. слово смены брони в бою всем щитам, у которых его ещё нет.
Если бы вы изменили эту декларацию так:
...то получили бы от Reqtificator'а патч, позволяющий менять в бою помимо щита ещё и шлем.
Ну, и сводка о синтаксисе:
- objectname {...} - определяет объект, который можно использовать для группировки ключевых слов или для задания правил распределения. Имена объектов для правил должны называться с "feature_"
- variablename = xxxxxxPlugin.esp - определение ключевого слова для последующего использования в подстановках переменных
- ${ variablename } - подстановка переменных
- [...] – список ключевых слов
Комментариев нет:
Отправить комментарий