Общие команды (General Commands)

На главную  Назад  Вперед

<RetVar/IF><Expression>

engine v. 32

Эта команда предназначена для передачи вычисленного значения <Expression> либо в переменную, либо в программную логическую скобку. В качестве программной логической скобки могут выступать любые конструкции содержащие либо оператор <IF>, либо <WHILE> оператор .

 

Примеры

 


inc <RetVar> =

engine v. 32

Команда увеличивает значение целочисленной переменной <RetVar> на 1(добавляет к значению переменной <RetVar> 1, и возвращает результат в эту же переменную <RetVar>).

 

 

 


dec <RetVar> =

engine v. 32

Команда уменьшает значение целочисленной переменной <RetVar> на 1 (вычитает из переменной <RetVar> 1, и возвращает результат в эту же переменную <RetVar>).

 

 

 


@ <RetVar/IF>wait <Var/Number> ms

engine v. 32

Команда очень нужная и важная :-). Переводит скрипт в режим ожидания на <Var/Number> ms, а точнее позволяет движку игры в указанный период времени заняться обработкой других событий, скриптов, отрисовкой графики. Очень рекомендуется к применению, особенно при наличии циклов в вашем скрипте.
Возвращает   информацию о том происходило ли прерывание за время ожидания, и если происходило - то когда (опосредованно). 0 - если в момент ожидания прерывания сторонними скриптами не происходило, если во время ожидания происходило прерывание скрипта - то возвращает оставшееся время, до заданного <Var/Number>. Т.е. если вы задали к примеру 300 ms, а прерывание произошло на 120, то функция вернет 180.
Параметр <Var/Number> ms - приблизительный. Так как минимальное время ожидания не может быть меньше времени прогонки одного фрейма, то есть чтобы вычислить минимальную задержку нужно взять текущее количество фреймов в секунду и рассчитать по формуле <мин.задержка>= 1000/<fps>, получим количество ms за один фрейм это будет минимальное время задержки. Например, если fps = 35 то самое минимальное время задержки будет не менее 28 ms.

 

Примеры

 


@ <RetVar/IF>wait randomly from <Var/Number> to <Var/Number> ms

engine v. 32

Команда по логике работы аналогична @ <RetVar/IF>wait <Var/Number> ms , однако скрипт будет переведен в режим ожидания на случайное число ms., в диапазоне между from <Var/Number> и to <Var/Number>.

 

 

 


<RetVar/IF> = random value from 0 to <Var/Number> - 1

engine v. 32

Команда генерирует и возвращает в  переменную <Var> случайное число в диапазоне от 0 до <Var/Number>-1. Эту команду очень удобно использовать для выбора случайного элемента, из массива с размерностью <Var/Number>.

 

 

 


<RetVar> = script engine version

engine v. 32

Команда возвращает в переменную <RetVar> версию ScE . При помощи этой функции легко сделать проверку исключающую запуск скрипта на движке версией ниже той для которой он был написан. Наличие таких проверок в самом начале ваших скриптов, обеспечит их правильную работу.

 

 

 


<RetVar> =  = random value from <Var/Number> to <Var/Number> - 1

engine v. 32

Команда аналогична <RetVar> = random value from <Var/Number> to <Var/Number> - 1 . Только в качестве минимального значения для диапазона выборки случайного значения используется from <Var/Number>.

 

 

 


* <Comment>

engine v. 32

Комментарий в тексте скрипта, любая строка в скрипте начатая с символа * - является комментарием.

 

 

 


<RetVar> =  = get script priority

engine v. 32

Команда возвращает в переменную <RetVar> приоритет текущего  скрипта (того скрипта который выполнил эту инструкцию). Эта команда будет очень полезной при организации сложных взаимодействий скриптов.

 

 

 


<RefObj> start task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value> arg5=<Value>

engine v. 32

Команда запускает скрипт <Script Name> в стеке task <Var/Number> объекта <RefObj> с приоритетом prio <Var/Number> и параметрами arg1=<Value> ... arg5=<Value>, при этом вытеснив (удалив) все остальные скрипты из этого же стека.

Дополнение от пилота Andrei [<>Ace] :

