===== Типичные скрипты =====
Примеры использования JavaScript в заданиях. Их необходимо вставлять в поле **"Скрипт Задания"** (в настройках конкретного уровня).
==== Скрыть Коды ====
$('#out_codes').hide();
==== Скрыть бонусы ====
$('#out_bonuses').hide();
==== Скрыть глобальные (сквозные) бонусы ====
$('#out_global_bonuses').hide();
==== Вместо оригинального текста результата ввода кодов показывать свои сообщения ====
$('#answer_result_right_out').text('Вроде верно');
$('#answer_result_repeat_out').text('Было уже');
$('#answer_result_wrong_out').text('Что-то не так');
==== На месте таймера автоперехода отображать время, проведенное на задании ====
show_time_on_task();
*Примечание: Работает только в том случае, если на уровне не настроен автопереход.*
==== Заменить слово 'Автопереход' на другое название ====
$('span#out_end_time').each(function(){$(this).html($(this).html().replace('Автопереход', 'Время до закрытия зоны'));});
==== Заменить слово 'Подсказка' на другое название ====
$('span.hint_name').each(function(){$(this).html($(this).html().replace('Подсказка', 'Возможное время до закрытия зоны'));});
==== Заменить текст на кнопке 'Купить подсказку' ====
$('div#out_hints').each(function(){$(this).html($(this).html().replaceAll('Взять подсказку', 'Купить задание'));});
==== Реализация "Олимпийки" (сетка плей-офф) ====
- В текст задания пропишите специальный маркер: **''[olymp]''** (он автоматически заменится на сетку-таблицу во время игры).
- В скрипт задания пропишите: **''olymp('8.2')'';**
* Вместо `'8.2'` можно использовать `'4.2'`, `'16.2'`, `'32.2'`, `'64.2'`, `'128.2'`, `'256.2'`, `'9.3'`, `'27.3'`, `'81.3'`, `'16.4'`, `'64.4'` (где первое число — количество начальных кодов олимпийки, а второе — количество объединяемых ячеек в последующих этапах).
* Если вы хотите оставить отображение номеров в кодах, используйте: **''olymp_with_numbers('8.2')'';**
- Чтобы отображать вместо правильно вбитого слова какое-то другое кастомное значение:
* Создайте бонус с тем же кодом.
* В поле **"Текст после решения"** бонуса в режиме исходного кода (Source) вставьте скрипт:
* Где ''n'' — номер поля олимпийки, а ''html'' — текст или HTML-код, который будет показан в соответствующей ячейке (например: ''olymp_value(3, 'Храмище')'').
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=42715|Пример олимпийки]] | [[https://qeng.org/game.php?jump_to&gid=3493&task_id=49134|Пример олимпийки со стартовыми ячейками]]
==== Отображение набранных штурмовых баллов непосредственно в задании ====
Вставьте в текст задания:
Всего баллов: !bonus!
==== Кастомный обработчик ввода ответа ====
Вы можете перехватывать и изменять вводимый игроками ответ на клиенте перед его отправкой на сервер. Например, автоматически дописать префикс ''p_'':
window.submitAnswerCallback = function(answer) {
return 'p_' + answer;
}
*Если функция вернет пустую строку, отправка ответа на сервер будет заблокирована.*
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=52080|Пример перехватчика в игре]]
===== Скрипты в бонусах и подсказках =====
Эти сценарии должны вставляться в поле текста решения бонусов/подсказок в режиме **"Источник"** (Source):
==== Автоматический ввод кода при открытии подсказки/бонуса ====
==== Составные коды в бонусах/штрафных подсказках ====
Если код состоит из частей, разбросанных по разным подсказкам или бонусам:
* **''номер_составного_кода''** — порядковый номер составного кода, если их в игре несколько (если он один — ставьте ''0'').
* **'''частькода'** — строка/часть кода (обязательно в кавычках).
* **''число_составных_частей''** — общее количество составных частей, которое нужно собрать.
**Важно:** Обязательно добавьте на уровень итоговый собранный код в качестве обычного кода, иначе у игроков страница будет постоянно обновляться в цикле, пытаясь отправить несуществующий код.
===== Системные события: Вызов скрипта при обновлении задания =====
Если вам нужно автоматически запускать определенный JavaScript каждый раз, когда задание перезагружается (обновляется) на клиенте, пропишите в **"Общий HTML заголовок игры"**:
===== Автоматический редирект в штурмовых играх (Не показывать закрытые задания) =====
Чтобы при попадании на уже закрытое (пройденное) штурмовое задание игрока сразу перенаправляло на главную страницу игры с картой/списком уровней, пропишите в **"Общий HTML заголовок игры"**: