Jump to content
Sign in to follow this  
mrflay

Preventing aircraft from exploading on impact?

Recommended Posts

Is there a way to prevent an aircraft from exploading when it crashes into ground / obstacle?

I have experimented with the following config entries, but not had any success so far.

class DestructionEffects {};
explosionEffects = "NoExplosion";
CraterEffects = "NoCrater";
destrType = "DestructNo";
secondaryExplosion = -1;

Another thing I would like to remove is the smoke effect that is applied when the aircraft is damaged. Is it possible?

Thanks

Share this post


Link to post
Share on other sites

It may have changed since A2 but if you remove all the fuel and ammunition from a vehicle, then it won't explode when it's destroyed

Share this post


Link to post
Share on other sites
It may have changed since A2 but if you remove all the fuel and ammunition from a vehicle, then it won't explode when it's destroyed

It still expload when impacting the ground, even if I remove all ammo and fuel from both config and editor.

Is there anything in my config.cpp that perhaps cancels that?

The complete config.cpp here

class Air;
class Plane: Air
{
	class NewTurret;
	class ViewPilot;
	class AnimationSources;
	class Turrets;
	class Sounds;
};

class FLAY_GliderBase: Plane
{
	scope = 1;
	armor = 5;


	side = 4;
	Icon = "\flay\flay_hangglider\data\glider_ico_ca.paa";
	picture = "\flay\flay_hangglider\data\glider_pic_ca.paa";
	mapSize = 10;

	nameSound = "veh_parachute";
	accuracy = 0.1;
	camouflage = 1;
	audible = 0;
	hasGunner = 0;
	fuelCapacity = 0;

	soundEngine[] = {};
	//soundEnviron[] = {"\Ca\sounds\Air\Noises\padak_let",0.31622776,1,80};
	//soundEnviron[] = {"\FLAY\FLAY_Hangglider\data\sfx\padak_let",0.31622776,1,80}; // A3
	soundEnviron[] = {"c:\flay_hangglider\padak_let",0.31622776,1,80}; // A3
	soundGetIn[] = {"\Ca\sounds\Air\Noises\padak_getIN",0.31622776,1,20};
	soundGetOut[] = {"\Ca\sounds\Air\Noises\padak_getIN",0.31622776,1,20};
	soundCrash[] = {"\Ca\sounds\Air\Noises\padak_dopad",0.031622775,0,0};
	soundLandCrash[] = {"\Ca\sounds\Air\Noises\padak_dopad",0.031622775,0,0};
	soundWaterCrash[] = {"\Ca\sounds\Air\Noises\padak_dopadvoda",3.1622777,0,0};

	driverLeftHandAnimName = "pilot_lefthand";
	driverRightHandAnimName = "pilot_righthand";
	driverLeftLegAnimName = "pilot_leftfoot";
	driverRightLegAnimName = "pilot_rightfoot";
	simulation="airplane";

	class DestructionEffects {};
	explosionEffects = "NoExplosion";
	CraterEffects = "NoCrater";

	destrType = "DestructNo";
	secondaryExplosion = -1;
	crewVulnerable = true;

	threat[] = {1,0.900000,0.100000};

	htMin = 60;
	htMax = 1800;
	afMax = 100;
	mfMax = 80;
	mFact = 0;
	tBody = 0;
	turnCoef = 5;//TEST
	outsideSoundFilter = 0;
	wheelCircumference = 2.28;

	transportMaxMagazines = 0;
	transportMaxWeapons = 0;

	driverCanSee = "2"; 
	extCameraPosition[] = {0,1,-3};

	enableGPS = 0;

	class ViewPilot: ViewPilot
	{
		initFov = 1.3;
		minFov = 0.5;
		maxFov = 1.3;
		initAngleX = 0;
		minAngleX = -80;
		maxAngleX = 80;
		initAngleY = 30;
		minAngleY = -110;
		maxAngleY = 110;
	};

	driverAction = "HangGlider_Pilot";
	driverInAction = "HangGlider_Pilot";
	getInAction = "GetInLow";
	getOutAction = "GetOutLow";

	cabinOpening = 1;
	occludeSoundsWhenIn = 1.0;
	obstructSoundsWhenIn = 1.0;

	class Sounds: Sounds {};
	class Turrets {};
	class Reflectors {};
	class Armory
	{
		disabled = 1;
	};

