Пишем скрипты для автоматизации работы с приложениями Google. Коды X3: Земной конфликт

Notepad++, Sublime Text 2, а для кого-то и Notepad или Блокнот - удобные и неприхотливые инструменты для написания JavaScript кода. Но в последнее время у них появились достойные конкуренты ни в чем не уступающие по функциональности, а кое в чем и превосходящие их. Онлайн редакторы - позволяют не только создавать скрипты непосредственно в браузере, но и наблюдать вносимые изменения в режиме реального времени .

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

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

JS Bin

Классический представитель своего класса онлайн редакторов . Пять панелей ( , JS, Console и Output) каждая из которых предназначена для своего блока кода (впрочем для экономии места любую из них можно погасить). Вносимые изменения отображаются, соответственно, в панели Output в реальном времени или по требованию. Достаточно широкий набо подключаемых JavaScript библиотек - jQuery, MooTools, AngularJS и др.

Стоимость: бесплатно для открытых проектов, $17 в месяц для приватных.

JSFiddle

Самый, пожалуй, известный, функциональный и в то же время довольно простой онлайн редактор JavaScript . Позволяет подключать различные фреймворки, библиотеки и расширения - например такие инструменты как TidyUp и JSHint для проверки и форматирования кода или плагины для организации совместной работы.

Стоимость: бесплатно

Codenvy

Codenvy это не просто редактор, это полноценная облачная IDE, способная полностью заменить собой традиционные десктопные инструменты для разработки приложений. Рабочие области с интегрированной системой контроля версий , полноценная совместная работа, свобода в выборе использования собственной облачной инфрастуктуры или CodeEnvy. Просто посетите домашнюю страницу CodeEnvy и оцените весь спектр продуктов и решений, предлагаемых этой компанией.

Стоимость: $350 в год, однако для разработчиков opensource-проектов, студентов или частного использования имеются различные тарифные планы более низкой стоимости.

Rendera

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

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

Стоимость: бесплатно

Cloud9

Признаюсь честно - я люблю С9! Мне нравится профессионализм, современность и стильность этой среды. Мне нравится то, что я могу создавать рабочие пространства для различных проектов, будь то Node.js, WordPress, Django, Rails или какие-либо другие. Она действительно облегчает процесс разработки. А для начинающих может быть прекрасным инструментом для обучения.

Стоимость: бесплатно и $19 за премиум-версию

sourceLair

sourceLair заинтересует тех, кто хочет иметь среду разработки с тесной интеграцией с системами контроля версий Git или Mercurial . Поддерживает проекты на Django, PHP, node.js, Flask, подсветку синтаксиса и автодополнение Python и Java, базы данных MySQL, PostgreSQL и MongoDB.

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

Стоимость: от $5 в месяц

Liveweave

Великолепный редактор JavaScript , одновременно поддерживающий и . Очень похож на JSFiddle. Правда обладает чуть меньшим набором библиотек, зато более богатым и функциональным интерфейсом. Есть кнопка отключения «живого» просмотра (ускоряет работу, так как изменения отображаются не сразу, а только по требованию) и встроенный генератор цветовых палитр.

Стоимость: бесплатно

CodePen

Без преувеличения, выдающийся онлайн редактор с просмотром результатов в реальном времени . Кроме того имеет тысячи примеров, демонстрирующих всю мощь этой троицы - HTML, CSS и JavaScript.

Стоимость: бесплатно

kodtest

Интерфейс - другой, возможности - те же. Это про kodtest. По большому счету еще один клон известного редактора JSFiddle. Помимо интерфейса, небольшие отличия в наборе библиотек. Разрабатывается .

Codio

Достаточно мощная среда разработки. Сравнительно новая, но обладающая неплохим потенциалом для того, чтобы доверится ей при разработке достаточно серьезного проекта.
Бесплатная версия доступна только для open-source проектов .

Стоимость: от $15 в месяц

Koding

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

Стоимость: до 4-х пользователей - бесплатно, свыше - $29 за разработчика в месяц (но учтите, что оплата снимается только за активных пользователей)

Code Beautify

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

Стоимость: бесплатно

Codeanywhere

Последняя в нашем обзоре, но далеко не последняя по своим возможностям среда разработки Codeanywhere. Весьма легкая и быстрая, так что вы даже не заметите, что работаете в браузере.

Многофункциональный редактор, возможность синхронизировать файлы проекта через FTP или работа с файлами, находящимися на DropBox или Google Drive и встроенная система контроля версий - вы точно забудете о десктопных IDE!

Стоимость: бесплатно (для одного пользователя) и платные тарифные планы от $2 до $40 в месяц за пользователя.

Заключение

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

Редактор кода - подручный инструмент каждого программиста. И каждый подбирает под себя: кто-то ценит функциональность, кто-то мобильность, для кого-то главное - дизайн и удобство. Кому-то даже нравится писать код в Notepad, но это всё равно, что пытаться построить дом при помощи молотка.

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

WebStorm

WebStorm от JetBrains прекрасен в обоих своих проявлениях: как IDE он поддерживает работу с системами контроля версий, позволяет удалённо развернуть код, как редактор - стандартные удобства, вроде подсветки синтаксиса, автодополнений, навигации.

Преимущества:

  • LiveEdit - просмотр внесённых в код изменений без необходимости его сохранять;
  • взаимодействие с фреймворками, например React, Angular, Meteor;
  • больше сотни встроенных тестов для обнаружения ошибок;
  • интегрирование с Mocha, Protractor, Jest, Karma для юнит-тестов;
  • полномасштабный дебаггер для отладки кода на серверной и клиентской сторонах;
  • навигация для одновременной работы с несколькими файлами;
  • автодополнение кода, подсветка синтаксиса.

Недостатки:

  • стоит 129 $ за первый год работы;
  • для начинающих кодеров функционал избыточен.

Visual Studio Code

Ответвление IDE Visual Studio, направленное на работу с кодом. Он прост для освоения, удобен в использовании, и при этом функционален.

Преимущества:

  • контекстное автодополнение, как синтаксиса, так и используемых переменных, модулей, функций и т. д.;
  • дебаггер с точками останова, стеком вызовов, интерактивной консолью;
  • поддержка сниппетов и шаблонов;
  • интеграция с Git;
  • удобный и простой интерфейс;
  • бесплатный редактор.

Недостатки:

  • мало плагинов.

Sublime Text

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

Преимущества:

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

Недостатки:

  • полная версия стоит 70 $;
  • отсутствие анализатора кода для расстановки ссылок.

Atom Editor

Появившийся в 2015 году редактор кода от Git, копирующий дизайн Sublime Text и обёрнутый в Chromium.

Преимущества:

  • более 50 открытых модулей;
  • удобный и приятный интерфейс;
  • бесплатный;
  • автодополнение и подсветка кода;
  • менеджер пакетов, которых уже более 3,5 тысяч;
  • гибкие настройки редактора, подключаемых пакетов, тем интерфейса;
  • редактирование и навигация при помощи горячих клавиш.

Недостатки:

  • невысокая производительность;
  • пустая комплектация «из коробки».

Brackets

В 2014 году Brackets отпугнул программистов багами и недоработками, но теперь постепенно возвращает доверие новым качественным функционалом.

