Mattastic 97 Posted April 7, 2015 I'm looking for a solution to fix modded vehicles not being listed as an option in Virtual Garage. Some of my own modded Helicopters, well all except one, are not showing up in Virtual Garage. My problem is specifically related to the Helicopters in my own mod, but if you know of any other config related updates that need to be done for the Marksman DLC please share your findings. I did a bit of searching and did not find any thread on this topic. If there is one I apologize and would ask to be pointed to it.:cool: Share this post Link to post Share on other sites
Jackal326 1181 Posted April 7, 2015 My guess is you might need to add scopeArsenal=2; to the config of each chopper, but that is a wild stab in the dark. FYI: HERE may have been a better place to post as its config related. Share this post Link to post Share on other sites
Mattastic 97 Posted April 8, 2015 Thanks I Will give that a shot. That is a much better place for the thread, if a Moderator would move this thread that would be great. Share this post Link to post Share on other sites
Mattastic 97 Posted April 9, 2015 Found what i'm looking for. Share this post Link to post Share on other sites
Jackal326 1181 Posted April 9, 2015 Found what i'm looking for. Glad to hear it. Mind posting it here in the event someone else is having the same issue and hasn't found the info for themselves? Share this post Link to post Share on other sites
SpaceNavy 16 Posted April 9, 2015 Found what i'm looking for. Share your findings! :) Share this post Link to post Share on other sites
Mattastic 97 Posted April 9, 2015 (edited) ****CONFIRMED BREAKTHROUGH - Try "forceInGarage=1;" in your mods vehicle class. Well I thought I found what I was looking for. I'm still having some trouble, but I am mainly looking over the latest updates to the Vehicle Customization community wiki page HERE. Also, the updates to the configs for the sample test vehicles are also something I am looking over, I'll show the car one below since the heli seems to not have had any updates to it with the release of the DLC. #include "basicdefines_A3.hpp" class DefaultEventhandlers; #include "CfgPatches.hpp" class WeaponFireGun; class WeaponCloudsGun; class WeaponFireMGun; class WeaponCloudsMGun; class CfgVehicles { class Car; class Car_F: Car { class HitPoints /// we want to use hitpoints predefined for all cars { class HitLFWheel; class HitLF2Wheel; class HitRFWheel; class HitRF2Wheel; class HitBody; class HitGlass1; class HitGlass2; class HitGlass3; class HitGlass4; }; class EventHandlers; }; class Test_Car_01_base_F: Car_F { model = "\Samples_f\Test_Car_01\Test_Car_01"; /// simple path to model picture = "\A3\Weapons_F\Data\placeholder_co.paa"; /// just some icon in command bar Icon = "\A3\Weapons_F\Data\placeholder_co.paa"; /// icon in map displayName = "Test Car"; /// displayed in Editor hiddenSelections[] = {"camo1"}; ///we want to allow changing the color of this selection terrainCoef = 6.5; /// different surface affects this car more, stick to tarmac turnCoef = 2.5; /// should match the wheel turn radius precision = 10; /// how much freedom has the AI for its internal waypoints - lower number means more precise but slower approach to way brakeDistance = 3.0; /// how many internal waypoints should the AI plan braking in advance acceleration = 15; /// how fast acceleration does the AI think the car has fireResistance = 5; /// lesser protection against fire than tanks armor = 32; /// just some protection against missiles, collisions and explosions cost = 50000; /// how likely is the enemy going to target this vehicle transportMaxBackpacks = 3; /// just some backpacks fit the trunk by default transportSoldier = 3; /// number of cargo except driver /// some values from parent class to show how to set them up wheelDamageRadiusCoef = 0.9; /// for precision tweaking of damaged wheel size wheelDestroyRadiusCoef = 0.4; /// for tweaking of rims size to fit ground maxFordingDepth = 0.5; /// how high water would damage the engine of the car waterResistance = 1; /// if the depth of water is bigger than maxFordingDepth it starts to damage the engine after this time crewCrashProtection = 0.25; /// multiplier of damage to crew of the vehicle => low number means better protection driverLeftHandAnimName = "drivewheel"; /// according to what bone in model of car does hand move driverRightHandAnimName = "drivewheel"; /// beware, non-existent bones may cause game crashes (even if the bones are hidden during play) class TransportItems /// some first aid kits in trunk according to safety regulations { item_xx(FirstAidKit,4); }; class Turrets{}; /// doesn't have any gunner nor commander class HitPoints: HitPoints { class HitLFWheel: HitLFWheel {armor=0.125; passThrough=0;}; /// it is easier to destroy wheels than hull of the vehicle class HitLF2Wheel: HitLF2Wheel {armor=0.125; passThrough=0;}; class HitRFWheel: HitRFWheel {armor=0.125; passThrough=0;}; class HitRF2Wheel: HitRF2Wheel {armor=0.125; passThrough=0;}; class HitFuel {armor=0.50; material=-1; name="fueltank"; visual=""; passThrough=0.2;}; /// correct points for fuel tank, some of the damage is aFRLied to the whole class HitEngine {armor=0.50; material=-1; name="engine"; visual=""; passThrough=0.2;}; class HitBody: HitBody {name = "body"; visual="camo1"; passThrough=1;}; /// all damage to the hull is aFRLied to total damage class HitGlass1: HitGlass1 {armor=0.25;}; /// it is pretty easy to puncture the glass but not so easy to remove it class HitGlass2: HitGlass2 {armor=0.25;}; class HitGlass3: HitGlass3 {armor=0.25;}; class HitGlass4: HitGlass4 {armor=0.25;}; }; driverAction = driver_offroad01; /// what action is going the driver take inside the vehicle. Non-existent action makes the vehicle inaccessible cargoAction[] = {passenger_low01, passenger_generic01_leanleft, passenger_generic01_foldhands}; /// the same of all the crew getInAction = GetInLow; /// how does driver look while getting in getOutAction = GetOutLow; /// and out cargoGetInAction[] = {"GetInLow"}; /// and the same for the rest, if the array has fewer members than the count of crew, the last one is used for the rest cargoGetOutAction[] = {"GetOutLow"}; /// that means all use the same in this case #include "sounds.hpp" /// sounds are in a separate file to make this one simple #include "pip.hpp" /// PiPs are in a separate file to make this one simple #include "physx.hpp" /// PhysX settings are in a separate file to make this one simple /// memory points where do tracks of the wheel appear // front left track, left offset memoryPointTrackFLL = "TrackFLL"; // front left track, right offset memoryPointTrackFLR = "TrackFLR"; // back left track, left offset memoryPointTrackBLL = "TrackBLL"; // back left track, right offset memoryPointTrackBLR = "TrackBLR"; // front right track, left offset memoryPointTrackFRL = "TrackFRL"; // front right track, right offset memoryPointTrackFRR = "TrackFRR"; // back right track, left offset memoryPointTrackBRL = "TrackBRL"; // back right track, right offset memoryPointTrackBRR = "TrackBRR"; class Damage /// damage changes material in specific places (visual in hitPoint) { tex[]={}; mat[]= { "A3\data_f\glass_veh_int.rvmat", /// material mapped in model "A3\data_f\Glass_veh_damage.rvmat", /// changes to this one once damage of the part reaches 0.5 "A3\data_f\Glass_veh_damage.rvmat", /// changes to this one once damage of the part reaches 1 "A3\data_f\glass_veh.rvmat", /// another material "A3\data_f\Glass_veh_damage.rvmat", /// changes into different ones "A3\data_f\Glass_veh_damage.rvmat" }; }; class Exhausts /// specific exhaust effects for the car { class Exhaust1 /// the car has two exhausts - each on one side { position = "exhaust"; /// name of initial memory point direction = "exhaust_dir"; /// name of memory point for exhaust direction effect = "ExhaustsEffect"; /// what particle effect is it going to use }; class Exhaust2 { position = "exhaust2_pos"; direction = "exhaust2_dir"; effect = "ExhaustsEffect"; }; }; class Reflectors /// only front lights are considered to be reflectors to save CPU { class LightCarHeadL01 /// lights on each side consist of two bulbs with different flares { color[] = {1900, 1800, 1700}; /// approximate colour of standard lights ambient[] = {5, 5, 5}; /// nearly a white one position = "LightCarHeadL01"; /// memory point for start of the light and flare direction = "LightCarHeadL01_end"; /// memory point for the light direction hitpoint = "Light_L"; /// point(s) in hitpoint lod for the light (hitPoints are created by engine) selection = "Light_L"; /// selection for artificial glow around the bulb, not much used any more size = 1; /// size of the light point seen from distance innerAngle = 100; /// angle of full light outerAngle = 179; /// angle of some light coneFadeCoef = 10; /// attenuation of light between the above angles intensity = 1; /// strength of the light useFlare = true; /// does the light use flare? dayLight = false; /// switching light off during day saves CPU a lot flareSize = 1.0; /// how big is the flare class Attenuation { start = 1.0; constant = 0; linear = 0; quadratic = 0.25; hardLimitStart = 30; /// it is good to have some limit otherwise the light would shine to infinite distance hardLimitEnd = 60; /// this allows adding more lights into scene }; }; class LightCarHeadL02: LightCarHeadL01 { position = "LightCarHeadL02"; direction = "LightCarHeadL02_end"; FlareSize = 0.5; /// side bulbs aren't that strong }; class LightCarHeadR01: LightCarHeadL01 { position = "LightCarHeadR01"; direction = "LightCarHeadR01_end"; hitpoint = "Light_R"; selection = "Light_R"; }; class LightCarHeadR02: LightCarHeadR01 { position = "LightCarHeadR02"; direction = "LightCarHeadR02_end"; FlareSize = 0.5; }; }; aggregateReflectors[] = {{"LightCarHeadL01", "LightCarHeadL02"}, {"LightCarHeadR01", "LightCarHeadR02"}}; /// aggregating reflectors helps the engine a lot /// it might be even good to aggregate all lights into one source as it is done for most of the cars class EventHandlers: EventHandlers { // (_this select 0): the vehicle // """" Random texture source (pick one from the property textureList[]) // []: randomize the animation sources (accordingly to the property animationList[]) // false: Don't change the mass even if an animation source has a defined mass init="if (local (_this select 0)) then {[(_this select 0), """", [], false] call bis_fnc_initVehicle;};"; }; // Must be kept as fail-safe in case of issue with the function hiddenSelectionsTextures[]={"\A3\Weapons_F\Data\placeholder_co.paa"}; /// we could use any texture to cover the car // Definition of texture sources (skins), used for the VhC (Vehicle customization) // Also, because the Garage uses the VhC, it will make them available from the garage class textureSources { class red // Source class { displayName="Red"; // name displayed, among other, from the garage author=$STR_A3_Bohemia_Interactive; // Author of the skin textures[]=// List of textures, in the same order as the hiddenSelections definition { "#(rgb,8,8,3)color(1,0,0,1)" // This is procedural texture, can be useful to set placeholder }; factions[]=// This source should be available only for these factions { "OPF_F", "OPF_G_F" // Side Opfor }; }; class blue { displayName="BBBBLue"; author=$STR_A3_Bohemia_Interactive; textures[]= { "#(rgb,8,8,3)color(0,0,1,1)" }; factions[]= { "BLU_F", "BLU_G_F" // Side Blufor }; }; class green { displayName="Green"; author=$STR_A3_Bohemia_Interactive; textures[]= { "#(rgb,8,8,3)color(0,1,0,1)" }; factions[]= { "IND_F", "IND_G_F" // Side independent }; }; class yellow { displayName="Yellow power"; author=$STR_A3_Bohemia_Interactive; textures[]= { "#(rgb,8,8,3)color(0,1,0,1)" }; factions[]= { // Guerilla only "BLU_G_F", "OPF_G_F", "IND_G_F" }; }; class white { displayName="White is white"; author="Another name"; textures[]= { "#(rgb,8,8,3)color(1,1,1,1)" }; factions[]= { "CIV_F" // side civilian }; }; class black { displayName="Dark side"; author="Tom_48_97"; textures[]= { "#(rgb,8,8,3)color(0,0,0,1)" }; factions[]= {}; // Should be available for every factions }; }; // [_textureSourceClass1, _probability1, _textureSourceClass2, _probability2, ...] // Default behavior of the VhC is to select one of these sources, with a weighted random textureList[]= { "red", 1, "green", __EVAL(1/3), // You can also use EVAL to evaluate an expression "blue", 1, "black", 1 // You can noticed that the white source is missing, therefore, it won't be part of the random }; }; class Test_Car_Alt_base_F: Test_Car_01_base_F { hiddenSelections[] = {"camo1","camo2","camo3"}; ///we want to allow changing the color of this selection hiddenSelectionsTextures[]= { "#(rgb,8,8,3)color(1,0,0,1)", "#(rgb,8,8,3)color(0,1,0,1)", "#(rgb,8,8,3)color(0,0,1,1)" }; class textureSources { class RedGreenBlue { displayname="Red Green Blue"; author="You don't want to know"; textures[]= { "#(rgb,8,8,3)color(1,0,0,1)", "#(rgb,8,8,3)color(0,1,0,1)", "#(rgb,8,8,3)color(0,0,1,1)" }; factions[]={}; }; class BlueGreenRed { displayname="Blue Green Red"; author="You don't want to know"; textures[]= { "#(rgb,8,8,3)color(0,0,1,1)", "#(rgb,8,8,3)color(0,1,0,1)", "#(rgb,8,8,3)color(1,0,0,1)" }; factions[]={}; }; }; }; // Derivate from the base class class C_Test_Car_01_F: Test_Car_01_base_F /// some class that is going to be visible in editor { scope = 2; /// makes the car visible in editor scopeCurator=2; // scope 2 means it's available in Zeus mode (0 means hidden) crew = "C_man_1"; /// we need someone to fit into the car side = 3; /// civilian car should be on civilian side faction = CIV_F; /// and with civilian faction }; // Derivate from the base class class C_Test_Car_01_Black_F: Test_Car_01_base_F /// some class that is going to be visible in editor { forceInGarage=1; // This will force the garage to display this vehicle, otherwise it won't because it shares the same p3d as the previous displayName="Test Car (Black)"; scope=2; /// makes the car visible in editor scopeCurator=2; // scope 2 means it's available in Zeus mode (0 means hidden) crew="C_man_1"; /// we need someone to fit into the car side=3; /// civilian car should be on civilian side faction = CIV_F; /// and with civilian faction // the texture source used will be the green one, whatever it probability because it's the only one defined here textureList[]= { "black", 1 }; }; // Derivate from the base class class C_test_Car_01_anotherVariant_F: Test_Car_01_base_F { forceInGarage=0; // 0 has no effect at all displayName="Test Car (black or white)"; scope=2; scopeCurator=0; // It isn't shown in curator UI crew="C_man_1"; side=3; faction = CIV_F; // this can be black or white textureList[]= { "black", 0.75, "white", 0.5 }; }; // This car won't be available from the editor but its class name can be used with the VhC function // E.g. [MyTestCar, "C_test_Car_01_white_F"] call bis_fnc_initVehicle; class C_test_Car_01_white_F: Test_Car_01_base_F { forceInGarage=0; // 0 has no effect at all displayName="Test Car (white)"; scope=1; scopeCurator=0; // It isn't shown in curator UI crew="C_man_1"; side=3; faction = CIV_F; // this can be black or white textureList[]= { "white", 0.5 }; }; // Other delivery of the car with differents hidden selections class C_Test_Car_01_alt_F: Test_Car_Alt_base_F { forceInGarage=1; displayName="Test Car (RGB)"; scope = 2; scopeCurator=2; crew = "C_man_1"; side = 3; faction = CIV_F; textureList[]= {"RedGreenBlue",1}; }; class C_Test_Car_01_alt_V2_F: C_Test_Car_01_alt_F { displayName="Test Car (BGR)"; textureList[]= {"BlueGreenRed",1}; }; }; I am a bit stumped though because one of my helicopter shows in VG just fine, bu the other 4 do not. On the back end for all the birds the config is uniform and all done the same way. Below is my configs portion for the birds. I'm not an expert so if anything there could be improved, let me know. class MEF_USMC_Huron: B_Heli_Transport_03_F { _generalMacro = "B_Heli_Transport_03_F"; side = 1; scope = public; scopeCurator = public; faction = "MEF"; vehicleClass = "MEF_A3_Units_4"; crew = "B_Helipilot_F"; displayName = "MEF Huron [CH-67]"; typicalCargo[] = {"B_Helipilot_F"}; hiddenSelectionsTextures[] = {"mef_mod\textures\air\mef_Heli_Transport_03_CO.paa","mef_mod\textures\air\mef_Heli_Transport2_03_CO.paa"}; incomingMissileDetectionSystem = 16; weapons[] = {"CMFlareLauncher"}; magazines[] = {"300Rnd_CMFlare_Chaff_Magazine"}; maximumLoad = 10000; transportMaxWeapons = 8; transportMaxMagazines = 200; transportMaxBackpacks = 10; }; class MEF_USMC_Ghosthawk: B_Heli_Transport_01_F { _generalMacro = "B_Heli_Transport_01_F"; side = 1; scope = 2; scopeCurator = 2; faction = "MEF"; vehicleClass = "MEF_A3_Units_4"; crew = "B_Helipilot_F"; displayName = "MEF Ghosthawk [uH-80]"; typicalCargo[] = {"B_Helipilot_F"}; hiddenSelectionsTextures[] = {"mef_mod\textures\air\mef_heli_transport_01_ext01_co.paa","mef_mod\textures\air\mef_heli_transport_01_ext02_co.paa"}; incomingMissileDetectionSystem = 16; weapons[] = {"CMFlareLauncher"}; magazines[] = {"300Rnd_CMFlare_Chaff_Magazine"}; maximumLoad = 10000; transportMaxWeapons = 8; transportMaxMagazines = 200; transportMaxBackpacks = 10; }; class MEF_USMC_Hummingbird: B_Heli_Light_01_F { _generalMacro = "B_Heli_Light_01_F"; side = 1; scope = 2; scopeCurator = 2; faction = "MEF"; vehicleClass = "MEF_A3_Units_4"; crew = "B_Helipilot_F"; displayName = "MEF Hummingbird [MH-9]"; typicalCargo[] = {"B_Helipilot_F"}; hiddenSelectionsTextures[] = {"mef_mod\textures\air\mef_heli_light_01_ext_blufor_co.paa"}; incomingMissileDetectionSystem = 16; weapons[] = {"CMFlareLauncher"}; magazines[] = {"300Rnd_CMFlare_Chaff_Magazine"}; maximumLoad = 1000; transportMaxWeapons = 8; transportMaxMagazines = 200; transportMaxBackpacks = 10; }; class MEF_USMC_Pawnee: B_Heli_Light_01_armed_F { _generalMacro = "B_Heli_Light_01_F"; side = 1; scope = 2; faction = "MEF"; vehicleClass = "MEF_A3_Units_4"; crew = "B_Helipilot_F"; displayName = "MEF Pawnee [AH-9]"; typicalCargo[] = {"B_Helipilot_F"}; hiddenSelectionsTextures[] = {"mef_mod\textures\air\mef_heli_light_01_ext_blufor_co.paa"}; incomingMissileDetectionSystem = 16; weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher"}; magazines[] = {"5000Rnd_762x51_Belt","24Rnd_missiles","300Rnd_CMFlare_Chaff_Magazine"}; maximumLoad = 1000; transportMaxWeapons = 8; transportMaxMagazines = 200; transportMaxBackpacks = 10; }; class MEF_USMC_Blackfoot: B_Heli_Attack_01_F { _generalMacro = "B_Heli_Attack_01_F"; side = 1; scope = 2; faction = "MEF"; vehicleClass = "MEF_A3_Units_4"; crew = "B_Helipilot_F"; displayName = "MEF Blackfoot [AH-99]"; typicalCargo[] = {"B_Helipilot_F"}; hiddenSelectionsTextures[] = {"mef_mod\textures\air\mef_heli_attack_01_co.paa"}; incomingMissileDetectionSystem = 16; weapons[] = {"gatling_20mm","missiles_DAGR","missiles_ASRAAM","CMFlareLauncher"}; magazines[] = {"1000Rnd_20mm_shells","4Rnd_AAA_missiles","24Rnd_PG_missiles","300Rnd_CMFlare_Chaff_Magazine"}; maximumLoad = 1000; transportMaxWeapons = 8; transportMaxMagazines = 200; transportMaxBackpacks = 10; }; }; To me if one is working they all should, but that's not the case here. The 2 new helicopters that I am adding to my mod also work fine, and those are ported A2 birds. To me it's looking like this is an update that would need to occur with the base class for the birds, but then thats A3 content and it should be good to go. Considering the class-names that my birds inherit from are the same as the ones that are displaying. I will continue to search for a solution for this and post any breakthroughs that I have. ****POSSIBLE BREAKTHROUGH - Try "forceInGarage=1;" in your mods vehicle class. Edited April 9, 2015 by Mattastic Share this post Link to post Share on other sites
Jackal326 1181 Posted April 9, 2015 Out of curiosity, which one displays? EDIT: Doesn't matter, it seems you've sorted it with your breakthrough. Share this post Link to post Share on other sites
Mattastic 97 Posted April 9, 2015 Yes it seems since retextured vehicles call upon .p3d models that are also used by the vanilla birds and only one will display. In order to "force the retextured vehicle to show you need to insert "forceInGarage=1" with the modded vehicle class in config. I appreciate your help Jackal.;) Share this post Link to post Share on other sites
R0adki11 3949 Posted April 10, 2015 Thanks I Will give that a shot. That is a much better place for the thread, if a Moderator would move this thread that would be great. Thread moved, please report your post for a faster response. Moderators don't necessary have the time to read every thread. ;) Share this post Link to post Share on other sites
Mattastic 97 Posted April 10, 2015 Roger that, thank you R0adki11! Share this post Link to post Share on other sites