現在、友人のために人気ゲーム World Of Warcraft のアドオンをコーディングしようとしています。私自身、ゲームについてあまり理解していません。ゲーム内でのデバッグは、彼がすべてのテストを行わなければならないため困難です。
私は Lua にかなり慣れていないので、これは非常に簡単に答えられる質問かもしれません。しかし、WoW で Lua エラーが発生すると、画面にスローされて邪魔になります。これは、間違ったタイミングで例外をスローするとゲームプレイが停止するため、ゲーム プレーヤーにとって非常に悪いことです。スローされたエラーをきれいに処理する方法を探しています。関数のこれまでのコードは次のとおりです。
function GuildShoppingList:gslSlashProc()
-- Actions to be taken when command /gsl is procced.
BankTab = GetCurrentGuildBankTab()
BankInfo = GetGuildBankText(BankTab)
local Tabname, Tabicon, TabisViewable, TabcanDeposit, TabnumWithdrawals, remainingWithdrawals = GetGuildBankTabInfo(BankTab)
p1 = BankInfo:match('%-%- GSL %-%-%s+(.*)%s+%-%- ENDGSL %-%-')
if p1 == nil then
self:Print("GSL could not retrieve information, please open the guild bank and select the info tab allow data collection to be made")
else
self:Print("Returning info for: "..Tabname)
for id,qty in p1:gmatch('(%d+):(%d+)') do
--do something with those keys:
local sName, sLink, iRarity, iLevel, iMinLevel, sType, sSubType, iStackCount = GetItemInfo(id);
local iSum = qty/iStackCount
self:Print("We need "..sLink.." x"..qty.."("..iSum.." stacks of "..iStackCount..")")
end
end
end
問題は、p1 が nil かどうかを確認するときに、p1 を nil として呼び出そうとしたことに関する Lua エラーがスローされることです。nil になることもあり、これを正しく処理する必要があります。
これを行うための正しい最も効率的な方法は何でしょうか?