Преимущества:

  • богатая комплектация «из коробки»;
  • режим Live Preview - предварительный просмотр правок в браузере в режиме реального времени;
  • менеджер пакетов;
  • показ в коде используемых изображений и цветов;
  • автодополнение и подсветка синтаксиса;
  • анализатор кода;
  • бесплатный.

Недостатки:

  • строгая ориентация на веб и HTML+CSS+JavaScript;
  • медленное развитие;
  • низкое быстродействие из-за функций предпросмотра.

Чтобы активировать редактор скриптов необходимо сделать следующее:
1. В боковом меню слева находим раздел "Личные" -- "Дополнительно" -- "Изменить имя"
2. Вводим "Thereshallbewings " точно так как написано здесь (с большой буквы и двумя маленькими буквами "L ", обратите внимание что игра блокирует двойное нажатие клавиши, поэтому необходимо сделать небольшую паузу при наборе)

После этого, если все сделано правильно, имя пилота останется прежним. Для проверки имени повторяем пункт 1.

Для входа в редактор скриптов:
1. жмем [Shift ]+[C ]
2. жмем [S ] или находим строку "Редактор скриптов"
3. [Enter ], пропускаем справочное окно
4. "Редактор скриптов "

После этого появляется окно со списком всех сохраненных скриптов, в котором также можно создать свой собственный.

Создание корабля

После создания данного скрипта вы сможете создавать любое количество кораблей с оружием, щитами и оборудованием всего за несколько секунд. При создании кораблей можно будет выбрать:
  • количество кораблей;
  • класс кораблей;
  • сектор в котором они будут созданы;
  • кому будут принадлежать созданные корабли (врагу, союзнику или игроку).
В списке выбираем «Новый скрипт »
newShip

В разделе «Параметры »:

  1. «Новый параметр number -- в самом низу списка выбираем «Число number of ships (чтобы потом можно было понять что от нас хотят)
  2. «Новый параметр » -- вводим название параметра type -- выбираем «Перем/Тип корабля » - пишем любое описание. Например: type of ships
  3. «Новый параметр owner -- выбираем «Перем/Раса » -- пишем любое описание. Например: owner
  4. «Новый параметр » -- вводим название параметра: position -- выбираем «Перем/Сектор » -- пишем любое описание. Например: position
В разделе «Код »:
  1. «Новая строка » -- «Общие команды » и выбираем строку «Возвр/IF Выражение » -- в разделе «Ввод кода» выбираем while -- while и выбираем number
  2. «Новая строка » -- «Общие команды для объектов » -- «Создание объектов » и находим строку «create ship: type= » -- в разделе «Вводи скрипта» выбираем «Переменная » -- вводим название параметра: ship
  3. «Новая строка » -- «Торговые команды » -- «Для кораблей » и находим строку «add default items to ship » -- в разделе «Доступные переменные» вбираем «ship »
  4. «Новая строка » -- «Общие команды » и выбираем строку «dec ВозврПерем = » -- в разделе «Доступные переменные» выбираем number
  5. «Новая строка » -- «Общие команды » -- «Управление исполнением цикла » и выбираем строку «end conditional »
В разделе «Код » строка create ship: type= :
  • наводим курсор на вопросительный знак возле create ship: type= -- в самом верху в разделе «Доступные переменные» выбираем строку type
  • для owner= выбираем owner
  • для addto= выбираем position
  • для x= / y= / z= выбираем null
Жмем [Esc ] -- «Да » (сохраняем скрипт)
Все. Скрипт готов к использованию.

Должно получится вот это

Примечание: return null

Теперь, для создания кораблей наводим курсор на наш скрипт (newShip ) и жмем [R ](запустить)
Жмем [Enter ][Enter ]

  1. Выбираем «Число » и вводим необходимое количество кораблей
  2. Выбираем «Выбрать тип корабля » -- выбираем класс корабля который хотим получить
  3. Выбираем «Выбрать расу » -- выбираем кому будет принадлежать созданный корабль. Если хотите чтобы корабль принадлежал вам - выбирайте «Игрок »
    • Раса Игрок - это имя вашего главного героя (можно посмотреть в боковом меню слева в разделе «Личные» - «Дополнительно» - «Изменить имя») или Player .
  4. Выбираем «Выбрать сектор » -- выбираем сектор в котором будет создан наш корабль

Создание кораблей с оборудованием

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

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

Для добавления 1 оборудования, щита, ресурса или оружия в разделе Код между строками 003-004 необходимо добавить следующую:

= $ship add количество units of название_оборудования

Разумеется, вместо «количество » необходимо задать количество добавляемого оборудования, а вместо «название_оборудования » - выбрать из списка то, что вы хотите добавить.

Примечания

  • Если вы добавляете оружие и щиты, то они будут добавлены и установлены только в том случаи, если создаваемый корабль может их нести. Если же корабль не может нести класс добавляемого груза - предмет не будет добавлен (установлен).
  • Если добавить такое оборудование как «Форсирования двигателя » и «Оптимизация рулевого управления » в количестве, которое превышает максимально возможное для данного корабля, то созданный корабль будет иметь улучшенную маневренность и максимальную скорость. Однако, данное правило не распространяется на щиты и «Расширение грузового отсека ».
  • При добавлении всего оборудования, кроме «Форсирования двигателя », «Оптимизация рулевого управления » и «Расширение грузового отсека » в качестве количества необходимо указывать 1.
  • Расширить грузовой отсек можно, но не больше максимального значения.
  • Если при добавлении оружия и щитов они не устанавливаются на корабль, а только добавляются в грузовой трюм - используйте вместо add команду install , которая полностью аналогичная предыдущей команде по настройке и находится в том же разделе «Торговые команды».
Теперь, чтобы добавить строку «= $ship add количество units of название_оборудования » делаем следующее:
  • выделите строку 004 и нажмите [Insert ] - добавите пустую строку;
  • нажмите [Enter ] - Торговые команды - ... add ... units of ...- <не возвращает значение>
После этих действий у вас должна появится следующая строка:
  • 004 = add units of
Все три необходимо заполнить. Для этого по очереди наведите курсор на эти знаки и нажмите [Enter ].
  • первый знак - выберите из списка вверху переменную ship
  • второй - внизу списка выберите <Число> и укажите какое количество оборудования вы хотите добавить
  • третий - Выбрать товар - выберите что вы хотите добавить
Теперь у вас должна быть строка следующего вида:
  • 004 = $ship add количество units of название_оборудования
Чтобы каждый раз не проделывать все операции по добавлению этой строки ее можно скопировать:
  • выделите строку 004 ;
  • нажмите на клавиатуре [C ] - скопируйте строку
  • нажмите на клавиатуре [V ] - вставите строку над выделенной
Скопируйте эту строку необходимое количество раз, поменяйте «количество » и «название_оборудования » - заполните список всем, что вы хотите чтобы было у создаваемых кораблей.

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

Уничтожение любой станции или корабля