Команда используется для запуска скриптов в стеках (слотах) объекта <RefObj> в том числе: скриптов турелей (Task с 1 по 6), слоты дополнительных корабельных команд (Task с 10 по 11), слоты команд станций ( Task 10 -19).

Дополнение от пилота sergej4341 :

Номера стеков (слотов) на цифре 19 не заканчиваются, все остальные стеки можно использовать для запуска "фоновых" скриптов не только на кораблях расы Player но и на всех NPC.

Дополнение от пилота AlexYar :

Однако стабильная работа стеков, отличных от нулевого, возможна только в том секторе, где находится игрок. В остальных работа стеков будет либо заморожена, либо будет нестабильна (игра их выкинет просто напросто, хотя и не в 100% случаев). Такая ситуация наблюдается в игре со стандартными обжами. Т.е. использование стеков кроме 0 не рекомендуется в удаленных секторах.

Внимание!

 

 


<RefObj> interrupt task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value>

engine v. 32

Команда формирует запрос на прерывание  скриптом <Script Name> в стеке task <Var/Number> объекта <RefObj> с приоритетом prio <Var/Number> и параметрами arg1=<Value> ... arg4=<Value>, но только при условии, что в соответствующем стеке уже запущен хоть 1 скрипт и указанный приоритет prio <Var/Number> выше приоритета активного в данном стеке скрипта. Если прерывания разрешены в данном стеке, то запуск скрипта <Script Name> фактически произойдет лишь в момент завершения первой встретившейся за командой interrupt прерываемой команды (т.е. помеченной "@"). И, если такой команды нет вплоть до return, то скрипт <Script Name> запущен не будет.

 

 

 


<RefObj> interrupt with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value>

engine v. 32

Команда аналогична использованию команды <RefObj> interrupt task <Var/Number> with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value> , со значением task <Var/Number> = 0. Т.е. запрос на прерывание осуществляется с стеке task 0 объекта <RefObj>.

 

 

 


set script priority to <Var/Number>

engine v. 32

Команда уставливает приоритет скрипта равным <priority>. Значение должно быть в пределах от 0 до 10000. По умолчанию приоритет любого скрипта запущенного командой call или из скриптового редактора равен 0.

 

 

 


<RetVar/IF>is script with prio <Var/Number> on stack

engine v. 32

Команда возвращает [TRUE] если в текущем стеке находится (выполняется в данный момент или стоит в очереди на выполнение) скрипт с приоритетом prio <Var/Number>. Т.е. если эта команда вызвана из скрипта, запущенного в стеке Task 10, то будут проанализированы все скрипты, включая текущий, но запущенные только в этом же стеке Task 10 этого же объекта. Кстати, весьма полезная команда. На сегодня это единственная команда, с помощью которой извне (из другого скрипта) можно узнать а запущен ли такой-то скрипт в таком-то слоте такого-то корабля/станции. Эта функция может быть использована для определения какой сигнал был получен кораблем и выполняемые в текущий момент действия. Определяя находится ли в стеке этого корабля скрипт обработчик сигнала. Например: если при проверке находится ли в стеке скрипт с приоритетом 99, инструкция возвращает [TRUE], то это означает, что корабль подвергся нападению и оказывает сопротивление нападающему. В таблице указаны приоритеты скриптов обработчиков, назначенные им по умолчанию.

Prio

Используется

0

Все скрипты по умолчанию

50

Бегство после обработки SIGNAL_ATTACKED

99

Вооруженное сопротивление после обработки SIGNAL_ATTACKED

100

SIGNAL_ATTACKED

150

SIGNAL_LEADERNEEDSHELP

SIGNAL_FOLLOWERNEEDSHELP

200

SIGNAL_FORMATIONLEADERCHANGED

300

SIGNAL_CAPTURED

10000

SIGNAL_KILLED

 

 

 


<RetVar/IF>get task ID

engine v. 32

Команда возвращает номер стека на объекте, в котором выполняется текущий скрипт. Когда вы пользуетесь командами из главного меню, «Торговые», «Навигационные», «Боевые» и т.д. то запускаемые скрипты имеют свой Task ID. Например: команда покупать или продавать товар будет  иметь номер 0, команды управления турелями с 1-6, команды из дополнительного слота 10-11. Также в разделе "Script Task Infos" меню информации об объекте можно увидеть список всех активных стеков (задач) и какие скрипты и с каким приоритетом выполняются в каждом из них.

 

 

 


