常用武器Config修改教程
本帖最后由 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 RangeProbabCoef1
#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:切出瞄准同理
好东西 顶帖我来顶帖来了 好教程!受教了!
另外,
aiDispersionCoefX = 0;
aiDispersionCoefY = 0;
这是让ai拥有了武器理论精准的最大值了吧...给敌人狙击枪套一个,想想就觉得可怕啊。 gpgpgpgp 发表于 2014-10-18 10:20
好教程!受教了!
另外,
貌似还有其他的参数影响,因为我现在把所有武器的coef都设为0,但ai并不能做到百发百中 本帖最后由 gpgpgpgp 于 2014-10-18 11:11 编辑
yyxhx 发表于 2014-10-18 10:22
貌似还有其他的参数影响,因为我现在把所有武器的coef都设为0,但ai并不能做到百发百中
应该还和AI本身Skill以及风偏模组有关。
另外,dispersion散布的单位是弧度(BI wiki里说的)。 本帖最后由 chaoduichen 于 2014-10-18 19:09 编辑
gpgpgpgp 发表于 2014-10-18 11:07
应该还和AI本身Skill以及风偏模组有关。
另外,dispersion散布的单位是弧度(BI wiki里说的)。
好像武器定义里有针对AI的,会影响AI的射击选择和射程选择 留名待学,非常感谢。 正想學做槍,學習了 非常好的枪械CONFIG修改教程 我来补充说明一下吧,arma3 武器的 config 定义从初代闪点行动开始模式就基本是一样的。
#define RangeProbabCoef1
#define DispersionCoef 1
首先它定义了 RangeProbabCoef 值为1DispersionCoef 值为1 这么做是为了编写方便,只要记住这个名字就行了,以后调整参数不需要一个个去修改直接在 define 里调试即可。
aiRateOfFire = 10;
aiRateOfFireDistance = 1000;
这组参数定义 ai 从1000米到0米的射击速率。随着目标距离的减小,射击间隔由10逐渐缩短。10是 ai 最低的射击频率。
minRange = 0;
minRangeProbab = RangeProbabCoef * 0.2;
midRange = 300;
midRangeProbab = RangeProbabCoef * 0.4;
maxRange = 2000;
maxRangeProbab = RangeProbabCoef * 0.01;
这组参数定义 ai 在近,中,远距离使用此弹药开火的可能性,有些 ai 会装备2种武器。即使同一种武器也有不同的发射模式例如单发/点射/全自动。min/mid/maxRangeProbab 越高,ai 在这个距离使用这种弹药的机率越高。
同时也定义了这种弹药的最大射程。
举例来说,AKM 有两种射击模式,单发和全自动。
单发的弹药模式设为:
minRange = 0;
minRangeProbab = RangeProbabCoef * 0.2;
midRange = 100;
midRangeProbab = RangeProbabCoef * 0.4;
maxRange =300;
maxRangeProbab = RangeProbabCoef * 0.1;
全自动的弹药模式设为:
minRange = 0;
minRangeProbab = RangeProbabCoef * 0.9;
midRange = 50;
midRangeProbab = RangeProbabCoef * 0.6;
maxRange =100;
maxRangeProbab = RangeProbabCoef * 0.05;
则意味着ai会在300米开始尝试使用单发模式射击目标,在100米距离尝试连发模式射击目标。另外在50米距离内都更倾向于使用连发模式射击。
aiDispersionCoefX = DispersionCoef * 20;
aiDispersionCoefY = DispersionCoef * 25;
这里是指ai使用该武器时 ai 对此武器的瞄准偏差。aiDispersionCoefX 指 X 轴,aiDispersionCoefY 指 Y 轴。另外还要注意武器本身也有 dispersion 散布值。
另外声音后面会有3个数据的第二个是音高,也就是音调高度。默认为1。
在 ofp/arma 里武器的性能定义由两个 class 组成,一个是弹药,一个是武器枪支。其中武器的各种模式对应了不同的弹药定义。
ai射程,威力,飞行速度,击中物体的声音等由弹药定义决定。
开枪声音,枪口初速度,枪支后坐力,射速,枪支精度散布值,ai的射击速率和射击精度由武器定义决定。
页:
[1]