Добавлен Стас Орлов
Объясните, как одновременно выбрать только юнитов определённого типа у определённого игрока в обределенной области?
Я делаю так:
Отряд выбрать юнитов типа() принадлежащих игроку 6 и делать множество действий.
Отряд выбрать юнитов в области() и делать то, но у меня выбираются все юниты в этой области. Что делать? Как это исправить?
Я делаю так:
Отряд выбрать юнитов типа() принадлежащих игроку 6 и делать множество действий.
Отряд выбрать юнитов в области() и делать то, но у меня выбираются все юниты в этой области. Что делать? Как это исправить?
Принятый ответ
function groupCondition takes nothing returns boolean
return true == true //Здесь пишешь условия используя and или or и сюда передается юнит GetFilterUnit()
endfunction
//Эти действия вставляешь в любую нужную тебе функцию
local group g = CreateGroup()
local boolexpr bE = Condition( function groupCondition )
local unit u
//Где x и y - это координаты
//Где r - это радиус
call GroupEnumUnitsInRange( g, x, y, r, bE )
call DestroyBoolExpr( bE )
loop
set u = FirstOfGroup( g )
exitwhen u == null
//Действия над группой
call BJDebugMsg( GetUnitName( u ) )
//Конец
call GroupRemoveUnit( g, u )
set u = null
endloop
call GroupClear( g )
call DestroyGroup( g )
set g = null
set bE = null
set u = null
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Да, функцию groupCondition всегда ставь над той функцией где будешь вставлять действия.
И в том же groupCondition можешь фильтровать юнитов, юнит который туда идет на проверку - это GetFilterUnit()
Стас Орлов
и ещё важное забыл, те три local переменные всегда ставь в самый верх действий функции.
Если надо относительно юнита, смести их на угол полярными координаами
я не находил статьи которая объясняла бы что нужно и что не нужно обнулять
quq_CCCP
хотя пришлось порыться, вроде нашел
Отредактирован Hanabishi