Содержание

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

Переходы

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

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

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

Использование массива ARGS для действий и гиперссылок

Вы можете использовать значения из массива ARGS не только в коде локации, на которую был осуществлён переход, но так же и в гиперссылках, выведенных на экран и в действиях. Примеры:

args[0] = 12
act 'Show args[0]':
   *pl args[0] & ! на экране увидим 12
end

! щелчки по гиперссылке будут увеличивать значение args[1]
'<a href="EXEC:args[1] += 1">Прибавить число</a>'
! а если щёлкнуть по этой гиперссылке,
! значение args[1] появится в дополнительном описании:
'<a href="EXEC:pl args[1]">Узнать число</a>'

Точно так же, как и для любой другой локации, массив ARGS уникален для текущей локации, и будет полностью уничтожаться при переходе на новую локацию.

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

$args[21] = {
  if no деньги<100:
    addobj 'Кружка имбирного эля' 
    кружка_эля += 1 
    деньги -= 100
    *pl "Я приобрёл кружку имбирного эля."
  else
     *pl "Мне не хватает денег на эль."
  end
}
*pl "<a href='exec:dynamic $args[21]'>Купить кружку имбирного эля</a>"

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

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

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

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