x3 reunion редактор скриптов

X3 reunion редактор скриптов

Для активации встроенного скрипт-редактора измените имя пилота (т.е. ваше) на Thereshallbewings (c большой буквы!). Если все сделаете верно, то редактор скриптов активируется, а имя пилота останется прежним. Для входа в редактор скриптов выберите меню Pilot и войдите в раздел Global Commands, там появится пункт Script Editor.

Для активации встроенного редактора карты измените имя пилота (т.е. ваше) на Makeanapplepiefromscratch (c большой буквы!). Если все сделаете верно, то редактор карты активируется, а имя пилота останется прежним. Для входа в редактор карты выйдите в главное меню игры, выберите New Game, и в самом низу списка будет пункт Galaxy Editor.

В игре существуют так называемые Unlockable game start positions

Enemy of the State (Враг Государства)
Наличный счет: 650 кр.
Корабль: Demeter (93.50 м/с, 2х25MJ, 2хAIRE, Fight Command Software MK1, Fight Command Software MK2, Navigation Command Software, Duplex Scanner, Boost Extension, Singularity Engine Time Accelerator, Video Enhancement Googles)
Стартовая позиция: случайная из пяти секторов — Company Pride, Ore Belt, Rhonkar Clouds, Atreus Clouds, Priest Pity
Начальный рейтинг Аргона: Confirmed Enemy (-4) 99%
Начальный рейтинг Боронов: Queen’s Nemesis (-4) 99%
Начальный рейтинг Сплитов: Enemy of Rhonkar (-4) 99%
Начальный рейтинг Паранидов: Enemy of Priest Duke (-4) 99%
Начальный рейтинг Телади: Profit Initiate (0) 60%
Начальный рейтинг Гонеров: Heretic (-4) 99%

Anonymous Argon (Анонимный Аргонец)
Наличный счет: 2500 кр.
Корабль: Discoverer (158.24 м/с,1х1MJ, Singularity Engine Time Accelerator)
Стартовая позиция: Argon Prime
Начальный рейтинг Аргона: Citizen (0) 50%
Начальный рейтинг Боронов: Trusted Courtier (+3) 0%
Начальный рейтинг Сплитов: Shameless Creature (-1) 64%
Начальный рейтинг Паранидов: Unholy Nomad (-1) 60%
Начальный рейтинг Телади: Profit Initiate (0) 50%
Начальный рейтинг Гонеров: Believer (+3) 0%

Boring Boron (Безобидный Борон)
Наличный счет: 2000 кр.
Корабль: Octupus (171.15 м/с,1х1MJ, Singularity Engine Time Accelerator)
Стартовая позиция: Kingdom End
Начальный рейтинг Аргона: Citizen (0) 50%
Начальный рейтинг Боронов: Trusted Courtier (+3) 0%
Начальный рейтинг Сплитов: Shameless Creature (-1) 98%
Начальный рейтинг Паранидов: Enemy of Priest Duke (-4) 99%
Начальный рейтинг Телади: Profit Initiate (0) 50%
Начальный рейтинг Гонеров: Sceptic (0) 0%

Pious Paranid (Праведный Паранид)
Наличный счет: 3633 кр.
Корабль: Demeter (57.91 м/с, корпус 76%, 2х1MJ, Singularity Engine Time Accelerator)
Стартовая позиция: Paranid Prime
Начальный рейтинг Аргона: Suspected Foe (-1) 34%
Начальный рейтинг Боронов: Antagonist (-1) 37%
Начальный рейтинг Сплитов: Creature (0) 50%
Начальный рейтинг Паранидов: Nomad (0) 50%
Начальный рейтинг Телади: Profit Liability (-1) 92%
Начальный рейтинг Гонеров: Agnostic (-1) 88%

Savage Split (Свирепый Сплит)
Наличный счет: 1400 кр.
Корабль: Jaguar (469.63 м/с, 2х1MJ, 4xAPAC, 3xDragonfly, Singularity Engine Time Accelerator)
Стартовая позиция: Family Pride
Начальный рейтинг Аргона: Confirmed Enemy (-4) 98%
Начальный рейтинг Боронов: Queen’s Nemesis (-4) 96%
Начальный рейтинг Сплитов: Creature (0) 50%
Начальный рейтинг Паранидов: Nomad (0) 50%
Начальный рейтинг Телади: Profit Initiate (0) 40%
Начальный рейтинг Гонеров: Blasphemer (-3) 0%

