Оглавление | Сообщение об ошибках | Ваше мнение о проекте | E-Mail автору |
Вступление
v Что такое – навигационный скрипт?
Вы никогда не задумывались над тем, что происходит в электронном мозгу корабля после того, как вы отдаете ему команду «Вернуться на базу»? Нет ? Так давайте попробуем в этом разобраться.
И так, предположим мы находимся в секторе «Фортуна Елены», а базой приписки нашего корабля является «Ранчо аргну» в секторе «Стена». Из консоли нашего корабля отдаем приказ: «Вернуться на базу». И наблюдаем за происходящим – наш кораблик ложится на курс к западным вратам, набирает скорость и спустя несколько минут мы проходим врата и оказываемся в секторе «Президентский рубеж». Теперь наш путь лежит к северным вратам. Но вот и они позади. Мы долетели до сектора «Стена» войдя в него через южные врата. Именно в этом секторе находится наше «Ранчо аргну». Наш корабль ложится на курс сближения с базой, и движется к ней. Стыковка. Все просто. А теперь представьте, что делали бы вы, если пришлось вести корабль на базу в ручную.
Давайте составим последовательность наших действий:
И так, перед нами список наших действий, этакий сценарий полета к базе. Если мы сравним последовательность наших действий с действиями автопилота, то на лицо тот факт, что мы выполняли практически одинаковую последовательность действий. Получается автопилот действовал по такому же сценарию ? И это совершенно верно, ведь дословный перевод с английского слова script означает «сценарий». Так что запустив в командной консоли нашего корабля команду «Вернуться на базу», мы на самом деле запустили навигационный скрипт (далее НС) выполняющий полет на базу. А проанализировав последовательность своих действий, мы составили нечто иное как схему НС. Для того, чтобы нам полностью понять что же такое скрипт разберемся еще с несколькими понятиями:
¨ Script engine (интерпретатор скриптовых команд), далее в тексте ScE – интерпретатор это сам центр обработки команд, производящий анализ и интерпретацию команд находящихся в теле скрипта и обеспечивающий их исполнение.
¨ Инструкции, функции, операторы – составляющие самого языка скриптописания. Это понятные ScE наборы операторов из которых собственно и состоит скрипт. Подробное изучение нам предстоит далее.
¨ Сегмент – какой либо определенный кусок кода НС.
¨ Процедура – сегмент выполняющий одно какое либо действие. Например процедура проверки наличия денег на счету станции.
¨ Аргумент - входные данные, задаваемые для НС. Именно от аргументов зависит результат выдаваемый скриптом.
¨ Примитив – небольшой скрипт выполняющий как правило одну какую нибудь функцию и возвращающий значение в вызывающий скрипт. Это маленький кирпичик в огромном здании сложного скрипта. Цель примитивов это освобождение тела большого скрипта от часто повторяющихся кусков кода выполняющих одну и туже функцию (например, если в скрипте по мере его выполнения многократно производится сканирование галактики, то во избежание многократного переписывания процедуры сканирования, создается примитив который можно вызвать из основного скрипта и он просканировав галактику вернет основному скрипту результат поиска.
И так теперь мы имеем поверхностное представление о том, что такое – навигационный скрипт. Давайте сформулируем понятие НС.
Навигационный скрипт – это сценарий последовательности действий и реакций объекта на внешние изменения, записанный при помощи команд и инструкций интерпретируемых и исполняемых ScE Х2.
Для того чтобы приступить к изучению скриптописания, следует запостись некоторым набором инструментов, которые значительно облегчат вам эту задачу.
Вам понадобиться:
Это собственно и все, что вам может пригодиться при работе с навигационными скриптами Х2.
В угловые скобки заключены значения не являющиеся постоянными, это значения задаваемые для инструкции пользователем или возвращаемые значения (использование угловых скобок условно, только для описания, в самом скрипте они не используются), текст без скобок является самой инструкцией.
<RetVar/IF> <object>buy <Var/Number> units of <ware>
В данном примере <RetVar/IF> говорит о том, что возвращаемое командой значение может быть присвоено переменной <RetVar>, либо являться аргументом для таких операторов IF, IF NOT, SKIP, SKIP NOT, WIHLE, WHILE NOT. <object> указывает в отношении какого объекта выполняется команда. В данном примере объектом должен быть корабль, а вообще объектом может быть станция, корабль, астероид, планета, туманность и т.п. <Var/Number> сообщает о том, что для команды необходимо указать переменную число, либо ввести число непосредственно в редакторе. <ware> является указателем на какой либо товар, а товаром в "X2 The Threat" может являться все, что можно продать или купить (так же в Х2 имеются <sector> <station> <ship> и т.п. в редакторе все возможные переменные отображаются в виде списка, в некоторых версиях они переведены на русский язык <Перем/Станция>. Например версия НД)
Пример:
…
022 $amount = 100
023 $ware = Батареи
024 $obj = [THIS]
025 IF NOT $obj buy $amount units of $ware
…
Так же, в синтаксисе команд вы можете встретить:
<Value> - значение неопределенного типа. Тут надо смотреть по смыслу, что подставлять. В тексте также будут применяться
<Object Command> - команда объекту. Это константа, выбирается из списка возможных.
<Object Signal> - сигнал объекту. Это тоже константа.
<Flag> - константа флаг.
[TRUE]|[FALSE] – аргументом должна являться константа TRUE или FALSE
v В каком редакторе пишется НС, и где его взять ?
На сегодняшний день написать НС можно только во встроенном в "X2 The Threat" редакторе, это немного не удобно но пока альтернативы нет. Ввод команд в редакторе осуществляется выбором в меню нужной команды, так же вводятся переменные и другие необходимые данные. С клавиатуры вводятся только числовые и текстовые значения, хотя вход в интерфейс для ввода осуществляется также через выбор соответствующего пункта в меню.
Изначально редактор находится в деактивированном состоянии и для его использования нужно провести активацию. Делается это следующим образом:
После того как раздался звуковой сигнал в левом верхнем углу должна появиться полупрозрачная надпись «Modified» (это происходит не во всех версиях игры, в версии от НД этого не происходит). Значок сообщает о том что игра модифицирована. Сделано это в связи с тем, что при помощи НС можно сделать многие вещи, такие как добавить на счет игрока несколько миллионов кредитов (то есть, чистое читерство), а так как значок будет сохранятся после активации редактора во всех сейвах, то это должно сообщить другим игрокам честным ли образом что либо в игре было достигнуто.
Теперь нажимаем Shift-C и оказываемся в командном меню, ищем появившуюся строчку «Редактор скриптов» или нажимаем «S».
В ScE "X2 The Threat" присутствует два типа скриптов, это Глобальные скрипты и Локальные скрипты.
Глобальный скрипт – к глобальным скриптам относятся НС исполняемые без привязки к какому либо объекту (например, скрипты инициализирующие командное меню).
Локальный скрипт – это скрипт запускаемый непосредственно для какого-либо объекта, и существующий только пока существует сам объект.
Оглавление | Сообщение об ошибках | Ваше мнение о проекте | E-Mail автору |