It is very hard for me to bugtest without being able to run OFP, but I think I know what is going on...I think it has to do with the skip player loop; if the player is the first element in the array, this could cause the script to loop and try to select the -1 element from the array (which is impossible, and would give the zero divisor error I think). Try this out and let me know if it worked.
pgroup = group player
_groupnum=(count units _pgroup)
_grouparray=units _pgroup
_deg=0
_splitdeg=360/(_groupnum-1)
_range=15
_pos=getpos player
_px=_pos select 0
_py=_pos select 1
#top
_groupnum=_groupnum-1
?(_groupnum<0):exit
_pman=_grouparray select _groupnum
;skip player
?(_pman==player):goto "top"
_deg=_deg+_splitdeg
_movex=_px+(_range*(sin(_deg)))
_movey=_py+(_range*(cos(_deg)))
_watchx=_px+((_range*2)*(sin(_deg)))
_watchy=_py+((_range*2)*(cos(_deg)))
_pman domove [_movex,_movey,0]
_pman dowatch [_watchx,_watchy,1]
goto "top"