Teladi Trafficker (Теладийский Торговец)
Наличный счет: 12693 кр.
Корабль: Vulture (37.05 м/с, корпус 71%, 1х5MJ, Singularity Engine Time Accelerator, Trade Command Software MK1)
Стартовая позиция: Seizwell
Начальный рейтинг Аргона: Citizen (0) 30%
Начальный рейтинг Боронов: Acquaintance (0) 45%
Начальный рейтинг Сплитов: Creature (0) 15%
Начальный рейтинг Паранидов: Unholy Nomad (-1) 92%
Начальный рейтинг Телади: Profit Initiate (0) 50%
Начальный рейтинг Гонеров: Sceptic (0) 50%

Goner Witness (Гонер-Провидец)
Наличный счет: 350 кр.
Корабль: Ranger (28.06 м/с, 1х25MJ, Singularity Engine Time Accelerator)
Стартовая позиция: Cloudbase South West
Начальный рейтинг Аргона: Confirmed Friend (+3) 0%
Начальный рейтинг Боронов: Acquaintance (0) 25%
Начальный рейтинг Сплитов: Family Outcast (-2) 97%
Начальный рейтинг Паранидов: Unholy Nomad (-1) 12%
Начальный рейтинг Телади: Profit Initiate (0) 50%
Начальный рейтинг Гонеров: Believer (+3) 0%

Kha’ak Invader (Захватчик Хаак)
Наличный счет: 0 кр.
Корабль: Kha’ak Fighter (153.38 м/с, 2х25MJ, 3xBKE, Duplex Scanner, Boost Extension, Fight Command Software MK1, Fight Command Software MK2, Navigation Command Software, Singularity Engine Time Accelerator, Video Enhancement Googles) + 5 Kha’ak Scout (3х1MJ, 1xAKE, Fight Command Software MK1, Fight Command Software MK2)
Стартовая позиция: случайная из шести секторов — Presidents End, Omicron Lyrae, Bluish Snout, Company Pride, Family Rhy, Pontifex Realm
Начальный рейтинг Аргона: Enemy of the Federation (-5) 0%
Начальный рейтинг Боронов: Enemy of the Kingdom (-5) 0%
Начальный рейтинг Сплитов: Enemy of all Split Families (-5) 0%
Начальный рейтинг Паранидов: Enemy of Priest Xaar (-5) 0%
Начальный рейтинг Телади: Enemy of the Corporation (-5) 0%
Начальный рейтинг Гонеров: Defiler of the Truth (-5) 0%
Кажется невозможным? А вот и нет — вас будут пускать на пиратские базы, где вы сможете сохраниться. Ну а дальше — повышайте рейтинг. Пилот Grey Wolf нам наглядно продемонстрировал, что играть за хаака можно, застроив своими фабриками хаакский сектор!

Для активации этих позиций исправьте в реестре по пути HKEY_CURRENT_USER\Software\EGOSOFT\X3 ключ GameStarts на значение 3fff

Можно разблокировать не все сразу, а выборочно — просто ставим в единицу необходимые нам биты. Вот их список:

Источник

X3: Reunion(X3: Воссоединение) Космическое программирование

Где у него кнопка, Ури? Ты можешь найти кнопку?

х/ф «Приключения Электроника»

Сколько раз, проклиная все на свете, добропорядочные обитатели мира Х3 срывались с намеченных маршрутов и неслись на другой конец обитаемого космоса, чтобы разрешить своим личным участием безвыходную, казалось бы, ситуацию? Сколько раз им приходилось сожалеть о том, что логика верных автоматических помощников иной раз не дотягивает до совершенства. Казалось бы, ничего нельзя поделать с этим досадным фактом.

Однако выход есть. Компания EGOSOFT оставила открытой дверь, ведущую к потаенным струнам этой вселенной, специально для неугомонных душ с задатками демиургов. Речь идет, конечно, о редакторе игровых скриптов.

x3 reunion редактор скриптов
Разрушенные врата. Поставить их в своем собственном секторе — вопрос пары строк кода.

Общая концепция

