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

Структура НС

 

При просмотре НС в браузере IE, хорошо видна вся структура скрипта. Давайте рассмотрим ее подробней. Возьмем для примера внутренний скрипт !ship.cmd.follow.pl:

Script !ship.cmd.follow.pl

Version: 1
for Script Engine Version: 20

Description

Ship Player COMMAND FOLLOW

Arguments

  • 1: target , Var/Ship , 'the target'

Source Text


001 @ = [THIS] -> call script '!ship.cmd.follow.std'  :       the target=$target     follow distance=null
002   return null


signde

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

           

v    Имя скрипта (Script)

Первое что мы видим это имя скрипта. В Х2 имя скрипта имеет большое значение, т.к. в имени скрипта содержится много важной информации обрабатываемой ScE. В нашем примере имя начинается со знака «!» это сообщает редактору  о том, что данный скрипт является системным и не подлежит редактированию. Скрипты со знаком «!» не будут отражаться в списке доступных для редактирования скриптов в редакторе. В  Х2 присутствуют следующие типы имен: “init.* ”, ”setup.* ”, “al.plugin.* ”, “galaxy.* “. Каждое из имен имеет определенное значение, и скрипты с такими именами выполняются игрой автоматически.

 

o       Init Scripts: скрипты с именами “init.* ” и “!init.* “ являются скриптами инициализации, то есть они загружаются автоматически каждый раз когда вы запускаете игру или загружаете сейв. Но обратите внимание на то, что загрузка скриптов init происходит до инициализации галактики (то есть до создания кораблей и станций). Поэтому нужно быть осторожным используя данный тип имен для скриптов работающих с объектами в галактике.

o       Setup Scripts: скрипты с именами “setup.* ” и “!setup.* “ запускаются автоматически при создании новой игры или загрузке сейва. Загрузка скриптов setup происходит после инициализации галактики (то есть все объекты уже созданы). Использование setup для скриптов активно работающих с объектами в галактике, позволяет избежать  многих ошибок которые могут возникнуть при использовании init.

o       AL Plugin Scripts: скрипты с именами “al.plugin.* ” и “!al.plugin.* “ отвечают за искусственную жизнь в галактике (патрули секторов, транспорты летающие между станциями, в том числе и залетающие на станции игрока) каждый скрипт данного типа отвечает за какой ни будь конкретный процесс происходящий в галактике связанный с искусственной жизнью.

o       Galaxy Ship Init Scripts: скрипты с именами “galaxy.* “ используются для запуска иных чем встроенная в Х2 карта. Скрипты "galaxy.* “  создает стартовый корабль игрока и помещает в нужную точку на новой карте. ScE при запуске проверяет наличие скрипта с именем “galaxy.<имя карты> “ или “!galaxy.<имя карты>“ Чтобы при старте новой игры на новой карте, оказаться в заданном секторе карты и на заданном корабле с определенным количеством оборудования в трюме и нужным кол-вом денег на счете, нужно создать скрипт с именем  galaxy.имя_файла_карты.initplayership  следующей структуры: 

§         выбрать сектор с нужными координатами 

§         plship-> создать в этом секторе корабль, принадлежащий пилоту

§         добавить в трюм необходимые апгрейды  

§         return plship

Имя файла карты в имени скрипта  указывается без расширения .xml

 

Обратите внимание на одну особенность при использовании имен скриптов init, setup, !init, !setup. Скрипты !init и !setup запускаются всегда при старте или загрузке сэйва. Если использовать скрипты такого типа, НЕ подписанные Егософтом (цифровая подпись скрипта, см. ниже), то игра автоматом приобретает статус Modified. Скрипты типа init и setup запускаются ТОЛЬКО в игре со статусом Modified, в не модифицированной игре они не будут запускаться, несмотря на то, что находятся в папке \scripts.

 

v    Версия (Version)

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

В следующей строке отражается версия  ScE (Script engine version), а это делается для того чтобы определить будет ли данный НС скрипт работать под управлением установленной и вас игры. Начиная с версии 1.4 версия ScE выше 25 (включительно). Совместимость скриптов обеспечивается по принципу возрастания, то есть более новая версия ScE поддерживает скрипты написанные в более старой.

 

v    Описание  (description)

В этой строке содержится краткое описание скрипта. Создается автором данного скрипта. Описание скрипта отражается в окне «Редактор скриптов», сразу за версией скрипта. В нашем случае «Команда следовать, используемая для корабля игрока».

v    Аргументы  (Arguments)

Аргументы это входные данные, от которых зависит результат выполнения скрипта (куда полетит корабль или какой товар покупать и т.п.). Аргумент в ScE Х2 состоит из трех частей:

o       Name: имя аргумента, должно состоять из символов любого регистра (строчные, прописные), цифр. ScE создаст переменную имя которой будет соответствовать имени аргумента, с этой переменной скрипт сможет работать как с обычной переменной.

o       Type: тип данных переменной-аргумента. Информация для ScE о том какой тип данных содержит аргумент.

o       Description: описание. Задается краткое описание аргумента. Описание отражается в нижней части экрана, когда редактор запрашивает значение аргумента при запуске скрипта, что очень удобно для других пилотов использующих ваш скрипт. Так же Description будет отражаться при использовании команды call script, необходимые аргументы для вызова скрипта будут отображены как Description аргументов вызываемого скрипта. В нашем примере в строке 001 вызывается скрипт “!ship.cmd.follow.std” далее идет “the target” и “follow distance”, это говорит о том что в вызываемом командой call script скрипте “!ship.cmd.follow.std” имеются два аргумента, необходимых для выполнения скрипта, у которых в описании первого записано “the target”, а второго “follow distance

 

v    Исходный текст  (Source text)

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

 

v    Цифровая подпись навигационного скрипта

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

Скрипт написанный любым пилотом может быть подписан Egosoft’ом, для этого он должен соответствовать определенным условиям. Занимаются вопросами подписи скриптов два пилота BurnIt и mkess, именно они будут принимать решение подписывать или не подписывать ваш скрипт. Для рассмотрения вашего скрипта, он должен быть выслан на адрес scripts@egosoft.com. Также, на подпись можно отправить скрипт автором которого вы не являетесь, после рассмотрения, если скрипт будет принят, то Egosoft свяжется с автором и в случае его согласия скрипт будет подписан.

Основные требования предъявляемые к скриптам:

·        Скрипт не должен полностью автоматизировать работу экономики (то есть осуществлять полностью автоматическое управление всеми фабриками игрока). Хотя есть оговорка о том, что в принципе какой скрипт может быть подписан, в случае если например: игрок уже является владельцем не одного десятка фабрик и его торговый рейтинг не меньше чем Промышленник, то он может приобрести какое ни будь новое оборудование добавляемое этим скриптом за баснословные деньги.

·        Приветствуются скрипты расширяющие работу стандартных команд.

o       Скрипты расширяющие структуру меню

o       Микроменджмент (перевод денег на счет игрока, предупреждение о нехватке денег или ресурсов, и т.п.)

o       Улучшающие стандартные боевые, добывающие, собирающие и т.п.  скрипты

o       Патрули секторов, галактик осуществляющих защиту собственности.

o       Скрипты улучшающие AL.

o       Улучшающие торговые и транспортные скрипты.

·        Скрипты не должны без необходимости обращаться к системным скриптам. Например использовать системный скрипт !Move.movetostation для определения прибыл ли объект к точке следования, вместо команд "if THIS-> landed" или "If DOCKEDAT == $targetstation".

 

Если Egosoft находит мелкие недостатки в скрипте, то автору предлагается устранить их. И после устранения этих недостатков, скрипт получит долгожданную «signed».

 

 

 


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