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

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


help:goto

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:goto [2022/09/12 13:04]
aleks_versus
help:goto [2024/10/14 07:11] (текущий)
aleks_versus проба обновления до 5.9.0
Строка 1: Строка 1:
 +[[help:​acts|Назад:​ Действия]]
 +
 ====== Переходы ====== ====== Переходы ======
  
 +Игрок исследует игровой мир, или следует по сюжету игры, перемещаясь по локациям. Задача автора игры — правильно прописать эти перемещения.
 +
 +Для перемещения между локациями в **QSP** предусмотрены специальные команды. Эти команды можно использовать в любом месте игры, но как правило,​ их размещают в действиях,​ чтобы позволить игроку самому решать,​ куда он хочет переместиться.
 +
 +===== Команды для перемещения между локациями =====
 +
 +  * ''​%%GOTO [$локация]%%''​ — переход на локацию с названием ''​%%[$локация]%%''​.
 +    * Пример:​ <sxh qsp>
 +! переход на локацию "​Тронный зал"​
 +goto '​Тронный зал'​
 +</​sxh>​
 +    * При переходе на указанную локацию с помощью команды **GOTO** происходит следующее:​
 +      * Очистка **Окна основного описания** и очистка **Окна действий**.
 +      * Вывод в **Окно основного описания** текста из поля "​**Базовое описание**"​ локации (поле "​**Описание**"​ в **QGen**).
 +      * Вывод в **Окно действий** действий из поля "​**Базовые действия**"​
 +      * Выполнение кода из поля **Выполнить при посещении**
 +    * Команда ''​%%GOTO%%''​ имеет краткую запись ''​%%GT%%''​. Пример:​ <sxh qsp>
 +goto "​тёмный_лес"​
 +! эквивалентно
 +gt "​тёмный_лес"​
 +</​sxh>​
 +    * При переходе,​ на локацию можно передавать до девятнадцати значений вместе с командой ''​%%GOTO%%''​. Значения перечисляются по порядку через запятую после названия локации:​ <sxh qsp>
 +GOTO [$локация],​[аргумент 0],​[аргумент 1], ... ,​[аргумент 18]
 +</​sxh>​ Передаваемые на локацию значения называются **аргументами** или **параметрами**. Эти значения плеер автоматически помещает в специальный массив ''​%%ARGS[]%%''​ в ячейки с нулевой по восемнадцатую. Пример:​ <sxh qsp>
 +# начало
 +! это код локации начало
 +act "​Начать игру":​
 +  ! при нажатии на действие игрок перейдёт на локацию "​комната"​
 +  goto "​комната","​начало"​ & ! на локацию комната будет передана строка со словом "​начало"​
 +end
 +--- начало ---
 +
 +# комната
 +! это код локации комната
 +$откуда_пришли=$args[0] & ! из $args[0] получаем значение,​ переданное с командой goto
 +if $откуда_пришли="​начало":​
 +  ! если пришли с локации "​начало",​ выводим душещипательную катсцену
 +  pl "​Здесь начинается наша история"​
 +else
 +  ! если пришли не с локации "​начало",​ просто выводим описание комнаты
 +  pl "​Описание комнаты"​
 +end
 +--- комната ---
 +</​sxh>​
 +  * ''​%%XGOTO [$локация]%%''​ - переход на локацию с названием ''​%%[$локация]%%''​ БЕЗ очистки **Окна основного описания**.
 +    * Пример:​ <sxh qsp>
 +! переход на локацию "​разговор с начальником"​
 +xgoto '​разговор с начальником'​
 +</​sxh>​
 +    * При переходе на указанную локацию с помощью команды ''​%%XGOTO%%''​ происходит следующее:​
 +      * Очистка **Окна действий**.
 +      * Вывод в **Окно основного описания** текста из поля **Базовое описание** локации (поле **Описание** в **QGen**). Новое описание дополняет уже имеющееся.
 +      * Вывод в **Окно действий** действий из поля **Базовые действия**
 +      * Выполнение кода из поля **Выполнить при посещении**
 +    * Команда ''​%%XGOTO%%''​ имеет краткую запись ''​%%XGT%%''​. Пример:​ <sxh qsp>
 +xgoto "​дремучая_чаща"​
 +! эквивалентно
 +xgt "​дремучая_чаща"​
 +</​sxh>​
 +    * При переходе,​ на локацию можно передавать до девятнадцати значений вместе с командой ''​%%XGOTO%%''​. Значения перечисляются по порядку через запятую после названия локации:​ <sxh qsp>
 +XGOTO [$локация],​[аргумент 0],​[аргумент 1], ... ,​[аргумент 18]
 +</​sxh>​ Передаваемые на локацию значения называются **аргументами** или **параметрами**. Эти значения плеер автоматически помещает в специальный массив ''​%%ARGS[]%%''​ в ячейки с нулевой по восемнадцатую. Пример:​ <sxh qsp>
 +! локация "​разговор с начальником"​
 +$вариант = $args[0] & ! первое значение помещаем в переменную вариант
 +счётчик = args[1] & ! второе значение — в переменную счётчик
 +act "— Можно задать вам вопрос?":​
 +  *pl 'Я: — Можно задать вам вопрос?'​
 +  xgoto '​разговор с начальником',​ '​можно?',​ счётчик + 1
 +end
 +
 +if $вариант = '​можно?':​
 +  if счётчик = 1:
 +    '​Начальник:​ — Задавайте.'​
 +  else:
 +    '​Начальник:​ — Вы это уже спрашивали.'​
 +  end
 +else:
 +  '​Начальник:​ — С чем пожаловали?'​
 +end
 +</​sxh>​
 +
 +===== Команды посещения локаций =====
 +
 +Иногда нам нужно прервать выполнение определённого кода, выполнить код на другой локации,​ а затем вернуться и продолжить выполнять прерванный код. В таких случаях операторы ''​%%GOTO%%''​ и ''​%%XGOTO%%''​ нам не подходят,​ ведь они осуществляют **переход** на локацию и оставляют нас на ней.
 +
 +В **QSP** есть более подходящие для таких ситуаций команды,​ они подробно описаны в разделе [[help:​organizing|"​Пользовательские функции и процедуры"​]].
 +
 +[[help:​objs|Вперёд:​ Предметы (инвентарь)]]
  
-**Это заготовка страницы по переходам между локациями. В настоящее время справка перерабатывается. Скоро данная страница станет полноценной.** 
help/goto.1662987878.txt.gz · Последние изменения: 2022/09/12 13:04 — aleks_versus