Спасибо, сейчас попробую.
Разумеется, это только половина скрипта - на атакующего, - я решила не грузить форум и вас лишними неудобочитаемыми скриптами. Дефендера я сделаю по образцу аттакера.
Добавлено через 1 час 31 минуту
Чё-то не работает.
МепСкрипт ругается (Script) ERROR: Parameter lost: function name.
path = '/'..GetMapDataPath()
main_hero = 'Raelag'
print("ГГ назван");
SetHeroCombatScript('Raelag', path.."CombatScript.xdb#xpointer(/Script)");
print("Комбат скрипт запущен");
LevR = GetHeroLevel('Raelag');
print("LevR установлен как определитель уровня Раилага");
function HeroLevelSaveF()
SetGameVar("LevR", GetGameVar("LevR")+1); --Увеличиваем на 1 переменную с уровнем героя
print("Установили что LevR это Сет Гейм Вар");
end
SetGameVar("LevR", 1)
Trigger(HERO_LEVELUP_TRIGGER, "Raelag")
Пробовала менять название функции - ничего не меняется.
Пробовала убирать LevR = GetHeroLevel('Raelag'); (мне показалось, что Trigger(HERO_LEVELUP_TRIGGER, "Raelag") вполне достаточно, и может, это так и есть. Убрать LevR = GetHeroLevel('Raelag') или не надо?) - тоже ничего не изменилось, (Script) ERROR: Parameter lost: function name.
Комбат скрипт вроде правильный, но Раилаг по-прежнему кастует глыбу, и игра не видит, что он 20го уровня. Вот скрипт, на всякий случай:
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;
sleep(1);
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
else
if GetHeroName(GetDefenderHero()) == 'Raelag' then
print("åñëè ÃÃ àãðåññîð");
local mana = GetUnitManaPoints(GetDefenderHero())
SetUnitManaPoints(GetDefenderHero(), 200);
repeat sleep(1) until GetUnitManaPoints(GetDefenderHero())==200
sleep(1);
if Level_R < 20 then
print("åñëè óðîâåíü ìåíüøå 20, òî");
for i, creature in GetAttackerCreatures() do
startThread(UnitCastAimedSpell, GetDefenderHero(), 4, creature);
print("êàñòóåì ãëûáó");
end;
SetUnitManaPoints(GetDefenderHero(), mana);
else
print("åñëè óðîâåíü 20 è áîëüøå, òî");
for i, creature in GetAttackerCreatures() do
startThread(UnitCastAimedSpell, GetDefenderHero(), 5, creature);
print("êàñòóåì øàð");
end;
SetUnitManaPoints(GetDefenderHero(), mana);
print("âîçâðàùàåì ìàíó");
end
end;
end;
end;
Сорри, если русский текст не отобразится, но и так, вроде, всё понятно.
Добавлено через 3 минуты
Может, в Меп скрипте вот тут косяк? И какие-то скобки лишние, или кавычки?
SetGameVar("LevR", GetGameVar("LevR")+1);