I made a function that returns how far off and object is from facing another object. You could use this function to check if players/AI units are facing away from the “monster". The DirOff function returns a value in the range -180 to 180 degrees. You could use it in a loop that checks each group member's “DirOff" from the monster, if all the “diroffs" are greater than ABS 45, then the monster can move toward the nearest group member, or snatch the nearest group member if that member is close enough.
The script would look something like this:
_lead = _this select 0
_monster = _this select 1
_DirOff = preProcessFile “DirOff.sqf"
_units = units group _lead
#dircheck
_move = false
_dead = []
{if (! Alive _x) then {_dead = _dead + [_x]}} forEach _units
_units = _units - _dead
? {ABS ([_x, _monster] call _DirOff) > 45} count _units == count _units : _move = true
? _move : [_monster, _units] exec “moveToward.sqs"
~ 2
? count _units > 0 : goto “dircheck"
Exit
The script “moveToward" would be your script that makes the monster move toward the nearest potential victim and attack that victim he is in range. You can sort which unit is closest using another function I made called DisSort.sqf. Both functions are attached and both have good instructions in the headers.