Глава 21. Дополнительный функционал
В этой Главе собрано всё, что по той или иной причине не вместилось в основные главы. Это просто дополнительный функционал, которому почти нет применения. В основном, он нужен, чтобы обслуживать внутренние потребности официальных квестов. Например, интерактивные условия или магазин
Шаг 1. Интерактивные условия (ИУ)
Все интерактивные условия размещаются в авто-опциях
Клик по интерфейсу <click/>
Срабатывыет, когда игрок нажимает на какой-то элемент интерфейса
ㅤ<click id="ЭлементИнтерфейса"/>
Пример из оригинального квеста Tutorial (шаг set_plank)
option auto="set_plank"<>
ㅤcraft name="Plank" type="Player"/<>
ㅤclick id="CraftPlayer"/<>/option<>
Открытие элемента интерфейса <window>
Отрабатывает, когда игрок открывает определенное окно
ㅤ<window id="ЭлементИнтерфейса"/>
Пример из оригинального квеста Tutorial (шаг talk_book3)
<option auto="talk_book3">
<window id="Inventory"/>
</option>
Использование телепорта <useteleporter/>
Проверяет, телепортировался ли игрок через Телепорт. Не имеет атрибутов
<useteleporter/>
Пример из оригинального квеста Quantum Theory (шаг teleporter_placed)
<option auto="teleporter_placed">
<useteleporter/>
<attention/>
</option>
Действия игрока <look/> <walk/> <jump/>
Три тега без атрибутов.
— Проевряет, двигал ли игрок камерой<look/>
— Проверяет перемещался ли игрок <walk/>
— Проверяет, прыгал ли игрок<jump/>
Пример из оригинального квеста Tutorial (шаги ask_walk, ask_jump, ask_log)
<option auto="ask_walk" start="1" check="0.25" end="1">
<look/>
</option>
<option auto="ask_jump" start="1" check="0.25" end="1">
<walk/>
</option>
<option auto="ask_log" start="1" check="0.25" end="1">
<attention/>
<jump/>
</option>
Обратите внимание на проверки с помощью check, они делаются 4 раза в секунду (проверка раз в 0.25 сек), чтобы точно успеть зафиксировать момент телодвижения игрока
Шаг 2. Проверка типа устройства <condition/> (ТУ)
С помощью этого шага вы можете проводить те или иные действия в шаге, в зависимости от типа управления игрока (Клава-мышь, Сенсор, Геймпад)
| Атрибут | Значение | Пояснение |
| type | 1. Не указан, атрибут type отсутствует — сенсорное управления 2. type=”Standalone” — Управление Клава-мышь 3. type=”Joystick” — Управление с Геймпада | Используйте, если какие-то опции или какой-то текст должен меняться в зависимости от устройства Порядок блоков не имеет значения, обязательно добавляйте блок без type, он будет использован в случае, если возникнут какие-либо ошибки с другими блоками |
Отличный гайд, но осталось несколько вопросов:
1) Куда делся раздел с кастомным магазином из прошлой версии руководства. В 13.5.0? Его больше нельзя кастомизировать?
2) У Фуза в 13.5.0 есть свой магазин, следовательно, они тоже стали квестовыми НПС и для них можно делать кастомные квесты. Или нельзя?
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 только что обновил, просто изначально забыл добавить
Из нюансов: У них пока что нет своего портрета, поэтому будет видно просто имя