サンプルプログラム/遠隔タイマー起動

Last-modified: 2017-01-20 (金) 19:17:35

スクリプトを書かずにタイマーブロックでアクションを設定できるように、グリッド間通信ガイドをもとに改造したスクリプトです。使い方はほぼ同じなので、そちらも参照してください。

※グリッド間通信は安定版未実装

設定とスクリプト

受信側設定

ブロックの設定
ブロック備考
アンテナ×1Assigned 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です。