RHS CSW compatability (#7082)

* Initial Commit

* Got rid of unneeded translation values

* Updated Strings

* "Fixed" issue where when you deploy the tripid and weapon on slope it freaked out.

* Fixed locality issues. Added timers to relavent functions.

* Added weights to all magazines/tripod. Weights to weapons coming soon when I transfer them to the launcher slot

* Fixed bug regarding localized strings. Created new tripod model

* Added timers for deploying/picking up the tripod. Changed ammo-box model from custom to one already in ARMA. Changed gun-bag model for a more generic one. Created a texture for the tripod and gunbag

* Removed ability to disassemble weapons via the addAction. Added  ACE Action to get in due to a memory point issue. Changed from a static deploy/dismount time to one based in the weapon configs

* Created forward-compatability. Made it so I can define a base plate for any weapon if I ever want to expand from the generic M3 Tripod.

* Fixed bug where tripod wouldn't deploy with the correct times. Fixed bug where if you moved the tripod into the ground it would go flying.

* Added mortar compatability. Will probably shift whole mortar ammo loading to CSW one day

* Added icons to each relavent item

* Added README, possibly fixed bug where if you are in a weapon others cant load/unload ammo. Changed distance you can interact with weapons

* Added checks for when deploying the gun as well as unloading ammo to prevent duplication/deletion of items.

* Added documentation

* Added order to doc

* Explained why things are the way they are

* Remove temp files

* Removed redundant files

* Converted tabs->spaces. Added newlines at end of all files. Changed broken line in fnc_tripodDeploy.sqf.

* 100% newlines at end of file

* Added newlines to files that didnt get the change. Fixed README. Changed from GVAR(cswOptions) to GVAR(options). Changed from tabs to spaces in wiki

* Fixed issue with UAV assembling with enableWeaponDisassembling. Fixed bug where game would crash if you disassembled static weapon with more than 1 magazine

* Tabs->Spaces

* Added CSW options to base StaticWeapon class to allow for easier additions. Switched default mortar away from CSW system due to incompatabilities

* Lazy Evaluations and macros to describe how things work.

* Added newlines to script_component. Fix no-texture issue on tripod. "Fix" 20mm HE saying 40mm HE. Add custom icons to all weapons. Move "Check Ammo" to CSW menu

* abc

* Revert "abc"

This reverts commit bcb4214bd9.

* Update to current commit

* Revert changes to fortify.md

* Updated UI Icon to Crew Served Ammo branch UI

* Added Pabst's CrewServedAmmo to handle ammo loading/unloading instead of my solution

* Fixed bug where currentWeaponTurret returned a blank string when a player hasent entered hte weapon to select the current weapon

* Re-added ammo loading time

* Tabs->Spaces

* Newline at end of files

* Removed replaced functions

* Remove redundant strings. Move ammo handling to appropiate section

* Tabs->Spaces

* Update wiki

* Updated to fix crash with default weapons and disable CSW ability on default static weapons

* Added editor attributes to enable/disable CSW at edit time

* Change how ammo is removed from the CSW. Uses math instead of iteration

* Fix bug where assembled weapon did not get rid of default actions

* Added support for multiple types of ammo in one CSW

* Add tracer magazines for .50 cal

* Fix bug where you could load ammo even if the gun couldnt take any more

* Disable debug and enable compile cache

* Changed weapon deploy/pickup time. Removed custom Titan missiles. Using ACE Dragging now. Added progress bar check for pickupTripod. Updated documentation

* Removed check if CSW is full to unload ammo

* Fix bug where items would spawn underneath other items on wepaon dismount

* Change some things

* Configure base statics, improve returnAmmo

* Add mortar baseplate

* Remove explicit inheritance

* Fix bug where unloading ammo would duplicate it if you had room in your person.

* Tab->Space

* Player couldnt pickup tripod due to legacy code

* Fix GMG_01_base_F inheritce

* Port of ACE 2 tripod + ACE 2 CSW Bag

* Move ACE 2 Data to APL folder

* Adjust weights to make them more accurate to how ARMA uses it and the real life equivalents

* Fix bug where error was thrown on esc from picking up tripod. Tripod rotated 180

* Fix bug where if you called ace_common_claim the weapon could be set to be disassembled even though it may not be wanted via CSW

* Added ability to toggle ammo handling when weaponAssembly is disabled.

* Add Proxy Weapons for all Vanilla static weapons. These serve as a way to allow for realistic ammo reload times without having to modify base classes if you want feautres turned off. Adjusted reload and mount times to be more "realistic"

* Fix Shadow RPT Spam

* Update wiki

* Change order of setDir and setPos

* Change all setDir/setPos orientations. Remove redundant check. Ensure that weapon locked state reflects it with the "getIn" command. Add a way to pass in a specific classname for the weapon assemble type. Add a callback function onDisassemble if user wants to set the state of the new tripod using the old weapon as a reference

* Actually check for the carryWeaponClassname in the deployWeapon check

* Ai Compatiblity

* Add stringtable entries

* Formatting fixes

* Stringtables for settings, fix setMagazineTurretAmmo

* inherit ammo for mags, reorder stringtable

displays correct ammo and descriptionShort

* don't require ace_javelin

* Tweaks, cleanup, localzation, ace_reload changes

change weapon tag to [CSW]
tweak localization strings
minor cleanup
simplify some ace_reload funcs

* delete moved dev func

* Hopefully fix issue where to-be deleted tripod intersects with newly created weapon and vice versa. Remove PBOPREFIX newline

* cleanup/proxyWeapon/mk6 compat

* RHS compatability

* Modified all tripod p3ds to have [0,0,0] at the mount. Ported AGS-30, Kord, M220, and SPG-9 tripods to APL And added them to CSW. Changed RHS compats to use new ported tripods. Changed strings to reflect real names.

* Change from M224 Mortar Bag -> Mk6 Mortar bag

* Add named propert (Autocenter) to make P3D [0,0,0] the center of the object instead of engine calculated

* oh no tabs

* remove some more evil tabs

* fix changes lost in merge

* fix bad merge pt2

* Fix UBC
This commit is contained in:
Brandon Danyluk 2019-07-04 16:56:49 -06:00 committed by PabstMirror
parent abe2ce2f6f
commit 7b13a75305
48 changed files with 1336 additions and 74 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,95 @@
ambient[]={1,1,1,1.000000};
diffuse[]={1,1,1,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={1,1,1,1.000000};
specularPower=40.000000;
PixelShaderID="super";
VertexShaderID="super";
class Stage1
{
texture = "z\ace\addons\apl\data\csw_nsv_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage2
{
texture="a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
uvSource="tex";
class uvTransform
{
aside[]={8.0000,0.000000,0.000000};
up[]={0.000000,8.0000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage4
{
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage5
{
texture = "z\ace\addons\apl\data\csw_nsv_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage6
{
texture = "#(ai,32,128,1)fresnel(3.38,5.33)";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage7
{
texture="a3\data_f\env_land_co.paa";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class StageTI {
texture = "a3\data_f\default_vehicle_ti_ca.paa";
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,92 @@
ambient[] = {1.0,1.0,1.0,1.0};
diffuse[] = {1.0,1.0,1.0,1.0};
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
emmisive[] = {0.0,0.0,0.0,1.0};
specular[] = {0.545,0.545,0.545,1.0};
specularPower = 100.0;
PixelShaderID = "Super";
VertexShaderID = "Super";
class Stage1
{
texture = "z\ace\addons\apl\data\csw_spg9_nohq.paa";
uvSource = "tex";
class uvTransform
{
aside[] = {1.0,0.0,0.0};
up[] = {0.0,1.0,0.0};
dir[] = {0.0,0.0,1.0};
pos[] = {0.0,0.0,0.0};
};
};
class Stage2
{
texture = "a3\weapons_f\Data\DetailMaps\metal_detail_dt.paa";
uvSource = "tex";
class uvTransform
{
aside[] = {8.0,0.0,0.0};
up[] = {0.0,2.0,0.0};
dir[] = {0.0,0.0,1.0};
pos[] = {0.0,0.0,0.0};
};
};
class Stage3
{
texture = "#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource = "tex";
class uvTransform
{
aside[] = {1.0,0.0,0.0};
up[] = {0.0,1.0,0.0};
dir[] = {0.0,0.0,1.0};
pos[] = {0.0,0.0,0.0};
};
};
class Stage4
{
texture = "#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource = "tex";
class uvTransform
{
aside[] = {1.0,0.0,0.0};
up[] = {0.0,1.0,0.0};
dir[] = {0.0,0.0,1.0};
pos[] = {0.0,0.0,0.0};
};
};
class Stage5
{
texture = "z\ace\addons\apl\data\csw_spg9_smdi.paa";
uvSource = "tex";
class uvTransform
{
aside[] = {1.0,0.0,0.0};
up[] = {0.0,1.0,0.0};
dir[] = {0.0,0.0,1.0};
pos[] = {0.0,0.0,0.0};
};
};
class Stage6
{
texture = "#(ai,32,128,1)fresnel(1.89,1.02)";
uvSource = "tex";
class uvTransform
{
aside[] = {1.0,0.0,0.0};
up[] = {0.0,1.0,0.0};
dir[] = {0.0,0.0,1.0};
pos[] = {0.0,0.0,0.0};
};
};
class Stage7
{
texture="a3\data_f\env_land_co.paa";
uvSource = "tex";
class uvTransform
{
aside[] = {1.0,0.0,0.0};
up[] = {0.0,1.0,0.0};
dir[] = {0.0,0.0,1.0};
pos[] = {0.0,0.0,0.0};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,32 @@
ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={0.3000000,0.3000000,0.3000000,1.000000};
specularPower=100.000000;
PixelShaderID="NormalMapSpecularDIMap";
VertexShaderID="NormalMap";
class Stage1
{
texture="z\ace\addons\apl\data\csw_tow_merge_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage2
{
texture="z\ace\addons\apl\data\csw_tow_merge_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,32 @@
ambient[] = {1.0,1.0,1.0,1.0};
diffuse[] = {1.0,1.0,1.0,1.0};
forcedDiffuse[] = {0.0,0.0,0.0,0.0};
emmisive[] = {0.0,0.0,0.0,0.0};
specular[] = {0.3,0.3,0.3,1.0};
specularPower = 256.0;
PixelShaderID = "NormalMapSpecularDIMap";
VertexShaderID = "NormalMap";
class Stage1
{
texture = "z\ace\addons\apl\data\csw_tripod_ags_nohq.paa";
uvSource = "tex";
class uvTransform
{
aside[] = {1.0,0.0,0.0};
up[] = {0.0,1.0,0.0};
dir[] = {0.0,0.0,0.0};
pos[] = {0.0,0.0,0.0};
};
};
class Stage2
{
texture = "z\ace\addons\apl\data\csw_tripod_ags_smdi.paa";
uvSource = "tex";
class uvTransform
{
aside[] = {1.0,0.0,0.0};
up[] = {0.0,1.0,0.0};
dir[] = {0.0,0.0,0.0};
pos[] = {0.0,0.0,0.0};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1330,5 +1330,37 @@
<Chinesesimp>玩家与AI</Chinesesimp>
<Chinese>玩家與AI</Chinese>
</Key>
<Key ID="STR_ACE_Common_playerOnly">
<English>Players only</English>
<Russian>Игроков</Russian>
<Polish>Tylko dla graczy</Polish>
<Spanish>Solo jugadores</Spanish>
<German>Nur Spieler</German>
<Czech>Pouze hráči</Czech>
<Portuguese>Somente jogadores</Portuguese>
<French>Joueur uniquement</French>
<Hungarian>Csak játékosok</Hungarian>
<Italian>Solo giocatori</Italian>
<Japanese>プレイヤーのみ</Japanese>
<Korean>플레이어만</Korean>
<Chinesesimp>只限玩家</Chinesesimp>
<Chinese>只限玩家</Chinese>
</Key>
<Key ID="STR_ACE_Common_playersAndAI">
<English>Players and AI</English>
<Russian>Игроков и ботов</Russian>
<Polish>Gracze oraz AI</Polish>
<Spanish>Jugadores e IA</Spanish>
<German>Spieler und KI</German>
<Czech>Hráči a AI</Czech>
<Portuguese>Jogadores e IA</Portuguese>
<French>Joueurs et IA</French>
<Hungarian>Játékosok és AI</Hungarian>
<Italian>Giocatori ed IA</Italian>
<Japanese>プレイヤーと AI</Japanese>
<Korean>플레이어 및 인공지능</Korean>
<Chinesesimp>玩家与AI</Chinesesimp>
<Chinese>玩家與AI</Chinese>
</Key>
</Package>
</Project>

View File

@ -36,6 +36,7 @@ class GVAR(groups) {
rhs_mag_127x108mm_50 = 1;
rhs_mag_127x108mm_100 = 1;
rhs_mag_127x108mm_150 = 1;
rhs_mag_127x108mm_300 = 1;
CUP_150Rnd_127x108_KORD_M = 1;
CUP_50Rnd_127x108_KORD_M = 1;
CUP_50Rnd_TE3_LRT5_127x107_DSHKM_M = 1; // not sure why cup uses 107 for the DSHKM?
@ -52,14 +53,18 @@ class GVAR(groups) {
class ACE_1Rnd_82mm_Mo_HE {
ACE_1Rnd_82mm_Mo_HE = 1;
8Rnd_82mm_Mo_shells = 1;
rhs_12Rnd_m821_HE = 1;
rhs_mag_3vo18_10 = 1;
};
class ACE_1Rnd_82mm_Mo_Smoke {
ACE_1Rnd_82mm_Mo_Smoke = 1;
8Rnd_82mm_Mo_Smoke_white = 1;
rhs_mag_d832du_10 = 1;
};
class ACE_1Rnd_82mm_Mo_Illum {
ACE_1Rnd_82mm_Mo_Illum = 1;
8Rnd_82mm_Mo_Flare_white = 1;
rhs_mag_3vs25m_10 = 1;
};
class ACE_1Rnd_82mm_Mo_HE_Guided {
ACE_1Rnd_82mm_Mo_HE_Guided = 1;
@ -69,7 +74,7 @@ class GVAR(groups) {
ACE_1Rnd_82mm_Mo_HE_LaserGuided = 1;
8Rnd_82mm_Mo_LG = 1;
};
// A3 Titans (Spike) - just use handheld magazines
class Titan_AT {
1Rnd_GAT_missiles = 1;

View File

@ -66,20 +66,57 @@ class CfgVehicles {
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_m3_tripod.p3d);
displayName = CSTRING(Tripod_displayName);
displayName = CSTRING(m3Tripod_displayName);
class ADDON {
disassembleTo = QGVAR(m3CarryTripod);
};
};
class GVAR(m3TripodLow): GVAR(m3Tripod) {
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_m3_tripod.p3d);
displayName = CSTRING(Tripod_displayName);
class ADDON {
disassembleTo = QGVAR(m3CarryTripodLow);
};
};
class GVAR(kordTripod): GVAR(baseTripod) {
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ace_csw_tripod_kord.p3d);
displayName = CSTRING(kordTripod_displayName);
class ADDON {
disassembleTo = QGVAR(kordCarryTripod);
};
};
class GVAR(kordTripodLow): GVAR(kordTripod) {
class ADDON {
disassembleTo = QGVAR(kordCarryTripod);
};
};
class GVAR(sag30Tripod): GVAR(m3Tripod) {
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ace_csw_tripod_ags30.p3d);
displayName = CSTRING(sag30Tripod_displayName);
class ADDON {
disassembleTo = QGVAR(sag30CarryTripod);
};
};
class GVAR(m220Tripod): GVAR(baseTripod) {
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ace_csw_tripod_m220.p3d);
displayName = CSTRING(m220Tripod_displayName);
class ADDON {
disassembleTo = QGVAR(m220CarryTripod);
};
};
class GVAR(spg9Tripod): GVAR(baseTripod) {
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ace_csw_tripod_spg9.p3d);
displayName = CSTRING(spg9Tripod_displayName);
class ADDON {
disassembleTo = QGVAR(spg9CarryTripod);
};
};
class GVAR(mortarBaseplate): GVAR(m3Tripod) {
author = ECSTRING(common,ACETeam);
scope = 2;

View File

@ -16,7 +16,7 @@ class CfgWeapons {
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 440;
};
displayName = CSTRING(TripodFolded_displayName);
displayName = CSTRING(m3TripodFolded_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
@ -27,8 +27,88 @@ class CfgWeapons {
class ADDON: ADDON {
deploy = QGVAR(m3TripodLow);
};
displayName = CSTRING(TripodLowFolded_displayName);
displayName = CSTRING(m3TripodLowFolded_displayName);
};
class GVAR(kordCarryTripod): Launcher_Base_F {
class ADDON {
type = "mount";
deployTime = 4;
pickupTime = 4;
deploy = QGVAR(kordTripod);
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 350;
};
displayName = CSTRING(kordTripodFolded_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = QPATHTOF(UI\Tripod_Icon.paa);
};
class GVAR(kordCarryTripodLow): GVAR(kordCarryTripod) {
class ADDON {
deploy = QGVAR(kordTripodLow);
};
displayName = CSTRING(kordTripodFoldedLow_displayName);
};
class GVAR(m220CarryTripod): Launcher_Base_F {
class ADDON {
type = "mount";
deployTime = 10;
pickupTime = 6;
deploy = QGVAR(m220Tripod);
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 210;
};
displayName = CSTRING(m220TripodFolded_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = QPATHTOF(UI\Tripod_Icon.paa);
};
class GVAR(spg9CarryTripod): Launcher_Base_F {
class ADDON {
type = "mount";
deployTime = 5;
pickupTime = 3;
deploy = QGVAR(spg9Tripod);
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 260;
};
displayName = CSTRING(spg9TripodFolded_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = QPATHTOF(UI\Tripod_Icon.paa);
};
class GVAR(sag30CarryTripod): Launcher_Base_F {
class ADDON {
type = "mount";
deployTime = 4;
pickupTime = 4;
deploy = QGVAR(sag30Tripod);
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 260;
};
displayName = CSTRING(sag30TripodFolded_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = QPATHTOF(UI\Tripod_Icon.paa);
};
class GVAR(carryMortarBaseplate): Launcher_Base_F {
class ADDON {
type = "mount";
@ -39,7 +119,7 @@ class CfgWeapons {
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 290; // M3A1 baseblate weight
};
displayName = CSTRING(mortarBaseplate_displayName);
displayName = CSTRING(m224MortarBaseplate_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
@ -48,6 +128,7 @@ class CfgWeapons {
};
// Weapons:
class GVAR(staticATCarry): Launcher_Base_F {
class ADDON {
@ -144,7 +225,7 @@ class CfgWeapons {
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 620; // M252 Mortar Weight
};
displayName = CSTRING(StaticMortarBag_displayName);
displayName = CSTRING(m224MortarBag_displayName);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);

View File

@ -6,8 +6,11 @@ class CfgSkeletons {
};
class ACE_CSW_Tripod_Skeleton: Default {};
class ACE_CSW_M3_Tripod_Skeleton: Default {};
// class ACE_CSW_FoldedTripod_Skeleton: Default {};
// class ACE_CSW_ammoBox_Skeleton: Default {};
class ace_csw_tripod_ags30_Skeleton: Default {};
class ace_csw_tripod_kord_Skeleton: Default {};
class ace_csw_tripod_m122_Skeleton: Default {};
class ace_csw_tripod_m220_Skeleton: Default {};
class ace_csw_tripod_spg9_Skeleton: Default {};
class ACE_CSW_WeaponBag_Skeleton: Default {};
class ACE_CSW_mortarBaseplate_Skeleton: Default {};
};
@ -27,16 +30,31 @@ class CfgModels {
sections[] = {};
skeletonName = "ACE_CSW_M3_Tripod_Skeleton";
};
/* class ACE_CSW_FoldedTripod: Default {
class ace_csw_tripod_ags30 : Default {
sectionsInherit = "";
sections[] = {};
skeletonName = "ACE_CSW_FoldedTripod_Skeleton";
skeletonName = "ace_csw_tripod_ags30_Skeleton";
};
class ACE_CSW_ammoBox: Default {
class ace_csw_tripod_kord : Default {
sectionsInherit = "";
sections[] = {};
skeletonName = "ACE_CSW_ammoBox_Skeleton";
}; */
skeletonName = "ace_csw_tripod_kord_Skeleton";
};
class ace_csw_tripod_m122 : Default {
sectionsInherit = "";
sections[] = {};
skeletonName = "ace_csw_tripod_m122_Skeleton";
};
class ace_csw_tripod_m220 : Default {
sectionsInherit = "";
sections[] = {};
skeletonName = "ace_csw_tripod_m220_Skeleton";
};
class ace_csw_tripod_spg9 : Default {
sectionsInherit = "";
sections[] = {};
skeletonName = "ace_csw_tripod_spg9_Skeleton";
};
class ACE_CSW_Bag: Default {
sectionsInherit = "";
sections[] = {};

View File

@ -32,6 +32,13 @@
// Create a tripod
private _cswTripod = createVehicle [_tripodClassname, [0, 0, 0], [], 0, "NONE"];
// Because the tripod can be a "full weapon" we disable any data that will allow it to be loaded
_cswTripod setVariable [QGVAR(assemblyMode), 1, true]; // Explicitly set advanced assembly mode and broadcast
_cswTripod setVariable [QGVAR(emptyWeapon), true, false]; // unload gun, shouldn't need broadcast for this as it will be local to us
if (!GVAR(defaultAssemblyMode)) then {
TRACE_1("global disableVanillaAssembly event",_cswTripod); // handles it being assembled when setting is disabled
[QGVAR(disableVanillaAssembly), [_cswTripod]] call CBA_fnc_globalEvent;
};
private _posATL = _player getRelPos [2, 0];
_posATL set [2, ((getPosATL _player) select 2) + 0.5];

View File

@ -25,7 +25,8 @@
private _pickupTime = getNumber(configFile >> "CfgWeapons" >> _carryWeaponClassname >> QUOTE(ADDON) >> "pickupTime");
TRACE_4("",typeOf _staticWeapon,_carryWeaponClassname,_turretClassname,_pickupTime);
if (!isClass (configFile >> "CfgWeapons" >> _carryWeaponClassname)) exitWith {ERROR_1("bad weapon classname [%1]",_carryWeaponClassname);};
if (!isClass (configFile >> "CfgVehicles" >> _turretClassname)) exitWith {ERROR_1("bad turret classname [%1]",_turretClassname);};
// Turret classname can equal nothing if the deploy bag is the "whole" weapon. e.g Kornet, Metis, other ATGMs
if (!(_turretClassname isEqualTo "") && {!isClass (configFile >> "CfgVehicles" >> _turretClassname)}) exitWith {ERROR_1("bad turret classname [%1]",_turretClassname);};
private _onFinish = {
params ["_args"];
@ -53,29 +54,33 @@
};
} forEach (magazinesAllTurrets _staticWeapon);
private _cswTripod = createVehicle [_turretClassname, [0, 0, 0], [], 0, "NONE"];
[_cswTripod, _staticWeapon] call (missionNamespace getVariable _onDisassembleFunc);
if !(_turretClassname isEqualTo "") then {
private _cswTripod = createVehicle [_turretClassname, [0, 0, 0], [], 0, "NONE"];
// Delay a frame so weapon has a chance to be deleted
[{
params ["_cswTripod", "_weaponDir", "_weaponPos"];
_cswTripod setDir _weaponDir;
_cswTripod setPosATL _weaponPos;
_cswTripod setVelocity [0, 0, -0.05];
_cswTripod setVectorUp (surfaceNormal _weaponPos);
}, [_cswTripod, _weaponDir, _weaponPos]] call CBA_fnc_execNextFrame;
[_cswTripod, _staticWeapon] call (missionNamespace getVariable _onDisassembleFunc);
};
LOG("delete weapon");
deleteVehicle _staticWeapon;
// Delay a frame so weapon has a chance to be deleted
[{
params ["_player", "_cswTripod", "_weaponDir", "_weaponPos", "_carryWeaponClassname"];
_cswTripod setDir _weaponDir;
_cswTripod setPosATL _weaponPos;
_cswTripod setVelocity [0, 0, -0.05];
_cswTripod setVectorUp (surfaceNormal _weaponPos);
params ["_player", "_weaponPos", "_carryWeaponClassname"];
if ((alive _player) && {(secondaryWeapon _player) == ""}) exitWith {
_player addWeapon _carryWeaponClassname;
};
private _weaponRelPos = _cswTripod getRelPos RELATIVE_DIRECTION(90);
private _weaponRelPos = _weaponPos getPos RELATIVE_DIRECTION(90);
private _weaponHolder = createVehicle ["groundWeaponHolder", [0, 0, 0], [], 0, "NONE"];
_weaponHolder setDir random [0, 180, 360];
_weaponHolder setPosATL [_weaponRelPos select 0, _weaponRelPos select 1, _weaponPos select 2];
_weaponHolder addWeaponCargoGlobal [_carryWeaponClassname, 1];
}, [_player, _cswTripod, _weaponDir, _weaponPos, _carryWeaponClassname]] call CBA_fnc_execNextFrame;
}, [_player, _weaponPos, _carryWeaponClassname]] call CBA_fnc_execNextFrame;
LOG("delete weapon");
deleteVehicle _staticWeapon;
LOG("end");
};

View File

@ -4,9 +4,6 @@
<Key ID="STR_ACE_CSW_displayName">
<English>Crew Served Weapons</English>
</Key>
<Key ID="STR_ACE_CSW_Tripod_displayName">
<English>CSW Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_PlaceTripod_displayName">
<English>Place Tripod</English>
</Key>
@ -123,18 +120,6 @@
<Key ID="STR_ACE_CSW_genericDescription">
<English>Used to reload crew served weapons</English>
</Key>
<Key ID="STR_ACE_CSW_TripodFolded_displayName">
<English>[CSW] Deployable Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_TripodLowFolded_displayName">
<English>[CSW] Deployable Tripod (Low)</English>
</Key>
<Key ID="STR_ACE_CSW_mortarBaseplate_displayName">
<English>[CSW] Mk6 Mortar Baseplate</English>
</Key>
<Key ID="STR_ACE_CSW_StaticMortarBag_displayName">
<English>[CSW] Mk6 Mortar Tube</English>
</Key>
<Key ID="STR_ACE_CSW_StaticATWeapon_displayName">
<English>[CSW] Mini-Spike Launcher (AT)</English>
</Key>
@ -216,5 +201,47 @@
<Key ID="STR_ACE_CSW_mag_127x108">
<English>[CSW] 12.7 x 108 mm Ammo Belt</English>
</Key>
<Key ID="STR_ACE_CSW_m3Tripod_displayName">
<English>M3 Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_kordTripodFolded_displayName">
<English>[CSW] 6P57 Deployable Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_kordTripodFoldedLow_displayName">
<English>[CSW] 6P57 Deployable Tripod (Low)</English>
</Key>
<Key ID="STR_ACE_CSW_m220TripodFolded_displayName">
<English>[CSW] M220 Deployable Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_spg9TripodFolded_displayName">
<English>[CSW] SPG-9 Deployable Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_sag30TripodFolded_displayName">
<English>[CSW] SAG-30 Deployable Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_kordTripod_displayName">
<English>6P57 Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_sag30Tripod_displayName">
<English>SAG-30 Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_m220Tripod_displayName">
<English>M220 Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_spg9Tripod_displayName">
<English>SPG-9 Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_m3TripodFolded_displayName">
<English>[CSW] M3 Deployable Tripod</English>
</Key>
<Key ID="STR_ACE_CSW_m3TripodLowFolded_displayName">
<English>[CSW] M3 Deployable Tripod (Low)</English>
</Key>
<Key ID="STR_ACE_CSW_m224MortarBaseplate_displayName">
<English>[CSW] M224 Mortar Baseplate</English>
</Key>
<Key ID="STR_ACE_CSW_m224MortarBag_displayName">
<English>[CSW] Mk6 Mortar Tube</English>
</Key>
</Package>
</Project>

View File

@ -39,6 +39,7 @@ class CfgVehicles {
disassembleTurret = QGVAR(m3TripodLow); // Which tripod will appear when weapon has been disassembled
ammoLoadTime = 7; // How long it takes in seconds to load ammo into the weapon
ammoUnloadTime = 5; // How long it takes in seconds to unload ammo from the weapon
desiredAmmo = 69; // When the weapon is reloaded it will try and reload to this ammo capacity
disassembleFunc = "myCoolFunction.sqf"; // A callback function for when the CSW gets disassembled. Arguments: [tripod, staticWeapon]
};
};
@ -55,6 +56,7 @@ class CfgMagazines {
type=256; // Must be 256 to show up in Arsenal
count = 100; // How much ammo gets added per "Load Ammo" selection
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // default ammo box model
//ace_isbelt = 1; // Needed if your magazine has belt linking
};
};
```
@ -63,22 +65,22 @@ class CfgMagazines {
```cpp
class CfgWeapons {
class ace_csw_base_carry;
class banana_carry_weapon: ace_csw_base_carry {
class ace_csw_options {
assembleTo = "banana_csw"; // What the weapon will assemble into
baseTripod = "banana_tripod"; // The tripod which the weapon can be assembled onto (Default is "ace_csw_m3Tripod")
class Launcher_Base_F;
class banana_carry_weapon: Launcher_Base_F {
class ACE_CSW {
type = "weapon"; // What type of carry it is. Must always be "weapon" for the carry weapon
deployTime = 4; // How long it takes to deploy the weapon onto the tripod
pickupTime = 4; // How long it takes to disassemble weapon from the tripod
class assembleTo {
ace_csw_m3Tripod = "banana_csw_mod1"; // What tripod can this weapon deploy onto, and what vehicle will it spawn when it is deployed
banana_tripod = "banana_csw";
};
};
};
class HMG_Static;
class banana_weapon: HMG_Static {
class ace_csw_options {
deployTime = 10; // Time in seconds it takes to mount the weapon on the tripod
pickupTime = 12; // Time in seconds it takes to dismount the weapon from the tripod
};
magazines[] = { banana_ammo }; // You must have both the dummy and real ammunition
class banana_proxy_weapon: HMG_Static {
magazineReloadTime = 0.5; // Proxy weapons are spawned onto the CSW when it is assembled. Because ammo loading times use defined values in the magazine, this number needs to be low to ensure low latency
};
};
```
@ -87,8 +89,8 @@ class CfgWeapons {
```cpp
class ace_csw_groups { // Ammo that can be loaded into this CSW
class banana_ammo { // The magazine which will be loaded into the weapon
banana_dummy_ammo = 1; // Ammo that is loaded into the weapon as per CfgWeapons >> weapon >> magazines
class banana_ammo { // The magazine which the player can place into their inventory
banana_dummy_ammo = 1; // Magazine that is loaded into the weapon as per CfgWeapons >> weapon >> magazines
};
// Optional
@ -99,6 +101,9 @@ class CfgWeapons {
/*
Ammo types already defined by CSW:
- ace_csw_100Rnd_127x99_mag
- ace_csw_100Rnd_127x99_mag_red
- ace_csw_100Rnd_127x99_mag_green
- ace_csw_100Rnd_127x99_mag_yellow
- ace_csw_50Rnd_127x108_mag
- ace_csw_20Rnd_20mm_G_belt
- ACE_1Rnd_82mm_Mo_HE
@ -129,14 +134,14 @@ class CfgVehicles {
```cpp
class CfgWeapons {
class ace_csw_base_carry;
class banana_carry_tripod: ace_csw_base_carry {
class GVAR(options) {
deployTime = 166; // How much time in seconds it takes to deploy the tripod
pickupTime = 12; // How much time in seconds it takes to pickup the tripod
type = "mount"; // What type of carry it is. Must always be "mount" for the carry tripod
deploy = "banana_tripod"; // What will be deployed when "Deploy Tripod" is selected
};
class Launcher_Base_F;
class banana_carry_tripod: Launcher_Base_F {
class ACE_CSW {
type = "mount"; // What type of carry it is. Must always be "mount" for the tripod
deployTime = 4; // How long it takes to deploy the tripod
pickupTime = 4; // How long it takes to pickup the tripod
deploy = "banana_tripod"; // what vehicle will spawn when the tripod is deployed
};
};
};
```
```

View File

@ -0,0 +1,18 @@
#define CREATE_MAGAZINE_GROUP(ammo) class GVAR(ammo) { rhs_##ammo = 1; }
class ace_csw_groups {
CREATE_MAGAZINE_GROUP(mag_9M131M);
CREATE_MAGAZINE_GROUP(mag_9M131F);
CREATE_MAGAZINE_GROUP(mag_9m133);
CREATE_MAGAZINE_GROUP(mag_9m133f);
CREATE_MAGAZINE_GROUP(mag_9m1331);
CREATE_MAGAZINE_GROUP(mag_9m133m2);
CREATE_MAGAZINE_GROUP(mag_PG9V);
CREATE_MAGAZINE_GROUP(mag_PG9N);
CREATE_MAGAZINE_GROUP(mag_PG9VNT);
CREATE_MAGAZINE_GROUP(mag_OG9VM);
CREATE_MAGAZINE_GROUP(mag_OG9V);
CREATE_MAGAZINE_GROUP(mag_VOG30_30);
CREATE_MAGAZINE_GROUP(mag_GPD30_30);
CREATE_MAGAZINE_GROUP(mag_VOG17m_30);
};

View File

@ -14,4 +14,136 @@ class cfgMagazines {
class rhs_mag_127x108mm_1470 : rhs_mag_127x108mm_50 {
ace_isbelt = 0;
};
class RHS_mag_VOG30_30: VehicleMagazine {
ace_isbelt = 1;
};
class RHS_mag_GPD30_30: RHS_mag_VOG30_30 {};
// RHS magazines for crew handled ammo
class rhs_mag_9M131M;
class GVAR(mag_9M131M): rhs_mag_9M131M {
scope = 2;
type = 256;
count = 1;
mass = 55;
model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_metis_emptytube.p3d";
picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
};
class rhs_mag_9M131F;
class GVAR(mag_9M131F): rhs_mag_9M131F {
scope = 2;
type = 256;
count = 1;
mass = 55;
model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_metis_emptytube.p3d";
picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
};
class rhs_mag_9m133;
class GVAR(mag_9m133): rhs_mag_9m133 {
scope = 2;
type = 256;
count = 1;
mass = 55;
model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_kornet_emptytube.p3d";
picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
};
class rhs_mag_9m133f;
class GVAR(mag_9m133f): rhs_mag_9m133f {
scope = 2;
type = 256;
count = 1;
mass = 55;
model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_kornet_emptytube.p3d";
picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
};
class rhs_mag_9m1331;
class GVAR(mag_9m1331): rhs_mag_9m1331 {
scope = 2;
type = 256;
count = 1;
mass = 55;
model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_kornet_emptytube.p3d";
picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
};
class rhs_mag_9m133m2;
class GVAR(mag_9m133m2): rhs_mag_9m133m2 {
scope = 2;
type = 256;
count = 1;
mass = 55;
model = "rhsafrf\addons\rhs_heavyweapons\atgm\rhs_kornet_emptytube.p3d";
picture = "\A3\Weapons_F_Tank\Launchers\Vorona\Data\UI\icon_rocket_vorona_HEAT_F_ca.paa";
};
class rhs_mag_PG9V;
class GVAR(mag_PG9V): rhs_mag_PG9V {
scope = 2;
type = 256;
count = 1;
mass = 80;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
};
class rhs_mag_PG9N;
class GVAR(mag_PG9N): rhs_mag_PG9N {
scope = 2;
type = 256;
count = 1;
mass = 80;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
};
class rhs_mag_PG9VNT;
class GVAR(mag_PG9VNT): rhs_mag_PG9VNT {
scope = 2;
type = 256;
count = 1;
mass = 80;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
};
class rhs_mag_OG9VM;
class GVAR(mag_OG9VM): rhs_mag_OG9VM {
scope = 2;
type = 256;
count = 1;
mass = 80;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
};
class rhs_mag_OG9V;
class GVAR(mag_OG9V): rhs_mag_OG9V {
scope = 2;
type = 256;
count = 1;
mass = 80;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_Exp\Launchers\RPG7\Data\UI\icon_rocket_RPG7_CA.paa";
};
class GVAR(mag_VOG30_30): RHS_mag_VOG30_30 {
scope = 2;
type = 256;
count = 30;
mass = 40;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
};
class GVAR(mag_GPD30_30): RHS_mag_GPD30_30 {
scope = 2;
type = 256;
count = 30;
mass = 40;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
};
class RHS_mag_VOG17m_30;
class GVAR(mag_VOG17m_30): RHS_mag_VOG17m_30 {
scope = 2;
type = 256;
count = 30;
mass = 40;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
};
};

View File

@ -233,6 +233,16 @@ class CfgVehicles {
position = "";
};
};
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_SPG9);
magazineLocation = "_target selectionPosition 'breach'";
disassembleWeapon = QGVAR(spg9_carry);
disassembleTurret = QEGVAR(csw,spg9Tripod);
desiredAmmo = 1;
ammoLoadTime = 5;
ammoUnloadTime = 3;
};
};
class rhs_Kornet_Base: AT_01_base_F {
class ACE_Actions: ACE_Actions {
@ -241,10 +251,105 @@ class CfgVehicles {
selection = "tripod";
};
};
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_9K133_launcher);
magazineLocation = "_target selectionPosition 'gun'";
disassembleWeapon = QGVAR(kornet_carry);
disassembleTurret = "";
desiredAmmo = 1;
ammoLoadTime = 7;
ammoUnloadTime = 5;
};
};
class rhs_assault_umbts;
class rhs_assault_umbts_engineer: rhs_assault_umbts {
EGVAR(logistics_wirecutter,hasWirecutter) = 1;
};
class StaticMortar: StaticWeapon {};
class rhs_2b14_82mm_Base: StaticMortar {
class ACE_Actions: ACE_Actions {
class ACE_MainActions: ACE_MainActions {
position = "";
selection = ""; // no good selections for this mortar
};
};
class ACE_CSW {
enabled = 1;
magazineLocation = "";
proxyWeapon = QGVAR(rhs_weap_2b14);
disassembleWeapon = QGVAR(2b14_carry); // carry weapon [CfgWeapons]
disassembleTurret = QEGVAR(csw,mortarBaseplate); // turret [CfgVehicles]
desiredAmmo = 1;
ammoLoadTime = 3;
ammoUnloadTime = 3;
};
};
class rhs_nsv_tripod_base: StaticMGWeapon {
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_nsvt_effects);
magazineLocation = "_target selectionPosition 'magazine'";
disassembleWeapon = QGVAR(nsv_carry);
disassembleTurret = QEGVAR(csw,kordTripodLow);
desiredAmmo = 50;
ammoLoadTime = 10;
ammoUnloadTime = 8;
};
};
class RHS_KORD_Base: rhs_nsv_tripod_base {
class ACE_CSW: ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_KORD);
disassembleWeapon = QGVAR(kord_carry);
disassembleTurret = QEGVAR(csw,kordTripodLow);
};
};
class RHS_KORD_high_base: RHS_KORD_Base {
class ACE_CSW: ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_KORD);
disassembleWeapon = QGVAR(kord_carry);
disassembleTurret = QEGVAR(csw,kordTripod);
};
};
class StaticGrenadeLauncher: StaticWeapon {};
class RHS_AGS30_TriPod_base: StaticGrenadeLauncher {
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_AGS30);
magazineLocation = "_target selectionPosition 'magazine'";
disassembleWeapon = QGVAR(ags30_carry);
disassembleTurret = QEGVAR(csw,sag30Tripod);
desiredAmmo = 30;
ammoLoadTime = 10;
ammoUnloadTime = 8;
};
};
class rhs_SPG9M_base: rhs_SPG9_base {
class ACE_CSW: ACE_CSW {
enabled = 1;
disassembleWeapon = QGVAR(spg9m_carry);
};
};
class rhs_Metis_Base: AT_01_base_F {
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_9K115_2_launcher);
magazineLocation = "_target selectionPosition 'gun'";
disassembleWeapon = QGVAR(metis_carry);
disassembleTurret = "";
desiredAmmo = 1;
ammoLoadTime = 7;
ammoUnloadTime = 5;
};
};
};

View File

@ -1,3 +1,4 @@
#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
class CfgWeapons {
@ -110,7 +111,10 @@ class CfgWeapons {
};
};
};
class Launcher_Base_F;
class Launcher;
class Launcher_Base_F: Launcher {
class WeaponSlotsInfo;
};
class rhs_weap_rpg7: Launcher_Base_F {
ace_reloadlaunchers_enabled = 1;
};
@ -141,4 +145,157 @@ class CfgWeapons {
ace_overpressure_range = 15;
ace_overpressure_damage = 0.5;
};
CREATE_CSW_PROXY(rhs_weap_2b14);
CREATE_CSW_PROXY(rhs_weap_nsvt_effects);
CREATE_CSW_PROXY(rhs_weap_KORD);
CREATE_CSW_PROXY(RHS_weap_AGS30);
CREATE_CSW_PROXY(rhs_weap_SPG9);
CREATE_CSW_PROXY(rhs_weap_9K133_launcher);
CREATE_CSW_PROXY(rhs_weap_9K115_2_launcher);
class GVAR(2b14_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 20;
pickupTime = 25;
class assembleTo {
EGVAR(csw,mortarBaseplate) = "rhs_2b14_82mm_msv";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 670; // 2B14 Mortar Weight
};
displayName = CSTRING(2b14_tube);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\podnos_2b14_ca.paa";
};
class GVAR(nsv_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 4;
pickupTime = 4;
class assembleTo {
EGVAR(csw,kordTripodLow) = "RHS_NSV_TriPod_MSV";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 550;
};
displayName = CSTRING(nsv_gun);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsafrf\addons\rhs_heavyweapons\mg\bis_kord\kord_CA.paa";
};
class GVAR(kord_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 4;
pickupTime = 4;
class assembleTo {
EGVAR(csw,kordTripod) = "rhs_KORD_high_MSV";
EGVAR(csw,kordTripodLow) = "rhs_KORD_MSV";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 550;
};
displayName = CSTRING(kord_gun);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\kord6u16sp_ca.paa";
};
class GVAR(ags30_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 4;
pickupTime = 4;
class assembleTo {
EGVAR(csw,sag30Tripod) = "RHS_AGS30_TriPod_MSV";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 400; // https://odin.tradoc.army.mil/mediawiki/index.php/AGS-17_Russian_30mm_Automatic_Grenade_Launcher
};
displayName = CSTRING(ags30_gun);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\ags_static_CA.paa";
};
class GVAR(spg9_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 4;
pickupTime = 4;
class assembleTo {
EGVAR(csw,spg9Tripod) = "rhsgref_ins_SPG9";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 1000;
};
displayName = CSTRING(spg9_tube);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\spg9_CA.paa";
};
class GVAR(spg9m_carry): GVAR(spg9_carry) {
class ACE_CSW {
class assembleTo {
EGVAR(csw,spg9Tripod) = "rhs_SPG9M_MSV";
};
};
displayName = CSTRING(spg9m_tube);
};
class GVAR(metis_carry): Launcher_Base_F {
class ACE_CSW {
type = "mount";
deployTime = 4;
pickupTime = 4;
deploy = "rhs_Metis_9k115_2_msv";
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 300;
};
displayName = CSTRING(metis_tube);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\metis_at13_CA.paa";
};
class GVAR(kornet_carry): Launcher_Base_F {
class ACE_CSW {
type = "mount";
deployTime = 4;
pickupTime = 4;
deploy = "rhs_Kornet_9M133_2_msv";
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 600;
};
displayName = CSTRING(kornet_launcher);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsafrf\addons\rhs_heavyweapons\data\ico\metis_at13_CA.paa";
};
};

View File

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_rearm", "ace_refuel", "ace_repair", "rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_trucks", "rhs_c_2s3", "rhs_c_rva", "rhs_c_heavyweapons"};
requiredAddons[] = {"ace_csw", "ace_rearm", "ace_refuel", "ace_repair", "rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_trucks", "rhs_c_2s3", "rhs_c_rva", "rhs_c_heavyweapons"};
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut", "commy2", "Skengman2"};
url = ECSTRING(main,URL);
@ -19,3 +19,5 @@ class CfgPatches {
#include "CfgMagazines.hpp"
#include "CfgWeapons.hpp"
#include "CfgVehicles.hpp"
#include "CfgMagazineGroups.hpp"

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="compat_rhs_afrf3">
<Key ID="STR_ACE_compat_rhs_afrf3_2b14_tube">
<English>2B14 Tube Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_afrf3_nsv_gun">
<English>NSV Gun Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_afrf3_kord_gun">
<English>KORD Gun Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_afrf3_ags30_gun">
<English>AGS-30 Gun Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_afrf3_spg9_tube">
<English>SPG-9 Launcher Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_afrf3_spg9m_tube">
<English>SPG-9M Launcher</English>
</Key>
<Key ID="STR_ACE_compat_rhs_afrf3_metis_tube">
<English>9k115 Metis Launcher Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_afrf3_kornet_launcher">
<English>9m113 Kornet Launcher</English>
</Key>
</Package>
</Project>

View File

@ -4,4 +4,24 @@ class CfgVehicles {
// Canoes are propelled by paddlers
EGVAR(refuel,canReceive) = 0;
};
class StaticMGWeapon;
class rhs_DSHKM_base: StaticMGWeapon {
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_DSHKM);
magazineLocation = "_target selectionPosition 'otocvez'";
disassembleWeapon = QGVAR(dshkm_carry);
disassembleTurret = QEGVAR(csw,kordTripod);
desiredAmmo = 50;
ammoLoadTime = 10;
ammoUnloadTime = 8;
};
};
class rhs_DSHkM_Mini_TriPod_base: rhs_DSHKM_base {
class ACE_CSW: ACE_CSW {
enabled = 1;
disassembleTurret = QEGVAR(csw,kordTripodLow);
};
};
};

View File

@ -1,3 +1,4 @@
#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
class CfgWeapons {
class rhs_weap_kar98k_Base_F;
@ -81,4 +82,31 @@ class CfgWeapons {
class rhs_weap_mg42_base: Rifle_Base_F {
ACE_Overheating_allowSwapBarrel = 1;
};
CREATE_CSW_PROXY(rhs_weap_DSHKM);
class Launcher;
class Launcher_Base_F: Launcher {
class WeaponSlotsInfo;
};
class GVAR(dshkm_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 4;
pickupTime = 4;
class assembleTo {
EGVAR(csw,kordTripod) = "rhsgref_ins_DSHKM";
EGVAR(csw,kordTripodLow) = "rhsgref_ins_DSHKM_Mini_TriPod";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 740;
};
displayName = CSTRING(dshk_gun);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsafrf\addons\rhs_heavyweapons\data\mapico\icomap_DShKM_CA.paa";
};
};

View File

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"rhsgref_main", "rhsgref_c_weapons"};
requiredAddons[] = {"ace_csw", "rhsgref_main", "rhsgref_c_weapons"};
author = ECSTRING(common,ACETeam);
authors[] = {"PabstMirror", "Ruthberg", "Anton"};
url = ECSTRING(main,URL);

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="compat_rhs_gref3">
<Key ID="STR_ACE_compat_rhs_gref3_dshk_gun">
<English>DSHK Gun Bag</English>
</Key>
</Package>
</Project>

View File

@ -0,0 +1,24 @@
#define CREATE_MAGAZINE_GROUP(ammo) class GVAR(ammo) { rhs_##ammo = 1; }
class ace_csw_groups {
CREATE_MAGAZINE_GROUP(mag_TOW);
CREATE_MAGAZINE_GROUP(mag_TOWB);
CREATE_MAGAZINE_GROUP(mag_ITOW);
CREATE_MAGAZINE_GROUP(mag_TOW2);
CREATE_MAGAZINE_GROUP(mag_TOW2A);
CREATE_MAGAZINE_GROUP(mag_TOW2b);
CREATE_MAGAZINE_GROUP(mag_TOW2b_aero);
CREATE_MAGAZINE_GROUP(mag_TOW2bb);
class GVAR(48Rnd_40mm_MK19) {
RHS_48Rnd_40mm_MK19 = 1;
RHS_96Rnd_40mm_MK19 = 1;
};
class GVAR(48Rnd_40mm_MK19_M430I) {
RHS_48Rnd_40mm_MK19_M430I = 1;
RHS_96Rnd_40mm_MK19_M430I = 1;
};
class GVAR(48Rnd_40mm_MK19_M1001) {
RHS_48Rnd_40mm_MK19_M1001 = 1;
RHS_96Rnd_40mm_MK19_M1001 = 1;
};
};

View File

@ -51,4 +51,105 @@ class cfgMagazines {
ammo = "ACE_Hellfire_AGM114N";
};
// RHS magazines for crew handled ammo
class rhs_mag_TOW;
class GVAR(mag_TOW): rhs_mag_TOW {
scope = 2;
type = 256;
count = 1;
mass = 200; // Actually should be 440 but ARMA uses weight and volume in the same number
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // ammo can instead of any special model so no one gets especially confused over what it is
picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
};
class rhs_mag_TOWB;
class GVAR(mag_TOWB): rhs_mag_TOWB {
scope = 2;
type = 256;
count = 1;
mass = 200;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
};
class rhs_mag_ITOW;
class GVAR(mag_ITOW): rhs_mag_ITOW {
scope = 2;
type = 256;
count = 1;
mass = 200;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
};
class rhs_mag_TOW2;
class GVAR(mag_TOW2): rhs_mag_TOW2 {
scope = 2;
type = 256;
count = 1;
mass = 200;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
};
class rhs_mag_TOW2A;
class GVAR(mag_TOW2A): rhs_mag_TOW2A {
scope = 2;
type = 256;
count = 1;
mass = 200;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
};
class rhs_mag_TOW2b;
class GVAR(mag_TOW2b): rhs_mag_TOW2b {
scope = 2;
type = 256;
count = 1;
mass = 200;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
};
class rhs_mag_TOW2b_aero;
class GVAR(mag_TOW2b_aero): rhs_mag_TOW2b_aero {
scope = 2;
type = 256;
count = 1;
mass = 200;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
};
class rhs_mag_TOW2bb;
class GVAR(mag_TOW2bb): rhs_mag_TOW2bb {
scope = 2;
type = 256;
count = 1;
mass = 200;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d";
picture = "\A3\Weapons_F_beta\Launchers\titan\Data\UI\gear_titan_missile_at_CA.paa";
};
class GVAR(48Rnd_40mm_MK19): RHS_48Rnd_40mm_MK19 {
scope = 2;
type = 256;
count = 48;
mass = 40;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // ammo can instead of any special model so no one gets especially confused over what it is
picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
};
class RHS_48Rnd_40mm_MK19_M430I;
class GVAR(48Rnd_40mm_MK19_M430I): RHS_48Rnd_40mm_MK19_M430I {
scope = 2;
type = 256;
count = 48;
mass = 40;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // ammo can instead of any special model so no one gets especially confused over what it is
picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
};
class RHS_48Rnd_40mm_MK19_M1001;
class GVAR(48Rnd_40mm_MK19_M1001): RHS_48Rnd_40mm_MK19_M1001 {
scope = 2;
type = 256;
count = 48;
mass = 40;
model = "\A3\Structures_F_EPB\Items\Military\Ammobox_rounds_F.p3d"; // ammo can instead of any special model so no one gets especially confused over what it is
picture = QPATHTOEF(csw,UI\ammoBox_50bmg_ca.paa);
};
};

View File

@ -300,6 +300,66 @@ class CfgVehicles {
selection = "main_gun";
};
};
class ACE_CSW {
enabled = 1;
magazineLocation = "";
proxyWeapon = QGVAR(rhs_mortar_81mm);
disassembleWeapon = QGVAR(m252_carry); // carry weapon [CfgWeapons]
disassembleTurret = QEGVAR(csw,mortarBaseplate); // turret [CfgVehicles]
desiredAmmo = 1;
ammoLoadTime = 3;
ammoUnloadTime = 3;
};
};
class StaticMGWeapon: StaticWeapon {};
class rhs_m2staticmg_base: StaticMGWeapon {
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_M2);
magazineLocation = "_target selectionPosition 'magazine'";
disassembleWeapon = QGVAR(m2_carry);
disassembleTurret = QEGVAR(csw,m3Tripod);
desiredAmmo = 100;
ammoLoadTime = 10;
ammoUnloadTime = 8;
};
};
class RHS_M2StaticMG_MiniTripod_base: rhs_m2staticmg_base {
class ACE_CSW: ACE_CSW {
enabled = 1;
disassembleTurret = QEGVAR(csw,m3TripodLow);
};
};
class StaticGrenadeLauncher: StaticWeapon {};
class RHS_MK19_TriPod_base: StaticGrenadeLauncher {
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_MK19);
magazineLocation = "_target selectionPosition 'magazine'";
disassembleWeapon = QGVAR(mk19_carry);
disassembleTurret = QEGVAR(csw,m3TripodLow);
desiredAmmo = 48;
ammoLoadTime = 10;
ammoUnloadTime = 8;
};
};
class StaticATWeapon: StaticWeapon {};
class RHS_TOW_TriPod_base: StaticATWeapon {
class ACE_CSW {
enabled = 1;
proxyWeapon = QGVAR(rhs_weap_TOW_Launcher_static);
magazineLocation = "_target selectionPosition 'tube'";
disassembleWeapon = QGVAR(tow_carry);
disassembleTurret = QEGVAR(csw,m220Tripod);
desiredAmmo = 1;
ammoLoadTime = 8;
ammoUnloadTime = 5;
};
};
class rhsusf_infantry_usmc_base;

View File

@ -1,3 +1,4 @@
#define CREATE_CSW_PROXY(weapon) class ##weapon; class GVAR(weapon): ##weapon { magazineReloadTime = 0.5; }
class CfgWeapons {
class NVGoggles;
@ -231,7 +232,10 @@ class CfgWeapons {
};
};
class Launcher_Base_F;
class Launcher;
class Launcher_Base_F: Launcher {
class WeaponSlotsInfo;
};
class rhs_weap_smaw: Launcher_Base_F {
ace_reloadlaunchers_enabled = 1;
ace_overpressure_angle = 45;
@ -420,4 +424,91 @@ class CfgWeapons {
class RHS_jetpilot_usaf: H_HelmetB {
HEARING_PROTECTION_VICCREW
};
CREATE_CSW_PROXY(rhs_mortar_81mm);
CREATE_CSW_PROXY(RHS_M2);
CREATE_CSW_PROXY(RHS_MK19);
CREATE_CSW_PROXY(Rhs_weap_TOW_Launcher_static);
class GVAR(m252_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 20;
pickupTime = 25;
class assembleTo {
EGVAR(csw,mortarBaseplate) = "RHS_M252_WD";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 620; // M252 Mortar Weight
};
displayName = CSTRING(m252_tube);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsusf\addons\rhsusf_heavyweapons\data\ico\mortar_m251_CA.paa";
};
class GVAR(m2_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 4;
pickupTime = 4;
class assembleTo {
EGVAR(csw,m3Tripod) = "RHS_M2StaticMG_WD";
EGVAR(csw,m3TripodLow) = "RHS_M2StaticMG_MiniTripod_WD";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 840;
};
displayName = CSTRING(m2_gun);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsusf\addons\rhsusf_editorPreviews\data\rhs_M2StaticMG_D.paa";
};
class GVAR(mk19_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 4;
pickupTime = 4;
class assembleTo {
EGVAR(csw,m3TripodLow) = "RHS_MK19_TriPod_WD";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 770;
};
displayName = CSTRING(mk19_gun);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsusf\addons\rhsusf_heavyweapons\data\ico\mk19_stat_CA.paa";
};
class GVAR(tow_carry): Launcher_Base_F {
class ACE_CSW {
type = "weapon";
deployTime = 4;
pickupTime = 4;
class assembleTo {
EGVAR(csw,m220Tripod) = "RHS_TOW_TriPod_WD";
};
};
class WeaponSlotsInfo: WeaponSlotsInfo {
mass = 500;
};
displayName = CSTRING(tow_tube);
author = ECSTRING(common,ACETeam);
scope = 2;
model = QPATHTOEF(apl,ACE_CSW_Bag.p3d);
modes[] = {};
picture = "\rhsusf\addons\rhsusf_heavyweapons\data\Ico\tow_static_CA.paa";
};
};

View File

@ -6,7 +6,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_javelin", "ace_rearm", "ace_refuel", "ace_repair", "rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_HEMTT_A4", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor", "rhsusf_c_melb"};
requiredAddons[] = {"ace_javelin", "ace_rearm", "ace_refuel", "ace_repair", "ace_csw", "rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_HEMTT_A4", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor", "rhsusf_c_melb"};
author = ECSTRING(common,ACETeam);
authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"};
url = ECSTRING(main,URL);
@ -21,3 +21,5 @@ class CfgPatches {
#include "CfgWeapons.hpp"
#include "CfgVehicles.hpp"
#include "CfgGlasses.hpp"
#include "CfgMagazineGroups.hpp"

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="compat_rhs_usf3">
<Key ID="STR_ACE_compat_rhs_usf3_m252_tube">
<English>M252 Tube Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_usf3_m2_gun">
<English>M2 Gun Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_usf3_mk19_gun">
<English>MK19 Gun Bag</English>
</Key>
<Key ID="STR_ACE_compat_rhs_usf3_tow_tube">
<English>BGM-71 TOW Launcher Bag</English>
</Key>
</Package>
</Project>