CHLSN, выбор 1 юнита из группы:
Code
function GroupPickRandomUnitEnum takes nothing returns nothing
set bj_groupRandomConsidered = bj_groupRandomConsidered + 1
if (GetRandomInt(1,bj_groupRandomConsidered) == 1) then
set bj_groupRandomCurrentPick = GetEnumUnit()
endif
endfunction
...
set bj_groupRandomConsidered = 0
set bj_groupRandomCurrentPick = null
call ForGroup(whichGroup, function GroupPickRandomUnitEnum)
...
сравнение расстояний с учетом Z, если известна высота обоих юнитов:
Code
local real DisBetPoints = 0.
local real dx = 0.
local real dy = 0.
local real dz = 0.
local real array x
local real array y
local real array z
set x[0] = GetUnitX (цель)
set y[0] = GetUnitY (цель)
set z[0] = Высота цели
set x[1] = GetUnitX (дамми)
set y[1] = GetUnitY (дамми)
set z[1] = Высота дамми
set dx = x[1] - x[0]
set dy = y[1] - y[0]
set dz = z[1] - z[0]
set DisBetPoints = SquareRoot (dx*dx + dy*dy + dz*dz)
а если Z юнитов неизвестна, то не знаю как.