<RetVar/IF>get PID

engine v. 32

Команда возвращает глобальный идентификатор задачи (PID). Глобальный идентификатор присваивается ScE любому запускаемому процессу и используется движком для внутренних ссылок на процесс, PID для каждого процесса строго индивидуален, это значит, что не может быть двух процессов имеющих одинаковый PID.   Посмотреть PID можно в информационном окне объекта (при активированном скрипт-редакторе)

 

 

 


<RefObj> interrupt with script <Script Name> and prio <Var/Number>

engine v. 32

Команда аналогична команде <RefObj> interrupt with script <Script Name> and prio <Var/Number>: arg1=<Value> arg2=<Value> arg3=<Value> arg4=<Value> , следует использовать, если вызываемый скрипт не имеет аргументов.

 

 

 


<RefObj> connect ship command/signal <Object Command/Signal> to script <Script Name> with prio <Var/Number>

engine v. 32

Команда устанавливает связь объектной команды/сигнала <Object Command/Signal> с определенным объектом <RefObj>, назначая обработчиком этой команды или сигнала скрипт <Script Name>, и устанавливает его приоритет равным <Var/Number>.

 

 

 


<RefObj> set ship command/signal <Object Command/Signal> to global default behaviour

engine v. 32

Команда восстанавливает стандартный обработчик объектной команды/сигнала <Object Command/Signal> для объекта <RefObj>.

 

 

 


<RefObj> ignore ship command/signal <Object Command/Signal>

engine v. 32

Команда отключает обработку объектных команд/сигналов <Object Command/Signal> объектом <RefObj>. То есть после этой инструкции на объекте не будет запускаться обработчик этой команды, даже если он получит соответствующий сигнал или команду.

 

 

 


enable signal/interrupt handling: <Var/Number>

engine v. 32

Команда включает/выключает ([TRUE]/[FALSE]) прерывания для всего текущего стека. По умолчанию прерывания разрешены. Команда полезна, если вам требуется исключить прерывание текущего скрипта.

 

 

 


<RetVar/IF>is signal/interrupt handling on

engine v. 32

Команда возвращает состояние флага обработки сигналов/прерываний. [TRUE] если прерывания для текущего стека разрешены и [FALSE] если запрещены.

 

 

 


global script map: set: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>, script=<Script Name>, prio=<Var/Number>

engine v. 32

Команда назначает для объектной команды/сигнала <Object Command/Signal> скрипт-обработчик. Установка производится глобально, т.е.для всех объектов класса <Var/Class> принадлежащих расе <Var/Race> в качестве обработчика назначается скрипт <Script Name> и для него устанавливается приоритет <Var/Number>.

 

 

 


global script map: remove: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>

engine v. 32

Команда отменяет назначение скрипта-обработчика объектной команды/сигнала <Object Command/Signal> для всех объектов класса <Var/Class> принадлежащих расе <Var/Race> скрипта <Script Name>.

 

 

 


global script map: ignore: key=<Object Command/Signal>, class=<Var/Class>, race=<Var/Race>

engine v. 32

Команда отключает обработку объектной команды/сигналы на объектах определенного типа. Параметры такие же как и у двух предыдущих команд.

 

Примеры

 


set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware>

engine v. 32

Команда задает апгрейд или товар <Var/Ware>, который должен быть установлен на объекте для активации объектной команды <Object Command/Signal> в меню объекта. При отсутствии данного апргейда или товара строка в командном меню объекта не отразится. Если <Var/Ware> указать [TRUE], то команда будет появляться всегда.

 

 

 


<RetVar> = get script command upgrade: command=<Object Command/Signal>

engine v. 32

Команда возвращает в переменную <RetVar> необходимый апгрейд или товар, необходимый для активации в командном меню объектной команды <Object Command/Signal> . Если апгрейд не требуется возвращает [TRUE].

 

 

 


set script command: <Object Command/Signal>

engine v. 32

Команда устанавливает для текущего скрипта в качестве связанной с ним объектной команды команду <Object Command/Signal>.

 

 

 


<RetVar/IF>get script command

engine v. 32

