Пользовательский скрипт JS может использовать методы объекта Wonder. Вместо Wonder
можно использовать сокращенноё w
.
Можно показать текст в месте, где скрипт. Удобно для проверки на параметры и условия, для показа особых линков и кусков текста.
Эта команда не работает в стартовом скрипте, работает только в тексте пассажа (страницы)
Начало текста
{{
Wonder.showText('Кастомный текст'); // показать кастомный текст
}}
Продолжение текста
Чтобы включить автосейв, используйте в пользовательском скрипте такие строки:
Wonder.saveSlot('saveslot_TEST'); // определяет название слота
Wonder.autoSave(); // включает автосейв при каждом ходе
Wonder.load(); // загрузить последнее сохранение, если есть
Также можно в тексте пассажей использовать вставки скриптов с помощью {{ вставьте скрипт здесь }}
с командами save и load в таком виде
{{
Wonder.save('save_slot1'); // сохранить в слоте save_slot1
}}
и
{{
Wonder.load('save_slot1'); // загрузить из слота save_slot1
}}
При загрзуке игра перейдет на ту страницу (passage), на которой было сделано сохранение.
Подключить кастомный css из внешнего URL
Wonder.styleUrl('mystyle.css');
Просто запустить музыку в любой момент
Wonder.music(url: string, volume = 1)
Запустить музыку на локации hashName
Wonder.musicFor(hashName: string, url: string, volume = 1
Выключить музыку
Wonder.musicStop();
По умолчанию музыка зациклена. Чтобы проиграть звуковой эффект без повторения
Wonder.sound(url, volume);
Можно собирать страницы с определенным тегом (в Twine) в коллекции.
Wonder.collect({
// можно выбирать сразу кучу тегов
tags: ['gameover'],
// читабельный заголовок для пользователя
title: 'Концовки',
// сохранять собранные id в коллекцию
collection: 'gameovers'
})
Команда w.pageAdd
добавляет в конец любой страницы с тегом tagName
произвольный текст.
Это удобно, к примеру, для единообразных кнопок на gameover
{{
w.pageAdd('gameover', '<div id="restartButton">[[Начать заново|start]]</div>');
}}
Эту команду следует применять в самом начале, то есть в пользовательском скрипте Twine. Она не модифицирует все страницы сразу, а просто задает правило, по которому будет добавляться текст на некоторые страницы при их выводе.
Текст может быть кодом HTML. Текст добавляется только в конец страниц. Текст добавляется в момент вывода страницы на экран, перед её показом игроку.
Дополнительные команды того же рода:
{{
w.pageBefore('gameover', 'Текст перед началом'); // добавить текст перед началом страниц с тегом gameover
w.pageWrap('gameover', 'Текст перед началом', 'Текст после конца'); // добавить текст перед началом и в конце страниц с тегом gameover
}}
Если игра запускается в iframe, то можно включить связь с родителем, обмен через postMessage. Event.data в postMessage протоколе должен содержать поля
- name: название сообщения
- data: данные сообщения (необязательно)
Подписка на получение сообщения от родителя.
Wonder.parentApi().on('start', (state)=> {
console.log('state: ', state);
});
Сохранить состояние.
Wonder.parentApi().send('save', state);