Conversation plots and scripting/ru

From Dragon Age Toolset Wiki
Jump to: navigation, search
Программирование диалогов
Начало / Русская DA Builder Wiki / Поделиться ВКонтакте
Диалоги
все статьи категории
функции, связанные с диалогами
события, связанные с диалогами

Вкладка "Plots and Scripting" на панели вкладок ниже окна реплик содержит несколько параметров, позволяющих использовать Plot-файлы и скрипты для создания интерактивных диалогов, то есть диалогов, зависимых от состояния мира игры и, в тоже время, способных оказать на него влияние:

Conversation plots and scripting.png

  • Так как действие скриптов не очевидно при просмотре редактора диалогов, то на вкладке предусмотрено поле "Scripting comments", позволяющее описать действие скрипта.

Раздел "Условие (Condition)" для реплики

Conversation plots and scripting condition.png

Использование Plot-файлов

Раздел "Условие" используется для определения, будет ли реплика использоваться в диалоге. Для того, чтобы использование реплики зависело от значения определённого флага в Plot-файле:

  • Выберите Plot-файл в выпадающем списке "Plot", либо, в случае если в редактируемом диалоге данный Plot-файл ещё не использовался, нажмите на кнопку (Ellipsis.png) и выберите его из доступных Plot-файлов.
  • Затем в выпадающем списке "Flag" выберите из имеющихся в Plot-файле требуемый вам флаг.
  • Укажите условие на значение этого флага, при котором реплика будет использоваться в диалоге("is true" - истина, "is false" - ложь).

Несколько примеров использования:

  • Диалог НПС, который даёт Герою задание. В таком диалоге будут различные варианты реплик как НПС, так и Героя, в зависимости от того, принято ли задание и в каком оно состояние.
  • Диалог со спутником, реплики в котором зависят от уровня отношений спутника и Героя, то есть если уровень отношений изменяется, то в диалоге появляются новые реплики.
  • Диалог НПС, реплики в котором зависят от знания Героем какой-либо информации.

Использование скриптов

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

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

Чтобы использовать скрипт в качестве условия для реплики выберите в выпадающем меню "Script" необходимый вам (в случае, если в списке он отсутствует, выберите используя кнопку выбора).

Скрипты, ассоциированные с диалогом, должны иметь следующий формат:

int StartingConditional()
{
    return 1;
}

Если скрипт возвратит значение "Истина (TRUE)", линия, которой он назначен в качестве условия, будет использована в диалоге.

Внимание:

Последняя реплика каждого ответвления ветки не должна иметь условий на своё использование (и комментариев)! Это гарантирует, что диалог не зайдёт в тупик, если ни одно из условий не выполнится. Для примера: В диалоге есть две реплики, которые зависят от пола Героя. В данном случае только одна из реплик должна иметь условие на пол Героя. Вторая реплика должна использоваться по умолчанию.

Скрипт, вызываемый репликой диалога, может передавать в качестве параметра число типа Integer, которое восстанавливается функцией GetConversationEntryParameter. Обратите внимание, что по состоянию на 18 ноября эта функция работает ещё некорректно. Для исправления этого требуется патч.

Общие условия

Существует несколько общих условий, которые могут использоваться при создании диалогов, определённых в Plot-файлах, именуемых "generic". Значения флагов определяются скриптами обработки событий, ассоциированными с такими Plot-файлами.

Для определения класса, расы или пола, используйте общий Plot-файл "gen00pt_class_race_gend":

  • GEN_RACE_ELF - true - если эльф.
  • GEN_RACE_HUMAN - true - если человек.
  • GEN_RACE_DWARF - true - если гном.
  • GEN_GENDER_MALE - true - если мужчина.
  • GEN_GENDER_FEMALE - true - если женщина.
  • GEN_CLASS_* - флаг для определения базовых классов. True - если у существа есть этот класс.

Для генерации случайного шанса использования реплики используйте Plot-файл "gen00pt_random". Позволяет создать элемент случайности и обычно используется для подшучивания или предоставления Герою интересной информации, которая не критична для выполнения заданий.

Есть два набора флагов в "gen00pt_random plot". Основной набор, который определяет в процентах шанс на возвращение истинного "TRUE" значения:

  • GEN_R5 - 5%
  • GEN_R10 - 10%
  • GEN_R25 - 25%
  • GEN_R30 - 30%
  • GEN_R33 - 33%
  • GEN_R50 - 50%

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