В списке выбираем «Новый скрипт »
Вводим название нашего скрипта (любое). Например: DELETE
  1. В разделе «Параметры » выбираем «Новый параметр » -- вводим obj -- выбираем «Перем/Корабль/Станция » -- вводим любое описание
  2. В разделе «Код » выбираем «Новая строка » -- «Общие команды для объектов » -- выбираем destruct: show on explosion= -- «Доступные переменные» выбираем obj
  3. Кликаем возле вопросительного знака destruct: show on explosion= -- выбираем null
  4. Жмем [Esc ] -- «Да » (сохраняем скрипт)
Должно получится вот это

Примечание: return null добавляется автоматически при сохранении скрипта и должен быть всегда в самом низу.

Чтобы уничтожить необходимый корабль или станцию:

  1. DELETE ) и жмем [R ] (запустить)
  2. Жмем [Enter ][Enter ]
  3. «Выбрать корабль или станцию » - указываем что уничтожить

Добавление оружия, лазеров, щитов и ресурсов

С помощью данного скрипта можно добавить (поместить в грузовой трюм) на выбранный корабль или станцию необходимое количество:
  • ресурсов (батареек, руды, кремневых дисков и т.д.);
  • оружие, щиты и оборудование;
  • увеличить максимальную скорость и маневренность любого корабля;
  • добавить на свой корабль класса TL станцию для дальнейшей постройки.
В списке выбираем «Новый скрипт »
Вводим название нашего скрипта (любое). Например: addObj

В разделе «Параметры »:

  1. «Новый параметр » -- вводим number -- выбираем «Число » -- пишем любое описание.
  2. «Новый параметр » -- вводим obj -- выбираем «Перем/Все товары » - пишем любое описание.
  3. «Новый параметр » -- вводим target -- выбираем «Перем/Корабль/Станция игрока » -- пишем любое описание.
В разделе «Код »:
  1. «Новая строка » -- «Торговые команды » и выбираем add ... units of -- в разделе «Доступные переменные» вбираем target
В разделе «Код » строка $target=
  1. наводим курсор на вопросительный знак возле $target= -- в разделе «Доступные переменные» выбираем строку target
  2. для add выбираем number
  3. для units of выбираем obj
Жмем [Esc ] -- «Да » (сохраняем скрипт)

Должно получится вот это

Примечание: return null добавляется автоматически при сохранении скрипта и должен быть всегда в самом низу.

Чтобы добавить ресурсы, оружие, броню, щиты или оборудования:

  1. В списке скриптов наводим курсор на наш скрипт (addObj ) и жмем [R ] (запустить)
  2. Жмем [Enter ][Enter ]
  3. «Число » -- вводим количество предметов которое хотим получить
  4. «Выбрать товар » -- выбираем товар/оборудование
  5. «» -- выбираем кода будет помещен груз

Строительство станций 1 (быстро)

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

Чтобы создать собственую станцию необходимо:

  1. С помощью скрипта Создание корабля создать 1 корабль класса TL
  2. Создать скрипт Добавление оружия, лазеров, щитов и ресурсов (инструкция по созданию немного выше)
Чтобы получить станцию:
  1. В списке скриптов наводим курсор на скрипт «Добавления оружия, лазеров, щитов и ресурсов» (addObj) и жмем [R ] (запустить)
  2. Жмем [Enter ][Enter ]
  3. «Число » -- вводим количество станций которое хотим получить
  4. «Выбрать тип станции » -- выбираем станцию
  5. «Выбрать корабль или станцию игрока » -- выбираем корабль класса TL

Строительство станций 2 (больше возможностей)

Данный метод создания станция в первую очередь предназначен для постройки станций других рас. Возможности данного скрипта без необходимости изменения кода:
  • выбор типа станции;
  • выбор сектора и положения станции;
  • выбор расы владельца.
Примечания:
  • все созданные с помощью данного скрипта станции будут иметь максимальное количество всех необходимых для производства ресурсов;
  • при строительстве станций и выборе любой расы, кроме «Игрок/Player», станция будет управляться NPC;
  • все созданные станции NPC будут автоматически изменять стоимость покупки сырья и продажи товаров в зависимости от их количества, то есть точно также как и другие «стандартные» станции;
  • «Оружейные доки», «Торговые станции» и «Корабельные верфи» создаются пустыми, без ресурсов, товаров и оборудования.
Прежде чем приступать к самому скрипту постройки станции хочу заметить, что совсем не обязательно писать скрипт полностью, но в таком случаи он будет лишен некоторых функций. Для создания станции и функционирования скрипта обязательно должны присутствовать все строки в диапазоне 001-006 и раздел «Параметры», а все другие можете добавляйте на свое усмотрение.

Какие строчки кода за что отвечают:

  • 001-003 - определение координат x/y/z из указанной на карте точке;
  • 004 - определение сектора в котором будет создана станция;
  • 006 - создание станции;
  • 007 - добавление стандартного набора продукции, ресурсов и щитов для данного типа станции;
  • 008, 009 - полное восстановление щитов (100%);
  • 010 - запуск станции (без этой строки станция не будет производить товар);
  • 011 - добавление на счет станции 10 000 000 кредитов (не рекомендуется удалять эту строку, если вы создаете станцию NPC);
  • 013-023 - добавление максимального количества ресурсов на станцию;
  • 018, 019, 022 - если удалить все эти сточки, то станция получит не только все необходимые для производства ресурсы, но и сам товар в максимально возможном количестве.

Код :

  • 001-004, 017 <Возвр/IF><Перем/Массив>[<Перем/Число>]
  • 006 -- «Создание объектов»
  • 007, 013, 018, 020 - «Торговые команды» -- «для станций»
  • 008, 009, 010 - «Общие команды для объектов»
  • 011 - «Торговые команды» -- «для кораблей и станций»
  • 014
  • 015 - «Общие команды» -- <Возвр/IF><Выражение> -- while
  • 016 - «Общие команды» -- dec <ВозврПерем> =
  • 019 - «Общие команды» -- <Возвр/IF><Выражение> -- if
  • 021 - «Торговые команды»
  • 022
Запуск скрипта
  1. Выделите созданный скрипт постройки станций в списке.
  2. Нажмите [R]
  3. «Выбрать тип станции».
  4. «Выбрать расу» - укажите расу-владельца станции.
  5. «Выбрать положение сектора». Выбираем необходимый сектор и переходим на цифровую клавиатуру. С помощью клавиш перемещения (2,4,6,8) на цифровой клавиатуре и клавиши смены плоскости (Insert) укажите, где именно вы ходите построить станцию и нажмите .
После этого произойдет постройка станции.

Неуязвимый корабль, станция

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

Раздел Параметры должен выглядеть следующим образом:
Параметр 1: obj, Перем/Корабль/Станция игрока, "[описание]"

Раздел Код :
001 $obj-> ignore collisions: 1

ignore collisions ищем в разделе «Общие команды для объектов » (почти в самом низу).

ignore collisions: 1 - включить неуязвимость
ignore collisions: 0 - отключить неуязвимость

После применения этого скрипта к кораблю сможете пролетать сквозь все объекты, включая вражеские лазеры.

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

Bind скриптов на горячие клавиши

Для привязки скриптов к горячим клавишам вам предварительно потребуется создать сам скрипт для бинду. То есть, у вас должен быть готовый скрипт, который вы хотите вызывать нажатием клавиши на клавиатуре.