Для начала разберемся — что такое редактор скриптов, зачем он нужен и как можно поменять игровую вселенную, прибегнув к помощи этого инструмента? Каковы, наконец, подводные камни, ожидающие начинающего скриптописателя на его нелегком, но чрезвычайно увлекательном пути?

Итак, мы имеем дело с полноценным отладчиком пользовательских программных кодов, интегрированный в саму игру. В исходном состоянии, то есть на момент установки игры, редактор не активирован и будет пребывать в спящем состоянии ровно до тех пор, пока игрок не попытается сменить свое игровое имя на специальный код «Thereshallbewings». При этом прежнее игровое имя остается неизменным, зато в нижней области игрового экрана появляется надпись modified, а в меню игрока и объектов игры добавится пункт доступа в скриптовый редактор.

При ближайшем рассмотрении можно заметить, что структура внутреннего логического языка игры подозрительно похожа на элементарный древнейший Basic тех времен, когда умельцы еще не приделали к нему приставку Visual. Новоявленный язык отличается лишь набором специфических команд, служащих для непосредственного управления объектами игры и их свойствами.

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

x3 reunion редактор скриптов
Именно так встречает игрока скриптовый редактор

Однако не все это будет одобрено компанией EGOSOFT. Любые скриптовые изменения в игре должны быть сертифицированы у компании разработчика на предмет соответствия основной идее проекта. Можно, конечно, пользоваться самодельными скриптами, не прошедшими горнило экспертов Эгософта, но в этом случае игрок будет пользоваться «модифицированной» версией игры, то есть — не такой, как у всех. А раз игра отличается от других, значит, она еретична по природе своей. Очиститься от подобной скверны можно, лишь пройдя сертификацию, убирающую при использовании авторского скрипта позорную надпись modified с нижней части экрана. Кстати, все сертифицированные скрипты имеют шанс попасть в очередное официальное обновление игры. И уж точно «признанный» код попадет в базу данных «благословленных» компанией скриптов, рекомендованных к самостоятельному скачиванию с портала разработчиков игры. Тот, кому удастся пройти сертификацию, может за кружечкой эля небрежно бросить друзьям: «А знаете, парни, я один из тех, кто создавал Х3!»

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

Функции встроенного редактора

x3 reunion редактор скриптов
Главное меню редактора.
x3 reunion редактор скриптов
Пример скрипта

Впервые запустив на своей машине редактор скриптов, игрок сразу же получает уведомление от компании-разработчика. Представляете — летите вы в космосе, и тут на компьютере вдруг появляется сообщение из параллельной вселенной: «Активирован режим ручного управления бортовым компьютером!» По нажатию клавиши Enter можно сразу же попасть в основное меню редактора скриптов. Давайте пройдемся по пунктам меню.

Script Editor. Открывает окно скриптов, доступных для редактирования. Самая верхняя строчка списка — Initiate new script — создает пустой файл. Ниже расположен список уже существующих скриптов, в том числе и тех, что были созданы разработчиками. Для различных операций со скриптами в окне редактора есть горячие клавиши (см. таблицу).

Клавиши управления редактором скриптов
Режим просмотра
Загрузить скрипт из папкиL
КопироватьC
ВыполнитьR
УдалитьDel
РедактироватьEnter
Режим редактора
Перемещение по строкамВверх/вниз
Перемещение между выражениямиВлево/вправо
Меню функцийEnter
Вставить новую строкуIns
Удалить строкуDel
Копировать строку в буферC
Вырезать строку в буферX
Вставить строку из буфераV
Закомментировать строку.
Удалить символ комментария,
Вставить операнд выраженияHome
Удалить операнд выраженияEnd
Сохранить и закрыть скриптEsc

Reinit Script Caches. Все скрипты, работающие в игре, находятся в специальном буфере: это заметно повышает скорость их исполнения. Буфер заполняется в момент загрузки игры, и поэтому все изменения вступают в силу только после повторной инициализации. Или же после «ручной» перезагрузки буфера. Также необходимо отметить, что если отредактированный скрипт выполняется в момент перезагрузки, он должен быть остановлен, иначе измененный вариант заработает только после его завершения. Script debugging:(scriptname). Выбор скрипта и режима отладки. Есть всего два варианта режима отладки — отладить в пошаговом режиме (Trace) либо запротоколировать все изменения, произведенные скриптом. Clear debug messages. Удаление данных протокола, созданного во время отладки.

