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

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


help:acts

Различия

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

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

Следущая версия
Предыдущая версия
help:acts [2013/11/07 11:41]
newsash создано
help:acts [2024/10/14 07:00] (текущий)
aleks_versus проба обновления до 5.9.0
Строка 1: Строка 1:
-[[help:​msgbox|Назад: ​Диалоговое окно]] +[[help:​msgbox|Назад: ​Окно сообщений]]
-=====Действия=====+
  
-Действия ​- это действия. Мне нечего добавить. +====== ​Действия ​======
-6) В названиях действий и предметов не важен регистр букв, т.е. "​ДеньГи"​ и "​деньги"​ - одна и та же локация.+
  
 +"​Менюшные"​ игры с точки зрения геймплея предоставляют игроку на выбор несколько вариантов действий,​ которыми он может воспользоваться. Выбрав действие,​ игрок двигает игру дальше по сюжету,​ и волне возможно,​ главный герой при этом совершает описанное действие:​ съедает кусок пирога,​ или проникает в чужой сад.
  
-====Команды====+Обычно действия отделены от основного описания и представляют собой ряд кликабельных кнопок. В **QSP** для размещения действий есть отдельное окно, оно так и называется **Окно действий**,​ или **Список действий** (в плеере просто:​ **Действия**).
  
-**SHOWACTS** //[#выражение]// - если значение выражения отлично от 0, то показывает список действий, иначе скрывает его.+С этим окном, ​в зависимости от нужд вашей игры, ​вы можете проделывать разные манипуляции. Вы можете:
  
-----+  * Отключать и включать **Окно действий** по своему желанию 
 +  * Добавлять действия в **Окно действий** 
 +  * Удалять действия из **Окна действий** 
 +  * Полностью очищать **Окно действий**
  
-**ACT** //[$название]//,//​[$путь к файлу изображения]//: [оператор] & [оператор] & ... - добавление действия к существующим на локации.+В названиях действий не важен ​регистр букв, то есть "Пойти"​ и "поЙти" - одно и то же действие.
  
-К действиям добавляется ​новое с описанием [$название] и изображением [$путь к файлу изображения]. При нажатии на него выполнятся заданные операторы.+При создании ​действия, **весь кодотносящийся к действию, "​прикрепляется" к этому действию, но не выполняется**. Этот код ​будет выполнен только тогда, когда игрок нажмёт на действие (щёлкнет по нему мышью).
  
-Параметр [$путь к файлу изображения] может ​отсутствовать,​ при этом действие добавится без изображения.+===== Команды для работы с Окном действий =====
  
-Также поддерживается многострочность:​ +==== Включение и выключение Окна действий ==== 
-<sxh qsp> + 
-act [$название],​ [$путь к фалу изображения]:​ +  * ''​%%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 end
 </​sxh>​ </​sxh>​
----- 
  
-**DELACT** //[$название]// или **DEL ACT** //​[$название]// ​- удаляет действие из списка действий на локации ​сли ​такое ​действие существует)+  ​''​%%DELACT [$название]%%'' ​- удаляет действие ​с указанным названием ​из списка действий на локации. Если действие с указанным названием не существует, ошибки не будет, плеер просто проигнорирует командуПримеры:​ <sxh qsp> 
 +! удаляем действие с конкретным названием 
 +delact ‘Идти вперед’
  
-**$CURACTS** - переменная с текущими действиями. Только для чтения. Сохранив значение переменной,​ восстановить ​действия можно с помощью оператора "​DYNAMIC"​.+! удаляем ​выделенное действие 
 +delact $selact 
 +</​sxh>​
  
-**CLA** - очистка списка текущих ​действий.\\  +==== Команды ​очистки ​Окна действий ​====
-**CLS** - эквивалентно конструкции "CLEAR & *CLEAR & CLA & CMDCLEAR",​ т.е. очищает все окна кроме списка предметов.+
  
 +  * **''​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>​
  
-См. $ONACTSEL+[[help:​goto|Вперёд:​ Переходы]]
  
-==== Памятка автору ==== 
-  * Ссылка на DYNAMIC 
-  * Ссылка на $ONACTSEL 
help/acts.1383824505.txt.gz · Последние изменения: 2013/11/07 15:41 (внешнее изменение)