Теперь небольшое, но очень важное примечание к вызываемому скрипту, тому, который будет исполнятся каждый раз при нажатии горячей клавиши. В вызываемом скрипте не должно быть никаких динамических переменных таких как: выбор типа корабля, количества, расы и т.д. То есть, в разделе Параметры не должно быть ничего. Скрипт, при каждом вызове, не должен делать разные вещи, не должен быть динамичным. Если же в разделе Параметры у вас есть какие-то переменные, то они будут проигнорированы и скрипт, при нажатии горячей клавиши, работать не будет.

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

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

Раздел Код :
001 $bind-> register hotkey " [Описание клавиши]" to call script " [название скрипта]"

  • register hotkey - ищите в разделе «Общие команды ».
  • описание клавиши - здесь пишите что хотите. Это описание будет отображаться при назначении горячей клавиши для скрипта.
  • название скрипта - наведите курсор на вопросительный знак -- нажмите [Enter ] и выберите созданный вами скрипт, который необходимо вызывать с помощью горячей клавиши.
После создания этого скрипта в списке скриптов наведите на него курсор и нажмите [R ][Enter ][Enter ]. После этого переходим в главное меню (слева) -- Управление -- переходим на вкладку Интерфейс -- в разделе Дополнительно (самом низу) ищем строку, которую вы задали как описание клавиши и назначаем любую не занятую клавишу. Теперь, если нажмете на заданную клавишу - произойдет выполнение скрипта.

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

Примечание. Чтобы забиндить несколько скриптов на клавиши создайте такое же количество скриптов для бинду. 1 клавиша - 1 скрипт.

Мгновенное восстановление энергии лазеров и щитов

С помощью этого скрипта вы сможете мгновенно восстановить всю энергию лазеров и щитов нажатием всего одной клавиши.

Параметры оставляем пустым.

Раздел Код :
001 $laser= -> get maximum laser strength
002 -> set laser energy to $laser
003 $shield= -> get maximum shield strength
004 -> set current shield strength to $shield

Где искать необходимые строчки кода:

  • get maximum laser strength - в разделе «Общие команды для объектов»
  • set laser energy to - «Общие команды для объектов» -- «Информация об оружии»
  • get maximum shield strength - «Общие команды для объектов»
  • set current shield strength to - «Общие команды для объектов»
Что делает каждая из написанных строчек скрипта:
  • 001 - узнаем максимально возможное количество энергии лазеров для текущего корабля игрока и записываем это значение в переменную $laser
  • 002 - задаем нашему кораблю количество энергии лазеров в $laser единиц.
  • 003 - узнаем максимально возможное количество энергии щитов для текущего корабля игрока и записываем это значение в переменную $shield
  • 004 - задаем нашему кораблю количество энергии щитов в $shield единиц.
Теперь, чтобы этот скрипт «повесить» на одну из клавиш клавиатуры сделайте следующее:
  1. [название скрипта] выберите из списка скрипт восстанавливающий энергию лазеров и щитов, который только что создали;
  2. сохраните игру.

Создание врат

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

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

Для создания каждой новой пары врат вам понадобится не более 30 секунд времени - установка врат очень проста и не требует каких-то дополнительных знаний из области скриптов.

aGate (название не имеет никакого значения, можете ввести любое).

А теперь смотрим на скриншот ниже и заполняем разделы Параметры и Код . Все должно быть точно так как на скриншоте, по-другому скрипт не заработает. Пустые строчки не обязательны. Последняя строчка 020 return null

Где искать необходимые строчки кода из раздела Код :

  • строки 001-007, 009, 013 - «Общие команды» -- «Массивы» -- <Возвр/IF><Перем/Массив>[<Перем/Число>]
  • 010, 011, 014, 015
  • 017, 019
Примечание. Все что начинается со знака доллара ($) - это переменные. Если их нет в списке - выберите пункт <Переменная> и введите имя переменной, точно такое же как на скриншоте.

Чтобы запустить скрипт создания врат сделайте следующее:

  1. В списке скриптов наведите курсор на созданный скрипт (aGate ) и нажмите [R ][Enter ][Enter ].
  2. «Выбрать положение сектора » -- выберите сектор и нажмите [Enter ] -- используя клавиши на цифровой клавиатуре 2/4/6/8 и клавишу [Insert ] (для переключения плоскости карты) укажите место для размещения первых врат и нажмите [Enter ].
  3. Повторите предыдущий пункт, чтобы выбрать сектор и размещение для вторых врат.
Врата созданы. Теперь вы и все другие корабли могут их использовать для перемещения.

Примечания:

  • в одном секторе можно создать неограниченное количество врат;
  • все созданные врата «смотрят» на юг и повернуть их нельзя никак (можно повернуть любой объект, но только не врата);
  • если вы создали несколько врат в одном и том же секторе, то все корабли будут прилетать из последних созданных врат, а все другие будут использоваться только для отправления (это можно исправить, но код увеличится в несколько раз);
  • при создании нескольких врат в одном секторе сделайте между ними большое расстояние (минимум 10 км.), чтобы не было столкновений между кораблями.
Удаление созданных врат
Этот скрипт предназначен для удаления пары врат . При удалении одних врат другие будут удалены автоматически.

Параметры :

  • Параметр 1: $obj, Перем/Врата , "любое описание"
Код :
  • 001 $obj -> destruct: show on explosion= 1
Строку destruct: show on explosion ищите в разделе «Общие параметры для объектов».

Запустите скрипт и выберите одни из врат для удаления. Вторые врата, которые связаны с первыми, удалятся автоматически.

Внимание! При удалении стандартных врат последствия могут быть непредсказуемыми. Восстановить (создать) стандартные намного сложнее и сделать это с помощью написанного выше скрипта вам не удастся.

Абордаж горячей клавишей

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

Создаем новый скрипт с названием aBoarding или любым другим. Смотрим на скриншот ниже и заполняем раздел Код .

Примечания к созданию скрипта.

  • Раздел Параметры должен быть пустым (как на скриншоте ниже).
  • Все должно быть точно так как на скриншоте, по-другому скрипт не заработает.
  • Пустые строчки не обязательны.
  • Последняя строчка return null будет добавленная автоматически после сохранения скрипта.
  • Все строки в диапазоне от 004 до 016 - не обязательны и предназначены только для увеличения максимальной скорости всех десантников с 28 до 308 м/с. Если вас устраивает стандартная скорость десантников (28 м/с) и вы не хотите ее увеличивать - не добавляйте эти строки во время создания скрипта.

Где искать необходимые строчки кода из раздела Код :

  • 001 - «Команды автопилота»
  • 002 - «Торговые команды» -- «Пассажиры»
  • 003 - «Команды автопилота»
  • 005 - комментарий, никак не влияет на скрипт
  • 006 - «Общие команды для объектов»
  • 007 - «Команды секторов и Галактики»
    • class or type= - в разделе «Ввод скрипта» выберите «Выбрать класс объекта» -- Астронавт
    • flags= - в разделе «Константы» выберите «Выбрать константу» -- Find.Multiple
  • 009 - «Общие команды» -- «Массивы»
  • 010 - «Общие команды» -- <Возвр/IF><Выражение> -- while
  • 011 - «Общие команды» -- dec <ВозврПерем> =
  • 012 - «Общие команды» -- «Массивы» -- <Возвр/IF><Перем/Массив>[<Перем/Число>]
  • 013 - «Торговые команды» -- <Возвр/IF><РефрерОбъекта> instal <Перем/Число> units of <Перем/Товар> -- в разделе «Ввод скрипта» выберите <не возвращает значение>
  • 014 - «Общие команды для объектов»
  • 015 - «Общие команды» -- «Управление исполнением цикла» -- end conditional
