Add G3A3 with attachment support

Thx to SyNcRoNiCzZ for this wonderful addon
This commit is contained in:
A Man
2021-08-20 13:12:27 +02:00
parent 474f2fce6d
commit a3a4cf9003
4 changed files with 207 additions and 12 deletions

View File

@@ -1,3 +1,24 @@
#define G3_ACOG modelOptics = "\Ca\weapons_E\SCAR\ACOG_TA31_optic_4x.p3d";\
class OpticsModes\
{\
class ACOG\
{\
opticsID = 1;\
useModelOptics = true;\
opticsFlare = true;\
opticsDisablePeripherialVision = true;\
opticsZoomMin = 0.0623;\
opticsZoomMax = 0.0623;\
opticsZoomInit = 0.0623;\
distanceZoomMin = 300;\
distanceZoomMax = 300;\
memoryPointCamera = "opticView";\
visionMode[] = {"Normal"};\
opticsPPEffects[] = {"OpticsCHAbera3","OpticsBlur3"};\
cameraDir = "";\
};\
}
class G3_DZ: FNFAL_DZ
{
scope = 2;
@@ -10,30 +31,30 @@ class G3_DZ: FNFAL_DZ
fireLightDuration = 0.000;
fireLightIntensity = 0.000;
drySound[] = {"Ca\sounds\Weapons\rifles\dry",db-50,1,10};
reloadMagazineSound[] = {"ca\sounds\weapons\rifles\reload-m16-3",db-25,1,25};
reloadMagazineSound[] = {"\C1987_G3\sound\G3_Reload.wss",0.056234,1,20};
distanceZoomMin = 50;
distanceZoomMax = 50;
handAnim[] = {"OFP2_ManSkeleton"};
modes[] = {Single, FullAuto};
class Single : Mode_SemiAuto
{
begin1[] = {"rh_mgswp\sound\scarAk", db5, 1,1000};
soundBegin[] = {begin1,1};
begin1[] = {"\C1987_G3\sound\G3.wss",1.778279,1,1000};
soundBegin[] = {"begin1",1};
reloadTime = 0.07;
recoil = "recoil_single_primary_3outof10";
recoilProne = "recoil_single_primary_prone_3outof10";
dispersion = 0.003;
minRange = 2;
minRangeProbab = 0.25;
midRange = 20;
midRange = 200;
midRangeProbab = 0.7;
maxRange = 50;
maxRange = 500;
maxRangeProbab = 0.05;
};
class FullAuto : Mode_FullAuto
{
begin1[] = {"rh_mgswp\sound\scarAk", db5, 1,1000};
soundBegin[] = {begin1,1};
begin1[] = {"\C1987_G3\sound\G3.wss",1.778279,1,1000};
soundBegin[] = {"begin1",1};
soundContinuous = 0;
reloadTime = 0.1;
ffCount = 1;
@@ -43,10 +64,142 @@ class G3_DZ: FNFAL_DZ
dispersion = 0.003; //0.007;
minRange = 0;
minRangeProbab = 0.20;
midRange = 7;
midRange = 150;
midRangeProbab = 0.7;
maxRange = 15;
maxRange = 400;
maxRangeProbab = 0.05;
};
class Attachments {};
};
class G3A3_DZ: G3_DZ
{
displayName = $STR_DZ_WPN_G3A3_NAME;
model = "\C1987_G3\g3.p3d";
picture = "\C1987_G3\equip\g3.paa";
class Attachments
{
Attachment_CCO = "G3A3_CCO_DZ";
Attachment_Holo = "G3A3_HOLO_DZ";
Attachment_ACOG = "G3A3_ACOG_DZ";
};
};
class G3A3_CCO_DZ: G3A3_DZ
{
displayName = $STR_DZ_WPN_G3A3_CCO_NAME;
model = "\C1987_G3\g3_aimshot.p3d";
picture = "\C1987_G3\equip\g3_aim.paa";
class Attachments {};
class ItemActions
{
class RemoveCCO
{
text = $STR_DZ_ATT_CCO_RMVE;
script = "; ['Attachment_CCO',_id,'G3A3_DZ'] call player_removeAttachment";
};
};
};
class G3A3_Holo_DZ: G3A3_DZ
{
displayName = $STR_DZ_WPN_G3A3_HOLO_NAME;
model = "\C1987_G3\g3_eotech.p3d";
picture = "\C1987_G3\equip\g3_eotech.paa";
class Attachments {};
class ItemActions
{
class RemoveHolo
{
text = $STR_DZ_ATT_HOLO_RMVE;
script = "; ['Attachment_Holo',_id,'G3A3_DZ'] call player_removeAttachment";
};
};
};
class G3A3_ACOG_DZ: G3A3_DZ
{
displayName = $STR_DZ_WPN_G3A3_ACOG_NAME;
model = "\C1987_G3\g3_acog.p3d";
picture = "\C1987_G3\equip\g3_acog.paa";
class Attachments {};
G3_ACOG;
class ItemActions
{
class RemoveACOG
{
text = $STR_DZ_ATT_ACOG_RMVE;
script = "; ['Attachment_ACOG',_id,'G3A3_DZ'] call player_removeAttachment";
};
};
};
class G3_SG1_DZ: G3A3_DZ
{
displayName = $STR_DZ_WPN_G3_SG1_NAME;
model = "\C1987_G3\g3sg1.p3d";
picture = "\C1987_G3\equip\g3sg1.paa";
modelOptics = "\ca\weapons\2Dscope_MilDot_10";
opticsPPEffects[] = {"OpticsCHAbera1","OpticsBlur1"};
opticsZoomMin = 0.029624;
opticsZoomMax = 0.09222;
opticsZoomInit = 0.09222;
distanceZoomMin = 329;
distanceZoomMax = 329;
optics = 1;
class Single : Mode_SemiAuto
{
begin1[] = {"\C1987_G3\sound\G3.wss",1.778279,1,1000};
soundBegin[] = {"begin1",1};
reloadTime = 0.07;
recoil = "recoil_single_primary_3outof10";
recoilProne = "recoil_single_primary_prone_3outof10";
dispersion = 0.003;
minRange = 2;
minRangeProbab = 0.25;
midRange = 400;
midRangeProbab = 0.7;
maxRange = 800;
maxRangeProbab = 0.05;
};
class FullAuto : Mode_FullAuto
{
begin1[] = {"\C1987_G3\sound\G3.wss",1.778279,1,1000};
soundBegin[] = {"begin1",1};
soundContinuous = 0;
reloadTime = 0.1;
ffCount = 1;
recoil = "recoil_auto_primary_3outof10";
recoilProne = "recoil_auto_primary_prone_3outof10";
aiRateOfFire = 0.001;
dispersion = 0.003; //0.007;
minRange = 0;
minRangeProbab = 0.20;
midRange = 350;
midRangeProbab = 0.7;
maxRange = 700;
maxRangeProbab = 0.05;
};
class Attachments {};
};
class G3_SG1_Bipod_DZ: G3_SG1_DZ
{
displayName = $STR_DZ_WPN_G3_SG1_BIPOD_NAME;
model = "\C1987_G3\g3sg1_bipod.p3d";
picture = "\C1987_G3\equip\g3sg1_bipod.paa";
class Single : Single
{
recoilProne = "recoil_single_primary_prone_1outof10";
};
class FullAuto : FullAuto
{
recoilProne = "recoil_auto_primary_prone_2outof10";
};
};
#undef G3_ACOG

