ロジック/使用方法

Last-modified: 2023-05-09 (火) 20:35:14

※サンプルプログラムはロジック/サンプルプログラムに移動

コード表記ガイド

sensor result = @copper in block1
set A = 100
op sub result a b

上記の場合、以下のルールでマークアップする

  • 紫(Purple): 固定のコマンド
  • 暗い赤(Maroon): 選択式のサブコマンド
  • 黒(Black): 変数、他の変数とかぶらなければ半角英数で好きな名称にしてOK(数字単体や先頭数字はNGの場合あり)
  • 緑(Green): 組み込み変数、先頭に@マークがつきペンシルアイコンから選択も可能
  • 青緑(Teal): リンク名、プロセッサとリンクさせたときに表示される名称
  • オリーブ(Olive): 値、数値や文字など任意のもの

Reddit(?)より

このガイド全体を通して、さまざまなコードスニペットのサンプル(例えば `op add xx 10`)を使用します。これらの機能を確認するには、クリップボードにコピーしてから、プロセッサの[クリップボードからインポート]をクリックしてプロセッサに挿入します。言うまでもなく、PCでこのガイドに従うのが最も簡単です。

この次の段落は、コードがどのように機能するかをまったく知らない人のためのものです。知っている場合は、スキップしてかまいません。
プロセッサは、IRLプロセッサが最も基本的なレベルで使用する言語であるアセンブリ言語に非常に基づいています。アセンブリ言語がどのように機能するかを知るために、非常に賢い猿を想像してみてください。彼は指示のリストを持っています。彼はそれを見て順番にそれぞれを行います。リストの最後に到達するたびに、彼は最初からやり直します。指示以外の事はしません。もし彼が(set x 50)の様な命令を見たなら、彼は(xは50なんだ)という事を理解しているでしょう。その後に彼が(op add x x 30)という命令を見た時、彼は(xは50で、そのxに30を足すから80になる)という事を覚えているでしょう。さて、試しに以下のコードスニペットで変数の値を編集し、メッセージブロックに接続してください(次の部分を参照)。最後2行の指示について気にする必要はありません。メッセージブロックに番号を表示させるだけです。

set x 30
op sub x x 10
op add x x 0
print x
printflush message1

コードがどのように機能するかがわかったところで、プロセッサをどのように使用しますか?最初にプロセッサをクリックして選択します(PCコントロールを使用します。モバイルでプレイする場合は、クリックをタップに置き換えます)。次に、別の建物をクリックして接続します。想像できるほとんどすべてのものを接続できます。コンテナ、コンベヤー、導管、燃焼発電機、サイクロン、耕運機、銅壁、石炭遠心分離機、低温流体ミキサー、コマンドセンター、場合によっては「C」で始まらないものもあります。接続したいものをすべて接続したら、鉛筆アイコンをクリックしてコードを編集します。「追加」ボタンを使用して指示を追加し、「編集」ボタンを使用してクリップボードからインポートおよびクリップボードにコピーし、「戻る」ボタンを使用して終了することができます。次に、実際の手順に移ります。

「読み取り」および「書き込み」命令は、接続されたメモリセルから読み取りおよび書き込みを行います。書き込みたいアドレスを指定するだけで、別の(または同じ)プロセッサからそのアドレスから読み取って値を取り戻すことができます。「描画」および「印刷」命令は、プロセッサの描画および印刷バッファに追加されます。「drawflush」および「writeflush」命令は、印刷または描画バッファ全体を画面またはメッセージブロックに送信してから、そのバッファをクリアします。「描画」命令には、実際には、画面のクリア、線、ポリゴンの描画、今後のすべての描画コマンドの色の変更など、いくつかのバリエーションがあります。実際に試してみてください。説明したくない複雑な指示はいくつか省略するので(自分で理解してくださいね)、「設定」に進むと「エジプトのセト神に連絡する…じゃなくて変数を特定の値にセットします(変数を宣言する必要はなく、変数を使用するだけです)。「operation」(または単にop)命令を使用すると、変数に対して数学演算を実行できます。条件が真の場合、「end」は命令キューの先頭にジャンプし、「jump」は矢印が指している場所にジャンプします。

別の例として、このコードを設定したプロセッサーをロジックディスプレイに接続してみてください。

set var 0
op mul red var 3
draw color red 0 blue 255 0 0
draw rect 0 var 80 2 0 0
op add var var 1
drawflush display1
jump 1 lessThan var 81
op add blue blue 20
op mod blue blue 255

