• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Spellbook not working! 1.2

Aeronx

Intermediate OT User
Joined
Dec 17, 2015
Messages
746
Solutions
9
Reaction score
125
Hello all! I dont know why, but it doesnt work for me, i get this error!
Code:
data/actions/scripts/other/spellbook.lua:onUse
data/actions/scripts/other/spellbook.lua:18 bad argument #1 to 'pairs' <table expected, got nil>
Stack traceback:
            [C]: ?
            [C]: in function 'pairs'

I didnt do anything to the code, its the default script that comes with the engine. Any clues?
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local count = getPlayerInstantSpellCount(player)
local text = ""
local spells = {}
for i = 0, count - 1 do
local spell = getPlayerInstantSpellInfo(player, i)
if spell.level ~= 0 then
if spell.manapercent > 0 then
spell.mana = spell.manapercent .. "%"
end
spells[#spells + 1] = spell
end
end

table.sort(spells, function(a, b) return a.level < b.level end)

local prevLevel = -1
for i, spell in ipairs(t) do
local line = ""
if prevLevel ~= spell.level then
if i ~= 1 then
line = "\n"
end
line = line .. "Spells for Level " .. spell.level .. "\n"
prevLevel = spell.level
end
text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
end

player:showTextDialog(item:getId(), text)
return true
end
Thanks for you time!
 
Code:
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local count = getPlayerInstantSpellCount(player)
    local text = ""
    local spells = {}
    for i = 0, count - 1 do
        local spell = getPlayerInstantSpellInfo(player, i)
        if spell.level ~= 0 then
            if spell.manapercent > 0 then
                spell.mana = spell.manapercent .. "%"
            end
            spells[#spells + 1] = spell
        end
    end
   
    table.sort(spells, function(a, b) return a.level < b.level end)
   
    local prevLevel = -1
    for i, spell in ipairs(spells) do
        local line = ""
        if prevLevel ~= spell.level then
            if i ~= 1 then
                line = "\n"
            end
            line = line .. "Spells for Level " .. spell.level .. "\n"
            prevLevel = spell.level
        end
        text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
    end
   
    player:showTextDialog(item:getId(), text)
    return true
end
 
Back
Top