FtDのLuaのindexの扱い


  • この記事は「From The Depths」というゲーム(以下FtD)で使用できるLuaに関する記事です。
  • Luaに関心のあるFtDプレイヤーを対象としています。

Luaを触り始めた頃にはまった事

indexのオリジン

FtDはC#製なので、I:GetTargetInfo(mainframeIndex, targetIndex)などで指定する〇〇Indexは0オリジン(0以上の整数)です。

function Update(I)
  I:ClearLogs()
  local mainframe_count = I:GetNumberOfMainframes()
  for mainframeIndex = 0, mainframe_count - 1 do
    local target_count = I:GetNumberOfTargets(mainframeIndex)
    for targetIndex = 0, target_count - 1 do
      local info = I:GetTargetInfo(mainframeIndex, targetIndex)
    end
  end
end

が、Luaのテーブルは1オリジンです。

function Update(I)
  I:ClearLogs()
  local id_table = I:GetAllSubConstructs() -- IDのテーブルを返す
  for i = 1, #id_table do -- #の後ろにテーブル名で、要素数を得る
    local id = id_table[i]
    local info = I:GetSubConstructInfo(id)
  end
end

これに気付かずエラーを連発しては頭を捻るということを繰り返しておりました。

以上。