{{indexmenu_n>20}}
====== Шаблоны (Темплейты) ======
Шаблоны — это динамические выражения, которые вычисляются на сервере до отправки страницы игрокам. В браузере во время игры отображается только результат вычисления для конкретной команды. Сам код шаблона игрокам не виден (его нет в исходном коде страницы).
Классические применения шаблонов:
* [[authors_main:task_editor:advanced:edit_templates#по_id_команды|Индивидуальные задания для команды]] (разделение потоков).
* [[authors_main:task_editor:advanced:edit_templates#темплейты_с_использованием_ответов_в_задании|Бонусы, контент которых зависит от того, каким именно кодом был закрыт предыдущий бонус]].
Шаблоны можно прописывать в обычном режиме редактора или в режиме исходного кода (Source) в текст заданий, подсказок и бонусов. Шаблоны могут быть вложенными.
===== Google Таблица для генерации шаблонов =====
Для облегчения написания синтаксиса шаблонов вы можете скопировать себе и использовать специальную таблицу:
[[https://docs.google.com/spreadsheets/d/1viqP3CBjYgq_vPYH-Z2USIC1DYrXzQG8_eV2bDw-4JQ/edit?usp=sharing|Google Таблица генерации шаблонов QEng]].
====== Различные виды шаблонов ======
===== Модификация задания для команды =====
==== По ID линейки (прохождения) ====
{% match line }:{
{%= 688 /*комментарий: название линейки*/}:{
Текст для линейки с ID 688
%}
{%= 643 }:{
Текст для линейки с ID 643
%}
{%= 653,655 }:{
Текст для линейки с ID 653 или 655
%}
{%= ?}:{
Текст для любой другой линейки
%}
%}
==== По ID команды ====
{% match team }:{
{%= 688 /*комментарий: название команды*/}:{
Текст для команды с ID 688
%}
{%= 643 }:{
Текст для команды с ID 643
%}
{%= 653,655 }:{
Текст для команды с ID 653 или 655
%}
{%= ?}:{
Текст для любой другой команды
%}
%}
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=54272|Пример в игре]]
===== Привязка события в задании к реальному времени =====
Полезно для выдачи виртуальных кодов/подсказок в строго определенное время. Для перевода даты в метку времени используйте [[https://converter.by/unixtime|Конвертер Unix Time]].
{% unix_time 1639999296/*дата в unix time*/, Откроется, Осталось}:{
Этот текст будет показан только после наступления указанного времени.
%}
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=54338|Пример в игре]]
===== Шаблоны на основе вбитых ответов =====
==== Проверка последнего (текущего) ответа в первый код ====
*(Замените `code_1` на нужный номер кода, например, `code_5` для пятого кода)*
{% match code_1 }:{
{%= abc}:{
В первый код вбит ответ "abc".
%}
{%= bac, cba}:{
В первый код вбит ответ "bac" или "cba".
%}
{%= !no_answer!}:{
В первый код ещё не вводили правильный ответ.
%}
{%= ?}:{
Вбит какой-то другой синоним/ответ в первый код.
%}
%}
==== Проверка самого первого вбитого ответа во второй код ====
{% match code_first_2 }:{
{%= abc}:{
Первым в этот код был вбит ответ "abc".
%}
{%= !no_answer!}:{
Код ещё не вбит.
%}
{%= ?}:{
Был вбит другой ответ.
%}
%}
==== Проверка бонусов и сквозных бонусов ====
Аналогично кодам, вы можете проверять ответы для бонусов:
* **''bonus_1''** / **''bonus_first_1''** — последний или первый введенный ответ в первый бонус текущего уровня.
* **''gbonus_1''** / **''gbonus_first_1''** — последний или первый введенный ответ в первый сквозной (глобальный) бонус игры. Сквозные бонусы можно проверять даже на тех уровнях, где они не выведены на экран.
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=54273|Пример в игре]]
===== Проверка автора ввода (кто именно вбил код) =====
К параметрам проверки ответов можно добавить приставку ''who_'', чтобы узнать, кто из игроков команды ввел код.
Возможные значения:
* **''me''** — код введен текущим залогиненным пользователем.
* **''other''** — код введен другим участником команды.
* **''!no_answer!''** — ответ еще не введен.
*(Анонимные игроки без регистрации считаются одним пользователем).*
{% match who_code_1 }:{
{%= me}:{
Первый код ввел лично я.
%}
{%= other}:{
Первый код ввел мой напарник по команде.
%}
{%= !no_answer!}:{
Код еще никто не ввел.
%}
%}
===== Проверка команды, вбившей код (для межкомандных дуэлей) =====
Приставка ''who_team_'' позволяет проверить, какая команда ввела код на общем/сквозном задании.
Возможные значения:
* **''me''** — код ввела моя команда.
* **''other''** — код ввела команда соперников.
* **''!no_answer!''** — код еще не введен.
{% match who_team_code_1 }:{
{%= me}:{
Этот код первыми закрыли мы!
%}
{%= other}:{
Увы, соперники успели ввести этот код раньше нас.
%}
%}
===== Шаблоны, зависящие от языка интерфейса игрока =====
{% match lang }:{
{%= ru}:{
Выбран русский язык интерфейса.
%}
{%= uk }:{
Выбран украинский язык интерфейса (uk).
%}
{%= en }:{
Выбран английский язык интерфейса.
%}
{%= ?}:{
Какой-то другой язык.
%}
%}
===== Проверка статуса оплаты товара (Пейволл) =====
Если в вашей игре используются платные уровни или платные подсказки, вы можете проверить статус покупки:
* **''product_KEY''** — где вместо KEY указывается ключ продукта из настроек.
Возможные значения:
* **''yes''** — товар успешно куплен командой.
* **''pending''** — процесс оплаты начат, но транзакция еще обрабатывается.
* **''no''** — товар не оплачен.
{% match product_level_5 }:{
{%= yes}:{
Команда купила доступ к 5 уровню.
%}
{%= pending}:{
Оплата обрабатывается. Пожалуйста, подождите и обновите страницу.
%}
{%= no}:{
Доступ закрыт. Стоимость прохождения — $1. Нажмите для оплаты:
%pay_button level_5%
%}
%}