Как проверить кастует ли герой прерываемое заклинание?

KobaST

Subscriber: DotA 2
52
6
Как проверить кастует ли герой прерываемое заклинание?
Собственно говоря пилю скрипт на автоматичесский юз урны или Spirit Vessel.
Так-то всё готово и даже работает, но есть одна неприятная штука, скрипт сбивает ульт ЦМки например. Я так и не понял как это можно пофиксить. Подскажите как это сделать.
 

UnhappyAngel

Велосипедист
Команда форума
Scripter
Subscriber: DotA 2
339
436
Ты читать документацию не пробовал?
0UzwqfV.png

 
Так сделай проход по всем скилам\вещам через цикл
Сразу видно "команда" пишет скрипты, а не костя ))0
 
  • Like
Реакции: Chrys4lislove

UnhappyAngel

Велосипедист
Команда форума
Scripter
Subscriber: DotA 2
339
436
Как тогда получить заклинание которое кастуется в данный момент?
Он это спрашивал, а там только ответ на кастует ли нпс
Как проверить кастует ли герой прерываемое заклинание?
Собственно говоря пилю скрипт на автоматичесский юз урны или Spirit Vessel.
Так-то всё готово и даже работает, но есть одна неприятная штука, скрипт сбивает ульт ЦМки например. Я так и не понял как это можно пофиксить. Подскажите как это сделать.
if not NPC.IsChannelingAbility(myHero) then ...
 
Как проверить кастует ли герой прерываемое заклинание?
 

Chrys4lislove

Команда форума
Head Moderator
Subscriber: DotA 2
533
185
Как тогда получить заклинание которое кастуется в данный момент?
Он это спрашивал, а там только ответ на кастует ли нпс
Зачем это проверять, если использовать метод, который предложил @UnhappyAngel
Это ты костыли придумываешь, для которых это надо делать
 

KobaST

Subscriber: DotA 2
52
6
Вроде сделал всё так как нужно, но каст всё равно сбивается.
Собственно сам скрипт:
На 43 строке проверка. Вызывается функция из конца скрипта которая и должна проверить всё.
Но почему-то оно не работает.
 
107
65
зщаглянул бы ко мне, давно написал, это не свосем прерываемое - эжто любое - ты его можешь прервать (в смысле любое во время анимации каста).
Код:
function LastHitCreep.IsCastNow(user)
    if not user then return false end;   
    if NPC.IsChannellingAbility(user) then return true end;
    if NPC.HasModifier(user, "modifier_teleporting") then return true end;
    for i=0, 24 do   
        local abil = NPC.GetAbilityByIndex(user, i);
        if abil and Entity.IsEntity(abil) and (Ability.GetLevel(abil) >= 1) and not Ability.IsHidden(abil) and not Ability.IsPassive(abil) and Ability.IsInAbilityPhase(abil) then
            Log.Write(Ability.GetName(abil));
            return true;
        end;
    end;
  return false;
end;
можно закрывать.
 

KobaST

Subscriber: DotA 2
52
6
зщаглянул бы ко мне, давно написал, это не свосем прерываемое - эжто любое - ты его можешь прервать (в смысле любое во время анимации каста).
Код:
function LastHitCreep.IsCastNow(user)
    if not user then return false end; 
    if NPC.IsChannellingAbility(user) then return true end;
    if NPC.HasModifier(user, "modifier_teleporting") then return true end;
    for i=0, 24 do 
        local abil = NPC.GetAbilityByIndex(user, i);
        if abil and Entity.IsEntity(abil) and (Ability.GetLevel(abil) >= 1) and not Ability.IsHidden(abil) and not Ability.IsPassive(abil) and Ability.IsInAbilityPhase(abil) then
            Log.Write(Ability.GetName(abil));
            return true;
        end;
    end;
  return false;
end;
можно закрывать.
Даже с этой функцией получилось сделать только при помощи костыля с задержкой на время каста. Хз почему но эта функция срабатывает только в начале каста.
 
107
65
Даже с этой функцией получилось сделать только при помощи костыля с задержкой на время каста. Хз почему но эта функция срабатывает только в начале каста.
так задумано)
 
107
65
Ну такое. Это ж нужно будет для каждого каста писать его задержку.
эта функция проверяет анимацию каста, а если тебе нужно долгие типо цмки или бейна то это
тебе нужно вместо моего
Ability.IsInAbilityPhase(abil)