プログラミングガイド

Last-modified: 2016-08-25 (木) 02:52:51

このページはOfficial Guide: Programmable blockを訳したものです。
現状、これが公式ドキュメントになっていると言っていいでしょう。
ただし、C#の基礎知識を持っているのを前提としています。
(出来ない方はタイマーブロックやセンサーブロックなどで行ってくださいということでしょう)
修正など、お気軽にお願いします。


既知の制限

以下は、回避可能であると思われる既知の制限の一覧です

64bitでforeachが動作しない

問題:
現在、foreachを使った一部の構成で"bad program exception"が発生し、プログラムが実行できません。これについては修正中です。

回避策:
ゲーム内のスクリプトで使用できるインターフェースは、コレクションとしてリストを使用しています。これらのリストではforループを使用してください。

ラムダ式が動作しない

問題:
現在、ラムダ式はサポートされていません。使用しようとすると例外がスローされ実行できません。

回避策
可能であればラムダ式の代わりにメソッドを使用してください。

ユーザー定義の変数の値が保存されない

問題:
スクリプト内でユーザーが定義した変数は、ゲームをロードした後に値がリセットされ、保存されません。(実行中にリログとかすると値が消えるってことだと思う)

回避策:
ブロックがロード・セーブされた際、同様にロード・セーブされる「Storage」と呼ばれる文字列変数を追加しました。
※補足
既存フィールドなので Storage という名でそのままアクセスできます。
初期値はnullではなく空文字列です。

GUI概要

Programing block

Programing blockには、現在2つのボタンがあります。

Edit:
スクリプトを保存・読み込み・編集できるエディタを開きます。
また、ワークショップにスクリプトをアップロードしたり、サブスクライブ中のスクリプトをロードすることが出来ます。

Run:
エディタでロードしたプログラムを一回だけ実行します。
コンソールから直接使用することも出来ますが、タイマーやセンサーから呼び出したり、ボタンまたはツールバーに設定することも出来ます。

(画像)
スクリプトの例外が発生した時、左下の詳細表示欄にそれらが表示されます。

エディタ

