Jump to content
sakura_chan

Primer for new vehicle simulation

Recommended Posts

I have started playing with the new car physics so I figured I might as well post some basic info about the new config entries.

Some basic "What can we do" stuff:

1. Simulate front wheel drive, rear wheel drive, and all wheel drive with either open or limited slip differentials

2. Control the roll rates. These determine handling at speed and also controls when the vehicle will roll over on its side

3. Each wheel is fully independent. You can change the suspension, grip, and brake force for each individual wheel.

4. Control the speed (rate) at which you steer.

5. Hands move with the steering wheel (possibly other controls) this uses a basic gesture system. Shouldn't have any issues setting it up on a new model

6. Complex transmission setup. You can set the gear ratios, clutch force, even the shift latency.

7. Much better engine setup. Set horsepower, torque, rpm redline and idle rpm.

8. Biggest difference: no more speed limit at 110km/h ;)

Only real unknown worth mentioning is the possibility for manual transmissions with realistic clutches. There is a setting -> gearBoxMode = "auto"; Changing it has no effect yet :(

Hopefully the beta or final version would allow for stick shiftin'

so new settings

	class
                       complexGearbox {
		GearboxRatios[] = {"R1", -5.367, "N", 0, "D1", 5.367, "D2", 3.67, "D3", 2.238, "D4", 1.00, "D5", 0.8}; These relate to real world gear ratios, nothing fancy here
		TransmissionRatios[] = {"High", 5.0};  unknown?
		gearBoxMode = "auto"; changing it has no effect yet
		moveOffGear = 1; unknown?
		driveString = "D"; Must be for some kind of gear indicator
		neutralString = "N"; Must be for some kind of gear indicator
		reverseString = "R"; Must be for some kind of gear indicator
		gearUpMaxCoef = 0.8;      possibly to do with shift points /full throttle
		gearDownMaxCoef = 0.5;  possibly to do with shift points /full throttle
		gearUpMinCoef = 0.45;     possibly to do with shift points /light throttle
		gearDownMinCoef = 0.15; possibly to do with shift points /light throttle
		transmissionDelay = 1; 1 of a few settings that control shifting
	};

basic engine stuff

	maxSpeed = 320;	 max speed on level road, km/h. Does NOT change the acceleration, it is just a speed limiter like on a real car
	enginePower = 100;  Not hp, doesn't seem to affect anything
	maxOmega = 900; Horsepower (maybe torque) I assume ft/lb but it could be NM or KW
	peakTorque = 1300; Max torque again could be ft/lb or NM
	idleRpm = 900; Idle RPM
	redRpm = 3500; Max RPM
	torqueCurve[] = {{0.0, 0.0}, {0.25, 0.65}, {0.3, 0.8}, {0.5, 0.95}, {0.7, 1.0}, {0.8, 0.9}, {0.9, 0.8}, {1.0, 0.5}}; the first number indicates the percentile of the curve, and the second
                    the torque value at that percentile. Could be used to make a vehicle with instant power (supercharger), or have it really sloppy down low and then pick up at higher revs (turbo)
	clutchStrength = 200.0; 1 of many clutch variables.

Wheels

	class Wheels {
		class LF {
			boneName = "wheel_1_1_damper"; model.cfg bone
			steering = 1; is a steering wheel 
			side = "left"; used for the differential simulation. 
			center = "wheel_1_1_axis"; memory lod point
			boundary = "wheel_1_1_bound"; memory lod point?
			width = 0.5; unknown, might control the tire track texture
			mass = 30; probably kg.
			MOI = 2.8; Moment of Inertia (I googled it but my brain couldn't understand. It is a number I know that much)
			dampingRate = 0.5; How well the suspension controls the spring
			maxBrakeTorque = 6000; How much brake force is applied when you hit the regular brakes ingame
			maxHandBrakeTorque = 6000; How much brake force is applied when you hit the hand brakes ingame
			suspTravelDirection[] = {0, -1, 0}; x.z.y? This means up and down movement
			suspForceAppPointOffset = "wheel_1_1_axis"; might be different in a more complex vehicle, but this one uses the same as the "center" variable
			tireForceAppPointOffset = "wheel_1_1_axis"; might be different in a more complex vehicle, but this one uses the same as the "center" variable
			maxCompression = 0.3; how far up the suspension can compress
			mMaxDroop = 0.1; how far the suspension will drop when off the ground
			sprungMass = 300; How much of the vehicle's weight it is supporting
			springStrength = 50000; how hard it is to move the suspension (some kind of arbitrary number)
			springDamperRate = 3400; the springs rate of self-dampening
			longitudinalStiffnessPerUnitGravity = 10000; unknown lol
			latStiffX = 25; unknown
			latStiffY = 180; unknown
			frictionVsSlipGraph[] = {{0, 1}, {0.5, 1.0}, {1, 1}}; Very important. This controls the traction of the tire. first number is friction and the second is slip
			                         frictionVsSlipGraph[] = {{0, 1}, {0.5, 1.0}, {1, 1}}; Wheel has great linear traction
			                         frictionVsSlipGraph[] = {{0, 1}, {0.5, 0.75}, {1, 0.5}}; Wheel has low traction at low speeds but full traction at high speeds
			                         frictionVsSlipGraph[] = {{0, 0.2}, {0.5, 0.5}, {1, 1}}; Wheel has good traction at low speeds but looses traction at high speeds.
		};
           };

Somewhat generic anti-roll bar stuff

	antiRollbarForceCoef = 1;
	antiRollbarForceLimit = 40; Reducing this seems to make it roll over easier
	antiRollbarSpeedMin = 2;
	antiRollbarSpeedMax = 50;

general driveline stuff

	differentialType = "rear_limited"; first entry can be front, rear, all. second entry can be limited or open
	frontRearSplit = 0.5; in all wheel drive, the split force going to the front or back. under 0.5 the front wheels will have more power, over 0.5 the rear has more.
	frontBias = 1.5; I assume this controls the viscosity of the front differential
	rearBias = 1.5; I assume this controls the viscosity of the rear differential
	centreBias = 1.3; unknown

Welp thats what I found out after playing with the offroad truck for a few hours. Hopefully it will get people thinking about new vehicles now that they can be realistic, fun and fast

---------- Post added at 03:01 AM ---------- Previous post was at 02:56 AM ----------

Just as an example here is a mod for the offroad. It has 1300 torque, its rear wheel drive and maxes out at 320km/h :)

For added fun, while stopped hold down the handbrake key (default C) and then accelerate. You should be able to do a burnout!

#define true	1
#define false	0

#define private		0
#define protected		1
#define public		2

#define TEast		0
#define TWest		1
#define TGuerrila		2
#define TCivilian		3
#define TSideUnknown		4
#define TEnemy		5
#define TFriendly		6
#define TLogic		7

enum {
DESTRUCTENGINE = 2,
DESTRUCTDEFAULT = 6,
DESTRUCTWRECK = 7,
DESTRUCTTREE = 3,
DESTRUCTTENT = 4,
STABILIZEDINAXISX = 1,
STABILIZEDINAXESXYZ = 4,
STABILIZEDINAXISY = 2,
STABILIZEDINAXESBOTH = 3,
DESTRUCTNO = 0,
STABILIZEDINAXESNONE = 0,
DESTRUCTMAN = 5,
DESTRUCTBUILDING = 1,
};

class DefaultEventhandlers;	// External class reference

class CfgPatches {
class A3_Soft_F_Offroad_saku {
	units[] = {"c_offroad", "c_offroad_PA", "C_offroad_RP", "I_G_offroad", "C_offroad_armed", "I_G_offroad_armed"};
	weapons[] = {};
	requiredVersion = 0.1;
	requiredAddons[] = {"A3_Soft_F_Offroad"};
};
};
class WeaponFireGun;	// External class reference
class WeaponCloudsGun;	// External class reference
class WeaponFireMGun;	// External class reference
class WeaponCloudsMGun;	// External class reference

class CfgVehicles {
class LandVehicle;	// External class reference

class Car : LandVehicle {
	class HitPoints;	// External class reference
	class NewTurret;	// External class reference
};

class Car_F : Car {
	class Turrets {
		class MainTurret : NewTurret {
			class ViewOptics;	// External class reference
		};
	};

	class HitPoints {
		class HitLFWheel;	// External class reference
		class HitLBWheel;	// External class reference
		class HitRFWheel;	// External class reference
		class HitRBWheel;	// External class reference
		class HitBody;	// External class reference

		class HitGlass1 {};
		class HitGlass2;	// External class reference
	};
	class EventHandlers;	// External class reference
	class AnimationSources;	// External class reference
};

class Offroad_Base : Car_F {
	mapSize = 6.12;
	_generalMacro = "Offroad_Base";
	displayName = "$STR_A3_CfgVehicles_Offroad_Base0";
	nameSound = "veh_car";

	class Library {
		libTextDesc = "$STR_A3_CfgVehicles_Offroad_Base_Library0";
	};
	model = "\A3\soft_f\offroad\offroad";
	picture = "\A3\soft_f\offroad\Data\UI\offroad_base_CA.paa";
	Icon = "\A3\soft_f\offroad\Data\UI\map_offroad_CA.paa";
	accuracy = 0.25;	// accuracy needed to recognize type of this target
	transportSoldier = 5;
	transportMaxBackpacks = 0;
	armor = 32;
	cost = 50000;

	class TransportItems {
		class _xx_FirstAidKit {
			name = "FirstAidKit";
			count = 6;
		};
	};
	hiddenSelections[] = {"camo", "camo2"};
	hiddenSelectionsTextures[] = {"\A3\soft_f\offroad\data\offroad_ext_co.paa", "\A3\soft_f\offroad\data\offroad_ext_co.paa"};

	class AnimationSources : AnimationSources {
		class Doors {
			source = "user";
			animPeriod = 1;
			initPhase = 0;
		};

		class Proxy {
			source = "user";
			animPeriod = 1;
			initPhase = 1;
		};

		class Beacons {
			source = "user";
			animPeriod = 1;
			initPhase = 0;
		};

		class Destruct {
			source = "user";
			animPeriod = 0;
			initPhase = 1;
		};
	};

	class HitPoints : HitPoints {
		class HitLFWheel : HitLFWheel {
			armor = 0.125;
			passThrough = false;
		};

		class HitLF2Wheel : HitLBWheel {
			armor = 0.125;
			passThrough = false;
		};

		class HitRFWheel : HitRFWheel {
			armor = 0.125;
			passThrough = false;
		};

		class HitRF2Wheel : HitRBWheel {
			armor = 0.125;
			passThrough = false;
		};

		class HitFuel {
			armor = 0.5;
			material = -1;
			name = "palivo";
			visual = "";
			passThrough = 0.2;
		};

		class HitEngine {
			armor = 0.5;
			material = -1;
			name = "motor";
			visual = "";
			passThrough = 0.2;
		};

		class HitBody : HitBody {
			visual = "camo";
			passThrough = true;
		};

		class HitGlass1 : HitGlass1 {
			armor = 0.25;
		};

		class HitGlass2 : HitGlass2 {
			armor = 0.25;
		};
	};
	steerAheadSimul = 0.5;
	steerAheadPlan = 0.35;
	predictTurnPlan = 0.8;
	predictTurnSimul = 0.6;
	precision = 10;
	brakeDistance = 50;	// vehicle movement precision
	turnCoef = 3.5;
	driverAction = "driver_offroad01";
	cargoAction[] = {"passenger_low01", "passenger_flatground_leanleft", "passenger_flatground_leanright", "passenger_flatground_crosslegs", "passenger_flatground_leanleft"};
	getInAction = "GetInLow";
	getOutAction = "GetOutLow";
	cargoGetInAction[] = {"GetInLow"};
	cargoGetOutAction[] = {"GetOutLow"};
	fireResistance = 5;
	wheelDestroyRadiusCoef = 0.75;
	soundGetIn[] = {"A3\Sounds_F\vehicles\soft\offroad\offroad-int-openclose.wav", db0, 1};
	soundGetOut[] = {"A3\Sounds_F\vehicles\soft\offroad\offroad-int-openclose.wav", db0, 1, 40};
	soundDammage[] = {"", 0.562341, 1};
	soundEngineOnInt[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_start.wav", 1.0, 1.0};
	soundEngineOnExt[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_start.wav", 1.0, 1.0, 200};
	soundEngineOffInt[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_stop.wav", 1.0, 1.0};
	soundEngineOffExt[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_stop.wav", 1.0, 1.0, 200};

	class Sounds {
		class Idle_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_idle.wav", db0, 1, 100};
			frequency = "0.95	+	((rpm/	3500) factor[(100/	3500),(600/	3500)])*0.15";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(100/	3500),(200/	3500)])	*	((rpm/	3500) factor[(530/	3500),(380/	3500)]))";
		};

		class Engine {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_2.wav", db0, 1, 200};
			frequency = "0.9	+	((rpm/	3500) factor[(380/	3500),(840/	3500)])*0.2";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(380/	3500),(530/	3500)])	*	((rpm/	3500) factor[(850/	3500),(650/	3500)]))";
		};

		class Engine1_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_3.wav", db0, 1, 225};
			frequency = "0.9	+	((rpm/	3500) factor[(660/	3500),(1130/	3500)])*0.2";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(650/	3500),(840/	3500)])	*	((rpm/	3500) factor[(1130/	3500),(940/	3500)]))";
		};

		class Engine2_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_4.wav", db0, 1, 250};
			frequency = "0.9	+	((rpm/	3500) factor[(930/	3500),(1340/	3500)])*0.2";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(1000/	3500),(1130/	3500)])	*	((rpm/	3500) factor[(1340/	3500),(1200/	3500)]))";
		};

		class Engine3_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_6.wav", db0, 1, 275};
			frequency = "0.95	+	((rpm/	3500) factor[(1200/	3500),(1620/	3500)])*0.2";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(1100/	3500),(1300/	3500)])	*	((rpm/	3500) factor[(1600/	3500),(1400/	3500)]))";
		};

		class Engine4_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_8.wav", db0, 1, 300};
			frequency = "0.95	+	((rpm/	3500) factor[(1400/	3500),(2000/	3500)]) *0.2";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(1300/	3500),(1600/	3500)])	*	((rpm/	3500) factor[(2000/	3500),(1700/	3500)]))";
		};

		class Engine5_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_9.wav", db0, 1, 325};
			frequency = "0.95	+	((rpm/	3500) factor[(1700/	3500),(2250/	3500)])*0.2";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(1600/	3500),(2000/	3500)])	*	((rpm/	3500) factor[(2250/	3500),(2050/	3500)]))";
		};

		class Engine6_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_11.wav", db0, 1, 350};
			frequency = "0.95	+	((rpm/	3500) factor[(2050/	3500),(2600/	3500)])*0.2";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(1900/	3500),(2250/	3500)])	*	((rpm/	3500) factor[(2600/	3500),(2400/	3500)]))";
		};

		class Engine7_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_12.wav", db0, 1, 375};
			frequency = "0.95	+	((rpm/	3500) factor[(2400/	3500),(3050/	3500)])*0.2";
			volume = "engineOn*camPos*(((rpm/	3500) factor[(2300/	3500),(2600/	3500)])	*	((rpm/	3500) factor[(3050/	3500),(2650/	3500)]))";
		};

		class Engine8_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_14.wav", db0, 1, 400};
			frequency = "0.95	+	((rpm/	3500) factor[(2650/	3500),(3500/	3500)])*0.2";
			volume = "engineOn*camPos*((rpm/	3500) factor[(2400/	3500),(3200/	3500)])";
		};

		class IdleThrust {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_idle_exhaust.wav", db0, 1, 200};
			frequency = "0.95	+	((rpm/	3500) factor[(100/	3500),(600/	3500)])*0.15";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(100/	3500),(200/	3500)])	*	((rpm/	3500) factor[(530/	3500),(380/	3500)]))";
		};

		class EngineThrust {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_2_exhaust.wav", db0, 1, 250};
			frequency = "0.9	+	((rpm/	3500) factor[(380/	3500),(840/	3500)])*0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(380/	3500),(530/	3500)])	*	((rpm/	3500) factor[(850/	3500),(650/	3500)]))";
		};

		class Engine1_Thrust_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_3_exhaust.wav", db0, 1, 275};
			frequency = "0.9	+	((rpm/	3500) factor[(660/	3500),(1130/	3500)])*0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(650/	3500),(840/	3500)])	*	((rpm/	3500) factor[(1130/	3500),(940/	3500)]))";
		};

		class Engine2_Thrust_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_4_exhaust.wav", db0, 1, 300};
			frequency = "0.9	+	((rpm/	3500) factor[(930/	3500),(1340/	3500)])*0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1000/	3500),(1130/	3500)])	*	((rpm/	3500) factor[(1340/	3500),(1200/	3500)]))";
		};

		class Engine3_Thrust_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_6_exhaust.wav", db0, 1, 325};
			frequency = "0.95	+	((rpm/	3500) factor[(1200/	3500),(1620/	3500)])*0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1100/	3500),(1300/	3500)])	*	((rpm/	3500) factor[(1600/	3500),(1400/	3500)]))";
		};

		class Engine4_Thrust_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_8_exhaust.wav", db0, 1, 350};
			frequency = "0.95	+	((rpm/	3500) factor[(1400/	3500),(2000/	3500)]) *0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1300/	3500),(1600/	3500)])	*	((rpm/	3500) factor[(2000/	3500),(1700/	3500)]))";
		};

		class Engine5_Thrust_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_9_exhaust.wav", db0, 1, 375};
			frequency = "0.95	+	((rpm/	3500) factor[(1700/	3500),(2250/	3500)])*0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1600/	3500),(2000/	3500)])	*	((rpm/	3500) factor[(2250/	3500),(2050/	3500)]))";
		};

		class Engine6_Thrust_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_11_exhaust.wav", db0, 1, 400};
			frequency = "0.95	+	((rpm/	3500) factor[(2050/	3500),(2600/	3500)])*0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1900/	3500),(2250/	3500)])	*	((rpm/	3500) factor[(2600/	3500),(2400/	3500)]))";
		};

		class Engine7_Thrust_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_12_exhaust.wav", db0, 1, 425};
			frequency = "0.95	+	((rpm/	3500) factor[(2400/	3500),(3050/	3500)])*0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(2300/	3500),(2600/	3500)])	*	((rpm/	3500) factor[(3050/	3500),(2650/	3500)]))";
		};

		class Engine8_Thrust_ext {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_14_exhaust.wav", db0, 1, 450};
			frequency = "0.95	+	((rpm/	3500) factor[(2650/	3500),(3500/	3500)])*0.2";
			volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*((rpm/	3500) factor[(2400/	3500),(3200/	3500)])";
		};

		class Idle_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_idle.wav", db-10, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(100/	3500),(600/	3500)])*0.15";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(100/	3500),(200/	3500)])	*	((rpm/	3500) factor[(530/	3500),(380/	3500)]))";
		};

		class Engine_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_2.wav", 0.1, 1};
			frequency = "0.9	+	((rpm/	3500) factor[(380/	3500),(840/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(380/	3500),(530/	3500)])	*	((rpm/	3500) factor[(850/	3500),(650/	3500)]))";
		};

		class Engine1_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_3.wav", 0.1, 1};
			frequency = "0.9	+	((rpm/	3500) factor[(660/	3500),(1130/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(650/	3500),(840/	3500)])	*	((rpm/	3500) factor[(1130/	3500),(940/	3500)]))";
		};

		class Engine2_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_4.wav", 0.1, 1};
			frequency = "0.9	+	((rpm/	3500) factor[(930/	3500),(1340/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1000/	3500),(1130/	3500)])	*	((rpm/	3500) factor[(1340/	3500),(1200/	3500)]))";
		};

		class Engine3_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_6.wav", 0.1, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(1200/	3500),(1620/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1100/	3500),(1300/	3500)])	*	((rpm/	3500) factor[(1600/	3500),(1400/	3500)]))";
		};

		class Engine4_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_8.wav", 0.1, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(1400/	3500),(2000/	3500)]) *0.2";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1300/	3500),(1600/	3500)])	*	((rpm/	3500) factor[(2000/	3500),(1700/	3500)]))";
		};

		class Engine5_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_9.wav", 0.1, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(1700/	3500),(2250/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1600/	3500),(2000/	3500)])	*	((rpm/	3500) factor[(2250/	3500),(2050/	3500)]))";
		};

		class Engine6_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_11.wav", 0.1, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(2050/	3500),(2600/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1900/	3500),(2250/	3500)])	*	((rpm/	3500) factor[(2600/	3500),(2400/	3500)]))";
		};

		class Engine7_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_12.wav", 0.1, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(2400/	3500),(3050/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(2300/	3500),(2600/	3500)])	*	((rpm/	3500) factor[(3050/	3500),(2650/	3500)]))";
		};

		class Engine8_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_14.wav", 0.1, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(2650/	3500),(3500/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*((rpm/	3500) factor[(2400/	3500),(3200/	3500)])";
		};

		class IdleThrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_idle_exhaust.wav", db0, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(100/	3500),(600/	3500)])*0.15";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(100/	3500),(200/	3500)])	*	((rpm/	3500) factor[(530/	3500),(380/	3500)]))";
		};

		class EngineThrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_2_exhaust.wav", db0, 1};
			frequency = "0.9	+	((rpm/	3500) factor[(380/	3500),(840/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(380/	3500),(530/	3500)])	*	((rpm/	3500) factor[(850/	3500),(650/	3500)]))";
		};

		class Engine1_Thrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_3_exhaust.wav", db0, 1};
			frequency = "0.9	+	((rpm/	3500) factor[(660/	3500),(1130/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(650/	3500),(840/	3500)])	*	((rpm/	3500) factor[(1130/	3500),(940/	3500)]))";
		};

		class Engine2_Thrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_4_exhaust.wav", db0, 1};
			frequency = "0.9	+	((rpm/	3500) factor[(930/	3500),(1340/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1000/	3500),(1130/	3500)])	*	((rpm/	3500) factor[(1340/	3500),(1200/	3500)]))";
		};

		class Engine3_Thrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_6_exhaust.wav", db0, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(1200/	3500),(1620/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1100/	3500),(1300/	3500)])	*	((rpm/	3500) factor[(1600/	3500),(1400/	3500)]))";
		};

		class Engine4_Thrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_8_exhaust.wav", db0, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(1400/	3500),(2000/	3500)]) *0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1300/	3500),(1600/	3500)])	*	((rpm/	3500) factor[(2000/	3500),(1700/	3500)]))";
		};

		class Engine5_Thrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_9_exhaust.wav", db0, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(1700/	3500),(2250/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1600/	3500),(2000/	3500)])	*	((rpm/	3500) factor[(2250/	3500),(2050/	3500)]))";
		};

		class Engine6_Thrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_11_exhaust.wav", db0, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(2050/	3500),(2600/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1900/	3500),(2250/	3500)])	*	((rpm/	3500) factor[(2600/	3500),(2400/	3500)]))";
		};

		class Engine7_Thrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_12_exhaust.wav", db0, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(2400/	3500),(3050/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(2300/	3500),(2600/	3500)])	*	((rpm/	3500) factor[(3050/	3500),(2650/	3500)]))";
		};

		class Engine8_Thrust_int {
			sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_14_exhaust.wav", db0, 1};
			frequency = "0.95	+	((rpm/	3500) factor[(2650/	3500),(3500/	3500)])*0.2";
			volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*((rpm/	3500) factor[(2400/	3500),(3200/	3500)])";
		};

		class Movement {
			sound = "soundEnviron";
			frequency = "1";
			volume = "0";
		};

		class TiresRockOut {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_rock_final_2.wav", 0.1, 1.0, 120};
			frequency = "1";
			volume = "camPos*rock*(speed factor[2, 20])";
		};

		class TiresSandOut {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext-tires-sand1.wav", 0.1, 1.0, 120};
			frequency = "1";
			volume = "camPos*sand*(speed factor[2, 20])";
		};

		class TiresGrassOut {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_road_final_1.wav", 0.1, 1.0, 120};
			frequency = "1";
			volume = "camPos*grass*(speed factor[2, 20])";
		};

		class TiresMudOut {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext-tires-mud2.wav", 0.1, 1.0, 120};
			frequency = "1";
			volume = "camPos*mud*(speed factor[2, 20])";
		};

		class TiresGravelOut {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_rock_final_2.wav", db-10, 1.0, 120};
			frequency = "1";
			volume = "camPos*gravel*(speed factor[2, 20])";
		};

		class TiresAsphaltOut {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_road_final_1.wav", 0.281838, 1.0, 120};
			frequency = "1";
			volume = "camPos*asphalt*(speed factor[2, 20])";
		};

		class NoiseOut {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\noise_soft_ext_1.wav", 0.1, 1.0, 120};
			frequency = "1";
			volume = "camPos*(damper0 max 0.02)*(speed factor[0, 8])";
		};

		class TiresRockIn {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_rock_final_2.wav", 0.0177828, 1.0};
			frequency = "1";
			volume = "(1-camPos)*rock*(speed factor[2, 20])";
		};

		class TiresSandIn {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\int-tires-sand2.wav", 0.0177828, 1.0};
			frequency = "1";
			volume = "(1-camPos)*sand*(speed factor[2, 20])";
		};

		class TiresGrassIn {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_road_final_1.wav", 0.0177828, 1.0};
			frequency = "1";
			volume = "(1-camPos)*grass*(speed factor[2, 20])";
		};

		class TiresMudIn {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\int-tires-mud2.wav", 0.0177828, 1.0};
			frequency = "1";
			volume = "(1-camPos)*mud*(speed factor[2, 20])";
		};

		class TiresGravelIn {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_rock_final_2.wav", db-37, 1.0};
			frequency = "1";
			volume = "(1-camPos)*gravel*(speed factor[2, 20])";
		};

		class TiresAsphaltIn {
			sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_road_final_1.wav", 0.0177828, 1.0};
			frequency = "1";
			volume = "(1-camPos)*asphalt*(speed factor[2, 20])";
		};

		class NoiseIn {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\noise_soft_int_1.wav", 0.0177828, 1.0};
			frequency = "1";
			volume = "(damper0 max 0.03)*(speed factor[0, 8])*(1-camPos)";
		};

		class breaking_ext_road {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04.wav", db0, 1, 100};
			frequency = 1;
			volume = "engineOn*camPos*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 10])";
		};

		class acceleration_ext_road {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav", db0, 1, 100};
			frequency = 1;
			volume = "engineOn*camPos*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
		};

		class turn_left_ext_road {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav", db0, 1, 100};
			frequency = 1;
			volume = "engineOn*camPos*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
		};

		class turn_right_ext_road {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav", db0, 1, 100};
			frequency = 1;
			volume = "engineOn*camPos*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
		};

		class breaking_ext_dirt {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04.wav", db0, 1, 100};
			frequency = 1;
			volume = "engineOn*camPos*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 10])";
		};

		class acceleration_ext_dirt {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav", db0, 1, 100};
			frequency = 1;
			volume = "engineOn*camPos*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
		};

		class turn_left_ext_dirt {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav", db0, 1, 100};
			frequency = 1;
			volume = "engineOn*camPos*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
		};

		class turn_right_ext_dirt {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav", db0, 1, 100};
			frequency = 1;
			volume = "engineOn*camPos*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
		};

		class breaking_int_road {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04_int.wav", db0, 1};
			frequency = 1;
			volume = "engineOn*(1-camPos)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 6])";
		};

		class acceleration_int_road {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav", db0, 1};
			frequency = 1;
			volume = "engineOn*(1-camPos)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
		};

		class turn_left_int_road {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav", db0, 1};
			frequency = 1;
			volume = "engineOn*(1-camPos)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
		};

		class turn_right_int_road {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav", db0, 1};
			frequency = 1;
			volume = "engineOn*(1-camPos)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
		};

		class breaking_int_dirt {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04_int.wav", db0, 1};
			frequency = 1;
			volume = "engineOn*(1-camPos)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 6])";
		};

		class acceleration_int_dirt {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav", db0, 1};
			frequency = 1;
			volume = "engineOn*(1-camPos)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
		};

		class turn_left_int_dirt {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav", db0, 1};
			frequency = 1;
			volume = "engineOn*(1-camPos)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
		};

		class turn_right_int_dirt {
			sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav", db0, 1};
			frequency = 1;
			volume = "engineOn*(1-camPos)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
		};
	};

	class RenderTargets {
		class LeftMirror {
			renderTarget = "rendertarget0";

			class CameraView1 {
				pointPosition = "PIP0_pos";
				pointDirection = "PIP0_dir";
				renderQuality = 2;
				renderVisionMode = 0;
				fov = 0.7;
			};
		};

		class IntMirror {
			renderTarget = "rendertarget1";

			class CameraView1 {
				pointPosition = "PIP1_pos";
				pointDirection = "PIP1_dir";
				renderQuality = 2;
				renderVisionMode = 0;
				fov = 0.7;
			};
		};
	};
	driverLeftHandAnimName = "drivewheel";
	driverRightHandAnimName = "drivewheel";
	thrustDelay = 0.1;
	brakeIdleSpeed = 0.78;
	maxSpeed = 320;	// max speed on level road, km/h
	fuelCapacity = 45;
	wheelCircumference = 2.805;
	antiRollbarForceCoef = 0;
	antiRollbarForceLimit = 40;
	antiRollbarSpeedMin = 2;
	antiRollbarSpeedMax = 50;
	idleRpm = 900;
	redRpm = 3500;

	class complexGearbox {
		GearboxRatios[] = {"R1", -5.367, "N", 0, "D1", 5.367, "D2", 3.67, "D3", 2.238, "D4", 1.00, "D5", 0.8};
		TransmissionRatios[] = {"High", 5.0};
		gearBoxMode = "auto";
		moveOffGear = 1;
		driveString = "D";
		neutralString = "N";
		reverseString = "R";
		gearUpMaxCoef = 0.8;
		gearDownMaxCoef = 0.5;
		gearUpMinCoef = 0.45;
		gearDownMinCoef = 0.15;
		transmissionDelay = 1;
	};
	simulation = "carx";
	dampersBumpCoef = 3.0;
	differentialType = "rear_limited";
	frontRearSplit = 0.5;
	frontBias = 1.5;
	rearBias = 1.5;
	centreBias = 1.3;
	clutchStrength = 200.0;
	enginePower = 100;
	maxOmega = 900;
	peakTorque = 1300;
	dampingRateFullThrottle = 0.1;
	dampingRateZeroThrottleClutchEngaged = 0.35;
	dampingRateZeroThrottleClutchDisengaged = 0.35;
	torqueCurve[] = {{0.0, 0.0}, {0.25, 0.65}, {0.3, 0.8}, {0.5, 0.95}, {0.7, 1.0}, {0.8, 0.9}, {0.9, 0.8}, {1.0, 0.5}};
	changeGearMinEffectivity[] = {0.95, 0.15, 0.95, 0.95, 0.95, 0.95, 0.95, 0.95};
	switchTime = 0.05;
	latency = 0.2;

	class Wheels {
		class LF {
			boneName = "wheel_1_1_damper";
			steering = 1;
			side = "left";
			center = "wheel_1_1_axis";
			boundary = "wheel_1_1_bound";
			width = 0.5;
			mass = 30;
			MOI = 2.8;
			dampingRate = 0.5;
			maxBrakeTorque = 6000;
			maxHandBrakeTorque = 6000;
			suspTravelDirection[] = {0, -1, 0};
			suspForceAppPointOffset = "wheel_1_1_axis";
			tireForceAppPointOffset = "wheel_1_1_axis";
			maxCompression = 0.3;
			mMaxDroop = 0.1;
			sprungMass = 300;
			springStrength = 50000;
			springDamperRate = 3400;
			longitudinalStiffnessPerUnitGravity = 10000;
			latStiffX = 25;
			latStiffY = 180;
			frictionVsSlipGraph[] = {{0, 1}, {0.5, 1.0}, {1, 1}};
		};

		class LR : LF {
			boneName = "wheel_1_2_damper";
			steering = 0;
			center = "wheel_1_2_axis";
			boundary = "wheel_1_2_bound";
			suspForceAppPointOffset = "wheel_1_2_axis";
			tireForceAppPointOffset = "wheel_1_2_axis";
			maxHandBrakeTorque = 0;
			frictionVsSlipGraph[] = {{0, 1}, {0.5, 0.75}, {1, 0.5}};
		};

		class RF : LF {
			boneName = "wheel_2_1_damper";
			center = "wheel_2_1_axis";
			boundary = "wheel_2_1_bound";
			suspForceAppPointOffset = "wheel_2_1_axis";
			tireForceAppPointOffset = "wheel_2_1_axis";
			steering = 1;
			side = "right";
			frictionVsSlipGraph[] = {{0, 1}, {0.5, 1.0}, {1, 1}};
		};

		class RR : RF {
			boneName = "wheel_2_2_damper";
			steering = 0;
			center = "wheel_2_2_axis";
			boundary = "wheel_2_2_bound";
			suspForceAppPointOffset = "wheel_2_2_axis";
			tireForceAppPointOffset = "wheel_2_2_axis";
			maxHandBrakeTorque = 0;
			frictionVsSlipGraph[] = {{0, 1}, {0.5, 0.75}, {1, 0.5}};
		};
	};

	class Exhausts {
		class Exhaust1 {
			position = "exhaust1_pos";
			direction = "exhaust1_dir";
			effect = "ExhaustEffectOffroad";
		};

		class Exhaust2 {
			position = "exhaust2_pos";
			direction = "exhaust2_dir";
			effect = "ExhaustEffectOffroad";
		};
	};

	class Damage {
		tex[] = {};
		mat[] = {"A3\soft_F\Offroad\Data\offroad_ext.rvmat", "A3\soft_F\Offroad\Data\offroad_ext_damage.rvmat", "A3\soft_F\Offroad\Data\offroad_ext_destruct.rvmat", "A3\soft_F\Offroad\Data\Offroad_int_base.rvmat", "A3\soft_F\Offroad\Data\Offroad_int_base_damage.rvmat", "A3\soft_F\Offroad\Data\Offroad_int_base_destruct.rvmat", "A3\soft_F\Offroad\Data\Offroad_int_board.rvmat", "A3\soft_F\Offroad\Data\Offroad_int_board_damage.rvmat", "A3\soft_F\Offroad\Data\Offroad_int_board_destruct.rvmat", "A3\soft_F\Offroad\Data\Offroad_ext_plastic.rvmat", "A3\soft_F\Offroad\Data\Offroad_ext_damage.rvmat", "A3\soft_F\Offroad\Data\Offroad_ext_destruct.rvmat", "A3\data_f\glass_veh.rvmat", "A3\data_f\Glass_veh_damage.rvmat", "A3\data_f\Glass_veh_damage.rvmat", "A3\data_f\glass_veh_int.rvmat", "A3\data_f\Glass_veh_damage.rvmat", "A3\data_f\Glass_veh_damage.rvmat"};
	};

	class Reflectors {
		class Left {
			color[] = {0.75, 0.75, 0.85};
			ambient[] = {0.0005, 0.0005, 0.0005};
			position = "L svetlo";
			direction = "konec L svetla";
			hitpoint = "L svetlo";
			selection = "L svetlo";
			size = 1;
			innerAngle = 35;
			outerAngle = 180;
			coneFadeCoef = 40;
			intensity = 400;
			useFlare = 0;
			dayLight = 0;
			flareSize = 0.75;

			class Attenuation {
				start = 1;
				constant = 2.0;
				linear = 0.0;
				quadratic = 15.0;
			};
		};

		class Right : Left {
			position = "P svetlo";
			direction = "konec P svetla";
			hitpoint = "P svetlo";
			selection = "P svetlo";
		};

		class Right2 : Right {
			position = "R_light_flare";
			useFlare = 1;
		};

		class Left2 : Left {
			position = "L_light_flare";
			useFlare = 1;
		};
	};
	aggregateReflectors[] = {{"Left", "Right", "Left2", "Right2"}};
};
};

