Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты
Тема: Скрипты
Показать сообщение отдельно
#3475
Старый 25.08.2021, 13:15
  #3475
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Спасибо, сейчас попробую.
Разумеется, это только половина скрипта - на атакующего, - я решила не грузить форум и вас лишними неудобочитаемыми скриптами. Дефендера я сделаю по образцу аттакера.

Добавлено через 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);
Марта вне форума
Ответить с цитированием