SetGameVar("LevR", 1);
print("Установили что LevR это Сет Гейм Вар");
LevR = GetHeroLevel('Raelag');
Вы устанавливаете значение внутриигровой переменной "LevR" в единицу, а потому жаловаться вам не на что — вы ее нигде не меняете.
А следующая ниже LevR = GetHeroLevel("Raelag") разово записывает уровень героя (первый) в вообще другую переменную.
Сделать надо так:
function HeroLevelSave()
SetGameVar("LevR", GetGameVar("LevR")+1)--Увеличиваем на 1 переменную с уровнем героя
end
SetGameVar("LevR", 1)
Trigger(HERO_LEVELUP_TRIGGER, "Raelag")
В Комбат скрипте тоже немного по-другому:
function Start()
Level_R = GetGameVar("LevR") + 0;
print("Level_R установлен как определитель уровня Раилага мать его в бою и зависит от LevR через Сет и Гет Гейм Вар");
if GetHeroName(GetAttackerHero()) == 'Raelag' then
print("если ГГ агрессор");
local mana = GetUnitManaPoints(GetAttackerHero());
SetUnitManaPoints(GetAttackerHero(), 200);
repeat sleep(1) until GetUnitManaPoints(GetAttackerHero())==200;
if Level_R < 20 then
print("Если уровень меньше 20, то");
for i, creature in GetDefenderCreatures() do
startThread(UnitCastAimedSpell, GetAttackerHero(), 4, creature);
print("кастуем глыбу");
end;
SetUnitManaPoints(GetAttackerHero(), mana);
print("возвращаем ману");
else
print("Если уровень 20 и больше, то");
for i, creature in GetDefenderCreatures() do
startThread(UnitCastAimedSpell, GetAttackerHero(), 5, creature);
print("кастуем шар");
end;
SetUnitManaPoints(GetAttackerHero(), mana);
print("возвращаем ману");
end
end
end;
Не хватало end'ов у вас, я поставил нужное кол-во. Кроме того, ваш скрипт (если он такой, как выше), сработает только если мы напали, а не напали на нас.
У вас не хватало 1 энда.