Top > LUA

LUA

Last-modified: 2017-01-09 (月) 01:31:07

LUAについて Edit

 LUAはプログラム言語のひとつです。(Wikipedia「Lua」
 つまりLUAスクリプトを作るという事は、From The Depthsの中でプログラムを組むという事になります。LUAスクリプトを作りたいのであればFrom The Depthsを関連語句から外し、LUAについて調べた方がいいでしょう。

LUAの使い方(ものすごい基本) Edit

1) インベントリのControlタブからLUA Boxを選び、適当な所に設置します。
2) 接近してQキーを押すとエディタが開きますので、命令文を書き込みます。
3) 画面右側のApply changes (SAVE)(F8)を押して内容を反映させます。続いて画面右上のExit (don't save changes)をクリックするとエディタ画面から出ます。

 

 LUAの動作そのものにAI Mainframeは必要ありません。AIと一緒に語られる事が多いのは、LUAがAI Mainframeの持っている情報を見ることが多いからです。

データ相関図 Edit

(旧Wikiより)

 

こんな感じでデータをとるときには情報を取得する必要があります。
d05b786f9fb87441.png

LUA関数リファレンス Edit

 LUA Boxのエディタ画面の上端にある「Help」から、From The Depthsに用いる関数のリファレンスを参照できます。

 

 OCRソフトでテキストに起こしてみた:LUA関数リファレンス

LUAが動作しない場合 Edit

(旧Wikiより)

 

64bitのOSを使用している場合、LUABOXのGUIを開いた時に以下のエラーログが表示されることがあります
D://SteamLibrary/steamapps/common/From The Depths/From_The_Depths_Data/Plugins/slua.dll
 at (wrapper managed-to-native) LuaInterface.LuaDLL:luaL_newstate ()
at SLua.LuaState..ctor () [0x00000] in <filename unknown>:0
at SLua.LuaSvr..ctor () [0x00000] in <filename unknown>:0
at LuaBox.InitialiseLua () [0x00000] in <filename unknown>:0

 

原因はFtDのデータ内にあるslua.dllが32bitOS用であるためと考えられます。
\steamapps\common\From The Depths\From_The_Depths_Data\Pluginsの中にあるslua.dllを64bit用の物に入れ替える事で改善されます。
64bit用のslua.dllは以下のサイトからダウンロードできます。
http://www.slua.net/download/

スクリプトの入手先 Edit

LUAお役立ちサンプルコード
 旧Wikiから。

 

・公式フォーラムのLUA Scripting
 航空機例

 ミサイル例

使用例) LUA誘導ミサイル Edit

 今回は公式フォーラムで公開されているミサイル誘導スクリプトを使います。ちょっとめどい。

下準備 Edit

 フォーラムのスレッドからスクリプトを配布しているサイトへ行きます。STPG.luaにスクリプトがあります。
 行番号のついている部分、500行ほどをまるごとOSのクリップボードにコピーしておきます。

ミサイル側の準備 Edit

ftd_lua_001.jpg

 

 とりあえず5ブロックミサイルなど作りました。
 Missile Launch PadにLUA Transceiverを取り付けます。

 

ftd_lua_002.jpg

 

 ミサイルブロックの中にLUA Receiverを組み込みます。
 誘導効果を確かめるため、赤外線誘導やレーザー誘導に関係するパーツは組み込みません。後は適当です。

LUA Boxの設置 Edit

 LUA Boxを適当な場所に置きます。

 

ftd_lua_004.jpg

 

 近づいてQキーを押すとエディタ画面に入ります。

 

ftd_lua_005.jpg

 
Function Update(I)
-- put your code here
end
 

 となっている所にEnterで空行を適当に挿入します。
(挿入場所を分かりやすくするため。やらなくてもいい)

 
Function Update(I)
-- put your code here






end
 

 下準備でクリップボードにコピーしておいたスクリプトを、空行の部分に貼り付けます。
(OSのショートカットを利用。Windowsならctrl + v)

 

ftd_lua_006.jpg

 

 このスクリプトをそのまま使うと、ミサイルの燃料が切れる前に自爆します。十分に飛んでもらうには、スクリプトの最初の方にある

-- Sample configuration
WeaponSystems[1] = {
  Type = 2,
  MainframeIndex = 0,
  MaximumAltitude = 99999,
  MinimumAltitude = -3,
  MinimumSpeed = 0,
  MaximumSpeed = 350,
  MinimumRange = 100,
  FiringAngle = 60,
  Speed = 250,
  LaunchDelay = 0.3,
  MinimumConvergenceSpeed = 150,
  Endurance = 3.33,
  MinimumCruiseAltitude = 5,
  MaximumCruiseAltitude = 9999,
  DetonateOnCull = true,
  MaximumTargets = 2,
  TurnSpeed = 100,
  Direction = 'Forward',
}
 

 の部分の最後に

 
CullTime = 16,
 

 を書き加えます。16の数字は調整して下さい。中距離〜長距離ミサイルの場合はもっと大きい数字が必要になるでしょう。

 

ftd_lua_016.jpg

 
そのパラメータどこから持ってきた?
 

 最後に、ペースト&修正した内容を保存してエディタを閉じます。画面右にある「Apply changes (SAVE)(F8)」をクリックして内容を反映させてから、画面右上にある「Exit (don't save changes)」をクリックしてエディタを閉じます。

AI Mainframeの準備 Edit

 このスクリプトはAI Mainframeを必要とします。

 

ftd_lua_007.jpg

 

 適当な場所にAI Mainframeを置きます。AI MainframeとLUA Boxを接続する必要はありません。手動でミサイルを発射するだけならワイヤレスシステムも必要ありません(別途AIにミサイルを撃たせたい時などは必要になります)。

 
AI Mainframの要不要を判断する基準は?

試射 Edit

 適当なビークルを敵として呼び出し、誘導性能をチェックします。

 

ftd_lua_015.jpg

 

 明後日の方向に向けて撃っても、途中で曲がって敵に当たります。LUAミサイル一丁あがり。

コメント Edit

最新の10件を表示しています。 コメントページを参照

  • LUAのコマンド一覧表のような物ってどこにありましたっけ? -- 2016-07-02 (土) 23:02:59
    • luaはややこしいんですよ‥。FtD固有の関数は、Lua boxのエディタ開いて画面の上端のhelpから参照できます。luaそのものについては、lua入門とかリファレンスとかで検索してもらうのがいいかと。 -- sakusya? 2016-07-03 (日) 00:31:24
お名前: URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White