├── .gitattributes ├── .gitignore ├── Addons ├── itc_land_SPHammohandler │ ├── CfgFunctions.hpp │ ├── CfgVehicles.hpp │ ├── CfgWeapons.hpp │ ├── config.cpp │ ├── dialogConfig.hpp │ └── functions │ │ ├── applySettings.sqf │ │ ├── changeCharge.sqf │ │ ├── fillAmmoList.sqf │ │ ├── fillFuzeList.sqf │ │ ├── firedEH.sqf │ │ ├── loadGun.sqf │ │ ├── onLBSelChanged_ammoList.sqf │ │ ├── onLBSelChanged_fuzeList.sqf │ │ ├── onLoad.old.sqf │ │ ├── onLoad.sqf │ │ └── updateStatus.sqf ├── itc_land_aps │ ├── config.cpp │ ├── config │ │ ├── cfgFunctions.hpp │ │ └── cfgVehicles.hpp │ └── functions │ │ ├── attemptIntercept.sqf │ │ ├── canIntercept.sqf │ │ ├── fired.sqf │ │ ├── postInit.sqf │ │ └── vehicleInit.sqf ├── itc_land_ballistics │ ├── config.cpp │ ├── config │ │ ├── CfgFunctions.hpp │ │ └── CfgMisc.hpp │ ├── functions │ │ ├── calcBtabSolution.sqf │ │ ├── calcShellTypeSolutions.sqf │ │ ├── interpolateSlices.sqf │ │ └── tables │ │ │ ├── calcBallistics.sqf │ │ │ ├── formattedBTab.sqf │ │ │ └── getVehicleShellType.sqf │ └── tables │ │ ├── b_155 │ │ ├── list.sqf │ │ ├── mortar_155mm_AMOS_0_HA.sqf │ │ ├── mortar_155mm_AMOS_0_LA.sqf │ │ ├── mortar_155mm_AMOS_1_HA.sqf │ │ ├── mortar_155mm_AMOS_1_LA.sqf │ │ ├── mortar_155mm_AMOS_2_HA.sqf │ │ ├── mortar_155mm_AMOS_2_LA.sqf │ │ ├── mortar_155mm_AMOS_3_HA.sqf │ │ ├── mortar_155mm_AMOS_3_LA.sqf │ │ ├── mortar_155mm_AMOS_4_HA.sqf │ │ └── mortar_155mm_AMOS_4_LA.sqf │ │ ├── b_230 │ │ ├── list.sqf │ │ ├── rockets_230mm_GAT_HA.sqf │ │ └── rockets_230mm_GAT_LA.sqf │ │ ├── b_82 │ │ ├── list.sqf │ │ ├── mortar_82mm_0.sqf │ │ ├── mortar_82mm_1.sqf │ │ └── mortar_82mm_2.sqf │ │ ├── g_105 │ │ ├── g105_ch1_ha.sqf │ │ ├── g105_ch1_la.sqf │ │ ├── g105_ch2_ha.sqf │ │ ├── g105_ch2_la.sqf │ │ ├── g105_ch3_ha.sqf │ │ ├── g105_ch3_la.sqf │ │ ├── g105_ch4_ha.sqf │ │ ├── g105_ch4_la.sqf │ │ ├── g105_ch5_ha.sqf │ │ ├── g105_ch5_la.sqf │ │ └── list.sqf │ │ ├── g_122 │ │ ├── g122_ch1_ha.sqf │ │ ├── g122_ch1_la.sqf │ │ ├── g122_ch2_ha.sqf │ │ ├── g122_ch2_la.sqf │ │ ├── g122_ch3_ha.sqf │ │ ├── g122_ch3_la.sqf │ │ ├── g122_ch4_ha.sqf │ │ ├── g122_ch4_la.sqf │ │ ├── g122_ch5_ha.sqf │ │ ├── g122_ch5_la.sqf │ │ └── list.sqf │ │ ├── g_127 │ │ ├── g127_ch1_ha.sqf │ │ ├── g127_ch1_la.sqf │ │ ├── g127_ch2_ha.sqf │ │ ├── g127_ch2_la.sqf │ │ ├── g127_ch3_ha.sqf │ │ ├── g127_ch3_la.sqf │ │ ├── g127_ch4_ha.sqf │ │ ├── g127_ch4_la.sqf │ │ ├── g127_ch5_ha.sqf │ │ ├── g127_ch5_la.sqf │ │ └── list.sqf │ │ ├── g_152 │ │ ├── g152_ch1_ha.sqf │ │ ├── g152_ch1_la.sqf │ │ ├── g152_ch2_ha.sqf │ │ ├── g152_ch2_la.sqf │ │ ├── g152_ch3_ha.sqf │ │ ├── g152_ch3_la.sqf │ │ ├── g152_ch4_ha.sqf │ │ ├── g152_ch4_la.sqf │ │ ├── g152_ch5_ha.sqf │ │ ├── g152_ch5_la.sqf │ │ └── list.sqf │ │ └── g_155 │ │ ├── g155_ch1_ha.sqf │ │ ├── g155_ch1_la.sqf │ │ ├── g155_ch2_ha.sqf │ │ ├── g155_ch2_la.sqf │ │ ├── g155_ch3_ha.sqf │ │ ├── g155_ch3_la.sqf │ │ ├── g155_ch4_ha.sqf │ │ ├── g155_ch4_la.sqf │ │ ├── g155_ch5_ha.sqf │ │ ├── g155_ch5_la.sqf │ │ └── list.sqf ├── itc_land_bcs │ ├── config.cpp │ ├── config │ │ └── cfgFunctions.hpp │ └── functions │ │ ├── adjustGrid.sqf │ │ ├── calcSolutions.sqf │ │ ├── calculateTarget.sqf │ │ └── getBatteryPosition.sqf ├── itc_land_ciws │ ├── config.cpp │ ├── config │ │ ├── cfgAmmo.hpp │ │ ├── cfgFunctions.hpp │ │ ├── cfgMagazines.hpp │ │ ├── cfgMisc.hpp │ │ ├── cfgVehicles.hpp │ │ └── cfgWeapons.hpp │ └── functions │ │ ├── fired.sqf │ │ ├── init.sqf │ │ └── shellTarget.sqf ├── itc_land_cobra │ ├── config.cpp │ ├── config │ │ ├── CfgMisc.hpp │ │ ├── cfgFunctions.hpp │ │ └── cfgVehicles.hpp │ └── functions │ │ ├── calcImpact.sqf │ │ ├── calcOrigin.sqf │ │ ├── fired.sqf │ │ ├── getCobraData.sqf │ │ ├── init.sqf │ │ ├── processEngagement.sqf │ │ ├── processImpact.sqf │ │ ├── processOrigin.sqf │ │ ├── scan.sqf │ │ ├── sirenInit.sqf │ │ ├── sirenTrigger.sqf │ │ ├── sirenTypes.sqf │ │ └── vehicleInit.sqf ├── itc_land_common │ ├── config.cpp │ ├── config │ │ ├── cfgEden.hpp │ │ ├── cfgFunctions.hpp │ │ ├── cfgUI.hpp │ │ └── ui │ │ │ ├── cfgUI.hpp │ │ │ └── defines.hpp │ ├── data │ │ ├── arrow_combo_active_ca.paa │ │ ├── arrow_combo_ca.paa │ │ ├── arty-icon.paa │ │ ├── arty-icon.png │ │ ├── screen-night.paa │ │ ├── screen.paa │ │ └── screen.png │ └── functions │ │ ├── FormatAsMeters.sqf │ │ ├── FormatAsMils.sqf │ │ ├── ctrlSetFade.sqf │ │ ├── ctrlSetText.sqf │ │ ├── fnc_getDeflection.sqf │ │ ├── getCurVehicle.sqf │ │ ├── getDeflection.sqf │ │ └── isLaserCode.sqf ├── itc_land_datalink │ ├── clientFunctions │ │ ├── connect.sqf │ │ ├── disconnect.sqf │ │ ├── onClientRX.sqf │ │ ├── registerEvent.sqf │ │ ├── transmit.sqf │ │ └── unregisterEvent.sqf │ ├── config.cpp │ ├── config │ │ ├── cfgFunctions.hpp │ │ └── cfgMisc.hpp │ ├── functions │ │ ├── init.sqf │ │ └── validateId.sqf │ └── serverFunctions │ │ ├── findAvailableID.sqf │ │ ├── findIDTargets.sqf │ │ ├── init.sqf │ │ ├── onCLientDisconnect.sqf │ │ ├── onClientConnect.sqf │ │ ├── onClientTX.sqf │ │ └── receiveIDRegistry.sqf ├── itc_land_guidance │ ├── config.cpp │ ├── config │ │ └── CfgFunctions.hpp │ └── functions │ │ ├── igm15x.sqf │ │ ├── lgm15x.sqf │ │ ├── pgm15x.sqf │ │ └── pgm230.sqf ├── itc_land_packable │ ├── CfgFunctions.hpp │ ├── CfgVehicles.hpp │ ├── CfgWeapons.hpp │ ├── config.cpp │ └── functions │ │ ├── fnc_Pack.sqf │ │ ├── fnc_canunpack.sqf │ │ └── fnc_unPack.sqf ├── itc_land_remoteFrag │ ├── config.cpp │ └── config │ │ ├── cfgAmmo.hpp │ │ ├── cfgMagazines.hpp │ │ ├── cfgVehicles.hpp │ │ └── cfgWeapons.hpp ├── itc_land_rover │ ├── config.cpp │ ├── config │ │ ├── CfgFunctions.hpp │ │ ├── baseControls.hpp │ │ ├── cfgVehicles.hpp │ │ ├── cfgWeapons.hpp │ │ └── tablet.hpp │ ├── data │ │ ├── crosshair.paa │ │ ├── crosshair.png │ │ ├── iconlaseron_w.paa │ │ ├── itc_land_rover_256.paa │ │ ├── itc_land_rover_256.png │ │ ├── n_arr.paa │ │ ├── n_r_arr.paa │ │ ├── n_txt.paa │ │ ├── screen-night.paa │ │ ├── screen-night2.paa │ │ ├── screen.paa │ │ └── screen2.paa │ └── functions │ │ ├── createFeed.sqf │ │ ├── getAircraft.sqf │ │ ├── getLaserTurret.sqf │ │ ├── init.sqf │ │ ├── killFeed.sqf │ │ ├── ui_curPlane.sqf │ │ ├── ui_draw.sqf │ │ ├── ui_init.sqf │ │ ├── ui_populateListBox.sqf │ │ ├── ui_update.sqf │ │ └── ui_vismode.sqf ├── itc_land_smokeDispenser │ ├── config.cpp │ └── config │ │ ├── CfgCloudlets.hpp │ │ ├── cfgAmmo.hpp │ │ ├── cfgMagazines.hpp │ │ └── particles.hpp ├── itc_land_spike │ ├── config.cpp │ ├── config │ │ ├── CfgMagazines.hpp │ │ ├── CfgVehicles.hpp │ │ ├── CfgWeapons.hpp │ │ ├── ITC_Land_SpikeSeeker.hpp │ │ ├── ace_missileguidance_AttackProfiles.hpp │ │ ├── baseControls.hpp │ │ ├── cfgAmmo.hpp │ │ └── cfgFunctions.hpp │ ├── data │ │ ├── seekerT.paa │ │ ├── seekerT.png │ │ ├── seekerTL.paa │ │ ├── seekerTL.png │ │ ├── seekerbox.paa │ │ ├── seekerbox.png │ │ └── spike_seeker_elements.psd │ └── functions │ │ ├── cameraUpdate.sqf │ │ ├── fired.sqf │ │ ├── guidance.sqf │ │ ├── handleCameraAiming.sqf │ │ ├── handleLock.sqf │ │ ├── init.sqf │ │ ├── intersectAtPolar.sqf │ │ ├── intersectScreenToWorld.sqf │ │ ├── reloaded.sqf │ │ ├── selectSpike.sqf │ │ ├── sightClosed.sqf │ │ ├── sightViewChanged.sqf │ │ ├── startCamera.sqf │ │ └── updateSightOverlay.sqf ├── itc_land_tablet │ ├── UI │ │ ├── arrow_combo_active_ca.paa │ │ ├── arrow_combo_ca.paa │ │ ├── arty-icon.paa │ │ ├── arty-icon.png │ │ ├── home-lines.paa │ │ ├── home-lines.png │ │ ├── logo.paa │ │ ├── logo.png │ │ ├── screen-night.paa │ │ ├── screen.paa │ │ ├── screen.png │ │ ├── tableticon.paa │ │ ├── tableticon.png │ │ ├── tableticon256.paa │ │ └── tableticon256.png │ ├── UIConfig │ │ ├── ControlBaseClasses.hpp │ │ ├── defines.hpp │ │ ├── tablet.hpp │ │ └── workspaces │ │ │ ├── bcs │ │ │ ├── adjustFiremission.hpp │ │ │ ├── engageFiremission.hpp │ │ │ ├── engageFiremission2.hpp │ │ │ ├── locStores.hpp │ │ │ ├── newFiremission.hpp │ │ │ ├── settings.hpp │ │ │ ├── setup.hpp │ │ │ └── solutionFiremission.hpp │ │ │ ├── cbr │ │ │ ├── data.hpp │ │ │ ├── map.hpp │ │ │ └── settings.hpp │ │ │ ├── home │ │ │ └── appList.hpp │ │ │ ├── missile │ │ │ ├── fcs.hpp │ │ │ ├── fcs_fuzeandguidance.hpp │ │ │ ├── fcs_localFCSmode.hpp │ │ │ └── missileConfigRework1.hpp │ │ │ └── spg │ │ │ ├── fcs.hpp │ │ │ ├── fcs_localFCSmode.hpp │ │ │ ├── fcs_manualmode.hpp │ │ │ └── status.hpp │ ├── config.cpp │ ├── config │ │ ├── CfgFunctions.hpp │ │ ├── cfgMisc.hpp │ │ ├── cfgVehicles.hpp │ │ └── cfgWeapons.hpp │ └── functions │ │ ├── BCS_idc_defines.hpp │ │ ├── apps │ │ ├── bcs │ │ │ ├── adjustMission │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ ├── backup │ │ │ │ ├── clear.sqf │ │ │ │ ├── engageMission │ │ │ │ │ ├── init.sqf │ │ │ │ │ ├── interact.sqf │ │ │ │ │ └── render.sqf │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ ├── locStores │ │ │ │ │ ├── init.sqf │ │ │ │ │ ├── interact.sqf │ │ │ │ │ └── render.sqf │ │ │ │ ├── newMission │ │ │ │ │ ├── init.sqf │ │ │ │ │ ├── interact.sqf │ │ │ │ │ └── render.sqf │ │ │ │ ├── render.sqf │ │ │ │ ├── settings │ │ │ │ │ ├── init.sqf │ │ │ │ │ ├── interact.sqf │ │ │ │ │ └── render.sqf │ │ │ │ ├── setup │ │ │ │ │ ├── init.sqf │ │ │ │ │ ├── interact.sqf │ │ │ │ │ └── render.sqf │ │ │ │ └── solutionMission │ │ │ │ │ ├── init.sqf │ │ │ │ │ ├── interact.sqf │ │ │ │ │ └── render.sqf │ │ │ ├── bcsDefines.hpp │ │ │ ├── clear.sqf │ │ │ ├── engageMission │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ ├── init.sqf │ │ │ ├── interact.sqf │ │ │ ├── locStores │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ ├── newMission │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ ├── render.sqf │ │ │ ├── settings │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ ├── setup │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ └── solutionMission │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ ├── cbr │ │ │ ├── clear.sqf │ │ │ ├── data │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ ├── init.sqf │ │ │ ├── interact.sqf │ │ │ ├── map │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ ├── render.sqf │ │ │ └── settings │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ ├── home │ │ │ ├── appList │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ │ ├── clear.sqf │ │ │ ├── init.sqf │ │ │ ├── interact.sqf │ │ │ └── render.sqf │ │ ├── missile │ │ │ ├── clear.sqf │ │ │ ├── fcs │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ ├── onLBSelChanged_fuzemode.sqf │ │ │ │ ├── onLBSelChanged_roundtype.sqf │ │ │ │ └── render.sqf │ │ │ ├── init.sqf │ │ │ ├── interact.sqf │ │ │ ├── render.sqf │ │ │ └── status │ │ │ │ ├── init.sqf │ │ │ │ ├── interact.sqf │ │ │ │ └── render.sqf │ │ ├── sadl │ │ │ ├── init.sqf │ │ │ ├── interact.sqf │ │ │ └── render.sqf │ │ └── spg │ │ │ ├── clear.sqf │ │ │ ├── fcs │ │ │ ├── init.sqf │ │ │ ├── interact.sqf │ │ │ ├── interact_calc.sqf │ │ │ ├── onLBSelChanged_fcimode.sqf │ │ │ └── render.sqf │ │ │ ├── init.sqf │ │ │ ├── interact.sqf │ │ │ ├── render.sqf │ │ │ └── status │ │ │ ├── init.sqf │ │ │ ├── interact.sqf │ │ │ └── render.sqf │ │ ├── clear.sqf │ │ ├── interact.sqf │ │ ├── open.sqf │ │ ├── openVehicleTablet.sqf │ │ ├── render.sqf │ │ └── util │ │ ├── arrayToPage.sqf │ │ ├── compileApp.sqf │ │ ├── compilePage.sqf │ │ ├── fillComboBox.sqf │ │ ├── setFade.sqf │ │ ├── setText.sqf │ │ ├── vehicleHasInterface.sqf │ │ └── vehicleHasTablet.sqf ├── itc_land_towedAmmoHandling │ ├── config.cpp │ └── config │ │ ├── cfgVehicles.hpp │ │ └── cfgWeapons.hpp ├── itc_land_veh_GLTD │ ├── CfgVehicles.hpp │ ├── CfgWeapons.hpp │ └── config.cpp ├── itc_land_veh_defender │ ├── config.cpp │ └── config │ │ ├── cfgAmmo.hpp │ │ ├── cfgMagazines.hpp │ │ ├── cfgVehicles.hpp │ │ └── cfgWeapons.hpp ├── itc_land_veh_hammer │ ├── CfgVehicles.hpp │ └── config.cpp ├── itc_land_veh_mk6 │ ├── config.cpp │ └── config │ │ ├── cfgAmmo.hpp │ │ └── cfgMagazines.hpp ├── itc_land_veh_rhea │ ├── Config │ │ ├── CfgVehicles.hpp │ │ ├── cfgAmmo.hpp │ │ ├── cfgFunctions.hpp │ │ ├── cfgMagazines.hpp │ │ └── cfgWeapons.hpp │ ├── config.cpp │ └── functions │ │ └── fired.sqf ├── itc_land_veh_seara │ ├── CfgVehicles.hpp │ └── config.cpp ├── itc_land_veh_sholef │ ├── CfgVehicles.hpp │ └── config.cpp ├── itc_land_veh_sights │ ├── CfgFunctions.hpp │ ├── RscInGameUI.hpp │ ├── config.cpp │ ├── functions │ │ ├── init.sqf │ │ ├── itc_land_onLoad_RscAltGunnerSightSPH.sqf │ │ ├── itc_land_onLoad_RscGunnerSightBasic.sqf │ │ ├── itc_land_onLoad_RscGunnerSightMLRS.sqf │ │ ├── itc_land_onLoad_RscGunnerSightSPH.sqf │ │ ├── itc_land_onLoad_RscGunnerSightZamakMRLi.sqf │ │ ├── itc_land_onLoad_RscIGS_SPH.sqf │ │ ├── itc_land_onLoad_RscOptics_GLTD_gunner.sqf │ │ ├── itc_land_onLoad_RscOptics_UAV_gunner.sqf │ │ └── itc_land_onLoad_RscOptics_strider_commander.sqf │ └── ui │ │ ├── ITC_Land_RscAltGunnerSightSPH.hpp │ │ ├── ITC_Land_RscGunnerSightBasic.hpp │ │ ├── ITC_Land_RscGunnerSightMLRS.hpp │ │ ├── ITC_Land_RscGunnerSightSPH.hpp │ │ ├── ITC_Land_RscGunnerSightZamakMRLi.hpp │ │ ├── ITC_Land_RscIGS_SPH.hpp │ │ ├── ITC_Land_RscOptics_GLTD_gunner.hpp │ │ ├── ITC_Land_RscOptics_UAV_gunner.hpp │ │ ├── ITC_Land_RscOptics_strider_commander.hpp │ │ └── data │ │ ├── arrowmark_d.paa │ │ ├── arrowmark_l.paa │ │ ├── arrowmark_r.paa │ │ ├── arrowmark_u.paa │ │ ├── crosshair_ca.paa │ │ ├── iconlaseron_w.paa │ │ ├── laser_designator_iconlaseron.png │ │ ├── mark.paa │ │ ├── n_arr.paa │ │ ├── n_r_arr.paa │ │ ├── n_r_txt.paa │ │ └── n_txt.paa ├── itc_land_veh_sochor │ ├── CfgVehicles.hpp │ └── config.cpp ├── itc_land_veh_strider │ ├── CfgVehicles.hpp │ └── config.cpp ├── itc_land_veh_uav01 │ ├── CfgVehicles.hpp │ ├── CfgWeapons.hpp │ ├── config.cpp │ └── fnc_drawCompass.sqf ├── itc_land_veh_uav02 │ ├── CfgVehicles.hpp │ └── config.cpp ├── itc_land_veh_uav05 │ ├── CfgVehicles.hpp │ └── config.cpp ├── itc_land_veh_uav06 │ ├── CfgVehicles.hpp │ ├── CfgWeapons.hpp │ └── config.cpp ├── itc_land_veh_weapons │ ├── CfgAmmo.hpp │ ├── CfgEventHandlers.hpp │ ├── CfgFunctions.hpp │ ├── CfgMagazines.hpp │ ├── CfgMagazines_105mm.hpp │ ├── CfgMagazines_122mm.hpp │ ├── CfgMagazines_127mm.hpp │ ├── CfgMagazines_152mm.hpp │ ├── CfgMagazines_155mm.hpp │ ├── CfgMagazines_230mm.hpp │ ├── CfgVehicles.hpp │ ├── CfgWeapons.hpp │ ├── CfgWeapons_howitzers.hpp │ ├── CfgWeapons_howitzers_magazines105mm.hpp │ ├── CfgWeapons_howitzers_magazines122mm.hpp │ ├── CfgWeapons_howitzers_magazines127mm.hpp │ ├── CfgWeapons_howitzers_magazines152mm.hpp │ ├── CfgWeapons_howitzers_magazines155mm.hpp │ ├── CfgWeapons_mlrs.hpp │ ├── ITC_Land_CfgFuzes.hpp │ ├── config.cpp │ └── functions │ │ ├── adjustMuzzleVelG15x.sqf │ │ ├── deployExtra.sqf │ │ ├── deployFalat.sqf │ │ ├── fired.sqf │ │ ├── firedMof35.sqf │ │ ├── firedMof35Mod3.sqf │ │ ├── firedSAM35.sqf │ │ ├── fuzeDelay.sqf │ │ ├── fuzeProx.sqf │ │ ├── fuzeProxFOV.sqf │ │ └── fuzeTime.sqf ├── itc_land_veh_zamakMLR │ ├── CfgVehicles.hpp │ └── config.cpp └── itc_land_vls │ ├── config.cpp │ ├── config │ ├── cfgAmmo.hpp │ ├── cfgDisplay.hpp │ ├── cfgFunctions.hpp │ ├── cfgMagazines.hpp │ ├── cfgVehicles.hpp │ └── cfgWeapons.hpp │ └── functions │ ├── AGCAS.sqf │ ├── angleToTarget.sqf │ ├── determineSteerPoint.sqf │ ├── fired.sqf │ ├── getGuidanceOptions.sqf │ ├── guide.sqf │ ├── guidePfh.sqf │ ├── steerTo.sqf │ ├── ui │ ├── adHocLaunch.sqf │ ├── onChar.sqf │ ├── onLoad.sqf │ ├── onSelectAngle.sqf │ ├── onSelectTarget.sqf │ ├── removeTGT.sqf │ ├── saveTGT.sqf │ └── selectedLaunch.sqf │ └── updateData.sqf ├── Keys └── ITC.bikey ├── itc-combo.paa └── mod.cpp /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear in the root of a volume 35 | .DocumentRevisions-V100 36 | .fseventsd 37 | .Spotlight-V100 38 | .TemporaryItems 39 | .Trashes 40 | .VolumeIcon.icns 41 | 42 | # Directories potentially created on remote AFP share 43 | .AppleDB 44 | .AppleDesktop 45 | Network Trash Folder 46 | Temporary Items 47 | .apdisk 48 | -------------------------------------------------------------------------------- /Addons/itc_land_SPHammohandler/CfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions { 2 | class itc_land_SPHammohandler { 3 | class functions { 4 | class onLoad { 5 | file = "itc_land_SPHammohandler\functions\onLoad.sqf"; 6 | }; 7 | class updateStatus { 8 | file = "itc_land_SPHammohandler\functions\updateStatus.sqf"; 9 | }; 10 | class fillAmmoList { 11 | file = "itc_land_SPHammohandler\functions\fillAmmoList.sqf"; 12 | }; 13 | class fillFuzeList { 14 | file = "itc_land_SPHammohandler\functions\fillFuzeList.sqf"; 15 | }; 16 | class onSelectAmmo { 17 | file = "itc_land_SPHammohandler\functions\onLBSelChanged_ammoList.sqf"; 18 | }; 19 | class onSelectFuze { 20 | file = "itc_land_SPHammohandler\functions\onLBSelChanged_fuzeList.sqf"; 21 | }; 22 | class changeCharge { 23 | file = "itc_land_SPHammohandler\functions\changeCharge.sqf"; 24 | }; 25 | class applySettings { 26 | file = "itc_land_SPHammohandler\functions\applySettings.sqf"; 27 | }; 28 | class loadGun { 29 | file = "itc_land_SPHammohandler\functions\loadGun.sqf"; 30 | }; 31 | class firedEH { 32 | file = "itc_land_SPHammohandler\functions\firedEH.sqf"; 33 | }; 34 | }; 35 | }; 36 | }; -------------------------------------------------------------------------------- /Addons/itc_land_SPHammohandler/CfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CfgWeapons { 2 | class mortar_155mm_AMOS; 3 | class itc_land_howitzer_base: mortar_155mm_AMOS { 4 | class EventHandlers 5 | { 6 | class itc_land_sphammohandler 7 | { 8 | fired = "_this call itc_land_SPHammoHandler_fnc_firedEH;"; 9 | }; 10 | }; 11 | }; 12 | }; -------------------------------------------------------------------------------- /Addons/itc_land_SPHammohandler/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_SPHammohandler { 3 | requiredaddons[] = {"itc_land_veh_weapons","itc_land_common"}; 4 | requiredversion = 1.8; 5 | units[] = {}; 6 | weapons[] = {}; 7 | magazines[] = {}; 8 | }; 9 | }; 10 | 11 | #include "CfgFunctions.hpp" 12 | #include "dialogConfig.hpp" 13 | #include "CfgWeapons.hpp" -------------------------------------------------------------------------------- /Addons/itc_land_SPHammohandler/functions/changeCharge.sqf: -------------------------------------------------------------------------------- 1 | params ["_increment"]; 2 | //private _vehicle = vehicle ace_player; 3 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 4 | 5 | //if charge has not been set for whatever reason then set to charge one and increment from there 6 | private _curChargeIndex = _vehicle getVariable ["itc_land_currentChargeIndex",1]; 7 | 8 | //get the currently selected ammunitions maximum charge 9 | private _selectedMagConfig = (_vehicle getVariable "itc_land_currentMagInfo") # 2; 10 | private _maxChargeIndex = getNumber (_selectedMagConfig >> "itc_land_maxChargeIndex"); 11 | 12 | //generate new charge value ensuring it is not bellow 1 or above maximum charge 13 | _curChargeIndex = ((_curChargeIndex + _increment) min _maxChargeIndex) max 1; 14 | 15 | ctrlSetText [86003, format["CHARGE: %1 / %2", _curChargeIndex, _maxChargeIndex]]; 16 | 17 | _vehicle setVariable ["itc_land_currentChargeIndex",_curChargeIndex,true]; 18 | 19 | _curChargeIndex; -------------------------------------------------------------------------------- /Addons/itc_land_SPHammohandler/functions/fillAmmoList.sqf: -------------------------------------------------------------------------------- 1 | //private _vehicle = vehicle ace_player; 2 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | private _vehMags = magazines _vehicle; 4 | private _magArray = []; 5 | 6 | lbClear 86001; //clear listbox 7 | 8 | //create array of magazines to count in the ammo handler 9 | { 10 | private _mag = _x; 11 | private _isCounted = 0; 12 | _isCounted = (configFile >> "CfgMagazines" >> _mag >> "itc_land_CountInAH") call BIS_fnc_getCfgData; 13 | //is round to be counted in ammo list: Not to include _chgX variants 14 | if(_isCounted == 1) then { 15 | _magArray pushBack _x; 16 | }; 17 | } forEach _vehMags; 18 | 19 | //consolidate array of magazines so we know how many of each we have. 20 | _magArray = _magArray call BIS_fnc_consolidateArray; 21 | 22 | //populate listbox 23 | { 24 | private _mag = _x # 0; 25 | private _count = _x # 1; 26 | private _displayName = getText (configFile >> "CfgMagazines" >> _mag >> "displayName"); 27 | 28 | private _index = lbAdd [86001, format["%1 -- %2", _count, _displayName]]; 29 | lbSetData [86001, _index, _mag]; 30 | 31 | } forEach _magArray; 32 | -------------------------------------------------------------------------------- /Addons/itc_land_SPHammohandler/functions/fillFuzeList.sqf: -------------------------------------------------------------------------------- 1 | //private _vehicle = vehicle ace_player; 2 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | private _selectedMagConfig = (_vehicle getVariable "itc_land_currentMagInfo") # 2; 4 | 5 | //Clear then re-fill the fuze combobox 6 | lbClear 86004; 7 | 8 | //Look up fuze on magazine and modes 9 | private _fuze = getText (_selectedMagConfig >> "itc_land_fuze"); 10 | private _fuzeModeArray = getArray (configFile >> "ITC_Land_CfgFuzes" >> _fuze >> "modes"); 11 | private _fuzeDescArray = getArray (configFile >> "ITC_Land_CfgFuzes" >> _fuze >> "modeDesc"); 12 | 13 | { 14 | private _desc = _fuzeDescArray # _forEachIndex; 15 | //player sideChat _desc; 16 | private _index = lbAdd [86004, format["%1", _desc]]; 17 | lbSetData [86004, _index, _x]; 18 | } forEach _fuzeModeArray; -------------------------------------------------------------------------------- /Addons/itc_land_SPHammohandler/functions/firedEH.sqf: -------------------------------------------------------------------------------- 1 | 2 | params ["_gun", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_shell", "_gunner"]; 3 | 4 | if (!(local _gunner)) exitWith {}; 5 | 6 | _gun removeMagazine _magazine; 7 | private _gunMags = magazines _gun; 8 | 9 | private _roundsFired = _gun getVariable ["itc_land_roundsFired",0]; 10 | _roundsFired = _roundsFired +1; 11 | _gun setVariable ["itc_land_roundsFired",_roundsFired,true]; 12 | 13 | _gun setVariable ["itc_land_ammoHandler_status",[1,0,"WAITING"],true]; 14 | [] call itc_land_SPHammoHandler_fnc_updateStatus; 15 | 16 | private _sphloadersettings = _gun getVariable ["itc_land_sphloadersettings", []]; 17 | private _ammoToLoad = ((_sphloadersettings # 0) # 1); 18 | private _roundCount = ((_sphloadersettings # 0) # 3); 19 | 20 | if ((_ammoToLoad in _gunMags) && {(_roundCount < 1) || ((_roundCount >= 1) && (_roundsFired < _roundCount))}) then { 21 | [] call itc_land_SPHammoHandler_fnc_loadGun; 22 | } else { 23 | if (_ammoToLoad in _gunMags) then { 24 | _gun setVariable ["itc_land_ammoHandler_status",[1,0,"WAITING"],true]; 25 | [] call itc_land_SPHammoHandler_fnc_updateStatus; 26 | } else { 27 | _gun setVariable ["itc_land_ammoHandler_status",[0,0,"WAITING"],true]; 28 | [] call itc_land_SPHammoHandler_fnc_updateStatus; 29 | }; 30 | }; 31 | -------------------------------------------------------------------------------- /Addons/itc_land_SPHammohandler/functions/onLBSelChanged_fuzeList.sqf: -------------------------------------------------------------------------------- 1 | params ["_control","_index"]; 2 | 3 | //Generate globals 4 | //private _vehicle = vehicle ace_player; 5 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 6 | private _selectedFuzeIndex = _index; 7 | _vehicle setVariable ["itc_land_selectedFuzeIndex",_selectedFuzeIndex,true]; 8 | 9 | private _fuzeMode = lbData [86004,_index]; 10 | _vehicle setVariable ["itc_land_selectedFuzeMode",_fuzeMode,true]; 11 | 12 | private _fuzeDesc = lbText [86004,_index]; 13 | _vehicle setVariable ["itc_land_selectedFuzeDesc",_fuzeDesc,true]; 14 | 15 | private _fuzeTime = _vehicle getVariable ["itc_land_fuzeTime",0]; 16 | 17 | ctrlShow [86005, false]; 18 | ctrlShow [86006, false]; 19 | 20 | if(_fuzeMode == "time") then { 21 | ctrlShow [86005, true]; 22 | ctrlShow [86006, true]; 23 | ctrlSetText [86006,format["%1", _fuzeTime]]; 24 | } else { 25 | ctrlShow [86005, false]; 26 | ctrlShow [86006, false]; 27 | }; -------------------------------------------------------------------------------- /Addons/itc_land_aps/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_APS { 3 | author = "ITC Addons Team"; 4 | authors[] = {"Yax"}; 5 | requiredaddons[] = {}; 6 | requiredversion = 1.94; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgFunctions.hpp" 14 | #include "config\cfgVehicles.hpp" 15 | -------------------------------------------------------------------------------- /Addons/itc_land_aps/config/cfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions { 2 | class itc_land_aps { 3 | class functions { 4 | class postInit { 5 | postInit = 1; 6 | file = "itc_land_aps\functions\postInit.sqf"; 7 | }; 8 | class vehicleInit { 9 | file = "itc_land_aps\functions\vehicleInit.sqf"; 10 | }; 11 | class fired { 12 | file = "itc_land_aps\functions\fired.sqf"; 13 | }; 14 | class canIntercept { 15 | file = "itc_land_aps\functions\canIntercept.sqf"; 16 | }; 17 | class attemptIntercept { 18 | file = "itc_land_aps\functions\attemptIntercept.sqf"; 19 | }; 20 | }; 21 | }; 22 | }; 23 | -------------------------------------------------------------------------------- /Addons/itc_land_aps/functions/fired.sqf: -------------------------------------------------------------------------------- 1 | params ["_unit", "_weapon", "", "", "_ammo", "", "_projectile", "_gunner"]; 2 | 3 | if (!local _unit) exitWith {}; 4 | 5 | private _simulation = getText (configFile >> "cfgAmmo" >> _ammo >> "simulation"); 6 | 7 | if (!(_simulation in ["shotRocket", "shotMissile"])) exitWith {}; 8 | 9 | [{ 10 | (_this select 0) params ["_projectile"]; 11 | //_aps params ["_name", "_position", "_direction", "_traverse", "_elevate", "_range", "_ammoCount", "_reloadTime"] 12 | if (!alive _projectile) exitWith { 13 | setAccTime 1; 14 | [_this select 1] call CBA_fnc_removePerFrameHandler; 15 | }; 16 | 17 | _begin = getPosASL _projectile; 18 | _end = _begin vectorAdd ((vectordir _projectile) vectorMultiply 30); 19 | _intersects = lineIntersectsWith [_begin, _end, objNull, objNull]; 20 | if (count _intersects > 0) exitWith { 21 | { // forEach _intersects 22 | private _aps = _x getVariable ["itc_land_aps_modules", nil]; 23 | if (!(isNil "_aps")) then { 24 | [_projectile, _x] call itc_land_aps_fnc_attemptIntercept; 25 | }; 26 | } forEach _intersects; 27 | }; 28 | }, 0.05, [_projectile]] call CBA_fnc_addPerFrameHandler; 29 | -------------------------------------------------------------------------------- /Addons/itc_land_aps/functions/postInit.sqf: -------------------------------------------------------------------------------- 1 | ["All", "Fired", itc_land_aps_fnc_fired] call CBA_fnc_addClassEventHandler; 2 | -------------------------------------------------------------------------------- /Addons/itc_land_aps/functions/vehicleInit.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * itc_land_aps_fnc_vehicleInit 3 | * 4 | * Initializes APS modules on vehicles 5 | * 6 | * params (array)[(object) vehicle] 7 | */ 8 | params ["_vehicle"]; 9 | 10 | private _config = (configFile >> "cfgVehicles" >> (typeof _vehicle) >> "itc_land_aps"); 11 | 12 | if (isClass _config) then { 13 | private _apsArray = []; 14 | private _apsSystems = "true" configClasses _config; 15 | { // forEach _apsSystems 16 | private _aps = [ 17 | getText (_x >> "displayName"), 18 | ((_x >> "position") call BIS_fnc_getCfgData), 19 | ((_x >> "turret") call BIS_fnc_getCfgData), 20 | getNumber (_x >> "direction"), 21 | getNumber (_x >> "traverse"), 22 | getNumber (_x >> "elevate"), 23 | getNumber (_x >> "range"), 24 | getNumber (_x >> "munitions"), 25 | getNumber (_x >> "pk"), 26 | getNumber (_x >> "reloadTime"), 27 | (getNumber (_x >> "trigger") == 1), 28 | 0 29 | ]; 30 | _apsArray pushBack _aps; 31 | } foreach _apsSystems; 32 | 33 | if (count _apsArray > 0) then { 34 | _vehicle setVariable ["itc_land_aps_modules", _apsArray, true]; 35 | }; 36 | }; 37 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_ballistics { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F","ace_common","ace_mk6mortar"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgFunctions.hpp" 14 | #include "config\cfgMisc.hpp" 15 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/config/CfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions 2 | { 3 | class itc_land_ballistics { 4 | class functions { 5 | class getVehicleShellType { 6 | file = "itc_land_ballistics\functions\tables\getVehicleShellType.sqf"; 7 | }; 8 | class interpolateSlices { 9 | file = "itc_land_ballistics\functions\interpolateSlices.sqf"; 10 | }; 11 | class calcBtabSolution { 12 | file = "itc_land_ballistics\functions\calcBtabSolution.sqf"; 13 | }; 14 | class calcShellTypeSolutions { 15 | file = "itc_land_ballistics\functions\calcShellTypeSolutions.sqf"; 16 | }; 17 | }; 18 | }; 19 | }; 20 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/functions/calcShellTypeSolutions.sqf: -------------------------------------------------------------------------------- 1 | params ["_shellType", "_gunPos", "_gunElev", "_gunDir", "_targetPos", "_targetEl"]; 2 | //_targetPos = [_targetGrid, true] call ace_common_fnc_getMapPosFromGrid; 3 | _distance = [_gunPos # 0, _gunPos # 1] distance [_targetPos # 0, _targetPos # 1]; 4 | _elevDiff = _targetEl - _gunElev; 5 | 6 | _df = [_gunDir, _gunPos getDir _targetPos] call itc_land_common_fnc_getDeflection; 7 | _relDirMils = (_gunPos getDir _targetPos) / 360 * 6400; 8 | _tableListFile = getText (configFile >> "CfgMagazines" >> _shellType >> "itc_land_btabListFile"); 9 | _tableList = [] call compile preProcessFile format[_tableListFile, _shellType]; 10 | //_tableList = [vehicle player] call itc_land_fcs_fnc_get_vehicle_tables; 11 | _tableList params ["_charges", "_tables"]; 12 | 13 | if(isnil{_tables}) exitWith {[]}; 14 | _solutions = []; 15 | for "_i" from 0 to (count _charges) - 1 step 1 do { 16 | _table = _tables # _i; 17 | _btab = [] call compile preProcessFile _table; 18 | _solution = [_btab, _distance, _elevDiff] call itc_land_ballistics_fnc_calcBtabSolution; 19 | if(count _solution > 0) then { 20 | _solutions = _solutions + [[_charges # _i, _relDirMils, _df] + _solution]; 21 | }; 22 | }; 23 | _solutions 24 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/functions/interpolateSlices.sqf: -------------------------------------------------------------------------------- 1 | params ["_sliceLow", "_sliceHigh", "_factor"]; 2 | _ret = []; 3 | for "_i" from 0 to ((count _sliceLow) - 1) step 1 do { 4 | _x1 = _sliceLow # _i; 5 | _x2 = _sliceHigh # _i; 6 | _ret = _ret + [(_x1 + (_x2 - _x1) * _factor)]; 7 | }; 8 | _ret 9 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/functions/tables/getVehicleShellType.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * 4 | * 5 | */ 6 | params ["_vehicle"]; 7 | 8 | _hasFCS = isClass (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "itc_land" >> "fcs"); 9 | if(!_hasFCS) exitWith {}; 10 | 11 | _tableListFile = (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "itc_land" >> "fcs" >> "tableList") call BIS_fnc_getCfgData; 12 | _tableListFile 13 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/tables/b_155/list.sqf: -------------------------------------------------------------------------------- 1 | [ 2 | ["single1","single1","single2","single2","single3","single3","single4","single4","single5","single5"], 3 | [ 4 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_0_LA.sqf", 5 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_0_HA.sqf", 6 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_1_LA.sqf", 7 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_1_HA.sqf", 8 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_2_LA.sqf", 9 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_2_HA.sqf", 10 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_3_LA.sqf", 11 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_3_HA.sqf", 12 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_4_LA.sqf", 13 | "itc_land_ballistics\tables\b_155\mortar_155mm_AMOS_4_HA.sqf" 14 | ] 15 | ] 16 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/tables/b_230/list.sqf: -------------------------------------------------------------------------------- 1 | [ 2 | ["Low Angle", "High Angle"], 3 | [ 4 | "itc_land_ballistics\tables\b_230\rockets_230mm_GAT_LA.sqf", 5 | "itc_land_ballistics\tables\b_230\rockets_230mm_GAT_HA.sqf" 6 | ] 7 | ] 8 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/tables/b_82/list.sqf: -------------------------------------------------------------------------------- 1 | [ 2 | ["Semi (close)","Semi (medium)","Semi (far)"], 3 | [ 4 | "itc_land_ballistics\tables\b_82\mortar_82mm_0.sqf", 5 | "itc_land_ballistics\tables\b_82\mortar_82mm_1.sqf", 6 | "itc_land_ballistics\tables\b_82\mortar_82mm_2.sqf" 7 | ] 8 | ] 9 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/tables/g_105/list.sqf: -------------------------------------------------------------------------------- 1 | [ 2 | ["1","1","2","2","3","3","4","4","5","5"], 3 | [ 4 | "itc_land_ballistics\tables\g_105\g105_ch1_la.sqf", 5 | "itc_land_ballistics\tables\g_105\g105_ch1_ha.sqf", 6 | "itc_land_ballistics\tables\g_105\g105_ch2_la.sqf", 7 | "itc_land_ballistics\tables\g_105\g105_ch2_ha.sqf", 8 | "itc_land_ballistics\tables\g_105\g105_ch3_la.sqf", 9 | "itc_land_ballistics\tables\g_105\g105_ch3_ha.sqf", 10 | "itc_land_ballistics\tables\g_105\g105_ch4_la.sqf", 11 | "itc_land_ballistics\tables\g_105\g105_ch4_ha.sqf", 12 | "itc_land_ballistics\tables\g_105\g105_ch5_la.sqf", 13 | "itc_land_ballistics\tables\g_105\g105_ch5_ha.sqf" 14 | ] 15 | ] 16 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/tables/g_122/list.sqf: -------------------------------------------------------------------------------- 1 | [ 2 | ["1","1","2","2","3","3","4","4","5","5"], 3 | [ 4 | "itc_land_ballistics\tables\g_122\g122_ch1_la.sqf", 5 | "itc_land_ballistics\tables\g_122\g122_ch1_ha.sqf", 6 | "itc_land_ballistics\tables\g_122\g122_ch2_la.sqf", 7 | "itc_land_ballistics\tables\g_122\g122_ch2_ha.sqf", 8 | "itc_land_ballistics\tables\g_122\g122_ch3_la.sqf", 9 | "itc_land_ballistics\tables\g_122\g122_ch3_ha.sqf", 10 | "itc_land_ballistics\tables\g_122\g122_ch4_la.sqf", 11 | "itc_land_ballistics\tables\g_122\g122_ch4_ha.sqf", 12 | "itc_land_ballistics\tables\g_122\g122_ch5_la.sqf", 13 | "itc_land_ballistics\tables\g_122\g122_ch5_ha.sqf" 14 | ] 15 | ] 16 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/tables/g_127/list.sqf: -------------------------------------------------------------------------------- 1 | [ 2 | ["1","1","2","2","3","3","4","4","5","5"], 3 | [ 4 | "itc_land_ballistics\tables\g_127\g127_ch1_la.sqf", 5 | "itc_land_ballistics\tables\g_127\g127_ch1_ha.sqf", 6 | "itc_land_ballistics\tables\g_127\g127_ch2_la.sqf", 7 | "itc_land_ballistics\tables\g_127\g127_ch2_ha.sqf", 8 | "itc_land_ballistics\tables\g_127\g127_ch3_la.sqf", 9 | "itc_land_ballistics\tables\g_127\g127_ch3_ha.sqf", 10 | "itc_land_ballistics\tables\g_127\g127_ch4_la.sqf", 11 | "itc_land_ballistics\tables\g_127\g127_ch4_ha.sqf", 12 | "itc_land_ballistics\tables\g_127\g127_ch5_la.sqf", 13 | "itc_land_ballistics\tables\g_127\g127_ch5_ha.sqf" 14 | ] 15 | ] 16 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/tables/g_152/list.sqf: -------------------------------------------------------------------------------- 1 | [ 2 | ["1","1","2","2","3","3","4","4","5","5"], 3 | [ 4 | "itc_land_ballistics\tables\g_152\g152_ch1_la.sqf", 5 | "itc_land_ballistics\tables\g_152\g152_ch1_ha.sqf", 6 | "itc_land_ballistics\tables\g_152\g152_ch2_la.sqf", 7 | "itc_land_ballistics\tables\g_152\g152_ch2_ha.sqf", 8 | "itc_land_ballistics\tables\g_152\g152_ch3_la.sqf", 9 | "itc_land_ballistics\tables\g_152\g152_ch3_ha.sqf", 10 | "itc_land_ballistics\tables\g_152\g152_ch4_la.sqf", 11 | "itc_land_ballistics\tables\g_152\g152_ch4_ha.sqf", 12 | "itc_land_ballistics\tables\g_152\g152_ch5_la.sqf", 13 | "itc_land_ballistics\tables\g_152\g152_ch5_ha.sqf" 14 | ] 15 | ] 16 | -------------------------------------------------------------------------------- /Addons/itc_land_ballistics/tables/g_155/list.sqf: -------------------------------------------------------------------------------- 1 | [ 2 | ["1","1","2","2","3","3","4","4","5","5"], 3 | [ 4 | "itc_land_ballistics\tables\g_155\g155_ch1_la.sqf", 5 | "itc_land_ballistics\tables\g_155\g155_ch1_ha.sqf", 6 | "itc_land_ballistics\tables\g_155\g155_ch2_la.sqf", 7 | "itc_land_ballistics\tables\g_155\g155_ch2_ha.sqf", 8 | "itc_land_ballistics\tables\g_155\g155_ch3_la.sqf", 9 | "itc_land_ballistics\tables\g_155\g155_ch3_ha.sqf", 10 | "itc_land_ballistics\tables\g_155\g155_ch4_la.sqf", 11 | "itc_land_ballistics\tables\g_155\g155_ch4_ha.sqf", 12 | "itc_land_ballistics\tables\g_155\g155_ch5_la.sqf", 13 | "itc_land_ballistics\tables\g_155\g155_ch5_ha.sqf" 14 | ] 15 | ] 16 | -------------------------------------------------------------------------------- /Addons/itc_land_bcs/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_bcs { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F","ace_common","ace_huntir"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgFunctions.hpp" 14 | -------------------------------------------------------------------------------- /Addons/itc_land_bcs/config/cfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions 2 | { 3 | class itc_land_bcs { 4 | class functions { 5 | class getBatteryPosition { 6 | file = "itc_land_bcs\functions\getBatteryPosition.sqf"; 7 | }; 8 | class adjustGrid { 9 | file = "itc_land_bcs\functions\adjustGrid.sqf"; 10 | }; 11 | class calculateTarget { 12 | file = "itc_land_bcs\functions\calculateTarget.sqf"; 13 | }; 14 | class calcSolutions { 15 | file = "itc_land_bcs\functions\calcSolutions.sqf"; 16 | }; 17 | }; 18 | }; 19 | }; 20 | -------------------------------------------------------------------------------- /Addons/itc_land_bcs/functions/adjustGrid.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Adjusts a grid 3 | * Params: origin positionASL, ot direction(mils), add/drop, left/right, up/down 4 | * Returns: positionASL 5 | */ 6 | params ["_origin", "_ot", "_ad", "_lr", "_ud"]; 7 | //player sideChat str _this; 8 | _otDeg = _ot / 6400 * 360; //ot dir in mils 9 | _target = _origin getPos [_ad, _otDeg]; //apply add/drop 10 | _target = _target getPos [_lr, _otDeg + 90]; //apply left/right by simply adding the distance 90 degrees offset from the OT 11 | _target = _target vectorAdd [0,0,_ud]; //finally apply up/down 12 | _target 13 | -------------------------------------------------------------------------------- /Addons/itc_land_bcs/functions/calculateTarget.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Calculates a target position 3 | * Params: targetTypeIndex, knownPointIndex, input0, input1, input2, input3 4 | * targetTypeIndices are: 0: grid, 1: shift, 2: polar, 3: quickLay 5 | * Returns: positionASL 6 | */ 7 | params ["_targetTypeIndex","_kpi","_in0","_in1","_in2","_in3"]; 8 | _targetPos = []; 9 | if(_targetTypeIndex == 0) then { 10 | _pos = [_in0, false] call ace_common_fnc_getMapPosFromGrid; 11 | _targetPos = [_pos # 0, _pos # 1, parseNumber _in1]; 12 | }; 13 | if(_targetTypeIndex == 1 || _targetTypeIndex == 2) then { 14 | _targetPos = (bcs_locations # _kpi) # 2; 15 | }; 16 | if(_targetTypeIndex == 3) then { 17 | _targetPos = [bcs_bty_guns] call itc_land_bcs_fnc_getBatteryPosition; 18 | }; 19 | 20 | if(_targetTypeIndex > 0) then { 21 | _lr = if(_targetTypeIndex == 1) then [{_in2},{"0"}]; 22 | _ud = if(_targetTypeIndex == 1) then [{_in3},{_in2}]; 23 | _targetPos = [_targetPos, parseNumber _in0, parseNumber _in1, parseNumber _lr, parseNumber _ud] call itc_land_bcs_fnc_adjustGrid; 24 | }; 25 | _targetPos 26 | -------------------------------------------------------------------------------- /Addons/itc_land_bcs/functions/getBatteryPosition.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Gets the center point of a list of howitzers 3 | * Params: array of howitzers([gun number, position string, positionASL, elevation, direction]) 4 | * Returns: positionASL 5 | */ 6 | params ["_gunList"]; 7 | if(count _gunList == 0) exitWith {[0,0,0]}; 8 | //add up all the eastings, northings and elevations 9 | _totalEasting = 0; 10 | _totalNorthing = 0; 11 | _totalElev = 0; 12 | 13 | { 14 | (_x # 2) params ["_easting", "_northing", "_elev"]; 15 | _totalEasting = _totalEasting + _easting; 16 | _totalNorthing = _totalNorthing + _northing; 17 | _totalElev = _totalElev + _elev; 18 | }forEach _gunList; 19 | 20 | _number = count _gunList; 21 | //return the totals divided by the gun count 22 | [_totalEasting / _number, _totalNorthing / _number, _totalElev / _number] 23 | -------------------------------------------------------------------------------- /Addons/itc_land_ciws/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_ciws { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax"}; 5 | requiredAddons[] = {"A3_Data_F", "A3_Characters_F", "A3_Air_F", "A3_Armor_F", "A3_Boat_F", "A3_Soft_F", "A3_Air_F_Heli_Heli_Transport_04", "A3_Characters_F_exp", "A3_Props_F_Argo", "A3_Props_F_Orange", "A3_Characters_F_Orange"}; 6 | requiredversion = 1.8; 7 | units[] = {"itc_land_cram_praetorian2","itc_land_cram_praetorian2_o","itc_land_ciws_centurion2"}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgVehicles.hpp" 14 | #include "config\cfgWeapons.hpp" 15 | #include "config\cfgMagazines.hpp" 16 | #include "config\cfgAmmo.hpp" 17 | #include "config\cfgMisc.hpp" 18 | 19 | #include "config\cfgFunctions.hpp" 20 | 21 | class Extended_FiredBIS_EventHandlers { 22 | class All { 23 | class itc_land_ciws { 24 | firedBIS = "_this call itc_land_ciws_fnc_fired"; 25 | }; 26 | }; 27 | }; 28 | -------------------------------------------------------------------------------- /Addons/itc_land_ciws/config/cfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions { 2 | class itc_land_ciws { 3 | class functions { 4 | class init { 5 | file = "itc_land_ciws\functions\init.sqf"; 6 | postInit = 1; 7 | }; 8 | class fired { 9 | file = "itc_land_ciws\functions\fired.sqf"; 10 | }; 11 | class shellTarget { 12 | file = "itc_land_ciws\functions\shellTarget.sqf"; 13 | }; 14 | }; 15 | }; 16 | }; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_ciws/config/cfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class CfgMagazines { 2 | class magazine_Cannon_Phalanx_x1550; 3 | class itc_land_20mm_phalanx_mag : magazine_Cannon_Phalanx_x1550 { 4 | ammo = "itc_land_20mm_phalanx"; 5 | tracersEvery=1; 6 | }; 7 | class VehicleMagazine; 8 | class magazine_Missile_rim116_x21 : VehicleMagazine { 9 | maxLeadSpeed = 3000; 10 | }; 11 | }; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_ciws/config/cfgMisc.hpp: -------------------------------------------------------------------------------- 1 | class itc_land_ciws { 2 | interceptable[] = { 3 | "Sh_155mm_AMOS", 4 | "Sh_82mm_AMOS_guided", 5 | "Missile_AGM_02_F", 6 | "LaserBombCore", 7 | "BombCore", 8 | "itc_land_230mm_he", 9 | "Missile_AGM_01_F", 10 | "ammo_Missile_AntiRadiationBase", 11 | "ammo_Missile_CruiseBase", 12 | "ammo_Bomb_SDB" 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /Addons/itc_land_ciws/config/cfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CfgWeapons { 2 | class weapon_Cannon_Phalanx; 3 | class itc_land_weapon_cram : weapon_Cannon_Phalanx { 4 | aiRateOfFire = 0; 5 | //aiDispersionCoefX=0.1; 6 | //aiDispersionCoefY=0.1; 7 | //dispersion = 0.0005; 8 | fireLightIntensity = 1; 9 | //ffCount = 0; 10 | maxRange = 2000; 11 | magazines[] = {"itc_land_20mm_phalanx_mag"}; 12 | }; 13 | 14 | class MissileLauncher; 15 | class weapon_rim116Launcher : MissileLauncher { 16 | maxRange = 9000; 17 | maxRangeProbab = 1; 18 | weaponLockDelay = 0; 19 | }; 20 | }; 21 | -------------------------------------------------------------------------------- /Addons/itc_land_ciws/functions/fired.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Yax 3 | * Fired event for certain weapon base classes 4 | * Checks if the ammo fired is of the correct base class for CIWS to apply, and if the shell type is one interceptable 5 | */ 6 | params ["", "", "", "", "_ammo", "", "_projectile", "_gunner"]; 7 | if(!local _gunner) exitWith {}; //make sure it doesn't get executed everywhere 8 | if(!ITC_LAND_CIWS) exitWith {}; //if the CIWS system is turned off, stop the script 9 | 10 | _interceptable = false; 11 | { //loop through interceptable ammo base classes 12 | if(_ammo isKindOf [_x, configFile >> "cfgAmmo"]) exitWith {_interceptable = true;}; 13 | }forEach ITC_LAND_CIWS_INTERCEPTABLE; 14 | 15 | if(!_interceptable) exitWith {}; //if the ammo can't be intercepted, kill the script; 16 | 17 | _this call itc_land_ciws_fnc_shellTarget; 18 | -------------------------------------------------------------------------------- /Addons/itc_land_ciws/functions/init.sqf: -------------------------------------------------------------------------------- 1 | ["ITC_LAND_CIWS", "CHECKBOX", "Enable CIWS System", "ITC Land", [true]] call CBA_Settings_fnc_init; //ciws system enabling options 2 | ITC_LAND_CIWS_INTERCEPTABLE = (configFile >> "itc_land_ciws" >> "interceptable") call BIS_fnc_getCfgData; //list of ciws munitions to allow people to add more in missions 3 | 4 | //Add EHs to wake up objects placed by a zeus which have radars which would otherwise not have them on. 5 | { 6 | private _groupEH = _x addEventHandler ["CuratorGroupPlaced", { 7 | params ["_curator", "_group"]; 8 | { 9 | (vehicle _x) setVehicleRadar 1; 10 | } forEach units _group 11 | }]; 12 | private _objectEH = _x addEventHandler ["CuratorObjectPlaced", { 13 | params ["_curator", "_entity"]; 14 | _entity setVehicleRadar 1; 15 | }]; 16 | 17 | _x setVariable ["ITC_Land_RadarOnEH",[_groupEH,_objectEH],true]; 18 | } forEach allCurators; 19 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_cobra{ 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax"}; 5 | requiredAddons[] = {"A3_Data_F", "A3_Characters_F", "A3_Air_F", "A3_Armor_F", "A3_Boat_F", "A3_Soft_F", "A3_Air_F_Heli_Heli_Transport_04", "A3_Characters_F_exp", "A3_Props_F_Argo", "A3_Props_F_Orange", "A3_Characters_F_Orange"}; 6 | requiredversion = 1.9; 7 | units[] = {"itc_land_COBRA01","itc_land_COBRA02","ITC_Land_Loudspeakers","ITC_Land_Loudspeakers2"}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgVehicles.hpp" 14 | #include "config\cfgFunctions.hpp" 15 | #include "config\cfgMisc.hpp" 16 | 17 | class Extended_FiredBIS_EventHandlers { 18 | class All { 19 | class itc_land_cobra { 20 | firedBIS = "_this call itc_land_cobra_fnc_fired"; 21 | }; 22 | }; 23 | }; 24 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/config/CfgMisc.hpp: -------------------------------------------------------------------------------- 1 | class ITC_Land_COBRA_SirenTypes { 2 | ITC_Land_Loudspeakers = 1; 3 | ITC_Land_Loudspeakers2 = 1; 4 | }; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/fired.sqf: -------------------------------------------------------------------------------- 1 | //if (!isServer) exitWith {}; 2 | 3 | params ["", "", "", "", "_ammo", "", "_projectile", "_gunner"]; 4 | 5 | if(_ammo isKindOf ["Sh_155mm_AMOS", configFile >> "cfgAmmo"] || _ammo isKindOf ["Sh_82mm_AMOS_guided", configFile >> "cfgAmmo"]) exitWith { 6 | //{ 7 | // (_x getVariable "shells") pushBack _projectile; 8 | //}forEach itc_land_cobras; 9 | itc_land_cobra_shells pushBack _projectile; 10 | }; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/getCobraData.sqf: -------------------------------------------------------------------------------- 1 | params ["_target","_transmission"]; 2 | _transmission params ["_destination","_origin","_header","_type","_data"]; 3 | 4 | private _returnData = [ 5 | _target, 6 | _target getVariable "firingPositions", 7 | _target getVariable "engagements", 8 | _target getVariable "activeShells" 9 | ]; 10 | [_origin,_target getVariable "datalink_id","cobra","returnData",_returnData] call itc_land_datalink_fnc_transmit; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/init.sqf: -------------------------------------------------------------------------------- 1 | itc_land_cobras = []; 2 | cbr_positionNames_start = 0; 3 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/processEngagement.sqf: -------------------------------------------------------------------------------- 1 | params ["_cbr", "_origin"]; 2 | _engagements = missionNameSpace getVariable "itc_land_cobra_engagements"; 3 | _existingPosition = nil; 4 | { 5 | _x params ["_ident","_shots", "_positions", "_firstShot", "_lastShot"]; 6 | for "_i" from 0 to (count _positions) - 1 step 1 do { 7 | if(_origin distance (_positions # _i) < 300 && (_lastShot + (missionNameSpace getVariable "itc_land_cobra_engagementTime")) > time) then { 8 | if(isNil{_existingPosition}) then { 9 | _existingPosition = _x; 10 | _positions pushBack _origin; 11 | _x set [1,_shots + 1]; 12 | _x set [4, time]; 13 | _x set [5, dayTime] 14 | }; 15 | }; 16 | }; 17 | }forEach _engagements; 18 | 19 | if(isNil{_existingPosition}) then { 20 | _start = missionNameSpace getVariable "itc_land_cobra_start"; 21 | _engagements pushBack [format["CB%1",[_start,4] call cba_fnc_formatNumber],1, [_origin], time, time, dayTime]; 22 | missionNameSpace setVariable ["itc_land_cobra_start", _start + 1]; 23 | }; 24 | missionNameSpace setVariable ["itc_land_cobra_engagements",_engagements]; 25 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/processImpact.sqf: -------------------------------------------------------------------------------- 1 | params ["_cbr", "_impact"]; 2 | _impact params ["_position", "_tof"]; 3 | private _impacts = missionNameSpace getVariable "itc_land_cobra_activeShells"; 4 | private _impactTime = cba_missionTime + _tof; 5 | _impacts pushBack [_position, _impactTime]; 6 | 7 | missionNameSpace setVariable ["itc_land_cobra_activeShells",_impacts]; 8 | 9 | private _sirenTypes = [0] call itc_land_cobra_fnc_sirenTypes; 10 | 11 | { 12 | [_x, _position, _impactTime] call itc_land_cobra_fnc_sirenTrigger; 13 | }forEach (nearestObjects [_position, _sirenTypes,500]); 14 | //["0000",_cbr getVariable "datalink_id","cobra","shellDetected",_impact] call itc_land_datalink_fnc_transmit; 15 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/processOrigin.sqf: -------------------------------------------------------------------------------- 1 | params ["_cbr", "_origin"]; 2 | _origins = missionNameSpace getVariable "itc_land_cobra_origins"; 3 | _firingPositions = missionNameSpace getVariable "itc_land_cobra_firingPositions"; 4 | _origins pushBack _origin; 5 | _existingPosition = nil; 6 | { 7 | _x params ["_shots", "_positions"]; 8 | for "_i" from 0 to (count _positions) - 1 step 1 do { 9 | if(_origin distance (_positions # _i) < 15) then { 10 | if(isNil{_existingPosition}) then { 11 | _existingPosition = _x; 12 | _positions pushBack _origin; 13 | _x set [0,_shots + 1]; 14 | _x set [2, time]; 15 | }; 16 | }; 17 | }; 18 | }forEach _firingPositions; 19 | 20 | if(isNil{_existingPosition}) then { 21 | _firingPositions pushBack [1, [_origin], time]; 22 | }; 23 | 24 | missionNameSpace setVariable ["itc_land_cobra_firingPositions",_firingPositions]; 25 | missionNameSpace setVariable ["itc_land_cobra_origins",_origins]; 26 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/scan.sqf: -------------------------------------------------------------------------------- 1 | params ["_cbr"]; 2 | _shells = missionNameSpace getVariable "itc_land_cobra_shells"; 3 | _toRemove = []; 4 | { 5 | _dir = deg (_cbr animationPhase "mainTurret"); 6 | _dir = (getDir _cbr - _dir); 7 | if(_dir > 360) then {_dir = _dir - 360;}; 8 | _angleTo = abs (((_dir) + 360) - ((_cbr getDir _x) + 360)); 9 | _inRange = _x distance _cbr < 10000; 10 | if(_angleTo < 23 && _inRange && !(terrainIntersectASL [getPosASL _x, (getPosASL _cbr) vectorAdd [0,0,3]])) then { 11 | _toRemove pushBack _x; 12 | _impact = [_x] call itc_land_cobra_fnc_calcImpact; 13 | [_cbr, _impact] call itc_land_cobra_fnc_processImpact; 14 | _origin = [_x] call itc_land_cobra_fnc_calcOrigin; 15 | [_cbr, _origin] call itc_land_cobra_fnc_processOrigin; 16 | [_cbr, _origin] call itc_land_cobra_fnc_processEngagement; 17 | }; 18 | if(!alive _x) then { 19 | _toRemove pushBack _x; 20 | } 21 | } forEach _shells; 22 | missionNameSpace setVariable ["itc_land_cobra_shells", _shells - _toRemove]; 23 | 24 | _activeShells = missionNameSpace getVariable "itc_land_cobra_activeShells"; 25 | _toRemoveShells = []; 26 | { 27 | if(time > _x # 1) then {_toRemoveShells pushBack _x;}; 28 | } forEach _activeShells; 29 | missionNameSpace setVariable ["itc_land_cobra_activeShells",_activeShells - _toRemoveShells]; 30 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/sirenInit.sqf: -------------------------------------------------------------------------------- 1 | //[this,"vtolAlarm",100,2] call itc_land_cobra_fnc_sirenInit 2 | 3 | if (!isServer) exitWith {}; 4 | params ["_siren","_sirenSound","_sirenDistance","_sirenDuration"]; 5 | 6 | //_siren setVariable ["datalinkMethods",["itc_land_datalink_fnc_receiveIDRegistry","itc_land_cobra_fnc_sirenTrigger"]]; 7 | 8 | //[_siren, "cobra", "shellDetected", { 9 | // (_this # 0) say3D ["alarmCar",150,0.8]; 10 | //}] call itc_land_datalink_fnc_registerEvent; 11 | //private _linkID = _siren getVariable ["init_datalink_id",""]; 12 | //[_siren,_linkID,"object_register", true] call itc_land_datalink_fnc_connect; 13 | 14 | private _sirenType = typeOf _siren; 15 | if (isNIl "ITC_Land_COBRA_SirenTypes") then { 16 | missionNameSpace setVariable ["ITC_Land_COBRA_SirenTypes",[_sirenType],true]; 17 | } else { 18 | ITC_Land_COBRA_SirenTypes append [_sirenType]; 19 | }; 20 | 21 | if ((count _this) < 4) then { 22 | _siren setVariable ["sirenParams",[true,"alarm",250,1.75],true]; 23 | } else { 24 | _siren setVariable ["sirenParams",[true,_sirenSound,_sirenDistance,_sirenDuration],true]; 25 | }; 26 | 27 | _this; 28 | -------------------------------------------------------------------------------- /Addons/itc_land_cobra/functions/sirenTypes.sqf: -------------------------------------------------------------------------------- 1 | // Returns an array of COBRA siren types in different formats 2 | // 0 (Default) = single array of config and mission defined sirens 3 | // 1 = nested array: 0: array of sirens defined in config, 1: array of sirens defined in mission 4 | 5 | params ["_mode"]; 6 | private _configTypes = []; 7 | { 8 | if (getNumber _x > 0) then { 9 | _configTypes pushBackUnique configName _x; 10 | }; 11 | } forEach configProperties [configFile >> "ITC_Land_COBRA_SirenTypes", "isNumber _x"]; 12 | private _missionTypes = missionNameSpace getVariable ["ITC_Land_COBRA_SirenTypes",[]]; 13 | private _allTypes = []; 14 | 15 | switch (_mode) do { 16 | case 0 : { 17 | { _allTypes pushBackUnique _x; } forEach _configTypes; 18 | { _allTypes pushBackUnique _x; } forEach _missionTypes; 19 | }; 20 | case 1 : { 21 | _allTypes append [_configTypes]; 22 | _allTypes append [_missionTypes]; 23 | }; 24 | default { }; 25 | }; 26 | 27 | _allTypes; 28 | -------------------------------------------------------------------------------- /Addons/itc_land_common/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_common { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax"}; 5 | requiredaddons[] = {"A3_Weapons_F"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgFunctions.hpp" 14 | #include "config\cfgEden.hpp" 15 | #include "config\ui\cfgUI.hpp" 16 | -------------------------------------------------------------------------------- /Addons/itc_land_common/config/cfgEden.hpp: -------------------------------------------------------------------------------- 1 | class Cfg3DEN { 2 | class Object { 3 | class AttributeCategories { 4 | class ace_attributes { 5 | displayName = "ITC Land Options"; 6 | collapsed = 1; 7 | class Attributes {}; 8 | }; 9 | }; 10 | }; 11 | }; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_common/config/cfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions 2 | { 3 | class itc_land_common { 4 | class functions { 5 | class getDeflection { 6 | file = "itc_land_common\functions\getDeflection.sqf"; 7 | }; 8 | class getCurVehicle { 9 | file = "itc_land_common\functions\getCurVehicle.sqf"; 10 | }; 11 | class isLaserCode { 12 | file = "itc_land_common\functions\isLaserCode.sqf"; 13 | }; 14 | class ctrlSetText { 15 | file = "itc_land_common\functions\ctrlSetText.sqf"; 16 | }; 17 | class ctrlSetFade { 18 | file = "itc_land_common\functions\ctrlSetFade.sqf"; 19 | }; 20 | class FormatAsMils { 21 | file = "itc_land_common\functions\FormatAsMils.sqf"; 22 | }; 23 | class FormatAsMeters { 24 | file = "itc_land_common\functions\FormatAsMeters.sqf"; 25 | }; 26 | }; 27 | }; 28 | }; 29 | -------------------------------------------------------------------------------- /Addons/itc_land_common/data/arrow_combo_active_ca.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_common/data/arrow_combo_active_ca.paa -------------------------------------------------------------------------------- /Addons/itc_land_common/data/arrow_combo_ca.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_common/data/arrow_combo_ca.paa -------------------------------------------------------------------------------- /Addons/itc_land_common/data/arty-icon.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_common/data/arty-icon.paa -------------------------------------------------------------------------------- /Addons/itc_land_common/data/arty-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_common/data/arty-icon.png -------------------------------------------------------------------------------- /Addons/itc_land_common/data/screen-night.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_common/data/screen-night.paa -------------------------------------------------------------------------------- /Addons/itc_land_common/data/screen.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_common/data/screen.paa -------------------------------------------------------------------------------- /Addons/itc_land_common/data/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_common/data/screen.png -------------------------------------------------------------------------------- /Addons/itc_land_common/functions/FormatAsMeters.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Pabst Mirror, Toadball 3 | * Converts input distance in meters to string with prefix for negative angles 4 | * Derived from old: ace_mk6mortar_fnc_dev_formatNumber 5 | * 6 | * Arguments: 7 | * 0: Input number 8 | * 1: Number of decimal places 9 | * 2: Number of integer places, used for adding leading 0s 10 | * 11 | * Return Value: 12 | * Formatted number 13 | * 14 | * Example: 15 | * [45, 0, 4] call itc_land_common_fnc_FormatAsMeters = "0045" 16 | * 17 | */ 18 | 19 | params ["_input", "_decimalPlaces", "_integerPlaces"]; 20 | 21 | private _prefix = if (_input < 0) then {"-"} else {""}; 22 | private _return = [abs (_input), _integerPlaces, _decimalPlaces, false] call CBA_fnc_formatNumber; 23 | (_prefix + _return) 24 | -------------------------------------------------------------------------------- /Addons/itc_land_common/functions/FormatAsMils.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Pabst Mirror, Toadball 3 | * Converts input angle from degrees to mils and formats as string with prefix for negative angles 4 | * Derived from old: ace_mk6mortar_fnc_dev_formatNumber 5 | * 6 | * Arguments: 7 | * 0: Input number 8 | * 1: Number of decimal places 9 | * 2: Number of integer places, used for adding leading 0s 10 | * 11 | * Return Value: 12 | * Formatted number 13 | * 14 | * Example: 15 | * [45, 0, 4] call itc_land_common_fnc_FormatAsMils = "0800" 16 | * 17 | */ 18 | 19 | params ["_input", "_decimalPlaces", "_integerPlaces"]; 20 | 21 | _input = _input * (6400 / 360); 22 | 23 | private _prefix = if (_input < 0) then {"-"} else {""}; 24 | private _return = [abs (_input), _integerPlaces, _decimalPlaces, false] call CBA_fnc_formatNumber; 25 | (_prefix + _return) 26 | -------------------------------------------------------------------------------- /Addons/itc_land_common/functions/ctrlSetFade.sqf: -------------------------------------------------------------------------------- 1 | params ["_display", "_ctrl", "_fade"]; 2 | 3 | (_display displayCtrl _ctrl) ctrlSetFade _fade; 4 | (_display displayCtrl _ctrl) ctrlCommit 0; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_common/functions/ctrlSetText.sqf: -------------------------------------------------------------------------------- 1 | params ["_display", "_ctrl", "_text"]; 2 | 3 | (_display displayCtrl _ctrl) ctrlSetText _text; 4 | -------------------------------------------------------------------------------- /Addons/itc_land_common/functions/fnc_getDeflection.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Toadball 3 | * Takes directions in degrees, converts them to mils and then calculates deflection. 4 | * 5 | * Arguments: 6 | * 0: Direction to fixed point 7 | * 1: Direction to deflect to: Gun direction / Target Direction 8 | * 9 | * Return Value: 10 | * number 11 | * 12 | * Example: 13 | * [16, 16] call itc_land_fnc_getDeflection = "3200" 14 | * 15 | */ 16 | 17 | params ["_fixed","_deflecting"]; 18 | 19 | //convert degrees to mills 20 | _fixed = (_fixed / 360) * 6400; 21 | _deflecting = (_wepDir / 360) * 6400; 22 | if ((_fixed < 1) && (_deflecting > 3200)) then {_fixed = 6400}; 23 | 24 | //calculate deflection using mills 25 | private _df = 3200 - (_fixed - _deflecting); 26 | 27 | // ensure numbers are in range 0 - 6400 28 | _df = if(_df < 0) then [{_df + 6400}, {_df}]; 29 | _df = if(_df > 6400) then [{_df - 6400}, {_df}]; 30 | 31 | [_df,4,0] call CBA_fnc_formatNumber; 32 | -------------------------------------------------------------------------------- /Addons/itc_land_common/functions/getCurVehicle.sqf: -------------------------------------------------------------------------------- 1 | //Depending on where the player camera is return ace_player or UAV 2 | private _return = nil; 3 | 4 | if (cameraOn in allUnitsUAV) then { 5 | _return = getConnectedUav ace_player; 6 | } else { 7 | _return = vehicle ace_player; 8 | }; 9 | 10 | _return; -------------------------------------------------------------------------------- /Addons/itc_land_common/functions/getDeflection.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Toadball 3 | * Takes directions in degrees, converts them to mils and then calculates deflection. 4 | * 5 | * Arguments: 6 | * 0: Direction to fixed point 7 | * 1: Direction to deflect to: Gun direction / Target Direction 8 | * 9 | * Return Value: 10 | * number 11 | * 12 | * Example: 13 | * [16, 16] call itc_land_fnc_getDeflection = "3200" 14 | * 15 | */ 16 | 17 | params ["_fixed","_deflecting"]; 18 | 19 | //convert degrees to mills 20 | _fixed = (_fixed / 360) * 6400; 21 | _deflecting = (_deflecting / 360) * 6400; 22 | if ((_fixed < 1) && (_deflecting > 3200)) then {_fixed = 6400}; 23 | 24 | //calculate deflection using mills 25 | private _df = 3200 - (_fixed - _deflecting); 26 | 27 | // ensure numbers are in range 0 - 6400 28 | _df = if(_df < 0) then [{_df + 6400}, {_df}]; 29 | _df = if(_df > 6400) then [{_df - 6400}, {_df}]; 30 | 31 | [_df,4,0] call CBA_fnc_formatNumber; 32 | -------------------------------------------------------------------------------- /Addons/itc_land_common/functions/isLaserCode.sqf: -------------------------------------------------------------------------------- 1 | params ["_number"]; 2 | 3 | if(_number < 1111 || _number > 1788) exitWith{false}; 4 | if((str _number) find "0" >= 0 || (str _number) find "9" >= 0) exitWith {false}; 5 | 6 | true -------------------------------------------------------------------------------- /Addons/itc_land_datalink/clientFunctions/connect.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Connect to the datalink server 3 | * Params 4 | * - (string)Connecting system 5 | * - (string)ID, default none, will auto-assign 6 | * - Object, default player 7 | * - bool autostore - automatically receive and store id on target 8 | */ 9 | params[["_object",player],["_id",""],"_system",["_autoStore", false]]; 10 | 11 | if(_autoStore) then { 12 | [_object, "object_register", "response", { 13 | _this call itc_land_datalink_fnc_receiveIDRegistry; 14 | }] call itc_land_datalink_fnc_registerEvent; 15 | }; 16 | 17 | ["clientConnect",[_object, _id, _system]] call CBA_fnc_serverEvent; 18 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/clientFunctions/disconnect.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Disconnect from the datalink server 3 | * Params 4 | * - (string)ID, default none, will remove all IDs of object 5 | * - object, which object the ID belongs to(if removing all) 6 | */ 7 | params[["_object",player],["_id",""]]; 8 | 9 | ["clientDisconnect",[_object, _id]] call CBA_fnc_serverEvent; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/clientFunctions/onClientRX.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Non-player receive data over datalink 3 | * Params 4 | * - object 5 | * - transmission 6 | */ 7 | params ["_object","_transmission"]; 8 | _transmission params ["_destination","_origin","_header","_type","_data"]; 9 | 10 | private _datalinkMethods = _object getVariable ["datalink_functions",[]]; 11 | { 12 | _x params ["_target", "_rxheader", "_rxtype", "_code"]; 13 | if(_header == _rxheader && _type == _rxtype) then { 14 | [_object, _transmission] call _code; 15 | }; 16 | }forEach _datalinkMethods; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/clientFunctions/registerEvent.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Register an event to an object 3 | */ 4 | params ["_target", "_header", "_type", "_code"]; 5 | 6 | private _functions = _target getVariable ["datalink_functions",[]]; 7 | _functions pushBack _this; 8 | _target setVariable ["datalink_functions",_functions]; 9 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/clientFunctions/transmit.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Transmit data over datalink 3 | * Params 4 | * - Destination id 5 | * - origin ID 6 | * - header 7 | * - type 8 | * - data 9 | */ 10 | params["_destination","_origin","_header","_type","_data"]; 11 | private _validDestination = [_destination, false, true] call itc_land_datalink_fnc_validateID; 12 | private _validOrigin = [_origin] call itc_land_datalink_fnc_validateID; 13 | 14 | if(_validDestination && _validOrigin) then { 15 | ["clientTX", [_destination,_origin,_header,_type,_data]] call CBA_fnc_serverEvent; 16 | }; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/clientFunctions/unregisterEvent.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * unregister an event 3 | */ 4 | params ["_target", "_header", "_type"]; 5 | 6 | private _functions = _target getVariable "datalink_functions"; 7 | private _indexToRemove = _functions findIf {((_x # 1) == _target && (_x # 2) == _type)}; 8 | if(_indexToRemove > -1) then { 9 | _functions deleteAt _indexToRemove; 10 | }; 11 | _target setVariable ["datalink_functions",_functions]; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_datalink { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"cba_common"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgFunctions.hpp" 14 | #include "config\cfgMisc.hpp" 15 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/config/cfgMisc.hpp: -------------------------------------------------------------------------------- 1 | class itc_land_datalink { 2 | allowedIDCharacters[] = {"1","2","3","4","5","6","7","8","9","0","A","B","C","D","E","F"}; 3 | IDLength = 4; 4 | }; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/functions/init.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Initialisation datalink settings 3 | * This will be run on both clients and server 4 | */ 5 | 6 | //Load the list of characters allowed in IDs 7 | itc_land_datalink_allowedIDCharacters = (configFile >> "itc_land_datalink" >> "allowedIDCharacters") call BIS_fnc_getCfgData; 8 | //Load the list of characters allowed in IDs 9 | itc_land_datalink_IDLength = getNumber (configFile >> "itc_land_datalink" >> "IDLength"); 10 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/serverFunctions/findAvailableID.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Find an available datalink ID 3 | * Method will only function on server 4 | * Params: 5 | * - group ID 6 | * Return: 7 | * - ID string 8 | */ 9 | 10 | params ["_groupID"]; 11 | private ["_firstChar","_secondChar","_id","_isAvailableID"]; 12 | 13 | private _foundID = false; 14 | private _isAvailableID = false; 15 | private _characterHighestIndex = ((count itc_land_datalink_allowedIDCharacters) - 1); 16 | //loop through first char 17 | for "_firstCharIndex" from 0 to _characterHighestIndex do { 18 | _firstChar = itc_land_datalink_allowedIDCharacters # _firstCharIndex; 19 | //loop through second char 20 | if(_isAvailableID) exitWith {}; 21 | for "_secondCharIndex" from 0 to _characterHighestIndex do { 22 | _secondChar = itc_land_datalink_allowedIDCharacters # _secondCharIndex; 23 | //generate ID 24 | _id = _groupID + _firstChar + _secondChar; 25 | //check if ID is free 26 | _isAvailableID = !([itc_land_datalink_nodes, _id] call CBA_fnc_hashHasKey); 27 | //exit if free 28 | if(_isAvailableID) exitWith {}; 29 | }; 30 | }; 31 | 32 | _id 33 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/serverFunctions/findIDTargets.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Find objects for the IDs 3 | * Method will only function on server 4 | * params: ID string 5 | * returns: targets 6 | */ 7 | params ["_id"]; 8 | private ["_groupID","_nodeID","_target","_groupMatch","_nodeMatch"]; 9 | 10 | private _targets = []; 11 | 12 | //split the target ID in to group and node 13 | private _targetGroupID = [_id, 0, 2] call CBA_fnc_substr; 14 | private _targetNodeID = [_id, 2, 2] call CBA_fnc_substr; 15 | 16 | //loop through all IDs 17 | private _allIDs = [itc_land_datalink_nodes] call CBA_fnc_hashKeys; 18 | { 19 | _target = [itc_land_datalink_nodes, _x] call CBA_fnc_hashGet; 20 | if(_x == _id) then { 21 | //if ID matches the target ID then push back target 22 | _targets pushBack _target; 23 | } else { 24 | if(_targetGroupID == "00" || _targetNodeID == "00") then { 25 | //split ID in to group and node 26 | _groupID = [_x, 0, 2] call CBA_fnc_substr; 27 | _nodeID = [_x, 2, 2] call CBA_fnc_substr; 28 | //check if they match 29 | _groupMatch = (_groupID == _targetGroupID || _targetGroupID == "00"); 30 | _nodeMatch = (_nodeID == _targetNodeID || _targetNodeID == "00"); 31 | //if both match then push back target 32 | if(_groupMatch && _nodeMatch) then { 33 | _targets pushBack _target; 34 | }; 35 | }; 36 | }; 37 | }forEach _allIDs; 38 | 39 | _targets 40 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/serverFunctions/init.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Initialisation of the datalink server 3 | * Can only be run on the server 4 | */ 5 | if(!isServer) exitWith {}; //end code if not server 6 | 7 | //create the address list hash, this will consist of IDGR: machine(server or client) 8 | itc_land_datalink_nodes = [] call CBA_fnc_hashCreate; 9 | 10 | //add the eventhandlers for connecting and disconnecting clients 11 | itc_land_datalink_eh_clientConnect = ["clientConnect", itc_land_datalink_fnc_onClientConnect] call CBA_fnc_addEventHandler; 12 | itc_land_datalink_eh_clientDisconnect = ["clientDisconnect", itc_land_datalink_fnc_onClientDisconnect] call CBA_fnc_addEventHandler; 13 | 14 | //add eventhandlers for handling transmissions 15 | itc_land_datalink_eh_clientTX = ["clientTX", itc_land_datalink_fnc_onClientTX] call CBA_fnc_addEventHandler; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/serverFunctions/onCLientDisconnect.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Process a discconnecting client 3 | * params: ID string, player, requesting system string 4 | */ 5 | params ["_player","_id"]; 6 | 7 | //remove all IDs with this target 8 | if(isNil {_id} || _id == "") then { 9 | private _toRemoveIDs = []; 10 | [itc_land_datalink_nodes,{ 11 | if(_value == _player) then { 12 | _toRemoveIDs pushBack _key; 13 | }; 14 | }] call CBA_fnc_hashEachPair; 15 | { 16 | [itc_land_datalink_nodes,_x] call CBA_fnc_hashRem; 17 | }forEach _toRemoveIDs; 18 | } else { 19 | [itc_land_datalink_nodes,_id] call CBA_fnc_hashRem; 20 | }; 21 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/serverFunctions/onClientConnect.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Process a connecting client 3 | * params: ID string, player, requesting system string 4 | * returns: nothing, sends targetEvent to origin with [success, [strings]] 5 | */ 6 | params ["_player","_id","_requestingSystem"]; 7 | 8 | //auto-assign ID if not set 9 | if(isNil{_id} || _id == "") then { 10 | player sideChat format["ID %1", _id]; 11 | _id = ["01"] call itc_land_datalink_fnc_findAvailableID; 12 | }; 13 | 14 | //validate the id 15 | private _isAvailableID = false; 16 | //check formating 17 | ([_id, true] call itc_land_datalink_fnc_validateID) params ["_isValidID","_errors"]; 18 | //check if it's free 19 | private _isAvailableID = !([itc_land_datalink_nodes, _id] call CBA_fnc_hashHasKey); 20 | if(!_isAvailableID) then { 21 | _errors pushBack "ID unavailable"; 22 | }; 23 | 24 | //if valid and available then add it 25 | private _transmission = []; 26 | if (_isAvailableID && _isValidID) then { 27 | [itc_land_datalink_nodes, _id, _player] call CBA_fnc_hashSet; 28 | _transmission = [_id,"0000",_requestingSystem,"response",[true,_id]]; 29 | } else { //return errors 30 | _transmission = ["","0000",_requestingSystem,"response",[false,_errors]]; 31 | }; 32 | 33 | [_player, _transmission] remoteExec ["itc_land_datalink_fnc_onClientRX", _player, false]; 34 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/serverFunctions/onClientTX.sqf: -------------------------------------------------------------------------------- 1 | /** 2 | * Transmit data over datalink 3 | * Params: 4 | * - Destination id 5 | * - origin ID 6 | * - header 7 | * - type 8 | * - data 9 | */ 10 | params["_destination","_origin","_header","_type","_data"]; 11 | 12 | //find all targets matching the destination ID 13 | private _targets = [_destination] call itc_land_datalink_fnc_findIDTargets; 14 | 15 | //send it on to non-player targets 16 | { 17 | [_x,_this] remoteExec ["itc_land_datalink_fnc_onClientRX", _x, false]; 18 | }forEach _targets; 19 | -------------------------------------------------------------------------------- /Addons/itc_land_datalink/serverFunctions/receiveIDRegistry.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Process datalink registration data 3 | */ 4 | params ["_target","_transmission"]; 5 | _transmission params ["_destination","_origin","_header","_type","_data"]; 6 | 7 | _data params ["_success","_info"]; 8 | if(_success) then { 9 | _target setVariable ["datalink_id",_destination]; 10 | }; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_guidance/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_guidance { 3 | requiredaddons[] = {}; 4 | requiredversion = 1.1; 5 | units[] = {}; 6 | weapons[] = {}; 7 | magazines[] = {}; 8 | }; 9 | }; 10 | #include "config\CfgFunctions.hpp" 11 | -------------------------------------------------------------------------------- /Addons/itc_land_guidance/config/CfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions 2 | { 3 | class itc_land_guidance { 4 | class functions { 5 | class lgm15x { 6 | file = "itc_land_guidance\functions\lgm15x.sqf"; 7 | }; 8 | class pgm15x { 9 | file = "itc_land_guidance\functions\pgm15x.sqf"; 10 | }; 11 | class pgm230 { 12 | file = "itc_land_guidance\functions\pgm230.sqf"; 13 | }; 14 | }; 15 | }; 16 | }; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_packable/CfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions { 2 | class itc_land_packable { 3 | class functions { 4 | class pack { 5 | file = "itc_land_packable\functions\fnc_pack.sqf"; 6 | }; 7 | class unpack { 8 | file = "itc_land_packable\functions\fnc_unpack.sqf"; 9 | }; 10 | class canunpack { 11 | file = "itc_land_packable\functions\fnc_canunpack.sqf"; 12 | }; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_packable/CfgVehicles.hpp: -------------------------------------------------------------------------------- 1 | class CfgVehicles { 2 | 3 | class Man; 4 | class CAManBase: Man { 5 | class ACE_SelfActions { 6 | class ACE_Equipment { 7 | class ITC_Land_Unpack { 8 | displayName = "Unpack"; 9 | condition = "[ACE_player] call itc_land_packable_fnc_canunpack"; 10 | statement = ""; 11 | exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; 12 | showDisabled = 0; 13 | priority = 0; 14 | }; 15 | }; 16 | }; 17 | }; 18 | 19 | }; 20 | -------------------------------------------------------------------------------- /Addons/itc_land_packable/CfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CBA_MiscItem_ItemInfo; 2 | class ACE_ItemCore; 3 | class itc_land_packableItem: ACE_ItemCore { 4 | scope = 0; 5 | author = "Toadball"; 6 | displayName = "Packable Item (Packed)"; 7 | descriptionShort = "Packable Item (Packed)"; 8 | model = "\A3\Structures_F_Heli\Items\Luggage\PlasticCase_01_small_F.p3d"; 9 | 10 | class ItemInfo: CBA_MiscItem_ItemInfo { 11 | mass = 75; 12 | allowedSlots[] = {901}; 13 | scope = 0; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_packable/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_packable { 3 | requiredaddons[] = {}; 4 | requiredversion = 1.9; 5 | units[] = {}; 6 | weapons[] = {}; 7 | magazines[] = {}; 8 | }; 9 | }; 10 | 11 | #include "CfgFunctions.hpp" 12 | #include "CfgWeapons.hpp" 13 | #include "CfgVehicles.hpp" 14 | -------------------------------------------------------------------------------- /Addons/itc_land_packable/functions/fnc_Pack.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Toadball 3 | * "Packs" an item into player inventory or a ground weaponholder if there is no space. 4 | * 5 | * Arguments: 6 | * 0: Target 7 | * 1: CALLER 8 | * 9 | * Return Value: 10 | * Nothing 11 | * 12 | * Example: 13 | * [this] call TB_RALLYPOINT_FNC_PACK 14 | * 15 | * Public: No 16 | */ 17 | 18 | params ["_item","_caller"]; 19 | 20 | //get item to pack item to: 21 | private _packed = (configFile >> "CfgVehicles" >> typeOf _item >> "itc_land_PacksTo") call BIS_fnc_getCfgData; 22 | private _displayName = (configFile >> "CfgVehicles" >> typeOf _item >> "displayName") call BIS_fnc_getCfgData; 23 | private _progtext = Format ["Packing: %1",_displayName]; 24 | 25 | //Pack Darter 26 | [_caller, "MedicOther"] call ace_common_fnc_doGesture; 27 | [ 28 | 5, 29 | [_caller,_item,_packed], 30 | { 31 | (_this select 0) params ["_caller","_item","_packed"]; 32 | if (local _item) then { 33 | deleteVehicle _item; 34 | private _gwh = [getPos _item, 0, 'GroundWeaponHolder', side _caller] call BIS_fnc_spawnVehicle; 35 | (_gwh select 0) addItemCargo [_packed,1]; 36 | }; 37 | }, 38 | {}, 39 | _progtext 40 | ] call ace_common_fnc_progressBar; 41 | -------------------------------------------------------------------------------- /Addons/itc_land_packable/functions/fnc_canunpack.sqf: -------------------------------------------------------------------------------- 1 | params ["_unit"]; 2 | if (!((vehicle _unit) isKindOf 'Man')) exitWith { false }; 3 | 4 | private _items = [_unit] call CBA_fnc_uniqueUnitItems; 5 | private _check = _items findIf { "itc_land_packableItem" in ([(configFile >> "CfgWeapons" >> _x), true] call BIS_fnc_returnParents) }; 6 | if (_check < 0) exitWith { false }; 7 | 8 | true; 9 | -------------------------------------------------------------------------------- /Addons/itc_land_packable/functions/fnc_unPack.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Toadball 3 | * UAV unpack function. 4 | * 5 | * Arguments: 6 | * 0: CALLER 7 | * 8 | * Return Value: 9 | * unpacked drone, hopefully 10 | * 11 | * Example: 12 | * [uavItem,this] call ITC_LAND_VEH_DARTER_FNC_UNPACK 13 | * 14 | */ 15 | params ["_item","_caller"]; 16 | 17 | //get class of UAV to unpack: 18 | private _unpacked = (configFile >> "CfgWeapons" >> _item >> "itc_land_unPacksTo") call BIS_fnc_getCfgData; 19 | private _displayName = (configFile >> "CfgVehicles" >> _unpacked >> "displayName") call BIS_fnc_getCfgData; 20 | private _progtext = Format ["Unpacking: %1",_displayName]; 21 | 22 | //Assemble Darter 23 | [_caller, "MedicOther"] call ace_common_fnc_doGesture; 24 | [ 25 | 5, 26 | [_caller,_unpacked,_item], 27 | { 28 | (_this select 0) params ["_caller","_unpacked","_item"]; 29 | if ( local _caller) then { 30 | //create drone and if ACE battery module is present set fuel to 0 <- Future Toad get on this already, KR, Past Toad 31 | private _drone = _unpacked createVehicle ( getPos _caller ); 32 | createVehicleCrew _drone; 33 | _drone setPos (_caller modelToWorld [0,1,0]); 34 | //if ( isClass(configFile >> "CfgPathces" >> "ace_logistics_uavbattery") ) then { _drone setFuel 0; }; 35 | _caller removeItem _item; 36 | }; 37 | [_caller, 'PutDown'] call ace_common_fnc_doGesture; 38 | }, 39 | {}, 40 | _progtext 41 | ] call ace_common_fnc_progressBar; 42 | -------------------------------------------------------------------------------- /Addons/itc_land_remoteFrag/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_remoteFrag { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {"itc_land_remoteFrag_mag"}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgMagazines.hpp" 14 | #include "config\cfgAmmo.hpp" 15 | #include "config\cfgVehicles.hpp" 16 | #include "config\cfgWeapons.hpp" 17 | -------------------------------------------------------------------------------- /Addons/itc_land_remoteFrag/config/cfgAmmo.hpp: -------------------------------------------------------------------------------- 1 | class CfgAmmo { 2 | class GrenadeHand; 3 | class APERSMineDispenser_Ammo; 4 | class ITC_Land_RemoteFrag_Ammo : APERSMineDispenser_Ammo { 5 | submunitionAmmo[] = {"ITC_Land_remoteFrag_Deploy",1}; 6 | ace_explosives_Explosive = "ITC_Land_RemoteFrag_Ammo_Scripted"; 7 | ace_explosives_magazine = "itc_land_remoteFrag_mag"; 8 | defaultMagazine = "itc_land_remoteFrag_mag"; 9 | model = "\A3\Weapons_f\ammo\Handgrenade_throw"; 10 | submunitionConeType[] = {"randomupcone",1}; 11 | indirectHit = 0; 12 | hit = 0; 13 | submunitionInitSpeed = 1; 14 | }; 15 | class ITC_Land_RemoteFrag_Ammo_Scripted : ITC_Land_RemoteFrag_Ammo { 16 | triggerWhenDestroyed = 1; 17 | }; 18 | class APERSMineDispenser_Deploy; 19 | class ITC_Land_remoteFrag_Deploy : APERSMineDispenser_Deploy { 20 | submunitionAmmo = "GrenadeHand"; 21 | //model = "\A3\Weapons_f\ammo\Handgrenade_throw"; 22 | }; 23 | class ITC_Land_remoteFrag_Munition : GrenadeHand { 24 | ace_frag_enabled = 1; 25 | weaponLockSystem = "1+2+4"; 26 | }; 27 | }; 28 | -------------------------------------------------------------------------------- /Addons/itc_land_remoteFrag/config/cfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class CfgMagazines { 2 | class HandGrenade; 3 | class ITC_Land_remoteFrag_mag : HandGrenade { 4 | displayName = "Remote Frag"; 5 | displayNameShort = "Remote Frag"; 6 | ammo = "ITC_Land_RemoteFrag_Ammo"; 7 | ACE_Explosives_SetupObject = "ITC_Land_remoteFrag_Place"; 8 | ACE_Explosives_DelayTime = 0.2; 9 | ACE_Explosives_Placeable = 1; 10 | model = "\A3\Weapons_f\ammo\Handgrenade_throw"; 11 | scope = 2; 12 | class ACE_Triggers { 13 | SupportedTriggers[] = {"Command","MK16_Transmitter"}; 14 | class Command { 15 | ammo = "ITC_Land_RemoteFrag_Ammo"; 16 | }; 17 | class MK16_Transmitter: Command {}; 18 | }; 19 | }; 20 | }; 21 | -------------------------------------------------------------------------------- /Addons/itc_land_remoteFrag/config/cfgVehicles.hpp: -------------------------------------------------------------------------------- 1 | class CfgVehicles { 2 | class ACE_Explosives_Place; 3 | class ITC_Land_remoteFrag_Place : ACE_Explosives_Place { 4 | displayName = "Remote Frag Grenade"; // Name of the item 5 | model = "\A3\Weapons_f\ammo\Handgrenade_throw"; 6 | ACE_offset[] = {0, 0, 0}; // Offset of the interaction point from the model in meters on the X,Y,Z axis. Try setting this to the place where it makes most sense (e.g. to buttons/switches/pins) 7 | }; 8 | }; 9 | -------------------------------------------------------------------------------- /Addons/itc_land_remoteFrag/config/cfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | class CfgWeapons { 3 | class ACE_ItemCore; // ACE3 base item class 4 | class ACE_M26_Clacker; // Clacker base class 5 | class ITC_Land_frag_detonator: ACE_M26_Clacker { 6 | displayName = "Frag remote detonator"; // Name of the item 7 | ACE_Explosives_Range = 500; // Explosives activation range in meters 8 | ACE_Explosives_triggerType = "Command"; // Trigger type, see below 9 | }; 10 | }; 11 | */ 12 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_rover { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F"}; 6 | requiredversion = 1.9; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\baseControls.hpp" 14 | #include "config\cfgFunctions.hpp" 15 | #include "config\tablet.hpp" 16 | #include "config\cfgVehicles.hpp" 17 | #include "config\cfgWeapons.hpp" 18 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/config/CfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions { 2 | class itc_land_rover { 3 | class functions { 4 | #define FUNC(NAME) \ 5 | class NAME { \ 6 | file = itc_land_rover\functions\##NAME##.sqf; \ 7 | }; 8 | FUNC(getLaserTurret) 9 | FUNC(getAircraft) 10 | FUNC(createFeed) 11 | FUNC(killFeed) 12 | FUNC(ui_init) 13 | FUNC(ui_draw) 14 | FUNC(ui_update) 15 | FUNC(ui_curPlane) 16 | FUNC(ui_vismode) 17 | FUNC(ui_populateListBox) 18 | class init { 19 | postInit = 1; 20 | file = "itc_land_rover\functions\init.sqf"; 21 | }; 22 | }; 23 | }; 24 | }; 25 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/config/baseControls.hpp: -------------------------------------------------------------------------------- 1 | 2 | class RscMapControl; 3 | class IGUIBack; 4 | class RscEdit; 5 | class RscText; 6 | class RscStructuredText; 7 | class RscControlsGroup; 8 | class RscControlsGroupNoScrollbars; 9 | class RscFrame; 10 | class RscListBox; 11 | class RscButton; 12 | class RscPicture; 13 | class RscProgress; 14 | class RscXSliderH; 15 | class RscCombo; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/config/cfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CfgWeapons { 2 | class ACE_HuntIR_monitor; 3 | class itc_land_tablet_rover : ACE_HuntIR_monitor { 4 | displayName = "Rover LAD Tablet"; 5 | descriptionShort = "Rover LAD Tablet"; 6 | picture = "\itc_land_rover\data\itc_land_rover_256.paa"; 7 | scope = 2; 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/crosshair.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/crosshair.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/crosshair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/crosshair.png -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/iconlaseron_w.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/iconlaseron_w.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/itc_land_rover_256.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/itc_land_rover_256.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/itc_land_rover_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/itc_land_rover_256.png -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/n_arr.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/n_arr.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/n_r_arr.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/n_r_arr.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/n_txt.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/n_txt.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/screen-night.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/screen-night.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/screen-night2.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/screen-night2.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/screen.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/screen.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/data/screen2.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_rover/data/screen2.paa -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/createFeed.sqf: -------------------------------------------------------------------------------- 1 | params ["_vehicle"]; 2 | if (isNull _vehicle) exitWith { 3 | call itc_land_rover_fnc_killFeed; 4 | }; 5 | ctrlShow [2205, false]; 6 | ctrlShow [1004, false]; 7 | ctrlShow [1005, false]; 8 | itc_land_rover_camera cameraEffect ["internal", "BACK"]; 9 | //"colorCorrections" ppEffectAdjust [0.5, 1.2, 0.3, [1, 1, 1, 0], [1, 1, 1, 0], [0.75, 0.25, 0, 1.0]]; 10 | "colorCorrections" ppEffectAdjust [0.9, 0.4, 0, [0.9, 0.4, 0, 0], [1, 1, 1, 0], [1, 1, 1, 0]]; 11 | "colorCorrections" ppEffectCommit 0; 12 | "colorCorrections" ppEffectEnable TRUE; 13 | "filmGrain" ppEffectAdjust [0.5, 2, 1, 1, 1]; 14 | "filmGrain" ppEffectCommit 0; 15 | "filmGrain" ppEffectEnable TRUE; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/getAircraft.sqf: -------------------------------------------------------------------------------- 1 | private _planes = []; 2 | private ["_turret"]; 3 | { 4 | if ( ((side ace_player) getFriend (side _x)) >=0.6 ) then { 5 | if (_x isKindOf "Air") then { 6 | _turret = [_x] call itc_land_rover_fnc_getLaserTurret; 7 | if (!isNil "_turret") then {_planes pushBack _x}; 8 | }; 9 | }; 10 | } forEach vehicles; 11 | _planes 12 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/getLaserTurret.sqf: -------------------------------------------------------------------------------- 1 | params ["_vehicle"]; 2 | private _turrets = allTurrets _vehicle; 3 | _turrets pushBack [-1]; //driver 4 | scopeName "main"; 5 | private ["_allWeapons", "_turret", "_lasers"]; 6 | { 7 | _turret = _x; 8 | _allWeapons = _vehicle weaponsTurret _x; 9 | _lasers = {_x isKindOf ["Laserdesignator_mounted", configFile >> "cfgWeapons"]} count _allWeapons; 10 | if (_lasers > 0) then {_turret breakOut "main"}; 11 | } forEach _turrets; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/init.sqf: -------------------------------------------------------------------------------- 1 | itc_land_rover_ui_aircraftList = []; 2 | itc_land_rover_ui_camFov = 5/120; 3 | itc_land_rover_mempointPos = [0,0,0]; 4 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/killFeed.sqf: -------------------------------------------------------------------------------- 1 | params ["_vehicle"]; 2 | ctrlShow [2205, true]; 3 | ctrlShow [1004, true]; 4 | ctrlShow [1005, true]; 5 | camUseNVG false; 6 | false setCamUseTI 1; 7 | itc_land_rover_camera cameraEffect ["terminate", "back"]; 8 | "colorCorrections" ppEffectEnable FALSE; 9 | "filmGrain" ppEffectEnable FALSE; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/ui_curPlane.sqf: -------------------------------------------------------------------------------- 1 | itc_land_rover_ui_aircraftList # ((lbCurSel 2100) max 0) 2 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/ui_populateListBox.sqf: -------------------------------------------------------------------------------- 1 | private _aircraft = call itc_land_rover_fnc_getAircraft; 2 | itc_land_rover_ui_aircraftList = [objNull] + _aircraft; 3 | 4 | lbClear 2100; 5 | lbAdd [2100, " -- "]; 6 | 7 | { 8 | lbAdd [2100, (getText (configFile >> "cfgVehicles" >> typeOf _x >> "displayName")) + " (" + (name _x) + ")"]; 9 | } forEach _aircraft; 10 | 11 | private _index = missionNameSpace getVariable ["itc_land_rover_ui_curSelIndex",0]; 12 | 13 | private _curAircraft = missionNameSpace getVariable ["itc_land_rover_ui_curAircraft",objNull]; 14 | private _findAircraft = itc_land_rover_ui_aircraftList find _curAircraft; 15 | if (_findAircraft == -1) then { _index = 0; } else { _index = _findAircraft; }; 16 | 17 | lbSetCurSel [2100,_index]; 18 | 19 | itc_land_rover_ui_curSelIndex = _index; 20 | itc_land_rover_ui_curAircraft = itc_land_rover_ui_aircraftList # _index; 21 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/ui_update.sqf: -------------------------------------------------------------------------------- 1 | params ["_control","_index"]; 2 | 3 | missionNameSpace setVariable ["itc_land_rover_ui_curSelIndex",_index]; 4 | missionNameSpace setVariable ["itc_land_rover_ui_curAircraft",itc_land_rover_ui_aircraftList # _index]; 5 | private _plane = missionNameSpace getVariable ["itc_land_rover_ui_curAircraft",objNull]; 6 | 7 | private _feed = [_plane] call itc_land_rover_fnc_createFeed; 8 | 9 | private _turret = [_plane] call itc_land_rover_fnc_getLaserTurret; 10 | if (isNil "_turret") exitWith {}; 11 | if (count _turret == 1 && {_turret # 0 == -1}) then { 12 | private _memPointName = getText (configFile >> "CfgVehicles" >> typeOf _plane >> "memoryPointDriverOptics"); 13 | itc_land_rover_mempointPos = _plane selectionPosition _memPointName; 14 | } else { 15 | private _turretConfig = [_plane, _turret] call CBA_fnc_getTurret; 16 | private _memPointName = getText (_turretConfig >> "memoryPointGunnerOptics"); 17 | itc_land_rover_mempointPos = _plane selectionPosition _memPointName; 18 | }; 19 | -------------------------------------------------------------------------------- /Addons/itc_land_rover/functions/ui_vismode.sqf: -------------------------------------------------------------------------------- 1 | params ["_btn"]; 2 | switch (_btn) do { 3 | case "dtv": { 4 | camUseNVG false; 5 | false setCamUseTI 0; 6 | }; 7 | case "nvg": { 8 | camUseNVG true; 9 | false setCamUseTI 0; 10 | }; 11 | case "whot": { 12 | camUseNVG false; 13 | true setCamUseTI 0; 14 | }; 15 | case "bhot": { 16 | camUseNVG false; 17 | true setCamUseTI 1; 18 | }; 19 | case "fov": { 20 | itc_land_rover_ui_camFov = 0.02 + ((10 - (sliderPosition 1600)) / 10) * 0.33; 21 | itc_land_rover_ui_sliderFov = (sliderPosition 1600); 22 | }; 23 | }; 24 | 25 | if (!(_btn == "fov")) then { itc_land_rover_ui_visMode = _btn }; 26 | -------------------------------------------------------------------------------- /Addons/itc_land_smokeDispenser/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_smokeDispenser { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {"itc_land_smokeDispenser_mag"}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgMagazines.hpp" 14 | #include "config\cfgAmmo.hpp" 15 | #include "config\particles.hpp" 16 | #include "config\CfgCloudlets.hpp" 17 | -------------------------------------------------------------------------------- /Addons/itc_land_smokeDispenser/config/cfgAmmo.hpp: -------------------------------------------------------------------------------- 1 | class CfgAmmo { 2 | class APERSMineDispenser_Ammo; 3 | class ITC_Land_SmokeDispenser_Ammo : APERSMineDispenser_Ammo { 4 | submunitionAmmo[] = {"ITC_Land_SmokeDispenser_Deploy",1}; 5 | ace_explosives_Explosive = "ITC_Land_SmokeDispenser_Ammo_Scripted"; 6 | ace_explosives_magazine = "itc_land_smokeDispenser_mag"; 7 | defaultMagazine = "itc_land_smokeDispenser_mag"; 8 | submunitionConeType[] = {"randomupcone",4}; 9 | submunitionInitSpeed = 30; 10 | }; 11 | class ITC_Land_SmokeDispenser_Ammo_Scripted : ITC_Land_SmokeDispenser_Ammo { 12 | triggerWhenDestroyed = 1; 13 | }; 14 | class APERSMineDispenser_Deploy; 15 | class ITC_Land_SmokeDispenser_Deploy : APERSMineDispenser_Deploy { 16 | submunitionAmmo = "ITC_Land_SmokeDispenser_Munition"; 17 | }; 18 | class GrenadeHand; 19 | class ITC_Land_SmokeDispenser_Munition : GrenadeHand { 20 | ace_frag_enabled = 1; 21 | weaponLockSystem = "1+2+4"; 22 | explosionEffects = "ITC_Land_CMSmoke"; 23 | explosionTime = 0.5; 24 | indirectHit = 1; 25 | indirectHitRange = 1; 26 | explosive = 0.1; 27 | }; 28 | }; 29 | -------------------------------------------------------------------------------- /Addons/itc_land_smokeDispenser/config/cfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class CfgMagazines { 2 | class APERSMineDispenser_Mag; 3 | class itc_land_smokeDispenser_mag : APERSMineDispenser_Mag { 4 | displayName = "CM Smoke Dispenser"; 5 | displayNameShort = "CM Smoke Dispenser"; 6 | ammo = "ITC_Land_SmokeDispenser_Ammo"; 7 | scope = 0; 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_smokeDispenser/config/particles.hpp: -------------------------------------------------------------------------------- 1 | class ITC_Land_CMSmoke { 2 | class LightExpSmall { 3 | simulation = "light"; 4 | type = "ExploLight"; 5 | position[] = {0, 1.3, 0}; 6 | intensity = 0.0005; 7 | interval = 1; 8 | lifeTime = 0.8; 9 | }; 10 | 11 | class SmokeCloud { 12 | simulation = "particles"; 13 | type = "ITC_Land_CMSmokeCloudBigLight"; 14 | position[] = {0, 0.6, 0}; 15 | intensity = 1; 16 | interval = 1; 17 | lifeTime = 2.2; 18 | }; 19 | 20 | class SmokeCloudLinger { 21 | simulation = "particles"; 22 | type = "ITC_Land_CMSmokeCloudBigLightSlow"; 23 | position[] = {0, 0.6, 0}; 24 | intensity = 1; 25 | interval = 1; 26 | lifeTime = 30; 27 | }; 28 | }; 29 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_spike { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F"}; 6 | requiredversion = 1.9; 7 | units[] = {}; 8 | weapons[] = {"itc_land_spikeLR"}; 9 | magazines[] = {"itc_land_spikeLR_1rnd"}; 10 | }; 11 | }; 12 | class NewTurret; 13 | 14 | #include "config\baseControls.hpp" 15 | #include "config\CfgAmmo.hpp" 16 | #include "config\CfgMagazines.hpp" 17 | #include "config\CfgWeapons.hpp" 18 | //#include "config\CfgVehicles.hpp" 19 | #include "config\cfgFunctions.hpp" 20 | #include "config\ace_missileguidance_AttackProfiles.hpp" 21 | #include "config\ITC_Land_SpikeSeeker.hpp" 22 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/config/CfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class CfgMagazines { 2 | class Titan_AT; 3 | class itc_land_spikeLR_2rnd: Titan_AT { 4 | ammo = "itc_land_spikeLR"; 5 | displayName = "Spike LR"; 6 | }; 7 | class itc_land_spikeLR_1rnd: itc_land_spikeLR_2rnd { 8 | count = 1; 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/config/ace_missileguidance_AttackProfiles.hpp: -------------------------------------------------------------------------------- 1 | 2 | class ace_missileguidance_AttackProfiles { 3 | class itc_land_spike_guidance { 4 | description = ""; 5 | onFired = ""; 6 | functionName = "itc_land_spike_fnc_guidance"; 7 | name = ""; 8 | visualName = ""; 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/config/baseControls.hpp: -------------------------------------------------------------------------------- 1 | 2 | class RscMapControl; 3 | class IGUIBack; 4 | class RscEdit; 5 | class RscText; 6 | class RscStructuredText; 7 | class RscControlsGroup; 8 | class RscControlsGroupNoScrollbars; 9 | class RscFrame; 10 | class RscListBox; 11 | class RscButton; 12 | class RscPicture; 13 | class RscProgress; 14 | class VScrollbar; 15 | class HScrollbar; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/config/cfgAmmo.hpp: -------------------------------------------------------------------------------- 1 | class CfgAmmo { 2 | class M_Titan_AT; 3 | class itc_land_spikeLR: M_Titan_AT { 4 | irLock = 1; 5 | laserLock = 0; 6 | airLock = 0; 7 | timeToLive = 40; 8 | // Turn off arma crosshair-guidance 9 | manualControl = 0; 10 | 11 | hit = 1400; // default: 800 12 | indirectHit = 20; 13 | indirectHitRange = 2; 14 | // ACE uses these values 15 | //trackOversteer = 1; 16 | //trackLead = 0; 17 | 18 | initTime = 0; 19 | class ace_missileguidance { 20 | attackProfiles[] = {"itc_land_spike_guidance"}; 21 | canVanillaLock = 0; 22 | defaultAttackProfile = "itc_land_spike_guidance"; 23 | defaultSeekerLockMode = ""; 24 | defaultSeekerType = ""; 25 | enabled = 1; 26 | minDeflection = 0.00005; // Minium flap deflection for guidance 27 | maxDeflection = 0.0025; // Maximum flap deflection for guidance 28 | incDeflection = 0.00005; // The incrmeent in which deflection adjusts. 29 | seekerAccuracy = 1; 30 | seekerAngle = 180; 31 | seekerLockModes[] = {"LOBL"}; 32 | seekerMaxRange = 2500; 33 | seekerMinRange = 0; 34 | seekerTypes[] = {"Optic"}; 35 | seekLastTargetPos = 1; 36 | useModeForAttackProfile = 0; 37 | }; 38 | }; 39 | }; 40 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/data/seekerT.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_spike/data/seekerT.paa -------------------------------------------------------------------------------- /Addons/itc_land_spike/data/seekerT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_spike/data/seekerT.png -------------------------------------------------------------------------------- /Addons/itc_land_spike/data/seekerTL.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_spike/data/seekerTL.paa -------------------------------------------------------------------------------- /Addons/itc_land_spike/data/seekerTL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_spike/data/seekerTL.png -------------------------------------------------------------------------------- /Addons/itc_land_spike/data/seekerbox.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_spike/data/seekerbox.paa -------------------------------------------------------------------------------- /Addons/itc_land_spike/data/seekerbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_spike/data/seekerbox.png -------------------------------------------------------------------------------- /Addons/itc_land_spike/data/spike_seeker_elements.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_spike/data/spike_seeker_elements.psd -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/fired.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * itc_land_spike_fnc_fired 3 | */ 4 | 5 | params ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_gunner"]; 6 | //player addmagazine _magazine; 7 | if (!local _unit) exitWith {}; 8 | 9 | itc_land_spike_currentMissile = _projectile; 10 | itc_land_spike_launchTime = cba_missionTime; 11 | itc_land_spike_activationTime = cba_missionTime; 12 | 13 | itc_land_spike_wobble = [if (random 1 > 0.5) then [{-1},{1}], 5 + (random 10), (round (random 3)) * 0.25]; 14 | private _viewASL = AGLtoASL positionCameraToWorld [0,0,0]; 15 | private _intersect = [AGLtoASL positionCameraToWorld [0,0,0], _viewASL vectorFromTo (AGLtoASL positionCameraToWorld [0,0,1])] call itc_land_spike_fnc_intersectScreenToWorld; 16 | if (!isNil "_intersect" && {(_intersect distance player) > 500}) then { 17 | itc_land_spike_targetPos = _intersect; 18 | itc_land_spike_targetPosCamera = _intersect; 19 | } else { 20 | private _forward = AGLtoASL (player modelToWorld [0,3000,0]); 21 | itc_land_spike_targetPos = _forward; 22 | itc_land_spike_targetPosCamera = _forward; 23 | }; 24 | 25 | [] call itc_land_spike_fnc_startCamera; 26 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/handleCameraAiming.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * itc_land_spike_fnc_handleCameraAiming 3 | */ 4 | private _traverse = ((-(inputAction "AimLeft")) + (inputAction "AimRight")) * itc_land_spike_traverseModifier; 5 | private _elevate = ((inputAction "AimUp") + (-(inputAction "AimDown"))) * itc_land_spike_traverseModifier; 6 | setMousePosition [5,5]; 7 | if (_traverse == 0 && _elevate == 0) exitWith {}; 8 | if (abs _traverse > 0.1 || abs _elevate > 0.1) then {itc_land_spike_lockInformation = [nil, [0,0,0], nil, [0,0,0]];}; 9 | // systemChat str [abs _traverse, abs _elevate]; 10 | if (!isNil {itc_land_spike_lockInformation # 0}) exitWith {}; 11 | private _originPosition = getPosASL itc_land_spike_currentMissile; 12 | private _vect = _originPosition vectorFromTo itc_land_spike_targetPos; 13 | private _polar = _vect call cba_fnc_vect2polar; 14 | private _newDir = [ 15 | (_polar # 1) + _traverse, 16 | (_polar # 2) + _elevate 17 | ]; 18 | private _intersect = [_originPosition, _newDir # 0, _newDir # 1, false] call itc_land_spike_fnc_intersectAtPolar; 19 | // systemchat str ["intersect", _intersect]; 20 | if(!isNil "_intersect") then { 21 | itc_land_spike_targetPos = _intersect; 22 | }; 23 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/init.sqf: -------------------------------------------------------------------------------- 1 | itc_land_spike_cameraMode = ""; 2 | itc_land_spike_camera = nil; 3 | itc_land_spike_currentMissile = nil; 4 | itc_land_spike_lockInformation = [nil, [0,0,0], nil, [0,0,0]]; 5 | itc_land_spike_traverseModifier = 0.05; 6 | itc_land_spike_launchTime = 0; 7 | itc_land_spike_wobble = [-1, 15, 0.25]; 8 | itc_land_spike_debug = false; 9 | itc_land_spike_ppEffect = false; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/intersectAtPolar.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * itc_land_spike_fnc_intersectAtPolar 3 | */ 4 | params ["_origin","_angleX","_angleY", "_object"]; 5 | 6 | scopeName "return"; 7 | 8 | private _vectorIntersect = [1050, _angleX, _angleY] call CBA_fnc_polar2vect; 9 | private _vectorIntersectDir = vectorNormalized _vectorIntersect; 10 | 11 | for "_i" from 0 to 15 step 1 do { 12 | private _startPos = _origin vectorAdd (_vectorIntersectDir vectorMultiply (_i * 1000)); 13 | private _endPos = _startPos vectorAdd _vectorIntersect; 14 | if (_object) then { 15 | private _intersect = lineIntersectsObjs [_startPos, _endPos, (vehicle player)]; 16 | if(count _intersect > 0) then { 17 | (_intersect # 0) breakOut "return"; 18 | }; 19 | } else { 20 | private _intersect = lineIntersectsSurfaces [_startPos, _endPos, (vehicle player)]; 21 | if(count _intersect > 0) then { 22 | (_intersect # 0 # 0) breakOut "return"; 23 | }; 24 | }; 25 | }; 26 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/intersectScreenToWorld.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * itc_land_spike_fnc_intersectScreenToWorld 3 | */ 4 | params ["_originPosition", "_direction", ["_object", false]]; 5 | if (isNil "_direction") then { 6 | _direction = _originPosition vectorFromTo (AGLtoASL (screenToWorld [0.5,0.5])); 7 | }; 8 | private _vect = _direction; 9 | private _polar = _vect call cba_fnc_vect2polar; 10 | [_originPosition, _polar # 1, _polar # 2, _object] call itc_land_spike_fnc_intersectAtPolar; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/reloaded.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * itc_land_spike_fnc_reloaded 3 | */ 4 | params ["_unit", "_weapon", "_muzzle", "_newMagazine", "_oldMagazine"]; 5 | //systemChat str _this; 6 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/sightClosed.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * itc_land_spike_fnc_cameraClosed 3 | */ 4 | 5 | "colorCorrections" ppEffectEnable false; 6 | "filmGrain" ppEffectEnable false; 7 | itc_land_spike_ppEffect = false; 8 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/sightViewChanged.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * itc_land_spike_fnc_cameraViewChanged 3 | */ 4 | 5 | //systemChat str ["VIEW CHANGED", cameraView]; 6 | 7 | if (cameraView != "GUNNER" && isNil "itc_land_spike_camera") exitWith { 8 | [] call itc_land_spike_fnc_sightClosed; 9 | }; 10 | 11 | "colorCorrections" ppEffectAdjust [0.9, 0.4, 0, [0.9, 0.4, 0, 0], [1, 1, 1, 0], [1, 1, 1, 0]];; 12 | "colorCorrections" ppEffectCommit 0; 13 | "colorCorrections" ppEffectEnable true; 14 | 15 | "filmGrain" ppEffectAdjust [0.5, 2, 1, 1, 1]; 16 | "filmGrain" ppEffectCommit 0; 17 | "filmGrain" ppEffectEnable true; 18 | itc_land_spike_ppEffect = true; 19 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/startCamera.sqf: -------------------------------------------------------------------------------- 1 | itc_land_spike_camera = "camera" camCreate (getPos _projectile); 2 | itc_land_spike_camera camSetFov 0.08333; 3 | 4 | //_camera camSetTarget (ASLtoAGL itc_exp_spike_targetPosCamera); 5 | private _polarToTarget = ((getPosASL _projectile) vectorFromTo itc_land_spike_targetPosCamera) call cba_fnc_vect2polar; 6 | //systemChat str ["polar", _polarToTarget]; 7 | 8 | itc_land_spike_camera setDir (_polarToTarget # 1); 9 | [itc_land_spike_camera, (_polarToTarget # 2), 0] call bis_fnc_setpitchbank; 10 | itc_land_spike_camera setVectorUP [0,0.5,0]; 11 | //itc_land_spike_camera attachTo [itc_land_spike_currentMissile, [0,1,0]]; 12 | itc_land_spike_camera cameraEffect ["internal", "BACK"]; 13 | 14 | findDisplay 46 createDisplay "ITC_Land_SpikeSeeker"; 15 | showCinemaBorder false; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_spike/functions/updateSightOverlay.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | private _group = _display displayCtrl 170; 3 | private _boxHidePosition = if (((call CBA_fnc_getFOV) # 0) > 0.1) then [{[22 * (safezoneW / 64),10 * (safezoneH / 40)]}, {[-1,-1]}]; 4 | (_group controlsGroupCtrl 1020) ctrlSetPosition _boxHidePosition; 5 | (_group controlsGroupCtrl 1020) ctrlCommit 0; 6 | (_group controlsGroupCtrl 1011) ctrlSetText (if (currentVisionMode player == 0) then [{"DTV"}, {"HOT"}]); 7 | 8 | itc_land_spike_lockInformation params ["_lockObject", "_lockPosition", "_lockLostTime", "_originalLockPosition"]; 9 | if (!isNil "_lockObject") then { 10 | private _screenPos = worldToScreen (_lockObject modelToWorld _lockPosition); 11 | private _screenPosX = (_screenPos # 0) - safeZoneX; 12 | private _screenPosY = (_screenPos # 1) - safeZoneY; 13 | _screenPosX = _screenPosX - (10 * (SafeZoneW / 64)); 14 | _screenPosY = _screenPosY - (10 * (SafeZoneH / 40)); 15 | (_group controlsGroupCtrl 1021) ctrlSetPosition [_screenPosX, _screenPosY]; 16 | (_group controlsGroupCtrl 1022) ctrlSetPosition [_screenPosX, _screenPosY]; 17 | } else { 18 | (_group controlsGroupCtrl 1021) ctrlSetPosition [22 * (safezoneW / 64),10 * (safezoneH / 40)]; 19 | (_group controlsGroupCtrl 1022) ctrlSetPosition [-1, -1]; 20 | }; 21 | (_group controlsGroupCtrl 1021) ctrlCommit 0; 22 | (_group controlsGroupCtrl 1022) ctrlCommit 0; 23 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/arrow_combo_active_ca.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/arrow_combo_active_ca.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/arrow_combo_ca.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/arrow_combo_ca.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/arty-icon.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/arty-icon.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/arty-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/arty-icon.png -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/home-lines.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/home-lines.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/home-lines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/home-lines.png -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/logo.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/logo.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/logo.png -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/screen-night.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/screen-night.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/screen.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/screen.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/screen.png -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/tableticon.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/tableticon.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/tableticon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/tableticon.png -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/tableticon256.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/tableticon256.paa -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UI/tableticon256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/UI/tableticon256.png -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UIConfig/workspaces/cbr/data.hpp: -------------------------------------------------------------------------------- 1 | class page_cbr_data:itc_land_workspace 2 | { 3 | idc = 13602; 4 | class Controls { 5 | class cbr_data_list: ITC_LAND_RscListBox { 6 | idc = 136001; 7 | 8 | x = 0.365937 * safezoneW + safezoneX; 9 | y = 0.247 * safezoneH + safezoneY; 10 | w = 0.309375 * safezoneW; 11 | h = 0.275 * safezoneH; 12 | colorBackground[] = {0,0,0,0.9}; 13 | colorActive[] = {0,0,0,0.9}; 14 | }; 15 | class cbr_data_saveOriginPos: ITC_LAND_RscButton { 16 | idc = 136002; 17 | 18 | text = "Save to BCS"; 19 | x = 0.624062 * safezoneW + safezoneX; 20 | y = 0.533 * safezoneH + safezoneY; 21 | w = 0.05125 * safezoneW; 22 | h = 0.022 * safezoneH; 23 | colorBackground[] = {0,0,0,0.9}; 24 | colorActive[] = {0,0,0,0.9}; 25 | action = "[""savePos""] call itc_land_tablet_fnc_pageInteract"; 26 | }; 27 | }; 28 | }; 29 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UIConfig/workspaces/cbr/map.hpp: -------------------------------------------------------------------------------- 1 | class page_cbr_map:itc_land_workspace 2 | { 3 | idc = 13601; 4 | class Controls { 5 | class cbr_map: RscMapControl { 6 | idc = 10001; 7 | x = 0.375469 * safezoneW + safezoneX; 8 | y = 0.247 * safezoneH + safezoneY; 9 | w = 0.355781 * safezoneW; 10 | h = 0.418 * safezoneH; 11 | }; 12 | class cbr_map_frame: ITC_LAND_RscFrame { 13 | idc = 10002; 14 | x = 0.375469 * safezoneW + safezoneX; 15 | y = 0.247 * safezoneH + safezoneY; 16 | w = 0.355781 * safezoneW; 17 | h = 0.418 * safezoneH; 18 | }; 19 | }; 20 | }; 21 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UIConfig/workspaces/cbr/settings.hpp: -------------------------------------------------------------------------------- 1 | class page_cbr_settings:itc_land_workspace 2 | { 3 | idc = 13600; 4 | class Controls { 5 | class cbr_settings_id_text: ITC_LAND_RscText 6 | { 7 | idc = 10006; 8 | text = "COBRA Datalink ID"; //--- ToDo: Localize; 9 | x = 0.360781 * safezoneW + safezoneX; 10 | y = 0.247 * safezoneH + safezoneY; 11 | w = 0.0721875 * safezoneW; 12 | h = 0.022 * safezoneH; 13 | }; 14 | class cbr_settings_id_edit: ITC_LAND_RscEdit 15 | { 16 | idc = 10400; 17 | x = 0.438125 * safezoneW + safezoneX; 18 | y = 0.247 * safezoneH + safezoneY; 19 | w = 0.0309375 * safezoneW; 20 | h = 0.022 * safezoneH; 21 | }; 22 | class cbr_settings_id_button: ITC_LAND_RscButton 23 | { 24 | idc = 10609; 25 | text = "connect"; //--- ToDo: Localize; 26 | x = 0.474219 * safezoneW + safezoneX; 27 | y = 0.247 * safezoneH + safezoneY; 28 | w = 0.04125 * safezoneW; 29 | h = 0.022 * safezoneH; 30 | action = "[""cobraConnect""] call itc_land_tablet_fnc_pageInteract"; 31 | }; 32 | }; 33 | }; 34 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/UIConfig/workspaces/missile/fcs.hpp: -------------------------------------------------------------------------------- 1 | class page_msl_controls:itc_land_workspace { 2 | idc = 13701; 3 | //REDO ALL IDCS 4 | class Controls { 5 | class fcs_mode_title: ITC_LAND_RscText { 6 | idc = 1511; 7 | text = "FCI MODE:"; 8 | x = 0.37625 * safezoneW + safezoneX; 9 | y = 0.235 * safezoneH + safezoneY; 10 | w = 0.15 * safezoneW; 11 | h = 0.033 * safezoneH; 12 | sizeEx = 1.25 * GUI_GRID_H; 13 | }; 14 | class fcs_mode_combobox: ITC_LAND_RscComboBox { 15 | idc = 1512; 16 | h = 0.024 * safezoneH; 17 | w = 0.1125 * safezoneW; 18 | x = 0.435 * safezoneW + safezoneX; 19 | y = 0.24 * safezoneH + safezoneY; 20 | //onLBSelChanged = "_this call itc_land_tablet_fnc_fcimode_onlblselchanged"; 21 | }; 22 | //Manual Mode Controls 23 | //#include "fcs_manualmode.hpp" 24 | //Local FCS Controls 25 | #include "fcs_localFCSmode.hpp" 26 | #include "fcs_fuzeandguidance.hpp" 27 | 28 | }; 29 | }; 30 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_tablet { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F","itc_land_common","itc_land_bcs","ace_interaction","ace_interact_menu","ace_common"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {"itc_land_tablet_spg","itc_land_tablet_fdc"}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | 14 | class ITC_LAND_RscFrame; 15 | class ITC_LAND_RscText; 16 | class ITC_LAND_RscEdit; 17 | class ITC_LAND_RscStructuredText; 18 | class ITC_LAND_RscPicture; 19 | class ITC_LAND_Workspace; 20 | class ITC_LAND_ScrollBar; 21 | class ITC_LAND_RscListBox; 22 | class ITC_LAND_RscComboBox; 23 | class ITC_LAND_RscButton; 24 | 25 | 26 | //#include "UIconfig\ControlBaseClasses.hpp" 27 | #include "UIconfig\tablet.hpp" 28 | 29 | #include "config\cfgVehicles.hpp" 30 | #include "config\cfgWeapons.hpp" 31 | #include "config\cfgFunctions.hpp" 32 | #include "config\cfgMisc.hpp" 33 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/config/cfgMisc.hpp: -------------------------------------------------------------------------------- 1 | class itc_land { 2 | class apps { 3 | class spg { 4 | displayName = "Self Propelled Gun"; 5 | interfaces = "ITC Self Propelled Gun"; 6 | }; 7 | class bcs { 8 | displayName = "Battery Control System"; 9 | interfaces = "-"; 10 | }; 11 | class cbr { 12 | displayName = "Counter Battery Radar"; 13 | interfaces = "Datalink"; 14 | }; 15 | class missile { 16 | displayName = "Guided Missile Configuration"; 17 | interfaces = "ITC Self Propelled Gun"; 18 | }; 19 | }; 20 | }; 21 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/config/cfgVehicles.hpp: -------------------------------------------------------------------------------- 1 | #define STRINGIFY(s) #s 2 | #define action_tablet_open(CLASS, NAME) \ 3 | class CLASS { \ 4 | displayName = NAME; \ 5 | condition = [_player,STRINGIFY(CLASS)] call ace_common_fnc_hasItem; \ 6 | statement = [STRINGIFY(CLASS)] call itc_land_tablet_fnc_open; \ 7 | icon = "\itc_land_tablet\UI\arty-icon.paa"; \ 8 | priority = 2.6; \ 9 | showDisabled = 1; \ 10 | exceptions[] = {"isNotInside","isNotSitting"}; \ 11 | }; 12 | 13 | class cfgVehicles { 14 | class Man; 15 | class CAManBase: Man { 16 | class ACE_SelfActions { 17 | class ACE_Equipment { 18 | action_tablet_open(itc_land_tablet_spg, "SPG Tablet") 19 | action_tablet_open(itc_land_tablet_fdc, "FDC Tablet") 20 | }; 21 | }; 22 | }; 23 | /* 24 | class LandVehicle; 25 | class Tank : LandVehicle { 26 | class ACE_SelfActions; 27 | }; 28 | class Tank_F : Tank { 29 | class ACE_SelfActions : ACE_SelfActions { 30 | class ITC_Land_MountedTablet { 31 | displayName = "Open Mounted Tablet"; 32 | icon = "\itc_land_tablet\UI\arty-icon.paa"; 33 | condition = "[_target] call itc_land_tablet_fnc_vehicleHasTablet"; 34 | statement = "[_target] call itc_land_tablet_fnc_openVehicleTablet" 35 | }; 36 | }; 37 | }; 38 | */ 39 | }; 40 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/config/cfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CfgWeapons { 2 | class ACE_HuntIR_monitor; 3 | class itc_land_tablet_spg : ACE_HuntIR_monitor { 4 | displayName = "SPG Vehicle Management Tablet"; 5 | descriptionShort = "SPG Vehicle Management Tablet"; 6 | picture = "\itc_land_tablet\UI\tableticon256.paa"; 7 | apps[] = {"spg", "bcs"}; 8 | scope = 1; 9 | }; 10 | class itc_land_tablet_mlrs : ACE_HuntIR_monitor { 11 | displayName = "MLRS Vehicle Management Tablet"; 12 | descriptionShort = "MLRS Vehicle Management Tablet"; 13 | picture = "\itc_land_tablet\UI\tableticon256.paa"; 14 | apps[] = {"missile", "bcs"}; 15 | scope = 1; 16 | }; 17 | class itc_land_tablet_fdc : itc_land_tablet_spg { 18 | displayName = "Fire Direction Tablet"; 19 | descriptionShort = "Fire Direction Tablet"; 20 | picture = "\itc_land_tablet\UI\tableticon256.paa"; 21 | apps[] = {"bcs", "cbr"}; 22 | scope = 2; 23 | }; 24 | }; 25 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/adjustMission/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | #include "..\bcsDefines.hpp" 4 | ctrlShow [13507, true]; 5 | 6 | [_display, IDC_workspace_header, "Adjust Mission"] call itc_land_tablet_fnc_setText; 7 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/adjustMission/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | #include "..\bcsDefines.hpp" 3 | MISSION;MISSIONPARAMS; 4 | if(_action == "back") then { 5 | (vehicle player) setVariable ["page", "solutionMission"]; 6 | }; 7 | 8 | if(_action == "save") then { 9 | _tgtPos = [_tgtPos,UINUMBER(9401),UINUMBER(9402),UINUMBER(9403),UINUMBER(9404)] call itc_land_bcs_fnc_adjustGrid; 10 | _targetPage set [6, _tgtPos]; 11 | _mission set [2, _targetPage]; 12 | SAVEMISSION(_mission); 13 | (vehicle player) setVariable ["page", "solutionMission"]; 14 | }; 15 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/adjustMission/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/adjustMission/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/clear.sqf: -------------------------------------------------------------------------------- 1 | { 2 | ctrlShow [_x, false]; 3 | } forEach [13501,13502,13503,13504,13505,13506]; 4 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/engageMission/render.sqf: -------------------------------------------------------------------------------- 1 | [7500, itc_land_firemission_engage_adj_gns, 0] call itc_land_tablet_fnc_fillComboBox; 2 | [7501, itc_land_firemission_engage_adj_shl, 0] call itc_land_tablet_fnc_fillComboBox; 3 | [7502, itc_land_firemission_engage_ffe_gns, 0] call itc_land_tablet_fnc_fillComboBox; 4 | [7503, itc_land_firemission_engage_ffe_shl, 0] call itc_land_tablet_fnc_fillComboBox; 5 | [7504, itc_land_firemission_engage_ffe_cnt, 0] call itc_land_tablet_fnc_fillComboBox; 6 | [7505, itc_land_firemission_engage_ffe_fze, 0] call itc_land_tablet_fnc_fillComboBox; 7 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | switch(_action) do { 4 | case "side1": { 5 | _vehicle setVariable ["page", "settings"]; 6 | }; 7 | case "side2": { 8 | _vehicle setVariable ["page", "setup"]; 9 | }; 10 | case "side3": { 11 | _vehicle setVariable ["page", "locStores"]; 12 | }; 13 | case "side5": { 14 | _vehicle setVariable ["bcs_mission_index", -1]; 15 | if(_vehicle getVariable "page" == "newMission") then { 16 | [findDisplay 32562] call itc_land_tablet_fnc_pageInit; 17 | } else { 18 | _vehicle setVariable ["page", "newMission"]; 19 | }; 20 | }; 21 | case "sideList": { 22 | _index = lbCurSel 15114; 23 | //if(!isNil{_index} && !isNil{(_vehicle getVariable "bcs_missions")}) then { 24 | _mission = (_vehicle getVariable "bcs_missions") # _index; 25 | _vehicle setVariable ["bcs_mission_index", _index]; 26 | if(_vehicle getVariable "page" == _mission # 1) then { 27 | [findDisplay 32562] call itc_land_tablet_fnc_pageInit; 28 | } else { 29 | _vehicle setVariable ["page", _mission # 1]; 30 | }; 31 | //}; 32 | }; 33 | }; 34 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/locStores/init.sqf: -------------------------------------------------------------------------------- 1 | #include "..\..\..\BCS_idc_defines.hpp" 2 | ctrlShow [13503, true]; 3 | 4 | [_display, IDC_workspace_header, "Location Stores"] call itc_land_tablet_fnc_setText; 5 | 6 | lbClear 5408; 7 | lbAdd [5408, "no"]; 8 | lbAdd [5408, "yes"]; 9 | lbSetCurSel [5408, 0]; 10 | 11 | lbClear 5411; 12 | _locations = missionNameSpace getVariable "bcs_locations"; 13 | _locationsStrings = _locations apply {format["%1 %2 %3 %4", _x # 0, _x # 1, _x # 3, _x # 4]}; 14 | [5411, _locationsStrings, 0] call itc_land_tablet_fnc_fillComboBox; 15 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/locStores/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/backup/locStores/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/newMission/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/backup/newMission/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/render.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | 3 | _fireMissions = (vehicle player) getVariable "bcs_missions"; 4 | _fireMissionStrings = _fireMissions apply {format["%1", _x # 0]}; 5 | [15114, _fireMissionStrings, -1] call itc_land_tablet_fnc_fillComboBox; 6 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/settings/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | ctrlShow [13501, true]; 4 | 5 | [_display, IDC_workspace_header, "Battery Control System Settings"] call itc_land_tablet_fnc_setText; 6 | 7 | [_display, 3205, str (missionNameSpace getVariable "bcs_splash_time")] call itc_land_tablet_fnc_setText; 8 | [_display, 3206, missionNameSpace getVariable "bcs_mission_code"] call itc_land_tablet_fnc_setText; 9 | [_display, 3207, str (missionNameSpace getVariable "bcs_mission_start")] call itc_land_tablet_fnc_setText; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/settings/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | if(_action == "save") then { 4 | _splashTime = ctrlText 3205; 5 | missionNameSpace setVariable ["bcs_splash_time", parseNumber _splashTime]; 6 | _missionCode = ctrlText 3206; 7 | missionNameSpace setVariable ["bcs_mission_code", _missionCode]; 8 | _missionStart = ctrlText 3207; 9 | missionNameSpace setVariable ["bcs_mission_start", parseNumber _missionStart]; 10 | }; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/settings/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/backup/settings/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/setup/init.sqf: -------------------------------------------------------------------------------- 1 | #include "..\..\..\BCS_idc_defines.hpp" 2 | ctrlShow [13502, true]; 3 | 4 | [_display, IDC_workspace_header, "Battery Setup"] call itc_land_tablet_fnc_setText; 5 | 6 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 7 | [_display, 4303, _vehicle getVariable "bcs_bty_name"] call itc_land_tablet_fnc_setText; 8 | //[_display, 4304,] call itc_land_tablet_fnc_setText; 9 | 10 | lbClear 4304; 11 | _tables = (configFile >> "itc_land_ballistics" >> "availableTables") call BIS_fnc_getCfgData; 12 | for "_i" from 0 to (count _tables) - 1 step 1 do { 13 | (_tables # _i) params ["_gun", "_table"]; 14 | lbAdd [4304, ((configFile >> "CfgVehicles" >> _gun >> "displayName") call BIS_fnc_getCfgData)]; 15 | lbSetData [4304, _i, _gun]; 16 | if(_gun == _vehicle getVariable "bcs_bty_type") then { 17 | lbSetCurSel [4304, _i]; 18 | }; 19 | }; 20 | lbClear 4315; 21 | _guns = _vehicle getVariable "bcs_bty_guns"; 22 | for "_i" from 0 to (count _guns) - 1 step 1 do { 23 | _gun = _guns # _i; 24 | lbAdd [4315, format["%1 %2 %3 %4", _gun # 0, _gun # 1, _gun # 3, _gun # 4]]; 25 | }; 26 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/setup/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/backup/setup/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/solutionMission/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | ctrlShow [13506, true]; 4 | 5 | _mission = (_vehicle getVariable "bcs_missions") # (_vehicle getVariable "bcs_mission_index"); 6 | [_display, IDC_workspace_header, format["%1 Solutions", _mission # 0]] call itc_land_tablet_fnc_setText; 7 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/solutionMission/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | if(_action == "back") then { 3 | _vehicle setVariable ["page", "engageMission"]; 4 | }; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/backup/solutionMission/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/backup/solutionMission/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/bcsDefines.hpp: -------------------------------------------------------------------------------- 1 | #define GENIDENT format["%1%2",bcs_mission_code,[bcs_mission_start,4] call cba_fnc_formatNumber];bcs_mission_start = bcs_mission_start + 1 2 | #define EMPTYMISSION(IDENT) [IDENT, "newMission",[0,-1,"0","0","0","0",[0,0,0]],[0,0,0,0,0,""], 0, 0, 0]; 3 | #define MISSION _mission = bcs_missions select bcs_mission_index;if(isNil{_mission}) exitWith {(vehicle player) setVariable ["page", "locStores"];} 4 | #define SAVEMISSION(MSN) bcs_missions set [bcs_mission_index, MSN] 5 | #define MISSIONPARAMS _mission params ["_ident", "_page","_targetPage","_engagePage", "_curSolution", "_solutionLimit", "_shotEnd"]; \ 6 | _targetPage params ["_targetTypeIndex","_kpi","_in0","_in1","_in2","_in3","_tgtPos"]; \ 7 | _engagePage params ["_sheafTypeIndex","_quick","_sheafdir","_sheaflength","_shellTypeIndex","_magazineType"] 8 | #define UINUMBER(IDC) parseNumber (ctrlText IDC) 9 | #define UITEXT(IDC) ctrlText IDC 10 | #define SETTEXT(IDC,TXT) (_display displayCtrl IDC) ctrlSetText TXT 11 | #define FINDIDENT(ARR,IDENT) ARR findIf {_x # 0 == IDENT} 12 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/clear.sqf: -------------------------------------------------------------------------------- 1 | { 2 | ctrlShow [_x, false]; 3 | } forEach [13501,13502,13503,13504,13505,13506,13507]; 4 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/engageMission/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | #include "..\bcsDefines.hpp" 4 | MISSION;MISSIONPARAMS; 5 | ctrlShow [13505, true]; 6 | [_display, IDC_workspace_header, format ["%1 ENGAGEMENT",_ident]] call itc_land_tablet_fnc_setText; 7 | 8 | _shellTypes = bcs_shellTypes # (bcs_bty_type # 0); 9 | _shellNames = _shellTypes apply {((configFile >> "CfgMagazines" >> _x >> "displayName") call BIS_fnc_getCfgData)}; 10 | [7100,_shellNames,_shellTypeIndex,_shellTypes] call itc_land_tablet_fnc_fillComboBox; 11 | 12 | [7101,["Parallel","Converged","Linear","Open","Special"],_sheafTypeIndex] call itc_land_tablet_fnc_fillComboBox; 13 | 14 | [7401,["On","Off"],_quick] call itc_land_tablet_fnc_fillComboBox; 15 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/engageMission/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action", "_listBox", "_target", "_value"]; 2 | #include "..\bcsDefines.hpp" 3 | MISSION;MISSIONPARAMS; 4 | 5 | if(_action == "back") then { 6 | (vehicle player) setVariable ["page", "newMission"]; 7 | }; 8 | 9 | if(_action == "save") then { 10 | _magType = bcs_shellTypes # (bcs_bty_type # 0) # (lbCurSel 7100); 11 | _engagePage = [lbCurSel 7101, lbCurSel 7401, UINUMBER(7402), UINUMBER(7403), lbCurSel 7100, _magType]; 12 | _mission set [3, _engagePage]; 13 | SAVEMISSION(_mission); 14 | _mission set [1, "solutionMission"]; 15 | (vehicle player) setVariable ["page", "solutionMission"]; 16 | }; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/engageMission/render.sqf: -------------------------------------------------------------------------------- 1 | [7500, itc_land_firemission_engage_adj_gns, 0] call itc_land_tablet_fnc_fillComboBox; 2 | [7501, itc_land_firemission_engage_adj_shl, 0] call itc_land_tablet_fnc_fillComboBox; 3 | [7502, itc_land_firemission_engage_ffe_gns, 0] call itc_land_tablet_fnc_fillComboBox; 4 | [7503, itc_land_firemission_engage_ffe_shl, 0] call itc_land_tablet_fnc_fillComboBox; 5 | [7504, itc_land_firemission_engage_ffe_cnt, 0] call itc_land_tablet_fnc_fillComboBox; 6 | [7505, itc_land_firemission_engage_ffe_fze, 0] call itc_land_tablet_fnc_fillComboBox; 7 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | #include "bcsDefines.hpp" 3 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 4 | switch(_action) do { 5 | case "side1": { 6 | _vehicle setVariable ["page", "settings"]; 7 | }; 8 | case "side2": { 9 | _vehicle setVariable ["page", "setup"]; 10 | }; 11 | case "side3": { 12 | _vehicle setVariable ["page", "locStores"]; 13 | }; 14 | case "side5": { 15 | _ident = GENIDENT; 16 | _newMission = EMPTYMISSION(_ident); 17 | bcs_missions pushBack _newMission; 18 | bcs_mission_index = (count bcs_missions) - 1; 19 | if(_vehicle getVariable "page" == "newMission") then { 20 | [findDisplay 32562] call itc_land_tablet_fnc_pageInit; 21 | } else { 22 | _vehicle setVariable ["page", "newMission"]; 23 | }; 24 | }; 25 | case "sideList": { 26 | bcs_mission_index = lbCurSel 15114; 27 | MISSION; 28 | if(_vehicle getVariable "page" == _mission # 1) then { 29 | [findDisplay 32562] call itc_land_tablet_fnc_pageInit; 30 | } else { 31 | _vehicle setVariable ["page", _mission # 1]; 32 | }; 33 | }; 34 | }; 35 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/locStores/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | ctrlShow [13503, true]; 4 | 5 | [_display, IDC_workspace_header, "Location Stores"] call itc_land_tablet_fnc_setText; 6 | 7 | [5408,["no","yes"],0] call itc_land_tablet_fnc_fillComboBox; 8 | 9 | lbClear 5411; 10 | _locationsStrings = bcs_locations apply {format["%1 %2 %3 %4", _x # 0, _x # 1, _x # 3, _x # 4]}; 11 | [5411, _locationsStrings, 0] call itc_land_tablet_fnc_fillComboBox; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/locStores/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | #include "..\bcsDefines.hpp" 3 | 4 | switch(_action) do { 5 | case "addLocation": { 6 | _num = UITEXT(5402); 7 | _posStr = UITEXT(5404); 8 | _elev = UINUMBER(5406); 9 | _friendly = lbText [5408, (lbCurSel 5408)]; 10 | _pos = [_posStr, false] call ace_common_fnc_getMapPosFromGrid; 11 | _pos = _pos vectorAdd [0,0,_elev]; 12 | _locString = format["%1 %2 %3 %4", _num, _posStr, _elev, _friendly]; 13 | _locData = [_num, _posStr, _pos, _elev, _friendly]; 14 | 15 | _location = bcs_locations findIf {_x # 0 == _num}; 16 | if(_location == -1) then { 17 | lbAdd [5411, _locString]; 18 | bcs_locations pushBack _locData; 19 | } else { 20 | bcs_locations set [_location, _locData]; 21 | [findDisplay 32562] call itc_land_tablet_fnc_pageInit; 22 | }; 23 | }; 24 | case "removeLocation": { 25 | _index = lbCurSel 5411; 26 | bcs_locations deleteAt _index; 27 | lbDelete [5411, _index]; 28 | }; 29 | }; 30 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/locStores/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/locStores/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/newMission/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | #include "..\bcsDefines.hpp" 4 | MISSION;MISSIONPARAMS; 5 | ctrlShow [13504, true]; 6 | [_display, IDC_workspace_header, _ident] call itc_land_tablet_fnc_setText; 7 | SETTEXT(6400,_ident); 8 | SETTEXT(6401,_in0); 9 | SETTEXT(6402,_in1); 10 | SETTEXT(6403,_in2); 11 | SETTEXT(6404,_in3); 12 | [6100, ["Grid","Shift","Polar","QuickLay"], _targetTypeIndex] call itc_land_tablet_fnc_fillComboBox; 13 | _knownPoints = bcs_locations apply {_x # 0}; 14 | [6101, _knownPoints, _kpi] call itc_land_tablet_fnc_fillComboBox; 15 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/newMission/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/newMission/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/render.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | 3 | _fireMissionStrings = bcs_missions apply { 4 | if(_x # 6 > time) then { 5 | _text = if(time > (_x # 6) - bcs_splash_time) then [{"SPLASH"},{"SHOT"}]; 6 | format["%1 %2", _x # 0, _text]; 7 | } else { 8 | format["%1", _x # 0]; 9 | }; 10 | }; 11 | [15114, _fireMissionStrings, -1] call itc_land_tablet_fnc_fillComboBox; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/settings/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | #include "..\bcsDefines.hpp" 4 | ctrlShow [13501, true]; 5 | 6 | [_display, IDC_workspace_header, "Battery Control System Settings"] call itc_land_tablet_fnc_setText; 7 | 8 | SETTEXT(3205,str bcs_splash_time); 9 | SETTEXT(3206,bcs_mission_code); 10 | SETTEXT(3207,str bcs_mission_start); 11 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/settings/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | #include "..\bcsDefines.hpp" 3 | 4 | if(_action == "save") then { 5 | bcs_splash_time = UINUMBER(3205); 6 | bcs_mission_code = UITEXT(3206); 7 | bcs_mission_start = UINUMBER(3207); 8 | }; 9 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/settings/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/settings/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/setup/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | #include "..\bcsDefines.hpp" 4 | ctrlShow [13502, true]; 5 | 6 | [_display, IDC_workspace_header, "Battery Setup"] call itc_land_tablet_fnc_setText; 7 | SETTEXT(4303,bcs_bty_name); 8 | 9 | //_tables = (configFile >> "itc_land_ballistics" >> "availableTables") call BIS_fnc_getCfgData; 10 | _batteryTypes = (configFile >> "itc_land_ballistics" >> "batteryTypes") call BIS_fnc_getCfgSubClasses; 11 | bcs_availableTables = _batteryTypes; 12 | _gunNames = _batteryTypes apply {((configFile >> "itc_land_ballistics" >> "batteryTypes" >> _x >> "displayName") call BIS_fnc_getCfgData)}; 13 | _shellTypes = _batteryTypes apply {((configFile >> "itc_land_ballistics" >> "batteryTypes" >> _x >> "ammunition") call BIS_fnc_getCfgData)}; 14 | bcs_shellTypes = _shellTypes; 15 | [4304,_gunNames,(bcs_bty_type # 0),_shellTypes] call itc_land_tablet_fnc_fillComboBox; 16 | 17 | _gunStrings = bcs_bty_guns apply {format["%1 %2 %3 %4", _x # 0, _x # 1, _x # 3, _x # 4]}; 18 | [4315,_gunStrings,-1] call itc_land_tablet_fnc_fillComboBox; 19 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/setup/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | #include "..\bcsDefines.hpp" 4 | 5 | _listIndex = lbCurSel 4315; 6 | switch(_action) do { 7 | case "save": { 8 | bcs_bty_name = UITEXT(4303); 9 | _gunIndex = lbCurSel 4304; 10 | bcs_bty_type = [_gunIndex, lbData [4304, _gunIndex]]; 11 | }; 12 | case "addGun": { 13 | _num = UITEXT(4306); 14 | _posStr = UITEXT(4308); 15 | _elev = UINUMBER(4310); 16 | _dir = UINUMBER(4312); 17 | _pos = [_posStr, false] call ace_common_fnc_getMapPosFromGrid; 18 | _pos = _pos vectorAdd [0,0,_elev]; 19 | _gunString = format["%1 %2 %3 %4", _num, _posStr, _elev, _dir]; 20 | _gunData = [_num, _posStr, _pos, _elev, _dir]; 21 | 22 | _gun = bcs_bty_guns findIf {_x # 0 == _num}; 23 | if(_gun == -1) then { 24 | lbAdd [4315, _gunString]; 25 | bcs_bty_guns pushBack _gunData; 26 | } else { 27 | bcs_bty_guns set [_gun, _gunData]; 28 | [findDisplay 32562] call itc_land_tablet_fnc_pageInit; 29 | }; 30 | }; 31 | case "removeGun": { 32 | bcs_bty_guns deleteAt _listIndex; 33 | lbDelete [4315, _listIndex]; 34 | }; 35 | }; 36 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/setup/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/bcs/setup/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/solutionMission/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | #include "..\bcsDefines.hpp" 3 | MISSION;MISSIONPARAMS; 4 | bcs_solutions params ["_btySolutions", "_gunSolutions"]; 5 | if(_action == "back") then { 6 | (vehicle player) setVariable ["page", "engageMission"]; 7 | }; 8 | if(_action == "adjust") then { 9 | (vehicle player) setVariable ["page", "adjustMission"]; 10 | }; 11 | 12 | if(_action == "solup") then { 13 | if(_curSolution < _solutionLimit) then { 14 | _mission set [4, _curSolution + 1]; 15 | }; 16 | }; 17 | if(_action == "soldn") then { 18 | _mission set [4, (_curSolution - 1) max 0]; 19 | }; 20 | 21 | if(_action == "shot") then { 22 | _mission set [6, time + ((_btySolutions # _curSolution) # 4)]; 23 | }; 24 | 25 | if(_action find "eom" > -1) then { 26 | if(_action == "eomsave") then { 27 | _MGRS = [_tgtPos] call ace_common_fnc_getMapGridFromPos; 28 | bcs_locations pushBack [_ident, format["%1 %2",_MGRS # 0, _MGRS # 1], _tgtPos , round (_tgtPos # 2), false]; 29 | }; 30 | bcs_missions deleteAt bcs_mission_index; 31 | (vehicle player) setVariable ["page", "locStores"]; 32 | }; 33 | [findDisplay 32562, false] call itc_land_tablet_fnc_pageInit; 34 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/bcs/solutionMission/render.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\bcsDefines.hpp" 3 | MISSION;MISSIONPARAMS; 4 | if(_shotEnd > time) then { 5 | _text = format["TTI %1", round(_shotEnd - time)]; 6 | SETTEXT(8021,_text); 7 | } else { 8 | SETTEXT(8021,""); 9 | }; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/clear.sqf: -------------------------------------------------------------------------------- 1 | { 2 | ctrlShow [_x, false]; 3 | } forEach [13600,13601,13602]; 4 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/data/init.sqf: -------------------------------------------------------------------------------- 1 | #include "..\..\..\BCS_idc_defines.hpp" 2 | params ["_display"]; 3 | ctrlShow [13602, true]; 4 | 5 | [_display, IDC_workspace_header, "Data"] call itc_land_tablet_fnc_setText; 6 | 7 | _firesStrings = itc_land_cobra_engagements apply { 8 | _pos = [_x # 2 # 0] call ace_common_fnc_getMapGridFromPos; 9 | format["%1 POS %2 %3 Shots %4 Last Shot %5", 10 | _x # 0, 11 | _pos # 0, _pos # 1, 12 | _x # 1, 13 | (_x # 5) call BIS_fnc_timeToString 14 | ] 15 | }; 16 | [136001,_firesStrings,0] call itc_land_tablet_fnc_fillComboBox; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/data/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | 3 | switch(_action) do { 4 | case "savePos": { 5 | _posIndex = lbCurSel 136001; 6 | _pos = itc_land_cobra_engagements # _posIndex; 7 | _MGRS = [_pos # 2 # 0] call ace_common_fnc_getMapGridFromPos; 8 | if(isNil{bcs_locations}) then {bcs_locations = [];}; 9 | bcs_locations pushBack [_pos # 0, format["%1 %2",_MGRS # 0, _MGRS # 1], _pos # 2 # 0 , round (_pos # 2 # 0 # 2), false]; 10 | }; 11 | }; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/data/render.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | _firesStrings = itc_land_cobra_engagements apply { 3 | _pos = [_x # 2 # 0] call ace_common_fnc_getMapGridFromPos; 4 | format["%1 POS %2 %3 Shots %4 Last Shot %5", 5 | _x # 0, 6 | _pos # 0, _pos # 1, 7 | _x # 1, 8 | (_x # 5) call BIS_fnc_timeToString 9 | ] 10 | }; 11 | [136001,_firesStrings,-1] call itc_land_tablet_fnc_fillComboBox; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | switch(_action) do { 4 | //case "side1": { 5 | // _vehicle setVariable ["page", "settings"]; 6 | //}; 7 | case "side2": { 8 | _vehicle setVariable ["page", "map"]; 9 | }; 10 | case "side3": { 11 | _vehicle setVariable ["page", "data"]; 12 | }; 13 | //case "side5": { 14 | // [player getVariable ["itc_land_cobra_id","xxxx"],"AB01","cobra","getData",""] call itc_land_datalink_fnc_transmit; 15 | //}; 16 | }; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/map/init.sqf: -------------------------------------------------------------------------------- 1 | #include "..\..\..\BCS_idc_defines.hpp" 2 | ctrlShow [13601, true]; 3 | 4 | [_display, IDC_workspace_header, "Map"] call itc_land_tablet_fnc_setText; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/map/interact.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/cbr/map/interact.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/map/render.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | private _map = (_display displayCtrl 10001); 3 | 4 | { 5 | private _direction = deg (_x animationPhase "mainTurret"); 6 | _direction = (getDir _x - _direction); 7 | if(_direction > 360) then {_direction = _direction - 360;}; 8 | private _position = getPos _x; 9 | _map drawIcon ["iconExplosiveGPDirectional",[0,0,1,1],_position, 24, 24, 0, "",0,0.05,"TahomaB","right"]; 10 | _map drawLine [_x, (_position getPos [10000, _direction + 22]),[0,0,1,1]]; 11 | _map drawLine [_x, (_position getPos [10000, _direction - 22]),[0,0,1,1]]; 12 | }forEach (missionNameSpace getVariable ["itc_land_cobras",[]]); 13 | 14 | { 15 | _x params ["_roundCount","_origins","_lastActive"]; 16 | _map drawIcon ["iconExplosiveGPDirectional",[1,0,0,1],_origins # 0, 24, 24, 0, str _roundcount,0,0.05,"TahomaB","right"]; 17 | }forEach (missionNameSpace getVariable ["itc_land_cobra_firingPositions",[]]); 18 | { 19 | _x params ["_impactPoint","_impactTime"]; 20 | if(time < _impactTime) then { 21 | _map drawIcon ["a3\ui_f\data\Map\Markers\Military\destroy_CA.paa",[1,0,0,1],_impactPoint, 24, 24, 0, str round(_impactTime - time),0,0.05,"TahomaB","right"]; 22 | }; 23 | }forEach (missionNameSpace getVariable ["itc_land_cobra_activeShells",[]]); 24 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/cbr/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/settings/init.sqf: -------------------------------------------------------------------------------- 1 | #include "..\..\..\BCS_idc_defines.hpp" 2 | ctrlShow [13600, true]; 3 | ctrlSetText [10400, player getVariable ["itc_land_cobra_id",""]]; 4 | [_display, IDC_workspace_header, "Settings"] call itc_land_tablet_fnc_setText; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/settings/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | 3 | switch(_action) do { 4 | case "cobraConnect": { 5 | private _id = ctrlText 10400; 6 | player setVariable ["itc_land_cobra_id",_id]; 7 | [_id,"AB01","cobra","getData",""] call itc_land_datalink_fnc_transmit; 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/cbr/settings/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/cbr/settings/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/home/appList/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | ctrlShow [13301, true]; 4 | [_display, 15010, 0] call itc_land_tablet_fnc_setFade; 5 | [_display, 15011, 0] call itc_land_tablet_fnc_setFade; 6 | 7 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 8 | _apps = _vehicle getVariable "apps"; 9 | { 10 | if(_x < count _apps) then { 11 | _name = (configFile >> "itc_land" >> "apps" >> _apps # _x >> "displayName") call BIS_fnc_getCfgData; 12 | _ifaces = (configFile >> "itc_land" >> "apps" >> _apps # _x >> "interfaces") call BIS_fnc_getCfgData; 13 | 14 | _displayedName = toUpper (format ["APP %1: %2",_x + 1, _name]); 15 | _displayedifaces = toUpper ( _ifaces ); 16 | 17 | [_display, 91000 + _x, _displayedName] call itc_land_tablet_fnc_setText; 18 | [_display, 91010 + _x, _displayedifaces] call itc_land_tablet_fnc_setText; 19 | 20 | } else { 21 | [_display, 91000 + _x, ""] call itc_land_tablet_fnc_setText; 22 | [_display, 91010 + _x, ""] call itc_land_tablet_fnc_setText; 23 | ctrlShow [91020 + _x, false]; 24 | }; 25 | }forEach [0,1,2]; 26 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/home/appList/interact.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/home/appList/interact.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/home/appList/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/home/appList/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/home/clear.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | { 3 | ctrlShow [_x, false]; 4 | } forEach [13301]; 5 | 6 | [_display, 15010, 1] call itc_land_tablet_fnc_setFade; 7 | [_display, 15011, 1] call itc_land_tablet_fnc_setFade; 8 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/home/init.sqf: -------------------------------------------------------------------------------- 1 | 2 | "appList" 3 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/home/interact.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/home/interact.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/home/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/home/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/missile/clear.sqf: -------------------------------------------------------------------------------- 1 | { 2 | ctrlShow [_x, false]; 3 | } forEach [13701,13420]; 4 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/missile/fcs/onLBSelChanged_fuzemode.sqf: -------------------------------------------------------------------------------- 1 | params ["_control","_index"]; 2 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | private _curMag = (currentMagazine _vehicle); 4 | //Generate globals 5 | 6 | _vehicle setVariable ["itc_land_selectedFuzeIndex",_index,true]; 7 | _vehicle setVariable ["itc_land_selectedFuzeMode",lbData [1904,_index],true]; 8 | _vehicle setVariable ["itc_land_selectedFuzeDesc",lbText [1904,_index],true]; 9 | 10 | private _fuzeTime = _vehicle getVariable ["itc_land_mlrsfci_fuzeTime",0]; 11 | 12 | private _fuzeType = lbData [1904, _index]; 13 | ctrlShow [1905, false]; 14 | ctrlShow [1906, false]; 15 | 16 | if(_fuzeType == "time") then { 17 | ctrlShow [1905, true]; 18 | ctrlShow [1906, true]; 19 | ctrlSetText [1906,format["%1", _fuzeTime]]; 20 | } else { 21 | ctrlShow [1905, false]; 22 | ctrlShow [1906, false]; 23 | }; 24 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/missile/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | switch(_action) do { 4 | case "side1": { 5 | _vehicle setVariable ["page", "fcs"]; 6 | }; 7 | case "side2": { 8 | _vehicle setVariable ["page", "status"]; 9 | }; 10 | case "side3": { 11 | _vehicle setVariable ["page", "status"]; 12 | }; 13 | }; 14 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/missile/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/missile/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/missile/status/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | ctrlShow [13420, true]; 4 | [_display, IDC_workspace_header, "Vehicle Status"] call itc_land_tablet_fnc_setText; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/missile/status/interact.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/missile/status/interact.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/missile/status/render.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | 3 | _allDamage = getAllHitPointsDamage _vehicle; 4 | _allDamage params ["", "_name", "_status"]; 5 | 6 | _resString = ""; 7 | 8 | for "_i" from 0 to (count _status - 1) step 1 do { 9 | _col = "acff99"; 10 | _stat = "OK"; 11 | if(_status select _i > 0) then {_col = "ff7f00"; _stat = "DAM";}; 12 | if(_status select _i > 0.5) then {_col = "ff0000"; _stat = "FAIL";}; 13 | _resString = _resString + format["%2 %3",_col,_name select _i, _stat] + "
"; 14 | }; 15 | 16 | (_display displayCtrl 2100) ctrlSetStructuredText parseText _resString; 17 | (_display displayCtrl 2100) ctrlCommit 0; 18 | 19 | [_display, 2013, format["%1%2",round ((fuel _vehicle) * 100),"%"]] call itc_land_tablet_utils_fnc_setText; 20 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/sadl/init.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/sadl/init.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/sadl/interact.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/sadl/interact.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/sadl/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/sadl/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/spg/clear.sqf: -------------------------------------------------------------------------------- 1 | { 2 | ctrlShow [_x, false]; 3 | } forEach [13410,13420]; 4 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/spg/fcs/interact_calc.sqf: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/spg/fcs/onLBSelChanged_fcimode.sqf: -------------------------------------------------------------------------------- 1 | params ["_control","_index"]; 2 | if(true)exitWith{}; 3 | //Generate global 4 | itc_land_fcimode = [_index,lbText [1501,_index]]; 5 | itc_land_fcimode_manualidcarray = [1800,1801,1802,1803,1804,1805,1603]; 6 | itc_land_fcimode_lfcsidcarray = [1012,1010,1400,1011,1401,1012,1402,1100,1101,1601,1602,1600]; 7 | 8 | switch (itc_land_fcimode # 0) do { 9 | case 0: { 10 | { ctrlShow [_x,true]; } forEach itc_land_fcimode_manualidcarray; //Show Manual Mode Elements 11 | { ctrlShow [_x,false]; } forEach itc_land_fcimode_lfcsidcarray; //Hide LFCS Mode Elements 12 | }; 13 | case 1: { 14 | //LFCS 15 | { ctrlShow [_x,false]; } forEach itc_land_fcimode_manualidcarray; //Hide Manual Mode Elements 16 | { ctrlShow [_x,true]; } forEach itc_land_fcimode_lfcsidcarray; //Show LFCS Mode Elements 17 | }; 18 | }; 19 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/spg/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action"]; 2 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | switch(_action) do { 4 | case "side1": { 5 | _vehicle setVariable ["page", "fcs"]; 6 | }; 7 | case "side2": { 8 | _vehicle setVariable ["page", "status"]; 9 | }; 10 | case "side3": { 11 | _vehicle setVariable ["page", "status"]; 12 | }; 13 | }; 14 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/spg/render.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/spg/render.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/spg/status/init.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | #include "..\..\..\BCS_idc_defines.hpp" 3 | ctrlShow [13420, true]; 4 | [_display, IDC_workspace_header, "Vehicle Status"] call itc_land_tablet_fnc_setText; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/spg/status/interact.sqf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_tablet/functions/apps/spg/status/interact.sqf -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/apps/spg/status/render.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | 3 | _allDamage = getAllHitPointsDamage _vehicle; 4 | _allDamage params ["", "_name", "_status"]; 5 | 6 | _resString = ""; 7 | 8 | for "_i" from 0 to (count _status - 1) step 1 do { 9 | _col = "acff99"; 10 | _stat = "OK"; 11 | if(_status select _i > 0) then {_col = "ff7f00"; _stat = "DAM";}; 12 | if(_status select _i > 0.5) then {_col = "ff0000"; _stat = "FAIL";}; 13 | _resString = _resString + format["%2 %3",_col,_name select _i, _stat] + "
"; 14 | }; 15 | 16 | (_display displayCtrl 2100) ctrlSetStructuredText parseText _resString; 17 | (_display displayCtrl 2100) ctrlCommit 0; 18 | 19 | [_display, 2013, format["%1%2",round ((fuel _vehicle) * 100),"%"]] call itc_land_tablet_utils_fnc_setText; 20 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/clear.sqf: -------------------------------------------------------------------------------- 1 | #include "BCS_idc_defines.hpp" 2 | 3 | [_display, IDC_header1, ""] call itc_land_tablet_fnc_setText; 4 | [_display, IDC_header2, ""] call itc_land_tablet_fnc_setText; 5 | [_display, IDC_workspace_header, ""] call itc_land_tablet_fnc_setText; 6 | 7 | [_display, IDC_sidebar_button1, 1] call itc_land_tablet_fnc_setFade; 8 | [_display, IDC_sidebar_button2, 1] call itc_land_tablet_fnc_setFade; 9 | [_display, IDC_sidebar_button3, 1] call itc_land_tablet_fnc_setFade; 10 | [_display, IDC_sidebar_button4, 1] call itc_land_tablet_fnc_setFade; 11 | [_display, IDC_sidebar_button5, 1] call itc_land_tablet_fnc_setFade; 12 | 13 | [_display, IDC_fire_mission_list, 1] call itc_land_tablet_fnc_setFade; 14 | 15 | [_display, 15010, 1] call itc_land_tablet_fnc_setFade; 16 | [_display, 15011, 1] call itc_land_tablet_fnc_setFade; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/interact.sqf: -------------------------------------------------------------------------------- 1 | params ["_action", "_value"]; 2 | _vehicle = [] call itc_land_common_fnc_getCurVehicle; 3 | 4 | if(_action == "app" && !isNil{_value}) exitWith { 5 | if(count (_vehicle getVariable "apps") > _value) then { 6 | _newApp = (_vehicle getVariable "apps") # _value; 7 | if(!isNil{_newApp}) then { 8 | _vehicle setVariable ["app", _newApp]; 9 | }; 10 | }; 11 | }; 12 | 13 | _display = findDisplay 32562; 14 | _app = _vehicle getVariable "app"; 15 | _page = [_action, _display] call itc_land_tablet_fnc_appInteract; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/openVehicleTablet.sqf: -------------------------------------------------------------------------------- 1 | params ["_vehicle"]; 2 | 3 | _tablet = (configFile >> "CfgVehicles" >> typeOf _vehicle >> "itc_land" >> "mountedTablet") call BIS_fnc_getCfgData; 4 | 5 | if(!isNil{_tablet}) then { 6 | [_tablet,_vehicle] call itc_land_tablet_fnc_open; 7 | }; 8 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/render.sqf: -------------------------------------------------------------------------------- 1 | params ["_display"]; 2 | 3 | _illumination = ([] call ace_common_fnc_ambientBrightness); 4 | (_display displayCtrl (15117)) ctrlSetFade _illumination; 5 | (_display displayCtrl (15117)) ctrlCommit 0; 6 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/util/arrayToPage.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Fills out a tablet page based on input key value array 3 | * 4 | */ 5 | params ["_page", "_input"]; 6 | _controls = (configFile >> "itc_land_tablet" >> _page >> "Controls") call BIS_fnc_getCfgSubClasses; 7 | { 8 | _x params ["_key", "_value"]; 9 | { 10 | _controlKey = getText (configFile >> "itc_land_tablet" >> "page_bcs_firemission_engage" >> "Controls" >> _x >> "key"); 11 | _setMethod = getText (configFile >> "itc_land_tablet" >> "page_bcs_firemission_engage" >> "Controls" >> _x >> "setMethod"); 12 | if(_controlKey == _key) then { 13 | _value call _setMethod; 14 | }; 15 | }forEach _controls; 16 | }forEach _input; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/util/compileApp.sqf: -------------------------------------------------------------------------------- 1 | params ["_app"]; 2 | itc_land_tablet_fnc_appInit = compile preprocessfilelinenumbers format["itc_land_tablet\functions\apps\%1\init.sqf", _app]; 3 | itc_land_tablet_fnc_appClear = compile preprocessfilelinenumbers format["itc_land_tablet\functions\apps\%1\clear.sqf", _app]; 4 | itc_land_tablet_fnc_appInteract = compile preprocessfilelinenumbers format["itc_land_tablet\functions\apps\%1\interact.sqf", _app]; 5 | itc_land_tablet_fnc_appRender = compile preprocessfilelinenumbers format["itc_land_tablet\functions\apps\%1\render.sqf", _app]; 6 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/util/compilePage.sqf: -------------------------------------------------------------------------------- 1 | params ["_app", "_page"]; 2 | itc_land_tablet_fnc_pageInit = compile preprocessfilelinenumbers format["itc_land_tablet\functions\apps\%1\%2\init.sqf", _app, _page]; 3 | itc_land_tablet_fnc_pageInteract = compile preprocessfilelinenumbers format["itc_land_tablet\functions\apps\%1\%2\interact.sqf", _app, _page]; 4 | itc_land_tablet_fnc_pageRender = compile preprocessfilelinenumbers format["itc_land_tablet\functions\apps\%1\%2\render.sqf", _app, _page]; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/util/fillComboBox.sqf: -------------------------------------------------------------------------------- 1 | params ["_idc", "_entries", "_selected", "_data"]; 2 | lbClear _idc; 3 | { 4 | lbAdd [_idc, _x]; 5 | }forEach _entries; 6 | if(_selected > -1) then { 7 | lbSetCurSel [_idc, _selected]; 8 | }; 9 | 10 | if(!isNil{_data}) then { 11 | { 12 | lbSetData [_idc, _forEachIndex, _x]; 13 | }forEach _data; 14 | }; 15 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/util/setFade.sqf: -------------------------------------------------------------------------------- 1 | params ["_display", "_ctrl", "_fade"]; 2 | 3 | (_display displayCtrl _ctrl) ctrlSetFade _fade; 4 | (_display displayCtrl _ctrl) ctrlCommit 0; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/util/setText.sqf: -------------------------------------------------------------------------------- 1 | params ["_display", "_ctrl", "_text"]; 2 | 3 | (_display displayCtrl _ctrl) ctrlSetText _text; 4 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/util/vehicleHasInterface.sqf: -------------------------------------------------------------------------------- 1 | params ["_vehicle", "_interface"]; 2 | 3 | _interfaces = (configFile >> "CfgVehicles" >> typeOf (vehicle player) >> "itc_land" >> "tabletInterfaces") call BIS_fnc_getCfgData; 4 | if(isNil{_interfaces}) exitWith {false}; 5 | 6 | _interface in _interfaces 7 | -------------------------------------------------------------------------------- /Addons/itc_land_tablet/functions/util/vehicleHasTablet.sqf: -------------------------------------------------------------------------------- 1 | params ["_vehicle"]; 2 | 3 | _tablet = (configFile >> "CfgVehicles" >> typeOf _vehicle >> "itc_land" >> "mountedTablet") call BIS_fnc_getCfgData; 4 | (!isNil{_tablet}) 5 | -------------------------------------------------------------------------------- /Addons/itc_land_towedAmmoHandling/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_smokeDispenser { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | -------------------------------------------------------------------------------- /Addons/itc_land_towedAmmoHandling/config/cfgVehicles.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_towedAmmoHandling/config/cfgVehicles.hpp -------------------------------------------------------------------------------- /Addons/itc_land_towedAmmoHandling/config/cfgWeapons.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_towedAmmoHandling/config/cfgWeapons.hpp -------------------------------------------------------------------------------- /Addons/itc_land_veh_GLTD/CfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CfgWeapons { 2 | class CBA_MiscItem_ItemInfo; 3 | class ACE_ItemCore; 4 | class itc_land_packableItem: ACE_ItemCore { 5 | class ItemInfo: CBA_MiscItem_ItemInfo {}; 6 | }; 7 | class ITC_Land_RemoteGLTD_Packed_base: itc_land_packableItem { 8 | scope = 0; 9 | author = "Toadball"; 10 | displayName = "Remote GLTD (Packed)"; 11 | descriptionShort = "Remote GLTD packed for carriage"; 12 | model = "\A3\Structures_F_Heli\Items\Luggage\PlasticCase_01_small_F.p3d"; 13 | //picture = "\A3\Drones_F\Air_F_Gamma\UAV_01\Data\UI\UAV_01_CA.paa"; 14 | class ItemInfo: ItemInfo { 15 | mass = 75; 16 | allowedSlots[] = {901}; 17 | scope = 0; 18 | }; 19 | }; 20 | class ITC_Land_B_RemoteGLTD_Packed: ITC_Land_RemoteGLTD_Packed_base {displayName = "Remote GLTD [NATO] (Packed)"; scope = 2; scopeCurator = 2; itc_land_unPacksTo = "ITC_Land_B_RemoteGLTD";}; 21 | 22 | class ITC_Land_BW_RemoteGLTD_Packed: ITC_Land_RemoteGLTD_Packed_base {displayName = "Remote GLTD [NATO] (Green, Packed)"; scope = 2; scopeCurator = 2; itc_land_unPacksTo = "ITC_Land_BW_RemoteGLTD";}; 23 | }; 24 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_GLTD/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_GLTD { 3 | requiredaddons[] = {}; 4 | requiredversion = 1.9; 5 | units[] = {"ITC_Land_B_RemoteGLTD","ITC_Land_Unpack_RemoteGLTD_BW"}; 6 | weapons[] = {"ITC_Land_B_RemoteGLTD_Packed","ITC_Land_BW_RemoteGLTD_Packed"}; 7 | magazines[] = {}; 8 | }; 9 | }; 10 | 11 | class NewTurret; 12 | #include "CfgVehicles.hpp" 13 | #include "CfgWeapons.hpp" 14 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_defender/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_defender { 3 | units[] = { "itc_land_o_sam_rhea2"}; 4 | weapons[] = {}; 5 | requiredVersion = 1.8; 6 | requiredAddons[] = {"A3_Weapons_F_Sams","itc_land_veh_weapons"}; 7 | author = "ITC Addons Team"; 8 | authors[] = {"ToadBall","Yax","VKing"}; 9 | }; 10 | }; 11 | 12 | #include "config\cfgVehicles.hpp" 13 | #include "config\cfgWeapons.hpp" 14 | #include "config\cfgMagazines.hpp" 15 | #include "config\cfgAmmo.hpp" -------------------------------------------------------------------------------- /Addons/itc_land_veh_defender/config/cfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class cfgMagazines { 2 | class magazine_Missile_mim145_x4; 3 | class itc_land_mim145_x4 : magazine_Missile_mim145_x4 { 4 | ammo = "itc_land_mim145"; 5 | itc_land_fuze = "sam35_mod0"; 6 | itc_land_CountInAH = 0; 7 | itc_land_submunition = "itc_land_mim145_helper"; 8 | itc_land_guidance[] = {"mim145_intercept","itc_land_guidance_fnc_nim145"}; 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_defender/config/cfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CfgWeapons { 2 | class weapon_mim145Launcher; 3 | class itc_land_mim145_launcher : weapon_mim145Launcher { 4 | magazines[] = {"itc_land_mim145_x4"}; 5 | class EventHandlers 6 | { 7 | class itc_land_veh_defender 8 | { 9 | fired = "_this call itc_land_veh_weapons_fnc_fired;"; 10 | }; 11 | }; 12 | }; 13 | }; 14 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_hammer/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_hammer { 3 | units[] = { "itc_land_NGS01_hammer2","itc_land_NGS01_hammer2_mod1"}; 4 | weapons[] = {}; 5 | requiredVersion = 1.8; 6 | requiredAddons[] = {"A3_Weapons_F","itc_land_veh_sights","itc_land_veh_weapons","itc_land_sphammohandler"}; 7 | author = "ITC Addons Team"; 8 | authors[] = {"ToadBall","Yax"}; 9 | }; 10 | }; 11 | 12 | class RCWSOptics; 13 | class Optics_Armored { 14 | class Wide: RCWSOptics {}; 15 | }; 16 | class Optics_Gunner_MBT_01: Optics_Armored { 17 | class Wide: Wide {}; 18 | }; 19 | 20 | class ITC_Land_Optics_IGS: Optics_Gunner_MBT_01 { 21 | class Wide: Wide {}; 22 | }; 23 | #include "CfgVehicles.hpp" 24 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_mk6/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_mk6 { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "config\cfgMagazines.hpp" 14 | #include "config\cfgAmmo.hpp" 15 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_mk6/config/cfgAmmo.hpp: -------------------------------------------------------------------------------- 1 | class cfgAmmo { 2 | class FlareCore; 3 | class itc_82mm_flare: FlareCore { //ILLUM 4 | model = "\A3\weapons_f\ammo\shell"; 5 | effectFlare = "CounterMeasureFlare"; 6 | aimAboveTarget[] = {50, 80, 140, 200, 260, 320, 380}; 7 | aimAboveDefault = 4; 8 | lightColor[] = {0.95, 0.95, 0.4, 0.5}; 9 | smokeColor[] = {1, 1, 1, 0.5}; 10 | brightness = 50; 11 | //intensity = 180000; 12 | //flareSize = 100; 13 | timeToLive = 70; 14 | ace_rearm_caliber = 155; 15 | //explosionTime = 1; 16 | }; 17 | class itc_82mm_flare_scripted: itc_82mm_flare { //SCRIPTED ILLUM FOR IN MISSION SPAWNING (TOAD) 18 | triggerTime = 0.001; 19 | }; 20 | }; 21 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_mk6/config/cfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class cfgMagazines { 2 | class 8Rnd_82mm_Mo_shells; 3 | class ACE_1Rnd_82mm_Mo_HE: 8Rnd_82mm_Mo_shells { 4 | itc_land_btabListFile = "itc_land_ballistics\tables\b_82\list.sqf"; 5 | }; 6 | class 8Rnd_82mm_Mo_Smoke_white; 7 | class ACE_1Rnd_82mm_Mo_Smoke: 8Rnd_82mm_Mo_Smoke_white { 8 | itc_land_btabListFile = "itc_land_ballistics\tables\b_82\list.sqf"; 9 | }; 10 | class 8Rnd_82mm_Mo_Flare_white; 11 | class ACE_1Rnd_82mm_Mo_Illum: 8Rnd_82mm_Mo_Flare_white { 12 | itc_land_btabListFile = "itc_land_ballistics\tables\b_82\list.sqf"; 13 | ammo = "itc_82mm_flare"; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_rhea/Config/cfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions { 2 | class itc_land_veh_rhea { 3 | class functions { 4 | class fired { 5 | file = "itc_land_veh_rhea\functions\fired.sqf"; 6 | }; 7 | }; 8 | }; 9 | }; 10 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_rhea/Config/cfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class cfgMagazines { 2 | class magazine_Missile_s750_x4; 3 | class itc_land_s750_x4 : magazine_Missile_s750_x4 { 4 | ammo = "itc_land_s750"; 5 | itc_land_fuze = "sam35_mod0"; 6 | itc_land_CountInAH = 0; 7 | itc_land_submunition = "itc_land_s750_helper"; 8 | itc_land_guidance[] = {"s750_intercept","itc_land_guidance_fnc_s750"}; 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_rhea/Config/cfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CfgWeapons { 2 | class weapon_s750Launcher; 3 | class itc_land_s750_launcher : weapon_s750Launcher { 4 | magazines[] = {"itc_land_s750_x4"}; 5 | class EventHandlers 6 | { 7 | class itc_land_veh_weapons 8 | { 9 | fired = "_this call itc_land_veh_rhea_fnc_fired;"; 10 | }; 11 | }; 12 | }; 13 | }; 14 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_rhea/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_rhea { 3 | units[] = { "itc_land_o_sam_rhea2"}; 4 | weapons[] = {}; 5 | requiredVersion = 1.8; 6 | requiredAddons[] = {"A3_Weapons_F_Sams"}; 7 | author = "ITC Addons Team"; 8 | authors[] = {"ToadBall","Yax","VKing"}; 9 | }; 10 | }; 11 | 12 | #include "config\cfgVehicles.hpp" 13 | #include "config\cfgWeapons.hpp" 14 | #include "config\cfgMagazines.hpp" 15 | #include "config\cfgAmmo.hpp" -------------------------------------------------------------------------------- /Addons/itc_land_veh_rhea/functions/fired.sqf: -------------------------------------------------------------------------------- 1 | _this call test_fnc_fired; 2 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_seara/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_seara { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax"}; 5 | requiredAddons[] = {"A3_Weapons_F","A3_Armor_F_Gamma_MBT_01","itc_land_veh_sights","itc_land_veh_weapons"}; 6 | requiredversion = 1.8; 7 | units[] = {"itc_land_b_mlrs_seara2","itc_land_b_t_mlrs_seara2"}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "CfgVehicles.hpp" 14 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_sholef/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_sholef { 3 | units[] = { "itc_land_b_SPH_Sholef2","itc_land_b_t_SPH_Sholef2" }; 4 | weapons[] = {}; 5 | requiredVersion = 1.8; 6 | requiredAddons[] = {"A3_Weapons_F","A3_Armor_F_Gamma_MBT_01","itc_land_veh_sights","itc_land_veh_weapons","itc_land_sphammohandler"}; 7 | author = "ITC Addons Team"; 8 | authors[] = {"ToadBall","Yax"}; 9 | }; 10 | }; 11 | class RCWSOptics; 12 | class Optics_Armored { 13 | class Wide: RCWSOptics {}; 14 | }; 15 | class Optics_Gunner_MBT_01: Optics_Armored { 16 | class Wide: Wide {}; 17 | }; 18 | class ITC_Land_Optics_IGS: Optics_Gunner_MBT_01 { 19 | class Wide: Wide {}; 20 | }; 21 | #include "CfgVehicles.hpp" -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/CfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions { 2 | class itc_land_veh_sights { 3 | class functions { 4 | class init { 5 | postInit = 1; 6 | file = "itc_land_veh_sights\functions\init.sqf"; 7 | }; 8 | }; 9 | }; 10 | }; 11 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/RscInGameUI.hpp: -------------------------------------------------------------------------------- 1 | //UI Stuff: 2 | class RscText; 3 | class RscFrame; 4 | class RscListbox; 5 | class RscListNBox; 6 | class RscPicture; 7 | class ScrollBar; 8 | class RscControlsGroup; 9 | class RscControlsGroupNoScrollbars; 10 | 11 | 12 | class RscActiveText; 13 | class RscStructuredText; 14 | 15 | class RscInGameUI { 16 | class RscUnitInfo; 17 | 18 | #include "ui\ITC_Land_RscGunnerSightSPH.hpp" 19 | #include "ui\ITC_Land_RscGunnerSightBasic.hpp" 20 | #include "ui\ITC_Land_RscAltGunnerSightSPH.hpp" 21 | #include "ui\ITC_Land_RscGunnerSightMLRS.hpp" 22 | #include "ui\ITC_Land_RscGunnerSightZamakMRLi.hpp" 23 | #include "ui\ITC_Land_RscIGS_SPH.hpp" 24 | 25 | class RscOptics_strider_commander { 26 | class CA_IGUI_elements_group; 27 | }; 28 | #include "ui\ITC_Land_RscOptics_strider_commander.hpp" 29 | #include "ui\ITC_Land_RscOptics_GLTD_gunner.hpp" 30 | 31 | class RscOptics_UAV_gunner: RscUnitInfo { 32 | class CA_IGUI_elements_group; 33 | }; 34 | #include "ui\ITC_Land_RscOptics_UAV_gunner.hpp" 35 | }; 36 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_sights { 3 | units[] = { }; 4 | weapons[] = {}; 5 | requiredVersion = 0.10; 6 | requiredAddons[] = {"ace_common","ace_mk6mortar"}; 7 | author = "ITC Addons Team"; 8 | authors[] = {"ToadBall","Yax"}; 9 | }; 10 | }; 11 | class RCWSOptics; 12 | class Optics_Armored { 13 | class Wide: RCWSOptics {}; 14 | }; 15 | class Optics_Gunner_MBT_01: Optics_Armored { 16 | class Wide: Wide {}; 17 | }; 18 | class ITC_Land_Optics_IGS: Optics_Gunner_MBT_01 { 19 | class Wide: Wide { 20 | initFov = 0.174; 21 | minFov = 0.174; 22 | maxFov = 0.174; 23 | visionMode[] = {"Normal","NVG"}; 24 | thermalMode[] = {}; 25 | gunnerOpticsModel = "\A3\Weapons_F\Reticle\Optics_Gunner_MBT_01_w_F.p3d"; 26 | gunnerOpticsEffect[] = {}; 27 | }; 28 | }; 29 | 30 | 31 | #include "CfgFunctions.hpp" 32 | #include "RscInGameUI.hpp" -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/functions/init.sqf: -------------------------------------------------------------------------------- 1 | #include "itc_land_onLoad_RscGunnerSightSPH.sqf" 2 | #include "itc_land_onLoad_RscGunnerSightBasic.sqf" 3 | #include "itc_land_onLoad_RscAltGunnerSightSPH.sqf" 4 | #include "itc_land_onLoad_RscGunnerSightMLRS.sqf" 5 | #include "itc_land_onLoad_RscGunnerSightZamakMRLi.sqf" 6 | #include "itc_land_onLoad_RscIGS_SPH.sqf" 7 | #include "itc_land_onLoad_RscOptics_UAV_gunner.sqf" 8 | #include "itc_land_onLoad_RscOptics_GLTD_gunner.sqf" 9 | #include "itc_land_onLoad_RscOptics_strider_commander.sqf" 10 | 11 | ["vehicle", { 12 | params ["_player", "_newVehicle"]; 13 | if (count (currentWeapon _player) > 0) exitWith {}; 14 | if (isNull _newVehicle) exitWith {}; 15 | private _sightEvent = _newVehicle getVariable "ITC_Land_SightEvent"; 16 | if (isNil "_sightEvent") exitWith {}; 17 | 18 | //Restore sight display 19 | [_sightEvent, []] call CBA_fnc_localEvent; 20 | }, true] call CBA_fnc_addPlayerEventHandler; 21 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/arrowmark_d.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/arrowmark_d.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/arrowmark_l.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/arrowmark_l.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/arrowmark_r.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/arrowmark_r.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/arrowmark_u.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/arrowmark_u.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/crosshair_ca.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/crosshair_ca.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/iconlaseron_w.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/iconlaseron_w.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/laser_designator_iconlaseron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/laser_designator_iconlaseron.png -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/mark.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/mark.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/n_arr.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/n_arr.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/n_r_arr.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/n_r_arr.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/n_r_txt.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/n_r_txt.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sights/ui/data/n_txt.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_sights/ui/data/n_txt.paa -------------------------------------------------------------------------------- /Addons/itc_land_veh_sochor/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_sochor { 3 | units[] = { "itc_land_o_sph_sochor2","itc_land_o_t_sph_sochor2"}; 4 | weapons[] = {}; 5 | requiredVersion = 1.8; 6 | requiredAddons[] = {"A3_Weapons_F","itc_land_veh_sights","itc_land_veh_weapons","itc_land_sphammohandler"}; 7 | author = "ITC Addons Team"; 8 | authors[] = {"ToadBall","Yax"}; 9 | }; 10 | }; 11 | class RCWSOptics; 12 | class Optics_Armored { 13 | class Wide: RCWSOptics {}; 14 | }; 15 | class Optics_Gunner_MBT_01: Optics_Armored { 16 | class Wide: Wide {}; 17 | }; 18 | class ITC_Land_Optics_IGS: Optics_Gunner_MBT_01 { 19 | class Wide: Wide {}; 20 | }; 21 | #include "CfgVehicles.hpp" -------------------------------------------------------------------------------- /Addons/itc_land_veh_strider/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_strider { 3 | requiredaddons[] = {"A3_Soft_F_Beta_MRAP_03","itc_land_veh_sights"}; 4 | requiredversion = 1.9; 5 | units[] = {"itc_land_I_StriderRV","itc_land_I_StriderRV_HMG","itc_land_I_StriderRV_GMG"}; 6 | }; 7 | }; 8 | class NewTurret; 9 | #include "CfgVehicles.hpp" 10 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_uav01/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_uav01 { 3 | requiredaddons[] = {"A3_Drones_F_Air_F_Gamma_UAV_01","itc_land_veh_sights","itc_land_packable"}; 4 | requiredversion = 1.9; 5 | units[] = {"ITC_Land_B_UAV_AR2i","ITC_Land_O_UAV_AR2i","ITC_Land_I_UAV_AR2i","ITC_Land_B_UAV_AR2e","ITC_Land_O_UAV_AR2e","ITC_Land_I_UAV_AR2e","B_UAV_01_F","O_UAV_01_F","I_UAV_01_F","ITC_Land_b_uav_ar2i_backpack","ITC_Land_i_uav_ar2i_backpack","ITC_Land_o_uav_ar2i_backpack"}; 6 | weapons[] = {"ITC_Land_B_AR2i_Packed","ITC_Land_O_AR2i_Packed","ITC_Land_I_AR2i_Packed","ITC_Land_B_AR2e_Packed","ITC_Land_O_AR2e_Packed","ITC_Land_I_AR2e_Packed","ITC_Land_B_UAV_Packed","ITC_Land_O_UAV_Packed","ITC_Land_I_UAV_Packed"}; 7 | magazines[] = {}; 8 | }; 9 | class itc_land_veh_darter { 10 | requiredaddons[] = {"A3_Drones_F_Air_F_Gamma_UAV_01","itc_land_veh_sights","itc_land_packable"}; 11 | requiredversion = 1.9; 12 | units[] = {}; 13 | weapons[] = {}; 14 | magazines[] = {}; 15 | }; 16 | }; 17 | 18 | #include "CfgVehicles.hpp" 19 | #include "CfgWeapons.hpp" 20 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_uav02/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_uav02 { 3 | requiredaddons[] = {"A3_Drones_F_Air_F_Gamma_UAV_02","itc_land_veh_sights"}; 4 | requiredversion = 1.9; 5 | units[] = {"ITC_Land_B_UAV_MQ4i","ITC_Land_O_UAV_K40i","ITC_Land_I_UAV_K40i"}; 6 | }; 7 | }; 8 | 9 | class NewTurret; 10 | 11 | //#include "RscInGameUI.hpp" 12 | //#include "CfgFunctions.hpp" 13 | #include "CfgVehicles.hpp" 14 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_uav05/CfgVehicles.hpp: -------------------------------------------------------------------------------- 1 | class CfgVehicles { 2 | class UAV; 3 | class UAV_05_Base_F: UAV { 4 | class Turrets { 5 | class MainTurret: NewTurret {}; 6 | }; 7 | }; 8 | class B_UAV_05_F: UAV_05_Base_F { 9 | class Turrets: Turrets { 10 | class MainTurret: MainTurret {}; 11 | }; 12 | }; 13 | class ITC_Land_B_UAV_UCAVi: B_UAV_05_F { 14 | author = "Toadball"; 15 | displayName = "UCAVi Sentinel 2"; 16 | class Turrets: Turrets { 17 | class MainTurret: MainTurret { 18 | turretInfoType = "ITC_Land_RscOptics_UAV_gunner"; 19 | }; 20 | }; 21 | }; 22 | }; 23 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_uav05/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_uav05 { 3 | requiredaddons[] = {"A3_Air_F_Jets_UAV_05","itc_land_veh_sights"}; 4 | requiredversion = 1.9; 5 | units[] = {"ITC_Land_B_UAV_UCAVi"}; 6 | }; 7 | }; 8 | 9 | class NewTurret; 10 | 11 | //#include "RscInGameUI.hpp" 12 | //#include "CfgFunctions.hpp" 13 | #include "CfgVehicles.hpp" 14 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_uav06/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_uav06 { 3 | requiredaddons[] = {"A3_Air_F_Orange_UAV_06","itc_land_packable"}; 4 | requiredversion = 1.9; 5 | units[] = {"B_UAV_06_F","O_UAV_06_F","I_UAV_06_F"}; 6 | weapons[] = {"ITC_Land_B_AL6_Packed","ITC_Land_O_AL6_Packed","ITC_Land_I_AL6_Packed"}; 7 | magazines[] = {}; 8 | }; 9 | }; 10 | 11 | #include "CfgVehicles.hpp" 12 | #include "CfgWeapons.hpp" 13 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgEventHandlers.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Addons/itc_land_veh_weapons/CfgEventHandlers.hpp -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgFunctions.hpp: -------------------------------------------------------------------------------- 1 | class CfgFunctions { 2 | class itc_land_veh_weapons { 3 | class functions { 4 | class fired { 5 | file = "itc_land_veh_weapons\functions\fired.sqf"; 6 | }; 7 | class firedMof35 { //FOR REGULAR SHELLS LIKE HE 8 | file = "itc_land_veh_weapons\functions\firedMof35.sqf"; 9 | }; 10 | class firedMof35Mod3 { //FOR CARGO SHELLS LIKE EXTRA 11 | file = "itc_land_veh_weapons\functions\firedMof35Mod3.sqf"; 12 | }; 13 | class firedSAM35 { //FOR THINGS WOT ARE SHOT AT AIRCRAFT 14 | file = "itc_land_veh_weapons\functions\firedSAM35.sqf"; 15 | }; 16 | class fuzeDelay { 17 | file = "itc_land_veh_weapons\functions\fuzeDelay.sqf"; 18 | }; 19 | class fuzeTime { 20 | file = "itc_land_veh_weapons\functions\fuzeTime.sqf"; 21 | }; 22 | class fuzeProx { 23 | file = "itc_land_veh_weapons\functions\fuzeProx.sqf"; 24 | }; 25 | class adjustMuzzleVelG15x { 26 | file = "itc_land_veh_weapons\functions\adjustMuzzleVelG15x.sqf"; 27 | }; 28 | class deployExtra { 29 | file = "itc_land_veh_weapons\functions\deployExtra.sqf"; 30 | }; 31 | class deployFalat { 32 | file = "itc_land_veh_weapons\functions\deployFalat.sqf"; 33 | }; 34 | }; 35 | }; 36 | }; 37 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class CfgMagazines { 2 | class VehicleMagazine; 3 | class itc_land_how_mag : VehicleMagazine { 4 | scope = 2; 5 | count = 1; 6 | nameSound = "cannon"; 7 | dispersionEvent = "itc_land_veh_weapons_fnc_adjustMuzzleVelG15x"; 8 | itc_land_heightModifier = 0; 9 | itc_land_timeModifier = 0; 10 | }; 11 | #include "CfgMagazines_155mm.hpp" 12 | #include "CfgMagazines_152mm.hpp" 13 | #include "CfgMagazines_122mm.hpp" 14 | #include "CfgMagazines_127mm.hpp" 15 | #include "CfgMagazines_230mm.hpp" 16 | }; 17 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgVehicles.hpp: -------------------------------------------------------------------------------- 1 | class CfgVehicles { 2 | class Parachute_02_base_F; 3 | class ITC_155Extra: Parachute_02_base_F { 4 | castDriverShadow = 0; 5 | destrType = "DestructDefault"; 6 | displayName = "155Extra"; 7 | model = "\z\ace\addons\huntir\data\huntir.p3d"; 8 | scope = 1; 9 | class HitPoints { 10 | class HitEngine { 11 | armor = 0; 12 | material = -1; 13 | name = ""; 14 | visual = ""; 15 | radius = 0; 16 | passThrough = 0; 17 | explosionShielding = 0; 18 | }; 19 | class HitParachute { 20 | armor = 0.0001; 21 | material = -1; 22 | name = "parachute"; 23 | visual = ""; 24 | radius = 0.2; 25 | passThrough = 1; 26 | explosionShielding = 0; 27 | }; 28 | class HitCamera { 29 | armor = 0.001; 30 | material = -1; 31 | name = "camera"; 32 | visual = ""; 33 | radius = 0.025; 34 | passThrough = 1; 35 | explosionShielding = 1; 36 | }; 37 | }; 38 | }; 39 | class ITC_155Falat: ITC_155Extra { 40 | displayName = "155Falat"; 41 | }; 42 | }; 43 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class CfgWeapons { 2 | #include "CfgWeapons_mlrs.hpp" 3 | #include "CfgWeapons_howitzers.hpp" 4 | }; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgWeapons_howitzers_magazines105mm.hpp: -------------------------------------------------------------------------------- 1 | //CfgWeapons_Magazines.hpp 2 | 3 | magazines[] = { 4 | "itc_land_g105hex_chg1", 5 | "itc_land_g105hex_chg2", 6 | "itc_land_g105hex_chg3", 7 | "itc_land_g105hex_chg4", 8 | "itc_land_g105hex_chg5", 9 | 10 | "itc_land_g105smo_chg1", 11 | "itc_land_g105smo_chg2", 12 | "itc_land_g105smo_chg3", 13 | "itc_land_g105smo_chg4", 14 | "itc_land_g105smo_chg5", 15 | 16 | "itc_land_g105icm_chg1", 17 | "itc_land_g105icm_chg2", 18 | "itc_land_g105icm_chg3", 19 | "itc_land_g105icm_chg4", 20 | "itc_land_g105icm_chg5", 21 | 22 | "itc_land_g105ill_chg1", 23 | "itc_land_g105ill_chg2", 24 | "itc_land_g105ill_chg3", 25 | "itc_land_g105ill_chg4", 26 | "itc_land_g105ill_chg5" 27 | }; 28 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgWeapons_howitzers_magazines122mm.hpp: -------------------------------------------------------------------------------- 1 | //CfgWeapons_Magazines.hpp 2 | 3 | magazines[] = { 4 | "itc_land_g122hex_chg1", 5 | "itc_land_g122hex_chg2", 6 | "itc_land_g122hex_chg3", 7 | "itc_land_g122hex_chg4", 8 | "itc_land_g122hex_chg5", 9 | 10 | "itc_land_g122smo_chg1", 11 | "itc_land_g122smo_chg2", 12 | "itc_land_g122smo_chg3", 13 | "itc_land_g122smo_chg4", 14 | "itc_land_g122smo_chg5", 15 | 16 | "itc_land_g122icm_chg1", 17 | "itc_land_g122icm_chg2", 18 | "itc_land_g122icm_chg3", 19 | "itc_land_g122icm_chg4", 20 | "itc_land_g122icm_chg5", 21 | 22 | "itc_land_g122ill_chg1", 23 | "itc_land_g122ill_chg2", 24 | "itc_land_g122ill_chg3", 25 | "itc_land_g122ill_chg4", 26 | "itc_land_g122ill_chg5", 27 | 28 | "itc_land_g122lgm_chg1", 29 | "itc_land_g122lgm_chg2", 30 | "itc_land_g122lgm_chg3", 31 | "itc_land_g122lgm_chg4", 32 | "itc_land_g122lgm_chg5" 33 | }; 34 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgWeapons_howitzers_magazines127mm.hpp: -------------------------------------------------------------------------------- 1 | //CfgWeapons_Magazines.hpp 2 | 3 | magazines[] = { 4 | "itc_land_g127hex_chg1", 5 | "itc_land_g127hex_chg2", 6 | "itc_land_g127hex_chg3", 7 | "itc_land_g127hex_chg4", 8 | "itc_land_g127hex_chg5", 9 | 10 | "itc_land_g127smo_chg1", 11 | "itc_land_g127smo_chg2", 12 | "itc_land_g127smo_chg3", 13 | "itc_land_g127smo_chg4", 14 | "itc_land_g127smo_chg5", 15 | 16 | "itc_land_g127pgm_chg1", 17 | "itc_land_g127pgm_chg2", 18 | "itc_land_g127pgm_chg3", 19 | "itc_land_g127pgm_chg4", 20 | "itc_land_g127pgm_chg5", 21 | 22 | "itc_land_g127lgm_chg1", 23 | "itc_land_g127lgm_chg2", 24 | "itc_land_g127lgm_chg3", 25 | "itc_land_g127lgm_chg4", 26 | "itc_land_g127lgm_chg5", 27 | 28 | "itc_land_g127ill_chg1", 29 | "itc_land_g127ill_chg2", 30 | "itc_land_g127ill_chg3", 31 | "itc_land_g127ill_chg4", 32 | "itc_land_g127ill_chg5" 33 | }; 34 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgWeapons_howitzers_magazines152mm.hpp: -------------------------------------------------------------------------------- 1 | //CfgWeapons_Magazines.hpp 2 | 3 | magazines[] = { 4 | "itc_land_g152hex_chg1", 5 | "itc_land_g152hex_chg2", 6 | "itc_land_g152hex_chg3", 7 | "itc_land_g152hex_chg4", 8 | "itc_land_g152hex_chg5", 9 | 10 | "itc_land_g152smo_chg1", 11 | "itc_land_g152smo_chg2", 12 | "itc_land_g152smo_chg3", 13 | "itc_land_g152smo_chg4", 14 | "itc_land_g152smo_chg5", 15 | 16 | "itc_land_g152icm_chg1", 17 | "itc_land_g152icm_chg2", 18 | "itc_land_g152icm_chg3", 19 | "itc_land_g152icm_chg4", 20 | "itc_land_g152icm_chg5", 21 | 22 | "itc_land_g152mat_chg1", 23 | "itc_land_g152mat_chg2", 24 | "itc_land_g152mat_chg3", 25 | "itc_land_g152mat_chg4", 26 | "itc_land_g152mat_chg5", 27 | 28 | "itc_land_g152map_chg1", 29 | "itc_land_g152map_chg2", 30 | "itc_land_g152map_chg3", 31 | "itc_land_g152map_chg4", 32 | "itc_land_g152map_chg5", 33 | 34 | "itc_land_g152pgm_chg1", 35 | "itc_land_g152pgm_chg2", 36 | "itc_land_g152pgm_chg3", 37 | "itc_land_g152pgm_chg4", 38 | "itc_land_g152pgm_chg5", 39 | 40 | "itc_land_g152lgm_chg1", 41 | "itc_land_g152lgm_chg2", 42 | "itc_land_g152lgm_chg3", 43 | "itc_land_g152lgm_chg4", 44 | "itc_land_g152lgm_chg5", 45 | 46 | "itc_land_g152ill_chg1", 47 | "itc_land_g152ill_chg2", 48 | "itc_land_g152ill_chg3", 49 | "itc_land_g152ill_chg4", 50 | "itc_land_g152ill_chg5" 51 | }; 52 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/CfgWeapons_mlrs.hpp: -------------------------------------------------------------------------------- 1 | class RocketPods; 2 | class rockets_230mm_GAT : RocketPods { 3 | class Mode_16; 4 | }; 5 | class itc_land_230mm_mlrs : rockets_230mm_GAT { 6 | modes[] = {"Mode_16"}; 7 | displayName = "M230 MLRS"; 8 | magazineReloadTime = 30; 9 | magazines[] = { 10 | "itc_land_m230hex_12rnd", 11 | "itc_land_m230pgm_12rnd","itc_land_m230pgm_6rnd", 12 | "itc_land_m230icm_12rnd","itc_land_m230icm_6rnd", 13 | "itc_land_m230gicm_12rnd","itc_land_m230gicm_6rnd", 14 | "itc_land_m230mat_12rnd","itc_land_m230map_12rnd" 15 | }; 16 | class Mode_16 : Mode_16 { 17 | displayName = "MLRS"; 18 | artilleryCharge = 1; 19 | reloadTime = 0.5; 20 | 21 | }; 22 | class EventHandlers 23 | { 24 | class itc_land_veh_weapons 25 | { 26 | fired = "_this call itc_land_veh_weapons_fnc_fired;"; 27 | }; 28 | }; 29 | }; 30 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/ITC_Land_CfgFuzes.hpp: -------------------------------------------------------------------------------- 1 | class ITC_Land_CfgFuzes { 2 | 3 | class ph_fuze { 4 | modes[] = {"prox","pd","time","delay"}; 5 | modeDesc[] = {"Proximity","Point Detonate","Time","Delay"}; 6 | firedEvent = "ph_fuzeFunc"; 7 | }; 8 | //Modular Fuse 35: Mod 0 All modes, subsequent numbers are more specific 9 | class mof35_mod0 { 10 | modes[] = {"pd","prox","time","delay"}; 11 | modeDesc[] = {"Point Detonate","Proximity","Time","Delay"}; 12 | firedEvent = "itc_land_veh_weapons_fnc_firedMof35"; 13 | proxHOB = 9; 14 | }; 15 | class mof35_mod1: mof35_mod0 { 16 | modes[] = {"time"}; 17 | modeDesc[] = {"Time"}; 18 | firedEvent = "itc_land_veh_weapons_fnc_firedMof35"; 19 | }; 20 | class mof35_mod2: mof35_mod0 { 21 | modes[] = {"pd","prox","delay"}; 22 | modeDesc[] = {"Point Detonate","Proximity","Delay"}; 23 | firedEvent = "itc_land_veh_weapons_fnc_firedMof35"; 24 | }; 25 | class mof35_mod3: mof35_mod0 { //FOR CARGO SHELLS LIKE EXTRA 26 | modes[] = {"time"}; 27 | modeDesc[] = {"Time"}; 28 | firedEvent = "itc_land_veh_weapons_fnc_firedMof35Mod3"; 29 | }; 30 | class sam35_mod0 { //FOR SAMS WITH PROX FUZING 31 | modes[] = {"prox"}; 32 | modeDesc[] = {"Proximity"}; 33 | firedEvent = "itc_land_veh_weapons_fnc_firedSAM35"; 34 | proxFOV = 60; 35 | proxRAN = 30; 36 | }; 37 | }; 38 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_weapons { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax","VKing"}; 5 | requiredaddons[] = {"A3_Weapons_F"}; 6 | requiredversion = 1.8; 7 | units[] = {}; 8 | weapons[] = { 9 | "itc_land_155mm_howitzer", 10 | "itc_land_152mm_howitzer" 11 | }; 12 | magazines[] = { 13 | }; 14 | }; 15 | }; 16 | 17 | class mode_semiauto; 18 | 19 | #include "ITC_Land_CfgFuzes.hpp" 20 | #include "CfgFunctions.hpp" 21 | #include "CfgAmmo.hpp" 22 | #include "CfgWeapons.hpp" 23 | #include "CfgMagazines.hpp" 24 | #include "CfgEventHandlers.hpp" 25 | #include "CfgVehicles.hpp" 26 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/functions/adjustMuzzleVelG15x.sqf: -------------------------------------------------------------------------------- 1 | params ["_vehicle","_weapon","_muzzle","_mode","_ammo","_magazine","_projectile"]; 2 | 3 | private _currentSpeed = vectorMagnitude (velocity _projectile); 4 | private _randomFactor = random [(_currentSpeed / 100) * -0.5,0,(_currentSpeed / 100) * 0.5]; 5 | private _targetSpeed = _currentSpeed + _randomFactor; 6 | private _targetVelocity = (vectorNormalized velocity _projectile) vectorMultiply _targetSpeed; 7 | _projectile setVelocity _targetVelocity; 8 | //player sideChat format["Adjusting velocity from %1 to %2", _currentSpeed, _targetSpeed]; 9 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/functions/fired.sqf: -------------------------------------------------------------------------------- 1 | params ["_unit", "", "", "", "_ammo", "_magazine", "_projectile", "_gunner"]; 2 | if (!local _gunner) exitWith {}; 3 | 4 | _fuze = getText (configFile >> "CfgMagazines" >> _magazine >> "itc_land_fuze"); 5 | _event = configFile >> "ITC_Land_CfgFuzes" >> _fuze >> "firedEvent"; 6 | 7 | if (isText _event) then { 8 | _this call (missionNamespace getVariable [getText _event, {}]); 9 | }; 10 | 11 | _dispersionEvent = configFile >> "CfgMagazines" >> _magazine >> "dispersionEvent"; 12 | if (isText _dispersionEvent) then { 13 | _this call (missionNamespace getVariable [getText _dispersionEvent, {}]); 14 | }; 15 | 16 | _guidanceConfig = (configFile >> "CfgMagazines" >> _magazine >> "itc_land_guidance") call BIS_fnc_getCfgData; 17 | 18 | if (!isNil{_guidanceConfig # 1}) then { 19 | //player sideChat format["INIT GUIDANCE %1",_guidanceConfig # 0]; 20 | _this call (missionNamespace getVariable [_guidanceConfig # 1, {}]); 21 | }; 22 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/functions/firedMof35.sqf: -------------------------------------------------------------------------------- 1 | /* 2 | * Author: Yax 3 | * Fired event for ITC Howitzers with Mof35 fuzed shells 4 | */ 5 | params ["_vehicle", "", "", "", "_ammo", "_magazine", "_projectile", "_gunner"]; 6 | if (!local _gunner) exitWith {}; 7 | _fuzeType = _vehicle getVariable ["itc_land_selectedFuzeMode","pd"]; 8 | _fuzeValue = _vehicle getVariable ["itc_land_fuzeValues",0]; 9 | 10 | 11 | if(isNil{_fuzeType}) exitWith {}; 12 | if(_fuzeType == "" || _fuzeType == "pd") exitWith {}; 13 | 14 | _fuzeMethods = [ 15 | ["delay",itc_land_veh_weapons_fnc_fuzeDelay], 16 | ["time",itc_land_veh_weapons_fnc_fuzeTime], 17 | ["prox",itc_land_veh_weapons_fnc_fuzeProx] 18 | ]; 19 | 20 | _fuzeMethod = _fuzeMethods # (_fuzeMethods findIf {(_x # 0) == _fuzeType}) # 1; 21 | [_fuzeMethod, 0, [_projectile, _magazine, getPosATL _projectile, _fuzeType, _fuzeValue, time,[0,0,0]]] call CBA_fnc_addPerFrameHandler; 22 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/functions/fuzeProx.sqf: -------------------------------------------------------------------------------- 1 | params ["_pfhValues","_pfhId"]; 2 | _pfhValues params ["_projectile", "_magazine", "_position", "_fuzeType","_fuzeValue", "",""]; 3 | 4 | if (alive _projectile) then { 5 | _position = getPosATL _projectile; 6 | _pfhValues set [2, _position]; 7 | }; 8 | 9 | _alt = (getPosATL _projectile) select 2; 10 | if((_alt < _fuzeValue && (velocity _projectile) # 2 < 0) || !alive _projectile) exitWith { 11 | _subMunition = getText (configFile >> "CfgMagazines" >> _magazine >> "itc_land_submunition"); 12 | deleteVehicle _projectile; _subMunition createVehicle _position; 13 | [_pfhId] call CBA_fnc_removePerFrameHandler; 14 | }; 15 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_weapons/functions/fuzeTime.sqf: -------------------------------------------------------------------------------- 1 | params ["_pfhValues","_pfhId"]; 2 | _pfhValues params ["_projectile", "_magazine", "_position", "_fuzeType","_fuzeTime", "_firedTime",""]; 3 | 4 | if (alive _projectile) then { 5 | _position = getPosATL _projectile; 6 | _pfhValues set [2, _position]; 7 | }; 8 | 9 | _triggered = time > _firedTime + _fuzeTime; 10 | 11 | if(_triggered || !alive _projectile) exitWith { 12 | 13 | _vProj = velocity _projectile; 14 | _dProj = getDir _projectile; 15 | _pbProj = _projectile call BIS_fnc_getPitchBank; 16 | [_pfhId] call CBA_fnc_removePerFrameHandler; 17 | deleteVehicle _projectile; 18 | 19 | _subMunitionClass = getText (configFile >> "CfgMagazines" >> _magazine >> "itc_land_submunition"); 20 | _subMunition = createVehicle [_subMunitionClass, _position, [], 0, "FLY"]; 21 | _subMunition setDir _dProj; 22 | ([_subMunition] + _pbProj) call BIS_fnc_setPitchBank; 23 | _subMunition setVelocity _vProj; 24 | 25 | }; 26 | -------------------------------------------------------------------------------- /Addons/itc_land_veh_zamakMLR/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_veh_zamakMLR { 3 | author = "ITC Addons Team"; 4 | authors[] = {"ToadBall","Yax"}; 5 | requiredaddons[] = {"A3_Weapons_F","itc_land_veh_sights"}; 6 | requiredversion = 1.8; 7 | units[] = {"itc_land_i_mlrs_zamak","itc_land_o_mlrs_zamak"}; 8 | weapons[] = {}; 9 | magazines[] = {}; 10 | }; 11 | }; 12 | 13 | #include "CfgVehicles.hpp" 14 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/config.cpp: -------------------------------------------------------------------------------- 1 | class CfgPatches { 2 | class itc_land_vls { 3 | units[] = {"itc_land_b_vls2","itc_land_b_vls2_slam"}; 4 | weapons[] = {}; 5 | requiredVersion = 1.8; 6 | requiredAddons[] = {"A3_Weapons_F","itc_land_veh_sights","itc_land_veh_weapons","itc_land_ciws"}; 7 | author = "ITC Addons Team"; 8 | authors[] = {"ToadBall","Yax"}; 9 | }; 10 | }; 11 | 12 | #include "config\cfgVehicles.hpp" 13 | #include "config\cfgFunctions.hpp" 14 | #include "config\cfgWeapons.hpp" 15 | #include "config\cfgMagazines.hpp" 16 | #include "config\cfgAmmo.hpp" 17 | #include "config\cfgDisplay.hpp" 18 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/config/cfgMagazines.hpp: -------------------------------------------------------------------------------- 1 | class cfgMagazines { 2 | //class magazine_rockets_230mm_GAT_x18; 3 | class magazine_Missile_rim162_x8; 4 | class itc_land_mn230essm_x18 : magazine_Missile_rim162_x8 { 5 | ammo = "itc_land_ammo_mn230_essm"; 6 | count = 18; 7 | initSpeed = 12; 8 | }; 9 | class magazine_Missiles_Cruise_01_x18; 10 | class itc_land_mn230slam_x18 : magazine_Missiles_Cruise_01_x18 { 11 | count = 18; 12 | initSpeed = 12; 13 | }; 14 | }; 15 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/config/cfgWeapons.hpp: -------------------------------------------------------------------------------- 1 | class cfgWeapons { 2 | class weapon_rim162Launcher; 3 | class itc_land_mn230essm_launcher : weapon_rim162Launcher { 4 | weaponLockDelay = 0.1; 5 | magazines[] = {"itc_land_mn230essm_x18"}; 6 | fireSpreadAngle = 3; 7 | enableAttack = 1; 8 | initSpeed = 0; 9 | lockAcquire = 1; 10 | minRange = 800; 11 | minRangeProbab = 1; 12 | midRange = 3500; 13 | midRangeProbab = 1; 14 | maxRange = 20000; 15 | maxRangeProbab = 1; 16 | reloadTime=5; 17 | class EventHandlers { 18 | class itc_land_veh_weapons { 19 | fired = "_this call BIS_fnc_effectFiredCruiseMissile;"; 20 | }; 21 | }; 22 | }; 23 | class weapon_VLS_01; 24 | class itc_land_mn230slam_launcher: weapon_VLS_01 { 25 | magazines[] = {"itc_land_mn230slam_x18"}; 26 | class EventHandlers { 27 | class itc_land_veh_weapons { 28 | fired = "_this call itc_land_vls_fnc_fired;"; 29 | }; 30 | }; 31 | }; 32 | }; 33 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/AGCAS.sqf: -------------------------------------------------------------------------------- 1 | params ["_guidance","_bank","_bankRate","_pitch","_diveRate"]; 2 | _guidance params ["_projectile", "_steerPoint","_frameTime", "_angleX", "_angleY","_stage"]; 3 | 4 | _pitch = _pitch + 0.01; 5 | 6 | private _speed = vectorMagnitude (velocity _projectile); 7 | private _levelTime = if(_bank != 0 && _bankRate != 0)then[{(abs _bank) / _bankRate},{0}]; 8 | private _pitchTime = (10 - _pitch) / _diveRate; 9 | private _pullDist = ((_levelTime * _speed) + (_pitchTime * _speed)) max 300; 10 | private _velocityDirDist = ((vectorNormalized (velocity _projectile)) vectorMultiply _pullDist); 11 | private _intersectPos = (getPosASL _projectile) vectorAdd _velocityDirDist; 12 | //private _intersectPos = _projectile modelToWorldWorld [0,_pullDist,-50]; 13 | 14 | private _intersects = lineIntersectsSurfaces [getPosASL _projectile, _intersectPos, _projectile]; 15 | (count _intersects > 0) 16 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/angleToTarget.sqf: -------------------------------------------------------------------------------- 1 | params ["_projectile", "_target"]; 2 | private _vectToTarget = _position vectorFromTo _target; 3 | private _vectToTargetDiff = _vectToTarget vectorDiff (vectorNormalized (velocity _projectile)); 4 | private _vectorModelSpace = _projectile vectorWorldToModel _vectToTargetDiff; 5 | private _angleX = ((getPos _projectile) getDir _target) - (getDir _projectile); 6 | if(_angleX < 0) then {_angleX = _angleX + 360}; 7 | if(_angleX > 180) then {_angleX = _angleX - 360}; 8 | private _angleY = asin (_vectorModelSpace # 2); 9 | [_angleX, _angleY] 10 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/determineSteerPoint.sqf: -------------------------------------------------------------------------------- 1 | params ["_projectile", "_steerPoint","_frameTime", "_angleX", "_angleY","_stage","_targetCoordinates","_azimuth"]; 2 | //(_this select 0) params ["_projectile", "_ammo", "_position", "_targetCoordinates", "_stage", "_time", "_angle", "_lastFrameTime","_azimuth","_steerPoint"]; 3 | private _return = [_stage, _steerPoint]; 4 | if(_stage == "SEP") exitWith { 5 | if(time > _time + 1) then { 6 | //if(_azimuth > 0) then { 7 | // _return set [0, "NAV"]; 8 | // _return set [1,(_this call itc_air_sdb_fnc_navSteerPoint)]; 9 | //} else { 10 | _return set [0, "TURN"]; 11 | //}; 12 | }; 13 | _return 14 | }; 15 | 16 | 17 | if(_stage == "TURN") exitWith { 18 | if((velocity _projectile) # 2 < 1) then { 19 | _return set [0, "GLIDE"]; 20 | }; 21 | _return 22 | }; 23 | 24 | if(_stage == "GLIDE") then { 25 | _return set [1,_targetCoordinates]; 26 | //[ASLtoAGL (_return # 1), "ColorYellow"] call test_fnc_mark; 27 | }; 28 | _return 29 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/fired.sqf: -------------------------------------------------------------------------------- 1 | params ["", "", "", "", "_ammo", "", "_projectile", "_gunner"]; 2 | if (!local _gunner) exitWith {}; 3 | _this call itc_land_vls_fnc_guide; 4 | _this call BIS_fnc_effectFiredCruiseMissile; 5 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/getGuidanceOptions.sqf: -------------------------------------------------------------------------------- 1 | private _optionsList = []; 2 | 3 | //_optionsList pushBack ["terFollow","OFF","TER FOLLOW","cycle",["ON","OFF"]]; 4 | _optionsList pushBack ["impAng","60","IMP ANG","UFC",{(_this > 40 && _this < 70)}]; 5 | 6 | _optionsList 7 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/guide.sqf: -------------------------------------------------------------------------------- 1 | params ["_vehicle", "", "", "", "_ammo", "", "_projectile", "_gunner"]; 2 | 3 | if (!local _gunner) exitWith {}; 4 | 5 | _angle = itc_land_target_IAtest; 6 | _targetCoordinates = itc_land_target_test; 7 | _azimuth = 0;//keep this 0 until target azimuth works 8 | 9 | _vehicle setVariable ["bomb_flying_target", _targetCoordinates]; 10 | _dropTime = time; 11 | 12 | //GUIDANCE 13 | [itc_land_vls_fnc_guidePfh, 0, [_projectile, _ammo, getPosATL _projectile, _targetCoordinates, "SEP", _dropTime, _angle, time,_azimuth, _targetCoordinates]] call CBA_fnc_addPerFrameHandler; 14 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/guidePfh.sqf: -------------------------------------------------------------------------------- 1 | (_this select 0) params ["_projectile", "_ammo", "_position", "_targetCoordinates", "_stage", "_time", "_angle", "_lastFrameTime","_azimuth","_steerPoint"]; 2 | if (_lastFrameTime == time) exitWith {}; 3 | 4 | if (!alive _projectile) exitWith { 5 | [_this select 1] call CBA_fnc_removePerFrameHandler; 6 | }; 7 | private _frameTime = time - _lastFrameTime; 8 | _this call itc_land_vls_fnc_updateData; 9 | 10 | private _angles = [_projectile, _steerPoint] call itc_land_vls_fnc_angleToTarget; 11 | 12 | _return = ([_projectile, _steerPoint, _frameTime] + _angles + [_stage, _targetCoordinates,_azimuth,_angle]) call itc_land_vls_fnc_determineSteerPoint; 13 | _stage = (_return # 0); 14 | (_this select 0) set [9, (_return # 1)]; 15 | 16 | if(_stage != "SEP" && _stage != "TURN") then { 17 | _stage = ([_projectile, _steerPoint, _frameTime] + _angles + [_stage]) call itc_land_vls_fnc_steerTo; 18 | } else { 19 | if(_stage == "TURN") then { 20 | (_projectile call BIS_fnc_getPitchBank) params ["_pitch", "_bank"]; 21 | _projectile setDir (_projectile getDir _targetCoordinates); 22 | if (_pitch > 0) then { 23 | [_projectile, _pitch - (_frameTime * 10), 0] call BIS_fnc_setPitchBank; 24 | }; 25 | }; 26 | }; 27 | (_this select 0) set [4, _stage]; 28 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/ui/adHocLaunch.sqf: -------------------------------------------------------------------------------- 1 | // use inputs to launch missile on an adhoc target 2 | 3 | waitUntil { 4 | !(isNull (findDisplay 86002)) 5 | }; 6 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 7 | 8 | //get data from edit fields 9 | private _targetGrid = ctrlText 4106; 10 | _vehicle setVariable ["ITC_Land_VLS_adHocData_grid",_targetGrid,true]; 11 | 12 | private _targetElev = parseNumber(ctrlText 4108); 13 | _vehicle setVariable ["ITC_Land_VLS_adHocData_elev", _targetElev, true]; 14 | 15 | private _targetPos = [_targetGrid,true] call CBA_fnc_mapGridToPos; 16 | _targetPos set [2,(_targetElev - ace_common_mapAltitude)]; 17 | 18 | private _targetAngl = _vehicle getVariable ["ITC_Land_VLS_adHocData_angl",[1,"45"]]; 19 | 20 | _vehicle setVariable ["itc_land_vls_targetAngl", parseNumber (_targetAngl # 1), true]; 21 | itc_land_target_IAtest = _vehicle getVariable "itc_land_vls_targetAngl"; 22 | 23 | _vehicle setVariable ["itc_land_vls_targetPos", _targetPos, true]; 24 | itc_land_target_test = _vehicle getVariable "itc_land_vls_targetPos"; 25 | 26 | _vehicle fire (currentWeapon _vehicle); 27 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/ui/onChar.sqf: -------------------------------------------------------------------------------- 1 | // save adhoc details when entries are changed 2 | params ["_control", "_charCode"]; 3 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 4 | private _idc = ctrlIDC _control; 5 | //systemChat str [ctrlClassName _control,_idc]; 6 | 7 | switch (_idc) do { 8 | case 4106: { 9 | private _targetGrid = ctrlText 4106; 10 | //systemChat _targetGrid; 11 | _vehicle setVariable ["ITC_Land_VLS_adHocData_grid",_targetGrid,true]; 12 | }; 13 | case 4108: { 14 | private _targetElev = parseNumber(ctrlText 4108); 15 | //systemChat str _targetElev; 16 | _vehicle setVariable ["ITC_Land_VLS_adHocData_elev", _targetElev, true]; 17 | }; 18 | case 4112: { 19 | private _targetName = ctrlText 4112; 20 | //systemChat _targetName; 21 | _vehicle setVariable ["ITC_Land_VLS_adHocData_name", _targetName, true]; 22 | }; 23 | }; 24 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/ui/onSelectAngle.sqf: -------------------------------------------------------------------------------- 1 | params ["_control","_index"]; 2 | 3 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 4 | private _targetAngl = lbData [4110,_index]; 5 | _vehicle setVariable ["ITC_Land_VLS_adHocData_angl",[_index,_targetAngl],true]; 6 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/ui/onSelectTarget.sqf: -------------------------------------------------------------------------------- 1 | params ["_control","_index"]; 2 | 3 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 4 | 5 | private _targetData = lbData [4103,_index]; 6 | _vehicle setVariable ["ITC_Land_VLS_selectedTGT",[_index,_targetData],true]; 7 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/ui/removeTGT.sqf: -------------------------------------------------------------------------------- 1 | // get information from adhoc fields and save a target. 2 | waitUntil { 3 | !(isNull (findDisplay 86002)) 4 | }; 5 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 6 | 7 | //get selected target 8 | private _target = _vehicle getVariable ["ITC_Land_VLS_selectedTGT",[]]; 9 | if ((count _target) < 1) exitWith {}; 10 | 11 | lbDelete [4103, _target # 0]; 12 | 13 | private _targetsArray = _vehicle getVariable ["ITC_Land_VLS_TGTList",[]]; 14 | _targetsArray deleteAt (_target # 0); 15 | _vehicle setVariable ["ITC_Land_VLS_TGTList",_targetsArray,true]; 16 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/ui/saveTGT.sqf: -------------------------------------------------------------------------------- 1 | // get information from adhoc fields and save a target. 2 | waitUntil { 3 | !(isNull (findDisplay 86002)) 4 | }; 5 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 6 | 7 | //get data from edit fields 8 | private _targetGrid = ctrlText 4106; 9 | _vehicle setVariable ["ITC_Land_VLS_adHocData_grid",_targetGrid,true]; 10 | 11 | private _targetElev = parseNumber(ctrlText 4108); 12 | _vehicle setVariable ["ITC_Land_VLS_adHocData_elev", _targetElev, true]; 13 | 14 | private _targetPos = [_targetGrid,true] call CBA_fnc_mapGridToPos; 15 | _targetPos set [2,(_targetElev - ace_common_mapAltitude)]; 16 | 17 | private _targetAngl = _vehicle getVariable ["ITC_Land_VLS_adHocData_angl",[1,"45"]]; 18 | private _targetAnglNum = parseNumber (_targetAngl # 1); 19 | 20 | private _targetName = ctrlText 4112; 21 | _vehicle setVariable ["ITC_Land_VLS_adHocData_name", _targetName, true]; 22 | 23 | private _TGTData = [_targetName,_targetPos,_targetAnglNum]; 24 | private _TGTLabel = format ["%1: GRID: %2 - ELEV: %3m - ANGLE: %4",_targetName,_targetGrid,_targetElev,_targetAngl # 1]; 25 | 26 | private _index = lbAdd [4103, format["%1", _TGTLabel]]; 27 | lbSetData [4103, _index, str _TGTData]; 28 | 29 | private _TGTRecord = [_TGTLabel, str _TGTData]; 30 | private _targetsArray = _vehicle getVariable ["ITC_Land_VLS_TGTList",[]]; 31 | _targetsArray pushBack _TGTRecord; 32 | _vehicle setVariable ["ITC_Land_VLS_TGTList",_targetsArray,true]; 33 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/ui/selectedLaunch.sqf: -------------------------------------------------------------------------------- 1 | // launches missile at selected target 2 | waitUntil { 3 | !(isNull (findDisplay 86002)) 4 | }; 5 | private _vehicle = [] call itc_land_common_fnc_getCurVehicle; 6 | private _target = _vehicle getVariable ["ITC_Land_VLS_selectedTGT",[]]; 7 | if ((count _target) < 1) exitWith {}; 8 | 9 | private _targetData = parseSimpleArray (_target # 1); 10 | 11 | _vehicle setVariable ["itc_land_vls_targetAngl", (_targetData # 2), true]; 12 | itc_land_target_IAtest = _vehicle getVariable "itc_land_vls_targetAngl"; 13 | 14 | _vehicle setVariable ["itc_land_vls_targetPos", (_targetData # 1), true]; 15 | itc_land_target_test = _vehicle getVariable "itc_land_vls_targetPos"; 16 | 17 | _vehicle fire (currentWeapon _vehicle); 18 | -------------------------------------------------------------------------------- /Addons/itc_land_vls/functions/updateData.sqf: -------------------------------------------------------------------------------- 1 | (_this select 0) params ["_projectile", "_ammo", "_position", "_targetCoordinates", "_stage", "_time", "_angle", "_lastFrameTime","_azimuth","_steerPoint"]; 2 | (_this select 0) set [7, time]; 3 | _position = getPosASL _projectile; 4 | (_this select 0) set [2, _position]; 5 | -------------------------------------------------------------------------------- /Keys/ITC.bikey: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/Keys/ITC.bikey -------------------------------------------------------------------------------- /itc-combo.paa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itc-addons/ITC_Land_Systems/e1d09001a2f9b8583a523b9342a3dfac7aae3034/itc-combo.paa -------------------------------------------------------------------------------- /mod.cpp: -------------------------------------------------------------------------------- 1 | /// Name of your mod 2 | name = "ITC Land Systems"; 3 | /// Picture displayed from the expansions menu/ Optimal size is 2048x1024, other sizes work too 4 | picture = "itc-combo.paa"; 5 | /// Display next to the item added by the mod 6 | logoSmall = "itc-combo.paa"; 7 | /// Logo displayed in the main menu 8 | logo = "itc-combo.paa"; 9 | /// When the mouse is over, in the main menu 10 | logoOver = "itc-combo.paa"; 11 | /// Website URL, that can accessed from the expansions menu 12 | action = "https://github.com/itc-addons/ITC_Land_Systems"; 13 | /// Overview text, displayed from the extension menu 14 | overview = "ITC Land Systems."; 15 | --------------------------------------------------------------------------------