Функции кнопок и таймеров¶
В этом разделе описаны функции, контекст которых жестко привязан к действиям пользователя на страницах заданий (нажатия кнопок) или к срабатываниям таймеров.
Контекст выполнения
Эти функции доступны только внутри обработчиков кнопок в заданиях. Если общая функция вызывается из кода кнопки, ей также становится доступен весь контекст этой кнопки.
Управление ходом выполнения задания¶
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)— установить текст единственного бонусного сообщения, которое отображается при успешном завершении задания.