easy.dialog
Краткое описание модуля. Страница первая
Краткое описание
Термины и понятия
Тег — особая метка в тексте, отмечающая вхождение рассматриваемого текста. Теги могут быть открывающие и закрывающие, а так же одиночные. Комплекс из открывающего и закрывающего тегов может называться двойным тегом или сдвоенным тегом.
Содержимое тега — рассматриваемый текст, место вхождения которого обозначено тегами или тегом. Может использоваться понятие "значение тега". Числовое значение здесь условно обозначается [#значение]
, а текстовое - [$значение]
. Вместо слова "значение" может употребляться "число", "текст", "шестнадцатеричное число", и другие слова и словосочетания. Если содержимое тега принимает конечное число значений, это будет показано перечислением этих значений через вертикальную черту в квадратных скобках [одно значение|второе значение|третье значение]
.
Команда — слово или группа слов, которые провоцируют выполнение определённых операций или действий, запуск механизмов.
Конструкция — текст, записанный по определённым правилам.
Реплика — текст, заключённый между тегами реплик. Может включать в себя произносимую фразу, другие теги, команды, конструкции.
Герой — персонаж, которым непосредственно управляет игрок.
Актёр — персонаж, которым игрок не может управлять непосредственно.
Текст реплики — фраза героя или актёра, которая будет выведена на экран после обработки реплики. Текст реплики (иногда называется просто "фраза") - единственное содержимое реплики, которое не нужно облекать в специальные конструкции, или помещать между тегами.
Интерпретация реплики — процесс извлечения всех конструкций и текста реплики из реплики, а так же выполнение конструкций и команд, воспроизведение фразы в виде текста, выводимого на экран. За интерпретацию реплики отвечает процедура dialog.replic.int
.
Пустая реплика — реплика, в которой отсутствует фраза.
Узел — реплика, в которую вложена другая реплика.
Родительская реплика — так называется узел по отношению к реплике, которая в него вложена. Реплика "F" - родительская реплика реплики "A". Ещё называется родителем. Всякий узел является родителем вложенной в него реплики.
Дочерняя реплика — так называется реплика по отношению к реплике, в которую она вложена. Реплика "A" - дочерняя реплика реплики "F". Всякая реплика, вложенная в узел, является дочерней.
Корень — текст, помещённый вне тегов реплик. Может называться также корневой репликой, нулевой репликой, начальной репликой или заголовком диалога.
Дефолтное значение — значение тега, которое было указано в заголовке диалога, либо значение по умолчанию.
Значение по умолчанию — значение, которое будет возвращено механизмом модуля easy.dialog, если не указано, или ошибочно указано другое значение. Значения по умолчанию встроены в движок.
Уровень — счёт вложений реплик, степень вложения реплики. Если реплика вложена в корень - первый уровень. Если реплика вложена в реплику, вложенную в корень, - второй уровень. И так далее. Верхним уровнем при этом считается корень.
Ответвления — одноуровненвые реплики, вложенные в один и тот же узел.
Ветка — ответвление вместе со всеми вложенными в него репликами.
Финал — реплика, в которую не вложено ни одной другой реплики. Называется так же финальной репликой, конечной репликой, или последней репликой.
Тело диалога — текст, содержащий хотя бы одну реплику помимо корня.
Теги, конструкции, команды
— теги, между которыми записываются реплики неиграбельных персонажей (далее: актёры, неписи, NPC, персонажи). Текст реплики выводится на экран автоматически. Теги реплики актёра.{:
[$текст]:}
— теги, между которыми записываются реплики персонажа, которым управляет игрок (далее - герой). Выводятся на экран в виде доступных игроку действий. При выборе действия, на экран выводится текст реплики. Теги реплики героя.[:
[$текст]:]
— конструкция, в которую помещаются настройки вывода фраз актёра.npc="
[$настройки]"
— конструкция, в которую помещаются настройки форматирования и формирования фраз героя.hero="
[$настройки]"
— двойной тег установки имени актёра или героя (в зависимости от того, в какую конструкцию помещено). Если указать пустое значение (между двоеточиями нет ничего), имя не будет выводиться. Если не указывать, будет выводиться имя, указанное в родительской реплике, либо дефолтное имя. Значением может быть любое сочетание пробельных и непробельных символов. Не рекомендуется использовать символ перевода строки.name:
[$значение]:name
— одиночный тег настройки цвета имени актёра или героя (в зависимости от того, в какую конструкцию помещено). Значением может выступать запись из шести шестнадцатеричных цифр. Формат цвета как в html: RRGGBB. Если не указывать, или оставить значение пустым, будет выводиться значение родительской реплики, или дефолтное.ncolor:
[$значение]
— одиночный тег настройки цвета непосредственно фразы актёра или героя (в зависимости от того, в какую конструкцию помещено). Значением может выступать запись из шести шестнадцатеричных цифр. Формат цвета как в html: RRGGBB. Если не указывать, или оставить значение пустым, будет выводиться значение родительской реплики, или дефолтное.fcolor:
[$значение]
— одиночный тег настройки стиля начертания шрифта имени актёра или героя (в зависимости от того, в какую конструкцию помещено). Значением выступают команды аттрибутов, в любом количестве. Если не указывать, или оставить значение пустым, будет выводиться значение родительской реплики, или дефолтное.nattrib:
[$значение]
— одиночный тег настройки стиля начертания шрифта фразы актёра или героя (в зависимости от того, в какую конструкцию помещено. Значением выступают команды аттрибутов, в любом количестве. Если не указывать, или оставить значение пустым, будет выводиться значение родительской реплики, или дефолтное.):fattrib:
[$значение]
— команда аттрибута, применяющая жирность к тексту.-b
— команда аттрибута, применяющая курсив к тексту.-i
— команда аттрибута, отменяющая жирность и курсив.-n
Аттрибуты считываются в обратном порядке, начиная с последнего, таким образом происходит и применение. Допустим, мы не хотим, чтобы имя героя отображалось курсивом, но продолжало отображаться жирным шрифтом. Пишем "natrib:-b-n". Сначала шрифт вернётся к нормальному виду, потом будет применена жирность. Если указать "natrib:-n-b", то сначала будет применена жирность, а потом шрифт вернётся к нормальному виду.
tire:
[$значение] — одиночный тег, значение которого определяет символ, выводимый перед фразой (знак мыслеотделительный, знак перед прямой речью). Если не указано, выводится значение родительской реплики, или дефолтное. Если тег и его значение отделяются от остального текста пробелами, можно указывать только непробельные символы. Чтобы использовать пробельные символы в качестве знака перед прямой речью, следует поместить тег и его значение в круглые скобки:(
tire:
[$значение])
Чтобы перед прямой речью не ставилось никаких знаков, следует использовать команду nope
:
tire:
nope
— конструкция, в которую помещаются настройки выбора, обработки и вывода реплик.replics="
[$настройки]"
— одиночный тег, значение которого определяет настройки повтора фраз актёра из ответвлений. Можно использовать три команды:repeat:
[one|once|cicle]
one
— всё время диалога будет выводиться фраза только одного из ответвлений.
once
— всякий раз будет выводиться фраза из ответвления, фраза которого ещё не выводилась. Когда такие ответвления закончатся, будет выводиться фраза ответвления, фраза из которого выводилась последний раз.
cicle
— всякий раз будет выводиться фраза из следующего ответвления. Когда закончатся ответвления, фразы из которых ещё не выводились, выбор следующего ответвления пойдёт с начала.
— одиночный тег, значение которого определяет настройки выбора следующего ответвления для реплик актёра. Можно использовать две команды:repeat:
[random|straight]
random
— случайный выбор ответвления.
straight
— выбор следующего ответвления в порядке очереди, в которой они записаны в теле диалога.
— сдвоенный тег, значение которого используется в качестве условия вывода реплики.iffing:
[$условия]:iffing
— сдвоенный тег, значение которого используется в качестве названия действия при интерпретации реплики героя.
act-name:
[$текст]:act-name
— конструкция вывода блока последовательных фраз. Между тегами размещается набор строк, каждая из которых считается отдельной фразой. При этом если в начале фразы выставлен тег frase-block:
[$текст]:frase-block
<npc-name>
, к ней применяются настройки фразы актёра, если же в начале фразы выставлен тег
, к ней применяются настройки фразы героя.<hero-name>
— между этими тегами помещается обычный код QSP, который будет выполнен во время интерпретации реплики.dynamic-code:
[$текст]:dynamic-code
— команда в виде одиночного тега, которая "возвращает" интерпретатор на несколько уровней вверх по узлам.levelup:
[#число]
— команда в виде одиночного тега, которая отправляет интерпретатор к реплике, содержащей указанную метку. Метка указывается в значении тега.leveljump:
[$метка]
— одиночный тег, значение которого считается меткой реплики.marker:
[$метка]
— команда, наличие которой в интерпретируемой реплике приведёт к закрытию диалога.closeup
— команда, наличие которой в интерпретируемой реплике приведёт к удалению текущего действия из списка без обновления списка.selectact.delete
— открывающий и закрывающий теги комментария. В комментарии можно помещать всё, кроме фраз актёров и героя и других комментариев. Комментарии можно размещать в любом месте диалога, но не между тегами <!--
[$комментарий]-->
dynamic-code: :dynamic-code
и iffing: :iffing
. При наличии внутри комментариев описанных выше тегов и комманд, следует отделять их от тегов комментария хотя бы одним пробелом. Текст комментариев не выводится на экран.
Планируемые решения
Нижеследующие команды и конструкции возможно будут введены в версии модуля 2.0. Названия и принцип действия могут отличаться от приведённых ниже.
— настройка задержки вывода на экран фраз из блока фраз. В настоящий момент задержка существует, но не настраивается из-под диалога. Предшествует каждой отдельной фразе в т.ч. и без указания тегов bwaiting:
[#миллисекунды]
и <npc-name>
.<hero-name>
— настройка задержки вывода на экран текста реплики.rwaiting:
[#миллисекунды]
selectreplic.delete
— команда удаления реплики из диалога. Реплика удаляется из текущего диалога. Если закрыть и вновь открыть диалог, реплика вновь появится в ветке.
selectreplic.kill
— команда удаления реплики из диалога. Реплика удаляется из диалога насовсем. То есть если закрыть диалог, а потом вновь открыть, реплика не появится в ветке.
— конструкция, в которую помещаются настройки стандартного действия закрытия диалога. Стандартное действие - это действие, которое будет появляться в списке действий постоянно.act-close="
[$настройки]"
— конструкция, в которую помещаются настройки стандартного действия, возвращающего на несколько узлов вверх. В частности такое действие должно возвращать к последнему узлу, где обновлялся список действий.act-up="
[$настройки]"
Возможно будет введена конструкция описания стандартных действий/реплик героя, которые должны повторяться на протяжении всей ветки диалога.
- вместо настроек перечисляются метки стандартных реплик. Сами реплики располагаются в скрытой ветке.act-standart="
[$настройки]"