MaXwEllDeN

Pet Spells Lib

Oct 17th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.37 KB | None | 0 0
  1. function print_table(self) -- by MaXwEllDeN
  2.     local str = "{"
  3.  
  4.     for i, v in pairs(self) do
  5.         local index = type(i) == "string" and "[\"".. i .. "\"]" or "[".. i .. "]"
  6.         local value = type(v) == "table" and print_table(v) or type(v) == "string" and "\"".. v .. "\"" or tostring(v)
  7.  
  8.         str = str .. index .. " = ".. value .. ", "
  9.     end
  10.  
  11.     return (#str > 1 and str:sub(1, #str - 2)) .. "}"
  12. end
  13.  
  14.  
  15. function getPetSpellsTable(item_uid)
  16.     local ret = {}
  17.  
  18.     if item_uid > 100 then
  19.         local str = getItemAttribute(item_uid, "pet_spells")
  20.         if str then
  21.             ret = loadstring("return ".. str)()
  22.         end
  23.     end
  24.  
  25.     if #ret > 1 then
  26.         table.sort(ret, function(a, b) return a.level < b.level end)
  27.     end
  28.  
  29.     return ret
  30. end
  31.  
  32. function savePetSpells(item_uid, spell_table)
  33.     return doItemSetAttribute(item_uid, "pet_spells", print_table(spell_table))
  34. end
  35.  
  36. function doPetAddSpell(item_uid, spell)
  37.     local spells = getPetSpellsTable(item_uid)
  38.     table.insert(spells, spell)
  39.  
  40.     return savePetSpells(item_uid, spells)
  41. end
  42.  
  43. function doPetForgetSpell(item_uid, spell_name)
  44.     local spells = {}
  45.  
  46.     for _, spell in pairs(getPetSpellsTable(item_uid)) do
  47.         if spell.name ~= spell_name then
  48.             table.insert(spells, spell)
  49.         end
  50.     end
  51.  
  52.     return savePetSpells(item_uid, spells)
  53. end
  54.  
  55. function getPetSpell(item_uid, spell_name)
  56.  
  57.     for _, spell in pairs(getPetSpellsTable(item_uid)) do
  58.         if spell.name == spell_name then
  59.             return spell
  60.         end
  61.     end
  62.  
  63.     return nil
  64. end
Advertisement
Add Comment
Please, Sign In to add comment