(画像)
エディタには以下のボタンが用意されています。
Help:ゲーム内でヘルプガイドを開きます。(Steamのオーバーレイ表示のブラウザでhttp://steamcommunity.com/sharedfiles/filedetails/?id=360966557が開きます)
Check Code:エラーと使用が禁止されているコードをチェックします。
Remember & Exit:保存してエディタを終了し、コンソールに戻ります。(左上の☓を押すと保存しないで終了する)
Remember code:コードを保存します。
Browse Workshop:コードを(Blueprintみたいに)セーブ・ロードしたりワークショップにアップロードやダウンロードができるスクリプト管理ウインドウが開きます。
Line counter:現在の行数/コード全体の行数を表示します。(ボタンではない)

スクリプト管理ウインドウ

(画像)
この画面にはBlueprint管理ウインドウに似ており、以下のボタンが用意されています。
Ok:選択したスクリプトをロードし、画面を閉じエディタに戻ります。
Cancel:エディタに変更を加えず画面を閉じエディタに戻ります。
Details:Detailsウインドウが開き、スクリプトの詳細が表示されます。
Rename:選択したスクリプトの名前を変更します。また、上書き保存使用とした場合にも名前を変更するか聞いてきます。(名前変更ができるのはローカルのスクリプトのみで、サブスクライブしたのは変更できない)
Delete:選択したスクリプトを削除します。(ローカルスクリプトのみ)
Create from editor:デフォルト名の新しいスクリプトを生成します。(Script_0から始まりScript_1、Script_2・・・と続く)
Replace from editor:エディタの内容と選択したスクリプトを入れ替えます。(ローカルのみ)
Refresh Scripts:ローカルスクリプトとサブスクライブ中のスクリプトをリロードします。

詳細 (ローカルにあるスクリプト)

(画像)
ローカルスクリプトを選択しDetailsを押すとこの画面が表示され、選択したスクリプトの詳細が表示されます。
Rename:名前を変更します。
Delete:スクリプトを削除します。
Publish: ワークショップにアップロードした後、アップロードされたページを開きます。
Browse Workshop:ワークショップが表示されます。
Close:このウインドウを閉じます。

詳細 (ワークショップでサブスクライブしたスクリプト)

(画像)
ワークショップでサブスクライブしたコードを選択してDetailsを押すとこの画面が表示され、スクリプトの詳細が表示されます。
Open in Workshop:指定したスクリプトのワークショップのページを開きます。
Close:このウインドウを閉じます。

プログラミングガイド

はじめに

エディタへのアクセス

一人だけが同時に1ブロック内エディタ(以下 同エディタ)の内容を編集することができます。
こちらが開こうとした時に、別プレイヤーが同エディタを開いている場合、
"that editor is already open."と通知され、弾かれます。

Mainメソッド

エディタを初めて開いたとき、"void Main()" メソッドが記入されています。
これは、スクリプトを実行するときに呼び出されるエントリポイントです。
Mainメソッドは、削除・名前変更を行うと、スクリプトが実行されずにprogrammable block詳細領域に通知されます。
カスタムメソッドや変数を定義し、使用できますが、Mainメソッドのみがスクリプトの起動に対して呼び出されることができます。

変数の寿命

スクリプトの変数には2つのタイプがあります。
ローカル(メソッド内) - これらの変数は、メソッドの実行中の間、値を維持します。
メソッドが終了すると、値が失われます。
グローバル(メソッドの外に) - これらの変数は、スクリプトの有効中の間、値を保持します。
例えば、変数は、1プログラムの実行中に値を保持する必要がある場合、メソッドの外部で定義される必要がある。
「Remember&Exit」または「Remenber」ボタンをクリックすると、以前のスクリプトが上書きされ、すべてのグローバル変数は失われます。

コンパイル

「Check code」ボタンが押されると、コードはコンパイルされ、その結果が表示されます。
コンパイルプロセスには2ステップがあります:
1. エディタ内のコードは、C#言語のエラーを検出するためにC#言語用コンパイラを使用する。
コンパイル中にエラーが発生した場合、以下の画像のような画面が表示される。
(画像)
この場合は"aaa"の文字列がMainメソッドの前に置かれている。
この画面はC#言語として検出されるエラーをまとめたものです。
エラーを検出した行番号とその説明が示されている。

2. "1"後、コードが無許可の名前空間と型の使用方法を確認する。チェックが失敗した場合には、
以下のダイアログが表示されます:
(画像)
この場合"System.IO.Directory"クラスは、いくつかのディレクトリを削除するために使用できる。故に使用できないクラスとしています。
エラーは「使用出来ない型がスクリプトで使用されたこと」を示している。

1&2を通過した場合には"Compilation succesfull."とダイアログが表示される。
これは、コンパイルしたコードにC#エラーや無許可メソッドが含まれていないことを指します。

スクリプトの実行

「Run」ボタンをクリックされるか、「Run」が端末アクションとして割り当てられている場合、スクリプトが実行される。

現在、ファイル名を指定しての「Run」は手動などで呼び出す必要があります。
ユーザーは「Run」ボタンをクリックするか、端末アクションとしてそれを添付する必要があります。

スクリプトは、クライアントから呼び出された場合でも、サーバー上でのみ実行されます。
スクリプトの実行中に何かの例外がcatchされなかった場合、全クライアントは、障害に関するprogrammable blockの詳細エリアに通知されます。
スクリプトの実行中に例外を通知した場合、ユーザーがエディタを開き、スクリプトを変更しない限り、スクリプトが再実行されません。

命令のカウント

スクリプトが実行される度に、スクリプトの全ての命令がカウントされる。スクリプトが上限を超える命令を実行すると、実行は停止され、ユーザは、スクリプトの実行のためには複雑すぎることが通知される。ゲームがフリーズするスクリプトを防止するための措置です。

利用可能なインターフェイス

可能なアクション

現在は、端末のアクションは、スクリプトの中に設定することができます。
ユーザーは、プログラム可能なブロックが配置されているグリッドの端末システムにアクセスし、グリッドで任意のブロック上の任意の端末アクションを設定することができます。

GridTerminalSystem変数

GridTerminalSystem: ユーザが現在使用可能な「組み込み」の変数。
これは、グリッド全体端末システムのエントリポイントである。
それは、以下のメソッドを利用できます。

List<IMyTerminalBlock> Blocks{ get; }
グリッドターミナルの全ブロックを取得します。取得時、内部的に新しいメモリを割り当てます。
List<IMyBlockGroup> BlockGroups { get; }
グリッドターミナルの全グループを取得します。取得時、内部的に新しいメモリを割り当てます。
void GetBlocksOfType<T>(List<IMyTerminalBlock> blocks, Func<IMyTerminalBlock, bool> collect = null);
すべてのTクラス型ブロックをblocksに取得します。
void SearchBlocksOfName(string name,List<IMyTerminalBlock> blocks, Func<IMyTerminalBlock, bool> collect = null);
全ブロック間の全文検索と検索された文字列が含まれているブロックをblocksに返す。
検索では大文字と小文字を区別しません。
IMyTerminalBlock GetBlockWithName(string name);
正確な名前で見つかる最初のブロックを取得します。検索では大文字と小文字が区別されます。

これらの方法では、グリッドにおける全ターミナルブロックを回収することができる。

Func<IMyTerminalBlock, bool> collect とは?

検索条件を定義するために使用することができる。
例えばIMyRadioAntennaのみ、特定の範囲のアンテナまたはアンテナのオン状態を検索、または収集するための機能を定義することができます。
(要するにbool値を返すコールバック関数)

IMyCubeBlock

IMyCubeBlockは全てのターミナルブロックの基本クラスです。

bool IsBeingHacked { get; }
敵対勢力からブロックを解体(物理ハッキング)されている間trueになります
bool IsFunctional { get; }
現在のブロックが動作可能なレベルに構築されているかを返します。
bool IsWorking { get; }
現在のブロックに電源が入っているかを返します。
VRageMath.Vector3I Position { get; }
ブロックの位置を返します。

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);
検索文字列などが含まれているすべてのブロックアクションとアクション間の全文検索をします。