Команда возвращает объектную команду связанную с текущим скриптом. Также, если результат возвращается в логическую программную скобку, при наличие связанной объектной команды возвращается значение  - [TRUE],  иначе - [FALSE].

 

 

 


set script command target: <Value>

engine v. 32

Команда устанавливает <Value> в качестве цели для объектной команды текущего скрипта .

 

 

 


<RetVar/IF>get script command target

engine v. 32

Команда возвращает цель, установленную для объектной команды текущего скрипта. В случае возврата значения в логическую программную скобку, наличие цели эквивалентно [TRUE], и отсутствие - [FALSE].

 

 

 


<RetVar> =  datatyp[ <Value> ]

engine v. 32

Команда возвращает в переменную <RetVar> тип переменной <Value>, согласно описанию типов данных. <Доделать>

 

 

 


<RetVar/IF> is datatyp[ <Value> ] == <Var/Script Data Type>

engine v. 32

Команда возвращает результат проверки принадлежности переменной <Value> к типу данных <Var/Script Data Type>, в виде логического [TRUE]|[FALSE].

 

 

 


<RetVar> =  read text: page=<Var/Number> id=<Var/Number>

engine v. 32

Команда возвращает значение из основного языкового файла, со страницы page=<Var/Number> и идентификатора (ID) page=<Var/Number> (для русской версии игры это 70001.xml(.pck), для английской - 440001.xml(.pck)). Этот файл может быть изменен или дополнен дополнительными языковыми файлами, догружаемыми командой load text: id=<Var/Number>. Соответственно страницы и ID подгружаемые из дополнительных файлов, сразу после догрузки станут доступны для этой команды, но не ранее того. (Подробнее см. "Языковые файлы"<доделать>).

 

 

 


<RetVar> = sprintf: fmt=<Var/String>, <Value>, <Value>, <Value>, <Value>, <Value>

engine v. 32

Команда возвращает строку <Var/String> в переменную <RetVar> в которой все теги %s заменены соответствующими значениями параметров <Value>. Первый %s - первый параметр <Value>, второй %s - второй параметр <Value> и т.д.
Применяется для подстановки в заданный шаблон <Var/String> вычисляемых или изменяемых значений. Строка-шаблон вводится в на этапе редактирования (или задается в переменной ранее в самом скрипте), теги %s вставляются в те места где должны быть вычисляемые значения.

 

 

 


<RetVar> = sprintf: pageid=<Var/Number> textid=<Var/Number>, <Value>, <Value>, <Value>, <Value>, <Value>

engine v. 32

Команда  аналогична предыдущей, только строка-шаблон читается из языкового файла, со страницы pageid=<Var/Number>, из идентификатора строка textid=<Var/Number>.

 

 

 


load text: id=<Var/Number>

engine v. 32