それはループを通過し、上に行くにつれて次第に赤くなる薄い長方形のスタックを作成します。80(画面の高さ)に達すると、次のサイクルがより青くなり、繰り返されます。ぜひお試しください!

  • 一般的な問題/プロセッサのQ&A:

Q:プロセッサが機能しないのはなぜですか?

A:ハイパープロセッサには冷却水が必要であり、画面/メッセージブロックに何かを表示するにはフラッシュ命令(Draw Flush/Print Flush)を使用する必要があります。

Q:技術ツリーのプロセッサはどこにありますか?

A:メカドリル>石炭>グラファイト(プレス)>シリコン(製錬所)>プロセッサーセクション

Q:なぜこれがOP /難しいのですか

A:コーディングの方法がわからない場合は非常に複雑です/コーディングの方法を知っている場合は非常に簡単です。

 

Source: https://www.reddit.com/r/Mindustry/comments/jf2k9t/how_to_use_the_new_60_processors/ (reddit)

共通の使い方

  1. 操作したいブロックの近くにマイクロ(またはロジック、ハイパー)プロセッサを建築する
  2. プロセッサを選択、続けて操作したいブロックを選択してリンクさせる(青い四角とリンク名が表示されたらOK)
  3. プロセッサのペンシルアイコンをクリックし、編集画面が表示されたらコマンドを記入する
  4. 記入後、戻るをクリックした時点でプログラムの実行が始まる

Write

メモリセル、メモリバンクに情報を書き込むために使用

  • 配置例
    • 書き込みたいメモリーセルやメモリーバンクをリンクしておく
      write_map.png
  • コード例
    write_code.png
    write 200 cell1 0
    • 200 : 書き込む値(数値のみ)、別のコマンドで作成した変数を入力してもOK
    • cell1 : 書き込むメモリーセルやメモリーバンクのリンク名
    • 0 : メモリバンクのアドレス(変数名のようなもの)、デフォルトの数字以外に文字列でも利用可

Read

メモリセル、メモリバンクの情報を読み込むのに使用

  • 配置例
    • 読み取りたいメモリーセルやメモリーバンクをリンクしておく、右のメッセージブロックは例として読み取った結果を表示する
      ※メモリーセルにはAというアドレス(変数)に200と記録されているものとする(記録の方法はwriteの項目を参照)
      read_map.png
    • コマンド実行後メッセージブロックを選択すると値が表示されている
      read_map_result.png
  • コード例
    read_code.png
    read result cell1 A
    print result
    printflush message1
    • result : 読み取った結果を格納する変数、好きな文字列でOK
    • cell1 : 読み取るメモリーセルやメモリーバンクのリンク名
    • A : 読み取りたいメモリバンクのアドレス(変数名のようなもの)
      ※print, printflushの使い方はそれぞれの項目を参照

Draw, DrawFlush

