Типові скрипти
Приклади використання 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) вставте скрипт:
<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>