Не совсем понимаю, что происходит во втором примере.
hero_level = 1; -- задаем переменной значение?
function foo()
hero_level = GetHeroLevel('hero'); -- в функции переменная равна уровню героя?
end
function bar()
local some_variable = hero_level; -- локальная для функции переменная равна глобальной переменной? (1?)
end