just dump this into a new config.cpp and pbo it

  • Like 1

Share this post


Link to post
Share on other sites

Very nice Sakura, I wish to bring what I do have of my M931 Tractor-Trailers from Arma2 to Arma3(though I will deffinitly release them for A2 still). But I do think my Arma3 version could be alot more better/realistic and over all fun to use, versus the limited/confined in terms of realism Arma2 version, compared to its real life counterpart! However I am having still a hard time understanding of this stuff in Arma2 so I am afraid unless I have a magical learning curve with this stuff it maby be some time before even what I do have of the M931's are seen in Arma3!

But none the less this is helpful and myself and many others will be thankful for this. Thanks Sakura!

P.s. Sakura, do you think my problem of being able to properly simulate the dreaded "seperate Trailer attached to Tractor" problem will be solved with the new physics stuff in Arma3? And if so could you explain how to me please? I have been stuck on this since Arma1!

Dave,

Share this post


Link to post
Share on other sites

Hey funny you should post this because i did that same thing, edited the offroad so it would do burnouts ;)

i have also been try to port one of my arma 2 cars to arma 3 i have got it in but i can get it to move i think it is in the config i get this error in the rpt ("Error: Wheel reference not initialized" and this "Unexpected control type") i don't know what they mean yet and was hoping someone dose or if someone know where i can find the arma 3 vehicle sample models and model.cfg

