<<<Назад <<< <<<Меню>>> >>> Далее>>>

Введение

Описание команд, операторов и ключевых слов, использующихся в скриптах

$ - + = == !=
< <= > >= * **
/ % или mod atan2 sin cos tg
asin acos atg или atan deg rad log
ln abs exp sqrt random ;
() and или && or или || not или ! IsNull select
In ? foreach format Local PublicVariable
savevar goto exit grpnull null objnull
pi this comment do if then
else then while

Данные команды прописываются в текстовый полях Condition, On Activation, Initialization и Deactivation. Можно также создать отдельный скрипт (обычный текстовый файл с расширением .sqs), который должен находиться в папке с вашей миссией. Для запуска скрипта в тех же самых полях пропишите команду:
[ARG1,ARG2,...] exec "scriptname.sqs"
Где scriptname.sqs - имя скрипта, а ARG1,ARG2 и т.д. - аргументы, передаваемые в скрипт.

Но есть одна хитрость. Если назвать файл со скриптом "init.sqs" и поместить его в папку с миссией, то этот скрипт будет выполняться автоматически при каждом запуске миссии (однако вы не сможете передать в него аргументы). Данный метод отлично подходит для добавления в миссию начальных видео-роликов.

Условные обозначения

UNIT - Название юнита, ресурса или объекта, например, SomeTruck
STRING - строка внутри кавычек, например, "Hello Guns!"
EXP - команда или последовательность команд, например, not alive myUnit
VAR - переменная, принимающая значение текстовой строки, числа или логическое значение, например, SomeVar=10
NUM - число, например, 10.0
ARG - аргумент, принимающий значения как юнита, ресурса или объекта, так и текстовой строки или числа
ARRAY - массив (набор однотипных или различных элементов), например, [MySoldier, "hi", 10]
T/F - логическое значение, то есть TRUE или FALSE

Операторы


$

Описание: Ссылается на строку в таблице stringtable.csv
Синтаксис1:
Синтаксис2:
Возвращаемое значение:
Пример: Hint localize "STRM_obj_enterleport1"
Замечание:


-

Описание: Вычитание (синтаксис1) или отрицание (синтаксис2)
Синтаксис1: VAR1 - VAR2
Синтаксис2: -VAR
Возвращаемое значение: Разницу между VAR1 и VAR2 (синтаксис1) или отрицательное значение VAR (синтаксис2)
Пример: Mynewcount = oldcount - 30
Замечание:


+

Описание: Сложение
Синтаксис: VAR1 + VAR2
Возвращаемое значение: Сумма VAR1 и VAR2
Пример: Mynewcount = oldcount + 30
Замечание:


=

Описание: Присваивание значения
Синтаксис1: VAR=NUM
Синтаксис2: VAR=STRING
Синтаксис3: VAR=T/F
Возвращаемое значение: Значение VAR равняется значению NUM, STRING или T/F
Пример: myCounter = 10
Замечание:


==

Описание: Сравнение значений
Синтаксис1: VAR==NUM
Синтаксис2: VAR==STRING
Синтаксис3: VAR==T/F
Возвращаемое значение: TRUE (если значение VAR равняется значению NUM, STRING или T/F) или FALSE (если нет)
Пример: ? myCounter == 10 : aP globalchat “I am a ten!”
Замечание: Сравнение строк происходит по символам (их коду и количеству)


!=

Описание: Отрицание значения
Синтаксис1: VAR!=NUM
Синтаксис2: VAR!=STRING
Синтаксис3: VAR!=T/F
Возвращаемое значение: TRUE (если значение VAR не равно значению NUM, STRING или T/F) или FALSE (если равно)
Пример: ? myCounter != 10 : aP globalchat “I am not a ten!”
Замечание: Сравнение строк происходит по символам (их коду и количеству)


<

Описание: Проверка значений, какое меньше
Синтаксис1: VAR<NUM
Синтаксис2: VAR<STRING
Возвращаемое значение: TRUE (если значение VAR меньше значения NUM или STRING) или FALSE (если больше или равно)
Пример: ? myAmmo < 10 : aP globalchat “I need more ammo”
Замечание: Сравнение строк происходит по символам (их коду и количеству)


<=

Описание: Проверка значений, какое меньше или равно
Синтаксис1: VAR<=NUM
Синтаксис2: VAR<=STRING
Возвращаемое значение: TRUE (если значение VAR меньше или равно значению NUM или STRING) или FALSE (если больше)
Пример: ? myAmmo <= 10 : aP globalchat “I need more ammo”
Замечание: Сравнение строк происходит по символам (их коду и количеству)


>

Описание: Проверка значений, какое больше
Синтаксис1: VAR>NUM
Синтаксис2: VAR>STRING
Возвращаемое значение: TRUE (если значение VAR больше значения NUM или STRING) или FALSE (если меньше или равно)
Пример: ? myAmmo > 10 : aP globalchat “I have enough ammo”
Замечание: Сравнение строк происходит по символам (их коду и количеству)


