Sound: ExampleWeaponConfig – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
(added info on cfgPatches)
(formatting)
Line 1: Line 1:
<nowiki>
<code>
 
//cfgPatches is the class that that gives your addon it's identity. More info in the [[CfgPatches]] page.
class CfgPatches //cfgPatches is the class that that gives your addon it's identity, more info on cfgPatches parameters can be found on the relevant community wiki page.  
class CfgPatches
{
{
class ThisIsMyAddon
class TAG_ThisIsMyAddon
{
{
units[] = {};
units[] = {};
weapons[] = {};
weapons[] = {};
requiredVersion = 0.1;  
requiredAddons[] = {"A3_Weapons_F","A3_Sounds_F","A3_Sounds_F_Mark"};
requiredAddons[] = {"A3_Weapons_F","A3_Sounds_F","A3_Sounds_F_Mark"};
    /*
/*
    requiredAddons is important. It kind of answers the question "What addons do I load before loading this one?"
requiredAddons is important. It kind of answers the question "What addons do I load before loading this one?"
If your addon will overwrite certain data from the original arma3 config (that is mostly the case
If your addon will overwrite certain data from the original arma3 config (that is mostly the case
    with sound/asset REPLACEMENTS) you need to put the cfgPatches class here that contains the information that you are about to
with sound/asset REPLACEMENTS) you need to put the cfgPatches class here that contains the information that you are about to
    overwrite. For example most arma3 sounds are defined in a config that's cfgPatches class is "A3_Sounds_F". So if you want to
overwrite. For example most arma3 sounds are defined in a config that's cfgPatches class is "A3_Sounds_F". So if you want to
    overwrite data from there you need to put it into the requiredAddons array. If you want to change vehicle sounds, look in which cfgPatches they are configured
overwrite data from there you need to put it into the requiredAddons array. If you want to change vehicle sounds, look in which
    and add that to requiredAddons.
cfgPatches they are configured and add that to requiredAddons.
    */
*/
version = "0.01"; //not sure what this does, just leave it as it is
requiredVersion = 0.1;
author[] = {"Megagoth1702"}; //Your alias
version = "0.01"; //optional: internal version number
authorUrl = "URL"; //URL to your website/online presence
author = "Megagoth1702"; //optional: your alias
authorUrl = "URL"; //optional: URL to your website/online presence
};
};
};
};
</code>


<code>
class cfgSoundShaders //detailed Infos on cfgSoundShaders can be found in the relevant wiki pages
class cfgSoundShaders //detailed Infos on cfgSoundShaders can be found in the relevant wiki pages
{
{
//###################################### SHOTS ######################################
//###################################### SHOTS ######################################
class yourRifle_Closure_SoundShader
class TAG_Your_Rifle_Closure_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}}; //you can use wav/wss/ogg, ogg will have a small delay before playback (not too good for weapons/explosions)
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki> //you can use wav/wss/ogg, ogg will have a small delay before playback (not too good for weapons/explosions)
volume = 0.4466836; //more info on this and other soundShader parameters are in the relevant wiki pages on soundShaders
volume = 0.4466836; //more info on this and other soundShader parameters are in the relevant wiki pages on soundShaders
range = 5;
range = 5;
};
};
class yourRifle_closeShot_SoundShader
class TAG_Your_Rifle_closeShot_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = 1.0;
volume = 1.0;
range = 50;
range = 50;
rangeCurve = "closeShotCurve";
rangeCurve = "closeShotCurve";
};
};
class yourRifle_midShot_SoundShader
class TAG_Your_Rifle_midShot_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = 0.7943282;
volume = 0.7943282;
range = 1800;
range = 1800;
rangeCurve[] = {{0,0.2},{50,1},{300,0},{1800,0}};
rangeCurve[] = {{0,0.2},{50,1},{300,0},{1800,0}};
};
};
class yourRifle_distShot_SoundShader
class TAG_Your_Rifle_distShot_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = 1.0;
volume = 1.0;
range = 1800;
range = 1800;
rangeCurve[] = {{0,0},{50,0},{300,1},{1800,1}};
rangeCurve[] = {{0,0},{50,0},{300,1},{1800,1}};
};
};
 
//###################################### TAILS ######################################
//###################################### TAILS ######################################
class TAG_Your_Rifle_tailInterior_SoundShader
 
class yourRifle_tailInterior_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "interior";
volume = "interior";
range = 500;
range = 500;
limitation = 0;
limitation = 0;
};
};
class yourRifle_tailTrees_SoundShader
class TAG_Your_Rifle_tailTrees_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "(1-interior/1.4)*trees/3";
volume = "(1-interior/1.4)*trees/3";
range = 1800;
range = 1800;
limitation = 1;
limitation = 1;
};
};
class yourRifle_tailForest_SoundShader
class TAG_Your_Rifle_tailForest_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "(1-interior/1.4)*forest/3";
volume = "(1-interior/1.4)*forest/3";
range = 1800;
range = 1800;
limitation = 1;
limitation = 1;
};
};
class yourRifle_tailMeadows_SoundShader
class TAG_Your_Rifle_tailMeadows_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "(1-interior/1.4)*(meadows/2 max sea/2)/3";
volume = "(1-interior/1.4)*(meadows/2 max sea/2)/3";
range = 1800;
range = 1800;
limitation = 1;
limitation = 1;
};
};
class yourRifle_tailHouses_SoundShader
class TAG_Your_Rifle_tailHouses_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "(1-interior/1.4)*houses/3";
volume = "(1-interior/1.4)*houses/3";
range = 1200;
range = 1200;
limitation = 1;
limitation = 1;
};
};
class yourRifle_silencerShot_SoundShader
class TAG_Your_Rifle_silencerShot_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = 1.0;
volume = 1.0;
range = 150;
range = 150;
rangeCurve = "closeShotCurve";
rangeCurve = "closeShotCurve";
};
};
class yourRifle_silencerTailForest_SoundShader
class TAG_Your_Rifle_silencerTailForest_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "(1-interior/1.4)*forest/3";
volume = "(1-interior/1.4)*forest/3";
range = 150;
range = 150;
Line 107: Line 106:
limitation = 1;
limitation = 1;
};
};
class yourRifle_silencerTailHouses_SoundShader
class TAG_Your_Rifle_silencerTailHouses_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "(1-interior/1.4)*houses/3";
volume = "(1-interior/1.4)*houses/3";
range = 150;
range = 150;
Line 115: Line 114:
limitation = 1;
limitation = 1;
};
};
class yourRifle_silencerTailInterior_SoundShader
class TAG_Your_Rifle_silencerTailInterior_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "interior";
volume = "interior";
range = 150;
range = 150;
Line 123: Line 122:
limitation = 1;
limitation = 1;
};
};
class yourRifle_silencerTailMeadows_SoundShader
class TAG_Your_Rifle_silencerTailMeadows_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "(1-interior/1.4)*(meadows/2 max sea/2)/3";
volume = "(1-interior/1.4)*(meadows/2 max sea/2)/3";
range = 150;
range = 150;
Line 131: Line 130:
limitation = 1;
limitation = 1;
};
};
class yourRifle_silencerTailTrees_SoundShader
class TAG_Your_Rifle_silencerTailTrees_SoundShader
{
{
samples[] = {{"path\to\sound.wav",1}};
<nowiki>samples[] = {{"path\to\sound.wav",1}};</nowiki>
volume = "(1-interior/1.4)*trees/3";
volume = "(1-interior/1.4)*trees/3";
range = 150;
range = 150;
Line 140: Line 139:
};
};
};
};
</code>


<code>
class cfgSoundSets //on more info about soundSets look at the relevant wiki pages
class cfgSoundSets //on more info about soundSets look at the relevant wiki pages
{
{
class Your_Rifle_Shot_SoundSet
class TAG_Your_Rifle_Shot_SoundSet
{
{
soundShaders[] = {"yourRifle_Closure_SoundShader","yourRifle_closeShot_SoundShader","yourRifle_midShot_SoundShader","yourRifle_distShot_SoundShader","yourRifle_tailInterior_SoundShader"};
soundShaders[] = {"TAG_Your_Rifle_Closure_SoundShader","TAG_Your_Rifle_closeShot_SoundShader","TAG_Your_Rifle_midShot_SoundShader","TAG_Your_Rifle_distShot_SoundShader","TAG_Your_Rifle_tailInterior_SoundShader"};
volumeFactor = 1.6;
volumeFactor = 1.6;
volumeCurve = "InverseSquare2Curve";
volumeCurve = "InverseSquare2Curve";
Line 154: Line 155:
loop = 0;
loop = 0;
};
};
class Your_Rifle_Tail_SoundSet
class TAG_Your_Rifle_Tail_SoundSet
{
{
soundShaders[] = {"yourRifle_tailTrees_SoundShader","yourRifle_tailForest_SoundShader","yourRifle_tailMeadows_SoundShader","yourRifle_tailHouses_SoundShader"};
soundShaders[] = {"TAG_Your_Rifle_tailTrees_SoundShader","TAG_Your_Rifle_tailForest_SoundShader","TAG_Your_Rifle_tailMeadows_SoundShader","TAG_Your_Rifle_tailHouses_SoundShader"};
volumeFactor = 1;
volumeFactor = 1;
volumeCurve = "InverseSquare2Curve";
volumeCurve = "InverseSquare2Curve";
Line 168: Line 169:
};
};
};
};
</code>


<code>
//###################################### GENERAL MODES FOR INHERITANCE ######################################
//###################################### GENERAL MODES FOR INHERITANCE ######################################
class Mode_SemiAuto; //sooner or later in weapon modding you are going to need to inherit from these classes so why not just put them here for future reference?
//sooner or later in weapon modding you are going to need to inherit from these classes so why not just put them here for future reference?
 
class Mode_SemiAuto;
class Mode_Burst;
class Mode_Burst;
class Mode_FullAuto;
class Mode_FullAuto;
class BaseSoundModeType;


class cfgWeapons
class cfgWeapons
{
{
Rifle_Base_F;
class arifle_MX_Base_F: Rifle_Base_F
class arifle_MX_Base_F: Rifle_Base_F
{
{
Line 181: Line 189:
{
{
sounds[] = {"StandardSound","SilencedSound"};
sounds[] = {"StandardSound","SilencedSound"};
class BaseSoundModeType;
class StandardSound: BaseSoundModeType
class StandardSound: BaseSoundModeType
{
{
soundSetShot[] = {"Your_Rifle_Shot_SoundSet","Your_Rifle_Tail_SoundSet"};
soundSetShot[] = {"TAG_Your_Rifle_Shot_SoundSet","TAG_Your_Rifle_Tail_SoundSet"};
};
};
class SilencedSound: BaseSoundModeType
class SilencedSound: BaseSoundModeType
{
{
soundSetShot[] = {"Your_Rifle_Shot_SoundSet","Your_Rifle_Tail_SoundSet"}; //this is wrong, obviously you would create your own silenced versions of soundShaders & sets and assign the SETS here
//this is wrong, obviously you would create your own silenced versions of soundShaders & sets and assign the SETS here
soundSetShot[] = {"TAG_Your_Rifle_Shot_SoundSet","TAG_Your_Rifle_Tail_SoundSet"};
};
};
};
};
Line 194: Line 202:
{
{
sounds[] = {"StandardSound","SilencedSound"};
sounds[] = {"StandardSound","SilencedSound"};
class BaseSoundModeType;
class StandardSound: BaseSoundModeType
class StandardSound: BaseSoundModeType
{
{
soundSetShot[] = {"Your_Rifle_Shot_SoundSet","Your_Rifle_Tail_SoundSet"};
soundSetShot[] = {"TAG_Your_Rifle_Shot_SoundSet","TAG_Your_Rifle_Tail_SoundSet"};
};
};
class SilencedSound: BaseSoundModeType
class SilencedSound: BaseSoundModeType
{
{
soundSetShot[] = {"Your_Rifle_Shot_SoundSet","Your_Rifle_Tail_SoundSet"}; //this is wrong, obviously you would create your own silenced versions of soundShaders & sets and assign the SETS here
//this is wrong, obviously you would create your own silenced versions of soundShaders & sets and assign the SETS here
soundSetShot[] = {"TAG_Your_Rifle_Shot_SoundSet","TAG_Your_Rifle_Tail_SoundSet"};
};
};
};
};
};
};
};
};
</code>

