Оглавление Сообщение об ошибках Ваше мнение о проекте E-Mail автору

Команды ScE "X2 The Threat"

v    Общие  команды

 

NOP

Нет операции.

 

<RetVar/IF> <Expression>

Данная функция выполняет несколько задач:

1. Создать новую переменную и присвоит ей значение или присвоить уже имеющейся переменной <RetVar> результат выражения/функции/команды <Expression>.

Пример:

001 $NewVar = 5

002 $Total = 3+2

003 $Total2 = $NewVar+$Total

004 $string = ‘Hello World.”

или вернуть значение, логического типа, выражения/функции/команды  <Expression> для обработки в операторе сравнения <IF>.

Пример:

001 if $NewVar => 6

040 if not  $Total

057 skip if $Total2

и тому подобные интерпретации. Также значение <Expression> при помощи данной инструкции модно передать оператору While при организации циклов.

005 while $NewVar <7

020 end

 

inc<RetVar>=

Увеличивает значение <RetVar> на 1 (инкремент). Функция выполняет операцию идентичную  <RetVar>=<RetVar> + 1

 

dec<RetVar>=

Уменьшает значение <RetVar> на 1 (декремент). Функция выполняет операцию идентичную <RetVar>=<RetVar> - 1

 

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

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

 

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

Ожидать случайное число ms. в диапазоне от <Var/Number> до <Var/Number> ms. Возвращает количество прошедших ms., или информацию о том происходило ли прерывание за время ожидания <IF>.

 

<Var> = Random value from 0 to <maximum> -1

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

 

<Var> = Random value from <minimum> to <maximum> -1

Сгенерировать и присвоить переменной <Var> случайную величину в диапазоне от <minimum> до <maximum> -1.

 

* <Comment>

Комментарий. Любой текст не интерпретируемый ScE. Используется для того чтобы в листинге НС дать объяснения чего либо или выделить. Отображается серым цветом, за символом *

 

<RetVar>= script engine version

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

Пример:

001 $EngineVersion = script engine version

002 skip if $EngineVersion >= 25

003   return null

… дальнейший код скрипта рассчитанный на ScE версии не ниже 25…

 

<RetVar> = get script priority

Вернуть приоритет текущего  скрипта (того скрипта который выполнил эту инструкцию). Эта команда будет очень полезной при организации сложных взаимодействий скриптов. Пример такого взаимодействия рассмотрен в главе «Сигналы» => Раздел «ScE»

 

set script priority to <priority>

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

 

<RetVar/IF>is script prio <prio> on stack

Возвращает [TRUE] если в текущем стеке находится (выполняется в данный момент или стоит в очереди на выполнение) скрипт с приоритетом <prio>. Т.е. если эта команда вызвана из скрипта, запущенного в стеке 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

 

 

<RefObj> start task <Var/Number1> with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4> arg5=<Value5>

Запускает скрипт <Script Name> в стеке Task <Var/Number1> объекта <RefObj> с приоритетом <Var/Number2> и параметрами <Value1> ... <Value5>, при этом вытеснив (удалив) все остальные скрипты из этого же стека.

Внимание! Командой start task <Var/Number> with script ни в коем случае нельзя запускать скрипт в текущем стеке! (т.е. на том же объекте и том же Task, где запускается команда start task) Если это сделать, скрипт повиснет.

Этот команда может быть использована для запуска скриптов турелей (Task с 1 по 6), слот дополнительных корабельных команд (Task с 10 по 11), слот команды станций ( Task 10 -19)

 

<RefObj> interrupt task <Var/Number1> with script <Script Name> and prio <Var/Number2>: arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4>

Формирует запрос на прерывание (см. IntReq в статистике объекта) скриптом <Script Name> в стеке Task <Var/Number1> объекта <RefObj> с приоритетом <Var/Number2> и параметрами <Value1> ... <Value4>, но только при условии, что в соответствующем стеке уже запущен хоть 1 скрипт и указанный приоритет <Var/Number2> выше приоритета активного в данном стеке скрипта. Если прерывания разрешены в данном стеке, то запуск скрипта <Script Name> фактически произойдет лишь в момент завершения первой встретившейся за командой interrupt прерываемой команды (т.е. помеченной "@"). И, если такой команды нет вплоть до return, то скрипт <Script Name> запущен не будет.

 

<RefObj> interrupt with script <Script Name> and prio <Var/Number2> : arg1=<Value1> arg2=<Value2> arg3=<Value3> arg4=<Value4>

Формируют запрос на прерывание текущего скрипта (см. IntReq в статистике объекта) скриптом <Script Name> в стеке Task 0 объекта <RefObj> с приоритетом <Var/Number2> и параметрами <Value1> ... <Value4>, но только при условии, что указанный приоритет <Var/Number2> выше приоритета текущего скрипта. Если прерывания разрешены в данном стеке, то запуск скрипта <Script Name> фактически произойдет лишь в момент завершения первой встретившейся за командой interrupt прерываемой команды (т.е. помеченной "@"). И, если такой команды нет вплоть до return, то скрипт <Script Name> запущен не будет.  

 

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

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

 

