Часть 8. Текстовые блоки
В одной из прошлых частей мы изучали базовые теги для Шагов (<step>):
| Тег | Что делает |
|---|---|
<intro> </intro> | Вступительный текст при переходе на шаг. При использовании в #start появится при первом обращении к NPC. Показывается только 1 раз Важно: Никогда не используйте <intro> без <desc>, если на этом шаге есть повторное обращение к NPC. Иначе при повторном разговоре будет пустой экран с зависшим управлением |
<desc> </desc> | Появляется при повторном обращении к NPC на текущем шаге. Может полностью заменять <intro>, но тогда текст будет одинаковым при первом и последующих обращениях. |
<finish> </finish> | Рекомендуется использовать в последнем шаге (#end или его заменителе). Показывается 1 раз после завершения квеста. Эдакая «прощальная фраза». Для повторяемых квестов обязательно дублируйте в <desc> |
Их можно использовать только в Шагах. В этой Части мы рассмотрим расширенную работу с текстом, которая будет работать и в <info>, и/или в <step>.
Локализации текста (атрибут lang)
Важно:
Нельзя локализовать атрибут «title» у тега <quest>.
Позволяет добавить локализацию текстовым блокам (<desc>, <intro>, <notify> и т.д.)
| Значение (lang=…) | Язык |
|---|---|
| Атрибут «lang» не указан | Парсер неявно указывает «lang=”N”». |
| N | Нейтральный. Текст показывается при любых языковых настройках. Это значение языка по умолчанию. |
| RU, EN, DE… | Стандартные коды языков. Текст будет показан только если текущий язык игры совпадает с указанным кодом. Если совпадения нет, текст не показывается. Важно: Обязательно добавляйте в локализации «базовый» язык, который будет показываться, если игра не найдет подходящей локализации для игрока. Пример: <option to="help_step" text="Помочь" lang="N" /><option to="help_step" text="Help" lang="EN" /><option to="help_step" text="Helfen" lang="DE" />В данном примере, язык по умолчанию (lang=”N”) — Русский. Если у игрока, например, будет включен испанский язык или китайский, то он увидит текст на русском. |
Цветной текст
Можно делать цветной текст в любом текстовом поле — <desc>, <intro>, <notify>, <label> и т.д.
Как использовать:
Используются две пары «[]»: [FF0000]Текст[-], где:
1. [FF0000] — первая квадратная скобка. Шестнадцатеричный HEX-код [RRGGBB]. Указывает цвет текста.
2. [-] — вторая закрывающая квадратная скобка. Указывает, что дальше текст не будет красится в цвет из первой скобки (сбрасывает цвет обратно на белый). Если не поставить, то весь дальнейший текст окрасится.
HEX-коды почти всех цветов можете посмотреть на этом сайте:
Часто используемые цвета:
1. Красный: [FF0000]
2. Зелёный: [00FF00]
3. Синий: [0000FF]
4. Жёлтый: [FFFF00]
5. Оранжевый: [FFAA00]
Пример:

Как выглядит:

Уведомления
<notify>. Показывает уведомление сверху экрана. Можно использовать только в <option>.
Пример:

В игре:

Label
Текстовая метка <label>. В диалоге выглядит как крупный текст. В <info> является единственным способом добавить текст, там выглядит как обычный текст.
Диалог
Код:

Как выглядит:

Журнал Квестов
Код:

В игре:

Переносы и Табуляции
Переносить строку можно двумя способами:
1. Расставить «\n» в тексте:

2. Просто расставить их в самом коде:

Важно:
Если Вы не хотите, чтобы ваш текст съехал, то не ставьте пробелы после \n:
a. Правильно: дорогой\nНаездник Дракона!
b. Неправильно: дорогой\n Наездник Дракона!
Итог:

С табуляцией «\t» не работает, поэтому вариант один:
1. Расставить их в самом коде:

Итог:

Рецепты (Крафт)
Для отображения рецептов (В <step> или <info>) используйте <recipe /> с атрибутами:
name="ИмяРецепта"
type="ТипВерстака"
Типы столов:
1. “Player” — инвентарь игрока
2. “Table” — верстак
3. “Furnace” — печь
4. “Cauldron” — котёл
См. Рецепты
Код:

В игре:


Иконка Предмета
Добавить иконку предмета в <step> или <info> можно с помощью <item />.
Атрибуты:
name="ИмяПредмета"
count="Количество"
Код:

В игре:


Форматирование текста
На данный момент — частично не работает. Вот как это выглядит с желтым текстом.
В XML-файле: [FFD700][b]Великолепно![/b][-]Привет, Наездник Дракона!
В игре (сломано):

Как видите, текст жирным не стал, но в желтый покрасился.
Очень важное замечание:
Обязательно старайтесь выносить разные по смыслу действия в отдельные шаги. Отдельно выдача задания с <info> и обработчиками смерти, отдельно полотнища текста, отдельно спавн мобов и так далее. Это поможет избежать огромной тучи проблем.
Пример:
<step id="hunt_step">
<desc>Убей трёх пауков и пятерых Скелетов-потрошителей</desc>
<info>
<kill enemy="Spider" count="3" />
<kill enemy="SkeletonFresh" count="5" />
</info>
<option auto="dialog_step" check="0.5">
<kill enemy="Spider" count="3" />
<kill enemy="SkeletonFresh" count="5" />
</option>
<option auto="player_dead">
<death />
</option>
</step>
Не надо лепить задания (по типу <kill>) или какой-нибудь <info> в #start или #end. Для всего старайтесь делать отдельные шаги. Вам же потом проще будет. <info> вместе с условными <option> с заданиями тоже делайте в отдельном шаге.
Также <journal>, если будет удобно, размещайте в шаге #start под первой же кнопкой (или авто-опцией).
Задания на закрепление по Частям 6, 7 и 8
- Мистер Гоблин Синий просит установить 4 каменных блока около его дома. В награду он выдаст 5 железных слитков и 120 опыта.
- Паула просит собрать 3 буханки хлеба, 2 из которых скормить питомцу-дракону, а оставшуюся съесть самому. В награду она даст Топор. В квесте должен быть обработчик смерти.
- Аарон просит принести ему 8 анобтаниума, в награду он выдаст 300 опыта и рецепт крафта Боевого Топора (выдача рецепта + отображение рецепта крафта).
- Создайте квест, который требует убить трех скелетов-магов и принести 3 кости. Раскрасьте текст на ваше усмотрение, добавьте обработчик смерти: если игрок умирает во время выполнения квеста, игра выведет уведомление «Вы умерли, попробуйте еще раз». В Журнал Квестов выведите следующее:
