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

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


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

help:goto

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


Назад: Действия

Переходы

Игрок исследует игровой мир, или следует по сюжету игры, перемещаясь по локациям. Задача автора игры — правильно прописать эти перемещения.

Для перемещения между локациями в QSP предусмотрены специальные команды. Эти команды можно использовать в любом месте игры, но как правило, их размещают в действиях, чтобы позволить игроку самому решать, куда он хочет переместиться.

Команды для перемещения между локациями

  • GOTO [$локация] — переход на локацию с названием [$локация].
    • Пример:
      			! переход на локацию "Тронный зал"
      			goto 'Тронный зал'
      
    • При переходе на указанную локацию с помощью команды GOTO происходит следующее:
      • Очистка Окна основного описания и очистка Окна действий.
      • Вывод в Окно основного описания текста из поля "Базовое описание" локации (поле "Описание" в QGen).
      • Вывод в Окно действий действий из поля "Базовые действия"
      • Выполнение кода из поля Выполнить при посещении
    • Команда GOTO имеет краткую запись GT. Пример:
      		goto "тёмный_лес"
      		! эквивалентно
      		gt "тёмный_лес"
      
    • При переходе, на локацию можно передавать до девятнадцати значений вместе с командой GOTO. Значения перечисляются по порядку через запятую после названия локации:
      		GOTO [$локация],[аргумент 0],[аргумент 1], ... ,[аргумент 18]
      
      Передаваемые на локацию значения называются аргументами или параметрами. Эти значения плеер автоматически помещает в специальный массив ARGS[] в ячейки с нулевой по восемнадцатую. Пример:
      		# начало
      		! это код локации начало
      		act "Начать игру":
      		! при нажатии на действие игрок перейдёт на локацию "комната"
      			goto "комната","начало" & ! на локацию комната будет передана строка со словом "начало"
      		end
      		--- начало ---
      
      		# комната
      		! это код локации комната
      		$откуда_пришли=$args[0] & ! из $args[0] получаем значение, переданное с командой goto
      		if $откуда_пришли="начало":
      			! если пришли с локации "начало", выводим душещипательную катсцену
      			*pl "Здесь начинается наша история"
      		else
      			! если пришли не с локации "начало", просто выводим описание комнаты
      			*pl "Описание комнаты"
      		end 
      		--- комната ---
      
  • XGOTO [$локация] - переход на локацию с названием [$локация] БЕЗ очистки Окна основного описания.
    • Пример:
      			! переход на локацию "разговор с начальником"
      			xgoto 'разговор с начальником'
      
    • При переходе на указанную локацию с помощью команды XGOTO происходит следующее:
      • Очистка Окна действий.
      • Вывод в Окно основного описания текста из поля Базовое описание локации (поле Описание в QGen). Новое описание дополняет уже имеющееся.
      • Вывод в Окно действий действий из поля Базовые действия
      • Выполнение кода из поля Выполнить при посещении
    • Команда XGOTO имеет краткую запись XGT. Пример:
      		xgoto "дремучая_чаща"
      		! эквивалентно
      		xgt "дремучая_чаща"
      
    • При переходе, на локацию можно передавать до девятнадцати значений вместе с командой XGOTO. Значения перечисляются по порядку через запятую после названия локации:
      		XGOTO [$локация],[аргумент 0],[аргумент 1], ... ,[аргумент 18]
      
      Передаваемые на локацию значения называются аргументами или параметрами. Эти значения плеер автоматически помещает в специальный массив ARGS[] в ячейки с нулевой по восемнадцатую. Пример:
      		! локация "разговор с начальником"
      		$вариант=$args[0] & ! первое значение помещаем в переменную вариант
      		счётчик=args[1] & ! второе значение — в переменную счётчик
      		act "— Можно задать вам вопрос?":
      			*pl 'Я: — Можно задать вам вопрос?'
      			xgoto 'разговор с начальником','можно?',счётчик+1
      		end
      		if $вариант='можно?':
      			if счётчик=1:
      				'Начальник: — Задавайте.'
      			else
      				'Начальник: — Вы это уже спрашивали.'
      			end
      		else
      			'Начальник: — С чем пожаловали?'
      		end
      

Команды посещения локаций

Иногда нам нужно прервать выполнение определённого кода, выполнить код на другой локации, а затем вернуться и продолжить выполнять прерванный код. В таких случаях операторы GOTO и XGOTO нам не подходят, ведь они осуществляют переход на локацию и оставляют нас на ней.

В QSP есть более подходящие для таких ситуаций команды, они подробно описаны в разделе "Пользовательские функции и процедуры".


Вперёд: Предметы (инвентарь)

help/goto.1672416025.txt.gz · Последние изменения: 2022/12/30 16:00 (внешнее изменение)