Команда догружает дополнительный языковой файл с соответствующим id=<Var/Number> (в данном случае id -это номер языкового файла без кода страны, из папки "t". Например, для файла 70003.xml - id = 3).
Фактически эта команда дополнят основной языковой файл (<код_страны>0001.xml) который загружается во время старта игры.
Учтите что если в загружаемом вами файле вносятся изменения на страницах и в текстовых идентификаторах, которые используются в основном языковом файле, то старые значения будут заменены новыми из загружаемого вами файла.  Делается это для того, чтобы вы могли изменять стандартные имена команд и описаний и т.п используемых в игре, а также указать имена и описания для новых товаров, команд и т.д., которые добавлены в игру, иначе мы получим read-text`ы в их описаниях.

 

 

 


<RetVar/IF> = state of news article: page=<Var/Number> id=<Var/Number>

engine v. 32

Команда возвращает статус  статьи новостей со страницы page=<Var/Number> с идентификатором id=<Var/Number>. Эта команда предназначены для работы с BBS-engine отвечающую за формирование досок объявлений на станциях. Подробна работа BBS-engine будет рассмотрена  в .. <доделать>.

 

 

 


set state of news article page=<Var/Number> id=<Var/Number> to <Var/Number>

engine v. 32

Команда устанавливает статус статьи новостей со страницы page=<Var/Number> с идентификатором id=<Var/Number> равным to <Var/Number>. Эта команда предназначены для работы с BBS-engine, отвечающим за формирование досок объявлений на станциях.

 

 

 


<RetVar/IF>system date is month=<Var/Number>, day=<Var/Number>

engine v. 32

Команда возвращает [TRUE] если системная (не игровая!) дата на компьютере совпадает с запрошенной и [FALSE] в противном случае.

 

 

 


<RetVar> = playing time

engine v. 32

Команда возвращает текущее игровое время в секундах. Подразумевается время от момента, когда была начата текущая игра вообще, а не от последней загрузки.

 

 

 


infinite loop detection enabled=<Var/Number>

engine v. 32

Команда Включает или выключает [TRUE]/[FALSE] механизм отслеживания и остановки бесконечных циклов. На практике срабатывает редко. Лучшей защитой служит использование инструкций wait в теле любых циклов.

 

 

 


set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware> script=<Script Name>

engine v. 32

Команда  работает идентично команде set script command upgrade: command=<Object Command/Signal> upgrade=<Var/Ware>, с тем отличием, что данная инструкция анализирует флаг возвращаемый проверочным скриптом <Script name> и позволяет производить многоуровневую проверку условий для активации команды в командном меню объекта. Проверочный скрипт запускается до того как производится установка в меню и возвращает результат в виде флага, сообщающего инструкции о том активировать команду или нет. (Подробнее смотрите в <доделать>).
Обратите внимание на то, что если данная команда будет вызываться из инициализирующего скрипта init.<script name>, то проверочный скрипт при запуске будет записан в скрипткэш. Это означает что после изменений проверочного скрипта необходимо произвести реинициализацию из главного меню редактора Reinit Script Cahes.

 

 

 


<RefObj> set local variable: name=<Var/String> value=<Value>

engine v. 32

Команда устанавливает значение локальной переменной с именем <Var/String> объекта <RefObj> равным <Value>. Локальные переменные привязаны к определенному объекту и абсолютно независимы от локальных переменных других объектов. Они используются для обмена данными между скриптами запущенными на одном объекте.

 

 

 


<RetVar/IF><RefObj> get local variable: name=<Var/String>

engine v. 32

Команда возвращает значение локальной переменной объекта <RefObj> с именем <Var/String>. Локальные переменные разных объектов независимы. Эта пара команд может применяться для обмена данными между скриптами выполняемыми на одном объекте. Отменить установку переменной можно задав её значение в null.

 

 

 


set global variable: name=<Var/String> value=<Value>

engine v. 32

Команда устанавливает значение глобальной переменной с именем <Var/String> равным <Value>. Глобальные переменные не привязаны к какому-либо объекту, а являются общими для всех и доступны любому скрипту.

 

 

 


<RetVar/IF>get global variable: name=<Var/String>

engine v. 32

Команда возвращает значение глобальной переменной  с именем <Var/String>.

 

 

 


al engine: register script=<Script Name>

engine v. 32

Команда регистрирует скрипт <Script Name> как плагин к AL (Artificial Life) Engine. Эта команда и три следующих относятся к набору команд для организации работы AL плагинов, т.е. скриптов отвечающих за «искусственную жизнь».

 

 

 


al engine: unregister script <Script Name>

engine v. 32

Команда снимает регистрацию скрипта <Script Name> как плагина к AL (Artificial Life) Engine.

 

 

 


al engine: set plugin <Var/String> description to <Var/String>

engine v. 32

Команда устанавливает описание плагина с идентификатором plugin <Var/String> равным description to <Var/String> .

 

 

 


al engine: set plugin <Var/String> timer interval to <Var/Number> s

engine v. 32

Команда Устанавливает интервал вызовов плагина <Var/String> по таймеру в <Var/Number> секунд

 

 

 


<RetVar> = get script version

engine v. 32

Команда возвращает версию текущего скрипта  в переменную <RetVar>.

 

 

 


<RetVar> = get script name

engine v. 32

Команда возвращает имя текущего скрипта  в переменную <RetVar>.

 

 

 


<RetVar/IF>is plot <Var/Number> state flag <Var/Number>

engine v. 32

Команда предназначена для отслеживания прохождения игроком сюжетной линии игры. Более подробно смотрите в разделе «Точки входа и флаги состояния сюжетной линии». <доделать>

 

 

 


<RetVar> = get random name: race=<Var/Race>

engine v. 32

Команда возвращает в переменную <RetVar> случайно выбранное имя представителя расы <Var/Race> состоящие из имени и фамилии.

 

 

 


<RetVar> = get Kha'ak aggression level

engine v. 32

Команда возвращает текущий уровень агрессивности Хааков.

 

 

 


set Kha'ak aggression level to <Var/Number>

engine v. 32

Команда устанавливает уровень агрессивности Хааков. Значение может лежать в пределах от 0 до 100, стандартный уровень 15. Влияет на количество и размер кластеров в группах совершающих набеги на сектора.

 

 

 


<RetVar/IF><RefObj> is script <Script Name> on stack of task=<Var/Number>

engine v. 32

Команда осуществляет проверку, запущен (стоит в очереди) ли скрипт <Script Name> в стеке <Var/Number> объекта <RefObj>, и возвращает результат в виде [TRUE]/[FALSE].

 

 

 


<RetVar/IF><RefObj> is task <Var/Number> in use

engine v. 32

Команда проверяет стек <Var/Number> объекта <RefObj> на наличие запущенных скриптов, и возвращает результат в виде [TRUE]/[FALSE].

 

 

 


register quest script <Script Name> instance multiple=<Var/Number>

engine v. 32

Команда регистрирует скрипт обработчик событий BBS миссии <Script Name>.  Значение multiple=<Var/Number> задает возможность множественного предложения на одной доске объявлений. Например, если instance multiple= [FALSE], то на доске объявлений мы можем увидеть не более одной вариаций задания, обработкой событий которых занимается скрипт <Script Name>. Причём, если вы смените станцию, то на другой станции вы не увидите подобного объявления, если оно уже опубликовано на станции, где вы уже читали объявления. И так будет, пока вы не примете и не выполните задание, или пока экземпляр сам не удалится с доски объявлений.

Типичные ситуации:

Созданный вами обработчик предусматривает различные тексты предложений и различные типы сложности задания. В этом случае число вариантов, выводимых одновременно, может быть несколько и можно установить multiple= [TRUE].
Ваша миссия подразумевает конкретное задание, или конкретный объект, на который направлено действие миссии. К примеру, уничтожение конкретного уже существующего объекта. Или же снабжение станции, на которой было получено задание. Или выдача информации по координатам конкретного объекта. В этом случае, во избежание повторений одинаковых предложений на одной доске объявлений значение instance multiple должно быть равно 0, или null, или [FALSE].
Данная команда в основном должна использоваться в скриптах инициализации, чтоб автоматически регистрировать скрипт квеста при старте и загрузке игры.
При каждом выполнении данной команды, запускается скрипт обработчик с генерацией события ‘init’.
Формат скрипта <Script Name> должен быть строго определенным.
Скрипт обработчик событий квеста должен иметь четыре входных аргумента в следующем порядке:
1.$Quest , Value , 'Quest Object' – содержит указатель на текущий экземпляр квеста. Данное значение используется в управляющих командах квеста.
2.$Event , Var/String , 'Event String' – строковое значение генерируемого события квеста. Более подробную информацию о возможных значениях и их обработке смотрите в статье Генерируемые квестовые события.
3.$Data , Value , 'Data Array' – массив пользовательских данных, служит для хранения и передачи данных между различными событиями квеста.
4.$Answer , Var , 'Answer' – содержит значение выбранного пользователем варианта, если это предусмотрено. Например, с помощью этого значения можно узнать, согласился ли пилот на условия сделки, или отказался. Или же узнать, какой лотерейный билет выбрал пилот. Аналогично со значением, которое возвращает в скрипт обработчик  команда send incoming question <Var/String> to player: callback=<Script Name>.

 

 

 


set quest state with message: quest=<Var/Quest> state=<Var/Number> msg=<Var/String>

engine v. 32

Команда устанавливает флаг состояния квеста quest=<Var/Quest> в значение state=<Var/Number> и задает экранное сообщение msg=<Var/String> для данного флага состояния.
Значение msg=<Var/String> может принимать нулевое значение при установке любых состояний, кроме состояний [Quest.Offered] и [Quest.Question], при установке которых сообщение выводится без проверки его значения, и если оно будет нулевым, то будет выведено пустое полотно от имени неизвестного автора. Во всех остальных случаях будет принята только первая часть команды, т.е. сменится статус квеста без какого-либо сообщения. Например команда set quest state with message: quest= $Quest state= [Quest.Aborted] msg= null прервет выполнение принятого квеста, но не сообщит об этом пилоту.
Для состояния [Quest.Continued] нельзя задать сообщения. Вернее задать можно, но выведено оно не будет. Это состояние специально создано как переходное от одного состояния к следующему без вывода комментариев на экран. Например, при обработке события ‘select’ установка данного состояния эквивалентна [Quest.Accepted]. Основное применение состояния [Quest.Continue] - это сброс предшествующих установок.

Например, в блоке ‘timer’ может быть следующая комбинация команд.

skip if $ship -> exists

       set quest state with message: quest= $Quest state= [Quest.Finished] msg= $Message

skip if not $station -> exists

       set quest state with message: quest= $Quest state= [Quest.Continued] msg= $Message

Если корабль $ship уничтожен, то состояние квеста устанавливается в «завершенное». Но если станция $station не уничтожена, то состояние квеста устанавливается таким образом, чтоб выполнение квеста продолжалось. Таким образом, данная комбинация завершит квест, только если уничтожен корабль и станция.

Движок квестов устроен так, что для каждого состояния устанавливается своя строка сообщения. Поэтому можно заранее определить строки для некоторых событий. К примеру, установив timeout, можно заранее задать сообщение, которое будет выводиться при установке состояния Aborted, которое установится автоматически при окончании заданного времени. Если других условий прерывания квеста нет, то можно не обрабатывать событие ‘timeout’. Такое определение, можно сделать, например, в блоке события ‘offer’ серией команд, приведенных ниже. Главное, чтоб последней командой устанавливалось нужный флаг состояния квеста.

set quest state with message: quest= $Quest state= [Quest.Aborted] msg= $MessageAbort

set quest state with message: quest= $Quest state= [Quest.Offered] msg= $Message

 

 

 


set quest/event <Var/Quest> timer to <Var/Number>ms

engine v. 32

Команда задает многократный таймер, вызывающийся через установленный промежуток времени.
Обычно таймер задают при обработке события ‘accept’, так как генерация события ‘timer’ возможна только после принятия квеста. <Var/Quest> – указатель на выполняемый квест, <Var/Number> – значение в секундах (а не в миллисекундах, как указано в шаблоне команды) интервала времени, через который будет генерироваться событие ‘timer

 

 

 


set quest <Var/Quest> timeout to <Var/Number>

engine v. 32

Команда служит задания максимального промежутка времени <Var/Number> (в секундах), отведенного на выполнение квеста <Var/Quest>, через который будет сгенерировано событие ‘timeout’. Данное значение не имеет смысл устанавливать большим, чем 180000 секунд (50 часов), так как таймер автоматически срабатывает через данное время от момента принятия задания, невзирая на установки таймера.
В отличие от события ‘timer’ событие ‘timeout’ генерируется только один раз, и после генерации квест разрушается и считается проваленным. Полезно обрабатывать событие ‘timeout’ и выводить сообщение о провале задания.

 

 

 


<RefObj> add event listener: quest/event=<Var/Quest> objevent=<Var/Number> script=<Script Name>

engine v. 32

Команда назначает обработчиком события objevent=<Var/Number> для объекта <RefObj>, являющегося объектом квеста <Var/Quest>,  скрипт <Script Name>.
<RefObj> может быть только кораблем или станцией.
Для задания желаемого набора обрабатываемых событий нужно применять логическое ИЛИ между возможными событиями. В приведенном ниже примере для корабля $Ship определяют скрипт обработчик событий SIGNAL_ATTAKED и SIGNAL_KILLED. Эти события будут генерироваться совместно со стандартными обработчиками данных сигналов.

       $MaskEvent = [Quest.Event.Attacked] | [Quest.Event.Killed]

       $Ship -> add event listener: quest/event=$MaskEvent objevent=$Quest script= quest.1.script

Скрипт обработчик событий квеста должен иметь четыре входных аргумента в следующем порядке:
1.$Quest , Value , 'Quest Object' – содержит указатель на текущий экземпляр квеста. Данное значение используется в управляющих командах квеста.
2.$Event , Var/String , 'Event String' – строковое значение  генерируемого объектного события.
3.$Data , Value , 'Data Array' – массив пользовательских данных, служит для хранения и передачи данных между различными событиями квеста.
4.$Target , Var/Ship/Station , 'Object Event' – объект, на котором произошёл вызов события.
Обработчиком сигнала для объекта может выступать и сам квестовый скрипт, так как структура проверки событий будет аналогична и число аргументов совпадает и по количеству и по содержимому.
Все объектные события синхронные. Это значит, что вызов повторного объектного события не возможен до обработки предыдущего.

Внимание!

 

 


<RefObj> remove event listener: quest/event=<Var/Quest>

engine v. 32

Команда служит для отключения обработчика событий на объекте <RefObj>, состояние которого мониторится квестом <Var/Quest>.
Данную команду можно использовать в ходе выполнения квеста, в случаях, когда слежение за событиями на определённых объектах более не нужно, или происходит смена объекта, и за старый объект больше не интересует. К примеру, мы следим за малым истребителем, замечаем, что тот состыковался с носителем (событие ‘setenv’), после этого мы освобождаем данной командой малый корабль от обработки событий и задаём обработку событий для самого носителя.

 

 

 


<RetVar/IF> display news article: page=<Var/Number> newsid=<Var/Number> occurrences=<Var/Number> maxoffertime=<Var/Number> maxtime=<Var/Number> placeholder:race1=<Var/Number> race2=<Var/Number> customarray=<Var/Array>

engine v. 32

Команда служит для добавления в доску ББС на станциях информационного/новостного сообщения, записанного в текстовом файле на странице page=<Var/Number> в текстовом теге newsid=<Var/Number>, с частотой появления occurrences=<Var/Number>.
Возвращает идентификатор данного сообщения, для использования в команде change event news availibility.

 

 

 


change event news availibility: <Var/Number> race=<Var/Race> sector=<Var/Sector> jumps=<Var/Number>

engine v. 32

Команда задает область появления информационного/новостного сообщения <Var/Number> на станциях, принадлежащих расе race=<Var/Race>, в секторах находящихся в радиусе jumps=<Var/Number> от сектора sector=<Var/Sector>.

 

 

 


<RetVar> =  register hotkey <Var/String> to call script <Script Name>

engine v. 32

Команда регистрирует новую "горячую клавишу" с именем <Var/String> и присваивает ей скрипт обработчик <Script Name>. регистрационный номер "горячей клавиши" возвращается в переменную <RetVar>, этот код может быть использован в дальнейшем для разрегистрации этой "горячей клавиши".

Внимание!

 

См.также


unregister hotkey <Var/Number>

engine v. 32

Команда осуществляет разрегистрацию (удаляет ранее зарегистрированную) "горячей клавиши" с регистрационным номером <Var/Number>.

 

 

См.также


register god event: script=<Script Name> mask=<Var/Number>

engine v. 32

Команда

 

 

 


abort god event: <Var/Quest>

engine v. 32

Команда

 

 

 


finish god event: <Var/Quest>

engine v. 32

Команда

 

 

 


<RefObj> connect wing command/signal <Object Command/Signal> to script <Script Name> with prio <Var/Number>

engine v. 32

Команда

 

 

 


<RetVar/IF> is a new script version available

engine v. 32

Команда возвращает 1([TRUE]) если доступна новая версия скрипта который в данный момент выполняется. С таким же именем, но большей версией. Проверяется значение версии текущего запущенного скрипта и скрипта доступного на данный момент в ScE. Если версия текущего скрипта меньше или равна версии доступного, команда вернет 1([TRUE]), иначе null
К примеру:

Если в стеке запущен скрипт, например скрипт автопилота, то он продолжает работу после перезапуска игры, даже если его удалили или обновили.

Допустим вы обновили данный скрипт и установили в поле версия скрипта более высокое значение.

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

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

 

 

 


<RetVar> last load time

engine v. 33

Команда возвращает игровое время последней загрузки сохраненной игры, в секундах. Т.е. команда возвращает игровое время в секундах на момент сохранения той версии игры, которая была загружена последней.