BdMdesigN 3 Posted March 28, 2021 (edited) 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 May 26, 2021 by BdMdesigN Edit Titel 1 Share this post Link to post Share on other sites
BdMdesigN 3 Posted March 29, 2021 Added the readme-exile.txt in Startpost Share this post Link to post Share on other sites
BdMdesigN 3 Posted May 1, 2021 Mod was updated to V. 0.0.3 and Startpost was updated , too Share this post Link to post Share on other sites
BdMdesigN 3 Posted May 1, 2021 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
BdMdesigN 3 Posted May 26, 2021 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