*****************UPDATE**************
Hi all ;D
well this script has taken on a life of its own lately and boy its has it grown.
I see a few comments which has been great so--- "wipes sweat from brow"---here goes.
Each of them is screaming like hell and to be honest, I prefer the version where they dont slow down at the end (at least not so much).
I agree--solved
I was wondering as some other have stated how would you go about speeding up the descent or possibly have them coming down right after each other maybe with a 2 to 3 sec pause in between?
I agree--solved
...but GASH's rope looks a little too clean
I agree and its too fat--Nothing I can do Im not a model maker. In saying this I mean no disrespect to Gash at all. Its thanks to him\her that we have a rope at all.
...and dey didnt scream 4 me
ROFL @ LCD
but u need 2 change it lil cuz en i shot em dey dont die
I agree--solved
OK so whats new? HEAPS! ;D
They say u gotta go backwards in order to go forwards sometimes and the removal of the eventhandlers was one of these backwards steps Ive made.
#1: you can kill them as they rappel. They die, gain speed from the point where they were killed, and topple when they hit the ground.
#2: There have been reports of them letting out a yell "argh " every now and then--this has been solved cause I no longer use eventhandlers to ensure their health.
#3:Have been reports of them every now and then slowing down too much just b4 they hit the ground --this has been solved.
#4:I have spoken to New Zealand Army at length about the protocol of rappeling. Long and short of it is that when only one rope is involved they will INFACT allow 2 up to maximum 3 "they said" guys on the rope at any one time.----this has now been implemented into the script.
#5. NZ army also said the first one down stays at the rope and holds it for the others and dosn't move till all are down-------Ive done this also. Once chopper moves out he rejoins the group. ;D
If the rope holder gets killed then the next down the rope takes his position.
#6. Chopper now turns slowly while troops rappel. If the gunner engages a tango the chopper stops turning for a while (approx 3 secs)--chopper wont turn while gunner is firing.
#7:Gunner is seperated form chopper in script so while pilot is "careless" (so he dont fly away) on a hot LZ the gunner is "combat"
#8: chopper remains at LZ for a while after troops have landed to continue aircover as they do their sweep. Then continues on its waypoints.
#9: I have added the option of smoke. If map maker wants it theyll drop smoke before they rappel. ;D
#10: I noticed in a HOT LZ the AI would hit the dirt and all would pile up in prone position at bottom of rope--this is now solved
#NOTE IMPORTANT
I have scripted an alternative method of keeping player and AI alive (its not using setdammage cause this is no good in MP)___ It is untested so I will be asking any and all to run the script AT LEAST 15 times and report any casualties ASAP. Make sure when u do these tests u dont have any tangos around lol --this may make it hard to see if they died in fall or were shot.
Also I have lowered the height of the chopper to the lowest before itll hit a tree 21M. Ant lower that 21 M and itll risk hitting trees. Why? NZ Army says most of the time they rappel from a height no more that 5-7M cause the longer your in the air more chance of being shot.
Now if we could figure a way for script to understand if its over trees, buildings, or flat land then it would be GREAT!!
The script is now executed like this for one group in a chopper with smoke:
["initialise", [groupname], choppername, 1] exec "rappel.sqs"
The script is now executed like this for one group in a chopper with out smoke:
["initialise", [groupname], choppername, 0] exec "rappel.sqs"
The script is now executed like this for multiple groups in a chopper with smoke:
["initialise", [groupname, group2name,group3name], choppername, 1] exec "rappel.sqs"
The script is now executed like this for multiple groups in a chopper with out smoke:
["initialise", [groupname, group2name,group3name], choppername, 0] exec "rappel.sqs"
PLZ download and test the new test map New Rappel V6;*******************************************************************************************
; rappel v6.sqs *
; Original: *
; By Zayfod. Strongly influenced and built on top of oneRapple.sqs By Xcess and Gastovski *
; modified by AliMag and then again by Zayfod =) thanks AliMag!!. - 03/2003 * ; *
;*******************************************************************************************
;goto appropriate part of script
   goto (_this select 0)
#initialise
   _groups = _this select 1
   _helo = _this select 2
   _smokeon_off = _this select 3
