Jump to content
BdMdesigN

Heli Pods Mod for Mods

Recommended Posts

I have write a little Mod. 

This Mod will change the Classes from the Taru and Huron Pods.

So you can lock/unlock in Exile Mod the Pods, do Paintjobs, changing Pins and you can sell the inventory from the Pods direct at the Traders and WasteDump.


I have rebuild the Mod and i have create a new child class under the "AllVehicles" class.

This class is the class "Pod".
The class "Pod" is a light Clone from the "Air" class.

The new Classtree are:

AllVehicles >> 

Pod >>

    Heli_Pods >>
       Heli_Pods_Base_F >>
            Heli_Pods_Base_H >>
                 Heli_Pods_Transport_01_Base_F >>
                         Land_Heli_Pods_Transport_01_Ammo_F
                         Land_Heli_Pods_Transport_01_Cargo_F
                         Land_Heli_Pods_Transport_01_Fuel_F
                         Land_Heli_Pods_Transport_01_Medevac_F
                         Land_Heli_Pods_Transport_01_Repair_F
                 
                 Heli_Pods_Transport_04_crewed_base_F >>
                           Land_Heli_Pods_Transport_04_bench_base_F >>
                                     Land_Heli_Pods_Transport_04_bench_F >>
                                              Land_Heli_Pods_Transport_04_bench_black_F
                           Land_Heli_Pods_Transport_04_covered_base_F >>
                                     Land_Heli_Pods_Transport_04_covered_F >>
                                              Land_Heli_Pods_Transport_04_covered_black_F
                           Land_Heli_Pods_Transport_04_medevac_base_F >>
                                     Land_Heli_Pods_Transport_04_medevac_F >>
                                              Land_Heli_Pods_Transport_04_medevac_black_F
                               
                 Heli_Pods_Transport_04_base_F >>
                         Land_Heli_Pods_Transport_04_ammo_base_F >>
                                   Land_Heli_Pods_Transport_04_ammo_F >>
                                            Land_Heli_Pods_Transport_04_ammo_black_F
                         Land_Heli_Pods_Transport_04_box_base_F >>
                                   Land_Heli_Pods_Transport_04_box_F >>
                                            Land_Heli_Pods_Transport_04_box_black_F
                         Land_Heli_Pods_Transport_04_fuel_base_F >>
                                   Land_Heli_Pods_Transport_04_fuel_F >>
                                            Land_Heli_Pods_Transport_04_fuel_black_F
                         Land_Heli_Pods_Transport_04_repair_base_F >>
                                   Land_Heli_Pods_Transport_04_repair_F >>
                                            Land_Heli_Pods_Transport_04_repair_black_F

In Editor the Huronpods are now in BLUFOR --> NATO --> Storage
The Tarupods are in OPFOR --> CSAT --> Storage (Bench, Medical & Transport) and in OPFOR --> Supplies --> Storage (Ammo, Cargo, Fuel & Repair)

Read the readme-exile.txt for the needed changes or the following Spoiler.

 

1. Open in your Missionfile the config file or the file where your Interaction Menus are and add in "class CfgInteractionMenus" after 

