OFPEC Forum
Editors Depot - Mission Editing and Scripting => OFP - Editing/Scripting General => Topic started by: Niven on 15 Dec 2004, 12:13:48
-
Hi all,
I've made a script that forces a helicopter to crash when it takes damage.
The script activates an EH to watch for damage, which then forces the chopper to crash.
It works fine with a slight flaw.
When the missile/rocket hits, the chopper is forced back, which looks unrealistic.
I've tried getting the velocity of the chopper before the impact and then setting it back, directly after the impact but i'm getting scalar errors when I try to pass the x,y,z to the EH.
Heres the two parts of the event:
Apache flyinheight 40
;Get the initial velocity of the chopper
_Speed = velocity Apache
_xVelo = _Speed select 0
_yVelo = _Speed select 1
_zVelo = _Speed select 2
Apache AddEventHandler ["hit", {[Apache, _Speed] exec "crash.sqs"}]
hint format["X:%1 Y:%2 Z:%3", _xVelo, _yVelo, _zVelo]
exit
_Target = _This select 0
;Get the initial velocity of the chopper
_Velocity = _this select 1
_xVelo = _Velocity select 0
_yVelo = _Velocity select 1
_zVelo = _Velocity select 2
hint format["X:%1 Y:%2 Z:%3", _xVelo, _yVelo, _zVelo]
;Stop the rotors spinning
_Target setfuel 0
;camcreate 2 shells that hit each other at the choppers x,y,z
bomb1 = "HEAT105" camcreate getpos _Target
bomb1 = "HEAT105" camcreate getpos _Target
; set velocity of chopper back to original vel before explosion caused an offset.
_Target setvelocity [_xVelo, _yVelo, _zVelo]
;======================================================================================
#Crash
_Height = getPos _Target select 2
_Direction = getDir _Target
_Dir = (random(0.8))+1
;_Target FlyInHeight (_Height - 2)
_Target setDir (_Direction + _Dir)
drop ["cl_basic","","Billboard",1,random(4),[-1,-6,2],[random(1),random(1),random(0.1)+0.4],1,random(0.1)+0.5,0.5,random(0.1),[random(0.1)+0.2,random(1)+2,random(1)+3],[[0.2,0.2,0.2,1],[1,1,1,0]],[0],0,0,"","",_Target]
? _Height < 2 : bomb1 = "HEAT105" camcreate [getpos _Target select 0, getPos _Target select 1, (getPos _Target select 2) +1]
? _Height < 2 : bomb1 = "HEAT105" camcreate [getpos _Target select 0, getPos _Target select 1, (getPos _Target select 2) +1]
? _Height < 2 : goto "End"
~0.01
goto "Crash"
;=========================================================================================
#End
exit
~Any help is much appreciated ;D
-
well in your first script you should have a loop to keep updating the _speed variable, so it will be the most recently velocity used by your EH
-
The variable _speed is not defined within your eventhandler code. Think of the code between the braces in your EH as an entirely separate script. In your case, the script never puts a value into the variable _speed. You could use a global variable instead of a local one (speed instead of _speed).
-
global variable instead of a local one (speed instead of _speed).
Actually you cannot use "speed" as a global variable because it conflicts with the SPEED command which returns the speed of a vehicle. Use SPD or somthing like that instead.
-
Actually you cannot use "speed" as a global variable because it conflicts with the SPEED command which returns the speed of a vehicle. Use SPD or somthing like that instead.
Ah! Glad you caught that one. Many times I've pulled out my hair trying to figure out what is wrong, and it was due to this sort of bad variable naming.