Revision as of 13:37, 13 June 2016

//cfgPatches is the class that that gives your addon it's identity. More info in the CfgPatches page. class CfgPatches { class TAG_ThisIsMyAddon { units[] = {}; weapons[] = {}; requiredAddons[] = {"A3_Weapons_F","A3_Sounds_F","A3_Sounds_F_Mark"}; /* requiredAddons is important. It kind of answers the question "What addons do I load before loading this one?" If your addon will overwrite certain data from the original arma3 config (that is mostly the case with sound/asset REPLACEMENTS) you need to put the cfgPatches class here that contains the information that you are about to overwrite. For example most arma3 sounds are defined in a config that's cfgPatches class is "A3_Sounds_F". So if you want to overwrite data from there you need to put it into the requiredAddons array. If you want to change vehicle sounds, look in which cfgPatches they are configured and add that to requiredAddons. */ requiredVersion = 0.1; version = "0.01"; //optional: internal version number author = "Megagoth1702"; //optional: your alias authorUrl = "URL"; //optional: URL to your website/online presence }; };

class cfgSoundShaders //detailed Infos on cfgSoundShaders can be found in the relevant wiki pages { //###################################### SHOTS ###################################### class TAG_Your_Rifle_Closure_SoundShader { samples[] = {{"path\to\sound.wav",1}}; //you can use wav/wss/ogg, ogg will have a small delay before playback (not too good for weapons/explosions) volume = 0.4466836; //more info on this and other soundShader parameters are in the relevant wiki pages on soundShaders range = 5; }; class TAG_Your_Rifle_closeShot_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = 1.0; range = 50; rangeCurve = "closeShotCurve"; }; class TAG_Your_Rifle_midShot_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = 0.7943282; range = 1800; rangeCurve[] = {{0,0.2},{50,1},{300,0},{1800,0}}; }; class TAG_Your_Rifle_distShot_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = 1.0; range = 1800; rangeCurve[] = {{0,0},{50,0},{300,1},{1800,1}}; }; //###################################### TAILS ###################################### class TAG_Your_Rifle_tailInterior_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "interior"; range = 500; limitation = 0; }; class TAG_Your_Rifle_tailTrees_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "(1-interior/1.4)*trees/3"; range = 1800; limitation = 1; }; class TAG_Your_Rifle_tailForest_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "(1-interior/1.4)*forest/3"; range = 1800; limitation = 1; }; class TAG_Your_Rifle_tailMeadows_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "(1-interior/1.4)*(meadows/2 max sea/2)/3"; range = 1800; limitation = 1; }; class TAG_Your_Rifle_tailHouses_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "(1-interior/1.4)*houses/3"; range = 1200; limitation = 1; }; class TAG_Your_Rifle_silencerShot_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = 1.0; range = 150; rangeCurve = "closeShotCurve"; }; class TAG_Your_Rifle_silencerTailForest_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "(1-interior/1.4)*forest/3"; range = 150; rangeCurve[] = {{0,1},{150,0.3}}; limitation = 1; }; class TAG_Your_Rifle_silencerTailHouses_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "(1-interior/1.4)*houses/3"; range = 150; rangeCurve[] = {{0,1},{150,0}}; limitation = 1; }; class TAG_Your_Rifle_silencerTailInterior_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "interior"; range = 150; rangeCurve[] = {{0,1},{50,0.3},{150,0}}; limitation = 1; }; class TAG_Your_Rifle_silencerTailMeadows_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "(1-interior/1.4)*(meadows/2 max sea/2)/3"; range = 150; rangeCurve[] = {{0,1},{150,0.3}}; limitation = 1; }; class TAG_Your_Rifle_silencerTailTrees_SoundShader { samples[] = {{"path\to\sound.wav",1}}; volume = "(1-interior/1.4)*trees/3"; range = 150; rangeCurve[] = {{0,1},{150,0.3}}; limitation = 1; }; };

