ua:authors_main:task_editor:advanced:author_scripts:author_scripts_examples

This is an old revision of the document!


Приклади використання 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>

Якщо код складається з частин, розкиданих по різних підказках чи бонусах:

<script>code_part(номер_складеного_коду, 'частинакоду', число_складених_частин)</script>
  • номер_складеного_коду — порядковий номер складеного коду, якщо їх у грі кілька (якщо він один — ставте 0).
  • 'частинакоду' — рядок/частина коду (обов'язково в лапках). * число_складених_частин'' — загальна кількість складених частин, які потрібно зібрати.

<note important> Важливо: Обов'язково додайте на рівень підсумковий зібраний код як звичайний код, інакше у гравців сторінка весь час перезавантажуватиметься в циклі, намагаючись відправити неіснуючий код. </note>

Якщо вам потрібно автоматично запускати певний 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>
  • ua/authors_main/task_editor/advanced/author_scripts/author_scripts_examples.1781559212.txt.gz
  • Last modified: 2026/06/15 21:33
  • by 127.0.0.1