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

Идея была такая, чтобы Илайя (ГГ) могла бы атаковать главного гада (Назира), и при этом её комбат-скрипт отключался бы, а включался бы скрипт Назира, хотя он и защищается.
Я нашла свой косяк в скрипте, но он всё равно не работает, хотя editor перестал придираться.
Я пишу в комбат-скрипте, - вторым скриптом, после скрипта Илайи на каст Ледяной глыбы в каждом бою::

function Nur_battle()

local defH, attH = GetDefenderHero(), GetAttackerHero()

  if GetHeroName(defH) == "Nur" and GetHeroName(attH) == "Shadwyn" then
        local mana = GetUnitManaPoints(GetDefenderHero())
        SetUnitManaPoints(GetDefenderHero(), 200);
        repeat sleep(1) until GetUnitManaPoints(GetDefenderHero())==200
        for i, creature in GetAttackerCreatures() do
        startThread(UnitCastAimedSpell, GetDefenderHero(), 3, creature)
        end;
        SetUnitManaPoints(GetDefenderHero(), mana);
else
if GetHeroName(defH) == "Shadwyn" and GetHeroName(attH) == "Nur" then
        local mana = GetUnitManaPoints(GetAttackerHero())
        SetUnitManaPoints(GetAttackerHero(), 200);
        repeat sleep(1) until GetUnitManaPoints(GetAttackerHero())==200
        for i, creature in GetDefenderCreatures() do
        startThread(UnitCastAimedSpell, GetAttackerHero(), 3, creature)
        end;
        SetUnitManaPoints(GetAttackerHero(), mana);
        end;
          end;
           end;
             end;
              end;

Но когда Илайя нападает на Назира, она по-прежнему кастит Ледяную глыбу, а Назир на неё молнию не кастит.

Что я делаю не так?)
Может, Назира надо было в MapScript куда-то прописать?

Добавлено через 2 минуты
То есть, я пишу вторую функцию в комбат-скрипте, конечно. А не второй скрипт.

Добавлено через 4 часа 8 минут
И сразу второй вопрос.

Я тут пытаюсь наладить систему Таун порталов, как в третьих Героях.
С ГГ никаких проблем нет, - она портуется куда надо.
Но мне бы хотелось, чтобы все герои первого игрока могли бы портоваться через этот скрипт.
И тут возникает проблема, как их обозначить, - SetObjectPosition(heroName, x, y, floor) требует имя конкретного героя.
А почём же я знаю, кто попадётся мне в таверне?

Поскольку я не знаю, как обозначить героя  без имени, я танцевала с бубном, пытаясь копировать скрипты с форума, но толку что-то нет.
Я написала в начале MapScript:

kot_heroes={"Shadwyn", "Raelag", "Urunir", "Ohtarig"};

Потом написала функцию:

function Portal_HaladF (heroname)
local Portal_Hero
for key, name in kot_heroes do
if name == heroName then
Portal_Hero=1
SetObjectPosition(heroName, 56, 90, 0);
sleep(1);
end;
end;
if not Portal_Hero then
print("не тот герой");
end;
end;

Но всё это не работает, игра продолжает требовать имя того, кто будет портоваться.

Как мне написать, что портоваться должен тот герой, который заюзал объект, если этот герой принадлежит первому игроку?
Марта вне форума
Ответить с цитированием