This commit is the equivalent of a atomic bomb

This commit is contained in:
2026-02-15 08:08:56 -03:00
commit e4ac56b038
6934 changed files with 916278 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,82 @@
class StageTI
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_long_body_CO.paa";
};
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,0};
specular[]={0.01,0.01,0.01,1};
specularPower=80;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_long_body_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_long_body_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage5
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_long_body_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(0,0)";
uvSource="none";
};
class Stage7
{
texture="a3\data_f\env_land_ca.paa";
uvSource="none";
};

View File

@@ -0,0 +1,82 @@
class StageTI
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_long_body_CO.paa";
};
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,0};
specular[]={0.05,0.05,0.05,1};
specularPower=80;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_long_body_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_long_body_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage5
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_long_body_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(0,0)";
uvSource="none";
};
class Stage7
{
texture="a3\data_f\env_land_ca.paa";
uvSource="none";
};

View File

@@ -0,0 +1,82 @@
class StageTI
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_short_body_CO.paa";
};
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,0};
specular[]={0.01,0.01,0.01,1};
specularPower=80;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_short_body_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_short_body_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage5
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_short_body_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(0,0)";
uvSource="none";
};
class Stage7
{
texture="a3\data_f\env_land_ca.paa";
uvSource="none";
};

View File

@@ -0,0 +1,82 @@
class StageTI
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_short_body_CO.paa";
};
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,0};
specular[]={0.05,0.05,0.05,1};
specularPower=80;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_short_body_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_short_body_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage5
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_short_body_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(0,0)";
uvSource="none";
};
class Stage7
{
texture="a3\data_f\env_land_ca.paa";
uvSource="none";
};

View File

@@ -0,0 +1,82 @@
class StageTI
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_Sight_co.paa";
};
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={0.01,0.01,0.01,1};
specularPower=90;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_Sight_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_Sight_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage5
{
texture="braf\braf_weapons_assault_rifles\556mm_HK416\Data\textures\AMF_614_Sight_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,1};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(0,0)";
uvSource="none";
};
class Stage7
{
texture="a3\data_f\env_land_ca.paa";
uvSource="none";
};

View File

