Инструменты пользователя

Инструменты сайта


help:acts

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:acts [2020/05/06 08:33]
aleks_versus [Команды]
help:acts [2024/10/14 07:00] (текущий)
aleks_versus проба обновления до 5.9.0
Строка 1: Строка 1:
-[[help:​msgbox|Назад: ​Диалоговое окно]] +[[help:​msgbox|Назад: ​Окно сообщений]]
-=====Действия=====+
  
-Автор предлагает игроку варианты действий. Выбрав действие,​ игрок двигает игру дальше по сюжету ​- как правило, главный герой при этом совершает означенное действие. Например, убивает ​черепашку или проникает в чужой сад.+====== Действия ====== 
 + 
 +"​Менюшные"​ игры с точки зрения геймплея ​предоставляют игроку ​на выбор несколько ​вариантов действий, которыми он может воспользоваться. Выбрав действие,​ игрок двигает игру дальше по сюжетуи волне возможно, главный герой при этом совершает описанное действие: съедает кусок ​пирогаили проникает в чужой сад. 
 + 
 +Обычно действия отделены от основного описания и представляют собой ​ряд кликабельных кнопок. В **QSP** для размещения действий есть отдельное окно, оно так и называется **Окно действий**, ​или ​**Список действий** (в плеере ​просто: **Действия**). 
 + 
 +С этим окном, в зависимости от нужд вашей игры, вы можете проделывать разные манипуляции. Вы можете:​ 
 + 
 +  * Отключать и включать **Окно действий** по своему желанию 
 +  * Добавлять действия в **Окно действий** 
 +  * Удалять ​действия из **Окна действий** 
 +  * Полностью очищать **Окно действий**
  
 В названиях действий не важен регистр букв, то есть "​Пойти"​ и "​поЙти"​ - одно и то же действие. В названиях действий не важен регистр букв, то есть "​Пойти"​ и "​поЙти"​ - одно и то же действие.
  
-====Команды====+При создании действия,​ **весь код, относящийся к действию,​ "​прикрепляется"​ к этому действию,​ но не выполняется**. Этот код будет выполнен только тогда, когда игрок ​нажмёт на действие (щёлкнет по нему мышью).
  
-  * **SHOWACTS** //[#выражение]// - если значение выражения ​отлично от 0, то показывает список действий, иначе скрывает его.+===== Команды для работы с Окном действий ​=====
  
-  ​* **ACT** //[$название]//,//​[$путь к файлу изображения]//: //[операторы] // - добавление действия с описанием //[$название]// и изображением //[$путь к файлу изображения]// к существующим на локации. +==== Включение и выключение Окна действий ==== 
-    При нажатии действия ​игроком ​выполнятся указанные операторы. + 
-    * Параметр ​//[$путь к файлу изображения]// может отсутствовать,​ при этом действие добавится без изображения. +  ​''​%%SHOWACTS [#​выражение]%%''​ - если значение выражения отлично от 0, то показывает ​**Список действий**, иначе скрывает его. Пример:​ <sxh qsp> 
-    Также поддерживается многострочность: +showacts 0 & ! скрываем Окно действий 
-<sxh qsp> +showacts 1 & ! выводим Окно действий на экран 
-act [$название],​ [$путь к файлу изображения]:​ +</​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 end
 </​sxh>​ </​sxh>​
-  * **DELACT** //​[$название]//​ или **DEL ACT** //​[$название]//​ - удаляет действие из списка действий на локации (если такое действие существует). ​ 
  
-  * **$CURACTS** - данная функция возвращает текущий список действий ​в виде QSP-кода. +  * ''​%%DELACT [$название]%%''​ - удаляет действие с указанным названием из списка действий ​на локацииЕсли действие с указанным названием не существует, ошибки не будет, плеер просто проигнорирует команду. Примеры: <sxh qsp> 
-    * Действия сохраняются в виде набора операторов ACT с ответствующими параметрами и операциями. +! удаляем ​действие ​с конкретным названием 
-    * Сохранив действия в переменную, ​восстановить действия можно с помощью оператора "​[[help:​dynamical|DYNAMIC]]"​.+delact ‘Идти ​вперед’
  
-  * **$SELACT** - данная функция возвращает название выделенного действия в любом месте игры.+! удаляем выделенное действие 
 +delact $selact 
 +</​sxh>​
  
-  * **CLA** - очистка списка текущих ​действий+==== Команды ​очистки ​Окна действий ​====
-  * **CLS** - эквивалентно конструкции "CLEAR & *CLEAR & CLA & CMDCLEAR",​ т.е. очищает все окна кроме списка предметов.+
  
-  * См[[help:service_locations|$ONACTSEL]]+  * **''​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** вляется отдельным блоком кода, и потому для него можно назначить локальные переменные. Таким образом можно проводить различные расчёты внутри действия,​ не затрагивая переменные на локации. 
 + 
 +<sxh qsp> 
 +яблоки = 245 
 + 
 +act "​Наколдовать яблоки":​ 
 +  local яблоки & ! объявляем локальную переменную 
 +  яблоки = val($input('​Сколько вам нужно яблок?'​)) 
 +  яблоки_у_Миши += яблоки 
 +  *pl "​Наколдовано яблок: <<​яблоки>>"​ 
 +end 
 + 
 +act "​Сколько яблок на локации?":​ 
 +  ! это действие работает с глобальной переменной 
 +  *pl "​Яблок на локации:​ <<​яблоки>>"​ 
 +end 
 +</​sxh>​ 
 + 
 +===== Ограничения ====
 + 
 +  * Максимальное количество одновременно видимых действий на локации — 50. То есть игрок не сможет увидеть больше пятидесяти действий на экране,​ сколько бы вы их не добавляли. 
 +  * Если в списке действий уже есть действие с указанным названием,​ то новое действие не создаётся,​ и не заменяет собой уже существующее,​ плеер просто игнорирует команду **act**. Таким образом нельзя вывести действия с одинаковыми названиями. Пример:​ <sxh qsp> 
 +act "​Действие 1": *pl "​Старое действие."​ 
 +act "​Действие 1": *pl "​Новое действие."​ 
 +</​sxh>​
  
-Максимальное количество одновременно видимых действий на локации — 50 +[[help:​goto|Вперёд: Переходы]]
  
----- 
-[[help:​objs|Вперёд:​ Предметы (инвентарь)]] 
help/acts.1588754010.txt.gz · Последние изменения: 2020/05/06 08:33 — aleks_versus