View File

@@ -2282,6 +2282,30 @@ class G3_DZ
{
weight = 6.1;
};
class G3A3_DZ
{
weight = 6.1;
};
class G3A3_CCO_DZ
{
weight = 6.2;
};
class G3A3_Holo_DZ
{
weight = 6.2;
};
class G3A3_ACOG_DZ
{
weight = 6.3;
};
class G3_SG1_DZ
{
weight = 6.5;
};
class G3_SG1_Bipod_DZ
{
weight = 6.7;
};
class SCAR_H_AK_DZ
{
weight = 4.5;

View File

@@ -18306,13 +18306,31 @@
<!-- G3 -->
<Key ID="STR_DZ_WPN_G3_NAME">
<English>G3</English>
<English>G3A1</English>
</Key>
<Key ID="STR_DZ_WPN_G3_DESC">
<English>Assault Rifle &lt;br/&gt;Caliber: 7.62x51mm</English>
<German>Sturmgewehr &lt;br/&gt;Kaliber: 7.62x51mm</German>
<Russian>Штурмовая винтовка&lt;br/&gt;Калибр: 7.62x51мм</Russian>
</Key>
<Key ID="STR_DZ_WPN_G3A3_NAME">
<English>G3A3</English>
</Key>
<Key ID="STR_DZ_WPN_G3A3_CCO_NAME">
<English>G3A3 CCO</English>
</Key>
<Key ID="STR_DZ_WPN_G3A3_HOLO_NAME">
<English>G3A3 Holo</English>
</Key>
<Key ID="STR_DZ_WPN_G3A3_ACOG_NAME">
<English>G3A3 ACOG</English>
</Key>
<Key ID="STR_DZ_WPN_G3_SG1_NAME">
<English>G3 SG1</English>
</Key>
<Key ID="STR_DZ_WPN_G3_SG1_BIPOD_NAME">
<English>G3 SG1 Bipod</English>
</Key>
<!-- MAT 49 -->
<Key ID="STR_DZ_WPN_MAT49_NAME">

View File

@@ -67,7 +67,7 @@ if (!isNil "_magazines") then {
_class = _x select 0;
};
if (_class in _magazines) then {
local _MatchedCount = {_compare = if (typeName _x == "ARRAY") then {_x select 0;} else {_x}; _compare == _class} count _magTemp;
local _MatchedCount = {local _compare = if (typeName _x == "ARRAY") then {_x select 0;} else {_x}; _compare == _class} count _magTemp;
local _CountedActual = {_x == _class} count _magazines;
if (_MatchedCount > _CountedActual) then {
_magTemp set [_forEachIndex, "0"];