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, кроме непосредственно предписанных случаев).
Значением одиночного тега считается весь текст, начиная с первого символа непосредственно сразу после тега и заканчивая включительно символом, стоящим перед первым встреченным пробельным символом или переводом строки.
Таким образом в одиночные теги можно помещать только непробельные символы.
Однако, если одиночный тег и его содержимое заключены в скобки, причём между открывающей скобкой и тегом нет пробелов и переводов строки, в значении тега можно использовать и пробелы и переводы строки.
Если же одиночный тег и его значение записываются без скобок, они должны отделяться от остального текста хотя бы одним пробелом или переводом строки.
Если одиночный тег помещается в сдвоенный тег и не заключается в скобки, он должен отделяться от тегов сдвоенного тега хотя бы одним пробелом. Запись типа
недопустима.
Можно использовать запись
или