#check_smoke
   ? (_smokeon_off == 1):   _smoker = true
   ? (_smokeon_off == 0):   _smoker = false
#isolate_helo_gunner
   _helocrew = crew _helo
   _pilot = _helocrew select 0
   _gunner = _helocrew select 1
   [_gunner] join grpnull
   _gunners = []
   _gunners = _gunners + [_gunner]
   _helogunner = _gunners select 0
#local_variables
   _k = 0.5
   _helo_ammo = _helo ammo "Browning"
#groups_to_rappel
   _aunits = []
   "_aunits = _aunits + (units _x)" forEach _groups
   _i = 0
   _j = count _aunits
#rope_setup
   ? (count rappelRope) == 2 : goto "stop"
   rappelRope = [["rappel.sqs", "rope.sqs"], []]
#stop
   _helobehaviour = behaviour _helo
   _helo setbehaviour "careless"
   _helogunner setbehaviour "combat"
   _helogunner setcombatmode "red"
   _helogunner disableai "autotarget"
   _helo flyinheight 21
   dostop _helo
#chopheight
   _height = getpos _helo select 2
   ? _height < 22 : goto "rope"
   ~0.1
   goto "chopheight"
#rope
   rappelRope set [1, (rappelRope select 1) + [_helo]]
   _helo exec "rope.sqs"
#speed_check
   _xvel = velocity _helo select 0
   _yvel = velocity _helo select 1
   _zvel = velocity _helo select 2
   ?_xvel > 0.2 : _helo setvelocity [_xvel - 0.1,_yvel,_zvel]
   ?_yvel > 0.2 : _helo setvelocity [_xvel,_yvel - 0.1,_zvel]
   ?_xvel < -0.2 : _helo setvelocity [_xvel + 0.1,_yvel,_zvel]
   ?_yvel < -0.2 : _helo setvelocity [_xvel,_yvel + 0.1,_zvel]
   ? _xvel > -0.2 and _xvel < 0.2 and _yvel > -0.2 and _yvel < 0.2 : goto "start"
   ~0.01
   goto "speed_check"
#Start
   _posx = getpos _helo select 0
   _posy = getpos _helo select 1
   _posz = getpos _helo select 2
   ? (_smoker):_smokedrop = "smokeshellred" createvehicle [_posx, _posy, _posz]
   _count = 0
#dropping
   _rappeler = (_aunits select _i)
   ? not (alive _rappeler): _I = _I + 1; goto "check_j"
   _rappeler action ["getout",_helo]
   unAssignVehicle _rappeler
   ["rappel",[],_helo,_rappeler] exec "rappel.sqs"
   _chopdir = getdir _helo
#drop_wait
   ?not (alive _helo): goto "next"
   _count = _count +1
   ?_count > 300: _helo_ammo = _helo ammo "Browning"; _k = 0.5; _count = 0
   _helo setdir _chopdir
   _chopdir = _chopdir + _k
   ? (_helo ammo "Browning") < _helo_ammo: _k = 0
   _rappeler_height = getpos _rappeler select 2
   ? _rappeler_height < 10 or not (alive _rappeler): goto "next_rappeler"
   ? not (alive _rope_holder): _rope_holder = _rappeler
   ~0.01
   goto "drop_wait"
#next_rappeler
   ?_I == 0: _rope_holder = _rappeler
   dostop _rope_holder
   _rope_holder setunitpos "down"
   _I = _I + 1
#check_j
   ? _j > _i : goto"dropping"
   ~1
   ? _i == _j : goto"helo_wait"
#helo_wait
   _rappeler_height = getpos _rappeler select 2
   ? _rappeler_height <= 0.5 or not (alive _rappeler): goto "helo_cover"
   ~0.1
   goto "helo_wait"
#helo_cover
   _chopdir = getdir _helo
   _count = 0
   _count2 = 0
