diff --git a/aaFrameworkUtils/getSupplyCratesFromCfg.sqf b/aaFrameworkUtils/getSupplyCratesFromCfg.sqf new file mode 100644 index 0000000..a848951 --- /dev/null +++ b/aaFrameworkUtils/getSupplyCratesFromCfg.sqf @@ -0,0 +1,35 @@ +private _supplyCratesCfg = call milsim_resupply_fnc_getSupplyCratesCfg; + +private _properties = []; +{ + _properties append ((configProperties [_x]) apply {configName _x}); +} forEach (_supplyCratesCfg call BIS_fnc_returnChildren); + +_properties = _properties arrayIntersect _properties; + +private _cfgVals = []; +{ + private _cfg = _x; + private _cfgName = configName _x; + _vals = createHashMap; + + { + _vals set [_x, (_cfg >> _x) call BIS_fnc_getCfgData]; + } forEach _properties; + + { + private _arr = _vals get _x; + private _newArr = []; + { + _x params ["_class", "_count"]; + private _cfg = _class call CBA_fnc_getItemConfig; + private _name = [_cfg] call BIS_fnc_displayName; + _newArr pushBack [_class, _name, _count]; + } forEach _arr; + _vals set [_x, _newArr]; + } forEach ["backpacks", "weapons", "items", "magazines"]; + + _cfgVals pushBack [_cfgName, _vals]; +} forEach (_supplyCratesCfg call BIS_fnc_returnChildren); + +text ([createHashMapFromArray _cfgVals] call CBA_fnc_encodeJSON); \ No newline at end of file diff --git a/aaFrameworkUtils/parseSupplyCratesExported.json b/aaFrameworkUtils/parseSupplyCratesExported.json new file mode 100644 index 0000000..e3cf53a --- /dev/null +++ b/aaFrameworkUtils/parseSupplyCratesExported.json @@ -0,0 +1 @@ +{"CrewServedWeapons": {"items": [], "displayName": "CSW Crate", "tooltip": "A crate containing backpacks that assemble into static weapons.", "boxClass": "Box_NATO_Equip_F", "backpacks": [["RHS_M2_Gun_Bag", "M2 Gun Bag", 2], ["RHS_M2_Tripod_Bag", "M2 Tripod Bag", 2], ["RHS_M2_MiniTripod_Bag", "M3 Minitripod Bag", 2], ["rhs_Tow_Gun_Bag", "TOW Gun Bag", 2], ["rhs_TOW_Tripod_Bag", "TOW Tripod Bag", 2], ["UK3CB_Static_M240_Elcan_Gun_Bag", "M240 w/Elcan Gun Bag", 2], ["UK3CB_B_Static_M240_Elcan_Tripod_Low_Bag_US_D", "M240 w/Elcan Tripod Bag (Low)", 2], ["RHS_Mk19_Gun_Bag", "Mk19 Gun Bag", 2], ["RHS_Mk19_Tripod_Bag", "Mk19 Tripod Bag", 2]], "icon": "\\A3\\ui_f\\data\\igui\\cfg\\simpleTasks\\types\\defend_ca.paa", "weapons": [], "magazines": []}, "MortarMk6Resupply": {"items": [["ACE_artilleryTable", "Artillery Rangetable", 2], ["ACE_RangeTable_82mm", "82mm Rangetable", 2], ["ACE_microDAGR", "MicroDAGR GPS", 2], ["ACE_MapTools", "Map Tools", 2]], "displayName": "Mortar MK6 Supply Crate", "tooltip": "A crate containing Mk6 mortar resupply (tubes) and tools.", "boxClass": "Box_NATO_WpsSpecial_F", "backpacks": [["B_Mortar_01_support_F", "Folded Mk6 Mortar Bipod [NATO]", 3], ["B_Mortar_01_weapon_F", "Folded Mk6 Mortar Tube [NATO]", 6], ["UK3CB_LSM_B_B_CARRYALL_RADIO_TIG_STRIPE_01", "Carryall Backpack RT1523g (Tiger Stripe 01)", 1]], "icon": "\\A3\\ui_f\\data\\map\\vehicleicons\\iconStaticMortar_ca.paa", "weapons": [["ACE_Vector", "Vector 21 Nite", 2]], "magazines": [["acex_intelitems_notepad", "Notepad", 2]]}, "AmmoSquad": {"items": [], "displayName": "Squad Ammo", "tooltip": "A crate containing general ammunition and equipment for an infantry squad.", "boxClass": "Box_Syndicate_Ammo_F", "backpacks": [], "icon": "\\A3\\ui_f\\data\\map\\vehicleicons\\iconCrateAmmo_ca.paa", "weapons": [["rhs_weap_M136", "M136 (HEAT)", 4], ["rhs_weap_M136_hp", "M136 (HP)", 4], ["rhs_weap_m72a7", "M72A7", 2]], "magazines": [["1Rnd_SmokePurple_Grenade_shell", "Smoke Round (Purple)", 12], ["1Rnd_SmokeBlue_Grenade_shell", "Smoke Round (Blue)", 24], ["1Rnd_SmokeOrange_Grenade_shell", "Smoke Round (Orange)", 12], ["rhs_mag_M441_HE", "M441 HE Grenade Round", 25], ["rhs_mag_M433_HEDP", "M433 HEDP Grenade Round", 15], ["ACE_40mm_Flare_ir", "M992 Illumination Flare (IR)", 12], ["rhsusf_200Rnd_556x45_mixed_soft_pouch_coyote", "200rnd M249 Softpack M855A1 (Mixed)", 25], ["rhsusf_20Rnd_762x51_m993_Mag", "20rnd M14 M993 AP", 25], ["SmokeShell", "M83 Smoke Grenade (White)", 12], ["rhs_mag_m67", "M67 Fragmentation Grenade", 12], ["1Rnd_Smoke_Grenade_shell", "Smoke Round (White)", 24], ["1Rnd_SmokeRed_Grenade_shell", "Smoke Round (Red)", 24], ["1Rnd_SmokeGreen_Grenade_shell", "Smoke Round (Green)", 24], ["1Rnd_SmokeYellow_Grenade_shell", "Smoke Round (Yellow)", 12], ["Tier1_30Rnd_556x45_M856A1_EMag", "30rnd EMAG M856A1 (Tracer)", 25], ["Tier1_30Rnd_556x45_Mk318Mod0_EMag", "30rnd EMAG Mk318 Mod 0", 75], ["ACE_30Rnd_65_Creedmor_mag", "6.5 mm Creedmor 30Rnd Sand Mag", 25], ["SMA_30Rnd_762x35_BLK_EPR", "30 Round .300 Blackout EPR", 25], ["Tier1_30Rnd_762x35_300BLK_SMK_PMAG", "30rnd PMAG .300 Custom Combat TAC-TX", 25], ["SMA_30Rnd_68x43_SPC_FMJ", "SPC FMJ 6.8x43 30rnd Mag", 25], ["SMA_30Rnd_68x43_SPC_FMJ_Tracer", "SPC FMJ 6.8x43 30rnd Tracer Mag", 25], ["SMA_20Rnd_762x51mm_M80A1_EPR", "M80A1 EPR 762x51mm 20rnd Mag", 25], ["SMA_20Rnd_762x51mm_M80A1_EPR_Tracer", "M80A1 EPR 762x51mm 20rnd Tracer Mag", 25], ["SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range", "Mk316 Mod 0 762x51mm SBLR 20rnd Mag", 25], ["SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range_Tracer", "Mk316 Mod 0 762x51mm SBLR 20rnd Tracer Mag", 25], ["Tier1_250Rnd_762x51_Belt_M993_AP", "250rnd Ammo Belt M993 AP", 15], ["ACE_20Rnd_762x51_Mag_Tracer", "7.62 mm 20Rnd Mag (Tracer)", 25], ["ACE_20Rnd_762x51_M993_AP_Mag", "7.62 mm 20Rnd Mag (M993 AP)", 25], ["rhsusf_20Rnd_762x51_SR25_m993_Mag", "20rnd SR-25 M993 AP", 25], ["Tier1_20Rnd_762x51_M993_SR25_Mag", "20rnd SR-25/M110 M993 AP", 25], ["Tier1_20Rnd_65x48_Creedmoor_SR25_Mag", "20rnd SR-25/M110 6.5mm Creedmoor", 25], ["rhssaf_30rnd_556x45_EPR_G36", "30rnd G36 M855A1", 25], ["DemoCharge_Remote_Mag", "M112 Demolition Block", 16]]}, "AmmoHeavy": {"items": [], "displayName": "Heavy Ammo", "tooltip": "A crate containing mixed ammo for rifles, ARs, MAT, and HAT.", "boxClass": "Box_NATO_Wps_F", "backpacks": [], "icon": "\\A3\\ui_f\\data\\map\\vehicleicons\\iconCrateWpns_ca.paa", "weapons": [], "magazines": [["MRAWS_HEAT_F", "MAAWS HEAT 75 Round", 35], ["MRAWS_HE_F", "MAAWS HE 44 Round", 15], ["Tier1_250Rnd_762x51_Belt_M993_AP", "250rnd Ammo Belt M993 AP", 50], ["Tier1_30Rnd_556x45_M856A1_EMag", "30rnd EMAG M856A1 (Tracer)", 25], ["Tier1_30Rnd_556x45_Mk318Mod0_EMag", "30rnd EMAG Mk318 Mod 0", 50], ["Titan_AA", "Titan AA Missile", 10], ["Titan_AT", "Titan AT Missile", 10], ["200Rnd_65x39_cased_Box_Tracer_Red", "6.5mm 200Rnd Belt Tracer (Red)", 50]]}, "Launchers": {"items": [], "displayName": "Launcher Crate", "tooltip": "A crate containing missile launchers and ammunition.", "boxClass": "Box_NATO_WpsLaunch_F", "backpacks": [], "icon": "\\A3\\ui_f\\data\\map\\vehicleicons\\iconCrateLong_ca.paa", "weapons": [["launch_B_Titan_short_F", "Titan MPRL Compact (Sand)", 2], ["launch_NLAW_F", "NLAW", 2], ["rhs_weap_fim92", "FIM-92F", 2]], "magazines": [["Titan_AA", "Titan AA Missile", 6], ["Titan_AT", "Titan AT Missile", 6]]}, "Mortar60mmCommandoResupply": {"items": [], "displayName": "Mortar 60mm Commando Supply Crate", "tooltip": "A crate containing COMMANDO 60mm mortar shells and some STANAGs.", "boxClass": "Box_NATO_WpsSpecial_F", "backpacks": [], "icon": "\\A3\\ui_f\\data\\igui\\cfg\\simpleTasks\\types\\scout_ca.paa", "weapons": [], "magazines": [["twc_2inch_he_1rnd", "60mm COMMANDO 1Rnd HE", 70], ["twc_2inch_smoke_1rnd", "60mm COMMANDO 1Rnd Smoke", 15], ["twc_2inch_illum_1rnd", "60mm COMMANDO 1Rnd Illum", 15], ["Tier1_30Rnd_556x45_Mk318Mod0_EMag", "30rnd EMAG Mk318 Mod 0", 20]]}, "MedicalSupplies": {"items": [["ACE_packingBandage", "Bandage (Packing)", 100], ["ACE_elasticBandage", "Bandage (Elastic)", 100], ["ACE_tourniquet", "Tourniquet (CAT)", 48], ["ACE_splint", "Splint", 48], ["ACE_morphine", "Morphine Autoinjector", 50], ["ACE_epinephrine", "Epinephrine Autoinjector", 50], ["ACE_bloodIV", "Blood IV (1000ml)", 75], ["ACE_bloodIV_500", "Blood IV (500ml)", 50], ["ACE_bloodIV_250", "Blood IV (250ml)", 25], ["ACE_quikclot", "Bandage (QuikClot)", 75], ["ACE_personalAidKit", "Personal Aid Kit", 5], ["ACE_surgicalKit", "Surgical Kit", 5]], "displayName": "Medical Crate", "tooltip": "A crate containing medical supplies.", "boxClass": "ACE_medicalSupplyCrate_advanced", "backpacks": [], "icon": "\\A3\\ui_f\\data\\map\\vehicleicons\\pictureHeal_ca.paa", "weapons": [], "magazines": []}} \ No newline at end of file diff --git a/aaFrameworkUtils/parseSupplyCratesJSONToCSV.py b/aaFrameworkUtils/parseSupplyCratesJSONToCSV.py new file mode 100644 index 0000000..e789899 --- /dev/null +++ b/aaFrameworkUtils/parseSupplyCratesJSONToCSV.py @@ -0,0 +1,37 @@ +import sys +import json +import csv + + +def parseSupplyCratesJSONToCSV(jsonFile, csvFile): + with open(jsonFile, 'r') as file: + supply_boxes = json.load(file) + + headers = ["box_config_name", "box_friendly_name", "box_class", "box_tooltip", "category", "item_class", "item_name", "quantity"] + all_rows = [] + for supply_box_name in supply_boxes.keys(): + supply_box_data = supply_boxes[supply_box_name] + + display_name = supply_box_data['displayName'] + tooltip = supply_box_data['tooltip'] + box_class = supply_box_data['boxClass'] + for category in ["items", "backpacks", "weapons", "magazines"]: + for item in supply_box_data[category]: + item_class = item[0] + item_name = item[1] + item_quantity = item[2] + row = [supply_box_name, display_name, box_class, tooltip, category, item_class, item_name, item_quantity] + all_rows.append(row) + + + with open(csvFile, 'w', newline='', encoding='utf-8') as file: + writer = csv.writer(file) + writer.writerow(headers) + writer.writerows(all_rows) + +if __name__ == "__main__": + jsonFile = sys.argv[1] + csvFile = sys.argv[2] + parseSupplyCratesJSONToCSV(jsonFile, csvFile) + print(f"Done! {csvFile} created.") + \ No newline at end of file diff --git a/aaFrameworkUtils/test.csv b/aaFrameworkUtils/test.csv new file mode 100644 index 0000000..cf3ca96 --- /dev/null +++ b/aaFrameworkUtils/test.csv @@ -0,0 +1,84 @@ +box_config_name,box_friendly_name,box_class,box_tooltip,category,item_class,item_name,quantity +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,RHS_M2_Gun_Bag,M2 Gun Bag,2 +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,RHS_M2_Tripod_Bag,M2 Tripod Bag,2 +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,RHS_M2_MiniTripod_Bag,M3 Minitripod Bag,2 +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,rhs_Tow_Gun_Bag,TOW Gun Bag,2 +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,rhs_TOW_Tripod_Bag,TOW Tripod Bag,2 +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,UK3CB_Static_M240_Elcan_Gun_Bag,M240 w/Elcan Gun Bag,2 +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,UK3CB_B_Static_M240_Elcan_Tripod_Low_Bag_US_D,M240 w/Elcan Tripod Bag (Low),2 +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,RHS_Mk19_Gun_Bag,Mk19 Gun Bag,2 +CrewServedWeapons,CSW Crate,Box_NATO_Equip_F,A crate containing backpacks that assemble into static weapons.,backpacks,RHS_Mk19_Tripod_Bag,Mk19 Tripod Bag,2 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,items,ACE_artilleryTable,Artillery Rangetable,2 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,items,ACE_RangeTable_82mm,82mm Rangetable,2 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,items,ACE_microDAGR,MicroDAGR GPS,2 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,items,ACE_MapTools,Map Tools,2 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,backpacks,B_Mortar_01_support_F,Folded Mk6 Mortar Bipod [NATO],3 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,backpacks,B_Mortar_01_weapon_F,Folded Mk6 Mortar Tube [NATO],6 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,backpacks,UK3CB_LSM_B_B_CARRYALL_RADIO_TIG_STRIPE_01,Carryall Backpack RT1523g (Tiger Stripe 01),1 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,weapons,ACE_Vector,Vector 21 Nite,2 +MortarMk6Resupply,Mortar MK6 Supply Crate,Box_NATO_WpsSpecial_F,A crate containing Mk6 mortar resupply (tubes) and tools.,magazines,acex_intelitems_notepad,Notepad,2 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,weapons,rhs_weap_M136,M136 (HEAT),4 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,weapons,rhs_weap_M136_hp,M136 (HP),4 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,weapons,rhs_weap_m72a7,M72A7,2 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,1Rnd_SmokePurple_Grenade_shell,Smoke Round (Purple),12 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,1Rnd_SmokeBlue_Grenade_shell,Smoke Round (Blue),24 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,1Rnd_SmokeOrange_Grenade_shell,Smoke Round (Orange),12 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,rhs_mag_M441_HE,M441 HE Grenade Round,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,rhs_mag_M433_HEDP,M433 HEDP Grenade Round,15 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,ACE_40mm_Flare_ir,M992 Illumination Flare (IR),12 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,rhsusf_200Rnd_556x45_mixed_soft_pouch_coyote,200rnd M249 Softpack M855A1 (Mixed),25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,rhsusf_20Rnd_762x51_m993_Mag,20rnd M14 M993 AP,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,SmokeShell,M83 Smoke Grenade (White),12 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,rhs_mag_m67,M67 Fragmentation Grenade,12 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,1Rnd_Smoke_Grenade_shell,Smoke Round (White),24 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,1Rnd_SmokeRed_Grenade_shell,Smoke Round (Red),24 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,1Rnd_SmokeGreen_Grenade_shell,Smoke Round (Green),24 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,1Rnd_SmokeYellow_Grenade_shell,Smoke Round (Yellow),12 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,Tier1_30Rnd_556x45_M856A1_EMag,30rnd EMAG M856A1 (Tracer),25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,Tier1_30Rnd_556x45_Mk318Mod0_EMag,30rnd EMAG Mk318 Mod 0,75 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,ACE_30Rnd_65_Creedmor_mag,6.5 mm Creedmor 30Rnd Sand Mag,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,SMA_30Rnd_762x35_BLK_EPR,30 Round .300 Blackout EPR,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,Tier1_30Rnd_762x35_300BLK_SMK_PMAG,30rnd PMAG .300 Custom Combat TAC-TX,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,SMA_30Rnd_68x43_SPC_FMJ,SPC FMJ 6.8x43 30rnd Mag,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,SMA_30Rnd_68x43_SPC_FMJ_Tracer,SPC FMJ 6.8x43 30rnd Tracer Mag,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,SMA_20Rnd_762x51mm_M80A1_EPR,M80A1 EPR 762x51mm 20rnd Mag,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,SMA_20Rnd_762x51mm_M80A1_EPR_Tracer,M80A1 EPR 762x51mm 20rnd Tracer Mag,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range,Mk316 Mod 0 762x51mm SBLR 20rnd Mag,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range_Tracer,Mk316 Mod 0 762x51mm SBLR 20rnd Tracer Mag,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,Tier1_250Rnd_762x51_Belt_M993_AP,250rnd Ammo Belt M993 AP,15 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,ACE_20Rnd_762x51_Mag_Tracer,7.62 mm 20Rnd Mag (Tracer),25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,ACE_20Rnd_762x51_M993_AP_Mag,7.62 mm 20Rnd Mag (M993 AP),25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,rhsusf_20Rnd_762x51_SR25_m993_Mag,20rnd SR-25 M993 AP,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,Tier1_20Rnd_762x51_M993_SR25_Mag,20rnd SR-25/M110 M993 AP,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,Tier1_20Rnd_65x48_Creedmoor_SR25_Mag,20rnd SR-25/M110 6.5mm Creedmoor,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,rhssaf_30rnd_556x45_EPR_G36,30rnd G36 M855A1,25 +AmmoSquad,Squad Ammo,Box_Syndicate_Ammo_F,A crate containing general ammunition and equipment for an infantry squad.,magazines,DemoCharge_Remote_Mag,M112 Demolition Block,16 +AmmoHeavy,Heavy Ammo,Box_NATO_Wps_F,"A crate containing mixed ammo for rifles, ARs, MAT, and HAT.",magazines,MRAWS_HEAT_F,MAAWS HEAT 75 Round,35 +AmmoHeavy,Heavy Ammo,Box_NATO_Wps_F,"A crate containing mixed ammo for rifles, ARs, MAT, and HAT.",magazines,MRAWS_HE_F,MAAWS HE 44 Round,15 +AmmoHeavy,Heavy Ammo,Box_NATO_Wps_F,"A crate containing mixed ammo for rifles, ARs, MAT, and HAT.",magazines,Tier1_250Rnd_762x51_Belt_M993_AP,250rnd Ammo Belt M993 AP,50 +AmmoHeavy,Heavy Ammo,Box_NATO_Wps_F,"A crate containing mixed ammo for rifles, ARs, MAT, and HAT.",magazines,Tier1_30Rnd_556x45_M856A1_EMag,30rnd EMAG M856A1 (Tracer),25 +AmmoHeavy,Heavy Ammo,Box_NATO_Wps_F,"A crate containing mixed ammo for rifles, ARs, MAT, and HAT.",magazines,Tier1_30Rnd_556x45_Mk318Mod0_EMag,30rnd EMAG Mk318 Mod 0,50 +AmmoHeavy,Heavy Ammo,Box_NATO_Wps_F,"A crate containing mixed ammo for rifles, ARs, MAT, and HAT.",magazines,Titan_AA,Titan AA Missile,10 +AmmoHeavy,Heavy Ammo,Box_NATO_Wps_F,"A crate containing mixed ammo for rifles, ARs, MAT, and HAT.",magazines,Titan_AT,Titan AT Missile,10 +AmmoHeavy,Heavy Ammo,Box_NATO_Wps_F,"A crate containing mixed ammo for rifles, ARs, MAT, and HAT.",magazines,200Rnd_65x39_cased_Box_Tracer_Red,6.5mm 200Rnd Belt Tracer (Red),50 +Launchers,Launcher Crate,Box_NATO_WpsLaunch_F,A crate containing missile launchers and ammunition.,weapons,launch_B_Titan_short_F,Titan MPRL Compact (Sand),2 +Launchers,Launcher Crate,Box_NATO_WpsLaunch_F,A crate containing missile launchers and ammunition.,weapons,launch_NLAW_F,NLAW,2 +Launchers,Launcher Crate,Box_NATO_WpsLaunch_F,A crate containing missile launchers and ammunition.,weapons,rhs_weap_fim92,FIM-92F,2 +Launchers,Launcher Crate,Box_NATO_WpsLaunch_F,A crate containing missile launchers and ammunition.,magazines,Titan_AA,Titan AA Missile,6 +Launchers,Launcher Crate,Box_NATO_WpsLaunch_F,A crate containing missile launchers and ammunition.,magazines,Titan_AT,Titan AT Missile,6 +Mortar60mmCommandoResupply,Mortar 60mm Commando Supply Crate,Box_NATO_WpsSpecial_F,A crate containing COMMANDO 60mm mortar shells and some STANAGs.,magazines,twc_2inch_he_1rnd,60mm COMMANDO 1Rnd HE,70 +Mortar60mmCommandoResupply,Mortar 60mm Commando Supply Crate,Box_NATO_WpsSpecial_F,A crate containing COMMANDO 60mm mortar shells and some STANAGs.,magazines,twc_2inch_smoke_1rnd,60mm COMMANDO 1Rnd Smoke,15 +Mortar60mmCommandoResupply,Mortar 60mm Commando Supply Crate,Box_NATO_WpsSpecial_F,A crate containing COMMANDO 60mm mortar shells and some STANAGs.,magazines,twc_2inch_illum_1rnd,60mm COMMANDO 1Rnd Illum,15 +Mortar60mmCommandoResupply,Mortar 60mm Commando Supply Crate,Box_NATO_WpsSpecial_F,A crate containing COMMANDO 60mm mortar shells and some STANAGs.,magazines,Tier1_30Rnd_556x45_Mk318Mod0_EMag,30rnd EMAG Mk318 Mod 0,20 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_packingBandage,Bandage (Packing),100 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_elasticBandage,Bandage (Elastic),100 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_tourniquet,Tourniquet (CAT),48 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_splint,Splint,48 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_morphine,Morphine Autoinjector,50 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_epinephrine,Epinephrine Autoinjector,50 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_bloodIV,Blood IV (1000ml),75 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_bloodIV_500,Blood IV (500ml),50 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_bloodIV_250,Blood IV (250ml),25 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_quikclot,Bandage (QuikClot),75 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_personalAidKit,Personal Aid Kit,5 +MedicalSupplies,Medical Crate,ACE_medicalSupplyCrate_advanced,A crate containing medical supplies.,items,ACE_surgicalKit,Surgical Kit,5 diff --git a/defines/SupplyCrates.hpp b/defines/SupplyCrates.hpp index a1cebac..51245fd 100644 --- a/defines/SupplyCrates.hpp +++ b/defines/SupplyCrates.hpp @@ -1,7 +1,7 @@ class SupplyCrates { class AmmoSquad { boxClass = "Box_Syndicate_Ammo_F"; - displayName = "Squad Ammo"; + displayName = "Squad Ammo Crate"; tooltip = "A crate containing general ammunition and equipment for an infantry squad."; icon = "\A3\ui_f\data\map\vehicleicons\iconCrateAmmo_ca.paa"; @@ -51,7 +51,7 @@ class SupplyCrates { class AmmoHeavy { boxClass = "Box_NATO_Wps_F"; - displayName = "Heavy Ammo"; + displayName = "Heavy Ammo Crate"; tooltip = "A crate containing mixed ammo for rifles, ARs, MAT, and HAT."; icon = "\A3\ui_f\data\map\vehicleicons\iconCrateWpns_ca.paa"; diff --git a/functions/CfgFunctions.hpp b/functions/CfgFunctions.hpp index 3709be3..4c4a8d1 100644 --- a/functions/CfgFunctions.hpp +++ b/functions/CfgFunctions.hpp @@ -87,6 +87,8 @@ class milsim_resupply { class createMortarBox {}; class createWeaponsBox {}; class getSupplyCratesCfg {}; + class addArsenalObjectSpawnBoxActions {}; + class addCBASettings {postInit=1;}; }; }; diff --git a/functions/init/fn_initPlayerLocal.sqf b/functions/init/fn_initPlayerLocal.sqf index d72495f..1ba5f10 100644 --- a/functions/init/fn_initPlayerLocal.sqf +++ b/functions/init/fn_initPlayerLocal.sqf @@ -9,6 +9,17 @@ if (!isServer) then { }] call CBA_fnc_addEventHandler; }; +// 5 seconds after the client is loaded, add the resupply action to all arsenal boxes +[ + {time > 5}, + { + if (missionNamespace getVariable [ + "milsim_resupply_setting_allowSupplyBoxScrollWheelSpawning", + false + ]) then {call milsim_resupply_fnc_addSpawnBoxActions} + } +] call CBA_fnc_waitUntilAndExecute; + ["InitializePlayer", [player, true]] call BIS_fnc_dynamicGroups; nil; \ No newline at end of file diff --git a/functions/resupply/fn_addArsenalObjectSpawnBoxActions.sqf b/functions/resupply/fn_addArsenalObjectSpawnBoxActions.sqf new file mode 100644 index 0000000..74963ac --- /dev/null +++ b/functions/resupply/fn_addArsenalObjectSpawnBoxActions.sqf @@ -0,0 +1,31 @@ +// adds a scroll wheel action to all arsenal boxes to spawn different supply crate types + +private _arsenalBoxClassName = "Land_PaperBox_open_full_F"; + +// get all instances of the arsenal item +private _arsenalBoxes = (allMissionObjects _arsenalBoxClassName) select { + // only select the ones that already have user actions attached + count (actionIDs _x) > 0; +}; + +private _supplyCratesCfg = call milsim_resupply_fnc_getSupplyCratesCfg; +private _supplyCrateTypesCfgs = _supplyCratesCfg call BIS_fnc_returnChildren; + +{ + // add scroll wheel action to spawn different supply box types + private _arsenalBox = _x; + { + private _cfg = _x; + private _supplyCrateDisplayName = (_cfg >> "displayName") call BIS_fnc_getCfgData; + + _arsenalBox addAction [format ["Spawn %1", _supplyCrateDisplayName], { + params ["_target", "_caller", "_actionId", "_arguments"]; + _arguments params ["_supplyCrateCfg"]; + [ + objNull, + configName _supplyCrateCfg, + getPos _target + ] call milsim_resupply_fnc_createBox; + }, [_cfg], 0, false, true, "", ""]; + } forEach _supplyCrateTypesCfgs; +} forEach _arsenalBoxes; \ No newline at end of file diff --git a/functions/resupply/fn_addCBASettings.sqf b/functions/resupply/fn_addCBASettings.sqf new file mode 100644 index 0000000..47d700a --- /dev/null +++ b/functions/resupply/fn_addCBASettings.sqf @@ -0,0 +1,22 @@ +[ + "milsim_resupply_setting_allowSupplyBoxScrollWheelSpawning", // variable + "CHECKBOX", // type + ["Enabled", "If true, adds scroll wheel options to arsenal boxes to spawn supply boxes"], // title + ["17th Battalion", "Resupply"], // category + false, // default value + true, // global setting + { + params ["_value"]; + [ + "resupply", + "SETTING CHANGED", + [ + [ + "setting", + "milsim_resupply_setting_allowSupplyBoxScrollWheelSpawning" + ], + ["newValue", _value] + ] + ] call milsim_fnc_log; + } +] call CBA_fnc_addSetting; \ No newline at end of file