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

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


Боковая панель

help:acts

Это старая версия документа.


Назад: Диалоговое окно

Действия

"Менюшные" игры с точки зрения геймплея, как правило, предоставляют игроку на выбор несколько вариантов действий, которыми он может воспользоваться. Выбрав действие, игрок двигает игру дальше по сюжету, и волне возможно, главный герой при этом совершает описанное действие: съедает кусок пирога, или проникает в чужой сад.

Обычно действия отделены от основного описания и представляют собой ряд кликабельных кнопок. В QSP для размещения действий есть отдельное окно, оно так и называется Окно действий, или Список действий (в плеере просто Действия).

С этим окном, в зависимости от нужд вашей игры, вы можете проделывать разные манипуляции. Вы можете:

  • Отключать и включать Окно действий по своему желанию
  • Добавлять действия в Окно действий
  • Удалять действия из Окна действий
  • Полностью очищать Окно действий

В названиях действий не важен регистр букв, то есть "Пойти" и "поЙти" - одно и то же действие.

При создании действия, весь код, относящийся к действию, "прикрепляется" к этому действию, но не выполняется. Этот код будет выполнен только тогда, когда игрок нажмёт на действие (щёлкнет по нему мышью).

Команды для работы с Окном действий

Включение и выключение Окна действий

  • SHOWACTS [#выражение] - если значение выражения отлично от 0, то показывает Список действий, иначе скрывает его. Пример:
    	showacts 0 & ! скрываем Окно действий
    	showacts 1 & ! выводим Окно действий на экран
    
    Для удобства чтения кода можно заранее определить переменные on и off с соответствующими значениями:
    	on,off = 1,0
    	showacts on & ! включаем окно дополнительного описания
    	showacts off & ! выключаем окно дополнительного описания
    

Команды для управления действиями

  • ACT — данная команда добавляет в Окно действий кнопку действия.
    • У этой команды есть две формы записи:
      • Однострочная форма записи:
        ACT [$название], [$путь к файлу изображения]: {оператор 1} & {оператор 2} & {оператор 3}
        
        Здесь [$название] — это надпись (название), которая будет выводиться на кнопке действия, а [$путь к файлу изображения] — путь к файлу изображения, которое так же будет выводиться на кнопке действия перед названием.
        • И команда ACT и название, и операторы после двоеточия при такой форме записи должны быть записаны в одну строку.
        • Когда игрок нажмёт кнопку действия с указанным названием, будут выполнены перечисленные операторы.
        • Параметр [$путь к файлу изображения] может отсутствовать, при этом действие добавится без изображения.
      • Многострочная форма записи:
        			ACT [$название], [$путь к файлу изображения]:
        				{оператор 1}
        				{оператор 2}
        				{оператор 3}
        			END
        
        Здесь точно так же будет создано действие с названием [$название], перед названием будет выводиться изображение, путь к которому мы указали с помощью параметра [$путь к файлу изображения], а когда игрок нажмёт на действие, будут выполнены перечисленные операторы. Обратите внимание:
        • При многострочной форме записи после двоеточия в той же строке, где находится команда ACT не должно быть ничего.
        • Все операторы записываются со следующей строки после двоеточия
        • Многострочная форма обязательно должна завершаться командой END или END ACT.
    • Примеры:
      		! действие в однострочной форме записи
      		act "Сорвать с берёзы яблоко": яблоко+=1 & *pl "Вы сорвали яблоко, спелое белое."
      
      		! действие в многострочной форме записи, с изображением
      		act "Сорвать арбуз с куста","img/watermelon.png":
      			арбуз+=1
      			*pl "Вы сорвали арбуз с куста"
      		end
      
  • DELACT [$название] - удаляет действие с указанным названием из списка действий на локации. Если действие с указанным названием не существует, ошибки не будет, плеер просто проигнорирует команду. Примеры:
    		! удаляем действие с конкретным названием
    		delact 'Идти вперед'
    
    		! удаляем выделенное действие
    		delact $selact
    

Команды очистки Окна действий

  • CLA - очистка списка текущих действий (удаление всех действий из окна действий). Пример:
    	! это действие при нажатии выведет текст
    	act "Действие 1":
    		*pl "Ехал Грека Через Реку"
    	end
    	! это действие при нажатии выведет текст и удалится
    	act "Действие 2":
    		*pl "Видит Грека В Реке Рак"
    		delact $selact
    	end
    	! это действие при нажатии удалит все действия
    	act "Очистить окно действий":
    		cla
    	end
    
  • CLS - эквивалентно конструкции "CLEAR & *CLEAR & CLA & CMDCLEAR", т.е. очищает все окна кроме списка предметов.

Функции для обработки действий

  • $CURACTS - данная функция возвращает текущий список действий в виде QSP-кода.
    • Действия сохраняются в виде набора операторов ACT с ответствующими параметрами и операциями.
    • Записав возвращённое функцией значение в переменную, можно восстановить действия с помощью оператора DYNAMIC. Пример:
      		! записываем текущие действия в переменную
      		$actlist=$curacts
      		! восстанавливаем действия из переменной
      		dynamic $actlist
      
  • $SELACT - данная функция возвращает название выделенного действия в любом месте игры. Пример:
    		act "Съесть яблоко":
    			*pl "Это было очень вкусное яблоко. Жаль, что червивое."
    			здоровье=здоровье+100
    			delact $selact
    		end
    

Событие "Выделение действия"

Когда вы наводите курсор мыши на действие, в классическом плеере это действие подсвечивается голубым цветом, и это означает, что действие выделено. При этом функция $SELACT, вызванная в любом месте игры, будет возвращать название такого выделенного действия.

Выделение действия — это событие, к которому вы можете привязать автоматическое выполнение кода. Делается это с помощью системной переменной $ONACTSEL:

  • $ONACTSEL — системная переменная, куда можно прописать название локации, код на которой будет выполняться при очередном выделении действия.

Более подробная информация в разделе "Служебные локации".

Локальные переменные в действии

Каждое действие в QSP вляется отдельным блоком кода, и потому для него можно назначить локальные переменные. Таким образом можно проводить различные расчёты внутри действия, не затрагивая переменные на локации.

яблоки=245
act "Наколдовать яблоки":
	local яблоки
	яблоки=val($input('Сколько вам нужно яблок?'))
	яблоки_у_Миши+=яблоки
	*pl "Наколдовано яблок: <<яблоки>>"
end
act "Сколько яблок на локации?":
	! это действие работает с глобальной переменной
	*pl "Яблок на локации: <<яблоки>>"
end

Ограничения

  • Максимальное количество одновременно видимых действий на локации — 50. То есть игрок не сможет увидеть больше пятидесяти действий на экране, сколько бы вы их не добавляли.
  • Если в списке действий уже есть действие с указанным названием, то новое действие не создаётся, и не заменяет собой уже существующее, плеер просто игнорирует команду act. Таким образом нельзя вывести действия с одинаковыми названиями. Пример:
    		act "Действие 1": *pl "Старое действие."
    		act "Действие 1": *pl "Новое действие."
    

Вперёд: Переходы

help/acts.1672414571.txt.gz · Последние изменения: 2022/12/30 15:36 — aleks_versus