call GroupEnumUnitsInRange(g,GetUnitX(u),GetUnitY(u),250,null)
loop
set n = FirstOfGroup(g)
exitwhen n == null
if IsUnitEnemy(n,GetOwningPlayer(u)) == true then
call UnitDamageTarget(u,n,true,false,attack,damage,weapon)
set ef = AddSpecialEffectTarget("Objects\\Spawnmodels\\Critters\\Albatross\\CritterBloodAlbatross.mdl", n ,"origin")
call DestroyEffect(ef)
endif
call GroupRemoveUnit(g,n)
set n = FirstOfGroup(g)
endloop
использую эту схему для внесения врагов в группу юнитов но баг в том что спецэфекты и на трупиках появляются как избежать такого (желательно без проверки мертв не мёртв)
Принятый ответ
function IsUnitDead takes unit u returns boolean
return GetUnitTypeId(u) == 0 or IsUnitType(u, UNIT_TYPE_DEAD)
endfunction
function IsTarget takes unit u,unit d returns boolean
return not IsUnitType(u,UNIT_TYPE_ANCIENT) and not IsUnitDead(u) and not IsUnitType(u, UNIT_TYPE_STRUCTURE) and not IsUnitType(u, UNIT_TYPE_MAGIC_IMMUNE) and IsUnitEnemy(u, GetOwningPlayer(d))
endfunction
всё таки без проверок не обойтись
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
В общем виде.