Difference between revisions of "In-game coding/ru"

From Space Engineers Wiki
Jump to: navigation, search
m
Line 4: Line 4:
 
<!-- Небольшое описание, чтобы страница не пустовала. По сути плейсхолдер (GamingHater)-->
 
<!-- Небольшое описание, чтобы страница не пустовала. По сути плейсхолдер (GamingHater)-->
 
Программируемый блок - блок, добавленный в обновлении 1.063. Позволяет контролировать системы кораблей с помощью скриптов на языке С#. На данный момент способен управлять всем стандартным функционалом терминала, в том числе менять цвет ламп и имена маяков в реальном времени.
 
Программируемый блок - блок, добавленный в обновлении 1.063. Позволяет контролировать системы кораблей с помощью скриптов на языке С#. На данный момент способен управлять всем стандартным функционалом терминала, в том числе менять цвет ламп и имена маяков в реальном времени.
 +
<!-- Требуется форматирование параграфов и, возможно, чистовая правка текста (Денис Пушкарёв aka Volhx) -->
 +
 +
Ограничения:
 +
 +
Ниже вы найдете список известных ограничений о которых мы знаем, а так же возможные их решения.
 +
 +
Оператор "foreach" не работает на 64-битной системе.
 +
Проблема:
 +
На данный момент использование оператора "foreach" внутри скрипта приведет к "bad program expection" и остановит запуск скрипта. Мы работаем над устранением этой проблемы.
 +
Решение:
 +
Все наши внутри-игровые интерфейсы работают со списками (list) как с коллекциями. Пожалуйста, используйте итерационный цикл "for" для работы с ними.
 +
 +
Функция лямбды не работает.
 +
Проблема:
 +
На данный момент функция лямбды не поддерживается, если вы используете ее в скрипте, скрипт не запустится.
 +
Решение:
 +
Пожалуйста используйте метод вместо функции лямбды, если это возможно.
 +
 +
Пользовательские константы и статичные методы не работают.
 +
Проблема:
 +
На данный момент использование констант или статичных методов приводит к неработоспособности скрипта.
 +
Решение:
 +
Пожалуйста, не испольуйте в скрипте константы или статичные пользовательские методы.
 +
 +
Переменные, устанавливаемые пользователем - не сохраняются.
 +
Проблема:
 +
Пользовательские переменные используемые в скрипте не сохраняются и после загрузки возвращаются к своим значениям по умолчанию.
 +
Решение:
 +
Отсутствует.
 +
 +
Обзор интерфейса:
 +
 +
Программируемый блок.
 +
 +
Панель программируемого блока на данный момент содержит следующие кнопки:
 +
 +
Edit – открыть редактор для редактирования скриптов и возможности сохранения/загрузки их на диск.
 +
Также вы можете загрузить свои скрипты в "workshop" или загрузить себе скрипты, на которые вы подписаны.
 +
Run – запустить скрипт сохраненный в редакторе. Скрипт будет запущен один раз. Однако эта кнопка является действием в терминале и вы можете соединить ее с сенсором, таймером или добавить на панель быстрого доступа.
 +
 +
Редактор.
 +
 +
Редактор кода содержит следующие кнопки:
 +
Help – открыть мануал по программированию в игре.
 +
Check code – проверить код на наличие ошибок, а так же возможность использовать данный код.
 +
Remember & Exit – сохранить ваш код, закрывает экран редактора и переведет к панели терминала.
 +
Remember code – сохранить ваш код и оставит экран редактора открытым.
 +
Browse Workshop – открыть окно для управления скриптами, вы можете сохранить/загрузить скрипты на диск, загрузить свои скрипты в "workshop" или загрузить себе скрипты, на которые вы подписаны.
 +
Line counter – отобразить текущую строку кода и общее количество строк в коде.
 +
 +
Экран "Workshop".
 +
 +
Этот экран аналогичный экрану с чертежами и содержит следующие кнопки:
 +
Ok – загрузить выбранный скрипт в редактор и закроет экран.
 +
Cancel – закрыть экран (изменения не будут внесены в редактор)
 +
Details – открыть экран "детали", где вы можете увидеть описание скрипта.
 +
Rename (только для локальных скриптов) – переименовать выбранный скрипт, если вы попытаетесь переименовать существующий скрипт, игра попросит подтверждение.
 +
Delete (только для локальных скриптов) – удалить выбранный скрипт, после подтверждения.
 +
Create from editor – создать новый скрипт с именем по умолчанию Script_XX, которое начинается с 0, и если скрипт с уже выбранным именем существует, то числовое значение в названии будет повышено. Для примера, первым будет Script_0, далее Script_1 и т.д...
 +
Replace from editor (только для локальных скриптов) – заменить (после подтверждения пользователя) выбранный скрипт на скрипт из редактора.
 +
Refresh Scripts – обновить локальные скрипты и скрипты на которые вы подписаны.
 +
 +
Детали (локальный скрипт).
 +
 +
Этот экран показывает детали для локальных скриптов и содержит следующие кнопки:
 +
Rename – переименовать выбранный скрипт, если вы попытаетесь переименовать существующий скрипт, игра попросит подтверждение.
 +
Delete – удалить выбранный скрипт, после подтверждения.
 +
Publish – опубликовать выбранный скрипт в "workshop" и показать странницу с опубликованным скриптом.
 +
Browse Workshop – открыть экран "workshop" для просмотра, а также подписаться на скрипты.
 +
Close – закрыть экран.
 +
 +
Детали ("workshop" скрипт).
 +
 +
Этот экран показывает детали для скриптов из "workshop" и содержит следующие кнопки:
 +
Open in Workshop – открыть "workshop" страницу скрипта.
 +
Close – закрыть экран.
 +
 +
Гайд по программированию:
 +
Введение.
 +
 +
Доступ к редактору.
 +
Только один игрок может редактировать скрипт. Если кто-нибудь откроет занятый программируемый блок и попытается открыть редактор, он получит уведомление о том, что редактор уже открыт.
 +
 +
Метод Main.
 +
Метод Main - создается при первом открытии редактора, этот метод является основной точкой входа в ваш скрипт. При переименовании или удаление этого метода скрипт не запуститься и вы получите уведомление. Пользовательские методы/переменные могут быть определены и использованы но только внутри главного метода (main).
 +
 +
Видимость переменных.
 +
Есть два типа переменных для скрипта:
 +
-Local (внутри методов) - эти переменные будут хранить значение только во время выполнения метода. Подробнее - локальная переменная находится в области видимости до тех пор, пока закрывающая фигурная скобка не укажет конец блока операторов или метода, в котором она объявлена.А так же, объявленная в операторах цикла "for", "while" или подобных им, видима в пределах тела цикла.
 +
-Global (за пределами методов) - эти переменные будут хранить значения при работе всего скрипта.
 +
Подробнее - если переменная должна сохранить значение между отдельными блоками программы, она должна быть определена вне этих методов т.е. глобально.
 +
-После нажатия "Remember & Exit" или "Remember" кнопки, предыдущий скрипт будет переписан и все глобальные переменные будут потеряны.
 +
 +
Компиляция.
 +
Когда вы нажмете кнопку “Check code”, код будет скомпилирован, также будет показан результат компиляции.
 +
Процесс компиляции состоит из двух этапов:
 +
-Во первых, код внутри редактора будет проверен на синтаксические ошибки, внутри языка C#
 +
Если во время компиляции возникнут какие-либо ошибки, вы получите уведомление, а компиляция будет прервана.
 +
К примеру "ааа" строка была помещена перед главным методом. Это не правильное языковое построение и компиляция будет прервана.
 +
Также в сообщении об ошибке будет показана строка, в которой допущена ошибка и описание ошибки.
 +
-Во вторых, код будет проверен на наличие недопустимых имен или типов. Если во время компиляции возникнут какие-либо ошибки, вы получите уведомление, а компиляция будет прервана.
 +
К примеру System.IO.Directory был использован для удаления другого каталога. Это запрещено и вы получите уведомление: “Not allowed type was used in script”.
 +
-Если компиляция и проверка проходит успешно, вы получите уведомление.
 +
Это означает, что код не содержит ошибок в языке или не разрешенных методов.
 +
 +
Выполнение скрипта.
 +
Когда вы нажимаете кнопку "Run" или добавляете действие на панель быстрого доступа, скрипт будет выполнен. На данный момент "Run" должен быть использован вручную, т.е. пользователю нужно нажать кнопку "Run" или добавить действие на панель быстрого доступа.
 +
Скрипт будет выполнен только на сервере, даже если был запущен из клиента, все клиенты будут уведомлены, если запуск скрипта будет прерван.
 +
В случае, если работа скрипта будет прервана, скрипт не запуститься до того момента, пока пользователь не откроет редактор и не отредактирует скрипт.
 +
 +
Вычисление команд.
 +
Каждый раз, когда скрипт будет запущен, происходит расчет каждой команда внутри скрипта. Если количество команд внутри скрипта превышает лимит, запуск будет приостановлен и пользователь будет уведомлен о том, что скрипт слишком сложный для выполнения.
 +
Лимит помогает избежать "заморозки" игры при выполнении скрипта.
 +
 +
Доступные интерфейсы.
 +
 +
Возможные действия.
 +
На данный момент в скрипте вы можете использовать только действия доступные в панели управления. Пользователь имеет доступ только к объектам расположенным в одной сети, где находится программируемый блок.
 +
 +
Переменная GridTerminalSystem.
 +
В настоящее время, кроме "встроенных" переменных, пользователь может использовать переменную GridTerminalSystem. Она является точкой входа во всю сеть корабля, и имеет следующие доступные методы:
 +
List<IMyTerminalBlock> Blocks {get;}
 +
List<IMyBlockGroup> BlockGroups {get;}
 +
void GetBlocksOfType<T>(List<IMyTerminalBlock> blocks, Func<IMyTerminalBlock, bool> collect = null);
 +
void SearchBlocksOfName(string name,List<IMyTerminalBlock> blocks, Func<IMyTerminalBlock, bool> collect = null);
 +
IMyTerminalBlock GetBlockWithName(string name);
 +
С помощью этих методов все "терминальные" блоки внутри сети могут быть собраны.
 +
 +
Blocks - данное свойство возвращает все блоки из сети терминала, данный метод внутренне выделяет новую память.
 +
BlockGroups - возвращает все группы блоков из сети терминала, этот метод внутренне выделяет новую память.
 +
GetBlocksOfType - возвращает все блоки указанного типа.
 +
SearchBlocksOfName - данный метод является полнотекстовым поиском между всеми блоками и возвращает блок, который содержит искомую строку, поиск не чувствителен к регистру.
 +
GetBlockWithName - данный метод возвращает первый блок с точным названием, которое было задано, поиск чувствителен к регистру.
 +
 +
Func<IMyTerminalBlock, BOOL> собирающий метод можно использовать для определения условия поиска в категории. Например, собирающий метод "IMyRadioAntenna" может определить функцию поиска, чтобы найти только включенные антенны или антенны с определенным диапазоном действия.
 +
 +
IMyCubeBlock
 +
IMyCubeBlock это базовый класс для каждого "терминального" блока. Он имеет следующие свойства и методы:
 +
BOOL IsBeingHacked {get; }
 +
BOOL IsFunctional {get; }
 +
BOOL IsWorking {get; }
 +
VRageMath.Vector3I Position {get; }
 +
 +
IsFunctional - свойство сообщает, если блок достроен до уровня, когда он может работать.
 +
IsWorking - свойство сообщает, имеет ли данный блок достаточное питание для работы.
 +
 +
IMyTerminalBlock
 +
IMyTerminalBlock это базовый класс для каждого "терминального" блока. Он имеет следующие свойства и методы:
 +
 +
string CustomName
 +
string CustomNameWithFaction
 +
string DetailedInfo
 +
bool HasLocalPlayerAccess()
 +
bool HasPlayerAccess(long playerId)
 +
void RequestShowOnHUD(bool enable)
 +
void SetCustomName(string text)
 +
void SetCustomName(StringBuilder text)
 +
bool ShowOnHUD
 +
void GetActions(List<Sandbox.ModAPI.Interfaces.ITerminalAction> resultList, Func<Sandbox.ModAPI.Interfaces.ITerminalAction, bool> collect = null);
 +
void SearchActionsOfName(string name,List<Sandbox.ModAPI.Interfaces.ITerminalAction> resultList, Func<Sandbox.ModAPI.Interfaces.ITerminalAction, bool> collect = null);
 +
Sandbox.ModAPI.Interfaces.ITerminalAction GetActionWithName(string name);
 +
 +
GetActions - данный метод возвращает все доступные действия для текущего блока.
 +
SearchActionsOfName - данный метод является полнотекстовым поиском между всеми действиями блока и возвращает действия, название которых содержит искомую строку, например, если блок имеет действия: "OnOff, OnOff_On, OnOff_Off".
 +
 +
SearchActionsOfName с "OnOff" - вернет все действия
 +
SearchActionsOfName с "_On" - вернется только "OnOff_On", поиск "On" вернет все действия. Поиск не чувствителен к регистру.
 +
 +
GetActionWithName - данный метод вернет первое найденное действие с точным названием, которое совпадает с заданным, поиск чувствителен к регистру.
 +
 +
ITerminalAction
 +
ITerminalAction предоставляет определенные действия, которые могут быть выполнены.
 +
Он имеет следующие свойства и методы:
 +
string Id { get; }
 +
StringBuilder Name { get; }
 +
void Apply(Sandbox.ModAPI.Ingame.IMyCubeBlock block);
 +
 +
Id - это обозначение действия, к примеру: "OnOff", "OnOff_On"
 +
Name - это название действия, которое будет показано в интерфейсе, к примеру: "Toggle block On/Off ,Toggle block On"
 +
Apply - применяет действие к выбранному блоку (вам нужно определить блок, из которого вы берете действие).
 +
 +
IMyFunctionalBlock
 +
IMyFunctionalBlock - это базовый класс для каждого блока, который может быть включен или выключен, он наследуется от IMyTerminalBlock. Для примера, каждый блок имеющий функции, является "терминальным", но не все "терминальные" блоки могут быть включены или выключены.
 +
Он имеет одно свойство:
 +
bool Enabled
 +
Это свойство отображает: включен или выключен данный блок пользователем.
 +
 +
Блоки и действия, список - 1/3
 +
 +
Дисклеймер.
 +
Все "терминальные" блоки имеют следующие свойства:
 +
Имя интерфейса: это имя определенного блока в коде, название может отличаться от названия отображаемого на экране постройки. К примеру антенна имеет имя интерфейса "IMyRadioAntenna" - вам нужно использовать этот интерфейс, если вы хотите получить все антенны.
 +
 +
Родитель: каждый блок имеет родителя (все блоки имеют "IMyTerminalBlock" как родителя), это нужно для того, чтобы получить все блоки одного типа, вместо конкретного блока.
 +
К примеру, если вы хотите получить все блоки света, следует использовать "IMyLightningBlock", а если вы хотите использовать только блок ламы, вы используете "IMyInteriorLight".
 +
 +
Поля: данное свойство блока доступно только для чтения. К примеру из "IMyBeacon" вы можете получить свойство радиуса. И основываясь на этом свойстве вы можете увеличить/уменьшить радиус маяка.
 +
 +
Действия: все действия, которые вы можете применить к блоку, доступны вам в скрипте, так что если вы хотите уменьшить радиус вещания антенны, вам нужно использовать "DecreaseRadius" действие для блока.
 +
 +
Одинаковые класс блоков имеют разный "SubTypeID".
 +
Одинаковые блоки, которые имеют тех же родителей (к примеру <TypeId> в файле "cubeblocks.sbc") и различаются только по субтипу (к примеру<SubtypeId>). Это значит, что различия между этими блоками в коде нет.
 +
Примером таких блоков являются грузовые контейнеры: в игре есть три типа грузовых контейнеров: малый, средний и большой. Они различаются только по субтипу, но имеют общий тип.
 +
К примеру "Id" большого контейнера:
 +
<Id>
 +
<TypeId>CargoContainer</TypeId>
 +
<SubtypeId>LargeBlockLargeContainer</SubtypeId>
 +
</Id>
 +
Средний контейнер:
 +
<Id>
 +
<TypeId>CargoContainer</TypeId>
 +
<SubtypeId>SmallBlockMediumContainer</SubtypeId>
 +
</Id>
 +
Малый контейенер:
 +
<Id>
 +
<TypeId>CargoContainer</TypeId>
 +
<SubtypeId>LargeBlockSmallContainer</SubtypeId>
 +
</Id>
 +
 +
В этом случае есть только один класс "IMyCargoContainer" для всех типов грузовых контейнеров.
 +
 +
Антенна
 +
Имя интерфейса: IMyRadioAntenna
 +
Родитель: IMyFunctionalBlock
 +