ディスプレイ(ロジックディスプレイ、大型ロジックディスプレイ)に図形を描くのに使用

  • コマンド
    • draw : ディスプレイに描画したい内容を設定する(コマンドを複数組み合わせて複雑な図形も作れる)
    • drawflush : drawで設定した内容をディスプレイに描き出す(drawで蓄積した設定はリセットされる)
  • サブコマンド
    • clear : ディスプレイ全体を一色で塗りつぶす(この行より前のdrawコマンドは無視される)
      • r, g, b : r(赤), g(緑), b(青)をそれぞれ0 ~ 255の数字で色を設定する(RGBで調べるとカラーパレット表などが見つかるので参考にするといい)
    • color : 次の行以降のdrawコマンドで描かれる図形の色を指定する
      • r, g, b : clearに記載の内容と同じ
      • a : 透過度(アルファ値)、0 ~ 255の数字で指定し、数が0に近いほど透明度が上がる
    • stroke : 次の行以降のdrawコマンドで描かれる図形の線の太さを指定する
      • 値 : 線の太さのピクセル数を数字で指定、上限は1000?
    • line : 線を描く
      • x : 線の始点のx座標(横軸)、ディスプレイの左が0、右が80(大型ロジックディスプレイなら179)
      • y : 線の始点のy座標(縦軸)、ディスプレイの下が0、上が80(大型ロジックディスプレイなら179)
      • x2 : 線の終点のx座標、定義はxと同じ
      • y2 : 線の終点のy座標、定義はyと同じ
    • rect : 塗りつぶした四角形を描く
      • x : 四角形の左下のx座標、定義はlineのxと同じ
      • y : 四角形の左下のy座標、定義はlineのyと同じ
      • width : 四角形の幅のピクセル数
      • height : 四角形の高さのピクセル数
    • lineRect : 線の四角形を描く
      • x, y, width, height : rectと同じ
    • poly : 塗りつぶした多角形を描く(角を調整することで三角形から四角形、五角形~円も描ける)
      • x : 多角形の中心のx座標、定義はlineのxと同じ
      • y : 多角形の中心のy座標、定義はlineのyと同じ
      • sides : 角の数、3なら三角形、数字が多いほど円に近くなる
      • radius : 多角形の半径ピクセル数
      • rotation : 回転角度(デフォルトは上に角が来る形)
    • linePoly : 線の多角形を描く
      • x, y, sides, radius, rotation : polyと同じ
    • triangle : 塗りつぶした三角形を描く
      • x, y, x2, y2, x3, y3 : 三角形の3つの頂点の座標を指定、定義はlineのx,yと同じ
    • image : 画像を表示(鉱石などアイテムのアイコンのみ使用可能?)
      • x : 画像の中心のx座標、定義はlineのxと同じ
      • y : 画像の中心のy座標、定義はlineのyと同じ
      • image : アイコンにするアイテム名を指定
      • size : 画像のピクセル数を指定(x,y共通)
      • rotation : 画像の回転角度を指定
  • 配置例
    draw_map.png
    • 描画したいディスプレイをプロセッサとリンクしておく(左はリンクしていない設置したままのディスプレイ)
  • コード例
    draw_code.png
    draw clear 0 0 0 0 0 0
    draw stroke 10 0 0 0 0 0
    draw lineRect 10 10 60 60 0 0
    draw color 255 255 255 255 0 0
    draw image 40 40 @copper 32 0 0
    drawflush display1

Print, PrintFlush

メッセージブロックにテキストを書き出すのに使用

  • コマンド
    • print : メッセージボックスに格納する値をセットする
    • printflush : printでセットした値をメッセージボックスに書き出す(Print内にセットした文字列はリセットされる)
  • コード例
    print_code_1.png
    print "frog"
    printflush message1
  • コード例 応用
    • PrintはPrintFlushを実行するまで繰り返した文字列を結合することができるので文字列 + 変数の結合をしたい場合は文字列のPrint、変数のPrintを実行してからPrintFlushすることで結合結果を表示できる
      print_code_2.png
      print_map_2.png

GetLink

リンクをインデックス(連番)で取得でき、ループ処理などにコードを短くできて便利
インデックスは建物の種類を問わず、プロセッサにリンクさせた順に0,1,2...と0始まりで連番が付与される

  • 配置例
    デュオ8台とリンクさせておく
    getlink_map.png
    同じ方向に一斉射撃をさせる
    getlink_map_result.png
  • コード例
    ※キャプチャはJumpが≦8になっているが7が正しい
    getlink_code.png
    set i 0
    getlink Link i
    control shoot Link 0 0 1 0
    op add i i 1
    jump 1 lessThanEq i 7
    end
    • getLinkに0を与えてデュオ1を指定して射撃させ、iに1を加算して次のデュオ2を指定…を7(デュオ8)まで繰り返す

Radar

ユニットなどエンティティを発見する、射程範囲のあるタレットのみで設定可能?

  • サブコマンド
    • from : 砲撃できるタレットのリンク名や変数を指定
    • target : 3つの条件を&で組み合わせて絞り込める
      • any : どれでも(条件が1つのみの場合2,3つ目の条件欄に入力する)
      • enemy : 敵を指定
      • ally : 味方を指定
      • player : プレイヤーが操作する機体を指定
      • attacker : 攻撃が可能なユニットを指定
      • flying : 飛行ユニットを指定
      • boss : ボスを指定(おそらく体力ゲージが表示されるガーディアンなど)
      • ground : 地上ユニットを指定
    • order : 0か1で指定することで下記Sortの条件を昇順か降順に指定できる(distanceなら1で近い方・0で遠い方を優先する)
    • sort : 対象ユニットが複数見つかった場合、狙う優先順位の条件
      • distance : ブロックからの距離順(タレットは射程範囲におさまる範囲で優先順位を決める)
      • health : 現在の体力順
      • shield : 盾機能があるか?
      • armor : 鎧機能があるか?
      • maxHealth : 最大体力順
    • output : 発見した機体の情報を格納する変数名
  • 配置例
    デュオなどのタレットとリンクしておく
    radar_map.png
  • コード例
    radar_code.png
    radar ally any any distance duo1 1 A
    sensor X A @x
    sensor Y A @y
    control shoot duo1 X Y 0 0
    • Aに格納した機体情報では位置の指定ができないので、sensor@x @yを取得してcontrolで使用する
    • このロジックはデュオが最も近くにある味方の機体を追跡するもの

