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

Введение: SQS-скрипты

Соответствие обозначений текстовых полей в скрипте и в редакторе:

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

Запомните: текст внутри кавычек, который уже находился внутри других кавычек, обязательно нужно помещать во вторые кавычки! Например:
expActiv="aP globalChat ""Nice work Bravo, they are all dead." "; ""0"" objstatus ""DONE""";
Файлы с расширением .sqs – скрипты, которые исполняются во время миссии. Во время исполненения скрипта игра не останавливается.
Вы можете запустить скрипт из файла mission.sqm, добавив туда команду:
exec ""
где: - список аргументов, передающихся из миссии в скрипт, а - имя скрипта, который вы хотите запустить.
Пример 1: Передадим в скрипт donothing.sqs один аргумент aP (имя какого-то юнита). В строке Initilization напишем:
aP exec "donothing.sqs"
Пример 2: Передадим несколько (массив) аргументов:
[aP,5,true] exec "dosomething.sqs"

Использование переданных в скрипт аргументов

Локальная переменная "_this" зарезервирована для ссылки на список аргументов, переданных в скрипт из файла mission.sqm. Это может быть как один оаргумент, так и массив.
Пример 1: Получение одиночного аргумента и сохранение его в локальной переменной _vehicle:
_vehicle = _this
Пример 2: Получение нескольких аргументов и сохранение их в локальных переменных _vehicle, _id и _alive:
_vehicle = _this select 0
_id = _this select 1
_alive = _this select 2

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

Работа с переменными

Вы можете создавать свои собственные переменные в миссии. Их значения проверяются в поле Condition и задаются в поле Activation.

Глобальные и локальные переменные

Есть два вида переменные в игре: глобальные и локальные. Локальные переменные начинаются со знака "_", например, "_gvar" (без кавычек). Глобальные переменные доступны во всей миссии, любые поля ввода команд и скрипты могут работать с ними. Локальные же переменные имеют ограниченное действие, влиять на них могут только команды внутри скрипта, в котором они установлены. При каждом запуске скрипта локальные переменные создаются заново. Например, если локальная переменная "_test" установлена в файле testmission.sqm, то ее можно использовать только в рамках данного файла миссии. Если же в этом файле установлена глобальная переменная "test", то ее можно использовать и в файле testscript.sqs (передав ее туда в качестве аргумента), который запускается из миссии testmission.sqm.

Операции со строками

Текстовые строки также используются в скрипте. Можно складывать отдельные строки для получения более длинных строк. Например команда globalchat позволяет говорить игроку. Так вот эту фразу можно динамически генерировать в зависимости от условий:
aP globalchat ("Platoon " + "Bravo " + "is destroyed")
aP globalchat ("Platoon " + currentPlatoonName + " is destroyed")

Одномерные массивы

Вы можете одномерные массивы переменных в игре. Массив имеет несколько элементов одного типа (например, только числа, или только слова) или разных типов (одновременного и числа, и слова).
Пример 1: Определение одномерного массива с одинаковым типом переменных:
favbands = ["Led Zeppelin","Aerosmith","Pink Floyd"];
Пример 2: Определение одномерного массива с различными типами переменных:
ledinfo = ["Led Zeppelin",1.0,false];
Пример 3: Получение третьего элемента из массива ledinfo и сохранение его в переменной stilltouring:
stilltouring = ledinfo select 2
Пример 4: Определение количества элементов в массиве favbands и сохранение результата в переменную numelements:
numelements = count favbands
Пример 5: Отображение всех элементов массива favbands в цикле foreach (aP – имя солдата в миссии, а _x – переменная цикла):
"aP globalchat _x" foreach favbands;
Вы также можете складывать и вычитать элементы различных массивов:
MyArray1 = ["One", "Two"]
MyArray2 = ["Three","For"]
GroupingArray = MyArray1 + MyArray2
Массив GroupingArray будет содержать элементы "One", "Two","Three","For".
MyArray1 = ["One", "Two","Three"]
MyArray2 = ["One"]
GroupingArray = MyArray1 - MyArray2

Массив GroupingArray будет содержать элементы "Two","Three".

Также можно производить операции с переменными элементами массивов. Допустим, массив PlayersArray содержит переменное число игроков:
_Player = _this select 0
?!(_Player in PlayersArray):PlayersArray = PlayersArray + [_Player]
_Player = _this select 0
?(_Player in PlayersArray): PlayersArray - [_Player]

Удалять элементы из массива можно также и таким способом:
MyArray = MyArray - [MyArray select 2]

Многомерные массивы

Вы можете определять многомерные массивы. Они также могут быть составлены из элементов различных типов. Чтобы определить многомерный массив, необходимо вместо одного или нескольких элементов уже созданного массива записать новый массив.

Пример 1: Создание многомерного массива squadInfo:
squadInfo = [["aP","trooper1","trooper2"],5.0,true];
Пример 2: Получение значения третьего саб-элемента первого элемента массива squadInfo (то есть, "trooper2"):
troopername = (ledinfo select 0) select 2

Команды случайного выбора

Команда random позволяет генерировать числа случайным образом. В отличие от массивов она работает с числами начиная с 1! Чтобы она использовала и число 0, необходимо из условия генерации вычитать 0.5 (по какой-то причине вычет 1 приводит к ошибке деления на ноль!).

Пример 1: Генерация случайного числа от 1 до 10:
"random 10"
Пример 2: Выбор случайного элемента из массива mylist и присвоение его переменно nextelement (с учетом 0-го элемента!):
"nextelement = (random (count mylist)) - 0.5;"

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