Оглавление | Сообщение об ошибках | Ваше мнение о проекте | E-Mail автору |
Прежде всего о навигационных командах семейства Fly to…, Move to…, Follow to… нужно сказать, что все семейство относится к разряду прерываемых команд, то есть все они помечены значком «@». Это означает, что выполнение данной команды может быть прервано скриптом или сигналом имеющим более высокий приоритет. Еще одна особенность этих команд, это нелимитированость времени выполнения (исключение команды имеющие параметр timeout), то есть пока корабль не прилетит в указанное место, скрипт запустивший эту команду, будет ожидать ее завершения.
Все навигационные команды из этого семейства, возвращают значение содержащее информацию о результате выполнения команды. Для этих целей используется специально зарезервированный в ScE список кодов возврата, доступных для выбора из списка «Выберете код возврата» в скриптовом редакторе. Это коды FLRET_<значение>. Эти коды могут являться аргументами для оператора “IF” “IF NOT” “SKIP” “SKIP NOT” и т.п.
Также вам следует знать, что не каждой команде из этого семейства доступен весь список кодов FLRET, для некоторых из них доступны лишь несколько значений. Далее, в описании команд, для команд из этого семейства будут указываться доступные константы.
Здесь приведен полный список кодов FLRET:
Константа FLRET |
Описание |
FLRET_INVALIDPARMS |
– Указан неверный параметр команды |
FLRET_DESTROYED |
– Объект команды уничтожен |
FLRET_LANDED |
– Объект команды пристыкован/пристыковался |
FLRET_WARPED |
– Объект команды совершил прыжок через врата |
FLRET_NOCOMMANDS |
– Аргумент команды не существует |
FLRET_IMMEDIATE |
|
FLRET_ERROR |
– Во время выполнения команды произошла ошибка |
FLRET_INTERRUPTED |
– Выполнение команды было прервано другим скриптом |
FLRET_BREAK |
– Команда по какой-либо причине не может быть выполнена |
FLRET_FIREFREE |
– Цель в радиусе поражения, можно стрелять |
FLRET_TARGETREACHED |
– Цель достигнута |
FLRET_NEXTFLIGHTSTEP |
– Часть команды выполнена, исполняется следующая часть |
FLRET_TIMEOUT |
– Время, отведенное на выполнение команды истекло |
Под глобальным поиском подразумевается, сложный поиск определенного объекта в пределах игровой галактики или сектора. Для этого служат команды из семейства FIND, относящихся к группе «Работа с объектами». Аргументы команд выполняющих поиск в секторах немного отличаются от аргументов команд ищущих по всей галактике. В этой главе, будут описаны основные параметры команд поиска. Поиск строится с использованием специальных флагов (Find. <значение>) и большого набора параметров. Рассмотрим на примере команды find station выполняющей поиск станции внутри сектора:
<RetVar/IF> find station: sector=<Var/Sector> class or type=<Value1> race=<Var/Race> flags=<Var/Number1> refobj=<Value2> maxdist=<Var/Number2> maxnum=<Var/Number3> refpos=<Var/Array>
sector – необходимо указать сектор поиска, если этот параметр не указан, то поиск не будет произведен и функция вернет null. В командах галактического поиска, на месте этого параметра как правило указывается сектор, от которого следует начать искать.
class or type – Это параметр задается в том случае, если надо искать станцию определенного типа (например док) выбирать его следует из списков «Типы объектов» или «Класс объекта» предлагаемого редактором , если этот аргумент поставить null – в поиск буду включены все станции любой расы. Это аргумент связан с аргументом «race» через логического “И”
race – тоже самое, что и предыдущий параметр, только указывается раса владельца объект. Если параметр null, то раса значения иметь не будет.
flag – данный параметр является константой и определяет флаг для поиска. Флаги производят более тонкую настройку для поиска и отфильтровку требуемого объекта или объектов. Вообще параметр имеет числовой формат (Var/Number), связано это с тем, что каждая константа Find, имеет числовое значение соответствующее ей. Флаг поиска может использоваться как в одиночку, так и в виде наборов флагов дополняющих или исключающих друг друга, составленных через бинарный логический оператор добавляющего ИЛИ «|», простые логические операторы «AND» или «OR», здесь негодятся. Например: Find.Neutral|Find.Nearest – поиск ближайшей станции только среди нейтральных – аналогия логического «И». А если написать Find.Neutral|Find.Enemy – поиск среди нейтральных или враждебных – аналогия логического «ИЛИ».
Если введен особый флаг Find.Multiple, то функция ВСЕГДА возвращает массив, и далее с этим результатом можно работать только, как с массивом, даже если он состоит из 1 элемента.
Флаг поиска |
Значение |
Описание |
Используется |
|
Find.IllegalWare |
0х00800000 |
Искать не законный товар |
Find flying ware |
|
Find.Random |
0x01000000 |
Найти случайный объект |
Все |
|
Find.Nearest |
0x02000000 |
Найти ближайший объект относительно «refobj» |
Все |
|
Find.ExactJumps |
0x04000000 |
Искать в секторах находящихся, ровно в указанном в <maxjumps> количестве прыжков, ни больше, ни меньше. |
Find station in galaxy |
|
Find.Enemy |
0x08000000 |
Объектами для выбора будут являться все объекты являющиеся врагами. Если присутствуют Find.Neutral и/или Find.Friend, они тоже попадут в поиск. |
Все |
|
Find.Neutral |
0x10000000 |
Объектом поиска будут являться, все объекты не являющиеся врагами и не принадлежащие игроку. Если присутствуют Find.Enemy и/или Find.Friend, они тоже попадут в поиск. |
Все |
|
Find.Friend |
0x20000000 |
Объектом поиска будут являться все дружественные объекты(как правило принадлежащие игроку). Если присутствуют Find.Enemy и/или Find. Neutral, они тоже попадут в поиск. |
Все |
|
Find.Multiple |
0x40000000 |
Помещать все найденные объекты в массив. Если установлен этот флаг то дальнейшие действия с переменной <RetVar/IF> должны производится как с массивом. |
Все кроме find station in galaxy |
|
Find.ForceUsePos |
0х400000 |
Начинать поиск от точки указанной в «refpos» |
Find в секторе |
|
Find.TypeAsWareCategorie |
0x80000000 |
Не используется |
|
refobj – вообще этот параметр введен для того, что использовать его с флагом Find.Nearest оказывает он два действия:
1.данный объект исключается из поиска, если потенциально он в него может попасть.
2. служит точкой отсчета. Если, например, стоит флаг Find.Nearest, поиск ближайшей станции будет осуществляться относительно этого refobj
maximum – максимальный размер массива, работает только с флагом Find.Multiple, в противном случае результатом будет 1 станция (или null, если ничего не нашлось), а данный аргумент на поиск не влияет.
maxdist – ограничивает радиус поиска относительно точки отсчета: refobj или refpos. А если точки отсчета нет, то за точку отсчета принимается центр сектора. Если null – ограничения нет.
refpos – точка отсчета, массив из 3 координат x,y,z. Если ввести refpos и refobj одновременно, поиск будет относительно refobj. А если дополнительно установить флаг Find.ForceUsePos, то точка отсчета refpos оказывается главнее, чем точка отсчета refobj, поиск будет вестись относительно refpos.
В командах поиска по галактике, присутствуют еще несколько параметров:
max.jumps – Содержит максимальное количество прыжков до секторов в которых будет производиться поиск, от сектора где находится refobj.
serial – Для выбора по номерам станций (альфа, бета, гама).
num – Указывается сколько объектов соответствующих условиям поиска выбрать, обязательно должен быть установлен флаг Find.Multiple.
Оглавление | Сообщение об ошибках | Ваше мнение о проекте | E-Mail автору |