Spoiler

	class Air
	{
		target = "Air";
		targetType = 2;

		class Actions
		{
			class ScanLock: ExileAbstractAction
			{
				title = "Scan Lock";
				condition = "('Exile_Item_ThermalScannerPro' in (magazines player)) && ((locked ExileClientInteractionObject) != 1) && !ExilePlayerInSafezone";
				action = "_this call ExileClient_object_lock_scan";
			};

			// Locks a vehicle
			class Lock: ExileAbstractAction
			{
				title = "Lock";
				condition = "((locked ExileClientInteractionObject) isEqualTo 0) && ((locked ExileClientInteractionObject) != 1)";
				action = "true spawn ExileClient_object_lock_toggle";
			};

			// Unlocks a vehicle
			class Unlock: ExileAbstractAction
			{
				title = "Unlock";
				condition = "((locked ExileClientInteractionObject) isEqualTo 2) && ((locked ExileClientInteractionObject) != 1)";
				action = "false spawn ExileClient_object_lock_toggle";
			};

			// Hot-wires a vehicle
			/*class Hotwire: ExileAbstractAction
			{
				title = "Hotwire";
				condition = "((locked ExileClientInteractionObject) isEqualTo 2) && ((locked ExileClientInteractionObject) != 1)";
				action = "['HotwireVehicle', _this select 0] call ExileClient_action_execute";
			};*/

			// Repairs a vehicle to 100%. Requires Duckttape
			class Repair: ExileAbstractAction
			{
				title = "Repair";
				condition = "true";
				action = "['RepairVehicle', _this select 0] call ExileClient_action_execute";
			};

			// Flips a vehicle so the player doesnt have to call an admin
			// Check if vector up is fucked
			class Flip: ExileAbstractAction
			{
				title = "Flip";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "_this call ExileClient_object_vehicle_flip";
			};

			// Fills fuel from a can into a car
			class Refuel: ExileAbstractAction
			{
				title = "Refuel";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "_this call ExileClient_object_vehicle_refuel";
			};

			// Drains fuel from a car into an empty jerry can
			class DrainFuel: ExileAbstractAction
			{
				title = "Drain Fuel";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "_this call ExileClient_object_vehicle_drain";
			};

			class RotateLeft: ExileAbstractAction
			{
				title = "Rotate Left";	
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "[ExileClientInteractionObject,-15] call ExileClient_object_vehicle_rotate";
			};

			class RotateRight: ExileAbstractAction
			{
				title = "Rotate Right";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "[ExileClientInteractionObject,15] call ExileClient_object_vehicle_rotate";
			};
		};
	};

 

 

the following lines:

Spoiler

	class Pod
	{
		targetType = 2;
		target = "Pod";

		class Actions 
		{
			class ScanLock: ExileAbstractAction
			{
				title = "Scan Lock";
				condition = "('Exile_Item_ThermalScannerPro' in (magazines player)) && !ExilePlayerInSafezone && ((locked ExileClientInteractionObject) != 1)";
				action = "_this call ExileClient_object_lock_scan";
			};

			// Locks a vehicle
			class Lock: ExileAbstractAction
			{
				title = "Lock";
				condition = "((locked ExileClientInteractionObject) isEqualTo 0) && ((locked ExileClientInteractionObject) != 1)";
				action = "true spawn ExileClient_object_lock_toggle";
			};

			// Unlocks a vehicle
			class Unlock: ExileAbstractAction
			{
				title = "Unlock";
				condition = "((locked ExileClientInteractionObject) isEqualTo 2) && ((locked ExileClientInteractionObject) != 1)";
				action = "false spawn ExileClient_object_lock_toggle";
			};

			// Repairs a vehicle to 100%. Requires Duckttape
			class Repair: ExileAbstractAction
			{
				title = "Repair";
				condition = "true";
				action = "['RepairVehicle', _this select 0] call ExileClient_action_execute";
			};

			// Hot-wires a vehicle
			class Hotwire: ExileAbstractAction
			{
				title = "Hotwire";
				condition = "((locked ExileClientInteractionObject) isEqualTo 2) && ((locked ExileClientInteractionObject) != 1)";
				action = "['HotwireVehicle', _this select 0] call ExileClient_action_execute";
			};

			// Flips a vehicle so the player doesnt have to call an admin
			// Check if vector up is fucked
			class Flip: ExileAbstractAction
			{
				title = "Flip";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "_this call ExileClient_object_vehicle_flip";
			};

		};
	};

 

 

so it should look like this:

