Как взять список заклинаний у героя? Можно так:
for spellID = 1, 239 do
flag = KnowHeroSpell(heroname, spellID);
end;
Но есть одна проблемка, много чисел из данного диапазона не являются спелами, и если их передать в функцию, то она выкенет ошибку и поток умрет, а как я понял отловить ексепшен никак нельзя, потому-что pcall выпилили с Lua