例えばブロックに以下のアクションがある場合:OnOff, OnOff_On, OnOff_Off

OnOff: 全アクションが返されます。
_On: OnOff_Onのみが返されます。
On: 全アクションが返されます。
検索では大文字と小文字を区別しません。

Sandbox.ModAPI.Interfaces.ITerminalAction GetActionWithName(string name);
正確な名前を持つ最初のアクションを取得します。検索では大文字と小文字が区別されます。

ITerminalAction

トリガすることができる具体的なアクションを表現したものです。

string Id { get; }
例: OnOff, OnOff_On
StringBuilder Name { get; }
アクションの名前は、UIに示されている、
例: Toggle block On/Off,Toggle block On
void Apply(Sandbox.ModAPI.Ingame.IMyCubeBlock block);
block引数のためのアクションを適用(あなたが行動を取ったブロックを提供する必要があります)

IMyFunctionalBlock

IMyTerminalブロックなどから継承し、オンまたはオフにすることができ、ブロックごとの基本クラスです。
すべての機能ブロックは、ターミナルブロックの大半を、端末のブロックがオンまたはオフにすることができます。
bool Enabled
ユーザーがオンまたはオフにされているかを返します

ターミナルブロック及びアクションのリスト(長い!)

但し書き

全てのターミナルブロックには、次のプロパティがあります。

Interface name(インターフェイス名)

コード内でのブロックの名前です。建造画面で表示される名前と異なる場合があります。
例: Antennaのインタフェース名はIMyRadioAntennaです
全アンテナを取得したい場合は、このインターフェイスを使用する必要があります。

Parent(親)