#helo_cover_check
   ?not (alive _helo) or not (alive _pilot): goto "next"
   _count = _count +1
   _count2 = _count2 +1
   ?_count > 300: _helo_ammo = _helo ammo "Browning"; _k = 0.5; _count = 0
   ?_count2 > 1000: goto "next"
   _helo setdir _chopdir
   _chopdir = _chopdir + _k
   ? (_helo ammo "Browning") < _helo_ammo: _k = 0
   ~0.01
   goto "helo_cover_check"
#next
   _helo domove (getpos _helo)
   _helo flyinheight 100
   ~3
   rappelRope set [1, (rappelRope select 1) - [_helo]]
   _helo setbehaviour _helobehaviour
   _rope_holder domove (getpos _rope_holder)
   _rope_holder setunitpos "auto"
   exit
#rappel
   _helo = _this select 2
   _man = _this select 3
   _weapon = primaryweapon _man
   _chopdir = getdir _helo
   _mendir = _chopdir + 90
   _posrandomdir = (random 3) + 2
   _negrandomdir = 0 - ((random 3) + 2)
   _neg_and_pos_array = [_posrandomdir, _negrandomdir]
   _random = random (count _neg_and_pos_array)
   _random = _random - _random % 1
   _randomdir = _neg_and_pos_array select _random
   _man setdir _mendir
   _behave = behaviour _man
   _man setbehaviour"AWARE"
   _posx = getpos _helo select 0
   _posy = getpos _helo select 1
   _posz = getpos _helo select 2
   _drop = (random 0.2) + 0.3
   _posz = _posz - 1
   _man setpos[_posx, _posy, _posz]
   _changedir = _mendir
   _dropcheck = 0.01
#loop
   _man moveincargo _helo
   _man action["getout",_helo]
   unassignvehicle _man
   _posx = getpos _helo select 0
   _posy = getpos _helo select 1
   _posz = _posz - (0 + _dropcheck)
   _dropcheck = _dropcheck + 0.02
   ?_dropcheck >= _drop: _dropcheck = _drop
   _man setdir _changedir
   _changedir = _changedir - _randomdir
   _man setpos [_posx, _posy, _posz]
   _man switchmove "fxfromtable"
   ?not (alive _man):goto "dead_loop"
   ~ 0.001
   ? _posz > 5 : goto "loop"
#loop2
   _man moveincargo _helo
   _man action["getout",_helo]
   unassignvehicle _man
   _man switchmove "fxfromtable"
   _posx = getpos _helo select 0
   _posy = getpos _helo select 1
   _posz = _posz - _drop
   _drop = _drop - 0.01
   ?_drop <= 0.2: _drop = 0.21
   _man setdir _changedir
   _changedir = _changedir - _randomdir
   _man setpos [_posx, _posy, _posz]
   ?not (alive _man):goto "dead_loop2"
   ~ 0.001
   ? _posz > 0.2 : goto "loop2"
#clear
   _mendir = getdir _man
   _man moveincargo _helo
   _man action["getout",_helo]
   unassignvehicle _man
   _man switchmove "combattocrouch"
   _man setdir _mendir
   _man setpos [_posx,_posy,0]
   _man Setbehaviour "aware"
   _man playmove "combatrunf"
   exit
#dead_loop
   _posx = getpos _helo select 0
   _posy = getpos _helo select 1
   _posz = _posz - (0 + _dropcheck)
   _dropcheck = _dropcheck + 0.02
   _man switchmove "fxfromtable"
   _man setdir _changedir
   _changedir = _changedir - _randomdir
   _man setpos [_posx, _posy, _posz]
   ~ 0.001
   ? _posz > 0.5 : goto "dead_loop"
   _man removeweapon _weapon
   _man switchmove "crouch"
   ~1
   _man addweapon _weapon
   exit
#dead_loop2
   _man switchmove "fxfromtable"
   _posx = getpos _helo select 0
   _posy = getpos _helo select 1
   _posz = _posz - _drop
   _drop = _drop + 0.02
   _man setdir _changedir
   _changedir = _changedir - _randomdir
   _man setpos [_posx, _posy, _posz]
   ~ 0.001
   ? _posz > 0.5 : goto "dead_loop2"
   _man removeweapon _weapon
   _man switchmove "crouch"
   ~1
   _man addweapon _weapon
   exit
Zay out. :wave: