【BeamNG】便利&面白コマンド集

BeamNG.drive

2022/5/8)全車両をリセットするコマンド(スキン・メッシュ込み)を追加しました。

BeamNG.driveのシステムコンソールで使用できる便利&面白コマンドを集めてみました。

  • このコマンドはBeamNG.drive v0.24.1.1で動作を確認しています。
  • 2章以降はコピペ用を想定しているので、解説は特に記載していません。わからない・動かない等がありましたらコメント欄にお願いします。

1.今回紹介するコマンドの使い方

システムコンソールについて

今回紹介するコマンドはBeamNGのシステムコンソールで使用するコマンドです。

BeamNG.driveのシステムコンソール画面


システムコンソールはデフォルトであればチルダキー(^)で開くことができます。

キーの設定を変更する場合はオプション画面のCONTOROLSから変更可能です。

system consoleのキーコンフィグを変更する場合は、オプションのCONTROLSで"console"と検索し、出てきた"Toggle System Console"に設定する。

また、システムコンソールには、種類がいくつかありますが、今回使用するのは“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

コメント

タイトルとURLをコピーしました