Script debugger menu. Выбор этого пункта открывает протокол отладки скрипта, указанного в пункте Script debugging. Отображение самого процесса обусловлено выбранным способом отладки. Если включено протоколирование, игрок получает всю последовательность действий, выполненную скриптом за время его работы в режиме реального времени. Тело отладочной записи начинается с заголовка, где через двоеточие указаны параметры, отображаемые в каждой стоке выполняемого кода (см. «Что значат эти параметры?»).

a.missile.fire:4:0:0:2065911111:0: = wait 500 ms

a.missile.fire:9:0:0:2065911111:0: = wait 500 ms

Сопоставим данные, выдаваемые в строчку с указанными в шапке параметрами:

Script Name — имя скрипта, в нашем случае — a.missile.fire. Line — номер строки в скрипте. Stackdepth — количество скриптов в стеке (отсчет ведется с 0), сейчас — 0. Prio — приоритет выполняемого скрипта. Наш скрипт имеет нулевой приоритет. PID — глобальный идентификатор задачи. Этот параметр сейчас равен 2065911111. TaskID — текущий идентификатор задачи = 0. Command — текст исполняемой команды $ware=Mosquito rocket

Как видно из приведенного отрывка, протоколируется каждая исполняемая команда. Если в коде встречается цикл, его тело будет переписано столько раз, сколько витков он прошел, то есть в нашем случае — 10.

Второй способ отладки — пошаговый. Он отличается лишь тем, что интерпретатор команд ждет разрешения перейти к выполнению следующей строчки. В нижней части окна при этом отображается значение всех переменных в формате: Имя переменной: Тип данных: Значение переменной: Числовое значение переменной.

Global script tasks. В этом пункте можно просмотреть, какие глобальные (то есть применимые ко всей Вселенной) скрипты выполняются на данный момент. Из этого же раздела ненужные или лишние глобальные скрипты можно удалить вручную.

Информация здесь представлена в форме: Глобальный идентификатор задачи: Имя скрипта: Текущий объект скрипта.

Help. Просто небольшая справка по редактору.

Что значат эти параметры?
x3 reunion редактор скриптов
Нижние строчки содержат простой текст, начинающийся с символа «*». Это комментарии автора скрипта. «Звездочка» говорит интерпретатору, что строку нужно пропустить.

Просмотр и редактирование скриптов

Все скрипты, используемые в Х3: Reunion, находятся в папке /scripts, расположенной в установочной директории игры. Там есть три типа файлов — .xml, .pck и единственный файл x2script.xsl, содержащий необходимый набор параметров для просмотра .xml-файлов в интернет-браузере.

Чтобы распаковать файл, достаточно набрать в командной строке следующую строчку:

С помощью той же программы можно произвести обратное действие, то есть — запаковать файлы. Обращение к утилите в этом случае будет таким:

x3 reunion редактор скриптов
Код на языке Х3: Reunion при просмотре через интернет-браузер.

Если у разработчика возникает необходимость просматривать скрипты, не находящиеся в папке /scripts, он должен обязательно скопировать туда файл x2script.xsl. Без этого просмотреть скрипт в интернет-браузере не получится. Редактирование скриптов возможно исключительно во встроенном редакторе игры.

Структура скриптового языка

Если просмотреть файл навигационного скрипта при помощи браузера, его структура становится понятна. В качестве примера возьмем внутренний командный скрипт (см.).

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

for Script Engine Version: 20

Ship Player COMMAND FOLLOW

Пример скрипта преследования
x3 reunion редактор скриптов
Красота. Этот и другие фоны можно выбрать для собственного сектора.

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

Для начала отметим, что скрипт начинается с символа «!». Это обозначает, что он относится к числу системных и редактированию не подлежит. То есть во встроенном редакторе этот код отображаться не будет. Далее идет слово ship, что указывает на выполнение этого скрипта для кораблей.

В игре существует четыре типа скриптов — init, setup, al и galaxy.

Это важно: если скрипты этих двух классов начинаются с «!» и не имеют цифровой подписи, игра автоматически будет запускаться с пометкой modified. Они же, но без пометки «!», не загружаются официальной версией и используются только в модифицированных играх.