Чтобы этот скрипт «повесить» на одну из клавиш клавиатуры сделайте следующее:
  1. создайте новый скрипт по инструкции «Bind скриптов на горячие клавиши »;
  2. во время создания этого скрипта вместо [название скрипта] выберите из списка скрипт aBoarding , который только что создали;
  3. запустите созданный скрипт привязки клавиш;
  4. назначите клавишу для скрипта восстановления;
  5. сохраните игру.

Добавление десантников в X3: Земной конфликт

Данный скрипт X3: Земной конфликт добавляет на ваш корабль десантников разного уровня прокачки навыков , но поменяв всего одно значение в скрипте, вы сможете прокачать всех десантников до максимально возможного уровня по всем специализациям.

Количество создаваемых десантников зависит количества свободного места под десантников. К примеру, если в вашем корабле уже есть 3 десантника из 8 возможных, то будет создано еще 5.

Так как этот скрипт не имеет Параметров , то его можно повесить на горячую клавишу. Как это сделать почитайте в разделе «Bind скриптов на горячие клавиши ».

Создаем новый скрипт с произвольным названием. Смотрим на скриншот ниже и заполняем разделы Код . Все должно быть точно так как на скриншоте, по-другому скрипт не заработает. Последняя строчка return null будет добавленная автоматически после сохранения скрипта.


Где искать необходимые строчки кода из раздела Код :

  • 1 - Торговые команды -- Пассажиры
  • 2 - Общие команды -- <Возвр/IF><Выражение> -- while
  • 4-5 - Общие команды -- <Возвр/IF><Выражение> -- <Переменная>
  • 7-10 - Общие команды
  • 12
    • Если значение параметров name , race , voice и face установлено в null , то все десантники будут иметь произвольное имя, расу, голос и внешний вид . Устанавливать в null можно не все сразу параметры, а только те, которые вам надо. К примеру, если вы хотите указать определенную расу десантников, но не хотите чтобы у всех были одинаковые имена, то вам необходимо значение параметра name установить в null и выбрать расу для параметра race
    • name= - имя создаваемых десантников. Можете вводить что угодно.
    • race= - раса десантников. Указывайте любую, но имейте введу, что некоторые расы не пойдут на абордаж корабля другой или своей расы.
  • 13 - Торговые команды» -- Пассажиры
  • 15 - Общие команды -- dec <ВозврПерем> =
  • 16 - Общие команды -- Управление исполнением цикла -- end conditional
Скрипт готов к использованию. Если хотите забиндить этот скрипт на горячую клавишу - создайте еще один скрипт следую инструкции написанной в разделе «Bind скриптов на горячие клавиши ».

Максимальный уровень прокачки всех навыков десантников

После того как вы написали скрипт X3: Земной конфликт для прокачки десантников, вы должны убедиться, что он работает корректно (это можно сделать только на корабле, который может перевозить десантников и который имеет свободные места для десантников). Если все работает корректно и вы хотите получать только самых лучших специалистов, то есть тех, у которых все умения прокачаны на 100, то вам необходимо в строке 004 поменять число с 1 на 101 : (004 $min= 101 ). После этого все создаваемые десантники будут иметь уровень прокачки всех навыков равен 100, то есть максимально возможный уровень прокачки.

Изменение репутации с другими расами

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

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


Примечание: строку 001 из раздела Код ищите в разделе Общие команды для объектов.

После завершения написания скрипта и его сохранения, для того, чтобы его запустить сделайте следующее:

  1. Выделите скрипт в списке скриптов и нажмите [R ][Enter ][Enter ]
  2. Выбрать расу - выберите из списка ту расу, репутацию с которой вы хотите изменить и нажмите [Enter ].
  3. <Число> - введите количество очков репутации (таблица ниже) и нажмите [Enter ].
После этих действий репутация с выбранной расой измениться на ту, что вы указали в виде числа очков из таблицы.
рейтинг очки (для скрипта)
-5 -1 000 000
-4 -100 000
-3 -10 000
-2 -1 000
-1 -100
0 -10
+1 10
+2 33
+3 100
+4 333
+5 1 000
+6 3 333
+7 10 000
+8 33 333
+9 100 000
+10 333 333 333

Примечания к таблице:
  • все данные в таблице приблизительные;
  • пробелов в числе при вводе быть не должно;
  • количество очков для всех рас одинаково.

Как поссорить 2 расы

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

После запуска этого сприпта указанные расы станут врагами и начнут атаковать корабли и станции друг друга.

Создайте новый скрипт.


После запуска скрипты выберите 2 расы, между которыми должны начаться военные действия или которые должны заключить перемирие, и введите число. В качестве числа укажите какое-то число из таблицы:

  • положительное число - перемирие;
  • отрицательное число - война.

Открытие всех секторов, станций и астероидов

Данный скрипт открывает все присутствующие в игре сектора, станции и астероиды. Астероиды только открываются, но не сканируются на наличие минерborder-collapse:collapse;text-align:right;алов.

Создаем новый скрипт с произвольным названием. Раздел Параметры оставляем пустым. Смотрим на скриншот ниже и заполняем раздел Код .

Где искать необходимые строчки кода из раздела Код :

  • 001, 003, 005, 009 - «Команды секторов и Галактики»
  • 002, 004, 006, 011 - «Общие команды» -- <Возвр/IF><Выражение>
  • 007, 014 - «Общие команды для объектов»
  • 010 - «Общие команды» -- «Массивы»
  • 012, 018, 020 - «Общие команды» -- dec <ВозврПерем> =
  • 013 - «Общие команды» -- «Массивы» -- <Возвр/IF><Перем/Массив>[<Перем/Число>]
  • 015, 017, 019, 021 - «Общие команды» -- «Управление исполнением цикла» -- end conditional
Скрипт готов. После запуска скрипта у вас откроется вся карта вместе со всеми станциями и астероидами.

Создание астероидов

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

Создаем новый скрипт с произвольным названием. Все должно быть точно так, как на скриншоте ниже - по-другому скрипт на создание астероидов не заработает.

Так как в разделе Параметры ничего сложного нет и вы быстро найдете все необходимые строчки, то я сразу перейду к разделу Код . И так, где искать необходимые строчки кода из этого раздела:

  • 001-004 - «Общие команды» -- «Массивы» -- <Возвр/IF><Перем/Массив>[<Перем/Число>]
  • 006 - «Общие команды для объектов» -- «Создание объектов»
  • 007 - «Общие команды для объектов»
Вот и все. Теперь у вас есть скрипт создания астероидов. Однако, чтобы его корректно запустить вам необходимо правильно ввести все данные.

