Try this script:
group = _this select 0
_dis = _this select 1
_units = units(_group)
_count = count(_units)-1
?_count<=0:goto "end"
_spokespacing=360/_count
_dir=0
_i=0
_center=getpos leader (_this select 0)
_cx = _center select 0
_cy = _center select 1
#fanout
_unit = (_units select _i)
_;unitpos = getpos _unit
_ux = _center select 0
_uy = _center select 1
_vx = _ux+(_dis * sin(_dir))
_vy = _uy+(_dis * cos(_dir))
?_unit == (leader _group):goto "next"
_unit domove [_vx,_vy]
@unitready _unit
_unit stop true
_unit setdir _dir
#next
_unit setunitpos "down"
_dir=_dir+_spokespacing
_i=_i+1
?_i<count(units _group):goto "fanout"
exit
I called it "radial.sqs". You can call it anything you want. To execute the script use:
[groupname, distance] exec "radial.sqs"
or, if called from the init field of one of the units
[group this, distance] exec "radial.sqs"
groupname is the name of the group to spread out
distance is from the leader.
You can place this in the activation field of a waypoint or the init field of your unit
I made the group spread out in a 360 degree circle and lie down. They move one at a time until all are positioned. I could also make them move all at once if you'd like.
If you'd like to see a short sample mission, just let me know.
Hope this helps