Инвентарь игрока
Движок QEng поддерживает систему виртуального инвентаря команд или одиночных игроков. Это позволяет реализовывать квесты с поиском и использованием предметов (ключей, инструментов, валюты).
Что такое инвентарь?
В интерфейсе игрового окна инвентарь отображается как список предметов с изображениями, кратким описанием и кнопкой действия.
Клик по предмету выделяет его и открывает две кнопки: «глаз» показывает картинку крупно, галочка — использует предмет.
Каждый предмет представляет собой уникальный текстовый идентификатор (ключ), который можно добавлять, удалять или «активировать» (использовать).
Как отобразить инвентарь на уровне
- В тексте задания (в режиме «Источник») вставьте HTML-блок, где должен отображаться список предметов:
<div id="inventory_container">Загрузка инвентаря...</div>
- В скрипт задания (поле скрипта внизу уровня) добавьте JS-вызов:
showInventoryItems('inventory_container');
Управление предметами
Добавление предмета в инвентарь
Добавление предметов привязано к решению бонусов (или сквозных бонусов).
- Создайте бонус на уровне (например, «Найти молоток»).
- В поле «Текст после решения» бонуса в режиме «Источник» (Source) вставьте скрипт:
<script>
addInventoryItem('hammer123');
</script>
После того как команда введет верный ответ для этого бонуса, предмет с ключом hammer123 появится в их инвентаре.
Изображения предметов
Для корректного отображения предмета hammer123 загрузите на cdn игры два файла картинок со строгими названиями:
item_hammer123.jpg— превью предмета, показываемое в списке инвентаря.item_hammer123_big.jpg— детальное изображение, показываемое при клике по значку глаза (детальный просмотр).
Картинки при копировании игры
По умолчанию картинки предметов берутся из папки cdn текущей игры. При копировании игры файлы на cdn не копируются, поэтому в копии картинки предметов пропадут.
Чтобы этого не произошло, привяжите инвентарь к игре, в которую залиты картинки. Вызов достаточно сделать один раз на всю игру — в поле «Общий HTML заголовок» в настройках игры (в режиме «Источник»):
<script> setInventoryGameId(1234); </script>
где 1234 — id игры с картинками (номер папки на cdn).
Общий HTML заголовок копируется вместе с игрой, поэтому копия продолжит брать картинки из исходной игры. Если картинки залиты в новую игру — поменяйте id в этом вызове.
Тот же id можно задать точечно, только для одного уровня, вторым параметром:
showInventoryItems('inventory_container', 1234);
Удаление предмета из инвентаря (Использование/Потеря)
Чтобы забрать предмет у команды (например, при отдаче персонажу или использовании для открытия двери):
- Создайте бонус, активируемый при прохождении.
- В его «Текст после решения» в режиме «Источник» пропишите:
<script>
removeInventoryItem('hammer123');
</script>
Важно: Если предмет был добавлен с помощью сквозного бонуса, то удалить его обычным бонусом нельзя. Его нужно удалять также через сквозной бонус с более высоким порядковым номером.
Кнопка "Использовать"
При клике игроком по кнопке «Использовать» у предмета в инвентаре, движок автоматически пытается вбить код, совпадающий с идентификатором предмета.
* Например, при использовании предмета hammer123 в поле ввода ответов автоматически отправится код hammer123.
Вся цепочка целиком: бонус решён — предмет пришёл в инвентарь — «использовать» вбило его код за игрока.
Демонстрация
Рабочий пример уровня с инвентарем и кодом можно посмотреть в демо-игре для авторов: Пример в игре.