	gearRetracting = 0;
	flaps = 0;
	envelope[] = { 0.10, 0.20, 0.5, 0.9, 1.0, 1.5, 2.0, 2.5, 2.5, 3.0, 2.5, 2.5, 2.0, 1.75, 1.75, 1.75, 1.75, 1.5, 1.25, 1.0 };

	maxSpeed = 200;
	aileronSensitivity = 0.5;
	elevatorSensitivity = 0.05;
	wheelSteeringSensitivity = 0.001;
	noseDownCoef = 0.1;
	ejectDeadDriver = false;
	ejectSpeed[] = {0,0,0};
};

class FLAY_HangGlider: FLAY_GliderBase
{
	scope = 2;

	class EventHandlers: DefaultEventhandlers
	{
		init = "_scr = _this execVM ""\FLAY\FLAY_HangGlider\scripts\init_HangGlider.sqf"";";
	};

	displayName = "FLAY Hang Glider";
	model = "FLAY\FLAY_HangGlider\FLAY_HangGlider";

	//weapons[] = {};
	//magazines[] = {};	

	weapons[] = {"HangGliderBombs"};
	magazines[] = {"4Rnd_Bomb_HangGlider"};

	armor = 5;
	accuracy = 0.5;
	camouflage = 2;

	//rightWaterEffect=;
	//leftWaterEffect=;
	//rightDustEffect=
	//leftWaterEffect=
	airFriction0[] = {25,12,2.500000};
	airFriction1[] = {25,12,2.500000};
	airFriction2[] = {25,12,2.500000};
	canFloat = true;
	canBeShot = true;
	damageResistance = 0.000000000001;
	damperSize = 2;
	damperForce = 0.5;
	hideUnitInfo = true;
	hideWeaponsDriver = true;
	selectionFabric = "latka";
	type = 0;
	unitInfoType = "UnitInfoSoldier";

	extCameraPosition[] = {0,3.5,-9};
	enableGPS = 1;

	driverAction = "HangGlider_Pilot";
	driverInAction = "HangGlider_Pilot";
	getInAction = "GetInLow";
	getOutAction = "GetOutLow";

	envelope[] = { 0.1, 0.2, 0.9, 1.5, 2.7, 3.0, 3.1, 3.2, 3.4, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.8, 2.5, 2.0 };

	maxSpeed = 180;
	aileronSensitivity = 2.5;
	elevatorSensitivity = 0.2;
	wheelSteeringSensitivity = 2.7;
	noseDownCoef = 0.0025;
	ejectDeadDriver = true;
	ejectSpeed[] = {0,-1,-5};

	class AnimationSources: AnimationSources
	{
		class GliderPitch
		{
			source = "user";
			animPeriod = 0.05;
			initPhase = 5;
		};		
		class HarnessAnchorHide
		{
			source = "user";
			animPeriod = 0.000001;
			initPhase = 0;
		};
		class HarnessStrapsHide
		{
			source = "user";
			animPeriod = 0.000001;
			initPhase = 0;
		};			
		class LandingGear
		{
			source = "user";
			animPeriod = 1.5;
			initPhase =  0.15;
		};
		class HelperHide
		{
			source = "user";
			animPeriod = 0.000001;
			initPhase = 1;
		};
		class PilotPosX
		{
			source = "user";
			animPeriod = 0.000001;
			initPhase = 0;	
		};
		class PilotPosY
		{
			source = "user";
			animPeriod = 0.000001;
			initPhase = 0;	
		};
		class PilotPosZ
		{
			source = "user";
			animPeriod = 0.000001;
			initPhase = 0;	
		};
		class Variometer {
			source = "vertSpeed";
			animPeriod = 0.000001;
			initPhase = 0;
		};
		class FireGeoPilotHide
		{
			source = "user";
			animPeriod = 0.000001;
			initPhase = 0;
		};		
	};

