{{indexmenu_n>10}}
====== Сценарии и интерактивные элементы в заданиях ======
===== Динамическая информация о игроке/команде =====
Движок поддерживает специальные плейсхолдеры, которые автоматически заменяются на актуальные значения:
* **''!username!''** — логин текущего игрока.
* **''!name!''** — имя текущего игрока.
* **''!teamname!''** — название команды.
* **''!game_id!''** — ID текущей игры.
* **''!task_id!''** — ID текущего задания. Уникален внутри игры и сохраняется при копировании задания или игры целиком, так что скрипт, сравнивающий с конкретным ID, продолжит работать в копии.
* **''!task_n!''** — порядковый номер задания в игре.
* **''!bonus!''** — суммарная стоимость всех набранных бонусов (баллов) команды.
* **''!task_bonus!''** — сумма бонусов, набранных командой на текущем задании.
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=42717|Пример в игре]]
===== Отображение суммарного бонуса в штурмовой игре =====
Описано подробно на [[authors_main:task_editor:level_styling#отображение_суммарного_бонуса_в_штурмовой_игре|странице стилизации уровней]].
===== Кнопки для автоматического ввода ответов =====
Если игроку нужно предложить нажать на кнопку вместо ручного ввода кода, переключите редактор задания в режим исходного кода (**"Источник"**) и вставьте один из вариантов:
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=42718|Пример в игре]]
===== Динамическое замещение контента (Replacer) =====
Вы можете заменять куски текста или медиа на текущем уровне на содержимое других игровых элементов (правильно вбитых кодов, открывшихся подсказок или бонусов) по мере прохождения:
Любой текст до замены
или
Любой текст до замены
Параметр **''data-find''** указывает, что именно нужно скопировать на место этого тега:
* **''#b3 .bonus-hint''** — содержимое (описание) 3-го бонуса.
* **''#b3 .bonus-description''** — формулировка задания 2-го (или 3-го) бонуса.
* **''#c4 .right-answer''** — правильно вбитый игроками 4-й код (показывает сам вбитый ответ).
* **''#hb2''** — текст 2-й подсказки (или штрафной подсказки).
> **Важно:** Между номером элемента (например, ''#c4'') и его классом (например, ''.right-answer'') обязательно должен стоять **пробел**.
> * Неверно: ''#c4.right-answer''
> * Верно: ''#c4 .right-answer''
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=52024|Пример в игре]] | [[https://qeng.org/game.php?jump_to&gid=3493&task_id=52022|Другой пример в игре]]
==== Слоёная картинка ====
Частый приём на основе Replacer: на картинке-подложке по мере разгадывания бонусов проявляются (или, наоборот, исчезают) объекты. Каждый слой лежит в описании своего бонуса, а на уровне все слои накладываются друг на друга через css-сетку — все элементы ставятся в одну и ту же ячейку:
В описание каждого бонуса кладётся картинка слоя — прозрачный png того же размера, что и подложка. Пока бонус не закрыт, замещать нечего и слой не виден; как только бонус закрыт, на подложке появляется его объект. Бонусы можно вбивать в любом порядке.
Сами блоки бонусов при этом обычно прячут, чтобы игрок видел только картинку:
$("#out_bonuses").hide();
Чтобы объекты, наоборот, **исчезали** после разгадывания, слои-картинки кладутся на подложку сразу в тексте задания, а замещением показывается кусок фона, закрывающий объект.
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=67850|Пример с появлением объектов]] | [[https://qeng.org/game.php?jump_to&gid=3493&task_id=68068|Пример с исчезновением]]
===== Скрипты в заданиях и бонусах =====
Готовые шаблоны и примеры JavaScript-сценариев для уровней можно посмотреть на странице: [[authors_main:task_editor:advanced:author_scripts:author_scripts_examples|Типичные скрипты]].