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






- - - - -

Requiem 2.0. Автораспределение ключевых слов через Reqtificator. Часть 1 - смена экипировки в бою

Написано Vitalyudin, 18 Март 2018 · 247 просмотры

requiem 2.0 reqtificator
Перевод первой части статьи из архива документации о Requiem.


Проблема, которую авторы Requiem хотели решить


При создании маг. эффекта или записи перка часто делаются проверки ключевых слов носимого актёром снаряжения. И пока используются оригинальные ключевые слова, уже существовавшие в Skyrim, всё будет нормально и ваша работа будет иметь высокую совместимость с другими модами. Но тем не менее, эта система ключевых слов имеет серьёзные ограничения, поскольку нельзя выполнить одновременно две проверки ключевых слов одного и того же предмета. Можно спросить: "Носит ли этот персонаж снаряжение с ключевым словом ArmorHeavy?" и "Носит ли этот персонаж предмет (в теории - другого типа) с ключевым словом ArmorCuirass?", но не "Носит ли этот персонаж предмет с ключевыми словами ArmorHeavy и ArmorCuirass?"
Для решения этой проблемы пришлось бы создавать ключевое слово-комбинацию ArmorCuirassHeavy, а затем назначать его всем соответствующим предметам. Мало того, что это, мягко говоря, очень трудоёмкий процесс, так вдобавок эта система не будет поддерживать экипировку из других модов. Авторы Requiem столкнулись с этой проблемой при разработке версии 2.0. И для того, чтобы эту проблему решить, в Reqtificator был добавлен новый функционал, который может добавлять новые ключевые слова в записи брони после анализа уже имеющихся кл. слов в этих записях.
Таким образом, усилия по решению этого вопроса ограничиваются лишь трудозатратами на написание правил распространения ключевых слов, а совместимость с другими модами реализует Reqtificator.

Как это работает - небольшой пример

С каждым плагином, имеющим "Requiem.esp" в списке мастер-файлов, может предоставляться файл "KeywordAssignments_<plugin_name>.conf" в папке "Skyproc Patchers\Requiem\Data". Этот файл содержит правила распространения ключевых слов на экипировку из мода. Это могут быть как полностью новые правила, так и изменения правил из Requiem. Такой файл состоит из двух частей: объявления требуемых ключевых слов и, собственно, правил распространения, называемых "функциями". С помощью этих функций группируются правила, относящиеся друг к другу. Requiem, например, идёт с двумя группами - смена брони в бою и снижение урона от стрел (инфо о резистах к стрелам будет во второй части).
/// Распределение ключевых слов смены экипировки в бою

armorParts {
    boots = 06C0ED Skyrim.esm
    cuirass = 06C0EC Skyrim.esm
    gauntlets = 06C0EF Skyrim.esm
    helmet = 06C0EE Skyrim.esm
    shield = 0965B2 Skyrim.esm
}

changeDuringCombat = 94EABF Requiem.esp

feature_armorChangeInCombat {
    keywords_none = [ ${ changeDuringCombat } ]
    keywords_any = [ ${ armorParts.shield } ]
    keywords_assign = [ ${ changeDuringCombat } ]
}
Этот фрагмент - всё, что нужно для распространения ключевых слов Requiem, позволяющих вам менять экипировку в разгар боя. Для начала рассмотрим значения из этого фрагмента, а потом синтаксис.

Во-первых, мы объявляем ключевые слова, которые хотим использовать в своих правилах, в этом куске:
armorParts {
    boots = 06C0ED Skyrim.esm
    cuirass = 06C0EC Skyrim.esm
    gauntlets = 06C0EF Skyrim.esm
    helmet = 06C0EE Skyrim.esm
    shield = 0965B2 Skyrim.esm
}

changeDuringCombat = 94EABF Requiem.esp
Можно определить как простые переменные (changeDuringCombat), так и целые объекты (armorParts {...}), содержащие переменные, для группировки ключевых слов. Ключевые слова задаются их 6-значным formID (без индекса в порядке загрузки), за которым через пробел следует имя содержащего это кл. слово плагина.

Затем мы определяем правило распространения:
feature_armorChangeInCombat {
    keywords_none = [ ${ changeDuringCombat } ]
    keywords_any = [ ${ armorParts.shield } ]
    keywords_assign = [ ${ changeDuringCombat } ]
}
Reqtificator расценивает все объекты с именами, начинающимися на "feature", в качестве правил распространения. Правила распространения могут содержать 4 специальные переменные со следующими значениями:
  • keywords_none - элементы не должны иметь ни одного из этих кл. слов для соответствия этому правилу,
  • keywords_any - элементы должны иметь минимум одно слово из перечисленных для соответствия этому правилу,
  • keywords_all - элементы должны иметь все перечисленные кл. слова для соответствия этому правилу,
  • keywords_assign - список кл. слов, которые должны быть добавлены элементу, соответствующему этому правилу.
Что до синтаксиса, то "[...]" обозначают списки (или массивы, здесь без разницы), а "${ changeDuringCombat }" и "${ armorParts.shield }" - подстановки переменных.

После прочтения Ректификатором наших конфигурационных файлов эти обозначения будут заменены их определениями, т.е. в конечном итоге это будет выглядеть так:
feature_armorChangeInCombat {
    keywords_none = [ "94EABF Requiem.esp" ]
    keywords_any = [ "0965B2 Skyrim.esm" ]
    keywords_assign = [ "94EABF Requiem.esp" ]
}
Таким образом, использование подстановки переменных позволяет использовать понятные имена для ключевых слов вместо использования formID, которые совершенно ничего не говорят о кл. слове, которое представляют.
Подводя итог - этот пример добавит кл. слово смены брони в бою всем щитам, у которых его ещё нет.
Если бы вы изменили эту декларацию так:
feature_armorChangeInCombat {
    keywords_none = [ ${ changeDuringCombat } ]
    keywords_any = [ ${ armorParts.shield } ${ armorParts.helmet } ]
    keywords_assign = [ ${ changeDuringCombat } ]
}
...то на выходе получили бы от Reqtificator'а патч, позволяющий менять в бою помимо щита ещё и шлем.

Ну, и сводка о синтаксисе:
  • objectname {...} - определяет объект, который можно использовать для группировки ключевых слов или для задания правил распределения. Имена объектов для правил должны называться с "feature_",
  • variablename = xxxxxx Plugin.esp - определение ключевого слова для последующего использования в подстановках переменных,
  • ${ variablename } - подстановка переменных,
  • [...] – список ключевых слов.






Обратные ссылки на эту запись [ URL обратной ссылки ]

Обратных ссылок на эту запись нет

Сентябрь 2018

П В С Ч П С В
     12
3456789
10111213141516
171819202122 23
24252627282930