Yeah for landings I usually do:
setbehaviour "CARELESS"
and
setcombatmode "BLUE" (never fire)
otherwise, yeah, once the AI finds out about an enemy, it goes into "engage" mode.
Play with snypir's script. How I got mine into the LZ was using gamelogic waypoints:
A) at the initial waypoint (where you want to begin the landing sequence), exec a script on activation.
B) put the next waypoint for the (far) outbound leg. I'm talking like IP/OP being 1km or more from the LZ
C) about 200 m away from the LZ, in the direction of the approach, place a gamelogic. Call it "OuterMarker"
D) Put another gamelogic on the spot of the LZ (or maybe a little long), call it "LZ"
E) Place another about 200m along the egress direction ("Departure").
F) Have the script be something like:
MyHelo setflyinheight 25 (25 should be your Hard Deck for flight. for more than one helo, I try to assign 10-m bands, e.g., 25, 35, 45, 55. This prevents collision avoidance AI from kicking in.)
MyHelo LockWP TRUE
MyHelo domove getpos OuterMarker
MyHelo setcombatmode "BLUE"
MyHelo setbehaviour "CARELESS"
@(!unitready MyHelo)
@(UnitReady MyHelo)
;these two lines tell the mission to wait for the helo to chase after the outermarker, then, when it gets near the OuterMarker (or crashes) to continue
MyHelo setspeedmode "LIMITED"
;the helo will make a hard bank to slow down
MyHelo domove getpos LZ
MyHelo setflyinHeight 10
;determine treetop height along the approach route and keep this number above that. Also, with more than one helo, maintain 5 m vertical separation, or things get ugly.
?getdammage MyHelo > .9:Goto "Crashed"
@(!unitready MyHelo)
@(UnitReady MyHelo)
MyHelo setflyinheight 1
@(getpos MyHelo select 2) < 2
;helo is pretty low. now:
;to kick people out:
_FlightCrew = [(driver MyHelo, gunner MyHelo)]
{if !(_x in _flightCrew) then {unassignvehicle _x}} ForEach crew MyHelo
@"Alive _X" count crew MyHelo <= "alive _x" count _flightcrew
MyHelo setflyinheight 25
MyHelo domove getpos Departure
MyHelo setspeedmode full
?getdammage MyHelo > .9:goto "Crashed"
@(!unitready MyHelo)
@(UnitReady MyHelo)
MyHelo setcombatmode "Yellow"
MyHelo SetBehaviour "aware"
MyHelo LockWP false
exit
#Crashed
player sidechat "Oh no, MyHelo went down in a fireball"
this script isn't tested, but you get the idea