>=

Описание: Проверка значений, какое больше или равно
Синтаксис1: VAR>=NUM
Синтаксис2: VAR>=STRING
Возвращаемое значение: TRUE (если значение VAR больше или равно значению NUM или STRING) или FALSE (если меньше)
Пример: ? myAmmo >= 10 : aP globalchat “I still have enough ammo”
Замечание: Сравнение строк происходит по символам (их коду и количеству)


*

Описание: Умножение
Синтаксис: NUM1*NUM2
Возвращаемое значение: Произведение чисел NUM1 и NUM2
Пример: 2*3
Замечание:


**

Описание: Возведение в степень
Синтаксис: NUM1**NUM2
Возвращаемое значение: Число NUM1 в степени NUM2
Пример: 2**3
Замечание:


/

Описание: Деление
Синтаксис: NUM1/NUM2
Возвращаемое значение: Частное от деления чисел NUM1 и NUM2
Пример: 2/3
Замечание:


% или mod

Описание: Деление с остатком
Синтаксис1: NUM1%NUM2
Синтаксис2: NUM1 mod NUM2
Возвращаемое значение: Остаток от деления чисел NUM1 и NUM2
Пример: 2%3
Замечание:


atan2

Описание: Азимут вектора
Синтаксис: atan2(NUM1,NUM2)
Возвращаемое значение: Азимут вектора с координатами NUM1, NUM2
Пример: atan2(2,3)
Замечание:


sin

Описание: Синус
Синтаксис: sin(NUM)
Возвращаемое значение: Синус угла NUM
Пример: sin(2)
Замечание:


cos

Описание: Косинус
Синтаксис: cos(NUM)
Возвращаемое значение: Косинус угла NUM
Пример: Cos(2)
Замечание:


tg

Описание: Тангенс
Синтаксис: tg(NUM)
Возвращаемое значение: Тангенс угла NUM
Пример: tg(2)
Замечание:


asin

Описание: Арксинус
Синтаксис: asin(NUM)
Возвращаемое значение: Арксинус угла NUM
Пример: asin(2)
Замечание:


acos

Описание: Арккосинус
Синтаксис: acos(NUM)
Возвращаемое значение: Арккосинус угла NUM
Пример: acos(2)
Замечание:


atg или atan

Описание: Арктангенс
Синтаксис1: atg(NUM)
Синтаксис2: atan(NUM)
Возвращаемое значение: Арктангенс угла NUM
Пример: atg(2)
Замечание:


deg

Описание: Конвертирует радианы в градусы
Синтаксис: deg(NUM)
Возвращаемое значение: Градусная мера NUM радиан
Пример: deg(2)
Замечание:


rad

Описание: Конвертирует градусы в радианы
Синтаксис: rad(NUM)
Возвращаемое значение: Радианная мера NUM градусов
Пример: rad(2)
Замечание:


log

Описание: Логарифм
Синтаксис: log(NUM)
Возвращаемое значение: Логарифм NUM
Пример: log(2)
Замечание:


ln

Описание: Десятичный логарифм
Синтаксис: ln(NUM)
Возвращаемое значение: Десятичный логарифм NUM
Пример: ln(2)
Замечание:


abs

Описание: Модуль
Синтаксис: abs(NUM)
Возвращаемое значение: Абсолютное значение NUM (без знака минус)
Пример: abs(-2)
Замечание:


exp

Описание: Экспонента
Синтаксис: exp(NUM)
Возвращаемое значение: Число e (равно примерно 2.7) в степени NUM
Пример: exp(2)
Замечание:


sqrt

Описание: Извление корня
Синтаксис: sqrt(NUM)
Возвращаемое значение: Корень из NUM
Пример: sqrt(2)
Замечание:


random

Описание: Генерирует случайное число в пределах от 0 до NUM
Синтаксис: random NUM
Возвращаемое значение: случайное число в пределах от 0 до NUM
Пример: random 10
Замечание:


;

Описание: Разделитель команд
Синтаксис: EXP1; EXP2
Возвращаемое значение:
Пример: myVar=random 10; newVar=MyVar-10
Замечание: С данным символом несколько команд можно записывать в одной строке


()

Описание: Установка приоритета. Выражение EXP внутри скобок будет выполняться первым.
Синтаксис: (EXP)
Возвращаемое значение:
Пример: (random 10 + 2*2) - 15
Замечание: В вышеуказанном примере вначале будет рассчитано выражение в скобках, а потом из полученного значения вычтется 15


and или &&

Описание: Проверка истинности обоих выражений
Синтаксис1: EXP1 and EXP2
Синтаксис:2 EXP1 && EXP2
Возвращаемое значение: TRUE (если оба верны) FALSE (если хотя бы одно не верно)
Пример: ? (mycounter == 0) and (alive myUnit) : aP globalchat “Time ran out!”
Замечание:


or или ||

Описание: Логический оператор ИЛИ
Синтаксис1: EXP1 or EXP2
Синтаксис2: EXP1 || EXP2
Возвращаемое значение: TRUE (если хотя бы одно из выражений EXP1 или EXP2 верно) или FALSE (если ни одно не верно)
Пример1: ? (mycounter == 0) or (not alive myUnit) : aP globalchat “Ahhhh…too bad!”
Замечание: Можно использовать несколько операторов
Пример2: ? (mycounter ==0) or (alive myUnit) or (checkflag) : aP globalchat “hello”


not или !

Описание: Отрицание выражения или значения
Синтаксис1: not EXP
Синтаксис2: ! EXP
Возвращаемое значение: TRUE (если EXP отрицательное) или FALSE (если положительное)
Пример: ? (not alive myUnit) : aP globalchat “Ahhhh…too bad!”
Замечание:


IsNull

Описание: Проверяет, определен/существует ли юнит UNIT
Синтаксис: IsNull UNIT
Возвращаемое значение: TRUE (если юнит не определен) или FALSE (если определен)
Пример: IsNull MyUnit
Замечание:


select

Описание: Выбирает элемент под номером NUM из массива ARRAY
Синтаксис: ARRAY select NUM
Возвращаемое значение: элемент массива под номером NUM
Пример: myY = myCoords select 1
Замечание: Номера элементов массива начинаются с 1 (не с 0!)


In

Описание: Проверяет, находится ли указанное значение в массиве (синтаксис1), или юнит в технике (синтаксис2)
Синтаксис1: ARG In ARRAY
Синтаксис2: UNIT1 In UNIT2
Возвращаемое значение: TRUE (если находится внутри) или FALSE (если нет)
Пример1: aP in list // Проверяет наличие юнита aP в массиве list
Пример2: 20 in numarray // Проверяет наличие цифры 20 в массиве numarray
Пример3: myGuy in myJeep // Проверяет наличие солдата myGuy в технике myJeep
Замечание:


?

Описание: Постановка условия
Синтаксис: ? EXP1: EXP2
Возвращаемое значение: Выполняет выражение EXP2, если выражение EXP1 верно (TRUE)
Пример1: ? Arrested : exit
Замечание: Выражения можно комбинировать, используя логические операторы OR и AND
Пример2: ? (mycounter ==0) or (alive myUnit) and (checkflag) : aP globalchat “hello”


foreach

Описание: Выполнение команды EXP над каждым элементом массива ARRAY
Синтаксис: "_x EXP" foreach ARRAY
Возвращаемое значение: Измененный массив
Пример1: "_x Allowdamage false" ForEach (units group Mygroup)
Пример2: "_x setDir 0" ForEach SalutingSoldiersArray
Замечание: Переменная _x зарезервирована для обозначения текущего элемента массива


format

Описание: Форматирование текста STRING. Данный текст должен содержать ссылки %1, %2 и т.д. на аргументы в тех местах, куда будут вставлены аргументы ARG1, ARG2 и т.д. при форматировании
Синтаксис: format [STRING,ARG1,ARG2,...]
Возвращаемое значение: Отформатированная строка
Пример: MyString = format["Target Name/Pos: %1, %2", EnemyUnit, getpos EnemyUnit]
Замечание: Если EnemyUnit = BMP, а getpos EnemyUnit (это его координаты) = 4300, 5400, то в результате отформатированный текст будет иметь вид
"Target Name/Pos: BMP, 4300, 5400"


Local

Описание: Устанавливает тип переменной в локальный
Синтаксис: Local VAR
Возвращаемое значение:
Пример: local someVar
Замечание: Значение локальной переменной доступно только для той части скрипта, в которой она определена (данная часть скрипта должна быть выделена фигурными скобками {}). Также локальную переменную можно установить в любом условном поле (Condition, On Activation и т.д.), и она будет действительна только для этого поля. Например, создав переменную myVar и сделав ее локальной (local myVar=10) вы можете использовать переменную с таким же именем (myVar) в остальной части скрипта и ее значение НЕ будет равно 10, а будет равно null (то есть, не определено). Однако значение локальной переменной myVar будет оставаться равно 10 вне зависимости от значения другой локальной/глобальной переменной с таким же именем


PublicVariable

Описание: Установить глобальный тип для переменной VAR. Применяется в сетевой игре для того, чтобы значение переменной стало известно не только серверу, но и всем клиентам.
Синтаксис: PublicVariable VAR
Возвращаемое значение:
Пример: PublicVariable "houseDestroyedFlag"
Замечание: Глобальная переменная доступна во всем скрипте


