Доброго времени суток Очень рад, что вы работаете над картой! "Стариков" маловато в последнен время. К вопросу, нет, это невозможно. Хотя можно (теоретически) создать непроходимый объект статики с плотной-плотной моделью чёрного облака и создавать его в нужном месте.
Доброго времени суток Очень рад, что вы работаете над картой! "Стариков" маловато в последнен время. К вопросу, нет, это невозможно. Хотя можно (теоретически) создать непроходимый объект статики с плотной-плотной моделью чёрного облака и создавать его в нужном месте.
Жаль, спасибо за ответ, нет это не вариант, для моей задумки это огромная нагрузка на карту, буду обходиться костылями)
Можно убрать стандартное открытие тумана и организовать обзор скриптом (с маленькой нагрузкой). Тогда можно будет вычислять, подходит ли герой к области нужного объекта, и в таком случае не открывать. То есть, обзор (наш, скриптовый) сделать 7 клеток, и если координаты героя меньше либо равны уравнению окружности вокруг обьекта + 8 клеток, то перестать открывать туман... Что-то вроде запретного города, радиусом 8 клеток. Не подойдет такой костыль?
Как идея норм, но не мой случай. Я примерно представляю что и как сделать, просто думал есть механизм нормальный для тумана войны, жаль разработчики не предусмотрели такую возможность
Доброго времени суток, давно не работал с боевыми скриптами, наклепал короткий и с виду простой код, но каст не отрабатывает, не могу понять почему (пробовал со всеми заклами света, работает только с регеном, в тьме только с замедлением, остальные тоже ругаются). Прошу помощи у знатоков. Пример ниже: Заголовок
function Start() local creaturesList = GetAttackerCreatures(); local manaSave = GetUnitManaPoints(GetAttackerHero()); sleep(5); SetUnitManaPoints(GetAttackerHero(), 500); for i, target in creaturesList do UnitCastAimedSpell(GetAttackerHero(), SPELL_BLESS, target); print("Unit"..GetAttackerHero().."casted".. SPELL_BLESS.." to target"..target); end; sleep(5); SetUnitManaPoints(GetAttackerHero(), manaSave); startThread(checkWinAttacker); startThread(checkWinDefender); sleep(5); EnableAutoFinish(nil); end;
function checkWinAttacker() repeat sleep(1); until length(GetDefenderCreatures()) == 0;
sleep(30); Finish(ATTACKER); end;
function checkWinDefender() repeat sleep(1); until length(GetAttackerCreatures()) == 0;
Почему бы не упростить скрипт и не воспользоваться масскастами? UnitCastGlobalSpell(GetAttackerHero(), SPELL_MASS_BLESS).
function Start() local mana = GetUnitManaPoints(GetAttackerHero()) SetUnitManaPoints(GetAttackerHero(), 200) sleep(1) UnitCastGlobalSpell(GetAttackerHero(), SPELL_MASS_BLESS) sleep(1) end
В вашем скрипте, вероятно, не хватает sleep-ов внутри цикла for; всё-таки время выполнения у функций каста есть и заметное.
Почему бы не упростить скрипт и не воспользоваться масскастами? UnitCastGlobalSpell(GetAttackerHero(), SPELL_MASS_BLESS).
function Start() local mana = GetUnitManaPoints(GetAttackerHero()) SetUnitManaPoints(GetAttackerHero(), 200) sleep(1) UnitCastGlobalSpell(GetAttackerHero(), SPELL_MASS_BLESS) sleep(1) end
В вашем скрипте, вероятно, не хватает sleep-ов внутри цикла for; всё-таки время выполнения у функций каста есть и заметное.
Не смогу упростить, т.к. битва проходит между героем и армией нейтралов, потому каст бафов нейтралам приходится производить от лица героя
Другой вопрос, можно ли как-то кастовать мобом скажем ускор, на экспертном уровне без редактирования самого моба? Онли скриптом
нет, если у существа явно не прописано заклинание, то оно будет кастовать его на продвинутом уровне. Если мне нужно кастануть спелл существом на каком-то специальном уровне/специальных условиях, я использую скрытых существ, которым явно прописаны заклинания. В бою вызываю скрытое существо -> кастую -> убираю существо. При такой схеме, появление существа остается незаметным. Пример кода(рабочий пример из NHF):
-- призыв AddCreature(side, HELPER, 30, -1, -1, nil, 'fiona_sorrow_helper') while not exist('fiona_sorrow_helper') do sleep() end -- каст for creature, _ in enemy_stacks_to_sorrow do pcall(UnitCastAimedSpell, 'fiona_sorrow_helper', SPELL_SORROW, creature) end -- удаление существа removeUnit('fiona_sorrow_helper') while exist('fiona_sorrow_helper') do sleep() end
Нет войне.
}{0TT@6bI4
Нет. Можно создать специального моба со всеми заклинаниями на нужных уровнях, вызывать его, кастовать им что-то (на своих) и удалять. Это реализовано, например, в карте Проклятый
Не знаю спрашивали ли до меня об этом, но все же. Как сделать так, чтобы при входе в регион диалога он проигрывался лишь один раз и при повторном входе в этот регион, диалог больше не открывался?