Здесь показаны различия между двумя версиями данной страницы.
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: | ||
- | ====== Заголовок 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|Вперёд: Предметы (инвентарь)]] | ||
- | **Это заготовка страницы по переходам между локациями. В настоящее время справка перерабатывается. Скоро данная страница станет полноценной.** |