全ブロックが親(継承元)としてIMyTerminalBlockを有する。
それ以外でのブロックの親であり、コンクリートブロックタイプのブロックタイプを取得するために使用することができる。
例: グリッド内の全ライトを取得したい場合、IMyLightingBlockを使用することができます。
単体のInteriorLightを使用したい場合には、IMyInteriorLightを使用します。

Field(フィールド)

ブロックで使用可能な読取専用フィールド
例: IMyBeaconの場合、Radiusプロパティを取得することができます。
このプロパティに基づいてビーコンの半径(Radius)を増減させることができます。

Actions(アクション)

ブロックへのすべてのアクションは、対応する名前がゲーム内にあります。
あなたがアンテナのブロードキャスト半径を大きくしたい場合は、
ブロックごとにDecreaseRadiusアクションを実行する必要があります。

Terminal properties (端末設定)

これらは、端末の特性を取得・設定することができる。それは端末内に直接これらの値を設定することと同じです。アンテナの送信半径として浮動小数点値を設定し、 GetValueFloat(String propertyName) を使用できます。あなたは、このガイドの各ブロックのプロパティ名を検索できます。 値を設定するには、SetValueFloat(String propertyName, float value) を使用できます。
例:
アンテナ
GetValueFloat("Radius") 現在の半径を取得します。
(アンテナのプロパティ"Radius"を使用しているのと同様の動作)
SetValueFloat("Radius",10) アンテナの発信半径を10に設定します。

また、
void GetProperties(List<ITerminalProperty> resultList, Func<ITerminalProperty, bool> collect = null)
を使用できます。現在のブロックのすべてのプロパティを取得します。

同じブロッククラスでの異なるSubTypeID

いくつかのブロックは、同じ親(例: <TypeId> in cubeblocks.sbc)を持つとサブタイプ(例: <SubtypeId>)によってのみ異なります。
これは、コードでこれらのブロックの間には区別がないことを意味します。

カーゴコンテナを例とすると・・・
ゲーム内にはカーゴコンテナだけでサイズ別に3種類あります: small medium large
これらの3つのタイプがSubTypeのみが異なるとTypeは同じです。

例えばラージカーゴコンテナの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>

この場合、カーゴコンテナの全タイプをまとめた1つのクラスがIMyCargoContainerである。

Antenna

Interface name: IMyRadioAntenna
Parent: IMyFunctionalBlock
Fields: float Radius
Terminal properties: Radius -> Single
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
IncreaseRadius -> Increase Broadcast radius
DecreaseRadius -> Decrease Broadcast radius

Arc furnace

Interface name: IMyRefinery
Parent: IMyProductionBlock
Parent: IMyFunctionalBlock
Fields: bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Artificial Mass

Interface name: IMyVirtualMass
Parent: IMyFunctionalBlock
Fields: None
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off

Assembler

Interface name: IMyAssembler
Parent: IMyProductionBlock
Parent: IMyFunctionalBlock
Fields: bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Battery

Interface name: IMyBatteryBlock
Parent: IMyFunctionalBlock
Fields: bool HasCapacityRemaining
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
Recharge -> Recharge On/Off

Beacon

Interface name: IMyBeacon
Parent: IMyFunctionalBlock
Fields: float Radius
Terminal properties:
Radius -> Single
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
IncreaseRadius -> Increase Broadcast radius
DecreaseRadius -> Decrease Broadcast radius

Button Panel

Interface name: IMyButtonPanel
Fields: bool AnyoneCanUse
Actions:
AnyoneCanUse -> Anyone Can Use On/Off

Camera

Interface name: IMyCameraBlock
Parent: IMyFunctionalBlock
Fields: None
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
View -> View

Cockpit

Interface name: IMyCockpit
Parent: IMyShipController
Fields:
bool ControlWheels
bool ControlThrusters
bool HandBrake
bool DampenersOverride
Actions:
ControlThrusters -> Control thrusters On/Off
ControlWheels -> Control wheels On/Off
HandBrake -> Handbrake On/Off
DampenersOverride -> Inertia dampeners On/Off