This if my config.cpp and model.cfg

config.cpp

enum {
destructengine = 2,
destructdefault = 6,
destructwreck = 7,
destructtree = 3,
destructtent = 4,
stabilizedinaxisx = 1,
stabilizedinaxesxyz = 4,
stabilizedinaxisy = 2,
stabilizedinaxesboth = 3,
destructno = 0,
stabilizedinaxesnone = 0,
destructman = 5,
destructbuilding = 1
};

//Class soft_f : Offroad\config.bin{
class DefaultEventhandlers;
class CfgPatches
{
class Subaru_Wrx
{
 units[] = {"Subaru_Wrx"};
 weapons[] = {};
 requiredVersion = 0.1;
 requiredAddons[] = {"A3_Soft_F"};
};
};
class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;
class CfgVehicles
{
class LandVehicle;
class Car: LandVehicle
{
 class HitPoints;
 class NewTurret;
};
class Car_F: Car
{
 class Turrets
 {
  class MainTurret: NewTurret
  {
   class ViewOptics;
  };
 };
 class HitPoints
 {
  class HitLFWheel;
  class HitLBWheel;
  class HitRFWheel;
  class HitRBWheel;
  class HitBody;
  class HitGlass1{};
  class HitGlass2;
 };
 class EventHandlers;
 class AnimationSources;
};
class Rallycars_Base: Car_F
{
 mapSize = 6.12;
 _generalMacro = "Rallycars_Base";
 displayName = "$STR_A3_CfgVehicles_Offroad_Base0";
 nameSound = "veh_car";
 class Library
 {
  libTextDesc = "$STR_A3_CfgVehicles_Offroad_Base_Library0";
 };
 model = "Jonzie_Rally_Cars\Subaru_Wrx\Subaru_Wrx.p3d";
 picture = "\A3\soft_f\offroad\Data\UI\offroad_base_CA.paa";
 Icon = "\A3\soft_f\offroad\Data\UI\map_offroad_CA.paa";
 accuracy = 0.25;
 transportSoldier = 1;
 transportMaxBackpacks = 0;
 armor = 32;
 cost = 50000;
 class TransportItems
 {
  class _xx_FirstAidKit
  {
   name = "FirstAidKit";
   count = 6;
  };
 };
 hiddenSelections[] = {};
 hiddenSelectionsTextures[] = {};
 class HitPoints: HitPoints
 {
  class HitLFWheel: HitLFWheel
  {
   armor = 0.125;
   passThrough = 0;
  };
  class HitLF2Wheel: HitLBWheel
  {
   armor = 0.125;
   passThrough = 0;
  };
  class HitRFWheel: HitRFWheel
  {
   armor = 0.125;
   passThrough = 0;
  };
  class HitRF2Wheel: HitRBWheel
  {
   armor = 0.125;
   passThrough = 0;
  };
  class HitFuel
  {
   armor = 0.5;
   material = -1;
   name = "palivo";
   visual = "";
   passThrough = 0.2;
  };
  class HitEngine
  {
   armor = 0.5;
   material = -1;
   name = "motor";
   visual = "";
   passThrough = 0.2;
  };
  class HitBody: HitBody
  {
   visual = "camo";
   passThrough = 1;
  };
  class HitGlass1: HitGlass1
  {
   armor = 0.25;
  };
  class HitGlass2: HitGlass2
  {
   armor = 0.25;
  };
 };
 steerAheadSimul = 0.5;
 steerAheadPlan = 0.35;
 predictTurnPlan = 0.8;
 predictTurnSimul = 0.6;
 precision = 10;
 brakeDistance = 50;
 turnCoef = 3.5;
 driverAction = "driver_offroad01";
 cargoAction[] = {"passenger_low01"};
 getInAction = "GetInLow";
 getOutAction = "GetOutLow";
 cargoGetInAction[] = {"GetInLow"};
 cargoGetOutAction[] = {"GetOutLow"};
 fireResistance = 5;
 wheelDestroyRadiusCoef = 0.75;
 soundGetIn[] = {"A3\Sounds_F\vehicles\soft\offroad\offroad-int-openclose.wav",1.0,1};
 soundGetOut[] = {"A3\Sounds_F\vehicles\soft\offroad\offroad-int-openclose.wav",1.0,1,40};
 soundDammage[] = {"",0.56234133,1};
 soundEngineOnInt[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_start.wav",1.0,1.0};
 soundEngineOnExt[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_start.wav",1.0,1.0,200};
 soundEngineOffInt[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_stop.wav",1.0,1.0};
 soundEngineOffExt[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_stop.wav",1.0,1.0,200};
 class Sounds
 {
  class Idle_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_idle.wav",1.0,1,100};
   frequency = "0.95	+	((rpm/	3500) factor[(100/	3500),(600/	3500)])*0.15";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(100/	3500),(200/	3500)])	*	((rpm/	3500) factor[(530/	3500),(380/	3500)]))";
  };
  class Engine
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_2.wav",1.0,1,200};
   frequency = "0.9	+	((rpm/	3500) factor[(380/	3500),(840/	3500)])*0.2";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(380/	3500),(530/	3500)])	*	((rpm/	3500) factor[(850/	3500),(650/	3500)]))";
  };
  class Engine1_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_3.wav",1.0,1,225};
   frequency = "0.9	+	((rpm/	3500) factor[(660/	3500),(1130/	3500)])*0.2";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(650/	3500),(840/	3500)])	*	((rpm/	3500) factor[(1130/	3500),(940/	3500)]))";
  };
  class Engine2_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_4.wav",1.0,1,250};
   frequency = "0.9	+	((rpm/	3500) factor[(930/	3500),(1340/	3500)])*0.2";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(1000/	3500),(1130/	3500)])	*	((rpm/	3500) factor[(1340/	3500),(1200/	3500)]))";
  };
  class Engine3_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_6.wav",1.0,1,275};
   frequency = "0.95	+	((rpm/	3500) factor[(1200/	3500),(1620/	3500)])*0.2";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(1100/	3500),(1300/	3500)])	*	((rpm/	3500) factor[(1600/	3500),(1400/	3500)]))";
  };
  class Engine4_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_8.wav",1.0,1,300};
   frequency = "0.95	+	((rpm/	3500) factor[(1400/	3500),(2000/	3500)]) *0.2";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(1300/	3500),(1600/	3500)])	*	((rpm/	3500) factor[(2000/	3500),(1700/	3500)]))";
  };
  class Engine5_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_9.wav",1.0,1,325};
   frequency = "0.95	+	((rpm/	3500) factor[(1700/	3500),(2250/	3500)])*0.2";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(1600/	3500),(2000/	3500)])	*	((rpm/	3500) factor[(2250/	3500),(2050/	3500)]))";
  };
  class Engine6_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_11.wav",1.0,1,350};
   frequency = "0.95	+	((rpm/	3500) factor[(2050/	3500),(2600/	3500)])*0.2";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(1900/	3500),(2250/	3500)])	*	((rpm/	3500) factor[(2600/	3500),(2400/	3500)]))";
  };
  class Engine7_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_12.wav",1.0,1,375};
   frequency = "0.95	+	((rpm/	3500) factor[(2400/	3500),(3050/	3500)])*0.2";
   volume = "engineOn*camPos*(((rpm/	3500) factor[(2300/	3500),(2600/	3500)])	*	((rpm/	3500) factor[(3050/	3500),(2650/	3500)]))";
  };
  class Engine8_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_14.wav",1.0,1,400};
   frequency = "0.95	+	((rpm/	3500) factor[(2650/	3500),(3500/	3500)])*0.2";
   volume = "engineOn*camPos*((rpm/	3500) factor[(2400/	3500),(3200/	3500)])";
  };
  class IdleThrust
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_idle_exhaust.wav",1.0,1,200};
   frequency = "0.95	+	((rpm/	3500) factor[(100/	3500),(600/	3500)])*0.15";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(100/	3500),(200/	3500)])	*	((rpm/	3500) factor[(530/	3500),(380/	3500)]))";
  };
  class EngineThrust
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_2_exhaust.wav",1.0,1,250};
   frequency = "0.9	+	((rpm/	3500) factor[(380/	3500),(840/	3500)])*0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(380/	3500),(530/	3500)])	*	((rpm/	3500) factor[(850/	3500),(650/	3500)]))";
  };
  class Engine1_Thrust_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_3_exhaust.wav",1.0,1,275};
   frequency = "0.9	+	((rpm/	3500) factor[(660/	3500),(1130/	3500)])*0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(650/	3500),(840/	3500)])	*	((rpm/	3500) factor[(1130/	3500),(940/	3500)]))";
  };
  class Engine2_Thrust_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_4_exhaust.wav",1.0,1,300};
   frequency = "0.9	+	((rpm/	3500) factor[(930/	3500),(1340/	3500)])*0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1000/	3500),(1130/	3500)])	*	((rpm/	3500) factor[(1340/	3500),(1200/	3500)]))";
  };
  class Engine3_Thrust_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_6_exhaust.wav",1.0,1,325};
   frequency = "0.95	+	((rpm/	3500) factor[(1200/	3500),(1620/	3500)])*0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1100/	3500),(1300/	3500)])	*	((rpm/	3500) factor[(1600/	3500),(1400/	3500)]))";
  };
  class Engine4_Thrust_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_8_exhaust.wav",1.0,1,350};
   frequency = "0.95	+	((rpm/	3500) factor[(1400/	3500),(2000/	3500)]) *0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1300/	3500),(1600/	3500)])	*	((rpm/	3500) factor[(2000/	3500),(1700/	3500)]))";
  };
  class Engine5_Thrust_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_9_exhaust.wav",1.0,1,375};
   frequency = "0.95	+	((rpm/	3500) factor[(1700/	3500),(2250/	3500)])*0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1600/	3500),(2000/	3500)])	*	((rpm/	3500) factor[(2250/	3500),(2050/	3500)]))";
  };
  class Engine6_Thrust_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_11_exhaust.wav",1.0,1,400};
   frequency = "0.95	+	((rpm/	3500) factor[(2050/	3500),(2600/	3500)])*0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1900/	3500),(2250/	3500)])	*	((rpm/	3500) factor[(2600/	3500),(2400/	3500)]))";
  };
  class Engine7_Thrust_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_12_exhaust.wav",1.0,1,425};
   frequency = "0.95	+	((rpm/	3500) factor[(2400/	3500),(3050/	3500)])*0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(2300/	3500),(2600/	3500)])	*	((rpm/	3500) factor[(3050/	3500),(2650/	3500)]))";
  };
  class Engine8_Thrust_ext
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_ext_rpm_14_exhaust.wav",1.0,1,450};
   frequency = "0.95	+	((rpm/	3500) factor[(2650/	3500),(3500/	3500)])*0.2";
   volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*((rpm/	3500) factor[(2400/	3500),(3200/	3500)])";
  };
  class Idle_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_idle.wav",0.31622776,1};
   frequency = "0.95	+	((rpm/	3500) factor[(100/	3500),(600/	3500)])*0.15";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(100/	3500),(200/	3500)])	*	((rpm/	3500) factor[(530/	3500),(380/	3500)]))";
  };
  class Engine_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_2.wav",0.1,1};
   frequency = "0.9	+	((rpm/	3500) factor[(380/	3500),(840/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(380/	3500),(530/	3500)])	*	((rpm/	3500) factor[(850/	3500),(650/	3500)]))";
  };
  class Engine1_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_3.wav",0.1,1};
   frequency = "0.9	+	((rpm/	3500) factor[(660/	3500),(1130/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(650/	3500),(840/	3500)])	*	((rpm/	3500) factor[(1130/	3500),(940/	3500)]))";
  };
  class Engine2_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_4.wav",0.1,1};
   frequency = "0.9	+	((rpm/	3500) factor[(930/	3500),(1340/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1000/	3500),(1130/	3500)])	*	((rpm/	3500) factor[(1340/	3500),(1200/	3500)]))";
  };
  class Engine3_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_6.wav",0.1,1};
   frequency = "0.95	+	((rpm/	3500) factor[(1200/	3500),(1620/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1100/	3500),(1300/	3500)])	*	((rpm/	3500) factor[(1600/	3500),(1400/	3500)]))";
  };
  class Engine4_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_8.wav",0.1,1};
   frequency = "0.95	+	((rpm/	3500) factor[(1400/	3500),(2000/	3500)]) *0.2";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1300/	3500),(1600/	3500)])	*	((rpm/	3500) factor[(2000/	3500),(1700/	3500)]))";
  };
  class Engine5_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_9.wav",0.1,1};
   frequency = "0.95	+	((rpm/	3500) factor[(1700/	3500),(2250/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1600/	3500),(2000/	3500)])	*	((rpm/	3500) factor[(2250/	3500),(2050/	3500)]))";
  };
  class Engine6_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_11.wav",0.1,1};
   frequency = "0.95	+	((rpm/	3500) factor[(2050/	3500),(2600/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(1900/	3500),(2250/	3500)])	*	((rpm/	3500) factor[(2600/	3500),(2400/	3500)]))";
  };
  class Engine7_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_12.wav",0.1,1};
   frequency = "0.95	+	((rpm/	3500) factor[(2400/	3500),(3050/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(((rpm/	3500) factor[(2300/	3500),(2600/	3500)])	*	((rpm/	3500) factor[(3050/	3500),(2650/	3500)]))";
  };
  class Engine8_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_14.wav",0.1,1};
   frequency = "0.95	+	((rpm/	3500) factor[(2650/	3500),(3500/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*((rpm/	3500) factor[(2400/	3500),(3200/	3500)])";
  };
  class IdleThrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_idle_exhaust.wav",1.0,1};
   frequency = "0.95	+	((rpm/	3500) factor[(100/	3500),(600/	3500)])*0.15";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(100/	3500),(200/	3500)])	*	((rpm/	3500) factor[(530/	3500),(380/	3500)]))";
  };
  class EngineThrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_2_exhaust.wav",1.0,1};
   frequency = "0.9	+	((rpm/	3500) factor[(380/	3500),(840/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(380/	3500),(530/	3500)])	*	((rpm/	3500) factor[(850/	3500),(650/	3500)]))";
  };
  class Engine1_Thrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_3_exhaust.wav",1.0,1};
   frequency = "0.9	+	((rpm/	3500) factor[(660/	3500),(1130/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(650/	3500),(840/	3500)])	*	((rpm/	3500) factor[(1130/	3500),(940/	3500)]))";
  };
  class Engine2_Thrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_4_exhaust.wav",1.0,1};
   frequency = "0.9	+	((rpm/	3500) factor[(930/	3500),(1340/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1000/	3500),(1130/	3500)])	*	((rpm/	3500) factor[(1340/	3500),(1200/	3500)]))";
  };
  class Engine3_Thrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_6_exhaust.wav",1.0,1};
   frequency = "0.95	+	((rpm/	3500) factor[(1200/	3500),(1620/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1100/	3500),(1300/	3500)])	*	((rpm/	3500) factor[(1600/	3500),(1400/	3500)]))";
  };
  class Engine4_Thrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_8_exhaust.wav",1.0,1};
   frequency = "0.95	+	((rpm/	3500) factor[(1400/	3500),(2000/	3500)]) *0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1300/	3500),(1600/	3500)])	*	((rpm/	3500) factor[(2000/	3500),(1700/	3500)]))";
  };
  class Engine5_Thrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_9_exhaust.wav",1.0,1};
   frequency = "0.95	+	((rpm/	3500) factor[(1700/	3500),(2250/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1600/	3500),(2000/	3500)])	*	((rpm/	3500) factor[(2250/	3500),(2050/	3500)]))";
  };
  class Engine6_Thrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_11_exhaust.wav",1.0,1};
   frequency = "0.95	+	((rpm/	3500) factor[(2050/	3500),(2600/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(1900/	3500),(2250/	3500)])	*	((rpm/	3500) factor[(2600/	3500),(2400/	3500)]))";
  };
  class Engine7_Thrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_12_exhaust.wav",1.0,1};
   frequency = "0.95	+	((rpm/	3500) factor[(2400/	3500),(3050/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/	3500) factor[(2300/	3500),(2600/	3500)])	*	((rpm/	3500) factor[(3050/	3500),(2650/	3500)]))";
  };
  class Engine8_Thrust_int
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\offroad\landrover_int_rpm_14_exhaust.wav",1.0,1};
   frequency = "0.95	+	((rpm/	3500) factor[(2650/	3500),(3500/	3500)])*0.2";
   volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*((rpm/	3500) factor[(2400/	3500),(3200/	3500)])";
  };
  class Movement
  {
   sound = "soundEnviron";
   frequency = "1";
   volume = "0";
  };
  class TiresRockOut
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_rock_final_2.wav",0.1,1.0,120};
   frequency = "1";
   volume = "camPos*rock*(speed factor[2, 20])";
  };
  class TiresSandOut
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext-tires-sand1.wav",0.1,1.0,120};
   frequency = "1";
   volume = "camPos*sand*(speed factor[2, 20])";
  };
  class TiresGrassOut
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_road_final_1.wav",0.1,1.0,120};
   frequency = "1";
   volume = "camPos*grass*(speed factor[2, 20])";
  };
  class TiresMudOut
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext-tires-mud2.wav",0.1,1.0,120};
   frequency = "1";
   volume = "camPos*mud*(speed factor[2, 20])";
  };
  class TiresGravelOut
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_rock_final_2.wav",0.31622776,1.0,120};
   frequency = "1";
   volume = "camPos*gravel*(speed factor[2, 20])";
  };
  class TiresAsphaltOut
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_road_final_1.wav",0.2818383,1.0,120};
   frequency = "1";
   volume = "camPos*asphalt*(speed factor[2, 20])";
  };
  class NoiseOut
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\noise_soft_ext_1.wav",0.1,1.0,120};
   frequency = "1";
   volume = "camPos*(damper0 max 0.02)*(speed factor[0, 8])";
  };
  class TiresRockIn
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_rock_final_2.wav",0.017782794,1.0};
   frequency = "1";
   volume = "(1-camPos)*rock*(speed factor[2, 20])";
  };
  class TiresSandIn
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\int-tires-sand2.wav",0.017782794,1.0};
   frequency = "1";
   volume = "(1-camPos)*sand*(speed factor[2, 20])";
  };
  class TiresGrassIn
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_road_final_1.wav",0.017782794,1.0};
   frequency = "1";
   volume = "(1-camPos)*grass*(speed factor[2, 20])";
  };
  class TiresMudIn
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\int-tires-mud2.wav",0.017782794,1.0};
   frequency = "1";
   volume = "(1-camPos)*mud*(speed factor[2, 20])";
  };
  class TiresGravelIn
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_rock_final_2.wav",0.014125375,1.0};
   frequency = "1";
   volume = "(1-camPos)*gravel*(speed factor[2, 20])";
  };
  class TiresAsphaltIn
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_road_final_1.wav",0.017782794,1.0};
   frequency = "1";
   volume = "(1-camPos)*asphalt*(speed factor[2, 20])";
  };
  class NoiseIn
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\noise_soft_int_1.wav",0.017782794,1.0};
   frequency = "1";
   volume = "(damper0 max 0.03)*(speed factor[0, 8])*(1-camPos)";
  };
  class breaking_ext_road
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04.wav",1.0,1,100};
   frequency = 1;
   volume = "engineOn*camPos*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 10])";
  };
  class acceleration_ext_road
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav",1.0,1,100};
   frequency = 1;
   volume = "engineOn*camPos*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
  };
  class turn_left_ext_road
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav",1.0,1,100};
   frequency = 1;
   volume = "engineOn*camPos*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
  };
  class turn_right_ext_road
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav",1.0,1,100};
   frequency = 1;
   volume = "engineOn*camPos*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
  };
  class breaking_ext_dirt
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04.wav",1.0,1,100};
   frequency = 1;
   volume = "engineOn*camPos*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 10])";
  };
  class acceleration_ext_dirt
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav",1.0,1,100};
   frequency = 1;
   volume = "engineOn*camPos*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
  };
  class turn_left_ext_dirt
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav",1.0,1,100};
   frequency = 1;
   volume = "engineOn*camPos*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
  };
  class turn_right_ext_dirt
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02.wav",1.0,1,100};
   frequency = 1;
   volume = "engineOn*camPos*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
  };
  class breaking_int_road
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04_int.wav",1.0,1};
   frequency = 1;
   volume = "engineOn*(1-camPos)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 6])";
  };
  class acceleration_int_road
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav",1.0,1};
   frequency = 1;
   volume = "engineOn*(1-camPos)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
  };
  class turn_left_int_road
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav",1.0,1};
   frequency = 1;
   volume = "engineOn*(1-camPos)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
  };
  class turn_right_int_road
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav",1.0,1};
   frequency = 1;
   volume = "engineOn*(1-camPos)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
  };
  class breaking_int_dirt
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04_int.wav",1.0,1};
   frequency = 1;
   volume = "engineOn*(1-camPos)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 6])";
  };
  class acceleration_int_dirt
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav",1.0,1};
   frequency = 1;
   volume = "engineOn*(1-camPos)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
  };
  class turn_left_int_dirt
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav",1.0,1};
   frequency = 1;
   volume = "engineOn*(1-camPos)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
  };
  class turn_right_int_dirt
  {
   sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int.wav",1.0,1};
   frequency = 1;
   volume = "engineOn*(1-camPos)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
  };
 };
 class RenderTargets
 {
  class LeftMirror
  {
   renderTarget = "rendertarget0";
   class CameraView1
   {
    pointPosition = "PIP0_pos";
    pointDirection = "PIP0_dir";
    renderQuality = 2;
    renderVisionMode = 0;
    fov = 0.7;
   };
  };
  class IntMirror
  {
   renderTarget = "rendertarget1";
   class CameraView1
   {
    pointPosition = "PIP1_pos";
    pointDirection = "PIP1_dir";
    renderQuality = 2;
    renderVisionMode = 0;
    fov = 0.7;
   };
  };
 };
 driverLeftHandAnimName = "volant";
 driverRightHandAnimName = "volant";
 thrustDelay = 0.2;
 brakeIdleSpeed = 1.78;
 maxSpeed = 165;
 fuelCapacity = 45;
 wheelCircumference = 1.805;
 antiRollbarForceCoef = 0;
 antiRollbarForceLimit = 10;
 antiRollbarSpeedMin = 3;
 antiRollbarSpeedMax = 100;
 idleRpm = 400;
 redRpm = 3500;
 class complexGearbox
 {
  GearboxRatios[] = {"R1",-6.575,"N",0,"D1",2.367,"D2",1.67,"D3",1.238,"D4",0.99,"D5",0.802,"D6",0.601};
  TransmissionRatios[] = {"High",6.0};
  gearBoxMode = "auto";
  moveOffGear = 1;
  driveString = "D";
  neutralString = "N";
  reverseString = "R";
  gearUpMaxCoef = 0.8;
  gearDownMaxCoef = 0.5;
  gearUpMinCoef = 0.45;
  gearDownMinCoef = 0.15;
  transmissionDelay = 2;
 };
 simulation = "carx";
 dampersBumpCoef = 3.0;
 differentialType = "all_limited";
 frontRearSplit = 0.5;
 frontBias = 1.5;
 rearBias = 1.5;
 centreBias = 1.3;
 clutchStrength = 15.0;
 enginePower = 200;
 maxOmega = 370;
 peakTorque = 320;
 dampingRateFullThrottle = 0.08;
 dampingRateZeroThrottleClutchEngaged = 0.35;
 dampingRateZeroThrottleClutchDisengaged = 0.35;
 torqueCurve[] = {
  { 0.0,0.0 },
  { 0.25,0.65 },
  { 0.3,0.8 },
  { 0.5,0.95 },
  { 0.7,1.0 },
  { 0.8,0.9 },
  { 0.9,0.8 },
  { 1.0,0.5 }};
 changeGearMinEffectivity[] = {0.95,0.15,0.95,0.95,0.95,0.95,0.95,0.95};
 switchTime = 0.31;
 latency = 1.5;
 class Wheels
 {
  class LF
  {
   boneName = "wheel_1_1_zatoc";
   steering = 1;
   side = "left";
   center = "wheel_1_1";
   boundary = "wheel_1_1_bound";
   width = "0.2";
   mass = 30;
   MOI = 2.8;
   dampingRate = 0.5;
   maxBrakeTorque = 2000;
   maxHandBrakeTorque = 0;
   suspTravelDirection[] = {0,-1,0};
   suspForceAppPointOffset = "wheel_1_1_axis";
   tireForceAppPointOffset = "wheel_1_1_axis";
   maxCompression = 0.05;
   mMaxDroop = 0.1;
   sprungMass = 400;
   springStrength = 14400;
   springDamperRate = 1920;
   longitudinalStiffnessPerUnitGravity = 10000;
   latStiffX = 25;
   latStiffY = 180;
   frictionVsSlipGraph[] = {
    { 0,1 },
    { 0.5,1 },
    { 1,1 }};
  };
  class LR: LF
  {
   boneName = "wheel_1_2_zatoc";
   steering = 0;
   center = "wheel_1_2";
   boundary = "wheel_1_2_bound";
   suspForceAppPointOffset = "wheel_1_2_axis";
   tireForceAppPointOffset = "wheel_1_2_axis";
   maxHandBrakeTorque = 3000;
  };
  class RF: LF
  {
   boneName = "wheel_2_1_zatoc";
   center = "wheel_2_1";
   boundary = "wheel_2_1_bound";
   suspForceAppPointOffset = "wheel_2_1_axis";
   tireForceAppPointOffset = "wheel_2_1_axis";
   steering = 1;
   side = "right";
  };
  class RR: RF
  {
   boneName = "wheel_2_2_zatoc";
   steering = 0;
   center = "wheel_2_2";
   boundary = "wheel_2_2_bound";
   suspForceAppPointOffset = "wheel_2_2_axis";
   tireForceAppPointOffset = "wheel_2_2_axis";
   maxHandBrakeTorque = 3000;
  };
 };
 class Exhausts
 {
  class Exhaust1
  {
   position = "exhaust1_pos";
   direction = "exhaust1_dir";
   effect = "ExhaustEffectOffroad";
  };
  class Exhaust2
  {
   position = "exhaust2_pos";
   direction = "exhaust2_dir";
   effect = "ExhaustEffectOffroad";
  };
 };
 class Damage
 {
  tex[] = {};
  mat[] = {"A3\soft_F\Offroad\Data\offroad_ext.rvmat","A3\soft_F\Offroad\Data\offroad_ext_damage.rvmat","A3\soft_F\Offroad\Data\offroad_ext_destruct.rvmat","A3\soft_F\Offroad\Data\Offroad_int_base.rvmat","A3\soft_F\Offroad\Data\Offroad_int_base_damage.rvmat","A3\soft_F\Offroad\Data\Offroad_int_base_destruct.rvmat","A3\soft_F\Offroad\Data\Offroad_int_board.rvmat","A3\soft_F\Offroad\Data\Offroad_int_board_damage.rvmat","A3\soft_F\Offroad\Data\Offroad_int_board_destruct.rvmat","A3\soft_F\Offroad\Data\Offroad_ext_plastic.rvmat","A3\soft_F\Offroad\Data\Offroad_ext_damage.rvmat","A3\soft_F\Offroad\Data\Offroad_ext_destruct.rvmat","A3\data_f\glass_veh.rvmat","A3\data_f\Glass_veh_damage.rvmat","A3\data_f\Glass_veh_damage.rvmat","A3\data_f\glass_veh_int.rvmat","A3\data_f\Glass_veh_damage.rvmat","A3\data_f\Glass_veh_damage.rvmat"};
 };
 class Reflectors
 {
  class Left
  {
   color[] = {0.75,0.75,0.85};
   ambient[] = {0.0005,0.0005,0.0005};
   position = "L svetlo";
   direction = "konec L svetla";
   hitpoint = "L svetlo";
   selection = "L svetlo";
   size = 1;
   innerAngle = 35;
   outerAngle = 180;
   coneFadeCoef = 40;
   intensity = 400;
   useFlare = 0;
   dayLight = 0;
   flareSize = 0.75;
   class Attenuation
   {
    start = 1;
    constant = 2.0;
    linear = 0.0;
    quadratic = 15.0;
   };
  };
  class Right: Left
  {
   position = "P svetlo";
   direction = "konec P svetla";
   hitpoint = "P svetlo";
   selection = "P svetlo";
  };
  class Right2: Right
  {
   position = "R_light_flare";
   useFlare = 1;
  };
  class Left2: Left
  {
   position = "L_light_flare";
   useFlare = 1;
  };
 };
 aggregateReflectors[] = {
  { "Left","Right","Left2","Right2" }};
};
class Subaru_Wrx: Rallycars_Base
{
 _generalMacro = "Subaru_Wrx";
 model = "Jonzie_Rally_Cars\Subaru_Wrx\Subaru_Wrx.p3d";
 displayName = "Subaru Wrx";
 scope = 2;
 crew = "C_man_1";
 side = 3;
 faction = "CIV_F";
 accuracy = 1.25;
 class Turrets{};
};
};
//};

