МартаSetGameVar("Raelag", geroy);
Это что за чудо-юдо?! Достаточно написать main_hero = 'Raelag'. SetGameVar используется для перенесения переменных из скрипта в скрипт и через миссии кампаний.
В бою имя героя легко и просто узнать функцией GetHeroName, а потому можно упростить + нужно повесить хук начала боя.
function Start()
if GetHeroName(GetAttackerHero()) == 'Raelag' then
print("если ГГ агрессор");
local mana = GetUntiManaPoints(GetAttackerHero()) --Иначе мы ни с того ни с сего оставим 200 маны игроку!
SetUnitManaPoints(GetAttackerHero(), 200);
repeat sleep(1) until GetUntiManaPoints(GetAttackerHero())==200 --Спать до тех пор, пока не начислится мана
UnitCastAimedSpell(GetAttackerHero(), 4);
SetUnitManaPoints(GetAttackerHero(), mana); --Вернём маны, сколько было!
print("кастуем");
elseif GetHeroName(GetDefenderHero()) == 'Raelag' then
print("если ГГ агрессор");
local mana = GetUntiManaPoints(GetDefenderHero()) --Иначе мы ни с того ни с сего оставим 200 маны игроку!
SetUnitManaPoints(GetDefenderHero(), 200);
repeat sleep(1) until GetUntiManaPoints(GetDefenderHero())==200 --Спать до тех пор, пока не начислится мана
UnitCastAimedSpell(GetDefenderHero(), 4);
SetUnitManaPoints(GetDefenderHero(), mana); --Вернём маны, сколько было!
print("кастуем");
end;
end
Ошибка скрипта очень странная, как будто у вас в бою выполняется ещё и MapScript: в тактическом режиме нет такой функции, а потому и выскакивает ошибка. Можете приложить оба файла скрипта? Загрузите на гугл/яндекс-диск там.