Я сейчас пытаюсь написать для друга дополнение популярной игры 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 нулем, он все равно выдает ошибку Lua при попытке вызвать p1 как ноль.Это будет время от времени ноль, и это должно быть обработано правильно.
Каков наиболее эффективный способ сделать это?