ロジックメモ

ロジックサンプル

MindustryWikiのサンプル

スイッチを使用した工場の稼働/停止ロジック

Wikiはconfigureになってるけど、サンドボックスだとなぜかenabledに(@dagger)を突っ込むと動いた
上記にもあるけどGetLinkを使うので、プロセッサー建築後のリンク指定の順番に注意する
(具体的にはスイッチ→工場x8までの順番で指定する)
Reconstructor(上位加工)は指定しない(大元を止めればよいため)
工場自体を止めなくても、素材供給ラインの根元にソーターを仕込んでそこでオンオフでもいい気がする

 set seisan @dagger
 sensor flg switch1 @enabled
 jump 11 equal flg 1
 print "工場停止"
 printflush message1
 set i 1
 getlink Link i
 control enabled Link 0 0 0 0
 op add i i 1
 jump 6 lessThanEq i 8
 end
 print "工場稼働"
 printflush message1
 set y 1
 getlink Link y
 control enabled Link @dagger 0 0 0
 op add y y 1
 jump 14 lessThanEq y 8
 end

コアからコンテナに物資を運ぶ

冒頭3行のflag、ユニットタイプ、アイテムを設定すること

+  単体稼働・要フラグ手動設定
+  複数バインド・フラグ自動設定

トリウムリアクターの冷却水/温度表示

 draw clear 0 0 0 0 0 0
 sensor cf reactor1 @cryofluid
 op mul res cf 2.66
 draw color 0 255 255 255 0 0
 draw rect 0 0 40 res 0 0
 sensor he reactor1 @heat
 op mul heat 80 he
 draw color 255 00 00 255 0 0
 draw rect 40 0 80 heat 0 0
 drawflush display1

メモ: draw rectのx.yは0~80/179、sensorの結果をそのまま投げるとまずいので補正してやる
heatの実数値は百分率

発電機用の冷却水切れ防止コード

 getlink reactors bango
 sensor cryofluid reactors @cryofluid
 op greaterThanEq working cryofluid 5
 control enabled reactors working 0 0 0
 op add bango bango 1
 jump 7 lessThanEq bango 5
 set bango 0
 end

コピペ用

スイッチのON/OFFで工場の稼働停止

 set seisan @dagger
 sensor flg switch1 @enabled
 jump 11 equal flg 1
 print "工場停止"
 printflush message1
 control enabled factory1 0 0 0 0
 control enabled factory2 0 0 0 0
 control enabled factory3 0 0 0 0
 control enabled factory4 0 0 0 0
 end
 print "工場稼働"
 printflush message1
 control enabled factory1 seisan 0 0 0
 control enabled factory2 seisan 0 0 0
 control enabled factory3 seisan 0 0 0
 control enabled factory4 seisan 0 0 0
 end

上記のスイッチ状態をfoundation1の在庫で決める

 set value 1000
 sensor silicon foundation1 @silicon
 jump 6 lessThan silicon value
 sensor graphite foundation1 @graphite
 jump 6 lessThan graphite value
 end
 control enabled switch1 0 0 0 0

液体タンク残量グラフ

+  液体タンク残量グラフ

PowerDisplayロジックコード解析

+  PowerDisplay

x秒数える

60秒の間にコンテナに流入した数を数える

+  CountNum

クェーサーによるスクラップ採掘

+  Scrap

組み込み変数

 ユニット
 @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 : ガンマ
 アイテム
 @copper : 銅
 @lead : 鉛
 @coal : 石炭
 @graphite : 黒鉛
 @sand : 砂
 @silicon : シリコン
 @metaglass : メタガラス
 @scrap : スクラップ
 @titanium : チタニウム
 @plastanium : プラスタニウム
 @thorium : トリウム
 @phase-fabric : フェーズファイバー
 @surge-alloy : サージ合金
 @spore-pod : 胞子ポッド
 @pyratite : ピラタイト
 @blast-compound : 爆発性化合物
 液体
 @water : 水
 @slag : スラグ
 @oil : 石油
 @cryofluid : 冷却水
 センサー情報(意訳)
 ブロックやユニット内のオブジェクト数量を取得
 @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
 計算結果を返す
 + (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 : ランダム

編集 凍結 添付 バックアップ 名前変更  
Last-modified: 2023-06-08 (木) 11:39:41