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

Reading Mode

Глава 6. Завершение квестов #end

Мы научились создавать минимально рабочий квест с одним полноценным шагом #start. Все это время до этого мы оставляли шаг #end пустым в сокращенном виде:
<step id="#end"/>

В прошлых главах мы использовали #close для закрытия диалогового окна. Сам квест при этом не завершался и к нему можно было всегда вернуться.

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

Теперь из прошлых глав мы знаем, как откатывать прогресс по квестам без создания нового персонажа, поэтому настало время сделать #end таким же полноценным шагом, как и #start. Приступим

Отличия #close и #end

ШагЧто делаетТипПрогресс и квест
#closeПросто закрывает окно диалогаСкрытый шаг, нельзя настроить под себяКвест остается, прогресс сохраняется. Просто закрывается диалоговое окно
#endПереход на него засчитывает квест выполненнымПолноценный, настраиваемый шагПосле перехода на этот шаг, квест засчитывается пройденным и исчезает у NPC

Грубо говоря:
#close – закрыть книгу с закладкой, чтобы потом продолжить чтение
#end – сжечь эту книгу

Как работает #end

Когда вы переходите на этот шаг (например, через кнопку), происходит следующее:

  1. Выполняется всё то, что вы укажете внутри шага #end
  2. Игра помечает квест, как выполненный и убирает его у NPC

Как тестировать

Теперь вы знаете, что при переходе на #end квест завершается и исчезает. Как же их тестировать? Есть 3 способа:

  1. Для каждого нового теста делать нового персонажа
  2. Переимновать квест в title. Было title="Мой Квест", стало title="Мой Квест 2". Можно просто пробелы поставить: title="Мой Квест "
  3. Третий способ описан в Главе 5, Шаг 1. «О Тестах»

Шаг 1. Примитивное завершение квеста

Откройте MyQuest.xml. В шаге my_first_step переделайте кнопку «Пока»: поменяйте c to="#close" на to="#end"

Было:

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

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


Стало:

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

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

Шаг 2. Проверяем

Как видите, после нажатия кнопки «Пока», квест молча завершился. Остался только Tutorial, который автоматически запустился, когда повторно заговорили с Волшебником. Автоматически он начался, потому что Tutorial остался единственным у Волшебника

Шаг 3. Собираем шаг #end

Теперь настало время собрать свой шаг #end. Сборка ничем не отличается от любого другого шага.

  1. Добавляем текст с помощью <desc>. В <intro> нет смысла, так как игрок, который дошел до шага #end, к NPC уже повторно не сможет подойти
  2. Делаем кнопку закрытия диалога с помощью <option to="#close" text="Пока"/>

Код:

<step id="#end">
ㅤ<desc>Прощай, Наездник Дракона!</desc>

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

Готово. Проверяем

Шаг 4. Проверка нового #end

Тоже работает, теперь Волшебник прощается и квест успешно завершается

Важно

Никогда не делайте кнопку назад с шага #end, если в квесте есть задания на убийство мобов (рассмотрим в следующих главах). Возврат на предыдущие шаги ломает внутренние счетчики квеста. Крайне желательно, чтобы #end у вас всегда был завершающим и окончательным шагом

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