Collector

Interface name: IMyCollector
Parent: IMyFunctionalBlock
Fields: bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Connector

Interface name: IMyShipConnector
Parent: IMyFunctionalBlock
Fields:
bool ThrowOut
bool CollectAll
bool IsLocked
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
ThrowOut -> Throw Out On/Off
CollectAll -> Collect All On/Off
SwitchLock -> Switch lock

Control Panel

Interface name: IMyControlPanel
Fields: None
Actions: None

Control Station

Interface name: IMyCockpit
Parent: IMyShipController
Fields:
bool ControlWheels
bool ControlThrusters
bool HandBrake
bool DampenersOverride
Actions:
ControlThrusters -> Control thrusters On/Off
ControlWheels -> Control wheels On/Off
HandBrake -> Handbrake On/Off
DampenersOverride -> Inertia dampeners On/Off

Door

Interface name: IMyDoor
Parent: IMyFunctionalBlock
Fields: bool Open
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
Open -> Open/Closed
Open_On -> Open
Open_Off -> Closed

Drill

Interface name: IMyShipDrill
Parent: IMyFunctionalBlock
Fields: bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Flight Seat

Interface name: IMyCockpit
Parent: IMyShipController
Fields:
bool ControlWheels
bool ControlThrusters
bool HandBrake
bool DampenersOverride
Actions:
ControlThrusters -> Control thrusters On/Off
ControlWheels -> Control wheels On/Off
HandBrake -> Handbrake On/Off
DampenersOverride -> Inertia dampeners On/Off

Gatling Turret

Interface name: IMyLargeGatlingTurret
Parent: IMyLargeConveyorTurretBase
Parent: IMyLargeTurretBase
Parent: IMyFunctionalBlock
Fields:
bool UseConveyorSystem
bool CanControl
float Range
Terminal properties:
Radius -> Single
Actions:
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

Gravity Generator

Interface name: IMyGravityGenerator
Parent: IMyGravityGeneratorBase
Parent: IMyFunctionalBlock
Fields:
float FieldWidth
float FieldHeight
float FieldDepth
float Gravity
Terminal properties:
Width -> Single
Height -> Single
Depth -> Single
Gravity -> Single
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
IncreaseWidth -> Increase Field width
DecreaseWidth -> Decrease Field width
IncreaseHeight -> Increase Field height
DecreaseHeight -> Decrease Field height
IncreaseDepth -> Increase Field depth
DecreaseDepth -> Decrease Field depth
IncreaseGravity -> Increase Acceleration
DecreaseGravity -> Decrease Acceleration

Grinder

Interface name: IMyShipGrinder
Parent: IMyShipToolBase
Parent: IMyFunctionalBlock
Fields: None
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Gyroscope

Interface name: IMyGyro
Parent: IMyFunctionalBlock
Fields:
float GyroPower
bool GyroOverride
float Yaw
float Pitch
float Roll
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
IncreasePower -> Increase Power
DecreasePower -> Decrease Power
Override -> Override controls On/Off
IncreaseYaw -> Increase Yaw override
DecreaseYaw -> Decrease Yaw override
IncreasePitch -> Increase Pitch override
DecreasePitch -> Decrease Pitch override
IncreaseRoll -> Increase Roll override
DecreaseRoll -> Decrease Roll override

Interior Light

Interface name: IMyInteriorLight
Parent: IMyLightingBlock
Parent: IMyFunctionalBlock
Fields:
float Radius
float Intensity
float BlinkIntervalSeconds
float BlinkLenght
float BlinkOffset
Terminal properties:
Color -> Color
Radius -> Single
Falloff -> Single
Intensity -> Single
Blink Interval -> Single
Blink Lenght -> Single
Blink Offset -> Single
Actions:
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

Interior Turret

