【武器制作问题】AI手上的机枪不能全速开火是不是引擎的限制
arma3吧
全部回复
仅看楼主
level 13
小巢大2u 楼主
事因我最近制作了一把MG42机枪 射速设定为reloadTime=0.039999999; 这串数字代表的是非常高的射速
在我本人的测试下射速方面一切正常,但当AI使用这把机枪时AI射击的频率却非常奇怪 AI会以每一发子弹0.1-0.2秒的间隔开火 这也导致了这把射速非常高的枪在AI的使用下反而变低了很多的奇怪现象
经过大量的测试证实这跟武器config的class Far,class medium之类的AI射击模式设定毫无关系 甚至似乎跟任何代码都没有关系 所以我就好奇这是不是一个引擎方面的问题?请问有没有人有相关经验可以解答一下小弟我的疑问?
2023年01月17日 03点01分 1
level 13
我推断是引擎的问题,这代ai手里拿着全自动武器都很少连发,基本都在单点,而且还有很奇怪的一点,在编辑器中,偶尔会发生很奇怪的问题,比如说拿着机枪的ai,你作为该ai开始游戏,机枪的射速就是枪支本身的属性射速,而使用别的ai开始,等死掉之后切换成拿着机枪的ai,有概率卡出另一种奇怪的模式,部分机枪射速会变得极快,就像是现实的机枪射速一样,而且这个bug在切换过一次设计模式后就消失了,会变回枪支原本的属性射速
2023年01月17日 12点01分 2
切换射击模式,就是按f那个键,打错字了
2023年01月17日 12点01分
@吃瓜瓜的群众🌻 问题就是啊 ifa3和fow里面的mg42 AI用着却可以高速连射 而我的AI虽也能连射但射速就是低了一截 我现在怀疑是ifa3和fow用了什么脚本解决的
2023年01月17日 12点01分
@小巢大2u 我猜测应该是的,属性相近的机枪,来源不同模组的话,在ai手里射速可能会有很大差别,何况是有的枪,在玩家手里和ai手里射速竟然不一样,应该就是用了一些脚本解决的
2023年01月17日 12点01分
level 13
我觉得要不就是游戏本身引擎导致的,要不就是ai的那些加强模组导致的这个问题
2023年01月17日 12点01分 3
level 12
AI开火行为是要独立写的,是一个专门射击次数和射速,AI开火只会以这个模式开火,你发现的bug就是模组作者忘记写玩家禁用导致的。有时候AI会在开火后到一瞬间收枪奔跑,但是这时候你会发现枪口实际朝向地面,是因为任何射击模式不可停止。由此可看出AI是使用武器的一个特殊射击模式,具体可在wiki里查询关键词cfgWeapons
2023年01月17日 13点01分 4
level 13
小巢大2u 楼主
@SF034
对 你说的应该是这个吧 这些理论上就是用来定义AI射击频率和模式的代码 其中每一行代码我都研究过 但还是不行 AI开火依然是一卡一卡的 具体可以帮忙看一下我的视频演示
class Far: Full
{
aiBurstTerminable=1;
showToPlayer=0;
burst=3;
burstRangeMax=12;
aiRateOfFire=4;
aiRateOfFireDispersion=3;
aiRateOfFireDistance=600;
minRange=300;
minRangeProbab=0.64999998;
midRange=400;
midRangeProbab=0.25;
maxRange=500;
maxRangeProbab=0.050000001;
};
class Medium: Full
{
aiBurstTerminable=1;
showToPlayer=0;
autoFire=1;
burst=4;
burstRangeMax=12;
aiRateOfFire=0.000000001;
aiRateOfFireDispersion=2;
aiRateOfFireDistance=300;
minRange=100;
minRangeProbab=0.75;
midRange=200;
midRangeProbab=0.69999999;
maxRange=300;
maxRangeProbab=0.2;
};
class Short: Medium
{
showToPlayer=0;
autoFire=1;
aiRateOfFire=0.000000001;
aiRateOfFireDistance=50;
minRange=10;
minRangeProbab=0.050000001;
midRange=50;
midRangeProbab=0.5;
maxRange=100;
maxRangeProbab=0.039999999;
};
这是玩家使用下的MG42,射速无问题
ht[呼~]tps://w[呼~]ww.bilibili.[呼~]com/video/BV1ZY4[呼~]1197Zo/?vd_source=d8887c411[呼~]d452f97901e31625b57a398
这是AI使用下的MG42,射速有问题
htt[泪]ps:[泪]//http://www.bilibili.[泪]com/video/BV16v4y1[泪]17dm/?spm_id_from=333.999.0.0&vd_source=d8887c411d452f97901e31625b57a398
2023年01月17日 14点01分 5
level 13
试试把每个mode的aiRateOfFireDispersion调到1
还是觉得卡就调到0,再把aiRateOfFire调到0
IFA的机枪就是所有mode里前者是1,後者是0
因为AI射速是aiRateOfFire + aiRateOfFireDispersion * Random<0,1>
把俩调到0就是AI理论射速的最大限度了
实际上仍会有些微卡,那是因为AI每发射击都会微调些许,不像玩家一样按着不放
尤其是远程,越远越常微调(IFA的机枪也是这样)。在近身(通常10米左右)AI就会全自动射击,因为咋瞄都在凖星里面
真想啥情况AI都全自动倒是有一个方法,就是把每个隐藏mode里burst的数值调到弹匣数,那AI一开火就会按最大射速打空整個弹匣(显然这不是一个好方法)
2023年01月17日 20点01分 6
亲测这些数值对AI的射速没有影响 只是会影响AI间隔多久打一梭子而已 我怀疑ifa3和fow的mg42是用了什么火力压制功能之类的脚本来达到AI高射速的
2023年01月18日 01点01分
就是说都改成0会让AI连射个好几十发 但射速也还是比玩家用的慢一截 就像我上面视频那样 但是ifa3和fow的mg42却没有这个问题 这才是让我最困惑的地方
2023年01月18日 01点01分
level 13
今天再看了下IFA MG42的config。没错,你猜对了,(只有)MG42调动了脚本
不过不是用火力压制之类的,是用setWeaponReloadingTime和forceWeaponFire这倆直接改变射速的指令
基本上config上的寫法就是下面那个样子
class cfgWeapons
{
class Default
{
class Eventhandlers;
};
class RifleCore: Default
{
};
class Rifle: RifleCore
{
};
class Rifle_Base_F: Rifle
{
};
class Rifle_Long_Base_F: Rifle_Base_F
{
};
class LIB_LMG: Rifle_Long_Base_F
{
};
class LIB_MG42: LIB_LMG
{
class Eventhandlers: Eventhandlers
{
class WW2_mg42_ROF
{
fired="_this spawn WW2_fnc_mgROF;";
};
};
};
};
至於mgROF可以在ww2_core_f_ww2_system_infantry_f.pbo里面的mgROF找到
FOW的MG42也是加个Fired的Eventhandlers,就是脚本名称也叫mgROF
脚本里面的细节,只能说要理解和修改真的很费时间,用就完事了
2023年01月18日 06点01分 7
你真的是我的救世主 我哭死[泪]
2023年01月18日 06点01分
话说大佬有部分解包fow吗?
2023年01月18日 06点01分
@小巢大2u 没有,FOW我是直接用游戏里的config viewer看的(其实我今天才下了FOW……)
2023年01月18日 07点01分
@AndNowIKillYou 原来如此
2023年01月18日 08点01分
level 13
小巢大2u 楼主
@AndNowIKillYou
多亏了这位大佬 目前MG42的射速问题解决了[泪] 此贴可以终结了 我是真的哭死
2023年01月18日 07点01分 8
1