model.cfg

class Rotation;
class CfgSkeletons
{
class Vehicle
{
	isDiscrete=1;
	skeletonInherit="";
	skeletonBones[]={};
};
class Subaru_Wrx: Vehicle
{
	skeletonBones[]=
	{
		"volant",
		"",
		"wheel_1_1 tlumic",
		"",
		"wheel_2_1 tlumic",
		"",
		"levy dalsi tlumic",
		"",
		"pravy dalsi tlumic",
		"",
		"wheel_1_1 zatoc",
		"wheel_1_1 tlumic",
		"wheel_2_1 zatoc",
		"wheel_2_1 tlumic",
		"levy dalsi zatoc",
		"levy dalsi tlumic",
		"pravy dalsi zatoc",
		"pravy dalsi tlumic",
		"levy prostredni tlumic",
		"",
		"pravy prostredni tlumic",
		"",
		"wheel_1_2 tlumic",
		"",
		"wheel_2_2 tlumic",
		"",
		"wheel_1_1",
		"wheel_1_1 zatoc",
		"wheel_2_1",
		"wheel_2_1 zatoc",
		"levy dalsi",
		"levy dalsi zatoc",
		"pravy dalsi",
		"pravy dalsi zatoc",
		"levy prostredni",
		"levy prostredni tlumic",
		"pravy prostredni",
		"pravy prostredni tlumic",
		"wheel_1_2",
		"wheel_1_2 tlumic",
		"wheel_2_2",
		"wheel_2_2 tlumic",
		"ukaz_rychlo",
		"",
		"ukaz_rychlo2",
		"",
		"ukaz_rpm",
		"",
		"OtocVez",
		"",
		"OtocHlaven",
		"OtocVez",
		"fuel_01",
		"",
		"fuel_1",
		"",
		"prop_01",
		"",
		"prop_02",
		"",
		"prop_2",
		"",
		"prop_1",
		"",
		"damageHide",
		"",
		"damageVez",
		"OtocVez",
		"damageHlaven",
		"OtocHlaven"
	};
};
};
class CfgModels
{
class Vehicle
{
	sections[]={};
	sectionsInherit="";
	skeletonName="";
};
class Subaru_Wrx: Vehicle
{
       isDiscrete = 1;
	sectionsInherit="";
	sections[]=
	{
		"Body","Lett_1","Lett_2","Lett_3","num_1","num_2","num_3",
		"sklo predni p",
		"sklo predni l",
		"zadni svetlo",
		"brzdove svetlo",
		"spz",
		"karoserie",
		"motor",
		"zbran",
		"vez",
		"zbytek",
		"wheel_1_1",
		"levy prostredni",
		"wheel_1_2",
		"wheel_2_1",
		"pravy prostredni",
		"wheel_2_2",
		"clan",
		"clan_sign",
		"zasleh",
		"P svetlo",
		"L svetlo",
		"palivo"
	};
       skeletonName="Subaru_Wrx";
	class Animations
	{
		class damageHide
		{
			type="hide";
			source="damage";
			selection="damageHide";
		};
		class IndicatorSpeed
		{
			animPeriod=0;
			type="rotation";
			source="speed";
			selection="ukaz_rychlo";
			axis="osa_rychlo";
			memory=0;
			minValue=0;
			maxValue=16.67;
			angle0=0;
			angle1=2.8797929;
		};
		class IndicatorSpeed2
		{
			type="rotation";
			source="speed";
			selection="ukaz_rychlo2";
			axis="osa_rychlo2";
			memory="false";
			animPeriod=0;
			minValue=0;
			maxValue=16.67;
			angle0=0;
			angle1="rad -240";
		};
		class IndicatorRPM
		{
			animPeriod=0;
			type="rotation";
			source="rpm";
			selection="ukaz_rpm";
			axis="osa_rpm";
			memory=0;
			minValue=0;
			maxValue=1;
			angle0=0;
			angle1=2.9670601;
		};
		class wheel_1_1_destruct
		{
			type="hide";
			source="HitLFWheel";
			selection="wheel_1_1";
			minValue = 0;
			maxValue = 1;
			minPhase = 0;
			maxPhase = 1;
			hideValue = 0.990000;
		};
		class wheel_1_2_destruct
		{
			type="hide";
			source="HitLBWheel";
			selection="wheel_1_2";
			minValue = 0;
			maxValue = 1;
			minPhase = 0;
			maxPhase = 1;
			hideValue = 0.990000;
		};
		class wheel_2_1_destruct
		{
			type="hide";
			source="HitRFWheel";
			selection="wheel_2_1";
			minValue = 0;
			maxValue = 1;
			minPhase = 0;
			maxPhase = 1;
			hideValue = 0.990000;
		};
		class wheel_2_2_destruct
		{
			type="hide";
			source="HitRBWheel";
			selection="wheel_2_2";
			minValue = 0;
			maxValue = 1;
			minPhase = 0;
			maxPhase = 1;
			hideValue = 0.990000;
		};
		class wheel_1_1_destruct_unhide
		{
			type="hide";
			source="HitLFWheel";
			SourceAddress = "mirror";
			selection="wheel_1_1_unhide";
			minValue = -1;
			maxValue = 0;
			minPhase = -1;
			maxPhase = 0;
			hideValue = 0.010000;
		};
		class wheel_1_2_destruct_unhide
		{
			type="hide";
			source="HitLBWheel";
			selection="wheel_1_2_unhide";
			minValue = -1;
			maxValue = 0;
			SourceAddress = "mirror";
			hideValue = 0.010000;
		};
		class wheel_2_1_destruct_unhide
		{
			type="hide";
			source="HitRFWheel";
			selection="wheel_2_1_unhide";
			minValue = -1;
			maxValue = 0;
			SourceAddress = "mirror";
			hideValue = 0.010000;
		};
		class wheel_2_2_destruct_unhide
		{
			type="hide";
			source="HitRBWheel";
			selection="wheel_2_2_unhide";
			minValue = -1;
			maxValue = 0;
			SourceAddress = "mirror";
			hideValue = 0.010000;
		};
		class DrivingWheel
		{
			type="rotation";
			source="drivingWheel";
			selection="volant";
			begin="osaVolantZac";
			end="osaVolantKon";
			memory="false";
			animPeriod=0;
			minValue=-1;
			maxValue=1;
			angle0=-8;
			angle1=8;
		};
		class TurnFR
		{
			type="rotationY";
			source="drivingWheel";
			selection="wheel_2_1 zatoc";
			axis="wheel_2_1";
			memory="false";
			animPeriod=0;
			sourceAddress="loop";
			minValue="rad -180";
			maxValue="rad +180";
			angle0="rad +90";
			angle1="rad -90";
		};
		class TurnFL: TurnFR
		{
			selection="wheel_1_1 zatoc";
			axis="wheel_1_1";
		};
		class TurnFR2: TurnFR
		{
			selection="pravy dalsi zatoc ";
			axis="pravy dalsi";
		};
		class TurnFL2: TurnFR
		{
			selection="levy dalsi zatoc ";
			axis="levy dalsi";
		};
		class FR
		{
			type="rotationX";
			source="wheel";
			selection="wheel_2_1";
			axis="";
			memory="true";
			animPeriod=0;
			sourceAddress="loop";
			minValue=0;
			maxValue=1;
			angle0=0;
			angle1="rad -360";
		};
		class FR2: FR
		{
			selection="pravy dalsi";
		};
		class RR: FR
		{
			selection="wheel_2_2";
		};
		class RR2: FR
		{
			selection="pravy prostredni";
		};
		class FL: FR
		{
			selection="wheel_1_1";
		};
		class FL2: FR
		{
			selection="levy dalsi";
		};
		class RL: FR
		{
			selection="wheel_1_2";
		};
		class RL2: FR
		{
			selection="levy prostredni";
		};
		class DamperFR
		{
			type="translationY";
			source="damper";
			selection="wheel_2_1 tlumic";
			axis="";
			animPeriod=0;
			minValue=-1000;
			maxValue=1000;
		};
		class DamperFR2: DamperFR
		{
			selection="pravy dalsi tlumic";
		};
		class DamperRR: DamperFR
		{
			selection="wheel_2_2 tlumic";
		};
		class DamperRR2: DamperFR
		{
			selection="pravy prostredni tlumic";
		};
		class DamperFL: DamperFR
		{
			selection="wheel_1_1 tlumic";
		};
		class DamperFL2: DamperFR
		{
			selection="levy dalsi tlumic";
		};
		class DamperRL: DamperFR
		{
			selection="wheel_1_2 tlumic";
		};
		class DamperRL2: DamperFR
		{
			selection="levy prostredni tlumic";
		};
		class damageVez: damageHide
		{
			selection="damageVez";
		};
		class damageHlaven: damageHide
		{
			selection="damageHlaven";
		};
	};
};
};

Share this post


Link to post
Share on other sites

;)

Great fun Sakura_Chan.

Only thing is missing is the smoke :p even the AI drives like a pro.

Share this post


Link to post
Share on other sites

in the wheel class, take every value relating to springs or weight and then either double them or half them. The wheel should either go up or down. once you get it at the height you want start adjusting each number until you find the right balance. Also I believe the boundingbox entry needs to reference a cube matching the dimensions of the wheel, and this box needs to be in the memory lod.

Share this post


Link to post
Share on other sites

Probably unrelated, but is there a way to change the center of mass/gravity as the vehicles seems to act very weird when cornering at high speed and seem to auto correct themselves a little to aggressively making them feel unnatural. This may currently be on purpose by Bohemia to make it more player friendly and until they get some more physics encoding in place, but I'm not 100% sure.

Share this post


Link to post
Share on other sites

seems every vehicle i put in game, the wheels wont touch the ground. i can get em close but never all the way

Share this post


Link to post
Share on other sites

for floatting wheels , change damping rate or maxdrop or suspTravelDirection[] = {0, 1, 0}; i don't remember and it's ok !!

Share this post


Link to post
Share on other sites
for floatting wheels , change damping rate or maxdrop or suspTravelDirection[] = {0, 1, 0}; i don't remember and it's ok !!