Для создания астероидов:

  • В списке скриптов наводим курсор на скрипт «Создание астероидов» (aCreateAsteroid ) и жмем [R ] (запустить).
  • Жмем [Enter ][Enter ].
  • «Выбрать положение сектора » . Выбираем необходимый сектор и переходим на цифровую клавиатуру. С помощью клавиш перемещения (2,4,6,8) на цифровой клавиатуре и клавиши смены плоскости (Insert) укажите где именно вы ходите создать астероид и нажмите [Enter ].
  • «Число » -- минерал:
    • 0 - руда
    • 1 - кремний
    • 2 - нивидиум
    • 3 - лед
  • «Число » -- насыщенность. Чем больше, тем быстрее будет добиваться минерал.
После этого произойдет создание астероида с указанными характеристиками. Созданный астероид будет сразу же просканирован.

Скрипт создания облака астероидов

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

И так, как же все происходит что на что способен этот скрипт. После запуска скрипта вас попросят выбрать начальную точку создания астероидов. После этого необходимо будет ввести количество астероидов по координатах X, Y и Z. После чего необходимо ввести последний параметр - расстояние в километрах между астероидами. После завершения ввода этих данных будет создано облако астероидов соответствующей формы. Если, к примеру, вы введете количество астероидов по каждой оси 3 и зададите небольшое расстояние между ними, то есть как бы создавая куб из 27 (3х3х3) астероидов, то на самом деле вы визуально не увидите никакого куба - все они будут хаотически разбросаны и будут напоминать больше облако астероидов, чем куб, то есть происходит смещение по всех трех координатах для каждого созданного астероида.

Относительно коллизий, когда один объект сталкивается с другим, а в нашем случаи когда один астероид частично перекрывает другой. Все созданные скриптом астероиды не будут касаться или перекрывать друг друга, но могут достаточно близко находится (минимальное расстояние можно изменить задав другие размеры астероида в самом скрипте, 013 строка) - все это было учтено при написании скрипта изначально. Но вам необходимо учитывать то, что эти астероиды могут перекрывать уже присутствующие во вселенной объекты - создавайте астероидные поля только на свободном от других объектов местах и не забывайте сохранять игру перед каждым запуском этого скрипта.

Несколько замечаний

  • Тип астероида генерируется произвольным образом, то есть или рудный или обычный. Это можно изменить в строке создания астероида (039) указав вместо $resource число от 0 до 3:
    • 0 - руда
    • 1 - кремний
    • 2 - нивидиум
    • 3 - лед
  • Насыщенность генерируется случайным образом от 10 до 80. Можно изменить в строке 029 или заменив $intensity в строке 039 на необходимое число.
  • После создания астероид будет автоматически просканирован. Для отключения сканирования в конце строки 040 замените 1 на 0.

Примечание: Если размеры экрана монитора у вас небольшие и скриншот с кодом скрипта целиком не помещается на странице, то есть от слишком маленький - кликните по нему правой клавишей мыши и выберите пункт «Открыть в новой вкладке или окне».

Где искать строки из раздела Код :

  • 1-4 - Общие команды - Массивы - <Возвр/IF> <Перем/Массив> [ <Перем/Число> ] - Вводим (<Переменная>) или выбираем (в разделе Доступные переменные) название переменной.
  • 6-16, 18, 21, 23, 25, 35-37, 43, 45 - Общие команды - <Возвр/IF> <Выражение> - Выбираем строку <Переменная> и вводим название переменной, если в начале строки должна быть переменная или выбираем один из операторов (if, while)
  • 17 (else) - Общие команды - Управление исполнением цикла - else
  • 19, 42, 44, 46 (end) - Общие команды - Управление исполнением цикла - end conditional
  • 22, 24, 26 - Общие команды - dec <Возвр/Перем> =
  • 28, 31-33 - Общие команды - <Возвр/IF> random value from 0 to <Перем/Число> - 1
  • 29 - Общие команды - <Возвр/Перем> = random value from <Перем/Число> to <Перем/Число> - 1
  • 39 - Общие команды для объектов - Создание объектов - <Возвр/Перем> = create asteroid...
  • 40 - Общие команды для объектов - <РеферОбъект> set asteroid scanned to <Перем/Число>
  • 47 (return null) - добавлять не обязательно. Она будет добавлена автоматически во время сохранения скрипта.
Сам процесс создания и запуска скрипта описывать не буду потому как он практически полностью описан в предыдущем разделе, но если возникнут какие-то трудности - пишите в комментариях.

Прекращение боевых действий с указанным кораблем или станцией

Данный скрипт будет работать только в том случаи, если у вас положительные отношения с расой, но по каким-то обстоятельствам корабль или станция этой расы к вам враждебна.

Принцип работы скрипта:

  • Первая строка в разделе Параметры - получаем ссылку на объект, военные действия с которым хотим прекратить и записываем ее в переменную $obj .
  • 001 - определяем расу-владелец указанного объекта и записываем ее в переменную $race .
  • 002 - делаем себя владельцем указанного объекта.
  • 003 - возвращаем права на объект предыдущему владельцу.
Так как скрипт очень простой и маленький выкладывать к нему скриншот я не буду.

Раздел Параметры :

  • Параметр 1: $obj, Перем/Корабль/Станция, "obj"
Раздел Код :
  • 001 &race = $obj -> get owner race
  • 002 $obj -> set owner race to Player
  • 003 $obj -> set owner race to $race
Все строки из раздела Код вы найдете в разделе «Общие команды для объектов».

Внимание! После применения этого скрипта могут быть непредсказуемые последствия, особенно если этот объект связан с каким-то квестом, однако во время тестирования ничего подобного выявлено не было.

Автоматический ремонт кораблей внутри ангара

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

Как все это работает? К примеру, у вас есть корабль (один или несколько) класса М1 в ангаре которого есть другие корабли (М3, М4, М5 и т.д.) с разной степенью повреждения корпуса. Все корабли, которые находятся в ангаре корабля М1, будут непрерывно восстанавливать свой корпус (обшивку корабля), то есть производить «ручной ремонт», можно так сказать.

Примечания:

  • ремонт кораблей происходит непрерывно, все корабли в ангаре каждую игровую минуту времени (значение можно изменить) восстанавливают 1% обшивки корпуса (значение можно изменить);
  • класс корабля-носителя, который имеет ангар и внутри которого будет осуществляться ремонт, не имеет значения;
  • ремонт кораблей осуществляется только внутри корабля-носителя игрока;
  • после первого запуска скрипта ремонт будет происходить непрерывно на всех кораблях имеющих ангар и корабли внутри, но только на кораблях игрока;
  • для работы скрипта никакие ресурсы (батареи, кредиты и прочее) не нужны;
  • действие этого скрипта не распространяется на корабли NPC, так как это создало бы слишком большую нагрузку на центральный процессор (CPU), что впоследствии могло бы привести к зависанию игры.
Остановка выполнения скрипта:
  1. заходим в редактор скриптов ([Shift ] + [C ], [S ]);
  2. находим пункт меню Global Script Tasks - список всех действующих на данный момент скриптов;
  3. находим наш скрипт по названию (aRepairSmallShip );
  4. выделяем строку с названием скрипта и жмем [Del ] - скрипт остановлен.
