Различия
Здесь показаны различия между двумя версиями данной страницы.
| Следующая версия | Предыдущая версия | ||
|
authors_main:task_editor:advanced:inventory [2026/06/15 20:57] 127.0.0.1 внешнее изменение |
authors_main:task_editor:advanced:inventory [2026/08/19 21:53] (текущий) |
||
|---|---|---|---|
| Строка 7: | Строка 7: | ||
| В интерфейсе игрового окна инвентарь отображается как список предметов с изображениями, кратким описанием и кнопкой действия. | В интерфейсе игрового окна инвентарь отображается как список предметов с изображениями, кратким описанием и кнопкой действия. | ||
| - | {{ :authors_main:inventory.png?800 |Пример отображения инвентаря на уровне}} | + | {{ :authors_main:inventory.png?800 |Инвентарь на уровне: предметы приходят за решённые бонусы}} |
| + | |||
| + | Клик по предмету выделяет его и открывает две кнопки: «глаз» показывает картинку крупно, галочка — использует предмет. | ||
| + | |||
| + | {{ :authors_main:inventory_item.png?800 |Выбранный предмет: «глаз» показывает картинку крупно, галочка — использует предмет}} | ||
| Каждый предмет представляет собой уникальный текстовый идентификатор (ключ), который можно добавлять, удалять или "активировать" (использовать). | Каждый предмет представляет собой уникальный текстовый идентификатор (ключ), который можно добавлять, удалять или "активировать" (использовать). | ||
| Строка 13: | Строка 17: | ||
| ===== Как отобразить инвентарь на уровне ===== | ===== Как отобразить инвентарь на уровне ===== | ||
| - | 1. В тексте задания (в режиме **"Источник"**) вставьте HTML-блок, где должен отображаться список предметов: | + | - В тексте задания (в режиме **"Источник"**) вставьте HTML-блок, где должен отображаться список предметов: |
| <code HTML> | <code HTML> | ||
| <div id="inventory_container">Загрузка инвентаря...</div> | <div id="inventory_container">Загрузка инвентаря...</div> | ||
| </code> | </code> | ||
| - | 2. В скрипт задания (поле скрипта внизу уровня) добавьте JS-вызов: | + | - В скрипт задания (поле скрипта внизу уровня) добавьте JS-вызов: |
| <code JavaScript> | <code JavaScript> | ||
| showInventoryItems('inventory_container'); | showInventoryItems('inventory_container'); | ||
| Строка 26: | Строка 30: | ||
| ==== Добавление предмета в инвентарь ==== | ==== Добавление предмета в инвентарь ==== | ||
| Добавление предметов привязано к решению бонусов (или сквозных бонусов). | Добавление предметов привязано к решению бонусов (или сквозных бонусов). | ||
| - | 1. Создайте бонус на уровне (например, "Найти молоток"). | + | - Создайте бонус на уровне (например, "Найти молоток"). |
| - | 2. В поле **"Текст после решения"** бонуса в режиме **"Источник"** (Source) вставьте скрипт: | + | - В поле **"Текст после решения"** бонуса в режиме **"Источник"** (Source) вставьте скрипт: |
| <code HTML> | <code HTML> | ||
| <script> | <script> | ||
| Строка 39: | Строка 43: | ||
| * **''item_hammer123.jpg''** — превью предмета, показываемое в списке инвентаря. | * **''item_hammer123.jpg''** — превью предмета, показываемое в списке инвентаря. | ||
| * **''item_hammer123_big.jpg''** — детальное изображение, показываемое при клике по значку глаза (детальный просмотр). | * **''item_hammer123_big.jpg''** — детальное изображение, показываемое при клике по значку глаза (детальный просмотр). | ||
| + | |||
| + | ==== Картинки при копировании игры ==== | ||
| + | По умолчанию картинки предметов берутся из папки cdn **текущей** игры. При копировании игры файлы на cdn не копируются, поэтому в копии картинки предметов пропадут. | ||
| + | |||
| + | Чтобы этого не произошло, привяжите инвентарь к игре, в которую залиты картинки. Вызов достаточно сделать один раз на всю игру — в поле **"Общий HTML заголовок"** в настройках игры (в режиме **"Источник"**): | ||
| + | <code HTML> | ||
| + | <script> | ||
| + | setInventoryGameId(1234); | ||
| + | </script> | ||
| + | </code> | ||
| + | где ''1234'' — id игры с картинками (номер папки на cdn). | ||
| + | |||
| + | Общий HTML заголовок копируется вместе с игрой, поэтому копия продолжит брать картинки из исходной игры. Если картинки залиты в новую игру — поменяйте id в этом вызове. | ||
| + | |||
| + | Тот же id можно задать точечно, только для одного уровня, вторым параметром: | ||
| + | <code JavaScript> | ||
| + | showInventoryItems('inventory_container', 1234); | ||
| + | </code> | ||
| ==== Удаление предмета из инвентаря (Использование/Потеря) ==== | ==== Удаление предмета из инвентаря (Использование/Потеря) ==== | ||
| Чтобы забрать предмет у команды (например, при отдаче персонажу или использовании для открытия двери): | Чтобы забрать предмет у команды (например, при отдаче персонажу или использовании для открытия двери): | ||
| - | 1. Создайте бонус, активируемый при прохождении. | + | - Создайте бонус, активируемый при прохождении. |
| - | 2. В его **"Текст после решения"** в режиме **"Источник"** пропишите: | + | - В его **"Текст после решения"** в режиме **"Источник"** пропишите: |
| <code HTML> | <code HTML> | ||
| <script> | <script> | ||
| Строка 50: | Строка 72: | ||
| </code> | </code> | ||
| - | <note important> | + | > **Важно:** Если предмет был добавлен с помощью **сквозного** бонуса, то удалить его обычным бонусом нельзя. Его нужно удалять также через сквозной бонус с более высоким порядковым номером. |
| - | **Важно:** Если предмет был добавлен с помощью **сквозного** бонуса, то удалить его обычным бонусом нельзя. Его нужно удалять также через сквозной бонус с более высоким порядковым номером. | + | |
| - | </note> | + | |
| ==== Кнопка "Использовать" ==== | ==== Кнопка "Использовать" ==== | ||
| При клике игроком по кнопке **"Использовать"** у предмета в инвентаре, движок автоматически пытается вбить код, совпадающий с идентификатором предмета. | При клике игроком по кнопке **"Использовать"** у предмета в инвентаре, движок автоматически пытается вбить код, совпадающий с идентификатором предмета. | ||
| * Например, при использовании предмета ''hammer123'' в поле ввода ответов автоматически отправится код ''hammer123''. | * Например, при использовании предмета ''hammer123'' в поле ввода ответов автоматически отправится код ''hammer123''. | ||
| + | |||
| + | Вся цепочка целиком: бонус решён — предмет пришёл в инвентарь — «использовать» вбило его код за игрока. | ||
| + | |||
| + | {{ :authors_main:inventory_use.gif |Предмет приходит за бонус, а «использовать» вбивает его код за игрока}} | ||
| ===== Демонстрация ===== | ===== Демонстрация ===== | ||
| - | Рабочий пример уровня с инвентарем и кодом можно посмотреть в [[https://qeng.org/game.php?gid=3493&tid=68367|Демо-игре для авторов]]. | + | Рабочий пример уровня с инвентарем и кодом можно посмотреть в демо-игре для авторов: [[https://qeng.org/game.php?jump_to&gid=3493&task_id=68367|Пример в игре]]. |