Здесь показаны различия между двумя версиями данной страницы.
Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия | ||
help:acts [2014/03/06 15:30] 127.0.0.1 внешнее изменение |
help:acts [2024/10/14 07:00] (текущий) aleks_versus проба обновления до 5.9.0 |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | [[help:msgbox|Назад: Диалоговое окно]] | + | [[help:msgbox|Назад: Окно сообщений]] |
- | =====Действия===== | + | |
- | Автор предлагает игроку варианты действий. Выбрав действие, игрок двигает игру дальше по сюжету - как правило, главный герой при этом совершает означенное действие. Например, убивает черепашку или проникает в чужой сад. | + | ====== Действия ====== |
+ | |||
+ | "Менюшные" игры с точки зрения геймплея предоставляют игроку на выбор несколько вариантов действий, которыми он может воспользоваться. Выбрав действие, игрок двигает игру дальше по сюжету, и волне возможно, главный герой при этом совершает описанное действие: съедает кусок пирога, или проникает в чужой сад. | ||
+ | |||
+ | Обычно действия отделены от основного описания и представляют собой ряд кликабельных кнопок. В **QSP** для размещения действий есть отдельное окно, оно так и называется **Окно действий**, или **Список действий** (в плеере просто: **Действия**). | ||
+ | |||
+ | С этим окном, в зависимости от нужд вашей игры, вы можете проделывать разные манипуляции. Вы можете: | ||
+ | |||
+ | * Отключать и включать **Окно действий** по своему желанию | ||
+ | * Добавлять действия в **Окно действий** | ||
+ | * Удалять действия из **Окна действий** | ||
+ | * Полностью очищать **Окно действий** | ||
В названиях действий не важен регистр букв, то есть "Пойти" и "поЙти" - одно и то же действие. | В названиях действий не важен регистр букв, то есть "Пойти" и "поЙти" - одно и то же действие. | ||
- | ====Команды==== | + | При создании действия, **весь код, относящийся к действию, "прикрепляется" к этому действию, но не выполняется**. Этот код будет выполнен только тогда, когда игрок нажмёт на действие (щёлкнет по нему мышью). |
- | * **SHOWACTS** //[#выражение]// - если значение выражения отлично от 0, то показывает список действий, иначе скрывает его. | + | ===== Команды для работы с Окном действий ===== |
+ | |||
+ | ==== Включение и выключение Окна действий ==== | ||
+ | |||
+ | * ''%%SHOWACTS [#выражение]%%'' - если значение выражения отлично от 0, то показывает **Список действий**, иначе скрывает его. Пример: <sxh qsp> | ||
+ | showacts 0 & ! скрываем Окно действий | ||
+ | showacts 1 & ! выводим Окно действий на экран | ||
+ | </sxh> Для удобства чтения кода можно заранее определить переменные ''%%on%%'' и ''%%off%%'' с соответствующими значениями: <sxh qsp> | ||
+ | on,off = 1,0 | ||
+ | showacts on & ! включаем Окно действий | ||
+ | showacts off & ! выключаем Окно действий | ||
+ | </sxh> | ||
+ | |||
+ | ==== Команды для управления действиями ==== | ||
+ | |||
+ | * ''%%ACT%%'' — данная команда добавляет в **Окно действий** кнопку действия. | ||
+ | * У этой команды есть две формы записи: | ||
+ | * Однострочная форма записи:<sxh qsp> | ||
+ | ACT [$название], [$путь к файлу изображения]: {оператор 1} & {оператор 2} & {оператор 3} | ||
+ | </sxh> Здесь ''%%[$название]%%'' — это надпись (название), которая будет выводиться на кнопке действия, а ''%%[$путь к файлу изображения]%%'' — путь к файлу изображения, которое так же будет выводиться на кнопке действия перед названием. | ||
+ | * И команда ''%%ACT%%'' и название, и операторы после двоеточия при такой форме записи должны быть записаны в одну строку. | ||
+ | * Когда игрок нажмёт кнопку действия с указанным названием, будут выполнены перечисленные операторы. | ||
+ | * Параметр ''%%[$путь к файлу изображения]%%'' может отсутствовать, при этом действие добавится без изображения. | ||
+ | * Многострочная форма записи: <sxh qsp> | ||
+ | ACT [$название], [$путь к файлу изображения]: | ||
+ | {оператор 1} | ||
+ | {оператор 2} | ||
+ | {оператор 3} | ||
+ | END | ||
+ | </sxh> Здесь точно так же будет создано действие с названием ''%%[$название]%%'', перед названием будет выводиться изображение, путь к которому мы указали с помощью параметра ''%%[$путь к файлу изображения]%%'', а когда игрок нажмёт на действие, будут выполнены перечисленные операторы. Обратите внимание: | ||
+ | * При многострочной форме записи после двоеточия в той же строке, где находится команда ''%%ACT%%'' не должно быть ничего. | ||
+ | * Все операторы записываются со следующей строки после двоеточия | ||
+ | * Многострочная форма обязательно должна завершаться командой ''%%END%%'' или ''%%END ACT%%''. | ||
+ | * Примеры: <sxh qsp> | ||
+ | ! действие в однострочной форме записи | ||
+ | act "Сорвать с берёзы яблоко": яблоко += 1 & *pl "Вы сорвали яблоко, спелое белое." | ||
+ | |||
+ | ! действие в многострочной форме записи, с изображением | ||
+ | act "Сорвать арбуз с куста", "img/watermelon.png": | ||
+ | арбуз += 1 | ||
+ | *pl "Вы сорвали арбуз с куста" | ||
+ | end | ||
+ | </sxh> | ||
+ | |||
+ | * ''%%DELACT [$название]%%'' - удаляет действие с указанным названием из списка действий на локации. Если действие с указанным названием не существует, ошибки не будет, плеер просто проигнорирует команду. Примеры: <sxh qsp> | ||
+ | ! удаляем действие с конкретным названием | ||
+ | delact ‘Идти вперед’ | ||
+ | |||
+ | ! удаляем выделенное действие | ||
+ | delact $selact | ||
+ | </sxh> | ||
+ | |||
+ | ==== Команды очистки Окна действий ==== | ||
+ | |||
+ | * **''CLA''** - очистка списка текущих действий (удаление всех действий из окна действий). Пример: <sxh qsp> | ||
+ | ! это действие при нажатии выведет текст | ||
+ | act "Действие 1": | ||
+ | *pl "Ехал Грека Через Реку" | ||
+ | end | ||
+ | |||
+ | ! это действие при нажатии выведет текст и удалится | ||
+ | act "Действие 2": | ||
+ | *pl "Видит Грека В Реке Рак" | ||
+ | delact $selact | ||
+ | end | ||
+ | |||
+ | ! это действие при нажатии удалит все действия | ||
+ | act "Очистить окно действий": | ||
+ | cla | ||
+ | end | ||
+ | </sxh> | ||
+ | |||
+ | * **''CLS''** - эквивалентно конструкции "''%%CLEAR & *CLEAR & CLA & CMDCLEAR%%''", т.е. очищает все окна кроме списка предметов. | ||
+ | |||
+ | ==== Функции для обработки действий ==== | ||
+ | |||
+ | * ''%%$CURACTS%%'' - данная функция возвращает текущий список действий в виде QSP-кода. | ||
+ | * Действия сохраняются в виде набора операторов ''%%ACT%%'' с ответствующими параметрами и операциями. | ||
+ | * Записав возвращённое функцией значение в переменную, можно восстановить действия с помощью оператора **[[help:dynamical|DYNAMIC]]**. Пример: <sxh qsp> | ||
+ | ! записываем текущие действия в переменную | ||
+ | $actlist=$curacts | ||
+ | ! восстанавливаем действия из переменной | ||
+ | dynamic $actlist | ||
+ | </sxh> | ||
+ | * ''%%$SELACT%%'' - данная функция возвращает название выделенного действия в любом месте игры. Пример: <sxh qsp> | ||
+ | act "Съесть яблоко": | ||
+ | *pl "Это было очень вкусное яблоко. Жаль, что червивое." | ||
+ | здоровье=здоровье+100 | ||
+ | delact $selact | ||
+ | end | ||
+ | </sxh> | ||
+ | |||
+ | ===== Событие "Выделение действия" ===== | ||
+ | |||
+ | Когда вы наводите курсор мыши на действие, в классическом плеере это действие подсвечивается голубым цветом, и это означает, что действие выделено. При этом функция **''$SELACT''**, вызванная в любом месте игры, будет возвращать название такого выделенного действия. | ||
+ | |||
+ | **Выделение действия** — это событие, к которому вы можете привязать автоматическое выполнение кода. Делается это с помощью системной переменной ''%%$ONACTSEL%%'': | ||
+ | |||
+ | * **''$ONACTSEL''** — системная переменная, куда можно прописать название локации, код на которой будет выполняться при очередном выделении действия. | ||
+ | |||
+ | Более подробная информация в разделе [[help:service_locations|"Служебные локации"]]. | ||
+ | |||
+ | ===== Локальные переменные в действии ===== | ||
+ | |||
+ | Каждое действие в **QSP** вляется отдельным блоком кода, и потому для него можно назначить локальные переменные. Таким образом можно проводить различные расчёты внутри действия, не затрагивая переменные на локации. | ||
- | * **ACT** //[$название]//,//[$путь к файлу изображения]//: //[операторы] // - добавление действия с описанием //[$название]// и изображением //[$путь к файлу изображения]// к существующим на локации. | ||
- | * При нажатии действия игроком выполнятся указанные операторы. | ||
- | * Параметр //[$путь к файлу изображения]// может отсутствовать, при этом действие добавится без изображения. | ||
- | * Также поддерживается многострочность: | ||
<sxh qsp> | <sxh qsp> | ||
- | act [$название], [$путь к файлу изображения]: | + | яблоки = 245 |
- | [оператор] | + | |
- | [оператор] | + | act "Наколдовать яблоки": |
- | [оператор] | + | local яблоки & ! объявляем локальную переменную |
+ | яблоки = val($input('Сколько вам нужно яблок?')) | ||
+ | яблоки_у_Миши += яблоки | ||
+ | *pl "Наколдовано яблок: <<яблоки>>" | ||
+ | end | ||
+ | |||
+ | act "Сколько яблок на локации?": | ||
+ | ! это действие работает с глобальной переменной | ||
+ | *pl "Яблок на локации: <<яблоки>>" | ||
end | end | ||
</sxh> | </sxh> | ||
- | * **DELACT** //[$название]// или **DEL ACT** //[$название]// - удаляет действие из списка действий на локации (если такое действие существует). | ||
- | * **$CURACTS** - функция, возвращающая текущие действия. | + | ===== Ограничения ===== |
- | * Действия сохраняются в виде набора операторов ACT с ответствующими параметрами и операциями. | + | |
- | * Сохранив действия в переменную, восстановить действия можно с помощью оператора "[[help:dynamical|DYNAMIC]]". | + | |
- | * **CLA** - очистка списка текущих действий. | + | * Максимальное количество одновременно видимых действий на локации — 50. То есть игрок не сможет увидеть больше пятидесяти действий на экране, сколько бы вы их не добавляли. |
- | * **CLS** - эквивалентно конструкции "CLEAR & *CLEAR & CLA & CMDCLEAR", т.е. очищает все окна кроме списка предметов. | + | * Если в списке действий уже есть действие с указанным названием, то новое действие не создаётся, и не заменяет собой уже существующее, плеер просто игнорирует команду **act**. Таким образом нельзя вывести действия с одинаковыми названиями. Пример: <sxh qsp> |
+ | act "Действие 1": *pl "Старое действие." | ||
+ | act "Действие 1": *pl "Новое действие." | ||
+ | </sxh> | ||
- | * См. [[help:service_locations|$ONACTSEL]] | + | [[help:goto|Вперёд: Переходы]] |
- | ---- | ||
- | [[help:objs|Вперёд: Предметы (инвентарь)]] |