нормально ли юзать это:
group g = CreateGroup()
GroupEnumUnitsInRangeOfLoc(g, l, r,null)
unit u = FirstOfGroup(g)

whilenot(u==null){

if(Буль){ //сюда наш буль, вместо буля в GroupEnumUnitsInRangeOfLoc(g, l, r,null)
DoSomething
GroupRemoveUnit(g,u)
u = FirstOfGroup(g)}

else{
DoNothing
GroupRemoveUnit(g,u)
u = FirstOfGroup(g)}
}
DestroyGroup(g)
вместо этого:
group g = CreateGroup()
GroupEnumUnitsInRangeOfLoc(g, l, r,Буль)
ForGroup(g,function ________)
DestroyGroup(g)

Не знаю нафига вам плодить локал группы?
1 Глобальную группу для мгновенных действий, примеру пикнут всех в аое и нанести дмг.
2 Для долго хранящихся групп, к примеру группы для триггерных скиллов по типу Волна Силы где группа хранит уже попавшихся на время полета волны юзайте GroupUtils или прочие ресайклы групп, быстро и удобно.
Ах да, фильтры быстрее вашего перебора с проверкой в цикле, создайте N фильтров на все сулучаи жизни и юзайте на здоровье.
вот пример:

globals 
	boolexpr OnlyEnemy = null
	unit bj_lastFilterUnit = null
endglobals


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

function init takes nothing returns nothing
	set OnlyEnemy = Condition( function EnemyFilter )
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
7
Ну извини, действие не мгновенно, почти всегда заставит тебя юзать таймер и записывать всё в хеш или глобалки.
И да, действие не мгновенное тоже можно сделать, причем легко через цикл:
2 группы, с одной удаляем в другую кидаем(если нельзя,чтоб группа руинилась)
Цикл, в теле создаем таймер под каждого юнита
Сохраняем в хеш под хэндлИд таймера
Ну а дальше ты понял)
фор групп - не использован.
21
M1n3rva, это я знаю. У меня были проблемы с использованием считывания/записи локальной группы в хэш в таймере: вроде как не получалось передать локальной группе значение без "CreateGroup()", тоесть без создания нового хэндла. Старая ссылка терялась и это вызывало утечки групп. С "ForGroup" подобного не наблюдалось.
32
Не знаю нафига вам плодить локал группы?
1 Глобальную группу для мгновенных действий, примеру пикнут всех в аое и нанести дмг.
2 Для долго хранящихся групп, к примеру группы для триггерных скиллов по типу Волна Силы где группа хранит уже попавшихся на время полета волны юзайте GroupUtils или прочие ресайклы групп, быстро и удобно.
Ах да, фильтры быстрее вашего перебора с проверкой в цикле, создайте N фильтров на все сулучаи жизни и юзайте на здоровье.
вот пример:

globals 
	boolexpr OnlyEnemy = null
	unit bj_lastFilterUnit = null
endglobals


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

function init takes nothing returns nothing
	set OnlyEnemy = Condition( function EnemyFilter )
endfunction
Принятый ответ
15
Да. Для мгновений лучше глобалки использовать.
7
GF RaiseD:
M1n3rva, это я знаю. У меня были проблемы с использованием считывания/записи группы в хэш в таймере: вроде как не получалось передать локальной группе значение без "CreateGroup()", тоесть без создания нового хэндла. Старая ссылка терялась и это вызывало утечки групп. С "ForGroup" подобного не наблюдалось.
Конечно, ты подумай как можно юзать группу, которой нет) создал группу и юзаешь, и ничего терятся не будет, ведь в конечном итоге ты в хеш грузишь даже не группу, а юнитов группы.
quq_CCCP, мне нравится название переменных, но спасибо)
21
M1n3rva, кажется, я тогда писал какую-то рачатину (код, где утекали группы).
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.