<RetVar/IF>get task ID

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

 

<RetVar/IF>get PID

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

 

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

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

 

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

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

 

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

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

 

enable signal/interrupt handling: <Var/Number>

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

 

<RetVar/IF> is signal/interrupt handling on

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

 

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

Назначить для команды или сигнала <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>

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

 

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

Исключить обработку скрипта обработчика на объектах определенного типа. Параметры такие же как и у двух предыдущих команд. Пример: установив обработчик сигнала SIGNAL_ATTACKED для объектов класса «Корабль»,  нам требуется исключить объекты класса «Дрон» выглядеть это будет вот так:

001 global script map: set: key=SIGNAL_ATTACKED, class=Корабль, race=Player, script=скрипт_обработчик, prio=100

002 global script map: ignore: key=SIGNAL_ATTACKED, class=Дрон, race=Player

Теперь назначенный скрипт обработчик будет запускаться при поступлении сигнала SIGNAL_ATTACKED на любом объекте класса «Корабль» за исключением объектов класса «Дрон».

 

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

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

 

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

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

 

set script command <Object Command/Signal>

Установить командой для текущего скрипта команду <Object Command/Signal>.

 

<RetVar/IF> get script command

Получить команду <RetVar> установленную для текущего скрипта. Также, можно обрабатывать как логическое значение для оператора <IF> установлена [TRUE] не установлена [FALSE]

 

set script command target <Value>

Установить цель <Value> для команды текущего скрипта

 

<RetVar/IF> get script command target

Получить цель <RetVar> установленную для команды текущего скрипта или логическое значение [FALSE] если не установлена.

 

<RetVar> datatyp[ <Value> ]

Получить тип данных <RetVar> переменной <Value> описание типов данных в разделе «Введение в скриптописание Х2 => Переменные. Типы переменных».

 

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

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

 

<RetVar> read text: page=<pageid> id=<textid>

Получить значение из основного языкового ресурса, со страницы <pageid> и идентификатора <textid>. Основной языковой файл загружается во время старта игры или загрузки сохраненной. Этот файл может быть изменен или дополнен дополнительными языковыми файлами подгружаемыми к основному командой load text: id=<languagefileid> и соответственно страницы и ID подгруженные из дополнительных файлов, сразу после догрузки станут доступны для этой команды, но не ранее того.

 

<RetVar>=sprintf: fmt=<Var/String>, <Value1>, <Value2>, <Value3>, <Value4>, <Value5>

Возвращает строку <Var/String> в которой все теги %s заменены соответствующими значениями параметров <Value>. Первый %s - <Value1>, второй - <value2> и т.д. Применяется для подстановки в заданный шаблон вычисляемых или изменяемых значений. Строка-шаблон вводится в скриптовом редакторе, теги %s вставляются в те места где должны быть вычисляемые значения. Более подробно использование тегов рассмотрено в главе «Языковые файлы XML в Х2».

 

<RetVar>=sprintf: pageid=<pageid> id=<textid>, <Value1>, <Value2>, <Value3>, <Value4>, <Value5>

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

 

load text: id=<languagefileid>

