You're misunderstanding some key concepts here. The reason for your error message however lies in this line:
waitUntil { [b](((mi3 pil07) != mi3)[/b] and (((getPos pil07) select 2) <= 0)) or (not (alive pil07)) };
More precisely the part that's in bold. That syntax means absolutely nothing to ArmA, which is why it's spazzing out.
If you want it to work, just copy-paste MY code block and follow MY instructions in the post above, and it should by all appearances work.
However, I'll quickly walk past the errors you're making here:
1)
pil06 = driver mi2
This basically REDEFINES the variable
pil06 to be the
driver of a vehicle named mi2. In this case, since the pilot's name is ALREADY pil06, that line is entirely unnecessary. It won't blow anything up, but it's also really not needed.
2)
(((mi3 pil07) != mi3)
What you're trying to do here is probably in normal speak something like "If the pilot of mi3 is no longer in mi3 then...". The correct syntax can be found in both Spooner's and my example:
((vehicle pil06) != mi2
This is due to the way the
vehicle command works in ArmA: as the description states, if the unit isn't inside a vehicle it will return itself (so: vehicle pil06 == pil06 would work the same way).
3) You are very very unnecessarily using TWO iterations of the same script (mi242.sqf and mi241.sqf). Scripts can be run independently of each other: you can run the same script a thousand times without them necessarily interfering with each other. This is done via using _local variables (shown through the underscore _ in front of the variable name). In my example I used a local variable to allow the running of the same script twice with two different vehicles. Variables are fed to the script by putting them in front of it when running it (if you have more than one thing, you need to put them in an array like this: nil=[dude1, dude2] execVM "Stuff.sqf", otherwise you can just run it directly on dude1 for instance). After that, they can be accessed in the script by using _this.
If you're not getting any of this, I suggest looking at some of these tutorials: [http://www.ofpec.com/ed_depot/index.php?action=details&id=390&page=0&game=ArmA&type=tu&cat=sc]Cheetah's intro to .sqf scripting[/url],
Johan Gustafsson's introduction to scripting (for OFP, but still completely applicable in ArmA). Also, please learn to consult the
COMREF as your holy bible, it WILL tell you what works and what does not work.
If you're not too interested in learning how to make things work, just look over my post again, and closely follow my instructions. Copy-paste the script. You will only need one script for both birds, and you don't need to name the pilots either.
I do suggest you read up a bit on scripting beforehand, acquaint yourself with the COMREF, and read a tutorial or two. The ArmA-specific tutorials are in short demand, but feel free to browse the ones for OFP: they're almost all still entirely applicable.
Good luck!
Wolfrug out.