Если все сделано верно, то скрипт исчезнет из списка в этом разделе.

Внимание! Перед повторным запуском скрипта необходимо обязательном порядке остановить выполнения текущего. Если этого не сделать, то один и тот же скрипт будет запущен 2 и более раза.

  1. Создать 1 корабль класса М1 или любой другой, который имеет ангар.
  2. Создать несколько кораблей, которые могут стыковаться с М1 кораблем и сбить этим маленьким кораблям немного обшивки корпуса.
  3. Приказать залететь в ангар корабля М1.
  4. Подождать пока все корабли окажутся в ангаре.
  5. Сохранить игру (новое сохранение).
  6. Приступить к написанию скрипта.
После написания и перед запуском скрипта закомментируйте строки 007 и 031 , чтобы скрипт не работал все время и не останавливать его в случаи нахождения ошибки. Если в ходе проверки скрипта все заработает как надо - раскомментируйте строки 007 и 031 . После этого запустите скрипт еще раз и сохраните игру. После этих действий ваш скрипт будет все время работать и ремонтировать все корабли внутри ангара ваших кораблей.

[> ] - закомментировать строку
[< ] - раскомментировать строку

Работа по созданию скриптов в Maya производится в редакторе сценариев Script Editor. Его можно открыть двумя способами. Вы можете открыть его через меню Window / General Editors / Script Editor (редактор сценариев). Или, если у вас в интерфейсе включена командная строка, которая расположена снизу и называется MEL, вы можете перейти к ней и найти там в правом нижнем углу кнопку, которая открывает Script Editor. Неважно, каким способом вы будете его открывать, посмотрим на то, как он выглядит. В этом окне есть три основных раздела.

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

Прочитаем эти записи: мы выбрали стул, передвинули его, затем отменили действие. Эта функция может быть очень важной, так как она позволяет записывать произведенные команды. Другими словами, это позволяет создавать макросы, что мы и сделаем в окне, расположенном ниже. Обратите на него внимание, это базовая вкладка интерфейса, которая позволяет печатать скрипты. Эта область может иметь закладки MEL-скрипт или Python-скрипт. И если мы нажмем правой кнопкой мышки на это окно, мы сможем создать новую вкладку, например, я создал вкладку MEL. Как вы видите, теперь у нас есть две вкладки скриптов MEL. Если я кликну правой кнопкой мыши здесь еще раз, то смогу также создать еще одну вкладку для Python.

В рамках этого курса мы не будем работать над скриптингом в Phyton, поэтому можем удалить эту вкладку. Для этого кликнем правой кнопкой мыши здесь, далее выбираем Delete (удалить) / Current Tab (текущая вкладка). Теперь вы знаете, как можно создавать и удалять вкладки для разных скриптов, так что вы можете иметь скрипты в каждой вкладке и просто переключаться между ними. В самом верху у нас есть панель со стандартными инструментами. Один из них load script используется для загрузки скриптов, иными словами, чтобы загрузить скрипт с диска. Другой называется Sourse Script, который мы будем использовать чуть позже.

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

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

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

Часть 1. Общие данные.

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

Для того, чтобы активировать Редактор скриптов, нужно вместо имени пилота ввести Thereshallbewings (T - заглавная буква, остальные строчные; обратите внимание на двойную "l" (эль); Вы не должны быть пристыкованы к станции). Если Вы все ввели правильно, то игра должна чуть-чуть подвиснуть, а имя пилота должно остаться прежним.

Редактор скриптов (далее ScE (от Script Editor)) будет доступен в меню каждого корабля/станции, а также в "Общих командах". Есть небольшая разница в месте, откуда его запускать. Из "Общих команд" он запускается штатно, а при запуске, например, из командного меню корабля, редактор позволяет отлаживать локальные скрипты, запускаемые на этом корабле.

Часть 2. Пункты меню.

При первом запуске Вам ознакомят с возможными рисками, а также списком горячих клавиш (которые действительно ой как нужны и крайне полезны).

Script Task Statistics - статистика по всем скриптам, когда либо запущенным за данную игру, ничего особо полезного.
Редактор скриптов - при выборе данного пункта меню, Вы перейдете к списку скриптов, а также сможете создать новый (а Вы думали что-то иное? :).

Reinit Script Caches - перезагрузить кэш скриптов. Для более быстрой работы скрипты помещаются в кэш, поэтому обычно необходимо жмякать по этой кнопке, если Вы модифицировали какой-либо локальный скрипт. Примечание: изменения не будут применены к уже запущенным скриптам, пока они не будут запущены заново.

