Очень желательно на GUI, либо чёткий JASS.
Есть необходимость сделать автокаст восстановления маны. Кастует фея. Поигрался сначала с колодцами Ночных Эльфов и статуей Нежити, но сразу бросил, когда способности срабатывали при клике раненных по фее, а не клике феи по раненным. Решил сделать триггерный автокаст на основе Духовного пламени, но столкнулся с такими проблемами:
  • Если выбрать всех фей, а потом вокруг каждой в радиусе 700 союзных юнитов с неполной маной и видимых владельцу феи, то как потом лучше выбрать эту фею, вокруг которой юниты выбирались? Заносить сначала её в переменную (массив), в хеш-таблицу, в цикл, ещё как-то?
  • Как именно отсеять из выбранных юнитов того, кто ближе всего к фее или имеет меньше всего маны?
  • Если способность приведена в действие/началось её применение, то нужно ли отслеживать через 0,01 секунды на цели способности бафф, либо она уже точно сработает на союзнике?

8gabriel8:
Это тот же принцип для второго пункта, мне казалось, что могут быть способы изящнее. Лучше по другим пунктам подскажите.
первый вопрос так и не понял, насчет третьего вопроса:
там весь прикол в ивентах, есть начало когда наводишь на цель, тогда даже анимация не проигрывается и мана не забирается.
Приводит в действие это уже когда ману сняло и проигралась анимация.
Где то был текст на всё это, но я не могу найти.
Ну а далее чекаешь уровень бафа у цели, если он больше 0 - значит хиляешь и удаляешь баф
Хотя возможно это я неправильно понял, можно просто отловить начало каста абилки и восстанавливать ману триггерно.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
26
Не только, ещё срабатывает при клике лишённых маны по статуе, а не только при клике статуей по лишённым маны.
18
8gabriel8:
Не только, ещё срабатывает при клике лишённых маны по статуе, а не только при клике статуей по лишённым маны.
нашел одну способность
Это "Восстановить ману" её равкод Amb2
Ошибся, у неё минус - это то что она передает всю свою ману тому кому нужно восстановить ману
26
UrsaBoss, лучше по вопросам сообрази) Ответы на них мне ещё пригодятся.
18
8gabriel8:
UrsaBoss, лучше по вопросам сообрази) Ответы на них мне ещё пригодятся.
все эти вопросы автоматически решаются если написать наработку
18
8gabriel8:
Как, например, отсев произвести?
Вот на jass из ChargeOfDarkness
    private function FindFilter takes nothing returns boolean
        //Условия
        if (IsUnitEnemy( global_caster, GetOwningPlayer(GetFilterUnit()) ) and (GetUnitAbilityLevel( GetFilterUnit(), Marker ) == 0 and IsUnitType( GetFilterUnit(), UNIT_TYPE_STRUCTURE ) == false and IfUnitExist( GetFilterUnit() ) == false) and (IsUnitType( GetFilterUnit(), UNIT_TYPE_ANCIENT ) == false or Ancient_Exception(GetFilterUnit()) ) ) and IsUnitVisible( GetFilterUnit(), GetOwningPlayer(darkness_caster) ) == true then
            if DistanceBetweenUnits( darkness_target, GetFilterUnit() ) < find_distance then
                set find_distance = DistanceBetweenUnits( darkness_target, GetFilterUnit() )
                set foundUnit = GetFilterUnit()
            endif
        endif
        
        return false
    endfunction

    private function Find takes unit caster, unit target returns unit
        //Поиск ближайшей цели
        local group g = GetGroup()
        
        set global_caster   = caster
        set darkness_caster = caster
        set foundUnit       = null
        set find_distance   = 999999
        set darkness_target = target
        call GroupEnumUnitsInRange( g, GetUnitX(target), GetUnitY(target), 4000, Condition(function FindFilter) )
        call RecycleGroup( g )
        
        set g = null
        
        return foundUnit
    endfunction
И где то был скрин как это делается на GUI, ща найду
26
Да не надо. Тут понятно, что юнитов собирают в группу, а в ней действием Если/То/Иначе идёт перебор расстояний, если расстояние меньше того, что в переменной, то его заносят в переменную, как и юнита, до которого расстояние считалось, после перебора в переменной остаётся юнит с наименьшим расстоянием.
Прямо говоря, ожидал чего-то более оригинального)
18
8gabriel8
ну на всякий случай) Я тут нашел свою карту столетней давности (когда я писал на GUI), вот скрин оттуда
Загруженные файлы
16
UrsaBoss:
8gabriel8:
Не только, ещё срабатывает при клике лишённых маны по статуе, а не только при клике статуей по лишённым маны.
нашел одну способность
Это "Восстановить ману" её равкод Amb2
Ошибся, у неё минус - это то что она передает всю свою ману тому кому нужно восстановить ману
А почему нельзя отследить ее применение и установить ману кастеру и цели на необходимое количество единиц?
  1. По этому не понял зачем. Это уже для каких-то последующих наработок? Или это для применения "автокаста"?
  2. Самый очевидный способ нахождения расстояния — знать Х.У координаты юнитов. Получаем 2 катета в прямоугольном треугольнике — считаем гипотенузу, записываем ее, если она меньше, чем у предыдущего юнита. Уверен, есть и попроще пути, но этот самый простой в понимании. АХ, да, ну или просто проверить дистанцию между ними))).
С маной намного проще. Проверить ее количество (в процентах или фактическом кол-ве) у всех юнитов, перезаписывая в переменную того, у кого ее меньше, чем у предыдущего.
Но с этим не увлекайся. И не забудь сделать фею имунной к магии. Иначе 2 таких юнита могут до скончания веков друг друга "хилять", если этот спел стоит маны.
А проблема Духовного пламени в том, что оно не кастуется автокастно вне боя. Лучше замени на восполнить ману, отслеживай ее и устанавливай свои значения.
  1. Тут проще проверить самому, чтобы запомнить.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.