Поля: float Radius
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
IncreaseRadius - Увеличить радиус вещания
 +
DecreaseRadius - Уменьшить радиус вещания
 +
 +
Дуговая печь
 +
Имя интерфейса: IMyRefinery
 +
Родитель: IMyProductionBlock
 +
Родитель: IMyFunctionalBlock
 +
Поля: bool UseConveyorSystem
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
UseConveyor - Использовать систему конвейеров вкл/выкл
 +
 +
Искусственная масса
 +
Имя интерфейса: IMyVirtualMass
 +
Родитель: IMyFunctionalBlock
 +
Поля: None
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
 +
Сборщик
 +
Имя интерфейса: IMyAssembler
 +
Родитель: IMyProductionBlock
 +
Родитель: IMyFunctionalBlock
 +
Поля: bool UseConveyorSystem
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
UseConveyor - Использовать систему конвейеров вкл/выкл
 +
 +
Батарея
 +
Имя интерфейса: IMyBatteryBlock
 +
Родитель: IMyFunctionalBlock
 +
Поля: bool HasCapacityRemaining
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
Recharge - Перезарядка вкл/выкл
 +
 +
Маяк
 +
Имя интерфейса: IMyBeacon
 +
Родитель: IMyFunctionalBlock
 +
Поля: float Radius
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
IncreaseRadius - Увеличить радиус вещания
 +
DecreaseRadius - Уменьшить радиус вещания
 +
 +
Кнопочная панель
 +
Имя интерфейса: IMyButtonPanel
 +
Поля: bool AnyoneCanUse
 +
Действия:
 +
AnyoneCanUse - Все могут использовать вкл/выкл
 +
 +
Камера
 +
Имя интерфейса: IMyCameraBlock
 +
Родитель: IMyFunctionalBlock
 +
Поля: None
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
View - Вид
 +
 +
Кабина
 +
Имя интерфейса: IMyCockpit
 +
Родитель: IMyShipController
 +
Поля:
 +
bool ControlWheels
 +
bool ControlThrusters
 +
bool HandBrake
 +
bool DampenersOverride
 +
Действия:
 +
ControlThrusters - Управление ускорителями вкл/выкл
 +
ControlWheels - Управление колесами вкл/выкл
 +
HandBrake - Ручной тормоз вкл/выкл
 +
DampenersOverride - Гаситель инерции вкл/выкл
 +
 +
Сборщик
 +
Имя интерфейса: IMyCollector
 +
Родитель: IMyFunctionalBlock
 +
Поля: bool UseConveyorSystem
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
UseConveyor - Использовать систему конвейеров вкл/выкл
 +
 +
Коннектор
 +
Имя интерфейса: IMyShipConnector
 +
Родитель: IMyFunctionalBlock
 +
Поля:
 +
bool ThrowOut
 +
bool CollectAll
 +
bool IsLocked
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
ThrowOut - Выбросить вкл/выкл
 +
CollectAll - Собирать всё вкл/выкл
 +
SwitchLock - Переключить стыковки
 +
 +
Панель управления
 +
Имя интерфейса: IMyControlPanel
 +
Поля: None
 +
Действия: None
 +
 +
Терминал управления
 +
Имя интерфейса: IMyCockpit
 +
Родитель: IMyShipController
 +
Поля:
 +
bool ControlWheels
 +
bool ControlThrusters
 +
bool HandBrake
 +
bool DampenersOverride
 +
Действия:
 +
ControlThrusters - Управление ускорителями вкл/выкл
 +
ControlWheels - Управление колесами вкл/выкл
 +
HandBrake - Ручной тормоз вкл/выкл
 +
DampenersOverride - Гаситель инерции вкл/выкл
 +
 +
Дверь
 +
Имя интерфейса: IMyDoor
 +
Родитель: IMyFunctionalBlock
 +
Поля: bool Open
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
Open - Открыто/Закрыто
 +
Open_On - Открыто
 +
Open_Off - Закрыто
 +
 +
Бур
 +
Имя интерфейса: IMyShipDrill
 +
Родитель: IMyFunctionalBlock
 +
Поля: bool UseConveyorSystem
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
UseConveyor - Использовать систему конвейеров вкл/выкл
 +
 +
Кресло пилота
 +
Имя интерфейса: IMyCockpit
 +
Родитель: IMyShipController
 +
Поля:
 +
bool ControlWheels
 +
bool ControlThrusters
 +
bool HandBrake
 +
bool DampenersOverride
 +
Действия:
 +
ControlThrusters - Управление ускорителями вкл/выкл
 +
ControlWheels - Управление колесами вкл/выкл
 +
HandBrake - Ручной тормоз вкл/выкл
 +
DampenersOverride - Гаситель инерции вкл/выкл
 +
 +
Турель Гатлинга
 +
Имя интерфейса: IMyLargeGatlingTurret
 +
Родитель: IMyLargeConveyorTurretBase
 +
Родитель: IMyLargeTurretBase
 +
Родитель: IMyFunctionalBlock
 +
Поля:
 +
bool UseConveyorSystem
 +
bool CanControl
 +
float Range
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
Control - Управление
 +
IncreaseRange - Увеличить радиус
 +
DecreaseRange - Уменьшить радиус
 +
UseConveyor - Использовать систему конвейеров вкл/выкл
 +
 +
Генератор гравитации
 +
Имя интерфейса: IMyGravityGenerator
 +
Родитель: IMyGravityGeneratorBase
 +
Родитель: IMyFunctionalBlock
 +
Поля:
 +
float FieldWidth
 +
float FieldHeight
 +
float FieldDepth
 +
float Gravity
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
IncreaseWidth - Увеличить ширину поля
 +
DecreaseWidth - Уменьшить ширину поля
 +
IncreaseHeight - Увеличить высоту поля
 +
DecreaseHeight - Уменьшить высоту поля
 +
IncreaseDepth - Увеличить глубину поля
 +
DecreaseDepth - Уменьшить глубину поля
 +
IncreaseGravity - Увеличить ускорение
 +
DecreaseGravity - Уменьшить ускорение
 +
 +
Резак
 +
Имя интерфейса: IMyShipGrinder
 +
Родитель: IMyShipToolBase
 +
Родитель: IMyFunctionalBlock
 +
Поля: None
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
UseConveyor - Использовать систему конвейеров вкл/выкл
 +
 +
Гироскоп
 +
Имя интерфейса: IMyGyro
 +
Родитель: IMyFunctionalBlock
 +
Поля:
 +
float GyroPower
 +
bool GyroOverride
 +
float Yaw
 +
float Pitch
 +
float Roll
 +
Действия:
 +
OnOff - Переключить блок вкл/выкл
 +
OnOff_On - Переключить блок вкл
 +
OnOff_Off - Переключить блок выкл
 +
IncreasePower - Увеличить мощность
 +
DecreasePower - Уменьшить мощность
 +
Override - Перехват управления вкл/выкл
 +
IncreaseYaw - Увеличить рысканье
 +
DecreaseYaw - Уменьшить рысканье
 +
IncreasePitch - Увеличить тангаж
 +
DecreasePitch - Уменьшить тангаж
 +
IncreaseRoll - Увеличить крен
 +
DecreaseRoll - Уменьшить крен
 +
 +
Блоки и действия, список - 2/3
 +
 +
Лампа
 +
Interface name: IMyInteriorLight
 +
Parent: IMyLightingBlock
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
float Radius
 +
float Intensity
 +
float BlinkIntervalSeconds
 +
float BlinkLenght
 +
float BlinkOffset
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
IncreaseRadius - Increase Radius
 +
DecreaseRadius - Decrease Radius
 +
IncreaseBlink Interval - Increase Blink Interval
 +
DecreaseBlink Interval - Decrease Blink Interval
 +
IncreaseBlink Lenght - Increase Blink Length
 +
DecreaseBlink Lenght - Decrease Blink Length
 +
IncreaseBlink Offset - Increase Blink Offset
 +
DecreaseBlink Offset - Decrease Blink Offset
 +
 +
Турель
 +
Interface name: IMyLargeInteriorTurret
 +
Parent: IMyLargeTurretBase
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
bool CanControl
 +
float Range
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Control - Control
 +
IncreaseRange - Increase Radius
 +
DecreaseRange - Decrease Radius
 +
 +
Посадочные шасси
 +
Interface name: IMyLandingGear
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
float BreakForce
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Lock - Lock
 +
Unlock - Unlock
 +
SwitchLock - Switch lock
 +
Autolock - Autolock On/Off
 +
