A couple of things I can think of:
_player_array = ["W1","W2","W3","W4","W5","W6","W7","W8"]
_Player_Array should be:
_player_array = [W1,W2,W3,W4,W5,W6,W7,W8]
You cant refer to units that way, using strings. They have to be the exact names you add to each units name, in the editor.
After that just do this:
#Loop
~7
;Unit array
_player_array = [W1,W2,W3,W4,W5,W6,W7,W8]
;Create a copy of List dying
_list = +(List dying)
;check against the player array
_Result=_player_array-_list
{[_x] Exec "Exit.sqs"} ForEach _Result
goto "Loop"
Exit.sqs:
_Man=_This Select 0
~1
If !(_Man In (List Dying)) Then {Hint Format ["%1\n You are leaving the battle area.\n Please return or be punished", name _Man]}
~4
If !(_Man In (List Dying)) Then {_Man setdammage 1}
Anything in the array _Result, is not in the trigger.