uk:authors_main:task_editor:advanced:author_scripts:author_scripts_examples

Приклади використання 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('Взять подсказку', 'Купити завдання'));});
  1. У текст завдання впишіть спеціальний маркер: [olymp] (він автоматично заміниться на таблицю під час гри).
  2. У скрипт завдання впишіть: 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');
  3. Щоб відображати замість правильно введеного слова якесь інше кастомне значення:
    • Створіть бонус із тим самим кодом.
    • У полі “Текст після вирішення” бонусу в режимі вихідного коду (Source) вставте скрипт:
<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>
  • uk/authors_main/task_editor/advanced/author_scripts/author_scripts_examples.txt
  • Востаннє змінено: 2026/08/16 11:25
  • (зовнішнє редагування)