IncreaseBreakForce - Increase Break Force
 +
DecreaseBreakForce - Decrease Break Force
 +
 +
Малый грузовой контейнер
 +
Interface name: IMyCargoContainer
 +
Fields: None
 +
Действия: None
 +
 +
Средний грузовой контейнер
 +
Interface name: IMyCargoContainer
 +
Fields: None
 +
Действия: None
 +
 +
Большой грузовой контейнер
 +
Interface name: IMyCargoContainer
 +
Fields: None
 +
Действия: None
 +
 +
Малый реактор
 +
Interface name: IMyReactor
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
bool UseConveyorSystem
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
UseConveyor - Use Conveyor System On/Off
 +
 +
Большой реактор
 +
Interface name: IMyReactor
 +
Parent: IMyFunctionalBlock
 +
Fields: bool UseConveyorSystem
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
UseConveyor - Use Conveyor System On/Off
 +
 +
Малый ускоритель
 +
Interface name: IMyThrust
 +
Parent: IMyFunctionalBlock
 +
Fields: float ThrustOverride
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
IncreaseOverride - Increase Thrust override
 +
DecreaseOverride - Decrease Thrust override
 +
 +
Большой ускоритель
 +
Interface name: IMyThrust
 +
Parent: IMyFunctionalBlock
 +
Fields: float ThrustOverride
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
IncreaseOverride - Increase Thrust override
 +
DecreaseOverride - Decrease Thrust override
 +
 +
Медпункт
 +
Interface name: IMyMedicalRoom
 +
Parent: IMyFunctionalBlock
 +
Fields: None
 +
Действия:
 +
OnOff -> Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
 +
Стыковочный блок
 +
Interface name: IMyShipMergeBlock
 +
Parent: IMyFunctionalBlock
 +
Fields: None
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
 +
Ракетная турель
 +
Interface name: IMyLargeMissileTurret
 +
Parent: IMyLargeConveyorTurretBase
 +
Parent: IMyLargeTurretBase
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
bool UseConveyorSystem
 +
bool CanControl
 +
float Range
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Control - Control
 +
IncreaseRange - Increase Radius
 +
DecreaseRange - Decrease Radius
 +
UseConveyor - Use Conveyor System On/Off
 +
 +
Детектор руды
 +
Interace name: IMyOreDetector
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
float Range
 +
bool BroadcastUsingAntennas
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
 +
Пассажирское кресло
 +
Interface name: IMyCockpit
 +
Parent: IMyShipController
 +
Fields:
 +
bool ControlWheels
 +
bool ControlThrusters
 +
bool HandBrake
 +
bool DampenersOverride
 +
Действия:
 +
ControlThrusters - Control thrusters On/Off
 +
ControlWheels - Control wheels On/Off
 +
HandBrake - Handbrake On/Off
 +
DampenersOverride - Inertia dampeners On/Off
 +
 +
Поршень
 +
Interface name: IMyPistonBase
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
float Velocity
 +
float MinLimit
 +
float MaxLimit
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Reverse - Reverse
 +
IncreaseVelocity - Increase Velocity
 +
DecreaseVelocity - Decrease Velocity
 +
ResetVelocity - Reset Velocity
 +
IncreaseUpperLimit - Increase Maximal distance
 +
DecreaseUpperLimit - Decrease Maximal distance
 +
IncreaseLowerLimit - Increase Minimal distance
 +
DecreaseLowerLimit - Decrease Minimal distance
 +
 +
Programmable block
 +
Interface name: IMyProgrammableBlock
 +
Parent: IMyFunctionalBlock
 +
Fields: bool IsRunning
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Run - Run
 +
 +
Блоки и действия, список - 3/3
 +
 +
Очистительный завод
 +
Interface name: IMyRefinery
 +
Parent: IMyFunctionalBlock
 +
Parent: IMyProductionBlock
 +
Fields: bool UseConveyorSystem
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
UseConveyor - Use Conveyor System On/Off
 +
 +
Прожектор
 +
Interface name: IMyReflectorLight
 +
Parent: IMyLightingBlock
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
float Radius
 +
float Intensity
 +
float BlinkIntervalSeconds
 +
float BlinkLenght
 +
float BlinkOffset
 +
Spotlight
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
IncreaseRadius - Increase Radius
 +
DecreaseRadius - Decrease Radius
 +
IncreaseBlink Interval - Increase Blink Interval
 +
DecreaseBlink Interval - Decrease Blink Interval
 +
IncreaseBlink Lenght - Increase Blink Length
 +
DecreaseBlink Lenght - Decrease Blink Length
 +
IncreaseBlink Offset - Increase Blink Offset
 +
DecreaseBlink Offset - Decrease Blink Offset
 +
 +
Удаленное управление
 +
Interface name: IMyRemoteControl
 +
Parent: IMyShipController
 +
Fields:
 +
bool ControlWheels
 +
bool ControlThrusters
 +
bool HandBrake
 +
bool DampenersOverride
 +
Действия:
 +
ControlThrusters - Control thrusters On/Off
 +
ControlWheels - Control wheels On/Off
 +
HandBrake - Handbrake On/Off
 +
DampenersOverride - Inertia dampeners On/Off
 +
Control - Control
 +
 +
Ракетная установка
 +
Interface name: IMySmallMissileLauncher
 +
Parent: IMyFunctionalBlock
 +
Fields: bool UseConveyorSystem
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
UseConveyor - Use Conveyor System On/Off
 +
 +
Перезаряжаемая ракетница
 +
Interface name: IMySmallMissileLauncherReload
 +
Parent: IMyFunctionalBlock
 +
Fields: bool UseConveyorSystem
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
UseConveyor - Use Conveyor System On/Off
 +
 +
Двигатель
 +
Interface name: IMyMotorStator
 +
Parent: IMyMotorBase
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
bool IsAttached
 +
float Torque
 +
float BrakingTorque
 +
float Velocity
 +
float LowerLimit
 +
float UpperLimit
 +
float Displacement
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Reverse - Reverse
 +
Detach - Detach
 +
Attach - Attach
 +
IncreaseTorque - Increase Torque
 +
DecreaseTorque - Decrease Torque
 +
IncreaseBrakingTorque - Increase Braking tor.
 +
DecreaseBrakingTorque - Decrease Braking tor.
 +
IncreaseVelocity - Increase Velocity
 +
DecreaseVelocity - Decrease Velocity
 +
ResetVelocity - Reset Velocity
 +
IncreaseLowerLimit - Increase Lower limit
 +
DecreaseLowerLimit - Decrease Lower limit
 +
IncreaseUpperLimit - Increase Upper limit
 +
DecreaseUpperLimit - Decrease Upper limit
 +
IncreaseDisplacement - Increase Rotor displacement
 +
DecreaseDisplacement - Decrease Rotor displacement
 +
 +
Сенсор
 +
Interface name: IMySensorBlock
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
float LeftExtend
 +
float RightExtend
 +
float TopExtend
 +
float BottomExtend
 +
float FrontExtend
 +
float BackExtend
 +
bool DetectPlayers
 +
bool DetectFloatingObjects
 +
bool DetectSmallShips
 +
bool DetectLargeShips
 +
bool DetectStations
 +
bool DetectAsteroids
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
IncreaseLeft - Increase Left extent
 +
DecreaseLeft - Decrease Left extent
 +
IncreaseRight - Increase Right extent
 +
DecreaseRight - Decrease Right extent
 +
IncreaseBottom - Increase Bottom extent
 +
DecreaseBottom - Decrease Bottom extent
 +
IncreaseTop - Increase Top extent
 +
DecreaseTop - Decrease Top extent
 +
IncreaseBack - Increase Back extent
 +
DecreaseBack - Decrease Back extent
 +
IncreaseFront - Increase Front extent
 +
DecreaseFront - Decrease Front extent
 +
Detect Players - Detect players On/Off
 +
Detect Floating Objects - Detect floating objects On/Off
 +
Detect Small Ships - Detect small ships On/Off
 +
Detect Large Ships - Detect large ships On/Off
 +
Detect Stations - Detect stations On/Off
 +
Detect Asteroids - Detect Asteroids On/Off
 +
 +
Солнечная панель
 +
Interface name: IMySolarPanel
 +
Fields: None
 +
Действия: None
 +
 +
Sound Block
 +
Interface name: IMySoundBlock
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
float Volume
 +
float Range
 +
bool IsSoundSelected
 +
float LoopPeriod
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
IncreaseVolumeSlider - Increase Volume
 +
DecreaseVolumeSlider - Decrease Volume
 +