@@ -0,0 +1,373 @@
class braf_HK416_long_base : Rifle_Base_F {
magazines[] = {
"braf_30Rnd_556x45",
"braf_20Rnd_556x45",
"braf_30Rnd_556x45_red",
"braf_30Rnd_556x45_green",
"braf_30Rnd_556x45_yellow",
"braf_30Rnd_556x45_Blank",
"30Rnd_556x45_Stanag",
"30Rnd_556x45_Stanag_green",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
}; /// original custom made magazines and a group of several standardized mags
magazineWell[]=
{
"BRAF_Stanag_556",
"STANAG_556x45",
"STANAG_556x45_Large"
};
reloadAction = "GestureReloadSPAR_01"; /// MX hand animation actually fits this rifle well
magazineReloadSwitchPhase = 0.4; /// part of reload animation when new magazine ammo count should affect "revolving" animation source
discreteDistanceInitIndex = 0; /// Ironsight zeroing is the lowest value by default
recoil = "recoil_spar";
maxRecoilSway = 0.0125;
swayDecaySpeed = 1.25;
inertia = 0.5;
initSpeed = -1; /// this means that initSpeed of magazine is used
class GunParticles : GunParticles
{
class SecondEffect
{
positionName = "Nabojnicestart";
directionName = "Nabojniceend";
effectName = "CaselessAmmoCloud";
};
};
class WeaponSlotsInfo : WeaponSlotsInfo
{
mass = 92;
class MuzzleSlot : MuzzleSlot
{
linkProxy="\A3\data_f\proxies\weapon_slots\MUZZLE";
compatibleItems[]=
{
"muzzle_snds_M"
};
iconPosition[]={0.12,0.43099999};
iconScale=0.15000001;
};
class CowsSlot : asdg_OpticRail1913 /// default accessories for this slot
{
};
class PointerSlot : asdg_FrontSideRail /// default accessories for this slot
{
};
class UnderBarrelSlot : UnderBarrelSlot /// using AMF bipod
{
iconPosition[] = {0.2, 0.7};
iconScale = 0.2;
compatibleItems[] = {};
};
};
opticsZoomMin = 0.375;
opticsZoomMax = 1.1;
opticsZoomInit = 0.75;
distanceZoomMin = 300;
distanceZoomMax = 300;
descriptionShort = "AMF HK 416 F Long"; /// displayed on mouseOver in Inventory
handAnim[] = {"OFP2_ManSkeleton", "\braf\braf_weapons_anim\animations\556mm_HK416\amf_hand_nogrip.rtm"}; /// hand animation actually fits this rifle well
dexterity = 1.8;
selectionFireAnim = "muzzleFlash"; /// are we able to get rid of all the zaslehs?
bullet1[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Metal_01", 0.446684, 1, 15};
bullet2[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Metal_02", 0.446684, 1, 15};
bullet3[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Metal_03", 0.446684, 1, 15};
bullet4[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Metal_04", 0.446684, 1, 15};
bullet5[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Dirt_01", 0.562341, 1, 15};
bullet6[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Dirt_02", 0.562341, 1, 15};
bullet7[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Dirt_03", 0.562341, 1, 15};
bullet8[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Dirt_04", 0.562341, 1, 15};
bullet9[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Grass_01", 0.562341, 1, 15};
bullet10[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Grass_02", 0.562341, 1, 15};
bullet11[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Grass_03", 0.562341, 1, 15};
bullet12[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Grass_04", 0.562341, 1, 15};
soundBullet[] = {"bullet1", 0.087, "bullet2", 0.083, "bullet3", 0.083, "bullet4", 0.083, "bullet5", 0.083, "bullet6", 0.083, "bullet7", 0.083, "bullet8", 0.083, "bullet9", 0.083, "bullet10", 0.083, "bullet11", 0.083, "bullet12", 0.083};
drySound[] = {"A3\Sounds_F_Exp\arsenal\weapons\Rifles\SPAR01\SPAR01_dry", 0.63095737, 1, 30};
changeFiremodeSound[] = {"A3\Sounds_F_Exp\arsenal\weapons\Rifles\SPAR01\SPAR01_firemode", 0.25118864, 1, 5};
reloadMagazineSound[] = {"A3\Sounds_F_Exp\arsenal\weapons\Rifles\SPAR01\SPAR01_reload", 1.0, 1, 10};
modes[] = {SemiAuto, Fullauto, single_medium_optics1, single_far_optics2};
class SemiAuto : Mode_SemiAuto
{
sounds[] = {"StandardSound", "SilencedSound"};
class BaseSoundModeType;
class StandardSound : BaseSoundModeType
{
soundSetShot[] = {"SPAR01_Shot_SoundSet", "SPAR01_Tail_SoundSet", "SPAR01_InteriorTail_SoundSet"};
};
class SilencedSound : BaseSoundModeType
{
SoundSetShot[] = {"SPAR01_silencerShot_SoundSet", "SPAR01_silencerTail_SoundSet", "SPAR01_silencerInteriorTail_SoundSet"};
};
reloadTime = 0.070;
recoil = "recoil_single_primary_3outof10";
recoilProne = "recoil_single_primary_prone_3outof10";
dispersion = 0.0002;
minRange = 2;
minRangeProbab = 0.3;
midRange = 350;
midRangeProbab = 0.7;
maxRange = 500;
maxRangeProbab = 0.05;
};
class FullAuto : Mode_FullAuto
{
sounds[] = {"StandardSound", "SilencedSound"};
class BaseSoundModeType;
class StandardSound : BaseSoundModeType
{
soundSetShot[] = {"SPAR01_Shot_SoundSet", "SPAR01_Tail_SoundSet", "SPAR01_InteriorTail_SoundSet"};
};
class SilencedSound : BaseSoundModeType
{
SoundSetShot[] = {"SPAR01_silencerShot_SoundSet", "SPAR01_silencerTail_SoundSet", "SPAR01_silencerInteriorTail_SoundSet"};
};
reloadTime = 0.070;
recoil = "recoil_auto_primary_3outof10";
recoilProne = "recoil_auto_primary_prone_3outof10";
dispersion = 0.0002;
minRange = 0;
minRangeProbab = 0.9;
midRange = 15;
midRangeProbab = 0.7;
maxRange = 30;
maxRangeProbab = 0.05;
aiRateOfFire = 1e-006;
};
class single_medium_optics1 : SemiAuto /// Pew for AI with collimator sights
{
requiredOpticType = 1;
showToPlayer = 0;
minRange = 2;
minRangeProbab = 0.2;
midRange = 450;
midRangeProbab = 0.7;
maxRange = 600;
maxRangeProbab = 0.2;
aiRateOfFire = 6;
aiRateOfFireDistance = 600;
};
class single_far_optics2 : single_medium_optics1 /// Pew for AI with better sights
{
requiredOpticType = 2;
showToPlayer = 0;
minRange = 100;
minRangeProbab = 0.1;
midRange = 500;
midRangeProbab = 0.6;
maxRange = 700;
maxRangeProbab = 0.05;
aiRateOfFire = 8;
aiRateOfFireDistance = 700;
};
class HK269_F : UGL_F /// Some grenade launcher to have some more fun
{
displayName = "AMF HK269";
descriptionShort = "AMF HK269";
author = "LKDSG & AMF TEAM";
useModelOptics = false;
useExternalOptic = false; /// Doesn't use optics from the attachment, has it's own
cameraDir = "OP_look";
discreteDistance[] = {100, 200, 300, 400};
discreteDistanceCameraPoint[] = {"OP_eye", "OP_eye2", "OP_eye3", "OP_eye4"}; /// the angle of gun changes with zeroing
discreteDistanceInitIndex = 1; /// 200 is the default zero
};
aiDispersionCoefY = 6.0; /// AI should have some degree of greater dispersion for initial shoots
aiDispersionCoefX = 4.0; /// AI should have some degree of greater dispersion for initial shoots
};
class braf_HK416_short_base : Rifle_Base_F {
magazines[] = {
"braf_30Rnd_556x45",
"braf_20Rnd_556x45",
"braf_30Rnd_556x45_red",
"braf_30Rnd_556x45_green",
"braf_30Rnd_556x45_yellow",
"braf_30Rnd_556x45_Blank",
"30Rnd_556x45_Stanag",
"30Rnd_556x45_Stanag_green",
"30Rnd_556x45_Stanag_red",
"30Rnd_556x45_Stanag_Tracer_Red",
"30Rnd_556x45_Stanag_Tracer_Green",
"30Rnd_556x45_Stanag_Tracer_Yellow",
}; /// original custom made magazines and a group of several standardized mags
magazineWell[]=
{
"BRAF_Stanag_556",
"STANAG_556x45",
"STANAG_556x45_Large"
};
reloadAction = "GestureReloadSPAR_01";
magazineReloadSwitchPhase = 0.4; /// part of reload animation when new magazine ammo count should affect "revolving" animation source
discreteDistanceInitIndex = 0; /// Ironsight zeroing is the lowest value by default
handAnim[] = {"OFP2_ManSkeleton", \braf\braf_weapons_anim\animations\556mm_HK416\amf_hand_nogrip.rtm};
dexterity = 3.1;
maxRecoilSway = 0.0125;
swayDecaySpeed = 1.25;
inertia = 0.5;
initSpeed = -1; /// this means that initSpeed of magazine is used
class GunParticles : GunParticles
{
class SecondEffect
{
positionName = "Nabojnicestart";
directionName = "Nabojniceend";
effectName = "CaselessAmmoCloud";
};
};
class WeaponSlotsInfo : WeaponSlotsInfo
{
mass = 92;
class MuzzleSlot : MuzzleSlot
{
linkProxy="\A3\data_f\proxies\weapon_slots\MUZZLE";
compatibleItems[]=
{
"muzzle_snds_M"
};
iconPosition[]={0.12,0.43099999};
iconScale=0.15000001;
};
class CowsSlot : asdg_OpticRail1913 {};
class PointerSlot : asdg_FrontSideRail {};
class UnderBarrelSlot : UnderBarrelSlot {
iconPosition[] = {0.2, 0.7};
iconScale = 0.2;
compatibleItems[] = {};
};
};
opticsZoomMin = 0.375;
opticsZoomMax = 1.1;
opticsZoomInit = 0.75;
distanceZoomMin = 300;
distanceZoomMax = 300;
descriptionShort = "AMF HK 416 Short"; /// displayed on mouseOver in Inventory
selectionFireAnim = "muzzleFlash"; /// are we able to get rid of all the zaslehs?
bullet1[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Metal_01", 0.446684, 1, 15};
bullet2[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Metal_02", 0.446684, 1, 15};
bullet3[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Metal_03", 0.446684, 1, 15};
bullet4[] = {"A3\sounds_f\weapons\shells\5_56\Shellcase_556_Metal_04", 0.446684, 1, 15};
bullet5[] = {"A3\sounds_f\weapons\shells\7_62\Shellcase_762_Dirt_01", 0.562341, 1, 15};
bullet6[] = {"A3\sounds_f\weapons\shells\7_62\Shellcase_762_Dirt_02", 0.562341, 1, 15};
bullet7[] = {"A3\sounds_f\weapons\shells\7_62\Shellcase_762_Dirt_03", 0.562341, 1, 15};
bullet8[] = {"A3\sounds_f\weapons\shells\7_62\Shellcase_762_Dirt_04", 0.562341, 1, 15};
bullet9[] = {"A3\sounds_f\weapons\shells\7_62\Shellcase_762_Grass_01", 0.562341, 1, 15};
bullet10[] = {"A3\sounds_f\weapons\shells\7_62\Shellcase_762_Grass_02", 0.562341, 1, 15};
bullet11[] = {"A3\sounds_f\weapons\shells\7_62\Shellcase_762_Grass_03", 0.562341, 1, 15};
bullet12[] = {"A3\sounds_f\weapons\shells\7_62\Shellcase_762_Grass_04", 0.562341, 1, 15};
soundBullet[] = {"bullet1", 0.087, "bullet2", 0.083, "bullet3", 0.083, "bullet4", 0.083, "bullet5", 0.083, "bullet6", 0.083, "bullet7", 0.083, "bullet8", 0.083, "bullet9", 0.083, "bullet10", 0.083, "bullet11", 0.083, "bullet12", 0.083};
drySound[] = {"A3\Sounds_F_Exp\arsenal\weapons\Rifles\SPAR01\SPAR01_dry", 0.63095737, 1, 30};
changeFiremodeSound[] = {"A3\Sounds_F_Exp\arsenal\weapons\Rifles\SPAR01\SPAR01_firemode", 0.25118864, 1, 5};
reloadMagazineSound[] = {"A3\Sounds_F_Exp\arsenal\weapons\Rifles\SPAR01\SPAR01_reload", 1.0, 1, 10};
modes[] = {SemiAuto, Fullauto};
class SemiAuto : Mode_SemiAuto
{
sounds[] = {"StandardSound", "SilencedSound"};
class BaseSoundModeType;
class StandardSound : BaseSoundModeType
{
soundSetShot[] = {"SPAR01_Shot_SoundSet", "SPAR01_Tail_SoundSet", "SPAR01_InteriorTail_SoundSet"};
};
class SilencedSound : BaseSoundModeType
{
SoundSetShot[] = {"SPAR01_silencerShot_SoundSet", "SPAR01_silencerTail_SoundSet", "SPAR01_silencerInteriorTail_SoundSet"};
};
reloadTime = 0.070;
recoil = "recoil_single_primary_3outof10";
recoilProne = "recoil_single_primary_prone_3outof10";
dispersion = 0.0002;
minRange = 2;
minRangeProbab = 0.3;
midRange = 350;
midRangeProbab = 0.7;
maxRange = 500;
maxRangeProbab = 0.05;
};
class FullAuto : Mode_FullAuto
{
sounds[] = {"StandardSound", "SilencedSound"};
class BaseSoundModeType;
class StandardSound : BaseSoundModeType
{
soundSetShot[] = {"SPAR01_Shot_SoundSet", "SPAR01_Tail_SoundSet", "SPAR01_InteriorTail_SoundSet"};
};
class SilencedSound : BaseSoundModeType
{
SoundSetShot[] = {"SPAR01_silencerShot_SoundSet", "SPAR01_silencerTail_SoundSet", "SPAR01_silencerInteriorTail_SoundSet"};
};
reloadTime = 0.070;
recoil = "recoil_auto_primary_3outof10";
recoilProne = "recoil_auto_primary_prone_3outof10";
dispersion = 0.0002;
minRange = 0;
minRangeProbab = 0.9;
midRange = 15;
midRangeProbab = 0.7;
maxRange = 30;
maxRangeProbab = 0.05;
aiRateOfFire = 1e-006;
};
aiDispersionCoefY = 6.0; /// AI should have some degree of greater dispersion for initial shoots
aiDispersionCoefX = 4.0; /// AI should have some degree of greater dispersion for initial shoots
};
class braf_HK416_long : braf_HK416_long_base {
scope = 2; /// should be visible and useable in game
author = "ARNIE & AMF TEAM";
displayName = "HK 416 D16.5"; /// some name
model = "\braf\braf_weapons_assault_rifles\556mm_HK416\amf_416_long.p3d"; /// path to model
picture = "\braf\braf_weapons_assault_rifles\556mm_HK416\Data\UI\gear_amf_614_long_01_x_ca.paa"; /// different accessories have M, S, T instead of X
UiPicture = "\braf\braf_weapons_assault_rifles\556mm_HK416\Data\UI\gear_amf_614_long_01_x_ca.paa"; /// weapon should be marked such way
handAnim[] = {"OFP2_ManSkeleton", "\braf\braf_weapons_anim\animations\556mm_HK416\amf_hand_nogrip.rtm"};
weaponInfoType = "RscWeaponZeroing"; /// display with zeroing is good for iron sights
rhs_grip2_change = "amf_614_gripv_01_f";
rhs_grip3_change = "amf_614_gript_01_f";
class WeaponSlotsInfo : WeaponSlotsInfo
{
mass = 92;
allowedSlots[] = {901};
class MuzzleSlot : MuzzleSlot
{
};
class CowsSlot : asdg_OpticRail1913 /// default accessories for this slot
{
};
class PointerSlot : asdg_FrontSideRail /// default accessories for this slot
{
};
};
};
class braf_HK416_short : braf_HK416_short_base {
scope = 2;
author = "ARNIE & AMF TEAM";
displayName = "HK 416 D10";
dexterity = 3.1;
model = "\braf\braf_weapons_assault_rifles\556mm_HK416\AMF_416_short.p3d";
picture = "\braf\braf_weapons_assault_rifles\556mm_HK416\Data\UI\gear_AMF_614_short_X_CA.paa";
UiPicture = "\A3\Weapons_F\Data\UI\icon_gl_CA.paa";
handAnim[] = {"OFP2_ManSkeleton", "\a3\weapons_f_exp\rifles\spar_01\data\anim\spar_01.rtm"};
weaponInfoType = "RscWeaponZeroing";
rhs_grip2_change = "amf_614s_gripv_01_f";
rhs_grip3_change = "amf_614s_gript_01_f";
class WeaponSlotsInfo : WeaponSlotsInfo
{
mass = 92;
allowedSlots[] = {901};
class MuzzleSlot : MuzzleSlot
{
};
class CowsSlot : asdg_OpticRail1913
{
};
class PointerSlot : asdg_FrontSideRail
{
};
};
};

View File

@@ -0,0 +1 @@
missionNamespace getVariable ["bis_fnc_moduleRemoteControl_unit", player];

View File

@@ -0,0 +1,116 @@
/*
Gripod system
a: reyhard
*/
private _p = call AMF_fnc_rhs_findplayer;
private _gripod = (primaryWeaponItems _p) select 3;
//systemChat format["start %1",_gripod];
_p setVariable ["rhs_gripod_acc",_gripod];
[_p,_gripod] call AMF_fnc_rhs_gripod_change;
if(not(isNil "rhs_grip_deinitialize"))exitWith{
//systemChat "event handlers are already here";
};
//systemChat "adding event handlers";
// deinitialization function
rhs_grip_deinitialize = {
private _p = call AMF_fnc_rhs_findplayer;
// Exit if player no longer have primary weapon
if(primaryWeapon _p isEqualTo "")exitWith{};
private _t = (getText (configFile >> "cfgWeapons" >> (primaryWeapon _p) >> "baseWeapon"));
private _i = primaryWeaponItems _p;
private _a = _p ammo (primaryWeapon _p);
private _m = currentMagazine _p;
_p addWeapon _t;
// If there is free, comatibile magazine, game tries to automatically add it to weapon
if(! ((primaryWeaponMagazine _p) isEqualTo []))then
{
_p addMagazine [(primaryWeaponMagazine _p) # 0,_p ammo _t];
};
_p addPrimaryWeaponItem _m;
{_p addPrimaryWeaponItem _x}foreach _i;
_p setAmmo [(primaryWeapon _p), _a];
[missionnamespace, "arsenalOpened", rhs_grip_arsenal_eh_idx] call BIS_fnc_removeScriptedEventHandler;
//_p removeEventHandler ["take",rhs_grip_take_eh_idx];
_p removeEventHandler ["InventoryClosed",rhs_grip_close_eh_idx];
//rhs_grip_take_eh_idx = nil;
rhs_grip_close_eh_idx = nil;
rhs_grip_eh_idx = nil;
rhs_grip_deinitialize = nil;
//systemChat "koniec";
};
// eventhandler launched upon arsenal opening
rhs_grip_arsenal_eh_idx = [missionnamespace, "arsenalOpened", {
private _p = call AMF_fnc_rhs_findplayer;
private _g = _p getVariable ["rhs_gripod_acc",""];
//systemChat "arsenal started";
// remove EH if unit no longer has a gripod
if(!(_g in primaryWeaponItems _p))exitWith{
call rhs_grip_deinitialize;
};
[_p,_g] spawn {
params["_p","_g"];
private _gt = (getText (configFile >> "cfgWeapons" >> _g >> "rhs_grip_type"));
private _w = (getText (configFile >> "cfgWeapons" >> (primaryWeapon _p) >> _gt));
while{not(isnull ( uinamespace getvariable "RSCDisplayArsenal"))}do{
if(primaryWeapon _p != _w AND ((_g in primaryWeaponItems _p)) )then{
//systemChat "zmiana";
private _t = primaryWeapon _p;
private _gt = (getText (configFile >> "cfgWeapons" >> _g >> "rhs_grip_type"));
private _w = (getText (configFile >> "cfgWeapons" >> _t >> _gt));
private _i = primaryWeaponItems _p;
private _a = _p ammo _t;
private _m = currentMagazine _p;
_p addWeapon _w;
// If there is free, comatibile magazine, game tries to automatically add it to weapon
if(! ((primaryWeaponMagazine _p) isEqualTo []))then
{
_p addMagazine [(primaryWeaponMagazine _p) # 0,_p ammo _w];
};
_p addPrimaryWeaponItem _m;
{_p addPrimaryWeaponItem _x}foreach _i;
_p setAmmo [(primaryWeapon _p), _a];
};
sleep 0.1;
};
private _g = _p getVariable ["rhs_gripod_acc",""];
// remove EH if unit no longer has a gripod
if(!(_g in primaryWeaponItems _p))exitWith{
call rhs_grip_deinitialize;
};
//systemChat "arsenal exit";
};
}] call bis_fnc_addScriptedEventHandler;
// inventory closeds event handler
rhs_grip_close_eh_idx = _p addEventHandler ["InventoryClosed",{
private _p = call AMF_fnc_rhs_findplayer;
private _g = _p getVariable ["rhs_gripod_acc",""];
// remove EH if unit no longer has a gripod
if(!(_g in primaryWeaponItems _p))exitWith{
//systemChat format["exit %1 %2",_g, primaryWeaponItems _p];
call rhs_grip_deinitialize;
};
}];

View File

@@ -0,0 +1,38 @@
/*
Gripod system
a: reyhard
*/
params["_p","_gripod"];
private _t = primaryWeapon _p;
private _gt = (getText (configFile >> "cfgWeapons" >> _gripod >> "rhs_grip_type"));
private _w = (getText (configFile >> "cfgWeapons" >> _t >> _gt));
// exit if weapon is missing replacement param
if(_w isEqualTo "")exitWith{
//systemChat "no weapon found";
};
// exit if weapon is already changed
if(_w isEqualTo _t)exitWith{
//systemChat "no change required";
};
private _i = primaryWeaponItems _p;
private _a = _p ammo _t;
private _m = currentMagazine _p;
_p addWeapon _w;
// If there is free, comatibile magazine, game tries to automatically add it to weapon
if(! ((primaryWeaponMagazine _p) isEqualTo []))then
{
_p addMagazine [(primaryWeaponMagazine _p) # 0,_p ammo _w];
};
_p addPrimaryWeaponItem _m;
{_p addPrimaryWeaponItem _x}foreach _i;
_p selectWeapon _w;
_p setAmmo [(primaryWeapon _p), _a];
_p setVariable ["rhs_gripod_acc",_gripod];

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,405 @@
class CfgSkeletons
{
class amf_614_skeleton
{
pivotsModel="";
isDiscrete = 0;
skeletonInherit = "";
skeletonBones[] =
{
"trigger", "", /// not in this model, but good to use
"bolt", "",
"bolt_catch", "",
"magazine", "",
"safety", "",
"muzzleFlash", "",
"OP", "",
"ForeSight", "",
"BackSight", "",
"rail_protect_side", "",
"rail_protect_underbarrel", ""
};
};
class AMF_Bipod_614_skeleton
{
pivotsModel="";
isDiscrete = 0;
skeletonInherit = "";
skeletonBones[] =
{
"bipod_legs", "",
"bipod_leg_L", "bipod_legs",
"leg_L", "bipod_leg_L",
"bipod_leg_R", "bipod_legs",
"leg_R", "bipod_leg_R"
};
};
};
class CfgModels
{
class Default
{
sectionsInherit="";
sections[] = {};
skeletonName = "";
};
class Optic: Default
{
sections[]=
{
"zasleh"
};
};
class Weapon: Default
{
sections[]=
{
"zasleh"
};
htMin = 1; // Minimum half-cooling time (in seconds)
htMax = 600; // Maximum half-cooling time (in seconds)
afMax = 0; // Maximum temperature in case the model is alive (in celsius)
mfMax = 0; // Maximum temperature when the model is moving (in celsius)
mFact = 1; // Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)).
tBody = 100; // Metabolism temperature of the model (in celsius)
// skeletonName="Weapon";
class Animations
{
class zaslehROT
{
type="rotation";
source="clockMinute";
sourceAddress="loop";
selection="zasleh";
begin="usti hlavne";
end="konec hlavne";
memory=1;
minValue=0.0166665;
maxValue=0.016666666666666666666666666666667;
angle0="rad 0";
angle1="rad 360";
};
class magazine_hide
{
type="hide";
source="reloadMagazine";
sourceAddress="mirror";
selection="magazine";
minValue=0.0;
maxValue=0.4;
hideValue=0.5;
};
class reload_ammobelt_hide: magazine_hide
{
selection="ammo_belt";
};
class reload_ammobelt_bottom_hide: magazine_hide
{
selection="ammo_belt_bottom";
};
class ammobelt_hide: magazine_hide
{
source="isEmpty";
selection="ammo_belt";
minValue=0.000000;
maxValue=1.000000;
hideValue=1.000000;
};
class ammobelt_bottom_hide: ammobelt_hide
{
selection="ammo_belt_bottom";
};
/// Hiding of magazine if weapon has none
class no_magazine
{
type="hide";
source="hasMagazine";
selection="magazine";
minValue=0.000000;
maxValue=1.00000;
hideValue=0.5;
unhideValue = -1.0;
};
};
};
class Rifle: Weapon
{
// skeletonName="Rifle";
class Animations: Animations
{
class magazine_hide:magazine_hide
{
sourceAddress="mirror";
minValue=0.0;
maxValue=0.56;
hideValue=0.36;
};
class bolt_empty
{
type="translation";
source="isEmpty";
selection="bolt";
axis="bolt_axis";
memory=1;
minValue=0.000000;
maxValue=0.500000;
offset0=0;
offset1=0.5;
};
class bullet_cover
{
type="rotation";
source="reload";
sourceAddress="mirror";
selection="bullet_cover";
axis="bullet_cover_axis";
memory=1;
minValue=0.0;
maxValue=0.5;
angle0=0;
angle1=-0.4;
};
class bolt_fire_begin
{
type="translation";
source="reload";
selection="bolt";
axis="bolt_axis";
memory=1;
minValue=0.000000;
maxValue=0.300000;
offset0=0;
offset1=0.5;
};
class bolt_fire_end:bolt_fire_begin
{
minValue=0.500000;
maxValue=1.000000;
offset0=0;
offset1=-0.5;
};
class bolt_reload_begin
{
type="translation";
source="reloadMagazine";
selection="bolt";
axis="bolt_axis";
memory=1;
minValue=0.1;
maxValue=0.15;
offset0=0;
offset1=0.5;
};
class bolt_reload_end:bolt_reload_begin
{
minValue=0.980000;
maxValue=1.000000;
offset0=0;
offset1=-0.5;
};
};
};
class amf_614_long_Base: Rifle
{
skeletonName = "amf_614_skeleton";
sectionsInherit = "";
sections[] = {"muzzleFlash","Camo1","Camo2","camo3","camo4","Camo5","Camo6","Camo7","Camo8","Camo9"};
class Animations
{
class trigger /// not in this model, but good to use
{
type = "rotation";
source = "reload";
sourceAddress = "clamp";
selection = "trigger";
axis = "trigger_axis";
minValue = 0;
maxValue = "1";
angle0 = "0";
angle1 = "rad -30";
};
class bolt
{
type = "translation";
source = "reload";
sourceAddress = clamp;
selection = "bolt";
axis = "bolt_axis";
minValue = 0.5;
maxValue = 1;
offset0 = 0;
offset1 = 0.3;
};
class bolt_2: bolt
{
minValue = 0;
maxValue = 0.5;
offset0 = 0;
offset1 = 0.7;
};
class bolt_empty: bolt{
source = "isEmptyNoReload";
minValue = 0;
maxValue = 1;
offset0 = 0;
offset1 = 1;
};
class bolt_reload_move_1: bolt_empty {
source="reloadMagazine"; // z: should work like that only if weapon is empty
minValue=0;
maxValue=0.00001;
};
class bolt_reload_move_2: bolt_reload_move_1 {
source="reloadMagazine"; // z: should work like that only if weapon is empty
minValue=0.78;
maxValue=0.80;
offset1 = -1;
};
class bolt_catch: bolt {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class bolt_catch_2: bolt_2 {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class bolt_catch_empty: bolt_empty {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class bolt_catch_reload_move_1: bolt_reload_move_1 {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class bolt_catch_reload_move_2: bolt_reload_move_2 {
selection = "bolt_catch";
axis = "bolt_catch_axis";
};
class magazine_hide
{
type="hide";
source="reloadMagazine";
selection="magazine";
minValue=0.000000;
maxValue=1.00000;
hideValue=0.188;
unhideValue = 0.550;
};
class no_magazine
{
type="hide";
source="hasMagazine";
selection="magazine";
minValue=0.000000;
maxValue=1.00000;
hideValue=0.5;
unhideValue = -1.0;
};
class magazine_reload_move_1
{
type = "translation";
source = "reloadMagazine";
selection = "magazine";
axis = "magazine_axis";
minValue = 0.145;
maxValue = 0.170;
offset0 = 0.0;
offset1 = 0.5;
};
class magazine_reload_move_2: magazine_reload_move_1
{
minValue = 0.573;
maxValue = 0.602;
offset0 = 0.0;
offset1 = -0.5;
};
class muzzleFlashROT
{
type="rotationX";
source="ammoRandom"; //use ammo count as phase for animation
sourceAddress="loop"; //loop when phase out of bounds
selection="muzzleFlash"; //selection we want to rotate
axis=""; //no own axis - center of rotation is computed from selection
centerFirstVertex=true; //use first vertex of selection as center of rotation
minValue=0;
maxValue=4; //rotation angle will be 360/4 = 90 degrees
angle0="rad 0";
angle1="rad 360";
};
class OP_ROT
{
type="rotation";
source="zeroing2"; // use second muzzle zeroing for rotation
sourceAddress="loop"; // loop when phase out of bounds
selection="OP"; // selection we want to rotate
axis="OP_axis"; // has its own axis
minValue=0;
maxValue=3;
angle0="rad 0";
angle1="rad 65";
};
class BackSight_optic
{
type="rotation";
source="hasOptics";
selection="BackSight";
axis="BackSight_axis";
memory=1;
minValue=0.0000000;
maxValue=1.0000000;
angle0=0.000000;
angle1=(rad 90);
};
class ForeSight_optic: BackSight_optic
{
selection="ForeSight";
axis="ForeSight_axis";
angle1=(rad 90);
};
// Rotation of fire mode switch
class safety_mode_rot
{
type = rotation;
source = weaponMode;
selection = "safety";
axis = "safety_axis";
memory = 1;
minValue = 0;
maxValue = 0.25;
angle0 = 0;
angle1 = (rad -90);
};
class rail_protect1
{
type="hide";
source="hasUnderbarrel";
selection="rail_protect_underbarrel";
minValue = 0;
maxValue = 1;
hideValue = 1;
// unHideValue = 0.5;
animPeriod = 0.0;
initPhase = 0.0;
};
class rail_protect2
{
type="hide";
source="hasAccessory";
selection="rail_protect_side";
minValue = 0;
maxValue = 1;
hideValue = 1;
// unHideValue = 0.5;
animPeriod = 0.0;
initPhase = 0.0;
};
};
};
class AMF_416_long: amf_614_long_Base {};
class AMF_416_short: amf_614_long_Base {};
};