Table of Contents

Типові скрипти

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

Приклад олімпійки | Приклад олімпійки зі стартовими комірками

Відображення зібраних штурмових балів у завданні

Вставте в текст завдання:

Всього балів: !bonus!

Кастомний обробник введення відповіді

Ви можете перехоплювати та змінювати введений гравцями відповідь на клієнті перед її відправкою на сервер. Наприклад, автоматично дописати префікс p_:

window.submitAnswerCallback = function(answer) {
  return 'p_' + answer;
}

*Якщо функція поверне порожній рядок, відправку відповіді на сервер буде заблоковано.*

Приклад перехоплювача у грі

Скрипти в бонусах та підказках

Ці сценарії повинні вставлятися в полі тексту рішення бонусів/підказок у режимі “Джерело” (Source):

Автоматичне введення коду при відкритті підказки/бонусу

<script>enter('Код який треба ввести')</script>

Складені коди в бонусах/штрафних підказках

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

<script>code_part(номер_складеного_коду, 'частинакоду', число_складених_частин)</script>

<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>