中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 4559|回复: 11

[教程] 常用武器Config修改教程

[复制链接]
发表于 2014-10-18 06:33:17 | 显示全部楼层 |阅读模式
本帖最后由 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:切出瞄准同理


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入VME

x
发表于 2014-10-18 07:21:41 | 显示全部楼层
好东西
发表于 2014-10-18 10:10:49 | 显示全部楼层
顶帖我来顶帖来了
发表于 2014-10-18 10:20:15 | 显示全部楼层
好教程!受教了!

另外,

aiDispersionCoefX = 0;
aiDispersionCoefY = 0;

这是让ai拥有了武器理论精准的最大值了吧...给敌人狙击枪套一个,想想就觉得可怕啊。
 楼主| 发表于 2014-10-18 10:22:13 | 显示全部楼层
gpgpgpgp 发表于 2014-10-18 10:20
好教程!受教了!

另外,

貌似还有其他的参数影响,因为我现在把所有武器的coef都设为0,但ai并不能做到百发百中
发表于 2014-10-18 11:07:51 | 显示全部楼层
本帖最后由 gpgpgpgp 于 2014-10-18 11:11 编辑
yyxhx 发表于 2014-10-18 10:22
貌似还有其他的参数影响,因为我现在把所有武器的coef都设为0,但ai并不能做到百发百中


应该还和AI本身Skill以及风偏模组有关。

另外,dispersion散布的单位是弧度(BI wiki里说的)。
发表于 2014-10-18 12:00:28 | 显示全部楼层
本帖最后由 chaoduichen 于 2014-10-18 19:09 编辑
gpgpgpgp 发表于 2014-10-18 11:07
应该还和AI本身Skill以及风偏模组有关。

另外,dispersion散布的单位是弧度(BI wiki里说的)。


好像武器定义里有针对AI的,会影响AI的射击选择和射程选择

点评

呃,LZ发的就是。回贴前先看帖。:P  发表于 2014-10-18 18:03
发表于 2014-10-19 22:16:52 | 显示全部楼层
留名待学,非常感谢。
发表于 2014-10-20 19:01:36 | 显示全部楼层
正想學做槍,學習了
发表于 2016-2-15 07:08:26 | 显示全部楼层
非常好的枪械CONFIG修改教程
发表于 2016-2-29 23:46:35 | 显示全部楼层
我来补充说明一下吧,arma3 武器的 config 定义从初代闪点行动开始模式就基本是一样的。

        #define RangeProbabCoef  1
        #define DispersionCoef 1

首先它定义了 RangeProbabCoef 值为1  DispersionCoef 值为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的射击速率和射击精度由武器定义决定。
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-4-16 23:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表