Переходы
Игрок исследует игровой мир, или следует по сюжету игры, перемещаясь по локациям. Задача автора игры — правильно прописать эти перемещения.
Для перемещения между локациями в 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 есть более подходящие для таких ситуаций команды, они подробно описаны в разделе "Пользовательские функции и процедуры".