Оглавление | Сообщение об ошибках | Ваше мнение о проекте | E-Mail автору |
Когда ваши корабли выполняют какую либо встроенную команду (покупают товар или атакуют кого то), то открыв информационный экран вашего корабля вы увидите, что выполняемые кораблем в данный момент действия описываются в соответствующей строке экрана (также текущая команда отражается в меню собственности). Например: корабль получил команду «Атаковать Кремниедобывающую шахту альфа»
Информационный экран:
Меню собственности:
В строке команда отобразилась «Атаковать…Кремниедобывающая шахта альфа», сообщает о том, что в данный момент исполняется скрипт связанный с командой в меню «Атаковать». В строке действие отображено какое действие выполняет корабль в данный момент, фактически какая навигационная команда выполняется в данный момент. Скрипт команды «Атаковать» состоит из множества команд в том числе Навигационных команд, в частности речь идет о навигационных командах помеченных знаком «@» (за исключением команды turn turret), именно эти команды при выполнении помещают комментарий действий в пункт «Действия» информационного экрана. Также, в инфо корабля при использовании разных команд из командного меню могут присутствовать пункты «Назначение» «Атакуется».
Особенность информативных команд заключается в том, что они не влияют на поведение корабля, а имеют исключительно информационный характер. Это говорит о том что при помощи некого скрипта, можно отправить корабль в одно место, а информационной командой указать другое. В итоге корабль полетит туда куда ему было указанно лететь командой из группы управляющих команд, а в информационном меню будет отращена информация указанная информационными командами. Далее в этой главе будет рассмотрено как сделать свой скрипт информативным, то есть обеспечить отображение служебной информации в инфо корабля во время его исполнения.
Информативные команды можно условно разделить на несколько групп:
1. Общие информативные команды – это те команды, которые будут отражать информацию в течении выполнения всего скрипта или до другой информативной команды.
2. Условные информативные команды – это те команды, что отразят информацию на информационном экране только в том случае, если будет выполняться соответствующее ей действие.
давайте начнем по порядку.
Общие информативные команды.
Прежде всего рассмотрим работу общих информативных команд. Начнем с команды set command. Эта команда отображает в информационном окне текст напротив заголовка «Команда». Отображаемый текст связан непосредственно с ней и берется из языкового файла (page2010). Не все команды имеющиеся в ScE Х2 доступны редактору. В таблице собраны все встроенные команды присутствующие в игре и связанный с ними текст, в последней колонке указанно имеет ли редактор доступ к команде:
Команда |
Связанный текст |
Дост. |
COMMAND_NONE |
Нет команд |
Да |
COMMAND_RETURN_HOME |
Вернуться на базу |
Да |
COMMAND_ATTACK_NEAREST |
Атаковать ближайшего неприятеля |
Да |
COMMAND_ATTACK_TARGET |
Атаковать мою цель |
Да |
COMMAND_PROTECT |
Защищать... |
Да |
COMMAND_FOLLOW |
Следовать... |
Да |
COMMAND_STAY |
Оставаться на месте |
Да |
COMMAND_DOCKAT |
Стыковка к... |
Да |
COMMAND_ATTACK_SAME |
Атаковать цель... |
Да |
COMMAND_GET_WARE |
Покупать товар... |
Да |
COMMAND_GET_WARE_BEST |
Покупать товар по лучшей цене... |
Да |
COMMAND_SET_HOME |
Установка базы |
Нет |
COMMAND_MOVE_SECTOR |
Лететь в сектор... |
Да |
COMMAND_ATTACK |
Атаковать... |
Да |
COMMAND_KILL_ENEMIES_AND_LAND |
Уничтожить всех врагов и стыковаться |
Да |
COMMAND_KILL_ENEMIES |
Уничтожить всех врагов |
Да |
COMMAND_COMBAT |
Бой по умолчанию |
Нет |
COMMAND_IDLE |
Ожидать |
Да |
COMMAND_INVASION |
Вторгаться... |
Да |
COMMAND_MOVE_POS |
Лететь на позицию... |
Да |
COMMAND_ACTION |
Действие по умолчанию |
Да |
COMMAND_TRADE |
Торговля |
Нет |
COMMAND_ATTACK_RETURN |
Атаковать врага и стыковаться... |
Да |
COMMAND_COLLECT_WARE |
Подбирать контейнеры... |
Да |
COMMAND_PATROL |
Патрулировать сектор |
Да |
COMMAND_KILL_ENEMIES_RANGE |
Атаковать врагов в радиусе... |
Да |
COMMAND_PREACH |
Проповедовать |
Да |
COMMAND_SELL_WARE |
Продавать товар... |
Да |
COMMAND_SELL_WARE_BEST |
Продавать товар по лучшей цене... |
Да |
COMMAND_COLLECT_FLYINGWARES |
Подбирать контейнеры в секторе... |
Да |
COMMAND_PIRATE_PLUNDERSHIPS |
Грабить корабли в секторе... |
Да |
COMMAND_TURRET_KILL_ENEMIES |
Турели уничтожать врагов... |
Да |
COMMAND_TURRET_ATTACK_TARGET |
Турели атаковать мою цель |
Да |
COMMAND_TURRET_MISSILE_DEFENCE |
Турели сбивать ракеты |
Да |
COMMAND_TURRET_PROTECT |
Турели защищать корабль |
Да |
Помимо встроенных команд, в Х2 присутствуют несколько групп команд свободных для использования (Trade, Special, Custom и т.п.). Если аргументом для команды set command выбрать любую из свободных команд из этой группы, то напротив заголовка команда отразится надпись “unknown Command!”, происходит это из-за того, что в основном языковом файле на странице 2010 вообще отсутствует связанный с этой командой текст. Текст связанный с этими командами может быть изменен или добавлен, как это сделать будет рассмотрено далее. Для того, чтобы понять как это все работает давайте рассмотрим небольшой пример.
Пример:
Для рассмотрения примера и проведения следующих экспериментов нам потребуется корабль (желательно медленный), отведите его километров на сто от станций и врат (это для того чтобы нам не мешали другие объекты) и выберите в командном меню «Нет команд». Создадим скрипт:
|
\\команда для объекта на котором выполняется скрипт , показать текст связанный с командой COMMAND_PATROL |
|
\\ так как установка команды set command действует до окончания скрипта в котором она запущена или до другой команды изменяющей установку команды, делаем задержку 10 секунд чтобы успеть посмотреть информационный экран. |
|
\\в этой строке меняем команду для объекта на COMMAND_MOVE_SECTOR |
|
\\ еще одна задержке |
|
\\выход из скрипта |
Этот скрипт после запуска, на десять секунд выводит в информационных экранах напротив пункта «Команда» текст «Патрулировать сектор»,
после меняет текст на «Лететь в сектор...» еще на 10 секунд,
после выхода из скрипта установиться «Нет команд».
Вы обратили внимание на то, что корабль выполняя наш скрипт не двинулся с места, несмотря на то что на информационном экране менялись команды корабля. Это наглядно демонстрирует работу команды set command и проведенный эксперимент доказывает, что данная команда имеет чисто информативное действие. И использовать ее следует для отображения текущих действий выполняемых вашим скриптом.
Еще следует заметить, что если вы установили информативной командой какое либо значение в скрипте и вызвали из него другой скрипт, в котором также производились установки информативных значений, то по возврату значение которое было до вызова скрипта восстановлено не будет, активным останется значение назначенное последней командой set command.
Далее я объясню как можно использовать свободные для использования команды и изменять связанный с ними текст. Для этого мы используем пример из раздела «Языковые файлы XML в Х2» глава «Использование пользовательских языковых файлов при работе с командным меню» воспользуемся созданным там языковым файлом:
<?xml version="1.0" encoding="UTF-8" ?> - <language id="7"> - <page id="2010" title="Script Cmd Names" descr=""> <t id="715">Запуск моего скрипта</t> </page> - <page id="2011" title="Script Cmd Shorts" descr=""> <t id="715">ТЕСТ</t> </page> </language>
|
Этот файл при загрузке (использование в скрипте команды load text: id <языковой файл>), изменит тексты связанные с командой COMMAND_TYPE_CUSTOM_15 на странице 2010 (который также будет отражаться в виде имени пункта в меню, если использовать эту команду при его создании), а на страницу 2011 будет добавлено краткое имя команды. В нашем случае имя этого файла 70005.XML. Теперь посмотрим, что у нас получиться. Для демонстрации напишем небольшой скрипт:
|
|
|
|
Теперь вместо надписи “unknown Command!” на информационном экране в пункте команда будет отражен текст связанный с командой COMMAND_TYPE_CUSTOM_15 со страницы 2010 основного языкового файла «Запуск моего скрипта».
Еще несколько команд из группы «Общие информативные кманды»
set destination - при помощи этой команды устанавливается информационный пункт назначения для объекта выполняющего скрипт. Пунктом назначения может являться любой объект доступный для навигации (сектор, станция, корабль и т.д.).
set target, set target2 – две команды устанавливающие информативные цели. Рассмотрим на примере COMMAND_GET_WARE для этой команды <target> это товар который покупать, <target2> это станция на которой покупать. Например, создадим небольшой скрипт:
001 [THIS] -> set command: COMMAND_GET_WARE 002 [THIS] -> set target: Батареи 003 [THIS] -> set target2: Штаб-квартира ТерраКорп [Home of Light] 004 @ wait 10000 ms 005 return null |
В итоге получаем две дополнительные строки в пункте «Команда»:
Дополнительно в редакторе предусмотрена комплексная информационная команда:
<object> set command: <Object Command> target=<target1> target2=<target2> par1=<Value> par2=<Value>
Эта команда объединяет в себе весь комплекс информационных команд и позволяет установить все необходимые информационные данные при помощи одной строки. А дополнительные параметры par1 и par2 позволяют ввести еще два дополнительных параметра (если они требуются).
Условные информативные команды.
К этому типу команд относятся команды которые будут выводить свои значения на информационном экране при условии что в данный момент выполняется какая либо связанная с ними команда. Отражается он в информационном пункте «Действие». Например, навигационная команда escort ship во время выполнения отразит в пункте действие «Эскорт…<объект>. В примере наш корабль эскортирует корабль «GENRY MORGAN –TS-»
Каждая навигационная команда из подобных escort ship, fly to station, fly to sector и т.д. имеет связанный с ней текст. Текст связанный с этими командами расположен на 14 странице основного языкового файла и ScE обрабатывает их на низком уровне, внести изменения в отражаемые значения при помощи скриптов не получится. Но можно изменить сам текст, изменив его в языковом файле.
Еще к условным командам можно отнести две команды из группы торговых команд set wanted ware count to и set wanted ware to эти команды предназначены для отображения дополнительной информации в меню собственности при работе команд COMMAND_GET_WARE, COMMAND_SELL_WARE или COMMAND_GET_WARE_BEST, COMMAND_SELL_WARE_BEST . Команда set wanted ware to устанавливает какой товар покупает или продает корабль, а команда set wanted ware count to устанавливает информационное значение о количестве приобретаемого или продаваемого товара, в момент загрузки этого товара на борт корабля.
Данные команды поместили свое значение в нижней строке сразу за пунктом «назначение». Команда set wanted ware to поместила значение «Кристаллы», а команда set wanted ware count to значение 24, количество купленных (загруженного на борт) кристаллов.
Команда set attack target устанавливает информационную цель атакуемую текущим объектом. На данную команду накладывается ограничение условных команд, т.е. для активации надписи должна выполняться команда атаки attack run on target активирующая пункт «атаковать» на информационном экране.
Для разбора попробуйте разобрать использование информационных команд в стандартных скриптах таких как !ship.cmd.getware.std, !ship.cmd.sellware.std, !ship.cmd.attack.std и подобных скриптах.
Оглавление | Сообщение об ошибках | Ваше мнение о проекте | E-Mail автору |