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

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


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

help:transitions

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


Переходы

Переименовать в что-нибудь вида "упорядочивание кода"

EXIT - завершение выполнения текущего кода (преждевременный выход из подпрограммы / обработчика какого-либо события…).

JUMP [$выражение] - переход в текущем коде (при обработке локации / выбора действия) на метку [$выражение]. Метка на локации обозначается как ":[название метки]". После описания метки (через "&") могут идти операторы. Если интерпретатор находит случайную метку, то он её просто игнорирует. Например:

jump 'КонеЦ'

p 'Это сообщение не будет выведено'

:конец

p 'А это сообщение пользователь увидит'

С помощью оператора "JUMP" можно организовывать циклы:

s=0

:loop

if s<9:

s=s+1

pl s

jump 'LOOP'

end

p 'Всё!'

Оператор "JUMP" также полезен во время отладки квеста, чтобы "обойти" группу операторов, которые временно не нужны.

GOSUB [$выражение],[параметр 1],[параметр 2], … или GS [$выражение],[параметр 1],[параметр 2], … - обработка локации с названием [$выражение]. Базовое описание локации добавляется к текущему описанию, базовые действия добавляются к текущим действиям, и происходит выполнение операторов в поле "Выполнить при посещении", затем возврат на исходную строку (продолжение выполнения программы).

Переданные параметры хранятся в массиве ARGS. После обработки локации предыдущие значения ARGS восстанавливаются. Примеры:

GS 'ход' - обработка локации "ход". Массив ARGS пуст.

GS $loc,1 - обработка локации, название которой хранится в $loc с передачей одного параметра. ARGS[0] равен 1.

GS 'ход',$var,2,'данные' - обработка локации "ход" с передачей 3-х параметров. $ARGS[0] равен значению $var, ARGS[1] равен 2, $ARGS[2] содержит строку "данные".

PS:

При обработке локаций по GOSUB, а также локаций, на которые указывают пункты пользовательского меню и системные переменные ($COUNTER, $USERCOM, $ONGLOAD, $ONGSAVE, $ONNEWLOC, $ONACTSEL, $ONOBJSEL, $ONOBJADD, $ONOBJDEL), учитываются базовые описания и действия на локациях (при отсутствии действий с такими же названиями - к текущим действиям добавляются базовые действия обрабатываемой локации, базовое описание локации добавляется к текущему основному описанию). Аналогично, при вызовах XGOTO, к текущему основному описанию добавляется базовое описание локации, на которую произошёл переход.

FUNC([$выражение],[параметр 1],[параметр 2], …) - обработка локации с названием [$выражение]. Указанные параметры передаются в массиве ARGS. Результат функции равен значению $RESULT при возврате строкового значения или RESULT при возврате числового значения. Если при обработке локации были установлены и RESULT, и $RESULT, то предпочтение отдаётся строковому значению. После обработки локации предыдущие значения ARGS и RESULT восстанавливаются. Примеры: PL 4 + FUNC('функция') - обработка локации "функция" как функции. Массив ARGS пуст. Результат передается через $RESULT или RESULT, в зависимости от кода обрабатываемой локации. PL FUNC($name, 1) * 78 - обработка локации с названием в $name как функции. ARGS[0] равен 1. MSG "text" + FUNC($name, "строка", 2) - обработка локации с названием в $name как функции. $ARGS[0] содержит строку "строка", ARGS[1] равен 2.

help/transitions.1382709589.txt.gz · Последние изменения: 2013/10/25 17:59 (внешнее изменение)