ive tried everything

Share this post


Link to post
Share on other sites

basic engine stuff

	maxSpeed = 320;	 max speed on level road, km/h. Does NOT change the acceleration, it is just a speed limiter like on a real car
	enginePower = 100;  Not hp, doesn't seem to affect anything
	maxOmega = 900; Horsepower (maybe torque) I assume ft/lb but it could be NM or KW
	peakTorque = 1300; Max torque again could be ft/lb or NM
	idleRpm = 900; Idle RPM
	redRpm = 3500; Max RPM
	torqueCurve[] = {{0.0, 0.0}, {0.25, 0.65}, {0.3, 0.8}, {0.5, 0.95}, {0.7, 1.0}, {0.8, 0.9}, {0.9, 0.8}, {1.0, 0.5}}; the first number indicates the percentile of the curve, and the second
                    the torque value at that percentile. Could be used to make a vehicle with instant power (supercharger), or have it really sloppy down low and then pick up at higher revs (turbo)
	clutchStrength = 200.0; 1 of many clutch variables.

Did some looking into the config values described in the Arma 3 Cars Config Guidelines last night and came to some conclusions about the meaning of some of the above.

enginePower is in kW - having compared config values for BIS vehicles with their real-life equivalents the numbers appear to match provided kW ratings for these vehicles. Conversion factor from HP to kW is 0.745699872

maxOmega is the maximum Angular Velocity (ω) that the engine can achieve (in rads/s). It is used in characterising the Power/Torque relationship, alongside the enginePower and peakTorque values in the config. As explained in the link above, in a perfectly efficient system P = τω, i.e. Power (in W) = Torque (in Nm) * Angular Velocity (in rads/s).

peakTorque would logically be in Nm if the above values are in kW and rads/s and pretty much everything else in the game is in metric/SI units rather than US/imperial. Conversion factor from ft-lb to Nm is 1.35581795

RPM is related to the Angular Velocity since RPM = 60*f (f = Rotational Frequency in Hz = ω/[2*Pi]) so RPM = 60*(ω/[2*Pi]).

Hence maxOmega can probably be used to indicate redRPM assuming the driver is allowed to rev all the way up to the engine's maximum output (no rev limiter), or if you want some levelling-off of power towards the red-line, by setting it above the max Angular Velocity capability of the engine.

Edited by da12thMonkey
edited equation to use correct SI units
  • Like 1

Share this post


Link to post
Share on other sites

Whenever I create a new config.cpp, paste the code, save it, and pbo it, and then put it in as an addon, It gives me an error saying A3_Soft_Offroad_Saku requires A3_Soft_Offroad(Or something), could I please have some help?

