Перейти к содержанию

Функции кнопок и таймеров

В этом разделе описаны функции, контекст которых жестко привязан к действиям пользователя на страницах заданий (нажатия кнопок) или к срабатываниям таймеров.

Контекст выполнения

Эти функции доступны только внутри обработчиков кнопок в заданиях. Если общая функция вызывается из кода кнопки, ей также становится доступен весь контекст этой кнопки.

Управление ходом выполнения задания

  • stop_task() — прервать стандартную обработку ответа в задании. Полезно, если вы хотите полностью переопределить поведение кнопки, не выполнять автоматическую проверку ответов и не начислять стандартные награды.
  • skip_answer_check() — пропустить только стандартную проверку ответа (позволяет сделать кастомную проверку в скрипте без прерывания остальных триггеров).
  • check_current_answer(answerOverride?) — принудительно запустить проверку ответа. Если передан answerOverride, проверяется он, иначе — текст, введённый пользователем в форму. Удобно использовать совместно с skip_answer_check(), чтобы нормализовать текст перед проверкой.

Маршрутизация и переходы

  • goto_task(task_id) — мгновенно перевести игрока на задание с указанным ID (если задания нет, оно будет выдано).

    Важно

    При использовании goto_task() обязательно вызывайте stop_task(), иначе стандартный поток выполнения кнопки может сбросить или перебить этот переход.

  • task_override(task_id) — элегантная альтернатива goto_task(). Она не требует вызова stop_task(). Текущее задание завершается штатно (проверяются ответы, выдаются очки и предметы), но в самом конце финальная точка перехода подменяется на указанный task_id.

  • redirect(url, wait_sec = 0) — перенаправление браузера пользователя на внешний URL. Можно задать задержку в секундах (wait_sec).

Интерактивные интерфейсные сообщения

Эти функции выводят сообщения мгновенно без необходимости перезагрузки страницы:

  • info(text) / success(text) / warning(text) / error(text) — красивое модальное/всплывающее окно соответствующего стиля. Важный момент: их лучше использовать вместе с stop_task(), иначе сообщение не успеет отобразиться - будет совершён переход на другое задание, страница обновится. В таких случаях лучше использовать Flash-сообщения
  • alert(text) — стандартное диалоговое окно браузера (JavaScript alert). Приостанавливает выполнение страницы, пока пользователь не нажмет кнопку «ОК».

Локальное хранилище задания{: #task-vars-ref }

  • tset(param, value) — сохранить переменную param со значением value изолированно только для текущего задания и текущего пользователя.
  • tget(param, default = nil) — получить изолированную переменную текущего задания.

Подсказки и бонусные сообщения в таймерах

Функции для управления подсказками. Внутри кнопок их можно вызывать без явного указания task_id и user_id (тогда применятся текущие значения), но при вызове из глобального контекста параметры обязательны.

  • add_task_help_message(message, ?task_id, ?user_id) — добавить текстовую подсказку в задание.
  • clear_task_help_messages(?task_id, ?user_id) — полностью очистить список выданных подсказок (включая те, что добавились по таймерам).
  • get_task_help_messages(?task_id, ?user_id) — получить массив всех активных подсказок.
  • set_task_success_message(message, ?task_id, ?user_id) — установить текст единственного бонусного сообщения, которое отображается при успешном завершении задания.