Подскажите пожалуйста функцию, которая проверяет есть ли на конкретном юните негативный эффект/дебафф, который отображается в статусе.
Нужно проверить, есть ли данный эффект на юните.
Я нашел вот эту нативку, но чисто по переводу мне кажется она возвращает не то что нужно, возвращает условие если лвл абилки у юнита >0.
А мне нужен не лвл абилки, а проверка наличия эффекта/дебаффа на юните
function UnitHasBuffBJ takes unit whichUnit, integer buffcode returns boolean
    return (GetUnitAbilityLevel(whichUnit, buffcode) > 0)
endfunction

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

Ну вот так и проверяется, выше ли нуля уровень, если выше то есть, иначе нет. Реальный уровень ты при этом не узнаешь, там будет всегда 1 или 0.
`
ОЖИДАНИЕ РЕКЛАМЫ...
3
32
3 года назад
3
Ну вот так и проверяется, выше ли нуля уровень, если выше то есть, иначе нет. Реальный уровень ты при этом не узнаешь, там будет всегда 1 или 0.
Принятый ответ
3
32
3 года назад
3
Это оно, всё правильно так и работает
0
2
3 года назад
Отредактирован Rejuvenation
0
Спасибо.
Просто странно, я пытаюсь сделать так чтобы 2-й скилл легиона из доты первой не сбивал эффект IceBlast с союзников и с себя.
Попытался поменять условие и добавить проверку, что можно хилить только если цель для хила не имеет статус дебаффа IceBlast.
elseif TKE!=null and GetUnitAbilityLevel(TKE,'B0CD')==0
Но он все равно снимает этот дебафф и хилит юнита..
function FBC takes nothing returns boolean
	local trigger t=GetTriggeringTrigger()
	local integer PME=GetHandleId(t)
	local unit TJE=(LoadUnitHandle(LY,(PME),(2)))      //legion
	local unit TKE=(LoadUnitHandle(LY,(PME),(17)))     //unit for healing
	local integer QNE=(LoadInteger(LY,(PME),(5)))
	local integer PCE=(LoadInteger(LY,(PME),(34)))
	local integer FCR=5
	if TJE==TKE then
			set FCR=5
	endif
	set PCE=PCE+1
	call SaveInteger(LY,(PME),(34),(PCE))
	if GetTriggerEventId()==EVENT_WIDGET_DEATH or PCE>FCR then
			call UnitRemoveAbility(TKE,HYE[QNE])
			call DestroyEffect((LoadEffectHandle(LY,(PME),(32))))
			call FlushChildHashtable(LY,(PME))
			call PGE(t)
	else   //elseif TKE!=null and GetUnitAbilityLevel(TKE,'B0CD')==0 
			call SetUnitState(TKE,UNIT_STATE_LIFE,GetUnitState(TKE,UNIT_STATE_LIFE)+20+$A*QNE)  //heal calculations
			call WDE("Abilities\\Spells\\Orc\\SpiritLink\\SpiritLinkZapTarget.mdl",TKE,"chest",1.9)
 	endif
	set t=null
	set TJE=null
	set TKE=null
	return false
endfunction

Но я наверное не то условие меняю, где-то должно быть условие на само снятие дебаффов этим скилом. А я именно на хиле сфокусировался.
0
32
3 года назад
0
Ты ниче не исправишь с такими познаниями, темболее что апарату похер на бафф, это отдельный триггер с массивом на каждого героя, там идет ослабление регена.

Там надо код бласта переделывать, потом сларк и лега сделаны спецом для снятия данного дебафа, там вроде у фрога отдельная функция диспела есть.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.