	class UserActions
	{
		class FLAY_Flytec3040_ON
		{
			displayNameDefault = "Flytec 3040 ON";
			showWindow = 0;
			//hideOnUse = 1;
			displayName = "Flytec 3040 ON";
			position = "action";
			radius = 4.0;
			onlyForPlayer = 1;
			condition = "(alive player) and ('FLAY_Flytec3040_Variometer' in (weapons player) or 'FLAY_Flytec3040_Variometer' in (weapons (vehicle player))) and not (player getVariable ['FLAY.variometer.power.on',false])";
			statement = "[player] execVM '\FLAY\FLAY_HangGlider\scripts\ui_variometer_show.sqf'";
		};
		class FLAY_Flytec3040_OFF
		{
			displayNameDefault = "Flytec 3040 OFF";
			showWindow = 0;
			//hideOnUse = 1;
			displayName = "Flytec 3040 OFF";
			position = "action";
			radius = 4.0;
			onlyForPlayer = 1;
			condition = "(alive player) and ('FLAY_Flytec3040_Variometer' in (weapons player) or 'FLAY_Flytec3040_Variometer' in (weapons (vehicle player))) and (player getVariable ['FLAY.variometer.power.on',false])";
			statement = "[player] execVM '\FLAY\FLAY_HangGlider\scripts\ui_variometer_hide.sqf'";
		};	
		class FLAY_GetIn
		{
			displayNameDefault = "Get In";
			showWindow = 0;
			//hideOnUse = 1;
			displayName = "Get In";
			position = "action";
			radius = 4.0000;
			onlyForPlayer = 1;
			condition = "(alive player) and isNull (driver this)";
			statement = "[this,-1,player] execVM 'FLAY\FLAY_HangGlider\scripts\ev_getIn.sqf'";
		};
		class FLAY_GetOut
		{
			displayNameDefault = "Get Out";
			showWindow = 0;
			//hideOnUse = 1;
			displayName = "Get Out";
			position = "action";
			radius = 4.0000;
			onlyForPlayer = 1;
			condition = "(alive player) and (driver this == player)";
			statement = "[this,'DRIVER',player] execVM 'FLAY\FLAY_HangGlider\scripts\ev_getOut.sqf'";
		};
	};

	class Sounds: Sounds
	{
		//class BeepIn
		//{
		//	sound[] = {"\ca\sounds_e\sfx\locking_target_1",0.17782794,1.0,50};
		//	frequency = "1";
		//	volume = "0.5";
		//};
		class CreakNoiseIn1
		{
			sound[] = {"\FLAY\FLAY_HangGlider\data\sfx\squeak1.ogg",0.31622776,1,50};
			frequency = "(randomizer*0.05+1.0)";
			volume = "10*(speed factor[1, 80])*(1-camPos)";
		};
		class CreakNoiseIn2
		{
			sound[] = {"\FLAY\FLAY_HangGlider\data\sfx\squeak1.ogg",0.31622776,1,50};
			frequency = "(randomizer*0.5+0.5)";
			volume = "10*(speed factor[70, 100])*(1-camPos)";
		};
		class CreakNoiseIn3
		{
			sound[] = {"\FLAY\FLAY_HangGlider\data\sfx\squeak3.ogg",0.31622776,1,50};
			frequency = "(randomizer*0.5+0.2)";
			volume = "10*(speed factor[70, 100])*(1-camPos)";
		};			
		class CreakNoiseOut
		{
			sound[] = {"\FLAY\FLAY_HangGlider\data\sfx\squeak1.ogg",0.31622776,1,50};
			frequency = "(randomizer*0.05+1.0)";
			volume = "10*camPos*(speed factor[1, 80])";
		};
		//class FootStepsIn
		//{
		//	sound[] = {"\FLAY\FLAY_HangGlider\data\sfx\squeak1.ogg",0.31622776,1,10};
		//	frequency = "(randomizer*0.05+1.0)";
		//	volume = "10*camPos*(speed factor[1, 80])";
		//};			
	};

	//class assembleInfo
	//{
	//	primary = 0;
	//	base = "";
	//	assembleTo = "";
	//	dissasembleTo[] = {"FLAY_HangGlider_Bag","Tripod_Bag"};
	//	displayName = "";
	//};
};

Share this post


Link to post
Share on other sites

The explosion is actually handled by an eventhandler.

add

        class eventhandlers
       {
               Killed = "";
       };

default is

killed = "_this call (uinamespace getvariable 'BIS_fnc_effectKilled');";

Share this post


Link to post
Share on other sites

to remove the smoke effect, I guess redefining the damage effect to nothing would work:

damageEffect = "";

Share this post


Link to post
Share on other sites
The explosion is actually handled by an eventhandler.

add

        class eventhandlers
       {
               Killed = "";
       };

default is

killed = "_this call (uinamespace getvariable 'BIS_fnc_effectKilled');";

Yep, that fixed the problem. Many thanks!

to remove the smoke effect, I guess redefining the damage effect to nothing would work:

damageEffect = "";

Awesome! Yes it works great, thanks!

Edited by mrflay
ninjad

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×