FOnline
 Указатель Классы Функции Переменные Группы Страницы
Редактор диалогов

Общее описание возможностей и функций
Редактор диалогов (DialogEditor) представляет собой программу для написания внутриигровых диалогов.

Для запуска потребуется NET Framework 2.0. Для удобства, можете ассоциировать расширение .fodlg с редактором. Основное окно программы состоит из двух разделов - редактора диалогов и редактора переменных.

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

  • Функция "Добавить дерево" добавляет языковой раздел в диалог. Стандартом являются разделы russ и engl, название раздела должно быть строго 4 символа в длину.
  • Для того, чтобы начать редактирование диалога, необходимо добавить как минимум одно дерево.
  • Все деревья имеют одну структуру и различаются только строками. Редактировать структуру дерева диалога (добавлять или удалять диалоги, ответы, результаты и условия) возможно только у основного дерева. В редакторе основное дерево всегда располагается в первой вкладке. Необходимо отметить, что добавление новых узлов (диалогов, ответов, результатов, условий) в блоке редактирования производится в основное дерево, а не в дерево, вкладка которого открыта в данный момент.

Информация
Вкладка "Информация" отвечает за отображаемые данные объекта (НПЦ), которому установлен данный диалог.

  • Имя - отображаемое имя НПЦ.
  • Аватар - имя картинки аватара НПЦ (устарело, сейчас не используется).
  • Краткое и полное описание - первое показывается просто при наведении курсора на НПЦ, а второе - при осмотре его биноклем.
  • Переключатель "живой-без сознания-мертвый-жестокая смерть" позволяет изменить краткое и полное описание НПЦ для раличных его состояний. (Пример: Это лежит трупик Кенни. Сволочи!)
  • Номер - номер текущего набора описания. Можно сделать сколько угодно разных описаний (под разными номерами), выбор будет осуществляться случайным образом.

Диалог
Вкладка "Диалог" служит для добавления реплик НПЦ. Все внутреннее взаимодействие в диалоге осуществляется посредством перехода с одной реплики на другую. Нельзя ссылаться на несуществующую реплику. Если реплика была удалена из диалога, то, при созданной ранее ссылке на нее, возникнет ошибка ("Битая ссылка диалога" в Чате игры).

  • Текст диалога - непосредственно текст. Возможна вставка тегов.
  • Номер диалога - отображаемый внутренний номер диалога. Должен быть уникальным для каждой реплики.
  • Auto ID - автоматическое присвоение номера к диалогу. Если включено - следующему диалогу будет присвоен следующий доступный номер. Пример: Имеются диалоги [2], [3] и [10]. При включенном Auto ID и добавленном варианте [3], следующий вариант будет с номером [4]. Если добавить вариант [9], то следущий будет уже с номером [11]. Скрипт - запускаемый скрипт. Стандартные варианты - None (закрыть диалог в случае отсутствия ответа игрока) и Attack (напасть на игрока в случае отсутствия ответа). Возможно использование любых иных скриптов. Более подробно этот вопрос рассматривается на странице Работа с диалогом в разделе Функции диалога.
  • Не перемешивать ответы - включает\выключает перемешивание ответов в диалоге. Перемешивание также можно отключить в настройках сервера. По умолчанию: включено.
  • При отсутствии вариантов ответа на какую-либо реплику, она будет отображаться непосредственно над головой НПЦ вне диалогового окна (то есть как обычный разговор).

Ответ
Данная вкладка описывает возможные ответы игрока на реплики НПЦ. Именно на ответы устанавливаются условия, результаты и переходы к другим диалогам.

  • Текст ответа - текстовая часть ответа. Возможно использование тегов.
  • К диалогу - если выбрано, при данном варианте ответа осуществится переход к указанному диалогу. В редакторе имеет вид [->X], где Х - номер реплики НПЦ.
  • Другой - если выбрано, при данном варианте ответа осуществится указанное действие из списка - атака, бартер, закрытие диалога и возврат к предыдущему диалогу.