Spoiler

	class Air
	{
		target = "Air";
		targetType = 2;

		class Actions
		{
			class ScanLock: ExileAbstractAction
			{
				title = "Scan Lock";
				condition = "('Exile_Item_ThermalScannerPro' in (magazines player)) && ((locked ExileClientInteractionObject) != 1) && !ExilePlayerInSafezone";
				action = "_this call ExileClient_object_lock_scan";
			};

			// Locks a vehicle
			class Lock: ExileAbstractAction
			{
				title = "Lock";
				condition = "((locked ExileClientInteractionObject) isEqualTo 0) && ((locked ExileClientInteractionObject) != 1)";
				action = "true spawn ExileClient_object_lock_toggle";
			};

			// Unlocks a vehicle
			class Unlock: ExileAbstractAction
			{
				title = "Unlock";
				condition = "((locked ExileClientInteractionObject) isEqualTo 2) && ((locked ExileClientInteractionObject) != 1)";
				action = "false spawn ExileClient_object_lock_toggle";
			};

			// Hot-wires a vehicle
			class Hotwire: ExileAbstractAction
			{
				title = "Hotwire";
				condition = "((locked ExileClientInteractionObject) isEqualTo 2) && ((locked ExileClientInteractionObject) != 1)";
				action = "['HotwireVehicle', _this select 0] call ExileClient_action_execute";
			};

			// Repairs a vehicle to 100%. Requires Duckttape
			class Repair: ExileAbstractAction
			{
				title = "Repair";
				condition = "true";
				action = "['RepairVehicle', _this select 0] call ExileClient_action_execute";
			};

			// Flips a vehicle so the player doesnt have to call an admin
			// Check if vector up is fucked
			class Flip: ExileAbstractAction
			{
				title = "Flip";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "_this call ExileClient_object_vehicle_flip";
			};

			// Fills fuel from a can into a car
			class Refuel: ExileAbstractAction
			{
				title = "Refuel";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "_this call ExileClient_object_vehicle_refuel";
			};

			// Drains fuel from a car into an empty jerry can
			class DrainFuel: ExileAbstractAction
			{
				title = "Drain Fuel";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "_this call ExileClient_object_vehicle_drain";
			};

			class RotateLeft: ExileAbstractAction
			{
				title = "Rotate Left";	
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "[ExileClientInteractionObject,-15] call ExileClient_object_vehicle_rotate";
			};

			class RotateRight: ExileAbstractAction
			{
				title = "Rotate Right";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "[ExileClientInteractionObject,15] call ExileClient_object_vehicle_rotate";
			};
		};
	};

	class Pod
	{
		targetType = 2;
		target = "Pod";

		class Actions 
		{
			class ScanLock: ExileAbstractAction
			{
				title = "Scan Lock";
				condition = "('Exile_Item_ThermalScannerPro' in (magazines player)) && !ExilePlayerInSafezone && ((locked ExileClientInteractionObject) != 1)";
				action = "_this call ExileClient_object_lock_scan";
			};

			// Locks a vehicle
			class Lock: ExileAbstractAction
			{
				title = "Lock";
				condition = "((locked ExileClientInteractionObject) isEqualTo 0) && ((locked ExileClientInteractionObject) != 1)";
				action = "true spawn ExileClient_object_lock_toggle";
			};

			// Unlocks a vehicle
			class Unlock: ExileAbstractAction
			{
				title = "Unlock";
				condition = "((locked ExileClientInteractionObject) isEqualTo 2) && ((locked ExileClientInteractionObject) != 1)";
				action = "false spawn ExileClient_object_lock_toggle";
			};

			// Repairs a vehicle to 100%. Requires Duckttape
			class Repair: ExileAbstractAction
			{
				title = "Repair";
				condition = "true";
				action = "['RepairVehicle', _this select 0] call ExileClient_action_execute";
			};

			// Hot-wires a vehicle
			class Hotwire: ExileAbstractAction
			{
				title = "Hotwire";
				condition = "((locked ExileClientInteractionObject) isEqualTo 2) && ((locked ExileClientInteractionObject) != 1)";
				action = "['HotwireVehicle', _this select 0] call ExileClient_action_execute";
			};

			// Flips a vehicle so the player doesnt have to call an admin
			// Check if vector up is fucked
			class Flip: ExileAbstractAction
			{
				title = "Flip";
				condition = "call ExileClient_object_vehicle_interaction_show";
				action = "_this call ExileClient_object_vehicle_flip";
			};

		};
	};

	class Safe
	{
		targetType = 2;
		target = "Exile_Container_Abstract_Safe";

		class Actions 
		{
			class ScanLock: ExileAbstractAction
			{
				title = "Scan Lock";
				condition = "('Exile_Item_ThermalScannerPro' in (magazines player)) && !((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo 1) && !ExilePlayerInSafezone";
				action = "_this call ExileClient_object_lock_scan";
			};

			// Locks a vehicle
			class Lock : ExileAbstractAction
			{
				title = "Lock";
				condition = "((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo 0)";
				action = "true spawn ExileClient_object_lock_toggle";
			};

			class Unlock : ExileAbstractAction
			{
				title = "Unlock";
				condition = "((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo -1)";
				action = "false spawn ExileClient_object_lock_toggle";
			};

			class Pack : ExileAbstractAction
			{
				title = "Pack";
				condition = "((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo 0)";
				action = "_this spawn ExileClient_object_container_pack";
			};

			class SetPinCode : ExileAbstractAction
			{
				title = "Set PIN";
				condition = "((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo 0)";
				action = "_this spawn ExileClient_object_lock_setPin";
			};
			
			class HackLock: ExileAbstractAction
			{
				title = "Hack Lock";
				condition = "(getNumber(missionConfigFile >> 'CfgHacking' >> 'enableHacking') isEqualTo 1) && ('Exile_Item_Laptop' in (magazines player)) && ((ExileClientInteractionObject getvariable ['ExileIsLocked',1]) isEqualTo -1) && !ExilePlayerInSafezone";
				action = "['HackLock', _this select 0] call ExileClient_action_execute";
			};
		};
	};

 

 

2. Now add in your mpmission config file in "class CfgExileCustomCode" the following lines:

Spoiler

	// Pod overwrites. We need this to make the Pod class available
	ExileClient_gui_vehicleCustomsDialog_show = "Custom\overwrites\ExileClient_gui_vehicleCustomsDialog_show.sqf";
	ExileClient_gui_vehicleRekeyDialog_show = "Custom\overwrites\ExileClient_gui_vehicleRekeyDialog_show.sqf";
	ExileClient_gui_traderDialog_updateInventoryDropdown = "Custom\overwrites\ExileClient_gui_traderDialog_updateInventoryDropdown.sqf";
	ExileClient_gui_wasteDumpDialog_show = "Custom\overwrites\ExileClient_gui_wasteDumpDialog_show.sqf";
	ExileClient_system_trading_network_purchaseVehicleResponse = "Custom\overwrites\ExileClient_system_trading_network_purchaseVehicleResponse.sqf";

 

 

3. Go in the config file to the class "CfgVehicleCustoms" and add after:

Spoiler

	///////////////////////////////////////////////////////////////////////////////
	// Taru (Covered)
	///////////////////////////////////////////////////////////////////////////////
	class Exile_Chopper_Taru_Covered_Abstract
	{
		skins[] =
		{
			{"Exile_Chopper_Taru_Covered_CSAT",		500, "CSAT",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_base_01_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_base_02_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_CO.paa"}},
			{"Exile_Chopper_Taru_Covered_Black",	500, "Black",	{"A3\Air_F_Heli\Heli_Transport_04\Data\heli_transport_04_base_01_black_co.paa","A3\Air_F_Heli\Heli_Transport_04\Data\heli_transport_04_base_02_black_co.paa","A3\Air_F_Heli\Heli_Transport_04\Data\heli_transport_04_pod_ext01_black_co.paa","A3\Air_F_Heli\Heli_Transport_04\Data\heli_transport_04_pod_ext02_black_co.paa"}}
		};
	};

 

 

the following lines:

Spoiler

  
  ///////////////////////////////////////////////////////////////////////////////
	// Taru  Pod (Ammo)
	///////////////////////////////////////////////////////////////////////////////
	class Land_Heli_Pods_Transport_04_ammo_base_F
	{
		skins[] =
		{
			{"Land_Heli_Pods_Transport_04_ammo_F",		500, "CSAT",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_CO.paa"}},
			{"Land_Heli_Pods_Transport_04_ammo_black_F",	500, "Black",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_Black_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_Black_CO.paa"}}
		};
	};
        
    ///////////////////////////////////////////////////////////////////////////////
	// Taru  Pod (Bench)
	///////////////////////////////////////////////////////////////////////////////
	class Land_Heli_Pods_Transport_04_bench_base_F
	{
		skins[] =
		{
			{"Land_Heli_Pods_Transport_04_bench_F",		500, "CSAT",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_bench_CO.paa"}},
			{"Land_Heli_Pods_Transport_04_bench_black_F",	500, "Black",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_bench_Black_CO.paa"}}
		};
	};
        
    ///////////////////////////////////////////////////////////////////////////////
	// Taru  Pod (Box)
	///////////////////////////////////////////////////////////////////////////////
	class Land_Heli_Pods_Transport_04_box_base_F
	{
		skins[] =
		{
			{"Land_Heli_Pods_Transport_04_box_F",		500, "CSAT",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_CO.paa"}},
			{"Land_Heli_Pods_Transport_04_box_black_F",	500, "Black",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_Black_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_Black_CO.paa"}}
		};
	};

    ///////////////////////////////////////////////////////////////////////////////
	// Taru  Pod (Covered)
	///////////////////////////////////////////////////////////////////////////////
	class Land_Heli_Pods_Transport_04_covered_base_F
	{
		skins[] =
		{
			{"Land_Heli_Pods_Transport_04_covered_F",		500, "CSAT",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_CO.paa"}},
			{"Land_Heli_Pods_Transport_04_covered_black_F",	500, "Black",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_Black_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_Black_CO.paa"}}
		};
	};
 
    ///////////////////////////////////////////////////////////////////////////////
	// Taru  Pod (Fuel)
	///////////////////////////////////////////////////////////////////////////////
	class Land_Heli_Pods_Transport_04_fuel_base_F
	{
		skins[] =
		{
			{"Land_Heli_Pods_Transport_04_fuel_F",		500, "CSAT",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_fuel_CO.paa"}},
			{"Land_Heli_Pods_Transport_04_fuel_black_F",	500, "Black",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_fuel_black_CO.paa"}}
		};
	};

    ///////////////////////////////////////////////////////////////////////////////
	// Taru  Pod (Medic)
	///////////////////////////////////////////////////////////////////////////////
	class Land_Heli_Pods_Transport_04_medevac_base_F
	{
		skins[] =
		{
			{"Land_Heli_Pods_Transport_04_medevac_F",		500, "CSAT",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_CO.paa"}},
			{"Land_Heli_Pods_Transport_04_medevac_black_F",	500, "Black",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_Black_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_Black_CO.paa"}}
		};
	};

    ///////////////////////////////////////////////////////////////////////////////
	// Taru  Pod (Repair)
	///////////////////////////////////////////////////////////////////////////////
	class Land_Heli_Pods_Transport_04_repair_base_F
	{
		skins[] =
		{
			{"Land_Heli_Pods_Transport_04_repair_F",		500, "CSAT",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_CO.paa"}},
			{"Land_Heli_Pods_Transport_04_repair_black_F",	500, "Black",	{"A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext01_Black_CO.paa","A3\Air_F_Heli\Heli_Transport_04\Data\Heli_Transport_04_Pod_Ext02_Black_CO.paa"}}
		};
	}; 
    

 

 

4. If you are done in the config file, you must copy the Custom folder from "mpmission_overwrites" in your mpmission root folder.


Mod is from me aka LinuxGamesTV aka FastFireGames

Known Bugs:

nothing

 

The Mod can grabbed on Steam Workshop:

 

https://steamcommunity.com/sharedfiles/filedetails/?id=2439083963

 

A Video (German speaking):

 

 

Edited by BdMdesigN
Edit Titel
  • Thanks 1

Share this post


Link to post
Share on other sites

Mod was updated to V. 0.0.3 and Startpost was updated , too

Share this post


Link to post
Share on other sites

If you use the Virtual Garage on your Server and want to store the Pods in the Garage, then you should chnage this Line in the class CfgVirtualGarage in your mpmission config file:

     allowedVehicleTypes[] = {"Car","Tank","Plane","Air","Ship","Submarine"};

to:

     allowedVehicleTypes[] = {"Car","Tank","Plane","Air","Pod","Ship","Submarine"};

Share this post


Link to post
Share on other sites

0.0.4:

Fixed Game/Server crashes:
If you drop/release the Pods in high the game/server chrash.

The Tarupods are in EdenEditor now all in OPFOR --> CSAT --> Storage.

The Pods are like a Car now, if you Slingload it. Maybe this will fix the Advanced Flight Systems problem

Share this post


Link to post
Share on other sites

×