2022/5/8)全車両をリセットするコマンド(スキン・メッシュ込み)を追加しました。
BeamNG.driveのシステムコンソールで使用できる便利&面白コマンドを集めてみました。
- このコマンドはBeamNG.drive v0.24.1.1で動作を確認しています。
- 2章以降はコピペ用を想定しているので、解説は特に記載していません。わからない・動かない等がありましたらコメント欄にお願いします。
1.今回紹介するコマンドの使い方
システムコンソールについて
今回紹介するコマンドはBeamNGのシステムコンソールで使用するコマンドです。
システムコンソールはデフォルトであればチルダキー(^)で開くことができます。
キーの設定を変更する場合はオプション画面のCONTOROLSから変更可能です。
また、システムコンソールには、種類がいくつかありますが、今回使用するのは“GE – Lua”と“車両毎”のコンソールです。
GE – Lua
– BeamNG全体に影響するコマンドや、スポーンしている全車両にコマンドを適用したい場合に使用します。
車両毎のコンソール
– 個別の車両に対してコマンドを実行する際に使用します。
使い方の具体例
全車両にコマンドを適用する場合
“GE – Lua”のコンソールで以下の形式でコマンドを実行してください。
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("<実行したいコマンド>") end
例えば、出現している全車両を爆破する場合は以下のコマンドを実行します。
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("fire.explodeVehicle()") end
個別の車両にコマンドを適用する場合
車両毎のコンソールで、上記の<実行したいコマンド>の部分のみを入力します。
上の例であれば、以下のようになります。
fire.explodeVehicle()
コマンドは、全車両に対して実行するケースが多いと思うので、この記事では基本的に、全車両に対してのコマンドを記載します。
車両毎に対して適用したい場合は、適宜読み替えてください。
2.面白コマンド
全車両のヒンジを破壊する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("beamstate.breakHinges()") end
全車両を完全に破壊する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("beamstate.breakAllBreakgroups()") end
全車両をパンクさせる
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("beamstate.deflateTires()") end
全車両を炎上させる
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("fire.igniteVehicle()") end
全車両を爆破する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("fire.explodeVehicle()") end
全車両を消火する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("fire.extinguishVehicle()") end
3.便利コマンド(撮影時に便利!)
ライト系の操作
全車両のウィンカー(左)を点灯/消灯する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.toggle_left_signal()") end
全車両のウィンカー(右)を点灯/消灯する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.toggle_right_signal()") end
全車両のハザードを点灯/消灯する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.toggle_warn_signal()") end
全車両のライトを点灯する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.setLightsState(1)") end
全車両のライト(ハイビーム)を点灯する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.setLightsState(2)") end
全車両のライトを消灯する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.setLightsState(0)") end
全車両のパトランプを点灯する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.set_lightbar_signal(1)") end
※パトランプのない車両については何もしない
全車両のパトランプを点灯させ、サイレンを鳴らす
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.set_lightbar_signal(2)") end
※パトランプのない車両については何もしない
全車両のパトランプを消灯する
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("electrics.set_lightbar_signal(0)") end
※パトランプのない車両については何もしない
AI系の操作
全車両をパスに沿って走らせる
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("ai.driveUsingPath{wpTargetList={'xx', 'yy'}, noOfLaps = 1, aggression = 1.0}")) end
個別の車両のAIを設定する
ai.setMode('<モード名>')
※モードには、’flee’、’chase’、’follow、’traffic’、’random’が指定可能です。
個別の車両のAIを停止する
ai.setMode('disabled')
その他
全車両をリセットする(スキンも修復)
BeamNG.driveではshift + Rで全車両リセットができるのですが、スキン(メッシュ?)が正常に修復されない場合があります。
そんな時に使えるコマンドが以下になります。
全車両をスキン込みで修復可能です。
for vid, veh in activeVehiclesIterator() do veh:requestReset() veh:resetBrokenFlexMesh() end
4.状態取得系のコマンド(自分用のメモ)
table型の中身を見るときのTIPS
# tableの中身を表示
for k, v in pairs(table01) do print(k) print(v) end
# table長(レコード数)を表示
table.maxn(table01)
車両ID系の情報
# ユーザの車両
tbl1 = core_vehicle_manager.getPlayerVehicleData()
# それ以外の車両
tbl1 = core_vehicle_manager.getVehicleData(vid)
# Trafficの車両のID一覧
tbl1 = extensions.gameplay_traffic.getTrafficList()
車両の構成情報
# 車両の基本情報(コンフィグ毎の情報ではない)
tbl1 = core_vehicles.getVehicleList()
# 例えばValueは以下のように取得可能
for k, v in pairs(tbl1['vehicles'][42]['model']['aggregates']['Value']) do print(k) print(v) end
ダメージ情報
for vid, veh in activeVehiclesIterator() do veh:queueLuaCommand("damage_table = beamstate.getPartDamageData(); dump(damage_table)") end
追跡情報
extensions.gameplay_traffic.getPursuitData()
参考
・BeamNGのAPIについて
C:\Program Files (x86)\Steam\steamapps\common\BeamNG.drive\lua
※インストール方法によっては場所が違うかも。
・その他
c – How to inspect userdata in lua – Stack Overflow
https://noriok.hatenablog.com/entry/2012/03/27/002111
https://staff.aist.go.jp/yutaka.ueno/lua/tebiki3jp.html
コメント