На заметку: если вы сделали свою карту и хотите разместить заранее оснащенный корабль в некой стартовой точке, необходимо сделать следующее: создать скриптовый файл с именем galaxy.имя_файла.initplayership. Под «именем файла» понимается название того файла, в котором содержится новая карта, но без расширения .xml. В теле скрипта необходимо прописать требуемые координаты и добавить в этом месте корабль игрока командой plship. Наконец, описать трюм корабля, задав все необходимые устройства, установленные на корабле, определить размер кошелька игрока, а затем завершить команду (return plship).

Версия

Следующая строка указывает версию текущего скрипта. Иногда разработчику бывает полезно знать, с какой версией собственного скрипта ему приходится работать на этот раз. Затем указывается номер версии скриптового редактора, в котором был создан скрипт. Все «древние» скрипты понимаются более поздними интерпретаторами, но не наоборот. Кстати, Х3 работает с большинством скриптов, разработанных еще под Х2.

Описание

Здесь автор дает максимально информативное описание механизма действия скрипта.

Аргументы

После этой строки перечисляются все переменные в формате:

Имя переменной; Тип переменной, Описание.

x3 reunion редактор скриптов
Обыкновенная блок-схема.

Тело скрипта

Собственно набор команд, операторов и переменных, задающих последовательность действий компьютера.

Цифровая подпись

Надпись signed в конце скрипта обозначает, что скрипт одобрен старшими братьями по разуму из компании Эгософт. Подделать эту подпись практически невозможно.

Самое главное правило

Первое, что должен уяснить для себя разработчик скриптов Х-вселенной, — положительные веяния и тенденции развития современных языков программирования обошли своим вниманием цитадель «Эгософта». Внутренний язык игры не поддерживает принятых сейчас традиций многозадачности. В каждый момент времени в игре выполняется лишь один скрипт. Из этого следует, что скрипт, рассчитанный на продолжительное действие, просто подвесит исполнение всех остальных скриптов. И как следствие — игры в целом. Программисты «Эгософта» полностью отдавали себе отчет, что такая система порочна. Поэтому в структуру языка были внесены два основополагающих принципа: иерархия скриптов и система задержек в их выполнении.

Что это означает? Если в скрипте присутствуют (а в официальных скриптах они присутствуют всегда) операторы задержки выполнения команд, игра получает возможность выполнить шаги других скриптов за время задержки текущего кода. Причем делает она это исходя из индекса приоритета скриптов. Таковой приоритет следует всегда устанавливать при вызове исполнения скрипта.

Это важно: внутренние скрипты, поставляемые «Эгософтом», уже имеют отлаженную систему приоритетов. Меняя приоритеты выполнения базовых скриптов, разработчик кода рискует наделить Х-вселенную изрядной долей неадекватности.

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

x3 reunion редактор скриптов x3 reunion редактор скриптовx3 reunion редактор скриптов

Рассмотрим и запомним три типа команд, способных задерживать выполнение программного кода:

Тип «wait»

Включает в себя две команды:

wait randomly from to ms.

Команды этого семейства приостанавливают выполнение скрипта на определенное время.

На заметку:показатель ms — приблизительный. Минимальное время задержки не может быть меньше времени исполнения одного кадра.

Тип «fly»

Сюда входят команды «длительного действия» из числа навигационных. С их помощью кораблю отдается приказ выполнить какое-либо протяженное во времени действие. Однако выполнение этих команд не приведет к остановке системы.

Тип «call script»

Команда вызывает другой скрипт. Может быть вызвана с префиксом START, в этом случае скрипт, в котором находится команда call script, не дожидаясь окончания вызываемого им скрипта, продолжит работу. Прерываемость данной команды условна и подразумевает наличие в вызываемом скрипте команд «@», в противном случае вызываемый скрипт прервать не получится.

Предлагаю рассмотреть небольшой пример, чтобы закрепить теорию практикой.

x3 reunion редактор скриптов
Все сюжетные ходы в игре «заскриптованы», то есть написаны при помощи такого же редактора. Значит, что игрок может придумать свой собственный сюжет.

Перед нами скрипт, проигрывающий «тревожный» звуковой сигнал 5 раз подряд.

003 play sample 1114

