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

Reading Mode

Глава 4. Больше кнопок!

На данный момент, в каждом шаге у нас всего лишь 1 кнопка. Игрок просто читает текст и жмет кнопку, чтобы перейти к следующему блоку текста. Согласитесь, несколько скучно получается. В этой микро-главе мы добавим больше кнопок, дав тем самым игроку выбор (например, «Да» или «Нет»). Игра же нам поволяет спокойно добавлять до 4 кнопок

Шаг 1. Откроем MyQuest.xml

Код в нашем файле:

<?xml version="1.0" encoding="UTF-8"?>
<quest npc="Wizard" title="Мой Первый Квест">
ㅤ<step id="#start">
ㅤㅤ<intro>Привет, как дела?</intro>
ㅤㅤ<desc>Рад тебя снова видеть! Как дела?</desc>

ㅤㅤ<option to="my_first_step" text="Норм"/>
ㅤ</step>


ㅤ<step id="my_first_step">
ㅤㅤ<intro>Это хорошо, что хорошо. Пока, Наездник Дракона!</intro>
ㅤㅤ<desc>Снова ты? Я занят, не могу говорить. Пока!</desc>

ㅤㅤ<option to="#close" text="Пока"/>
ㅤ</step>
ㅤ

ㅤ<step id="#end"/>
</quest>

Как мы помним, кнопку мы добавляли с помощью <option to="_" text="_">, где:

to – куда ведет кнопка (на какой шаг)

text – текст на кнопке

Шаг 2. Добавляем кнопку

Пусть игрок в шаге #start может также ответить: «Плохо». Эта кнопка будет вести на шаг bad_mood_step

Для того, чтобы добавить кнопку, мы просто добавляем новый <option to="bad_mood_step" text="Плохо"> ниже:

ㅤ<step id="#start">
ㅤㅤ <intro>Привет, как дела?</intro>
ㅤㅤ <desc>Рад тебя снова видеть! Как дела?</desc>

ㅤㅤ <option to="my_first_step" text="Норм"/>
ㅤㅤ <option to="bad_mood_step" text="Плохо"/>
ㅤ</step>

Шаг 3. Добавляем шаг bad_mood_step

Под шагом my_first_step добавим новый шаг bad_mood_step. Добавим ему пока что только <desc> и одну кнопку

В тексте <desc> напишем: Очень жаль! Крепись там. Удачи, Наездник Дракона!

В кнопке поставим грустный смайлик (эмотикон)

Код (обрезанный для понимания куда ставить):

ㅤㅤ<step id="#start">
ㅤㅤㅤㅤ<intro>Привет, как дела?</intro>
ㅤㅤㅤㅤ. . .
ㅤㅤㅤㅤ<option to="my_first_step" text="Норм"/>
ㅤㅤ</step>

ㅤㅤ<step id="my_first_step">
ㅤㅤㅤㅤ. . .
ㅤㅤ</step>

ㅤㅤ<step id="bad_mood_step">
ㅤㅤㅤㅤ<desc>Очень жаль! Крепись там. Удачи, Наездник Дракона!</desc>
ㅤㅤ
ㅤㅤㅤㅤ<option to="#close" text=":("/>
ㅤㅤ</step>

ㅤㅤ<step id="#end"/>

Шаг 4. Первая проверка

Создаем нового тестового персонажа. перезаходим в мир и проверяем наш квест

Шаг 5. Дорабатываем новый шаг

Всё работает, но, как видите, теперь из-за того, что мы находимся на шаге bad_mood_step, Волшебник говорит одно и то же. Давайте это исправим, перенеся текст из <desc> в <intro>, а оставшийся пустым <desc> немного передалем, чтобы Волшебник говорил, что занят, но в более “мягкой” форме

Было:

ㅤ<step id="bad_mood_step">
ㅤㅤㅤ<desc>Очень жаль! Крепись там. Удачи, Наездник Дракона!</desc>
ㅤ
ㅤㅤㅤ<option to="#close" text=":("/>
ㅤ</step>

Стало:

ㅤ<step id="bad_mood_step">
ㅤㅤㅤ <intro>Очень жаль! Крепись там. Удачи, Наездник Дракона!</intro>
ㅤ ㅤ <desc>Понимаю, что тебе сейчас не хорошо, но у меня сейчас нет времени на разговоры</desc>

ㅤㅤㅤ<option to="#close" text=":("/>
ㅤ</step>

Шаг 6. Проверяем доработки

Выйдем из мира, зайдем с нового тестового персонажа в мир и проверим:

Отлично. Всё прекрасно работает

Как вы заметили, кнопки в коде идут сверху вниз (сначала «Норм», потом «Пока»). В игре кнопки заполняются слева на право (слева «Норм», справа «Пока»). Запомните это, если для вас расположение кнопок критично

Важно

В одном шаге может быть не больше 4 кнопок (которые с атрибутом text). Остальные просто не отобразяться

(Примечание: Количество авто-опций, которые мы рассмотрим позже, на этот лимит кнопок не влияют. Влияют только сами кнопки. Также у самих авто-опций никаких лимитов на количество нет)

Заключение

В этой главе вы научились добавлять больше кнопок, а также делать нелинейные квесты с выборами, что открыло возможности для проектирования более сложных сюжетов с выборами.

Мини-задание: Сделайте квест-загадку. Волшебник задает вопрос и дает 2 варинта ответа. Если игрок угадал, то переходит на шаг с похвалой, если нет – переход на шаг с текстом «Ха-ха, неправильно!». Кнопка в этом шаге возвращает на шаг с загадкой, чтобы игрок мог попробовать ещё раз

Итоговый код Главы

<?xml version="1.0" encoding="UTF-8"?>
<quest npc="Wizard" title="Мой Первый Квест">
ㅤ<step id="#start">
ㅤㅤ<intro>Привет, как дела?</intro>
ㅤㅤ<desc>Рад тебя снова видеть! Как дела?</desc>

ㅤㅤ<option to="bad_mood_step" text="Плохо"/>
ㅤㅤ<option to="my_first_step" text="Норм"/>
ㅤ</step>


ㅤ<step id="my_first_step">
ㅤㅤ<intro>Это хорошо, что хорошо. Пока, Наездник Дракона!</intro>
ㅤㅤ<desc>Снова ты? Я занят, не могу говорить. Пока!</desc>

ㅤㅤ<option to="#close" text="Пока"/>
ㅤ</step>


ㅤ<step id="bad_mood_step">
ㅤㅤ<intro>Очень жаль! Крепись там. Удачи, Наездник Дракона!</intro>
ㅤㅤ<desc>Понимаю, что тебе сейчас не хорошо, но у меня сейчас нет времени на разговоры</desc>

ㅤㅤ<option to="#close" text=":("/>
ㅤ</step>


ㅤ<step id="#end"/>
</quest>
2
0

Comments

  1. Northern_77
    Northern_77

    Отличный гайд, но осталось несколько вопросов:
    1) Куда делся раздел с кастомным магазином из прошлой версии руководства. В 13.5.0? Его больше нельзя кастомизировать?
    2) У Фуза в 13.5.0 есть свой магазин, следовательно, они тоже стали квестовыми НПС и для них можно делать кастомные квесты. Или нельзя?

    1
    0
    • Da-Damych
      Da-Damych

      1) Кастомные магазины полностью убраны (даже для Алхимика, Фуза и Крестьян). Теперь игра не будет подгружать квесты, содержащие в коде тег <store>

      В логах будет писать:
      Skipped custom quest ‘ИмяКвеста’ from file [Путь до XML-файла квеста]: NPC stores are not allowed in custom quests
      UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
      UnityEngine.Logger:Log(LogType, Object)
      UnityEngine.Debug:LogWarning(Object)
      QuestManager:AddUserQuests(XmlSerializer, String)
      d__77:MoveNext()
      UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

      2) Да, для Фуза можно теперь тоже делать квесты. Список Квестовых NPC только что обновил, просто изначально забыл добавить
      Из нюансов: У них пока что нет своего портрета, поэтому будет видно просто имя

      1
      0

Leave a Reply