IncreaseRangeSlider - Increase Range
 +
DecreaseRangeSlider - Decrease Range
 +
PlaySound - Play
 +
StopSound - Stop
 +
IncreaseLoopableSlider - Increase Loop time
 +
DecreaseLoopableSlider - Decrease Loop time
 +
 +
Сферический генератор гравитации
 +
Interface name: IMyGravityGeneratorSphere
 +
Parent: IMyGravityGeneratorBase
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
float Radius
 +
float Gravity
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
IncreaseRadius - Increase Radius
 +
DecreaseRadius - Decrease Radius
 +
IncreaseGravity - Increase Acceleration
 +
DecreaseGravity - Decrease Acceleration
 +
 +
Таймер
 +
Interface name: IMyTimerBlock
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
bool IsCountingDown
 +
float TriggerDelay
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
IncreaseTriggerDelay - Increase Delay
 +
DecreaseTriggerDelay - Decrease Delay
 +
TriggerNow - Trigger now
 +
Start - Start
 +
Stop - Stop
 +
 +
Боеголовка
 +
Interface name: IMyWarhead
 +
Fields:
 +
bool IsCountingDown
 +
float DetonationTime
 +
Действия:
 +
IncreaseDetonationTime - Increase Detonation time
 +
DecreaseDetonationTime - Decrease Detonation time
 +
StartCountdown - Start countdown
 +
StopCountdown - Stop countdown
 +
Safety - Safety On/Off
 +
Detonate - Detonate
 +
 +
Сварщик
 +
Interface name: IMyShipWelder
 +
Parent: IMyShipToolBase
 +
Parent: IMyFunctionalBlock
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
UseConveyor - Use Conveyor System On/Off
 +
 +
Подвеска колес 1x1
 +
Interface name: IMyMotorSuspension
 +
Parent: IMyMotorBase
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
bool Steering
 +
bool Propulsion
 +
float Damping
 +
float Strength
 +
float Friction
 +
float Power
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Steering - Steering On/Off
 +
Propulsion - Propulsion On/Off
 +
IncreaseDamping - Increase Damping
 +
DecreaseDamping - Decrease Damping
 +
IncreaseStrength - Increase Strength
 +
DecreaseStrength - Decrease Strength
 +
IncreaseFriction - Increase Friction
 +
DecreaseFriction - Decrease Friction
 +
IncreasePower - Increase Power
 +
DecreasePower - Decrease Power
 +
 +
Подвеска колес 3x3
 +
Interface name: IMyMotorSuspension
 +
Parent: IMyMotorBase
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
bool Steering
 +
bool Propulsion
 +
float Damping
 +
float Strength
 +
float Friction
 +
float Power
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Steering - Steering On/Off
 +
Propulsion - Propulsion On/Off
 +
IncreaseDamping - Increase Damping
 +
DecreaseDamping - Decrease Damping
 +
IncreaseStrength - Increase Strength
 +
DecreaseStrength - Decrease Strength
 +
IncreaseFriction - Increase Friction
 +
DecreaseFriction - Decrease Friction
 +
IncreasePower - Increase Power
 +
DecreasePower - Decrease Power
 +
 +
Подвеска колес 5x5
 +
Interface name: IMyMotorSuspension
 +
Parent: IMyMotorBase
 +
Parent: IMyFunctionalBlock
 +
Fields:
 +
bool Steering
 +
bool Propulsion
 +
float Damping
 +
float Strength
 +
float Friction
 +
float Power
 +
Действия:
 +
OnOff - Toggle block On/Off
 +
OnOff_On - Toggle block On
 +
OnOff_Off - Toggle block Off
 +
Steering - Steering On/Off
 +
Propulsion - Propulsion On/Off
 +
IncreaseDamping - Increase Damping
 +
DecreaseDamping - Decrease Damping
 +
IncreaseStrength - Increase Strength
 +
DecreaseStrength - Decrease Strength
 +
IncreaseFriction - Increase Friction
 +
DecreaseFriction - Decrease Friction
 +
IncreasePower - Increase Power
 +
DecreasePower - Decrease Power
 +
 +
Обновление от 02/01/15 - Изменения: Доступные пространства имен.
 +
В настоящее время вы можете использовать только следующие пространства имен из Modding API:
 +
Sandbox.ModAPI.Ingame
 +
Sandbox.ModAPI.Interfaces
 +
Sandbox.Common.ObjectBuilders
 +
VRageMath
 +
VRage
 +
 +
Вы не можете использовать остальные пространства имен из Sandbox.ModAPI или любые другие пространства имен игры.
 +
 +
