Lua обрабатывает и выполняет файлы построчно, поэтому порядок их определения и использования может быть важен.В этом случае, хотя кажется, что вы не предоставляете весь код, потому что похоже, что вы определяете forID
как глобальный, но ошибка подразумевает иное.Вы можете просто попробовать изменить порядок, в котором определены функции, чтобы увидеть, работает ли он.
Bone = class(function(b, id, xp)
b.id = id
b.xp = xp
end)
function forId(bid)
local xp = 0.0
if bid == 526 or bid == 528 or bid == 2530 or bid == 2859 then
xp = 4.5
elseif bid == 3179 or bid == 3180 or bid == 3183 or bid == 3185 then
xp = 5.0
elseif bid == 530 then
xp = 53
elseif bid == 532 or bid == 3125 then
xp = 15
elseif bid == 4812 then
xp = 22.5
elseif bid == 7839 then
xp = 30
elseif bid == 6812 then
xp = 50
elseif bid == 536 then
xp = 72
end
local bone = Bone:new(bid, xp)
return bone
end
function execute(args)
local itemid = 526
local bone = forId(itemid) -- this is where the error occurs
end
Но так как вы не предоставили полный код, это может привести к смещению ошибки в другом месте.