class cfgSoundSets //on more info about soundSets look at the relevant wiki pages { class TAG_Your_Rifle_Shot_SoundSet { soundShaders[] = {"TAG_Your_Rifle_Closure_SoundShader","TAG_Your_Rifle_closeShot_SoundShader","TAG_Your_Rifle_midShot_SoundShader","TAG_Your_Rifle_distShot_SoundShader","TAG_Your_Rifle_tailInterior_SoundShader"}; volumeFactor = 1.6; volumeCurve = "InverseSquare2Curve"; sound3DProcessingType = "WeaponMediumShot3DProcessingType"; distanceFilter = "weaponShotDistanceFreqAttenuationFilter"; spatial = 1; doppler = 0; loop = 0; }; class TAG_Your_Rifle_Tail_SoundSet { soundShaders[] = {"TAG_Your_Rifle_tailTrees_SoundShader","TAG_Your_Rifle_tailForest_SoundShader","TAG_Your_Rifle_tailMeadows_SoundShader","TAG_Your_Rifle_tailHouses_SoundShader"}; volumeFactor = 1; volumeCurve = "InverseSquare2Curve"; frequencyRandomizer = 1; sound3DProcessingType = "WeaponMediumShotTail3DProcessingType"; distanceFilter = "weaponShotTailDistanceFreqAttenuationFilter"; spatial = 1; doppler = 0; loop = 0; soundShadersLimit = 2; }; };

//###################################### GENERAL MODES FOR INHERITANCE ###################################### //sooner or later in weapon modding you are going to need to inherit from these classes so why not just put them here for future reference?

class Mode_SemiAuto; class Mode_Burst; class Mode_FullAuto;

class BaseSoundModeType;

class cfgWeapons { Rifle_Base_F; class arifle_MX_Base_F: Rifle_Base_F { class Single: Mode_SemiAuto { sounds[] = {"StandardSound","SilencedSound"}; class StandardSound: BaseSoundModeType { soundSetShot[] = {"TAG_Your_Rifle_Shot_SoundSet","TAG_Your_Rifle_Tail_SoundSet"}; }; class SilencedSound: BaseSoundModeType { //this is wrong, obviously you would create your own silenced versions of soundShaders & sets and assign the SETS here soundSetShot[] = {"TAG_Your_Rifle_Shot_SoundSet","TAG_Your_Rifle_Tail_SoundSet"}; }; }; class FullAuto: Mode_FullAuto { sounds[] = {"StandardSound","SilencedSound"}; class StandardSound: BaseSoundModeType { soundSetShot[] = {"TAG_Your_Rifle_Shot_SoundSet","TAG_Your_Rifle_Tail_SoundSet"}; }; class SilencedSound: BaseSoundModeType { //this is wrong, obviously you would create your own silenced versions of soundShaders & sets and assign the SETS here soundSetShot[] = {"TAG_Your_Rifle_Shot_SoundSet","TAG_Your_Rifle_Tail_SoundSet"}; }; }; }; };