Set/GetGameVar сохраняет уж слишком глобально, с помощью нее можно переносить данные между приключенческим и боевым режимом, а также между картами. Внутри одной карты все гораздо проще:
function foo()
local var1 = 1; -- var1 локальная, видна только в этой функции
var2 = 2; -- var2 глобальная, может быть использована где угодно
end
Более хорошим тоном является конечно все переменные внутри функций делать локальными, а глобальные объявлять снаружи, скажем в начале файла:
hero_level = 1;
function foo()
hero_level = GetHeroLevel('hero');
end
function bar()
local some_variable = hero_level;
end