function GROUP_FILTER takes nothing returns boolean
local unit f=GetFilterUnit()
local unit caster=GetTriggerUnit()
local player p=GetOwningPlayer(caster)
local unit target=GetSpellTargetUnit()
if IsUnitAlly(f,p) and GetWidgetLife(f)>0 and f!=target and IsUnitType(f,UNIT_TYPE_STRUCTURE)==false then
//code
endif
set f=null
set caster=null
set p=null
set target=null
return false
endfunction
Собственно вопрос в том, можно ли так делать, правильно ли варик выбирает юнитов и прочую дичь или все таки нет и лучше использовать глобалки.
Именно вот так. Или все таки первый вариант работает ?
Именно вот так. Или все таки первый вариант работает ?
globals
player PLAYER=Player(0)
unit TARGET=GetSpellTargetUnit()
endglobals
function GROUP_FILTER takes nothing returns boolean
local unit f=GetFilterUnit()
if IsUnitAlly(f,PLAYER) and GetWidgetLife(f)>0 and f!=TARGET and IsUnitType(f,UNIT_TYPE_STRUCTURE)==false then
//code
endif
set f=null
return false
endfunction
Принятый ответ
Первый вариант должен работать, если фильтр относится к группе.
IsUnitType() == false замени на not IsUnitType().
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Когда в фильтре нудно фильтровать юнитов чтобы в группу попали только нужные юниты, а перебирать их ForGroup или циклом.
Замеры лича, которыми он делился на HIVE, говорят, что ForGroup() медленнее перебора цикла.
Нужно сначала обьявить глобалку а потом в спеле юзать вместо локалки, присваивая значение, т.к не будет тратится время на создание и обнуление локалок. Скорость работы что у локалок что у глобалок одинаковая.
PT153:
quq_CCCP: