предлогаю Вашему вниманию следующую конструкцию, в которой для любой вложенности используем только 2 глобальных переменных.
--- init.lua
function call(file,p)
if (call_stack==nil) then
call_stack={}
end
table.insert(call_stack,args)
args=p
local res=dofile(file)...