{{indexmenu_n>30}} ====== Инвентарь игрока ====== Движок QEng поддерживает систему виртуального инвентаря команд или одиночных игроков. Это позволяет реализовывать квесты с поиском и использованием предметов (ключей, инструментов, валюты). ===== Что такое инвентарь? ===== В интерфейсе игрового окна инвентарь отображается как список предметов с изображениями, кратким описанием и кнопкой действия. {{ :authors_main:inventory.png?800 |Инвентарь на уровне: предметы приходят за решённые бонусы}} Клик по предмету выделяет его и открывает две кнопки: «глаз» показывает картинку крупно, галочка — использует предмет. {{ :authors_main:inventory_item.png?800 |Выбранный предмет: «глаз» показывает картинку крупно, галочка — использует предмет}} Каждый предмет представляет собой уникальный текстовый идентификатор (ключ), который можно добавлять, удалять или "активировать" (использовать). ===== Как отобразить инвентарь на уровне ===== - В тексте задания (в режиме **"Источник"**) вставьте HTML-блок, где должен отображаться список предметов:
Загрузка инвентаря...
- В скрипт задания (поле скрипта внизу уровня) добавьте JS-вызов: showInventoryItems('inventory_container'); ===== Управление предметами ===== ==== Добавление предмета в инвентарь ==== Добавление предметов привязано к решению бонусов (или сквозных бонусов). - Создайте бонус на уровне (например, "Найти молоток"). - В поле **"Текст после решения"** бонуса в режиме **"Источник"** (Source) вставьте скрипт: После того как команда введет верный ответ для этого бонуса, предмет с ключом ''hammer123'' появится в их инвентаре. ==== Изображения предметов ==== Для корректного отображения предмета ''hammer123'' загрузите на cdn игры два файла картинок со строгими названиями: * **''item_hammer123.jpg''** — превью предмета, показываемое в списке инвентаря. * **''item_hammer123_big.jpg''** — детальное изображение, показываемое при клике по значку глаза (детальный просмотр). ==== Картинки при копировании игры ==== По умолчанию картинки предметов берутся из папки cdn **текущей** игры. При копировании игры файлы на cdn не копируются, поэтому в копии картинки предметов пропадут. Чтобы этого не произошло, привяжите инвентарь к игре, в которую залиты картинки. Вызов достаточно сделать один раз на всю игру — в поле **"Общий HTML заголовок"** в настройках игры (в режиме **"Источник"**): где ''1234'' — id игры с картинками (номер папки на cdn). Общий HTML заголовок копируется вместе с игрой, поэтому копия продолжит брать картинки из исходной игры. Если картинки залиты в новую игру — поменяйте id в этом вызове. Тот же id можно задать точечно, только для одного уровня, вторым параметром: showInventoryItems('inventory_container', 1234); ==== Удаление предмета из инвентаря (Использование/Потеря) ==== Чтобы забрать предмет у команды (например, при отдаче персонажу или использовании для открытия двери): - Создайте бонус, активируемый при прохождении. - В его **"Текст после решения"** в режиме **"Источник"** пропишите: > **Важно:** Если предмет был добавлен с помощью **сквозного** бонуса, то удалить его обычным бонусом нельзя. Его нужно удалять также через сквозной бонус с более высоким порядковым номером. ==== Кнопка "Использовать" ==== При клике игроком по кнопке **"Использовать"** у предмета в инвентаре, движок автоматически пытается вбить код, совпадающий с идентификатором предмета. * Например, при использовании предмета ''hammer123'' в поле ввода ответов автоматически отправится код ''hammer123''. Вся цепочка целиком: бонус решён — предмет пришёл в инвентарь — «использовать» вбило его код за игрока. {{ :authors_main:inventory_use.gif |Предмет приходит за бонус, а «использовать» вбивает его код за игрока}} ===== Демонстрация ===== Рабочий пример уровня с инвентарем и кодом можно посмотреть в демо-игре для авторов: [[https://qeng.org/game.php?jump_to&gid=3493&task_id=68367|Пример в игре]].