Всем привет) Кто нибудь работал с функцией SetUnitBlendTime? Что она вообще делает?

Принятый ответ

либо это время перехода между анимациями, либо время изменения цвета при смене суток, но это не точно
0
19
7 лет назад
0
Похожие вопросы:

ответ
через иф в действие записывать но это не кул
EnergyFrost, не угадал)
и чем тебе функция не нравится?
функция Condition берёт функцию и возвращает условие
native Condition takes code func returns conditionfunc
native TriggerAddCondition takes trigger whichTrigger, boolexpr condition returns triggercondition
а вобще это написано в статье
ответ
silence_AZ,
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
function UnitAddEffect takes unit u, real x, real y returns nothing
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl", x, y))
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl", GetUnitX(u), GetUnitY(u)))
endfunction

function Action takes nothing returns nothing
    local unit u = GetOrderedUnit()
    local real x = GetOrderPointX()
    local real y = GetOrderPointY()
    call UnitAddEffect(u, x, y)
endfunction

function InitTrig_Effect takes nothing returns nothing
    local trigger t = CreateTrigger()
    local integer i = 0
    loop
        call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
        set i = i + 1
        exitwhen i == 16
    endloop
    call TriggerAddAction( t, function Action )
endfunction
Создайте триггер "Effect", конвертируйте в текст, удалите все что там есть, копирните и вставьте мое, запускайте карту и побегайте юнитами.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
cJass
    define{
        func = function
        void = nothing
        GetX(u) = GetUnitX(u)
        GetY(u) = GetUnitY(u)
        //Constants
        Effect_OnUnit = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
        Effect_OnXY = "Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl"
    }

    void Action(){
        unit u = GetOrderedUnit();
        DestroyEffect(AddSpecialEffect(Effect_OnXY, GetOrderPointX(), GetOrderPointY()));
        DestroyEffect(AddSpecialEffect(Effect_OnUnit, GetX(u), GetY(u)));
    }

    void InitTrig_Effect(){
        trigger t = CreateTrigger()
        integer i = 0
        loop{
            TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null);
            i++;
            exitwhen i == 16;
        }
        TriggerAddAction( t, func Action );
    }
этот вариант будет оптимальнее в туче кода, хоть такая фигня и не нужна никому, но тем не менее..
ответ
SetUnitPosition довольно тяжелая операци, юзайте SetUnitX\Y в конце полета юзай SetUnitPosition для того чтобы юнит не залетел в непроходимое место.
Фильтр просто ужас, ну кто так фильтры делает?
Проверка на 'Aloc', я в ужасе на кой черт проверять на дамми если GropEnumUnitsInRange\Rect не выделяет москитов, тока EnumOfPlayer может пикнуть москитов, остальное не пикает их, на то они и москиты...
Вот как выглядит нормальный фильтр без локалок и прочего
function EnemyFilter takes nothing returns boolean
    set bj_lastFilterUnit = GetFilterUnit( )
    return GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) > 0.405 and IsUnitEnemy( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and not( IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MAGIC_IMMUNE ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MECHANICAL ) or IsUnitInvulnerable( bj_lastFilterUnit ) )
endfunction
UnitDamageTargetEx - красиво но нафиг ненужно обводить в отдельную функцию с тучей аргументов + жутко неудобно, 100500 аргументов у функции и фиг знает за что какой от вечает, прямо так UnitDamageTarget, без отдельной функции.
Туча констант, тоже хорошо тока длят наработок, на деле ставь конкретные значения или юзай Difine vjass'a.
ответ
Стоп, я думал ты именно это и проверял...
Ещё есть вариант - тревога это реакция нейтральных монстров на то, что недалеко от них появилось здание (когда начинаешь строить здание, и тут из леса прибегают нейтралы, ломают, и убегают обратно).
первая проверка - мб эта функция делает так что данный нейтрал игнорирует то что рядом с ним появится здание, и он в итоге не побежит его атаковать
вторая проверка - возможно функция делает само здание игнорируемым для этих нейтралов, т.е. конкретно на него не будут сбегаться ближайшие нейтралы
Но я больше склоняюсь к первому

2
26
7 лет назад
2
либо это время перехода между анимациями, либо время изменения цвета при смене суток, но это не точно
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.