savevar

Описание: Сохраняет значение переменной STRING и передает его из одной миссии в другую (в кампании). В следующей миссия данная переменная станет доступна автоматически
Синтаксис: savevar STRING
Возвращаемое значение: значение STRING
Пример: SaveVar "houseDestroyedFlag"
Замечание:


goto

Описание: Переход на метку STRING
Синтаксис: goto STRING
Возвращаемое значение: null
Пример: Если юнит находится в транспорте, возвращаемся на метку Update и выполняем проверку условия заново
# Update
? (_Unit in _Vehicle) : goto "Update"
Замечание: Метка прописывается в скрипте и должна начинаться со знака #, но этот символ не надо приписывать при ссылке на метку


exit

Описание: Выход из выполняемого скрипта
Синтаксис: exit
Возвращаемое значение: null
Пример: ?(counter ==10):Exit
Замечание:

Ключевые слова


grpnull

Описание: Ключевое слово, обозначающее отсутствие какой-либо группы. Его можно использовать, чтобы отсоединить юнит от группы (как это сделать, показано в примере)
Синтаксис: grpnull
Возвращаемое значение: null
Пример: UNIT Join GrpNull
Замечание:


null

Описание: Ключевое слово, обозначающее отсутствие какого-либо значения
Синтаксис: null
Возвращаемое значение: null
Пример: 1 SetRadioChannel "null"
Замечание:


objnull

Описание: Ключевое слово, обозначающее отсутствие какого-либо объекта. Его можно использовать во многих командах.
Синтаксис: objnull
Возвращаемое значение: null
Пример1: UNIT doFire objNull // прекратится огонь, т.к. цель отсутствует
Пример2: UNIT SetFlagOwner objNull // флаг не будет принадлежать никому, т.к. владелец отсутствует
Замечание:


pi

Описание: Число Пи
Синтаксис: pi
Возвращаемое значение: 3.1415926536
Пример: pi
Замечание:


this

Описание: Ключевое слово, указывающее на текущий юнит. Используется вместо имени самого юнита (синтаксис 1). Также используется для выбора одного конкретного элемента из массива юнитов, переданных как аргументы в скрипт с помощью команды exec. Если юнит является частью группы или техники, данная команда отобразит и их тоже
Синтаксис 1: this
Синтаксис 2: VAR = this select NUM
Возвращаемое значение: текущий юнит
Пример 1: leader this
Пример 2: JeepVariable = this select 0
Замечание: Аргументы в скрипт могут передаваться следующим образом:
[MyJeep, Trigger, MyGuy] exec "myscript.sqs";


Comment

Описание: Ничего не делает, используется для создания комментариев.
Синтаксис: Comment COMMENT
Возвращаемое значение: Нет
Пример: comment "This is comment"
Замечание:Требуется версия 1.85 и выше


Do

Описание: Повторяет выполнение цикла, пока условие ИСТИНА (TRUE).
Синтаксис: WHILE Do CODE
Возвращаемое значение: Нет
Пример: while "a>b" do {a=a+1}
Замечание: Цикл повторяется максимум 10000 раз. Если после этого условие все еще - ИСТИНА, то цикл прерывается и выдается сообщение об ошибке.
Требуется версия 1.85 и выше


if

Описание: Выполняется первая часть команды, если ИСТИНА.
Синтаксис: if CONDITION
Возвращаемое значение: If Type
Пример: if (a>b) then {a=b}
Замечание: Требуется версия 1.85 и выше


if then codeToExecute

Описание: Если условие "ИСТИНА", то код выполненяется, если нет, то пропускается.
Синтаксис: IF then CODETOEXECUTE
Возвращаемое значение: Любое
Пример 1: if (a>b) then {c=1}
Пример 1: if (a>b) then {c=1} else {c=2};if (a>b) then [{c=1},{c=2}]
Замечание: Требуется версия 1.85 и выше


else

Описание: Производит выбор команд, в зависимости от условия (ИСТИНА / ЛОЖЬ)
Синтаксис: IFCODE else ELSECODE
Возвращаемое значение: Array
Пример: if (a>b) then {c=0} else {c=1}
Замечание: Требуется версия 1.85 и выше


while

Описание: Пока условие ИСТИНА, выполняется цикл.
Синтаксис: while CONDITION
Возвращаемое значение: While Type
Пример: while "x<10" do {x=x+1}
Замечание: Требуется версия 1.85 и выше


$ - + = == !=
< <= > >= * **
/ % или mod atan2 sin cos tg
asin acos atg или atan deg rad log
ln abs exp sqrt random ;
() and или && or или || not или ! IsNull select
In ? foreach format Local PublicVariable
savevar goto exit grpnull null objnull
pi this comment do if then
else then while
<<<Назад <<< <<<Меню>>> >>> Далее>>>