Interface name: IMyLargeInteriorTurret
Parent: IMyLargeTurretBase
Parent: IMyFunctionalBlock
Fields:
bool CanControl
float Range
Terminal properties:
Radius -> Single
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
Control -> Control
IncreaseRange -> Increase Radius
DecreaseRange -> Decrease Radius

Landing Gear

Interface name: IMyLandingGear
Parent: IMyFunctionalBlock
Fields:
float BreakForce
Terminal properties:
BreakForce -> Single
Actions:
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

Small Cargo Container

Interface name: IMyCargoContainer
Fields: None
Actions: None

Medium Cargo Container

Interface name: IMyCargoContainer
Fields: None
Actions:None

Large Cargo Container

Interface name: IMyCargoContainer
Fields: None
Actions: None

Small Reactor

Interface name: IMyReactor
Parent: IMyFunctionalBlock
Fields:
bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Large Reactor

Interface name: IMyReactor
Parent: IMyFunctionalBlock
Fields: bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Small Thruster

Interface name: IMyThrust
Parent: IMyFunctionalBlock
Fields: float ThrustOverride
Terminal properties:
Override -> Single
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
IncreaseOverride -> Increase Thrust override
DecreaseOverride -> Decrease Thrust override

Large Thruster

Interface name: IMyThrust
Parent: IMyFunctionalBlock
Fields: float ThrustOverride
Terminal properties:
Override -> Single
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
IncreaseOverride -> Increase Thrust override
DecreaseOverride -> Decrease Thrust override

Medical Room

Interface name: IMyMedicalRoom
Parent: IMyFunctionalBlock
Fields: None
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off

Merge Block

Interface name: IMyShipMergeBlock
Parent: IMyFunctionalBlock
Fields: None
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off

Missile Turret

Interface name: IMyLargeMissileTurret
Parent: IMyLargeConveyorTurretBase
Parent: IMyLargeTurretBase
Parent: IMyFunctionalBlock
Fields:
bool UseConveyorSystem
bool CanControl
float Range
Terminal properties:
Range -> Single
Actions:
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

Ore Detector

Interace name: IMyOreDetector
Parent: IMyFunctionalBlock
Fields:
float Range
bool BroadcastUsingAntennas
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off

Passenger Seat

Interface name: IMyCockpit
Parent: IMyShipController
Fields:
bool ControlWheels
bool ControlThrusters
bool HandBrake
bool DampenersOverride
Actions:
ControlThrusters -> Control thrusters On/Off
ControlWheels -> Control wheels On/Off
HandBrake -> Handbrake On/Off
DampenersOverride -> Inertia dampeners On/Off

Piston

Interface name: IMyPistonBase
Parent: IMyFunctionalBlock
Fields:
float Velocity
float MinLimit
float MaxLimit
Terminal properties:
Velocity -> Single
UpperLimit -> Single
LowerLimit -> Single
Actions:
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
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
Run -> Run

Projector

Interface name: IMyProjector
Parent: IMyFunctionalBlock
Fields:
int ProjectionOffsetX
int ProjectionOffsetY
int ProjectionOffsetZ
int ProjectionRotX
int ProjectionRotY
int ProjectionRotZ
Terminal properties:
X -> Single
Y -> Single
Z -> Single
RotX -> Single
RotY -> Single
RotZ -> Single
Actions:
OnOff->Toggle block On/Off
OnOff_On->Toggle block On
OnOff_Off->Toggle block Off
IncreaseX->Increase Horizontal offset
DecreaseX->Decrease Horizontal offset
IncreaseY->Increase Vertical offset
DecreaseY->Decrease Vertical offset
IncreaseZ->Increase Forward offset
DecreaseZ->Decrease Forward offset
IncreaseRotX->Increase Pitch
DecreaseRotX->Decrease Pitch
IncreaseRotY->Increase Yaw
DecreaseRotY->Decrease Yaw
IncreaseRotZ->Increase Roll
DecreaseRotZ->Decrease Roll

Reloadable Rocket Launcher

