スクリプトを書かずにタイマーブロックでアクションを設定できるように、グリッド間通信ガイドをもとに改造したスクリプトです。使い方はほぼ同じなので、そちらも参照してください。
※グリッド間通信は安定版未実装
設定とスクリプト
受信側設定
ブロックの設定 | |
---|---|
ブロック | 備考 |
アンテナ×1 | Assigned Programmable Blockに 受信側スクリプトを入れたブロックを設定 |
プログラマブルブロック×1 | 下記の受信側スクリプト |
タイマー×任意 | 実行したいアクション |
グリッド間通信ガイドと変わりません。
使いたいタイマーブロックの名前は分かりやすくしておきましょう。
起動させたいアクションをタイマーブロックに設定しておきます。
受信側スクリプト
void Main(string argument) { var target = GridTerminalSystem.GetBlockWithName(argument) as IMyTimerBlock; if (target != null) { target.ApplyAction("TriggerNow"); } }
受け取ったargumentの値と同じ名前のタイマーブロックが存在すれば、そのタイマーの「Trigger now」でアクションが即時実行されます。
送信側設定
ブロックの設定 | |
---|---|
ブロック | 備考 |
アンテナ×1 | 名前は「Transmitter」 |
プログラマブルブロック×1 | 下記の送信側スクリプト |
ボタンパネルや操縦席など |
ボタンパネルや操縦席のツールバーには、送信側スクリプトを入れたプログラマブルブロックの「Run」を登録します。登録時に出てくるargumentダイアログには、受信側にある動かしたいタイマーブロックの名前を設定します。
送信側スクリプト
void Main(string argument) { var ant = GridTerminalSystem.GetBlockWithName("Transmitter") as IMyRadioAntenna; ant.TransmitMessage(argument, MyTransmitTarget.Everyone); }
グリッド間通信ガイドの送信側スクリプトから、アンテナ名を変更しただけです。
逆に、使いたいアンテナの名前にあわせてスクリプトを変更してもOKです。