Условие
Вкладка "Условие" служит для определения условий, согласно которым отображаются те или иные варианты ответов. Прикреплять условия можно только к ответам игрока.

  • Условие может быть установлено для игрока или для НПЦ. Некоторые условия можно установить только на игрока (репутация, количество убийств)
  • Использование условий очевидно, а вариантов очень много. На один ответ можно повесить несколько разных условий. При работе с переменными, целесообразно проверять точный статус нужной переменной через "равно". Если х_х_х = 0 - показать вариант с получением квеста.
  • Скрипт: поставьте скрипт со специфической проверкой. Впишите имя скрипта (самого файла), потом функцию через "@". Для функций скриптовых проверок в диалогах используются названия с префиксом "d_" (demand). Скрипту можно передавать до пяти аргументов - для того, чтобы одной и той же функцией можно было проверять любое числовое значение, вписанное в аргумент.
  • Кнопка "Или" добавляет оператор "OR" между условиями. По умолчанию условия перечисляются через оператор "AND".

Результат
Вкладка "Результат" отвечает за возможные последствия при выборе ответа. Результаты так же прикрепляются только к вариантам ответа.

  • Результат может применяться как к игроку, так и к НПЦ. Можно отобрать у игрока 100 монет и добавить НПЦ 100 монет, тем самым сделав "передачу денег".
  • Возможно выполнение специального скрипта, указанного в поле "скрипт". Скрипту также можно передавать до пяти аргументов.
  • Результат может принимать пять значений - плюс, минус, разделить, умножить и приравнять.
  • В остальном, использование результатов аналогично использованию условий.

Строки
Вкладка "Строки" служит для использования строк в скриптах (например, сюда можно вписать фразы НПЦ, вызываемые над его головой скриптом как реакция на какие-то действия игрока).

Комментарии
На вкладке "Комментарии" можно оставлять комментарии по работе диалога, различные пометки и изменения.

Преддиалоговые установки
После создания нового \ открытия существующего диалога, вариант [1] является преддиалоговыми установками. К ним движок обращается, когда игрок активирует диалог с НПЦ, они определяют, с какой фразы начнется разговор. Сам текст "преддиалоговые установки" или ответы на него нигде в игре не отображаются. К этому варианту можно добавить ответы с определенными условиями, результатами и переходом к другим вариантам. В зависимости от условий, будет осуществлен переход к указанному диалогу. Можно использовать, например, для определения интеллекта игрока и перехода к обычной ветке (условие - интеллект больше 3) или к тупому варианту (условие - интеллект меньше четырех). Если с преддиалоговых установок не ведет никаких ответов, или нет ответов, которые соответствуют каким-то условиям, то диалог попросту не начнется.

Теги в диалогах

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

Тэг @sex@
Этот тэг позволяет задать альтернативы содержимого строки, которые будут выбираться в зависимости от пола игрока.

Формат тега:

@sex@|<строка для игрока мужского пола>||<строка для игрока женского пола>|

Пример типичного использования в диалоге:

Диалог: Привет, @sex@|братишка||сестричка|! Чего-нибудь надо?
Ответ: Да нет, ничего. Просто проходил@sex@|||а| мимо.

Тэги @pname@ и @nname@
Вместро тэга @pname@ в строку подставляется имя игрока, а вместо @nname@ - имя НПЦ, с которым ведется диалог.

Пример типичного использования в диалоге:

Диалог: Привет, @pname@!
Ответ: Привет, @nname@.

Тэг @@
Этот тэг позволяет добиваться относительного разнообразия в репликах НПЦ и игроков. Например, нищий на улице может в различной форме выражать свое недовольство жизнью, или торговец при предложении своего товара, вместо одной и той же реплики, может спрашивать: "Что-нибудь еще?", или "У меня, как-никак, отличный выбор и отличные цены. Хотите взглянуть?", или "Сегодня отличный день. Ничего не хотите приобрести?" и т. д. и т. п.

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

Пример типичного использования в диалоге:

Диалог: Привет.@@Привет!@@Здаров.

В результате НПЦ каждый раз будет приветствовать игрока по-разному (или не совсем, тут уж все решает алгоритм генерации случайных чисел).