Control

ブロックを制御するのに使用

  • サブコマンド
    • enabled : 利用可・不可を設定する toに1(またはtrue)で利用可、0(またはfalse)で不可。また、以下特殊なブロックは挙動が変わる
      • ドア : 1で開き、0で閉じる
      • スイッチ : 1でON、0でオフ
    • shoot : 射撃可能なブロックから射撃する、ofに射撃したいブロックを指定、xとyに狙う座標、shootは1で射撃・0で射撃オフ
    • shootp : shootと似ているがユニットを指定できる?追加情報求む。
    • configure : ブロックをクリックした際メニューが表示されるブロックに対して設定を行える。確認しているのは以下
      • ソーター、搬出機 : @copperなどの組み込み変数を使うことで搬出対象のアイテムを指定することができる、0で何も搬出しない(搬出機は全種類搬出)
      • 陸軍工場、空軍工場、海軍工場 : @monoなどの組み込み変数を使うことで生産対象の機体を指定することができる、0で何も生産しない
  • 配置例
    configure版、搬出機をプロセッサにリンクしておく
    control_map.png
  • コード例
    control_code.png
    control configure unloader2 @titanium 0 0 0
    • 搬出対象をチタンに変更する、この後マウス操作で直接搬出機の設定を変えてもチタンに戻る

Sensor

指定したブロックやユニットから情報を取得する

  • 組込変数
  1. アイテム
  • @copper : 銅
  • @lead : 鉛
  • @coal : 石炭
  • @graphite : 黒鉛
  • @sand : 砂
  • @silicon : シリコン
  • @metaglass : メタガラス
  • @scrap : スクラップ
  • @titanium : チタニウム
  • @plastanium : プラスタニウム
  • @thorium : トリウム
  • @phase-fabric : フェーズファイバー
  • @surge-alloy : サージ合金
  • @spore-pod : 胞子ポッド
  • @pyratite : ピラタイト
  • @blast-compound : 爆発性化合物
  1. 液体
    • @water : 水
    • @slag : スラグ
    • @oil : 石油
    • @cryofluid : 冷却水
  2. センサー情報(意訳)
    • ブロックやユニット内のオブジェクト数量を取得
      • @totalItems : 保有アイテム数
      • @itemCapacity : アイテム保有上限数
      • @totalLiquids : 液体総数
      • @liquidCapacity : 液体保有上限数
      • @totalPower : バッテリー現在値(ブロック単体)
      • @powerCapacity : バッテリー上限値(ブロック単体)
      • @powerNetStored : バッテリー現在値(接続しているブロック間)
      • @powerNetCapacity : バッテリー上限値(接続しているブロック間)
      • @powerNetIn : 電力ネットワーク内総発電量
      • @powerNetOut : 電力ネットワーク内総消費量
      • @ammo : 保有弾薬数
      • @ammoCapacity : 弾薬保有上限
      • @payloadCount : 積載量
    • ブロックやユニット内のオブジェクト情報を取得
      • @firstItem : 最初(先頭?)のアイテム
    • ブロックやユニットの情報を取得
      • @health : 耐久値
      • @maxHealth : 最大耐久値
      • @heat : 温度
      • @efficiency : 効率
      • @rotation : 角度(設置した向き?)
      • @team : チーム(対戦の場合?)
      • @type : タイプ(?)
      • @flag : フラグ(ブロックやユニットの固有IDとして使用)
      • @name : 機体を操作中のプレイヤー名 初期値:null
      • @config : 設定(?)
      • @payloadType : 積載タイプ(ブロックかユニット?)
    • 位置や角度の情報を取得
      • @x : 横座標
      • @y : 縦座標
      • @shootX : 砲撃目標 横座標
      • @shootY : 砲撃目標 縦座標
      • @mineX : 採掘位置 横座標
      • @mineY : 採掘位置 縦座標
    • ブロックやユニットの状態を取得(true または false)
      • @shooting : 砲撃しているか
      • @mining : 採掘しているか
      • @controlled : ロジックのUnitControlによって行動中か 0=no 1=yes
      • @commanded : プレイヤー操作機に率いられているか 0=no 1=yes
  • 配置例
    情報を読み取りたいブロックとリンクしておく、例としてメッセージブロック(message1)に結果を表示するのでリンクしておく
    ユニットの場合は機体を生産していればリンク不要
    sensor_map.png
    メッセージブロックにコンテナー内の銅の数を表示(リアルタイムで更新)
    sensor_map_result.png
  • コード例
    sensor_code.png
    sensor result container1 @copper
    print result
    printflush message1
    • container1箇所はunit bind実行後なら @unit で指定したユニットの情報を取得することが可能

