本帖最后由 yyxhx 于 2014-10-18 10:17 编辑
作为一个改mod爱好者,本着方便大家的原则,写这么一个教程,其中若有所误,烦请及时提出
排版可能有点乱,将就着看吧。
1.音效
class sfp_mp5_base : Rifle_Base_F {
class FullAuto : Mode_FullAuto {
sounds[] = {"StandardSound", "SilencedSound"};
class BaseSoundModeType {
weaponSoundEffect = "DefaultRifle";
soundClosure[] = {};
};
class StandardSound : BaseSoundModeType {
begin1[] = {"BF3\Carbines\g53\S1.wav", 1, 1, 500};
begin2[] = {"BF3\Carbines\g53\S2.wav", 1, 1, 500};
soundBegin[] = {"begin1", 0.5, "begin2", 0.5};
};
class SilencedSound : BaseSoundModeType {
begin1[] = {"BF3\Carbines\g53\S1_s.wav",1, 1, 500};
begin2[] = {"BF3\Carbines\g53\S2_s.wav", 1, 1, 500};
soundBegin[] = {"begin1", 0.5, "begin2", 0.5};
};
};
changeFireModesSound[] = {"Other_Sounds\FireMode\SMG.wav", 2, 1, 10};
drySound[] = {"Other_Sounds\Dry\SMG.wav", 2, 1, 10};
reloadMagazineSound[] = {"BF3\Submachine_Guns\UMP45\Reload - HK53.wav", 1, 1, 10};
};
在以上的例子中sounds[] = {"StandardSound", "SilencedSound"};指的是所有音效列表,一般情况下写成StandardSound和SilencedSound,当然也可以改成lalala,hahaha,随便什么都可以
于此同时,class StandardSound : BaseSoundModeType class SilencedSound : BaseSoundModeType也需要写
默认情况下,sounds[]中的第一个为一般开火声音,第二个为消音后声音。如果你想做第三种,枪榴弹或消光器的声音,请解包任意支持1.24的带有枪榴弹的mod
changeFireModesSound是按F换开火模式的声音
drySound是没子弹的声音
Closure可以充当第二个begin,写法与功能与begin一致,也就是说closure和begin写一个就够了,写两个两种声音同时播放
soundClosure[] = {};可以实现去除closure声音,begin同理
声音后面会有3个数据,以drySound为例 —— 2, 1, 10};第一个是音量,一般来说,用软件听出的音量和2差不多;中间未知;最后一个是听得到的距离。
2.散布
绝大数mod中都写了:
dispersion = xxx;
这个便是散布大小(散布就是指玩COD盲射时打不准,但在arma中同样会作用到瞄准状态下),值越大散布越大,一般百分位明显,千分位不明显,万分位基本没有【0.01, 0.001, 0.0001】
利用这个你可以定义几个旧到不行的枪,当然需要破旧武器的模型(如A2的M1911有很多人移植,其中就有破的版本和新的版本)
一下就是一个例子,右图中连续开火下成圈状,左图中因垂直后坐力成一条斜线
3.开火模式与AI
武器的开火模式是由modes[]决定,而且最前面的那个便是默认开火模式,如modes[] = {"Single", "FullAuto"};中的Single
让我们把转到class Single : Mode_SemiAuto下
在这个子项中,有时会看到burst = 1;burst指的是按下鼠标的连发数,通常在Burst开火模式下可以看到burst = 3;三连发
#define RangeProbabCoef 1
#define DispersionCoef 1
aiRateOfFire = 0;
aiRateOfFireDistance = 10000;
minRange = 0;
minRangeProbab = RangeProbabCoef * 0.2;
midRange = 300;
midRangeProbab = RangeProbabCoef * 0.4;
maxRange = 2000;
maxRangeProbab = RangeProbabCoef * 0.01;
aiDispersionCoefX = DispersionCoef * 20;
aiDispersionCoefY = DispersionCoef * 25;
啥意思捏?首先解释一下
#define 变量名 值
相当于定义一个变量并赋值,它可以方便你整体调节
aiDispersionCoef指的是ai精准度,0最大
minRange = 0;
minRangeProbab = RangeProbabCoef * 0.2;
midRange = 300;
midRangeProbab = RangeProbabCoef * 0.4;
maxRange = 1200;
我也不知道怎么调
aiRateOfFire = 0;
aiRateOfFireDistance = 10000;
分别指的是每次开火间隔和直线增长的距离(aiRateOfFireDistance 我也不会改)
如果你想要让AI枪法好一点的话,把
aiRateOfFire = 0;
aiRateOfFireDistance = 10000;
minRange = 0;
minRangeProbab = 0.2;
midRange = 300;
midRangeProbab = 0.4;
maxRange = 1200;
maxRangeProbab = 0.01;
aiDispersionCoefX = 0;
aiDispersionCoefY = 0;
复制到任意具体开火模式下(不知道的找看看有没有一样的,覆盖)
4.FOV与武器放大大小
opticsZoomMin = 0.03;
opticsZoomMax = 0.06;
opticsZoomInit = 0.06;
discretefov[] = {0.06, 0.03};
discreteInitIndex = 0;
你可以在瞄准镜下看到这些,也可能在武器下看到
opticsZoom指的是放大比例,a3默认盲射时为0.75,数值越小放大越大,指的是按住鼠标右键放大
discretefov指的是像狙击镜一样按+或-放大缩小,优先于opticsZoom
discreteInitIndex指的是默认值,0代表discretefov中的第一个数值
注意:当opticsZoom三个值不一样,且opticsZoomInit不为士兵的fov(默认0.75)会引发异常情况
主要表现为
1:武器切换到瞄准时先三点一线再放大(其他游戏是同时瞄准同时放大,当三点一线时放大完毕)
2:切换到瞄准时会放大一下再缩小一下
3:切出瞄准同理
|