Явно не хватает оператора @, то есть задержки. Во первых, обрабатывая данный код, система попытается пять раз проиграть фрагмент за номером 1114 из звуковой базы данных игры. А ведь фрагмент имеет определенную длину, измеряемую долями секунды. В итоге процесс затянется на срок, больший максимально допустимого, что чревато «вылетом» игры.

Изменим тело скрипта так:

004 play sample 1114

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

x3 reunion редактор скриптов
В первых строках автор спешит поделиться с читателем многословной монографией на тему «Зачем я это написал».

Семейства операторов

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

Семейство script

Все команды этой группы служат для определения внутреннего регламента взаимоотношений между исполняемыми скриптами. Существуют, например, функции, позволяющие установить новый приоритет для текущего скрипта. Также возможно сравнить текущую версии текущего скриптового ядра и ядра разработчика. Эта полезная функция позволит не допустить запуска скриптов, рассчитанных на более позднюю версию ядра, на машинах с устаревшим программным обеспечением.

Вся совокупность команд и функций этого семейства позволяет разработчику создавать скрипты, управляющие скриптами, то есть строить своего рода скелет большого программного продукта, состоящего из десятков более мелких «кирпичиков».

x3 reunion редактор скриптов
Фрагмент серьезного торгового скрипта, написанного германским пилотом.

Семейство логических операторов

Естественно, редактор скриптов Х3 поддерживает все основные логические операторы. Речь идет и об условном ветвлении IF-THEN-ELSE-ELSE IF, и о булевых AND, OR и NOT.

Семейство команд массивов

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

Навигационные команды

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

Это интересно: в игре существует несколько видов логики, по одному для каждой из существующих рас. Редактор скриптов позволяет подключать к объектам любую расовую логику. Хотите группу аргонских «Открывашек», летящих как рой хааков? Без проблем!

Торговые команды

x3 reunion редактор скриптов
Такая группа пиратов может разнести М4 в щепки, но не атакует. Пиратский интеллект говорит им, что я для них — не добыча.

Это семейство команд регламентирует все, что так или иначе связано товаром. Торговля, производство, потребности станции. Торговые команды делятся на три группы — команды кораблей, команды станций и смешанные команды. Последняя группа описывает сходные операции для обоих классов. В качестве примера рассмотрим команду get amount of ware in cargo bay. Она возвращает число единиц указанного товара в трюме. Сфера ее применения весьма обширна. Например, разработчик решил создать сложный торговый скрипт. Для этого ему нужно заставить корабль самостоятельно покупать батарейки, если их количество в трюме корабля опустилось ниже определенного.

Галактические команды

Служат для галактической навигации, позволяя получить количество и расположение прыжковых ворот в секторе, список всех кораблей со всеми основными характеристиками. Также можно, допустим, выяснить, известен ли игроку данный сектор. Эта команда, is sector known by the player, будет полезна при создании скрипта авторазведки.

Команды объектов

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

Команды [SHIP] и [STATION] аналогичны предыдущей, но более конкретизированы. С их помощью приказы отдаются кораблю или станции.

Синтаксис скриптового языка

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

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

Это важно: если в скрипте присутствует обращение к глобальным переменным, объявлять их в самом скрипте нет необходимости. Система уже владеет информацией об этих данных, а повторное объявление может просто обнулить их значения.

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

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

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

Далее следует начинать воплощать логическую схему проекта. Если скрипт не предполагает логического ветвления, можно сразу же переходить к прямым командам (см. пример).

Переменные [THIS],[SHIP],[STATION]

Если скрипт имеет сложное ветвление, выстраиваем систему логических вилок, основанных на использовании логических операторов IF, ELSE IF, SKIP IF и прочих. В конце дерева событий, созданного логическим оператором IF, всегда ставиться end. К вашим услугам — еще один пример.

Пример скрипта без логического ветвления

005 @ = wait randomly from 10 to 20 ms

075 @ = wait randomly from 200 to 300 ms

079 goto label load

Все основные программные действия расписаны, осталось лишь упомянуть о расстановке команд. Редактор скриптов самостоятельно предлагает выбор. Сначала потребуется выбрать класс команды, потом ее подкласс (например, команды кораблей) и в конце концов выйти к требуемому буквенному выражению.

Ну что ж, желаю вам удачного программирования. И не называйте свои проекты одиозными именами вроде Skynet. А то мало ли чего?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пример с использованием логических операторов