Аллоды 3: Проклятые Земли
Введение в скрипты


Данный материал посвящён скриптам игры "Аллоды 3: Проклятые Земли". Скрипты этой игры позволяют производить перенастройку игры, процессов, происходящих во время игры, управления событиями и, самое главное, редактировать квесты, а также создавать новые (свои).
Скрипты вводятся в консоли игры, которую можно вызвать, нажав клавишу ~ (тильда). Скрипты являются как бы командами виртуального языка программирования. Скрипты можно писать прямо внутри других скриптов, подобно командам языка программирования.
Для того, чтобы активировать вообще возможность написания скриптов, нужно активизировать консоль, для этого нужно ввести в консоли:

Thingamabob

Эта команда активизирует консоль, при этом активизируются коды и, собственно, скрипты. Написание скриптов, как и команды активизации консоли не требуют точного соблюдения регистра, значит, если бы мы ввели ThInGaMaBoB, то консоль всё-равно бы активизировалась. Скрипт, будучи командой, требует себе параметров. Например, скрипт GodMode требует указания после него в скобках двух чисел через запятую. Также, вызов скриптов делается через специальный значок - @. Итак, давайте рассмотрим несколько примеров скриптов:

@GodMode(0,2)
@AddMob("z3q1.mob")
@AddUnitUnderControl(0,GetLeader())

Итак, давайте сначала разберёмся с тем, что у нас находится в скобках. В первой строке всё ясно - два числа через запятую, во второй строке мы видим: "z3q1.mob", это тоже параметр, но это не число (как видно), а строка (слово, набор букв, словосочетание и т.п.). Для начала нужно знать, какие типы данных можно содержать в скобках. Зная это, можно пойти дальше: рассмотрим третью строчку примера. В третьей строчке в качестве первого параметра выступает число, а в качестве второго параметра выступает другой скрипт, который после своего выполнения заменяет себя на свой результат - объект (тип данных). Другими словами, скрипт GetLeader() выполняет своё действие - вычисляет главного героя как объект, а затем заменяет себя этим объектом, потому можно сказать образно, что в результате вычисления этих "внутренних" скриптов конечный результат выглядел бы так:

@AddUnitUnderControl(0,ГлавныйГеройКакОбъект)

Кстати, заметьте, даже если у скрипта нет параметров, как у скрипта GetLeader, то всё-равно после него нужно указывать пустые скобки. Самым широко используемым типом данных, который будет использоваться в скриптах, является object. Как Вам уже должно быть известно, объекты объединяются в группы. Существуют также дипломатические группы, или их ещё называют группами игрока N. Эти группы глобальные. Эти дипломатические группы устанавливают взаимоотношения по-умолчанию между объектами.

Ещё один факт. Не все команды могут выполняться клиентом. Это значит, что полная свобода действий есть только у сервера. Это касается мульти игры. В сингли же Вы являетесь уже как бы сервером, потому команды в сингле будут работать все. Единственной выгодой для клиента является возможность ввода всех команд на брифинг-базе - в это время за зону отвечает сервер и, потому команды будут выполняться все.

В общем, я думаю, что этого достаточно для того, чтобы перейти непосредственно к описанию скриптов:
Описание скриптов (по алфавиту)

Автор: `'!ELF!'` из Города Джунов
Источники: Noone2003 и EI-Cheats