Interface name: IMySmallMissileLauncherReload
Parent: IMyFunctionalBlock
Fields: bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Refinery

Interface name: IMyRefinery
Parent: IMyFunctionalBlock
Parent: IMyProductionBlock
Fields: bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Remote Control

Interface name: IMyRemoteControl
Parent: IMyShipController
Fields:
bool ControlWheels
bool ControlThrusters
bool HandBrake
bool DampenersOverride
Actions:
ControlThrusters -> Control thrusters On/Off
ControlWheels -> Control wheels On/Off
HandBrake -> Handbrake On/Off
DampenersOverride -> Inertia dampeners On/Off
Control -> Control

Rocket Launcher

Interface name: IMySmallMissileLauncher
Parent: IMyFunctionalBlock
Fields: bool UseConveyorSystem
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Rotor

Interface name: IMyMotorStator
Parent: IMyMotorBase
Parent: IMyFunctionalBlock
Fields:
bool IsAttached
float Torque
float BrakingTorque
float Velocity
float LowerLimit
float UpperLimit
float Displacement
Terminal properties:
Torque -> Single
BrakingTorque -> Single
Velocity -> Single
LowerLimit -> Single
UpperLimit -> Single
Displacement -> Single
Actions:
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

Sensor

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
bool DetectOwner
bool DetectFriendly
bool DetectNeutral bool DetectEnemy
IMyEntity LastDetectedEntity
Terminal properties:
Left -> Single
Right -> Single
Bottom -> Single
Top -> Single
Back -> Single
Front -> Single
Actions:
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
Detect Owner->Detect owner On/Off
Detect Friendly->Detect friendly On/Off
Detect Neutral->Detect neutral On/Off
Detect Enemy->Detect enemy On/Off

Solar Panel

Interface name: IMySolarPanel
Fields:None
Actions:None

Sound Block

Interface name: IMySoundBlock
Parent: IMyFunctionalBlock
Fields:
float Volume
float Range
bool IsSoundSelected
float LoopPeriod
Terminal properties:
VolumeSlider->Single
RangeSlider->Single
LoopableSlider->Single
Actions:
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

Spherical Gravity Generator

Interface name: IMyGravityGeneratorSphere
Parent: IMyGravityGeneratorBase
Parent: IMyFunctionalBlock
Fields:
float Radius
float Gravity
Terminal properties:
Radius -> Single
Gravity -> Single
Actions:
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

Spotlight

Interface name: IMyReflectorLight
Parent: IMyLightingBlock
Parent: IMyFunctionalBlock
Fields:
float Radius
float Intensity
float BlinkIntervalSeconds
float BlinkLenght
float BlinkOffset
Terminal properties:
Color -> Color
Radius -> Single
Falloff -> Single
Intensity -> Single
Blink Interval -> Single
Blink Lenght -> Single
Blink Offset -> Single
Actions:
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

Timer Block

Interface name: IMyTimerBlock
Parent: IMyFunctionalBlock
Fields:
bool IsCountingDown
float TriggerDelay
Terminal properties:
TriggerDelay -> Single
Actions:
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

Warhead

Interface name: IMyWarhead
Fields:
bool IsCountingDown
float DetonationTime
Terminal properties:
DetonationTime -> Single
Actions:
IncreaseDetonationTime -> Increase Detonation time
DecreaseDetonationTime -> Decrease Detonation time
StartCountdown -> Start countdown
StopCountdown -> Stop countdown
Safety -> Safety On/Off
Detonate -> Detonate

Welder

Interface name: IMyShipWelder
Parent: IMyShipToolBase
Parent: IMyFunctionalBlock
Actions:
OnOff -> Toggle block On/Off
OnOff_On -> Toggle block On
OnOff_Off -> Toggle block Off
UseConveyor -> Use Conveyor System On/Off

Wheel Suspension 1x1

Interface name: IMyMotorSuspension
Parent: IMyMotorBase
Parent: IMyFunctionalBlock
Fields:
bool Steering
bool Propulsion
float Damping
float Strength
float Friction
float Power
Terminal properties:
Damping -> Single
Strength -> Single
Friction -> Single
Power -> Single
Actions:
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

