Skip to content

Latest commit

 

History

History
127 lines (88 loc) · 5.18 KB

WonderCommands.md

File metadata and controls

127 lines (88 loc) · 5.18 KB

Команды Wonder

Пользовательский скрипт JS может использовать методы объекта Wonder. Вместо Wonder можно использовать сокращенноё w.

Добавить текст на заданные страницы

Можно показать текст в месте, где скрипт. Удобно для проверки на параметры и условия, для показа особых линков и кусков текста.

Эта команда не работает в стартовом скрипте, работает только в тексте пассажа (страницы)

Начало текста
{{
    Wonder.showText('Кастомный текст'); // показать кастомный текст
}}
Продолжение текста

Save/Load

Чтобы включить автосейв, используйте в пользовательском скрипте такие строки:

Wonder.saveSlot('saveslot_TEST'); // определяет название слота
Wonder.autoSave();               // включает автосейв при каждом ходе       
Wonder.load();          // загрузить последнее сохранение, если есть

Также можно в тексте пассажей использовать вставки скриптов с помощью {{ вставьте скрипт здесь }} с командами save и load в таком виде

{{ 
    Wonder.save('save_slot1'); // сохранить в слоте save_slot1
 }} 

и

{{ 
    Wonder.load('save_slot1'); // загрузить из слота save_slot1
 }} 

При загрзуке игра перейдет на ту страницу (passage), на которой было сделано сохранение.

СSS

Подключить кастомный 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
}}

PostMessage API

Если игра запускается в iframe, то можно включить связь с родителем, обмен через postMessage. Event.data в postMessage протоколе должен содержать поля

  • name: название сообщения
  • data: данные сообщения (необязательно)

Подписка на получение сообщения от родителя.

Wonder.parentApi().on('start', (state)=> {
    console.log('state: ', state);
});

Сохранить состояние.

Wonder.parentApi().send('save', state);