Примеры использования 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');olymp_with_numbers('8.2');<script>olymp_value(n, 'html')</script>
n — номер поля олимпийки, а html — текст или HTML-код, который будет показан в соответствующей ячейке (например: olymp_value(3, 'Храмище')).Вставьте в текст задания:
Всего баллов: !bonus!
Вы можете перехватывать и изменять вводимый игроками ответ на клиенте перед его отправкой на сервер. Например, автоматически дописать префикс p_:
window.submitAnswerCallback = function(answer) { return 'p_' + answer; }
*Если функция вернет пустую строку, отправка ответа на сервер будет заблокирована.*
Эти сценарии должны вставляться в поле текста решения бонусов/подсказок в режиме «Источник» (Source):
<script>enter('Код который надо вбить')</script>
Если итоговый код состоит из частей, разбросанных по разным кодам, бонусам, сквозным бонусам и подсказкам, собрать и автоматически вбить его можно тремя способами — они описаны на отдельной странице: Составные коды.
Коротко:
getAllParts() / getAllBonuses() — склейка ответов, уже показанных на странице, в скрипте задания.code_part() — устаревший вариант, оставлен для совместимости со старыми играми.Важно: при любом способе обязательно добавьте на уровень итоговый собранный код в качестве обычного кода, иначе у игроков страница будет постоянно обновляться в цикле, пытаясь отправить несуществующий код.
Если вам нужно автоматически запускать определенный JavaScript каждый раз, когда задание перезагружается (обновляется) на клиенте, пропишите в «Общий HTML заголовок игры»:
<script> document.addEventListener("DOMContentLoaded", function() { function common_task_script() { console.log('уровень обновился'); } let old_task_script = task_script; task_script = function() { old_task_script(); common_task_script(); }; common_task_script(); }); </script>
Чтобы при попадании на уже закрытое (пройденное) штурмовое задание игрока сразу перенаправляло на главную страницу игры с картой/списком уровней, пропишите в «Общий HTML заголовок игры»:
<script>
document.addEventListener("DOMContentLoaded", function() {
if ($('.closed-level').length > 0) {
window.location = 'game.php?gid=' + game_id;
}
});
</script>