Движок QEng поддерживает систему виртуального инвентаря команд или одиночных игроков. Это позволяет реализовывать квесты с поиском и использованием предметов (ключей, инструментов, валюты).
В интерфейсе игрового окна инвентарь отображается как список предметов с изображениями, кратким описанием и кнопкой действия.
Клик по предмету выделяет его и открывает две кнопки: «глаз» показывает картинку крупно, галочка — использует предмет.
Каждый предмет представляет собой уникальный текстовый идентификатор (ключ), который можно добавлять, удалять или «активировать» (использовать).
<div id="inventory_container">Загрузка инвентаря...</div>
showInventoryItems('inventory_container');
Добавление предметов привязано к решению бонусов (или сквозных бонусов).
<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.
Вся цепочка целиком: бонус решён — предмет пришёл в инвентарь — «использовать» вбило его код за игрока.
Рабочий пример уровня с инвентарем и кодом можно посмотреть в демо-игре для авторов: Пример в игре.