Создание Своих Квестов для Игры

Reading Mode

Часть 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-коды почти всех цветов можете посмотреть на этом сайте:

https://get-color.ru/all/

Часто используемые цвета:
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

  1. Мистер Гоблин Синий просит установить 4 каменных блока около его дома. В награду он выдаст 5 железных слитков и 120 опыта.
  2. Паула просит собрать 3 буханки хлеба, 2 из которых скормить питомцу-дракону, а оставшуюся съесть самому. В награду она даст Топор. В квесте должен быть обработчик смерти.
  3. Аарон просит принести ему 8 анобтаниума, в награду он выдаст 300 опыта и рецепт крафта Боевого Топора (выдача рецепта + отображение рецепта крафта).
  4. Создайте квест, который требует убить трех скелетов-магов и принести 3 кости. Раскрасьте текст на ваше усмотрение, добавьте обработчик смерти: если игрок умирает во время выполнения квеста, игра выведет уведомление «Вы умерли, попробуйте еще раз». В Журнал Квестов выведите следующее:
3
0

Leave a Reply