Перевёл Who You [http://vk.com/id185753949 Who You]

Revision as of 17:45, 2 January 2015





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

Ограничения:

Ниже вы найдете список известных ограничений о которых мы знаем, а так же возможные их решения.

Оператор "foreach" не работает на 64-битной системе. Проблема: На данный момент использование оператора "foreach" внутри скрипта приведет к "bad program expection" и остановит запуск скрипта. Мы работаем над устранением этой проблемы. Решение: Все наши внутри-игровые интерфейсы работают со списками (list) как с коллекциями. Пожалуйста, используйте итерационный цикл "for" для работы с ними.

Функция лямбды не работает. Проблема: На данный момент функция лямбды не поддерживается, если вы используете ее в скрипте, скрипт не запустится. Решение: Пожалуйста используйте метод вместо функции лямбды, если это возможно.

Пользовательские константы и статичные методы не работают. Проблема: На данный момент использование констант или статичных методов приводит к неработоспособности скрипта. Решение: Пожалуйста, не испольуйте в скрипте константы или статичные пользовательские методы.

Переменные, устанавливаемые пользователем - не сохраняются. Проблема: Пользовательские переменные используемые в скрипте не сохраняются и после загрузки возвращаются к своим значениям по умолчанию. Решение: Отсутствует.

Обзор интерфейса:

Программируемый блок.

Панель программируемого блока на данный момент содержит следующие кнопки:

Edit – открыть редактор для редактирования скриптов и возможности сохранения/загрузки их на диск. Также вы можете загрузить свои скрипты в "workshop" или загрузить себе скрипты, на которые вы подписаны. Run – запустить скрипт сохраненный в редакторе. Скрипт будет запущен один раз. Однако эта кнопка является действием в терминале и вы можете соединить ее с сенсором, таймером или добавить на панель быстрого доступа.

Редактор.

Редактор кода содержит следующие кнопки: Help – открыть мануал по программированию в игре. Check code – проверить код на наличие ошибок, а так же возможность использовать данный код. Remember & Exit – сохранить ваш код, закрывает экран редактора и переведет к панели терминала. Remember code – сохранить ваш код и оставит экран редактора открытым. Browse Workshop – открыть окно для управления скриптами, вы можете сохранить/загрузить скрипты на диск, загрузить свои скрипты в "workshop" или загрузить себе скрипты, на которые вы подписаны. Line counter – отобразить текущую строку кода и общее количество строк в коде.

Экран "Workshop".

Этот экран аналогичный экрану с чертежами и содержит следующие кнопки: Ok – загрузить выбранный скрипт в редактор и закроет экран. Cancel – закрыть экран (изменения не будут внесены в редактор) Details – открыть экран "детали", где вы можете увидеть описание скрипта. Rename (только для локальных скриптов) – переименовать выбранный скрипт, если вы попытаетесь переименовать существующий скрипт, игра попросит подтверждение. Delete (только для локальных скриптов) – удалить выбранный скрипт, после подтверждения. Create from editor – создать новый скрипт с именем по умолчанию Script_XX, которое начинается с 0, и если скрипт с уже выбранным именем существует, то числовое значение в названии будет повышено. Для примера, первым будет Script_0, далее Script_1 и т.д... Replace from editor (только для локальных скриптов) – заменить (после подтверждения пользователя) выбранный скрипт на скрипт из редактора. Refresh Scripts – обновить локальные скрипты и скрипты на которые вы подписаны.

Детали (локальный скрипт).

Этот экран показывает детали для локальных скриптов и содержит следующие кнопки: Rename – переименовать выбранный скрипт, если вы попытаетесь переименовать существующий скрипт, игра попросит подтверждение. Delete – удалить выбранный скрипт, после подтверждения. Publish – опубликовать выбранный скрипт в "workshop" и показать странницу с опубликованным скриптом. Browse Workshop – открыть экран "workshop" для просмотра, а также подписаться на скрипты. Close – закрыть экран.

Детали ("workshop" скрипт).

Этот экран показывает детали для скриптов из "workshop" и содержит следующие кнопки: Open in Workshop – открыть "workshop" страницу скрипта. Close – закрыть экран.

Гайд по программированию: Введение.

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

Метод Main. Метод Main - создается при первом открытии редактора, этот метод является основной точкой входа в ваш скрипт. При переименовании или удаление этого метода скрипт не запуститься и вы получите уведомление. Пользовательские методы/переменные могут быть определены и использованы но только внутри главного метода (main).

Видимость переменных. Есть два типа переменных для скрипта: -Local (внутри методов) - эти переменные будут хранить значение только во время выполнения метода. Подробнее - локальная переменная находится в области видимости до тех пор, пока закрывающая фигурная скобка не укажет конец блока операторов или метода, в котором она объявлена.А так же, объявленная в операторах цикла "for", "while" или подобных им, видима в пределах тела цикла. -Global (за пределами методов) - эти переменные будут хранить значения при работе всего скрипта. Подробнее - если переменная должна сохранить значение между отдельными блоками программы, она должна быть определена вне этих методов т.е. глобально. -После нажатия "Remember & Exit" или "Remember" кнопки, предыдущий скрипт будет переписан и все глобальные переменные будут потеряны.

Компиляция. Когда вы нажмете кнопку “Check code”, код будет скомпилирован, также будет показан результат компиляции. Процесс компиляции состоит из двух этапов: -Во первых, код внутри редактора будет проверен на синтаксические ошибки, внутри языка C# Если во время компиляции возникнут какие-либо ошибки, вы получите уведомление, а компиляция будет прервана. К примеру "ааа" строка была помещена перед главным методом. Это не правильное языковое построение и компиляция будет прервана. Также в сообщении об ошибке будет показана строка, в которой допущена ошибка и описание ошибки. -Во вторых, код будет проверен на наличие недопустимых имен или типов. Если во время компиляции возникнут какие-либо ошибки, вы получите уведомление, а компиляция будет прервана. К примеру System.IO.Directory был использован для удаления другого каталога. Это запрещено и вы получите уведомление: “Not allowed type was used in script”. -Если компиляция и проверка проходит успешно, вы получите уведомление. Это означает, что код не содержит ошибок в языке или не разрешенных методов.

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

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

Доступные интерфейсы.

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

Переменная GridTerminalSystem. В настоящее время, кроме "встроенных" переменных, пользователь может использовать переменную GridTerminalSystem. Она является точкой входа во всю сеть корабля, и имеет следующие доступные методы: List<IMyTerminalBlock> Blocks {get;} List<IMyBlockGroup> BlockGroups {get;} void GetBlocksOfType<T>(List<IMyTerminalBlock> blocks, Func<IMyTerminalBlock, bool> collect = null); void SearchBlocksOfName(string name,List<IMyTerminalBlock> blocks, Func<IMyTerminalBlock, bool> collect = null); IMyTerminalBlock GetBlockWithName(string name); С помощью этих методов все "терминальные" блоки внутри сети могут быть собраны.

Blocks - данное свойство возвращает все блоки из сети терминала, данный метод внутренне выделяет новую память. BlockGroups - возвращает все группы блоков из сети терминала, этот метод внутренне выделяет новую память. GetBlocksOfType - возвращает все блоки указанного типа. SearchBlocksOfName - данный метод является полнотекстовым поиском между всеми блоками и возвращает блок, который содержит искомую строку, поиск не чувствителен к регистру. GetBlockWithName - данный метод возвращает первый блок с точным названием, которое было задано, поиск чувствителен к регистру.

Func<IMyTerminalBlock, BOOL> собирающий метод можно использовать для определения условия поиска в категории. Например, собирающий метод "IMyRadioAntenna" может определить функцию поиска, чтобы найти только включенные антенны или антенны с определенным диапазоном действия.

IMyCubeBlock IMyCubeBlock это базовый класс для каждого "терминального" блока. Он имеет следующие свойства и методы: BOOL IsBeingHacked {get; } BOOL IsFunctional {get; } BOOL IsWorking {get; } VRageMath.Vector3I Position {get; }

IsFunctional - свойство сообщает, если блок достроен до уровня, когда он может работать. IsWorking - свойство сообщает, имеет ли данный блок достаточное питание для работы.

IMyTerminalBlock IMyTerminalBlock это базовый класс для каждого "терминального" блока. Он имеет следующие свойства и методы:

string CustomName string CustomNameWithFaction string DetailedInfo bool HasLocalPlayerAccess() bool HasPlayerAccess(long playerId) void RequestShowOnHUD(bool enable) void SetCustomName(string text) void SetCustomName(StringBuilder text) bool ShowOnHUD void GetActions(List<Sandbox.ModAPI.Interfaces.ITerminalAction> resultList, Func<Sandbox.ModAPI.Interfaces.ITerminalAction, bool> collect = null); void SearchActionsOfName(string name,List<Sandbox.ModAPI.Interfaces.ITerminalAction> resultList, Func<Sandbox.ModAPI.Interfaces.ITerminalAction, bool> collect = null); Sandbox.ModAPI.Interfaces.ITerminalAction GetActionWithName(string name);

GetActions - данный метод возвращает все доступные действия для текущего блока. SearchActionsOfName - данный метод является полнотекстовым поиском между всеми действиями блока и возвращает действия, название которых содержит искомую строку, например, если блок имеет действия: "OnOff, OnOff_On, OnOff_Off".

SearchActionsOfName с "OnOff" - вернет все действия SearchActionsOfName с "_On" - вернется только "OnOff_On", поиск "On" вернет все действия. Поиск не чувствителен к регистру.

GetActionWithName - данный метод вернет первое найденное действие с точным названием, которое совпадает с заданным, поиск чувствителен к регистру.

ITerminalAction ITerminalAction предоставляет определенные действия, которые могут быть выполнены. Он имеет следующие свойства и методы: string Id { get; } StringBuilder Name { get; } void Apply(Sandbox.ModAPI.Ingame.IMyCubeBlock block);

Id - это обозначение действия, к примеру: "OnOff", "OnOff_On" Name - это название действия, которое будет показано в интерфейсе, к примеру: "Toggle block On/Off ,Toggle block On" Apply - применяет действие к выбранному блоку (вам нужно определить блок, из которого вы берете действие).

IMyFunctionalBlock IMyFunctionalBlock - это базовый класс для каждого блока, который может быть включен или выключен, он наследуется от IMyTerminalBlock. Для примера, каждый блок имеющий функции, является "терминальным", но не все "терминальные" блоки могут быть включены или выключены. Он имеет одно свойство: bool Enabled Это свойство отображает: включен или выключен данный блок пользователем.

Блоки и действия, список - 1/3

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

Родитель: каждый блок имеет родителя (все блоки имеют "IMyTerminalBlock" как родителя), это нужно для того, чтобы получить все блоки одного типа, вместо конкретного блока. К примеру, если вы хотите получить все блоки света, следует использовать "IMyLightningBlock", а если вы хотите использовать только блок ламы, вы используете "IMyInteriorLight".

Поля: данное свойство блока доступно только для чтения. К примеру из "IMyBeacon" вы можете получить свойство радиуса. И основываясь на этом свойстве вы можете увеличить/уменьшить радиус маяка.

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

Одинаковые класс блоков имеют разный "SubTypeID". Одинаковые блоки, которые имеют тех же родителей (к примеру <TypeId> в файле "cubeblocks.sbc") и различаются только по субтипу (к примеру<SubtypeId>). Это значит, что различия между этими блоками в коде нет. Примером таких блоков являются грузовые контейнеры: в игре есть три типа грузовых контейнеров: малый, средний и большой. Они различаются только по субтипу, но имеют общий тип. К примеру "Id" большого контейнера: <Id> <TypeId>CargoContainer</TypeId> <SubtypeId>LargeBlockLargeContainer</SubtypeId> </Id> Средний контейнер: <Id> <TypeId>CargoContainer</TypeId> <SubtypeId>SmallBlockMediumContainer</SubtypeId> </Id> Малый контейенер: <Id> <TypeId>CargoContainer</TypeId> <SubtypeId>LargeBlockSmallContainer</SubtypeId> </Id>

В этом случае есть только один класс "IMyCargoContainer" для всех типов грузовых контейнеров.

Антенна Имя интерфейса: IMyRadioAntenna Родитель: IMyFunctionalBlock Поля: float Radius Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл IncreaseRadius - Увеличить радиус вещания DecreaseRadius - Уменьшить радиус вещания

Дуговая печь Имя интерфейса: IMyRefinery Родитель: IMyProductionBlock Родитель: IMyFunctionalBlock Поля: bool UseConveyorSystem Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл UseConveyor - Использовать систему конвейеров вкл/выкл

Искусственная масса Имя интерфейса: IMyVirtualMass Родитель: IMyFunctionalBlock Поля: None Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл

Сборщик Имя интерфейса: IMyAssembler Родитель: IMyProductionBlock Родитель: IMyFunctionalBlock Поля: bool UseConveyorSystem Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл UseConveyor - Использовать систему конвейеров вкл/выкл

Батарея Имя интерфейса: IMyBatteryBlock Родитель: IMyFunctionalBlock Поля: bool HasCapacityRemaining Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл Recharge - Перезарядка вкл/выкл

Маяк Имя интерфейса: IMyBeacon Родитель: IMyFunctionalBlock Поля: float Radius Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл IncreaseRadius - Увеличить радиус вещания DecreaseRadius - Уменьшить радиус вещания

Кнопочная панель Имя интерфейса: IMyButtonPanel Поля: bool AnyoneCanUse Действия: AnyoneCanUse - Все могут использовать вкл/выкл

Камера Имя интерфейса: IMyCameraBlock Родитель: IMyFunctionalBlock Поля: None Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл View - Вид

Кабина Имя интерфейса: IMyCockpit Родитель: IMyShipController Поля: bool ControlWheels bool ControlThrusters bool HandBrake bool DampenersOverride Действия: ControlThrusters - Управление ускорителями вкл/выкл ControlWheels - Управление колесами вкл/выкл HandBrake - Ручной тормоз вкл/выкл DampenersOverride - Гаситель инерции вкл/выкл

Сборщик Имя интерфейса: IMyCollector Родитель: IMyFunctionalBlock Поля: bool UseConveyorSystem Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл UseConveyor - Использовать систему конвейеров вкл/выкл

Коннектор Имя интерфейса: IMyShipConnector Родитель: IMyFunctionalBlock Поля: bool ThrowOut bool CollectAll bool IsLocked Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл ThrowOut - Выбросить вкл/выкл CollectAll - Собирать всё вкл/выкл SwitchLock - Переключить стыковки

Панель управления Имя интерфейса: IMyControlPanel Поля: None Действия: None

Терминал управления Имя интерфейса: IMyCockpit Родитель: IMyShipController Поля: bool ControlWheels bool ControlThrusters bool HandBrake bool DampenersOverride Действия: ControlThrusters - Управление ускорителями вкл/выкл ControlWheels - Управление колесами вкл/выкл HandBrake - Ручной тормоз вкл/выкл DampenersOverride - Гаситель инерции вкл/выкл

Дверь Имя интерфейса: IMyDoor Родитель: IMyFunctionalBlock Поля: bool Open Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл Open - Открыто/Закрыто Open_On - Открыто Open_Off - Закрыто

Бур Имя интерфейса: IMyShipDrill Родитель: IMyFunctionalBlock Поля: bool UseConveyorSystem Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл UseConveyor - Использовать систему конвейеров вкл/выкл

Кресло пилота Имя интерфейса: IMyCockpit Родитель: IMyShipController Поля: bool ControlWheels bool ControlThrusters bool HandBrake bool DampenersOverride Действия: ControlThrusters - Управление ускорителями вкл/выкл ControlWheels - Управление колесами вкл/выкл HandBrake - Ручной тормоз вкл/выкл DampenersOverride - Гаситель инерции вкл/выкл

Турель Гатлинга Имя интерфейса: IMyLargeGatlingTurret Родитель: IMyLargeConveyorTurretBase Родитель: IMyLargeTurretBase Родитель: IMyFunctionalBlock Поля: bool UseConveyorSystem bool CanControl float Range Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл Control - Управление IncreaseRange - Увеличить радиус DecreaseRange - Уменьшить радиус UseConveyor - Использовать систему конвейеров вкл/выкл

Генератор гравитации Имя интерфейса: IMyGravityGenerator Родитель: IMyGravityGeneratorBase Родитель: IMyFunctionalBlock Поля: float FieldWidth float FieldHeight float FieldDepth float Gravity Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл IncreaseWidth - Увеличить ширину поля DecreaseWidth - Уменьшить ширину поля IncreaseHeight - Увеличить высоту поля DecreaseHeight - Уменьшить высоту поля IncreaseDepth - Увеличить глубину поля DecreaseDepth - Уменьшить глубину поля IncreaseGravity - Увеличить ускорение DecreaseGravity - Уменьшить ускорение

Резак Имя интерфейса: IMyShipGrinder Родитель: IMyShipToolBase Родитель: IMyFunctionalBlock Поля: None Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл UseConveyor - Использовать систему конвейеров вкл/выкл

Гироскоп Имя интерфейса: IMyGyro Родитель: IMyFunctionalBlock Поля: float GyroPower bool GyroOverride float Yaw float Pitch float Roll Действия: OnOff - Переключить блок вкл/выкл OnOff_On - Переключить блок вкл OnOff_Off - Переключить блок выкл IncreasePower - Увеличить мощность DecreasePower - Уменьшить мощность Override - Перехват управления вкл/выкл IncreaseYaw - Увеличить рысканье DecreaseYaw - Уменьшить рысканье IncreasePitch - Увеличить тангаж DecreasePitch - Уменьшить тангаж IncreaseRoll - Увеличить крен DecreaseRoll - Уменьшить крен

Блоки и действия, список - 2/3

Лампа Interface name: IMyInteriorLight Parent: IMyLightingBlock Parent: IMyFunctionalBlock Fields: float Radius float Intensity float BlinkIntervalSeconds float BlinkLenght float BlinkOffset Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off IncreaseRadius - Increase Radius DecreaseRadius - Decrease Radius IncreaseBlink Interval - Increase Blink Interval DecreaseBlink Interval - Decrease Blink Interval IncreaseBlink Lenght - Increase Blink Length DecreaseBlink Lenght - Decrease Blink Length IncreaseBlink Offset - Increase Blink Offset DecreaseBlink Offset - Decrease Blink Offset

Турель Interface name: IMyLargeInteriorTurret Parent: IMyLargeTurretBase Parent: IMyFunctionalBlock Fields: bool CanControl float Range Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Control - Control IncreaseRange - Increase Radius DecreaseRange - Decrease Radius

Посадочные шасси Interface name: IMyLandingGear Parent: IMyFunctionalBlock Fields: float BreakForce Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Lock - Lock Unlock - Unlock SwitchLock - Switch lock Autolock - Autolock On/Off IncreaseBreakForce - Increase Break Force DecreaseBreakForce - Decrease Break Force

Малый грузовой контейнер Interface name: IMyCargoContainer Fields: None Действия: None

Средний грузовой контейнер Interface name: IMyCargoContainer Fields: None Действия: None

Большой грузовой контейнер Interface name: IMyCargoContainer Fields: None Действия: None

Малый реактор Interface name: IMyReactor Parent: IMyFunctionalBlock Fields: bool UseConveyorSystem Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off UseConveyor - Use Conveyor System On/Off

Большой реактор Interface name: IMyReactor Parent: IMyFunctionalBlock Fields: bool UseConveyorSystem Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off UseConveyor - Use Conveyor System On/Off

Малый ускоритель Interface name: IMyThrust Parent: IMyFunctionalBlock Fields: float ThrustOverride Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off IncreaseOverride - Increase Thrust override DecreaseOverride - Decrease Thrust override

Большой ускоритель Interface name: IMyThrust Parent: IMyFunctionalBlock Fields: float ThrustOverride Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off IncreaseOverride - Increase Thrust override DecreaseOverride - Decrease Thrust override

Медпункт Interface name: IMyMedicalRoom Parent: IMyFunctionalBlock Fields: None Действия: OnOff -> Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off

Стыковочный блок Interface name: IMyShipMergeBlock Parent: IMyFunctionalBlock Fields: None Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off

Ракетная турель Interface name: IMyLargeMissileTurret Parent: IMyLargeConveyorTurretBase Parent: IMyLargeTurretBase Parent: IMyFunctionalBlock Fields: bool UseConveyorSystem bool CanControl float Range Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Control - Control IncreaseRange - Increase Radius DecreaseRange - Decrease Radius UseConveyor - Use Conveyor System On/Off

Детектор руды Interace name: IMyOreDetector Parent: IMyFunctionalBlock Fields: float Range bool BroadcastUsingAntennas Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off

Пассажирское кресло Interface name: IMyCockpit Parent: IMyShipController Fields: bool ControlWheels bool ControlThrusters bool HandBrake bool DampenersOverride Действия: ControlThrusters - Control thrusters On/Off ControlWheels - Control wheels On/Off HandBrake - Handbrake On/Off DampenersOverride - Inertia dampeners On/Off

Поршень Interface name: IMyPistonBase Parent: IMyFunctionalBlock Fields: float Velocity float MinLimit float MaxLimit Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Reverse - Reverse IncreaseVelocity - Increase Velocity DecreaseVelocity - Decrease Velocity ResetVelocity - Reset Velocity IncreaseUpperLimit - Increase Maximal distance DecreaseUpperLimit - Decrease Maximal distance IncreaseLowerLimit - Increase Minimal distance DecreaseLowerLimit - Decrease Minimal distance

Programmable block Interface name: IMyProgrammableBlock Parent: IMyFunctionalBlock Fields: bool IsRunning Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Run - Run

Блоки и действия, список - 3/3

Очистительный завод Interface name: IMyRefinery Parent: IMyFunctionalBlock Parent: IMyProductionBlock Fields: bool UseConveyorSystem Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off UseConveyor - Use Conveyor System On/Off

Прожектор Interface name: IMyReflectorLight Parent: IMyLightingBlock Parent: IMyFunctionalBlock Fields: float Radius float Intensity float BlinkIntervalSeconds float BlinkLenght float BlinkOffset Spotlight OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off IncreaseRadius - Increase Radius DecreaseRadius - Decrease Radius IncreaseBlink Interval - Increase Blink Interval DecreaseBlink Interval - Decrease Blink Interval IncreaseBlink Lenght - Increase Blink Length DecreaseBlink Lenght - Decrease Blink Length IncreaseBlink Offset - Increase Blink Offset DecreaseBlink Offset - Decrease Blink Offset

Удаленное управление Interface name: IMyRemoteControl Parent: IMyShipController Fields: bool ControlWheels bool ControlThrusters bool HandBrake bool DampenersOverride Действия: ControlThrusters - Control thrusters On/Off ControlWheels - Control wheels On/Off HandBrake - Handbrake On/Off DampenersOverride - Inertia dampeners On/Off Control - Control

Ракетная установка Interface name: IMySmallMissileLauncher Parent: IMyFunctionalBlock Fields: bool UseConveyorSystem Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off UseConveyor - Use Conveyor System On/Off

Перезаряжаемая ракетница Interface name: IMySmallMissileLauncherReload Parent: IMyFunctionalBlock Fields: bool UseConveyorSystem Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off UseConveyor - Use Conveyor System On/Off

Двигатель Interface name: IMyMotorStator Parent: IMyMotorBase Parent: IMyFunctionalBlock Fields: bool IsAttached float Torque float BrakingTorque float Velocity float LowerLimit float UpperLimit float Displacement Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Reverse - Reverse Detach - Detach Attach - Attach IncreaseTorque - Increase Torque DecreaseTorque - Decrease Torque IncreaseBrakingTorque - Increase Braking tor. DecreaseBrakingTorque - Decrease Braking tor. IncreaseVelocity - Increase Velocity DecreaseVelocity - Decrease Velocity ResetVelocity - Reset Velocity IncreaseLowerLimit - Increase Lower limit DecreaseLowerLimit - Decrease Lower limit IncreaseUpperLimit - Increase Upper limit DecreaseUpperLimit - Decrease Upper limit IncreaseDisplacement - Increase Rotor displacement DecreaseDisplacement - Decrease Rotor displacement

Сенсор Interface name: IMySensorBlock Parent: IMyFunctionalBlock Fields: float LeftExtend float RightExtend float TopExtend float BottomExtend float FrontExtend float BackExtend bool DetectPlayers bool DetectFloatingObjects bool DetectSmallShips bool DetectLargeShips bool DetectStations bool DetectAsteroids Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off IncreaseLeft - Increase Left extent DecreaseLeft - Decrease Left extent IncreaseRight - Increase Right extent DecreaseRight - Decrease Right extent IncreaseBottom - Increase Bottom extent DecreaseBottom - Decrease Bottom extent IncreaseTop - Increase Top extent DecreaseTop - Decrease Top extent IncreaseBack - Increase Back extent DecreaseBack - Decrease Back extent IncreaseFront - Increase Front extent DecreaseFront - Decrease Front extent Detect Players - Detect players On/Off Detect Floating Objects - Detect floating objects On/Off Detect Small Ships - Detect small ships On/Off Detect Large Ships - Detect large ships On/Off Detect Stations - Detect stations On/Off Detect Asteroids - Detect Asteroids On/Off

Солнечная панель Interface name: IMySolarPanel Fields: None Действия: None

Sound Block Interface name: IMySoundBlock Parent: IMyFunctionalBlock Fields: float Volume float Range bool IsSoundSelected float LoopPeriod Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off IncreaseVolumeSlider - Increase Volume DecreaseVolumeSlider - Decrease Volume IncreaseRangeSlider - Increase Range DecreaseRangeSlider - Decrease Range PlaySound - Play StopSound - Stop IncreaseLoopableSlider - Increase Loop time DecreaseLoopableSlider - Decrease Loop time

Сферический генератор гравитации Interface name: IMyGravityGeneratorSphere Parent: IMyGravityGeneratorBase Parent: IMyFunctionalBlock Fields: float Radius float Gravity Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off IncreaseRadius - Increase Radius DecreaseRadius - Decrease Radius IncreaseGravity - Increase Acceleration DecreaseGravity - Decrease Acceleration

Таймер Interface name: IMyTimerBlock Parent: IMyFunctionalBlock Fields: bool IsCountingDown float TriggerDelay Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off IncreaseTriggerDelay - Increase Delay DecreaseTriggerDelay - Decrease Delay TriggerNow - Trigger now Start - Start Stop - Stop

Боеголовка Interface name: IMyWarhead Fields: bool IsCountingDown float DetonationTime Действия: IncreaseDetonationTime - Increase Detonation time DecreaseDetonationTime - Decrease Detonation time StartCountdown - Start countdown StopCountdown - Stop countdown Safety - Safety On/Off Detonate - Detonate

Сварщик Interface name: IMyShipWelder Parent: IMyShipToolBase Parent: IMyFunctionalBlock Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off UseConveyor - Use Conveyor System On/Off

Подвеска колес 1x1 Interface name: IMyMotorSuspension Parent: IMyMotorBase Parent: IMyFunctionalBlock Fields: bool Steering bool Propulsion float Damping float Strength float Friction float Power Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Steering - Steering On/Off Propulsion - Propulsion On/Off IncreaseDamping - Increase Damping DecreaseDamping - Decrease Damping IncreaseStrength - Increase Strength DecreaseStrength - Decrease Strength IncreaseFriction - Increase Friction DecreaseFriction - Decrease Friction IncreasePower - Increase Power DecreasePower - Decrease Power

Подвеска колес 3x3 Interface name: IMyMotorSuspension Parent: IMyMotorBase Parent: IMyFunctionalBlock Fields: bool Steering bool Propulsion float Damping float Strength float Friction float Power Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Steering - Steering On/Off Propulsion - Propulsion On/Off IncreaseDamping - Increase Damping DecreaseDamping - Decrease Damping IncreaseStrength - Increase Strength DecreaseStrength - Decrease Strength IncreaseFriction - Increase Friction DecreaseFriction - Decrease Friction IncreasePower - Increase Power DecreasePower - Decrease Power

Подвеска колес 5x5 Interface name: IMyMotorSuspension Parent: IMyMotorBase Parent: IMyFunctionalBlock Fields: bool Steering bool Propulsion float Damping float Strength float Friction float Power Действия: OnOff - Toggle block On/Off OnOff_On - Toggle block On OnOff_Off - Toggle block Off Steering - Steering On/Off Propulsion - Propulsion On/Off IncreaseDamping - Increase Damping DecreaseDamping - Decrease Damping IncreaseStrength - Increase Strength DecreaseStrength - Decrease Strength IncreaseFriction - Increase Friction DecreaseFriction - Decrease Friction IncreasePower - Increase Power DecreasePower - Decrease Power

Обновление от 02/01/15 - Изменения: Доступные пространства имен. В настоящее время вы можете использовать только следующие пространства имен из Modding API: Sandbox.ModAPI.Ingame Sandbox.ModAPI.Interfaces Sandbox.Common.ObjectBuilders VRageMath VRage

Вы не можете использовать остальные пространства имен из Sandbox.ModAPI или любые другие пространства имен игры.

Перевёл Who You Who You