эта команда на загрузку языкового файла описания с соответствующим ID (ID это номер языкового файла без кода страны, из папки "t"...например, для 70003 - id = 3). Фактически эта команда дополняет основной языковой файл (70001.xml) который загружается во время старта игры, учтите что если в загружаемом вами файле вносятся изменения на страницах и в текстовых идентификаторах которые используются в основном языковом файле, то старые значения будут заменены новыми из загружаемого вами файла.  Делается это для того, чтобы вы могли изменять стандартные имена команд и описаний и т.п используемых в игре, а также указать имена и описания для новых товаров, команд и т.д., которые добавлены в игру, иначе мы получим read-text`ы в их описаниях.

 

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

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

 

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

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

 

<RetVar/IF> system date is month=<month> day=<day>
Возвращает [TRUE] если системная (не игровая!) дата на компьютере совпадает с запрошенной и [FALSE] в противном случае. В формате месяц, день.

 

<RetVar>=playing time

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

 

Infinite loop detection enabled=<Var/Number>

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

 

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

Эта команда работает идентично команде set script command upgrade с тем отличием, что данная инструкция анализирует флаг возвращаемый проверочным скриптом <script name> и позволяет производить многоуровневую проверку условий для активации команды в командном меню объекта. Проверочный скрипт запускается до того как производится установка в меню и возвращает результат в виде флага, сообщающего инструкции о том активировать команду или нет. Если возвращаемый флаг CmdConCheck.Disabled, то строка меню отражается серым цветом и недоступна для выбора, если  CmdConCheck.Available, то строка меню становится доступной. Возвращаемое значение должно состоять из двух констант записанных через добавляющее ИЛИ “ | “. Первая константа сообщает инструкции как запускать проверочный скрипт. Эту функцию выполняют константы CmdConCheck.OneTime и CmdConCheck.Infinite они должны стоять первыми в возвращаемом выражении. Вторая часть возвращаемого значения может состоять из любой из четырех констант   CmdConCheck.NeedHomeBase, CmdConCheck.NeedHomeStation, CmdConCheck.Available, CmdConCheck.Disabled.

Описание констант возвращаемых скриптом указаны в таблице:

 

Флаговая Константа

Описание

CmdConCheck.OneTime

Проверочный скрипт запускается однажды во время отображения меню. Соответственно результат обрабатывается однажды, и во время отображения никакой реструктуризации меню не произойдет до тех пор пока меню не будет закрыто и открыто заново.

 

CmdConCheck.Infinite

Проверочный скрипт будет запускаться циклически все время пока меню отражается. И соответственно реструктуризация может произойти во время отражения меню.

 

CmdConCheck.NeedHomeBase

Корабль имеет базу приписки

CmdConCheck.NeedHomeStation

Корабль имеет базу приписки станцию а не корабль

CmdConCheck.Available

Команда выполняется

CmdConCheck.Disabled

Команда отключена

В примере мы создадим строку в меню корабля в разделе CUSTOM которая должна запускать скрипт main.script.test только в том случае, когда на объекте имеется хотя бы одна ракета «Шелкопряд» в противном случае строка должна отразится серым цветом и стать недоступной для выбора:

Инициализирующий скрипт.

 

001   global script map: set: key=COMMAND_TYPE_CUSTOM_15, class=Корабль, race=Player,  script='main.script.test', prio=0
002   global script map: ignore: key=COMMAND_TYPE_CUSTOM_15, class=Дрон, race=Player
003   set script command upgrade: command=COMMAND_TYPE_CUSTOM_15  upgrade=[TRUE]   script='a.check..script'
004   return null

 

В строке 003 параметр upgrade указываем [TRUE], для того чтобы строка отобразилась в любом случае. Если в upgrade <Var/Ware> указать непосредственно товар то в случае его отсутствия у объекта строка в меню вообще  не отобразится. Теперь создаем проверочный скрипт, единственный аргумент будет указывать на объект на котором открыта командное меню (корабль, станция):

Arguments

  • 1: ship , Перем/Корабль , 'ship'

Source Text

001   $flag = [CmdConCheck.OneTime]
002   if $ship -> get amount of ware Ракета Шелкопряд in cargo bay
003    $flag = $flag | [CmdConCheck.Available]
004   else
005    $flag = $flag | [CmdConCheck.Disabled]
006   end
007   return $flag

 

 

Обратите внимание на то, что если данная команда будет вызываться из инициализирующего скрипта init.<script name>, то проверочный скрипт при запуске будет записан в скрипткэш. Это означает что после изменений проверочного скрипта необходимо произвести реинициализацию из главного меню редактора Reinit Script Cahes.

 

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

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

 

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

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

 

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

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

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

 

al engine: register script=<Script Name>

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

 

al engine: unregister script=<Script Name>

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

 

al engine: set plugin <Var/String1> description to <Var/String2>

Устанавливает описание плагина с идентификатором <Var/String1> равным <Var/String2>

 

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

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

 

<RetVar>=get script version

Возвращает версию текущего скрипта

 

<RetVar>=get script name

Возвращает имя текущего скрипта

 

<RetVar/IF> is plot <plot> is state <stateflag>

Эта инструкция предназначена для отслеживания прохождения игроком сюжетной линии игры. Все миссии X2-Threat разделены на три основных группы называемые «входными точками», внутри каждой группы, каждая миссия имеет свой «флаг состояния», это цифровой код миссии внутри группы. Данная инструкция возвращает логическое значение [TRUE] в случае если игрок уже выполнил данную миссию, и соответственно [FALSE] в случае если данная миссия еще не выполнена. Описание миссий, «входных точек» и «флагов состояния» приведено в дополнении к данному учебнику в разделе «Точки входа и флаги состояния сюжетной линии».

 

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

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

 

<RetVar>=get Khaak agression level

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

 

set Khaak agression level to <Var/Number>

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

 

·        Команды исполнения

 

 

end conditional

Конец условия  или цикла. Любой цикл или условие должно завершаться этим оператором, иначе редактор при попытке  сохранить скрипт  выдаст ошибку.

 

Else

Оператор ИНАЧЕ располагается в теле условия IF…(операторы выполняющиеся если ИСТИНА)…ELSE…(операторы если ЛОЖЬ)…END. Если используется IF NOT то:  IF NOT…(операторы выполняющиеся если ЛОЖЬ)…ELSE…(операторы если ИСТИНА)…END

 

Continue

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

 

break       

Прервать выполнение цикла. Передает управление в строку следующую за оператором END, завершающего выполняемый цикл.

 

goto label <Label>

Перейти к метке <label>.

 

define label <Label>

Определить метку для команды goto.

 

 

 

·        Вызов скриптов

 

@<RetVar/IF/START> <RefObj> call script <Script Name>: <Parameter>

Запускает скрипт <Script Name> в стеке Task 0 объекта <RefObj> (либо в текущем стеке текущего объекта если не использован префикс START) с параметрами <Parameter> и приоритетом текущего скрипта. Возвращаемое скриптом значение присваивается переменной <RetVar> или анализируется в <IF>. Допускается игнорирование возвращаемого значения (отсутствие <RetVar/IF>). Если <RefObj> = null и использован префикс START, то скрипт будет запущен как глобальный. При запуске в текущем стеке (т.е. без префикса START) команда call script ничего не удаляет из текущего стека. В противном случае из стека Task 0 объекта <RefObj> будут удалены все остальные скрипты независимо от приоритетов. Указание префикса <START> означает продолжение выполнения текущего скрипта, без ожидания завершения вызванного. При этом скрипт будет запущен строго в стеке Task 0 объекта <RefObj>, удалив при этом все остальные скрипты из этого стека.

Внимание! Никогда не используйте @ START [THIS]->call script в скрипте, запущенном в Task 0 объекта! Скрипт не будет запущен, а текущий повиснет! Также будьте внимательны с запуском без префикса START и с <RefObj> отличным от [THIS], т.к. если объект <RefObj> будет уничтожен, вызванный скрипт сам остановлен при этом не будет, он будет продолжать выполняться на текущем объекте и может повиснуть.

 

return <Value>

Завершить выполнение скрипта и вернуть результат исполнения <Value> вызывавшему скрипту.

 

·        Массивы

 

<RetVar>=array alloc: size=<Var/Number>

Создать массив размером <Var/Number> элементов и вернуть переменную <RetVar> типа массив. На самом деле возвращается указатель на массив, то есть ScE определяет область памяти под указанное количество элементов и возвращает указатель на него.

 

<RetVar/IF> <Var/Array>[<Var/Number>]

Присвоить переменной <RetVar/IF> значение, из элемента с индексом <Var/Number>,  массива <Var/Array> .

 

<Var/Array>[<Var/Number>]=<Value>

Записать в элемент массива <Var/Array> с индексом <Var/Number> значение <Value>.

 

<RetVar>=size of array <Var/Array>

Получить в переменную <RetVar> размер массива <Var/Array>.

 

<RetVar>=clone array <Var/Array>: index <Var/Number>  <Var/Number>

Создать копию массива <Var/Array> начиная с индекса <Var/Number> по индекс <Var/Number>, в другой области памяти и вернуть указатель на нее в переменную <RetVar>. Если вам нужна копия массива, то используйте именно эту команду, т.к. попытка скопировать массив при помощи конструкции $array2=$array1 не годится. Такая конструкция запишет в переменную $array2 указатель на область памяти где храниться массив array1, соответственно в памяти будет существовать один массив и обе переменные будут указывать на него. Подробно это описано в главе «Введение в скриптописание Х2».

 

copy array <Var/Array> index <Var/Number>  <Var/Number> into array <Var/Array> at index <Var/Number>

Скопировать элементы массива <Var/Array> начиная с индекса <Var/Number> по индекс <Var/Number> в массив <Var/Array> начиная с индекса <Var/Number>. Если копируемый сегмент превысит размер массива-приемника, то размер массива-приемника будет увеличен на требуемое количество элементов.

 

insert <Value> into array <Var/Array> at index <Var/Number>

Вставить в массив <Var/Array> новый элемент <Value> на место элемента с индексом <Var/Number>. (Фактически изменить размер массива. Индексы всех элементов массива начиная с заданного увеличатся на 1).

 

append <Value> to array <Var/Array>

Добавить в конец массива <Var/Array> новый элемент <Value>. (Фактически изменить размер массива).

 

remove element from array <Var/Array> at index <Var/Number>

Удалить элемент с индексом <Var/Number> из массива <Var/Array>. (Фактически изменить размер массива. Индексы всех элементов начиная с заданного уменьшатся на 1).

 

resize array <Var/Array> to <Var/Number>

Установить размер массива <Var/Array> равной <Var/Number>. (Если размер массива уменьшается то «лишние» элементы окажутся обрезанными, если увеличивается то в массив добавляются пустые элементы).

 


Оглавление Сообщение об ошибках Ваше мнение о проекте E-Mail автору
Сайт создан в системе uCoz