Share this post


Link to post
Share on other sites
could I please have some help?

Sorry, that was based on the Alpha offroad vehicle, its class name has changed since then. It might not work anymore as it inherits from a different class too.

class Offroad_01_base;

class C_Offroad_01_F: Offroad_01_base

has anyone made a perfectly working car yet?

Share this post


Link to post
Share on other sites

Hi only unbinarised possible for me so far , if binarise with 2x geo game crash so I guess wait only answer

Share this post


Link to post
Share on other sites

Does anyone have any ideas on getting TankX to work properly?

Share this post


Link to post
Share on other sites
Hi only unbinarised possible for me so far , if binarise with 2x geo game crash so I guess wait only answer

Yes, it's understood that BIS will need to release a new version of BinPBO (and possibly O2) in order for addonmakers to be able to process the new PhysX LODs during binarisation. The same is true among a couple other new features that have been introduced for Arma 3 models (some new model.cfg parameters etc.).

You either have to leave the models in MLOD format or wait for the new tools.

Share this post


Link to post
Share on other sites

While scavenging through the new configs for the vehicles I found some lines in the biwiki were either missing, not understandable or fully explained.

At first I planned to make a new thread, but here it should fit aswell.

So I thought about posting this so we get as many interested people together to lift some of those mysteries. Maybe some of the BI Dev's might add a line or two as well :P

Lets start then.

(First quote is out of the wiki, second from Sakura_chan.)

maxOmega.

BiWiki:

<Type>: float

<Default>: 600 which is cca 6000 rounds per minute.

maxOmega = 600;

maxOmega = 900; Horsepower (maybe torque) I assume ft/lb but it could be NM or KW

That's all pretty vague. The idea from Sakura seems not very helpful at this point, because both values (ft/lb or kW) are totally different.

At the other end, the info out of the wiki isn't very helpful either. It just stated that the float value is 1/10 of a RPM value.

I personally don't know what this value means, but I always set a bit higher then "peakTorque=". So it COULD be a value of torque...

gearUpMaxCoef = 0.9;

gearUpMinCoef = 0.7;

gearDownMaxCoef = 0.75;

gearDownMinCoef = 0.7;

BiWiki has no explanation.

possibly to do with shift points /light throttle

I thought the same as Sakura. gearUpMaxCoef defines that the gearbox will change one gear up at a maximum RPM of 90% redline-RPM. gearUpMinCoef defines that the gearbox will change one gear up when a minimum minimun of RPM of 70% redline-RPM is reached. Viceversa explanation for gearDownMax/MinCoef.

BUT I made the expierience that those values won't change very much of the gearbox situation. I didn't test those values with extreme numbers, but will do that later.

dampingRateFullThrottle = 0.08;

dampingRateZeroThrottleClutchEngaged = 2.0;

dampingRateZeroThrottleClutchDisengaged = 0.35;

Explanation is totally missing, and I have no clue as well what those numbers mean. It could be values calculating the force and movement of the car. Like if you start to drive off, you will get pressed into your seats. But I have no clue if this is true....

frictionVsSlipGraph[] = {{0, 1}, {0.5, 1.0}, {1, 1}};

BiWiki has no explanation.

Very important. This controls the traction of the tire. first number is friction and the second is slip

I still don't understand how those values correlate with each other. Is the value 1.0 full friction/slip? what is the graph based on? kp/h and ....?

Share this post


Link to post
Share on other sites
maxOmega.

That's all pretty vague. The idea from Sakura seems not very helpful at this point, because both values (ft/lb or kW) are totally different.

At the other end, the info out of the wiki isn't very helpful either. It just stated that the float value is 1/10 of a RPM value.

I personally don't know what this value means, but I always set a bit higher then "peakTorque=". So it COULD be a value of torque...

As I posted on the previous page, maxOmega appears to be the maximum angular velocity that the engine can output to the drive line, as understood from the relationship between the power and torque parameters: Power (in W) = Torque (in Nm) * Angular Velocity (in rads/s) (P = τω, ω is the Greek letter Omega). As such, it has a relationship to engine RPM.

frictionVsSlipGraph[] = {{0, 1}, {0.5, 1.0}, {1, 1}};

BiWiki has no explanation.

I still don't understand how those values correlate with each other. Is the value 1.0 full friction/slip? what is the graph based on? kp/h and ....?

Friction/slip curves normally plot tyre-road friction coefficient against "slip ratio" which is a percentage of the wheel's velocity as it stops rotating, against the velocity of the vehicle under braking inertia.

E.g:

http://origin-ars.els-cdn.com/content/image/1-s2.0-S1569190X11001237-gr3.jpg

Not sure what curve the game would generate from the config sample you've pasted though, since all the friction coeffs seem to be 1.

Edited by da12thMonkey
edited equation to use correct SI units

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

×