easy.dialog v.3.0.0
Термины и понятия, применяемые в данном руководстве
- Тег — особая метка в тексте, отмечающая вхождение рассматриваемого текста. Теги могут быть открывающие и закрывающие, а так же одиночные. Комплекс из открывающего и закрывающего тегов может называться двойным тегом или сдвоенным тегом.
- Содержимое тега — рассматриваемый текст, место вхождения которого обозначено тегами, или тегом. Может использоваться понятие "значение тега". Числовое значение здесь условно обозначается
[#значение], а текстовое -[$значение]. Вместо слова "значение" может употребляться "число", "текст", "шестнадцатеричное число", и другие слова и словосочетания. Если содержимое тега принимает конечное число значений, это будет показано перечислением этих значений через вертикальную черту в квадратных скобках[одно значение|второе значение|третье значение]. - Диалог — объект, включающий в себя Роли и Реплики, а так же ряд необходимых установок. Именно Диалоги воспроизводятся интерпретатором.
- Команда — слово или группа слов, которые провоцируют выполнение определённых операций или действий, запуск механизмов.
- Конструкция — текст, записанный по определённым правилам.
- Реплика — текст, заключённый между тегами реплик. Может включать в себя произносимую фразу, другие теги, команды, конструкции. Реплики бывают пассивными (questions) и активируемыми (answers). Пассивные реплики как правило отдаются персонажам, с которыми взаимодействует игрок, в то время, как активируемые реплики — являются вариантами выбора, из которых игроку предложено выбирать.
- Герой — персонаж, которым непосредственно управляет игрок.
- Актёр — персонаж, которым игрок не может управлять непосредственно, NPC, непись.
- Фраза — фраза героя или актёра, которая будет выведена на экран после обработки реплики. Фраза (иногда называется "текст реплики") - единственное содержимое реплики, которое не нужно облекать в специальные конструкции, или помещать между тегами.
- Интерпретация реплики — процесс извлечения всех конструкций и фразы из реплики, а так же выполнение конструкций и команд, воспроизведение фразы в виде текста, выводимого на экран.
- Пустая реплика — реплика, в которой отсутствует фраза.
- Узел — реплика, в которую вложена другая реплика.
- Родительская реплика — так называется узел по отношению к реплике, которая в него вложена. Реплика "F" - родительская реплика реплики "A". Ещё называется родителем. Всякий узел является родителем вложенной в него реплики. Родительские реплики могут также называться старшими репликами.
- Дочерняя реплика — так называется реплика по отношению к реплике, в которую она вложена. Реплика "A" - дочерняя реплика реплики "F". Всякая реплика, вложенная в узел, является дочерней. Дочерние реплики также могут называться младшими репликами.
- Корень — реплика, которая не вложена ни в одну другую реплику. Может называться также корневой репликой, нулевой репликой, начальной репликой.
- Значение по умолчанию — значение, которое будет возвращено механизмом модуля "easy.dialog", если не указано, или ошибочно указано другое значение. Значения по умолчанию встроены в движок.
- Уровень — счёт вложений реплик, степень вложения реплики. Если реплика вложена в корень - первый уровень. Если реплика вложена в реплику, вложенную в корень, - второй уровень. И так далее. Верхним (нулевым) уровнем при этом считается корень.
- Ответвления — одноуровненвые реплики, вложенные в один и тот же узел.
- Ветка — ответвление вместе со всеми вложенными в него репликами.
- Финал — реплика, в которую не вложено ни одной другой реплики. Называется так же финальной репликой, конечной репликой, или последней репликой.
- Роль — особый объект, вложенный в объект Диалог, который описывает внешний вид реплик при воспроизведении их от лица определённого персонажа.
Теги, конструкции, команды
{:[$текст]:}— теги, между которыми записываются реплики неиграбельных персонажей (далее: актёры, неписи, NPC, персонажи). Текст реплики выводится на экран автоматически. Теги пассивных реплик.[:[$текст]:]— теги, между которыми записываются реплики персонажа, которым управляет игрок. Выводятся на экран в виде доступных игроку действий. При выборе действия, на экран выводится текст реплики. Теги активируемых реплик.actors="[$список ролей]"— идентификаторы ролей текущего диалога, перечисленные через точку с запятой. Подробнее.dialog_usrid="[$уникальное_название_дилога]"— пользовательский идентификатор диалога. Подробнее.strings:[#число]— число фраз из лога диалога, одновременно видимых на экране. Подробнее.btn_name:[$название кнопки]:btn_name— название кнопки, которое будет отображаться при интерпретации реплики. Подробнее.actor_this:[$роль]— роль, применяемая к конкретной реплике, и не наследуемая вложенными репликами. Подробнее.actor_act:[$роль]— роль для активируемых реплик, наследуемая всеми вложенными репликами. Подробнее.actor_pass:[$роль]— роль для пассивных реплик, наследуемая всеми вложенными репликами. Подробнее.btn_length:[#число]— длина надписи на кнопке, если фраза оказывается слишком длинной. Подробнее.repeat:[one|onced|cycle]— схема воспроизведения пассивных реплик. Подробнее.shuffle:[random|straight]— порядок воспроизведения пассивных реплик. Подробнее.selrepl.del— удаление выбранной реплики на время интерпретации диалога. Подробнее.selrepl.kill— безвозвратное уничтоение реплики. Подробнее.selbtn.del— удаление кнопки из списка кнопок, до последующего воспроизведения. Подробнее.btn.fix— фиксирование кнопки вверху списка. Подробнее.<frase_block>[$блок фраз]</frase_block>— блок фраз, которые выводятся на экран последовательной серией. Подробнее.<if>[$условие]</if>— условие для воспроизведения реплики. Подробнее.<dynamic_code>[$валидный код QSP]</dynamic_code>— динамический код, выполняемый при воспроизведении реплики. Подробнее.marker:[$метка]— уникальная пользовательская метка реплики. Подробнее.levelup:[#число]— воспроизвести реплику на указанное число уровней вверх. Подробнее.leveljump:[$метка]— воспроизвести реплику с указанной пользовательской репликой. Подробнее.closeup— закрыть диалог. Подробнее.replic_app:[$метка]— подключение к диалогу реплики с указанной меткой. Подробнее.<!--[$ текст комментария]-->— комментарий внутри реплики. Подробнее.
Допустимые формы записи тегов и их значений
Значением сдвоенного тега считается весь текст с самого первого символа сразу после открывающего тега, до последнего символа включительно перед закрывающим тегом.
В зависимости от назначения тега, пробельные символы и переводы строки в начале значения, будут игнорироваться или напротив - включаться в значение.
Игнорируются все переводы строк и пробельные символы непосредственно после открывающего тега и непосредственно перед закрывающим для:
- тегов реплик
{: :}и[: :] - тегов
<if></if> - тегов
<dynamic_code></dynamic_code> - тегов
<frase_block></frase_block>
Все переводы строк и пробельные символы сохраняются при получении и обработке значений для:
- тегов
btn_name: :btn_name - тегов
<!-- -->
Это связано всего лишь с методами распознавания содержимого.
Таким образом в качестве значения сдвоенного тега может использоваться абсолютно любой набор символов. Можно включать в значение тега (в зависимости от нужд) переводы строк, пробелы и символы табуляции.
Ни в коем случае нельзя вкладывать одинаковые теги друг в друга. Запись типа
<frase_block>
Фраза
<frase_block>
фраза фраза фраза
</frase_block>
Ещё одна фраза
</frase_block>
недопустима. (Желательно вообще не вкладывать друг в друга теги edsynt, кроме непосредственно предписанных случаев).
Значением одиночного тега считается весь текст, начиная с первого символа непосредственно сразу после тега и заканчивая включительно символом, стоящим перед первым встреченным пробельным символом или переводом строки.
Таким образом в одиночные теги можно помещать только непробельные символы.
Однако, если одиночный тег и его содержимое заключены в скобки, причём между открывающей скобкой и тегом нет пробелов и переводов строки, в значении тега можно использовать и пробелы и переводы строки.
Если же одиночный тег и его значение записываются без скобок, они должны отделяться от остального текста хотя бы одним пробелом или переводом строки.
Если одиночный тег помещается в сдвоенный тег и не заключается в скобки, он должен отделяться от тегов сдвоенного тега хотя бы одним пробелом. Запись типа
недопустима.
Можно использовать запись
или