The format of the LINES_LEFT flags is GEN_RAND_RXX Where XX is the total number of random elements left in the series of randoms after the current line. Naturally, GEN_RAND_LINES_LEFT_01 has a 50% chance of being chosen. The very last dialogue line does not need a condition. For the statistically-minded, the probabilities are:

  • GEN_RAND_LINES_LEFT_15: 6.25%
  • GEN_RAND_LINES_LEFT_14: 6.67%
  • GEN_RAND_LINES_LEFT_13: 7.14%
  • GEN_RAND_LINES_LEFT_12: 7.69%
  • GEN_RAND_LINES_LEFT_11: 8.33%
  • GEN_RAND_LINES_LEFT_10: 9.09%
  • GEN_RAND_LINES_LEFT_09: 10.00%
  • GEN_RAND_LINES_LEFT_08: 11.11%
  • GEN_RAND_LINES_LEFT_07: 12.50%
  • GEN_RAND_LINES_LEFT_06: 14.29%
  • GEN_RAND_LINES_LEFT_05: 16.67%
  • GEN_RAND_LINES_LEFT_04: 20.00%
  • GEN_RAND_LINES_LEFT_03: 25.00%
  • GEN_RAND_LINES_LEFT_02: 33.33%
  • GEN_RAND_LINES_LEFT_01: 50.00%

Действия, запускаемые репликой

Conversation plots and scripting action.png

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

Процедура задания для реплики запускаемого ею действия по установке значения флага подобна процедуре задания условия, с той разницей, что вместо условий в выпадающем списке справа от названия Plot-файла необходимо выбрать действие, которое выполняется при использовании реплики:

  • "set" - установить (TRUE)
  • "clear" - сбросить (FALSE)

Действия по запуску скрипта работают как обычно и запускаются, когда:

  • Для реплик Героя: в момент, когда игрок кликает на реплике.
  • Для реплик НПС: в момент, когда НПС начинает проговаривать реплику.

Запуск скриптов в основном используется для вознаграждения Героя, отъёму/передаче предметов и установки флагов в Plot-файлах.

Когда предметы передаются скрипт не проигрывает соответствующую анимацию. Анимация должна настраиваться отдельно.

Общие действия

Для простоты запуска некоторых часто используемых действий используется Plot-файл "gen00pt_generic_actions", установка флагов в котором запускает его скрипт, который, в соответствии с установленным флагом, выполняет некое действие. Ниже приведён список таких флагов:

  • GEN_AUTOSAVE - автосохранение.
  • GEN_CURE_PC_INJURIES - удаление всех повреждений со всех спутников в активной партии.
  • GEN_DIALOG_FADE_IN - !!кажется, скрипт не содержит код, обрабатывающий установку этого флага!!
  • GEN_DIALOG_FADE_OUT - !!кажется, скрипт не содержит код, обрабатывающий установку этого флага!!
  • GEN_EXIT_DESTROY - владелец диалога идёт к ближайшему выходу (объект с тэгом "wp_exit_generic") и уничтожается
  • GEN_OPEN_ENCHANTING - opens the item upgrade GUI.
  • GEN_OPEN_STORE - открывает лавка (en), которая имеет тэг "store_" + тэг владельца диалога (например, если владелец диалога - "blacksmith_steve", то откроется лавка с тэгом "store_blacksmith_steve").
  • GEN_OWNER_DIES - владелец диалога падает замертво.
  • GEN_OWNER_DISAPPEARS - владелец диалога исчезает (разрушается).
  • GEN_OWNER_MOVES_HOME - владелец диалога возвращается в его домашнюю (home) точку на локации (по умолчанию, точка где он изначально инициализировался).
  • GEN_OWNER_TURNS_HOSTILE - владелец диалога пропитывается к Герою враждебностью и нападает на него.
  • GEN_TEAM_TURNS_HOSTILE - все собеседники в диалоге становятся врагами и нападают.
  • GEN_TEAM_WALKS_TO_EXIT - как и GEN_EXIT_DESTROY, но уходят все члены команды, к которой принадлежит владелец диалога.

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

Ограничение количества использований реплик

Conversation plots and scripting line settings.png

В самом низу вкладки "Plots and Scripting" есть раздел "Line Settings" с параметром "Visibility", использованием которого можно установить, использовать реплику в диалоге постоянно, один раз за диалог или один раз за игру.

  • "Один раз за диалог" - когда в диалоге используются ссылки, которые могут вернуть диалог на уже отработанную ветку, но некоторые реплики этой ветки должны прозвучать только один раз за игру (например Герой задал вопрос, получил ответ и диалог возвращается к списку вопросов, а вопрос, ответ на который уже получен, отображаться не должен).
  • "Один раз за игру" - когда реплика содержит информацию, которую повторять при каждом запуске диалога нет смысла.

В этом разделе также есть флаг "ambient".

The ambient flag prevents the default conversation cinematics from operating, leaving the camera view where it was and instead putting the text of the spoken line hovering over the head of the object that spoke it. This is intended for use when generating background conversations for the player to "overhear", or that is a quick one-line response to player interaction that doesn't require a full-blown conversation to play out.

Корневой узел диалога

Вкладка "Plots and Scripting" также присутствует и при выбранном корневом узле диалога:

Conversation root plots and scripting.png

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


Язык: English  • русский