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