Set

コマンドで使用する変数(値を格納するもの)を設定するのに使用

  • コード例
    ※Print, PrintFlushのコード例 応用と同じ
    print_code_2.png
    • 1つ目のSetコマンドでRという文字に150という値をセットする
    • 3つ目のPrintコマンドでRをプリントする
  • メリットは値が変更になった時にSetの値を変更するだけで他のコマンドのRは変更しなくていいということ、応用しやすくなる

Operation

計算を行い、結果を変数に格納するのに使用
詳細ロジックはGithubのこちらを参照
ちなみに上記でインポートしているArcはMindustry作者が用意したライブラリで数学関連はこちらに格納されている

  • サブコマンド
    ※画面とコピーデータで表記が違うもののみコピー側をカッコで表記
    • 計算結果を返す
      • + (add) : 足し算
      • - (sub) : 引き算
      • * (mul) : 掛け算
      • / (div) : 割り算(小数点まで算出)
      • // (idiv) : 割り算(小数点切り捨て)
      • % (mod) : 剰余(割り算の余りのみ出力)
      • ^ (pow) : 累乗(3の5乗といった計算)
    • Yesなら1、Noなら0を返す
      • == (equal) : 等しい
      • not (notEqual) : 等しくない
      • and (land) : 両方の条件を満たす
      • < (lessThan) : 少ない
      • <= (lessThanEq) : 少ないまたは等しい
      • > (greaterThan) : 多い
      • >= (greaterThanEq) : 多いまたは等しい
    • バイナリ系の演算結果を返す
      • << (sh1) : 左シフト演算
      • >> (shr) : 右シフト演算
      • or : ビットOR(ビット演算)
      • b-and (and) : ビットAND(ビット演算)
      • xor : ビットXOR(ビット演算)
      • flip (not) : ビットNOT(ビット演算)
    • 計算結果を返す
      • max : 大きい方の値を返す
      • min : 小さい方の値を返す
      • atan2 : 座標上の2つの点の角度(Mathf.atan2)
      • dst : 座標の射程?(Mathf.dst)
      • noise : ノイズ?
      • abs : 絶対値(-1や1なら1)
      • log : 対数(底がe)
      • log10 : 対数(底が10)
      • sin : サイン
      • cos : コサイン
      • tan : タンジェント
      • floor : 割り算(小数点切り捨て、idivと同じだが浮動小数点(float)型を経由するので結果がfloat型の精度を超えると誤差が出る)
      • ceil : 小数点切り上げ(引数として与えた数以上の最小の整数を返す、0.001なら1)
      • sqrt : 平方根
      • rand : ランダム

Jump,End

条件分岐に使用する

  • コマンド
    • Jump : ある条件を満たしていれば、矢印で移動したコマンドにジャンプする、満たさない場合は次の行のコマンドを実行する
    • End : コマンドをこの行で終了させる
  • Jumpのサブコマンド
    • == : 等しい
    • not : 等しくない
    • < : 少ない
    • <= : 少ないまたは等しい
    • > : 多い
    • >= : 多いまたは等しい
    • always : 条件とわずジャンプする
  • コード例
    jump_code.png
    • スイッチ(switch1)のオンオフでデュオ(duo1)に砲撃させるコード
    • 1行目のSensorでSwにオンオフ状況を取得
    • 2行目のJumpでSwがオン(1)ならControlへジャンプ、オフなら次の行(End)へ移動する
    • 3行目はオフの場合ここでロジックを終了
    • 4行目はオンの場合デュオ(duo1)に砲撃させる

UnitBind