Script Debugging: <Объект> - инструмент для отладки локальных скриптов. Объект, локальные скрипты которого будут отлаживаться, зависит от того, через меню какого корабля/станции в этот раз был запущен редактор скриптов (чуть выше я писал об этом). Переключатель может быть в трех состояниях:

  • Off - отладка выключена.
  • Log - вся последовательность действий (исполняемых команд) будет записана логом. Картинка .
  • Trace - отладка "на лету", т.е. пошаговая (прежде чем исполнить следующую команду, будет запрошено разрешение; также в этом режиме указаны текущие (на момент исполнения каждой команды) значения всех локальных переменных). Картинка .

    Script Name – имя скрипта, команда которого была выполнена в данной строке.
    Line – номер строки в скрипте Script Name.
    Stackdepth – глубина стек в котором выполняется задача (количество скриптов в стеке отсчет ведется с 0)
    Prio – приоритет выполняемого скрипта
    PID – глобальный идентификатор задачи
    TaskID – Идентификатор задачи
    Command – исходный текст команды

    Script Debugging: Additional Information - отвечает за отображение доп. информации (отношение к расам, запущенные локальные скрипты) в инфо о корабле/станции. Два положения выключателя - on и off.

    Clear Debug Messages - очистить лог отладки (см. Script Debugging).

    Script Debugger Menu - или лог, или пошаговая отладка (см. Script Debugging).

    Global Script Task - список исполняющихся глобальных скриптов. Вооружившись кнопкой Delete, можно смотреть на глобальные скрипты, как на... ну вы понЕли.

    Помощь - без комментариев.

    Часть 3. Среда разработки.

    Итак, открыв Редактор скриптов и выбрав пункт <Новый скрипт> Вы попадете непосредственно в место, где можете начать творить. Вот как в целом выглядит встроенный интерфейс создания/редактирования скриптов:

    Пойдем по порядку.

    1. Первый блок очевиден и, я считаю, не требует комментариев.

    2. Блок "Параметры". Зачем он нужен? Представим, что у нас есть стиральная машина. Чтобы её правильно запустить требуется ввести правильные данные, в зависимости от вещей, которые Вы в неё загрузили, так как сама она понятия не имеет, что Вы туда загрузили и загрузили ли вообще. Тип белья, время стирки, дополнительные функции - это и есть эти самые "параметры", если стиральная машина - это исполняемый скрипт, а бельё - это то, с чем мы будем взаимодействовать. Есть скрипты, которым не требуются какие-либо параметры. Обычно они запускаются единожды и носят статус глобальных, но есть и исключения. Например, команда "Ожидать", когда корабль просто слоняется по сектору, в котором была отдана эта команда.
    Максимальное кол-во параметров в скрипте неограниченно, как и кол-во переменных. Параметры задаются, когда запускается скрипт и записываются в заданные Вами переменные. Если во время ввода параметра, Вы нажмете Escape, то ввод параметра будет прекращен, в переменную вернется null, а Вы перейдете к вводу следующего параметра.
    Обратите внимание на то, что если скрипт не подразумевает ручного ввода параметров, и параметров больше пяти (почему именно 5 - узнаете дальше), то рекомендуется передавать значения с помощью массива. Или нескольких массивов, чтобы было удобнее:)

    3. Блок "Код". Это место, где Вы начинаете Творить. Да, именно творить, ведь скрипты - это в первую очередь произведения искусства:)
    Любым скриптам доступно использование любых команд, за исключением команд вызова других скриптов при кое-каких условиях (но об этом опять же потом). Описание всех команд будет изложено позже, а также будут расписаны некоторые аспекты их исполнения.

    Часть 4. Типы переменных.

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

    Тип переменной Описание
    DATATYP_NULL То, что изначально содержит незаданная переменная - "null".
    DATATYP_UNKNOWN Неизвестный ScE тип данных.
    DATATYP_VAR В переменной содержится переменная ссылка на другую переменную (зачастую - на массив).
    DATATYP_CONST Константа.
    DATATYP_INT Какое-либо целочисленное значение.
    DATATYP_STRING Какой-либо текст, набор символов, цифр.
    DATATYP_SHIP Переменная-ссылка на корабль вместе с его свойствами (см. выше).
    DATATYP_STATION Аналогично тому, что выше, только вместо корабля - станция.
    DATATYP_SECTOR Переменная-ссылка на сектор.
    DATATYP_WARE Переменная-ссылка на какой-либо тип товара.
    DATATYP_RACE Какая-либо раса.
    DATATYP_STATIONSERIAL Серийный номер станции. Греческий алфавит от Альфа до Омега.
    DATATYP_OBJCLASS .
    DATATYP_TRANSPORTCLASS Класс груза. От S до ST.
    DATATYP_RELATION Отношение. Враг, нейтрал, друг.
    DATATYP_OP ???
    DATATYP_EXPR Логическое выражение, принимающее либо истину, либо ложь.
    DATATYP_OBJECT Ссылка на какой-либо объект. Используется для таких объектов, как, например, астероид.
    DATATYP_OBJCOMMAND Команда/Сигнал объекту (объект - корабль или станция).
    DATATYP_FLRET Семейство FLRET. Более подробно будет расписано позже.
    DATATYP_DATATYP Переменные этого типа содержат данные, которые содержат в себе переменные, которые содержат... . То есть Тип данных, то о чем сейчас и идет речь. С переменными этого типа взаимодействуют лишь две команды:)
    DATATYP_ARRAY Массив. Дело, однако, в том, что такая переменная вовсе не является массивом. Она лишь является ссылкой на него (поинтер).
    DATATYP_QUEST Переменная-миссия. Честно говоря, с ней мне еще не приходилось сталкиваться.

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

    По-английски По-русски Описание
    <ВозврПерем> Переменная, в которую возвращается результат выполнения (или невыполнения, если данные заданы некорректно) команды.
    <Возвр/IF> То же, что и выше, но плюсом возможность выбрать один из операторов. Принцип - команда становится логическим выражением (которое-таки исполняется) и, если результат ненулевой (не "0" и и не "null"), принимащим истинное значение, в противном случае - ложное.
    <Возвр/IF/START> Тоже, что и выше, но с возможностью выбора префикса START. Используется только в командах вызова скриптов. Внимание! Если Вы запустите в локальном скрипте команду с данным префиксом, то игра повиснет!

    Вообще, этот префикс дает возможность запустить какой-либо скрипт по принципу "запустил и забыл", т.е. основному скрипту глубоко пофиг, как отработает запущенный им с данным префиксом скрипт.

    <Выражение> Логическое выражение, принимающее значение либо Истина (1), либо Ложь (0).
    <Перем/Текст> Текст, либо переменная, которая его содержит. Внимание! Число НЕ является текстом, также как и Текст НЕ является Числом. Для конвертирования текста в число, используйте команду = string to integer , для обратной операции = convert number to string .
    <Перем/Число> Какое-либо число, либо переменная его содержащее.
    <РеферОбъект> Объект, с которым взаимодействует команда. Либо переменная, содержащая этот объект (к слову говоря, все значения, используемые командами гораздо разумнее (да и есть возможность) хранить в переменных, поэтому далее не буду затрагивать этот момент).
    <Значение> Применение ситуативно и зависит от команды.

    Остальное, я думаю, понятно, и описывать это нет смысла.
    Часть 5. Немного о массивах.

    Итак, что же такое массив ? Можно почитать на википедии . Вкратце, это упорядоченный набор данных. Каждый элемент имеет свой порядковый номер, причем нумерация начинается с нуля. То есть элементы массива, состоящего из 5 элементов, имеют индексы 0, 1, 2, 3, 4. Кроме того, ничего не мешает содержать в массиве несколько вложенных массивов (вложенность также неограниченна).

    Чтобы создать массив, можно использовать команды = array alloc: size= и = create new array, arguments=, , , , (обе команды создают массив "с нуля"). Также некоторые команды возвращают в переменную массив, уже содержащий в себе некоторые значения, например = -> get array of missiles aiming to me возвращает массив ракет, наведенных на Ваш корабль.
    Стоит обратить внимание на то, что переменные никоим образом не содержат в себе массив. Они лишь ссылаются на него. То есть допустим у нас есть переменная $array1, которая является ссылкой на массив, и мы хотим скопировать этот массив, чтобы работать уже с двумя массивами. В данном случае команда "$array2 == $array1" лишь скопирует поинтер (читай: ссылку) на массив. Для того, чтобы скопировать массив есть команда = clone array : index ... , где - копируемый массив, а - его копия, начиная с элемента с индексом , заканчивая элементом с индексом .

    Чем нам полезны массивы? Тем, что иногда мы не знаем, с каким кол-вом объектов будем взаимодействовать. Допустим, у нас есть команда $array = $sector -> get ship array from sector/ship/station , она возвращает массив кораблей, находящихся в секторе $sector (или кол-во кораблей пристыкованных к кораблю/станции, все зависит от типа данных, содержащегося в переменной). И этих кораблей может быть хоть ноль, хоть 10, хоть 100 и так далее.
    Как нам работать с массивом? С помощью соответствующих команд, и, если требуется обработать/проверить каждый элемент массива, циклов.

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

    1 вариант - когда важна последовательность обработки элементов от элементов с более низким индексом к элементам с более высоким.

    2 вариант - когда важна последовательность обработки элементов не важна.

    1. $sz = get size of array $array
    2. while $sz
    3. $element = $array [ $sz ]
    4. <кусок кода, который взаимодействует с элементом $element, находящимся по индексу $sz>
    5. = wait 1 ms
    6. dec $sz //аналогично $sz = $sz - 1
  • Понравилось? Лайкни нас на Facebook