Wheel Suspension 3x3

Interface name: IMyMotorSuspension
Parent: IMyMotorBase
Parent: IMyFunctionalBlock
Fields:
bool Steering
bool Propulsion
float Damping
float Strength
float Friction
float Power
Terminal properties:
Damping -> Single
Strength -> Single
Friction -> Single
Power -> Single
Actions:
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

Wheel Suspension 5x5

Interface name: IMyMotorSuspension
Parent: IMyMotorBase
Parent: IMyFunctionalBlock
Fields:
bool Steering
bool Propulsion
float Damping
float Strength
float Friction
float Power
Terminal properties:
Damping -> Single
Strength -> Single
Friction -> Single
Power -> Single
Actions:
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

編集 2015/01/02 - 変更:許可されている名前空間

現在、あなたがMODAPIからのみ次の名前空間を使用することができます。
Sandbox.ModAPI.Ingame
Sandbox.ModAPI.Interfaces
Sandbox.Common.ObjectBuilders
VRageMath
VRage

あなたはSandbox.ModAPIの名前空間や他のゲームの名前空間を使用することはできません

コメント

  • 公式に公開されてないModAPIを探してたらフォーラムで一覧が公開されてたけど 訳にたつかな? http://forums.keenswh.com/post/file-programmable-block-api-documentation-generated-7224725 -- 2015-01-04 (日) 18:28:35
  • IsBeingHackedはグラインダーで解体(物理ハッキング)されてるときにTrue になるプロパティでは?(未検証) -- 2015-01-08 (木) 18:54:30
    • 検証したところ大当たりでした 敵対属性にしたドアを解体しようとするとtrueになりました 項目書き換えときます -- 2015-01-08 (木) 21:53:57
  • はじめに の コンパイル の項目の画像が表示されていないのですが... -- 2015-02-21 (土) 16:47:14
  • SpaceEngineers/Tools/Documentation.chmのSandBox.ModAPI.Ingameが最新なのかな? -- 2015-06-09 (火) 10:05:14
  • ソーラーパネルの発電量など 現在値のステータスが何処から引っ張ってこれるのか全く分からない -- 2015-07-06 (月) 00:13:37
    • ソーラーパネルの発電量は対応するプロパティが無いので、DetailedInfo(コントロールパネルの右下に表示される文字列)から取得してくるしかない。非常に面倒なことに、あの表示されている文字列「そのまま」を取得するので、必要な行だけ取得→数字の部分だけ取得→float型に変換(単位がkWなのに注意) という手順を取らなければ値を取得できない。 -- 2015-07-06 (月) 19:55:58
    • バージョン01.090の時点では、電力を供給できるブロックはすべてIMyPowerProducerを継承していて、それを使えば出力の状況を取得できる。 -- 2015-07-10 (金) 23:57:39
      • それリファレンスにも載ってるから知ってて、上手くいかなかったんで出来ないと思ってたんだけど、型キャストすれば通った。お詫びにサンプルプログラムにまとめました -- 2015-07-11 (土) 08:26:03
      • バージョン01.105ですが、IMyPowerProducerは消えてしまったのか、宣言もできなかったです。上記のDocumentation.chmにも載ってませんでした。現状、上記のDetailedInfoからとる方法しかないのかな? -- 2015-10-29 (木) 01:33:11
      • DetailedInfoから取得する方法、発電系のブロックは全部この手になりそうです。あと、値によっては単位が変わるので、単位の部分も読み取って処理するのが良いです。(kWに統一するならWのときは1000分の1、MWのときは1000倍する等) -- 2015-10-29 (木) 01:38:24
  • ローターの先につけたソーラーパネルの発電量をDetailedInfoから持ってこようとしたんだけれど、ローターを経由すると別グリッド扱いになるようでもってこれなかった -- 2016-08-25 (木) 02:52:50