機種を指定してユニットをバインド(ロジックで操作できるように指定?確保?)する
事前にUnitBindが必要
UnitBindを使用するたびに別のユニットにバインドされるため、そのタイプのすべてのユニットを一度に誤ってバインドする可能性がある

  • 組み込み変数
    • @dagger : ダガー
    • @mace : メイス
    • @fortress : フォートレス
    • @scepter : セプター
    • @reign : レイン
    • @nova : ノヴァ
    • @pulsar : パルサー
    • @quasar : クエーサー
    • @vela : ヴェラ
    • @corvus : コーバス
    • @crawler : クローラー
    • @atrax : アトラックス
    • @spiroct : スパイロクト
    • @arkyid : アーキッド
    • @toxopid : トキソピッド
    • @flare : フレア
    • @horizon : ホライゾン
    • @zenith : ゼニス
    • @antumbra : アンタンブラ
    • @eclipse : エクリプス
    • @mono : モノ
    • @poly : ポリ
    • @mega : メガ
    • @quad : クアッド
    • @oct : オクト
    • @risso : リッソ
    • @minke : ミンク
    • @bryde : ブライド
    • @sei : セイ
    • @omura : オムラ
    • @alpha : アルファ
    • @beta : ベータ
    • @gamma : ガンマ
  • コード例
    unitbind_code.png
    • 1行目でフレア(@flare)を指定
    • 2行目はプロセッサの位置に移動させるコマンド

UnitControl

バインドしたユニットの挙動を命令するのに使用
Redditのこちらの解説が詳しい(英文)

  • サブコマンド
    • stop : 移動や建築、採掘を停止する
    • move : 指定した座標(x,y)へ移動する
    • approach : 指定した座標(x,y)を中心とした半径(radius)の位置へ移動する
    • boost : ブースト可能機体(ノヴァなど)のブーストをオン(1)、オフ(0)する
    • pathfind : 敵のスポーンポイントに向けて地上ユニットのデフォルトの進路に沿って移動する
    • target : 指定した座標(x,y)を狙う、shootが1なら射撃、0なら射撃停止
    • targetp : 指定したユニット(UnitRadarなどで指定)を狙う、shootが1なら射撃、0なら射撃停止
    • itemDrop : 指定の建物(to)へ指定数(amount)のアイテムをドロップする
    • itemTake : 指定の建物(from)から指定のアイテム(item)を指定数(amount)取得する
    • payDrop : 機体や建物を現在のユニット位置に放出・設置する
    • payTake : takeUnitsで指定した機体(1)や建物(0)をユニットに格納する
    • mine : 指定した座標(x,y)で採掘する(機体によって採掘可能な鉱石の種類が異なるので注意)
    • flag : フラグ(IDのようなもの)を機体に指定することで、複数ある同一機種のうち1体だけを指定・操作できる
    • build : 指定した座標(x,y)に指定のブロック(block)を指定の向き(rotation)と設定(config)で建築する
    • getBlock : 指定した座標(x,y)にどんなブロックが存在するかをタイプ(type)と建物名(building)変数に返す、座標はユニットの5タイル以内に配置する必要がある
    • within : 指定した座標(x,y)を中心とした半径(radius)内にユニットがいるかをresultに返す(いれば1、いなければ0)

UnitRadar

特定条件のユニットを探し結果を変数に返す
事前にUnitBindが必要

  • サブコマンド
    • target : 3つの条件を&で組み合わせて絞り込める
      • any : どれでも(条件が1つのみの場合2,3つ目の条件欄に入力する)
      • enemy : 敵を指定
      • ally : 味方を指定
      • player : プレイヤーが操作する機体を指定
      • attacker : 攻撃が可能なユニットを指定
      • flying : 飛行ユニットを指定
      • boss : ボスを指定(おそらく体力ゲージが表示されるガーディアンなど)
      • ground : 地上ユニットを指定
    • order : 0か1で指定することで下記Sortの条件を昇順か降順に指定できる(distanceなら1で近い方・0で遠い方を優先する)
    • sort : 対象ユニットが複数見つかった場合、狙う優先順位の条件
      • distance : ブロックからの距離順(タレットは射程範囲におさまる範囲で優先順位を決める)
      • health : 現在の体力順
      • shield : 盾機能があるか?
      • armor : 鎧機能があるか?
      • maxHealth : 最大体力順
    • output : 発見した機体の情報を格納する変数名

UnitLocate

特定のブロック(建物)を発見させる

  • サブコマンド
    • find : 発見対象を指定
      • ore : 鉱石、oreで鉱石を指定、見つかった場合outX,outYに発見座標とFoundに1、見つからない場合Foundに0
      • building : ブロック(建物)、typeで建物のタイプを指定、enemy true(または1)で敵 false(または0)で味方を指定、見つかった場合outX,outYに発見座標とFoundに1・Buildingにリンク名?が返る
      • spawn : 敵のスポーン地点、オプションはbuildingと同じ
      • damaged : ダメージを受けた建物、オプションはbuildingと同じ