A game logic is friendly to everyone, which means the soldiers will not fire at them. Use an invisible target. You can get an invisible target addon from the addons depot. Sorry, I don't have the link for it.
Try the following script:
_gunner1 = _this select 0
_BaseList = [soldier1,soldier2,soldier3,soldier4,soldier5,soldier6,soldier7,soldier8,soldier9]
{_gunner1 reveal _x} foreach _BaseList
exit
call the script from the machine gunner's init field like this:
[this] exec "reveal.sqs"
Btw, if the script is in a subfolder within the Attack folder, you will have to call the script like this:
[this] exec "SubFolderName\Reveal.sqs"
-Student Pilot