Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{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 линейки (прохождения) ==== <code HTML> {% match line }:{ {%= 688 /*комментарий: название линейки*/}:{ Текст для линейки с ID 688 %} {%= 643 }:{ Текст для линейки с ID 643 %} {%= 653,655 }:{ Текст для линейки с ID 653 или 655 %} {%= ?}:{ Текст для любой другой линейки %} %} </code> ==== По ID команды ==== <code HTML> {% match team }:{ {%= 688 /*комментарий: название команды*/}:{ Текст для команды с ID 688 %} {%= 643 }:{ Текст для команды с ID 643 %} {%= 653,655 }:{ Текст для команды с ID 653 или 655 %} {%= ?}:{ Текст для любой другой команды %} %} </code> [[https://qeng.org/game.php?jump_to&gid=3493&task_id=54272|Пример в игре]] ===== Привязка события в задании к реальному времени ===== Полезно для выдачи виртуальных кодов/подсказок в строго определенное время. Для перевода даты в метку времени используйте [[https://converter.by/unixtime|Конвертер Unix Time]]. <code HTML> {% unix_time 1639999296/*дата в unix time*/, Откроется, Осталось}:{ Этот текст будет показан только после наступления указанного времени. %} </code> [[https://qeng.org/game.php?jump_to&gid=3493&task_id=54338|Пример в игре]] ===== Шаблоны на основе вбитых ответов ===== ==== Проверка последнего (текущего) ответа в первый код ==== *(Замените `code_1` на нужный номер кода, например, `code_5` для пятого кода)* <code HTML> {% match code_1 }:{ {%= abc}:{ В первый код вбит ответ "abc". %} {%= bac, cba}:{ В первый код вбит ответ "bac" или "cba". %} {%= !no_answer!}:{ В первый код ещё не вводили правильный ответ. %} {%= ?}:{ Вбит какой-то другой синоним/ответ в первый код. %} %} </code> ==== Проверка самого первого вбитого ответа во второй код ==== <code HTML> {% match code_first_2 }:{ {%= abc}:{ Первым в этот код был вбит ответ "abc". %} {%= !no_answer!}:{ Код ещё не вбит. %} {%= ?}:{ Был вбит другой ответ. %} %} </code> ==== Проверка бонусов и сквозных бонусов ==== Аналогично кодам, вы можете проверять ответы для бонусов: * **''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!''** — ответ еще не введен. *(Анонимные игроки без регистрации считаются одним пользователем).* <code HTML> {% match who_code_1 }:{ {%= me}:{ Первый код ввел лично я. %} {%= other}:{ Первый код ввел мой напарник по команде. %} {%= !no_answer!}:{ Код еще никто не ввел. %} %} </code> ===== Проверка команды, вбившей код (для межкомандных дуэлей) ===== Приставка ''who_team_'' позволяет проверить, какая команда ввела код на общем/сквозном задании. Возможные значения: * **''me''** — код ввела моя команда. * **''other''** — код ввела команда соперников. * **''!no_answer!''** — код еще не введен. <code HTML> {% match who_team_code_1 }:{ {%= me}:{ Этот код первыми закрыли мы! %} {%= other}:{ Увы, соперники успели ввести этот код раньше нас. %} %} </code> ===== Шаблоны, зависящие от языка интерфейса игрока ===== <code HTML> {% match lang }:{ {%= ru}:{ Выбран русский язык интерфейса. %} {%= uk }:{ Выбран украинский язык интерфейса (uk). %} {%= en }:{ Выбран английский язык интерфейса. %} {%= ?}:{ Какой-то другой язык. %} %} </code> ===== Проверка статуса оплаты товара (Пейволл) ===== Если в вашей игре используются платные уровни или платные подсказки, вы можете проверить статус покупки: * **''product_KEY''** — где вместо KEY указывается ключ продукта из настроек. Возможные значения: * **''yes''** — товар успешно куплен командой. * **''pending''** — процесс оплаты начат, но транзакция еще обрабатывается. * **''no''** — товар не оплачен. <code HTML> {% match product_level_5 }:{ {%= yes}:{ Команда купила доступ к 5 уровню. %} {%= pending}:{ Оплата обрабатывается. Пожалуйста, подождите и обновите страницу. %} {%= no}:{ Доступ закрыт. Стоимость прохождения — $1. Нажмите для оплаты: %pay_button level_5% %} %} </code> authors_main/task_editor/advanced/edit_templates.txt Last modified: 2026/06/15 20:57(external edit)