I have quickly skimmed this. To answer your specific questions:
Looping:The script is already doing this. The relevant lines are:
#reset
~1
_all = list trig01
? (count _all) == 0 : goto {reset}
The script will loop while there are no units in the trigger list.
To make a trigger active at some later time there are several options. A few are listed below:
1. Put something like this as the first line of the script:@ OKtoGo
and somewhere in your mission when you want the script to start put:
OKtoGo = true
I also always tell people not to forget to initialise their variables at the start of the mission so:
OKtoGo = false
But that is not necessary here.
2. If you don't want to mess with the script (but I think you should for the reason I explain below) you could change the condition field of the trigger from this
to
this and OKtoGo
(with all the same comments about OKtoGo as in 1.)
3. Have the trigger way out to sea and when you want to activate it move it to where you want it to be using setPosThe reason I only skimmed the script is I found a serious error in it at the start. It is this line:
_knows = 0.8
This value is used later with a 'knowsabout' instruction. In v 1.46 of Flashpoint this may have been fine. For later versions the value should be closer to 0.105.
See:
http://www.ofpec.com/editors/comref.php?letter=K#knowsAboutand particularly the comments.
My suggestion is that you use other people's scripts as a way of learning about scripting - then write your own.