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

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 5396|回复: 18

[求助] 弹药属性问题,插件制作大神请进

[复制链接]
发表于 2013-8-21 22:06:59 | 显示全部楼层 |阅读模式
我想自己搞一个制导炮弹
比如AH99的B_20mm弹药,不过由于B_20mm的基础是BulletBase,所以游戏中炮弹自身没有动力,所以我不得不将其定义为MissileBase(导弹可以自身产生动力改变飞行方向从而锁定目标)
如下(该炮弹为B_20mm_x)
class CfgAmmo
{
        class Default;
        class MissileCore;
        class MissileBase;
        class BulletCore;
        class BulletBase;
        class B_20mm;
        class B_20mm_x: MissileBase
        {
                hit = 57;
                  indirectHit = 20;
                  indirectHitRange = 0.4;
                  cost = 30;
                  model = "\A3\Weapons_f\Data\bullettracer\tracer_white";
                  tracerScale = 1;
                  tracerStartTime = 0.05;
                  tracerEndTime = 1;
                  nvgOnly = 0;
                maxSpeed =1030;
                  typicalSpeed = 1030;
                visibleFire = 32;
                  audibleFire = 32;
                  visibleFireTime = 4;
                  soundHit[] = {"A3\Sounds_F\weapons\Explosion\gr_explosion_3",3.1622777,1,1300};
                  explosionSoundEffect = "DefaultExplosion";
                  explosive = 0.6;
                  airLock = 1;
                  CraterEffects = "ExploAmmoCrater";
                  explosionEffects = "ExploAmmoExplosion";
                  airFriction = -0.00078;
                  muzzleEffect = "";
                  caliber = 3.8;
                weaponLockSystem = 3;
                  class CamShakeFire
                  {
                          power = 5;
                           duration = 0.5;
                           frequency = 20;
                           distance = 30;
                  };
                irLock = 1;                //可以雷达锁定
                timeToLive = 40;
                maxControlRange = 3000;
        };
        class B_20mm_Tracer_Red_x: B_20mm_x
        {       
                  model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
        };
};

不过问题是使用了这个炮弹后,AH99的机炮不论转到哪个方向,炮弹都只能向前打

只要改回BulletBase就能在射界角内自由射击(不过这样就没有制导攻击能力了)
发表于 2013-8-21 23:21:08 | 显示全部楼层
是不是因为导弹发射后初始状态就是直线的,所以才出现“机炮不论转到哪个方向,炮弹都只能向前打”?我还真没认真看过弹药属性。AH99火箭都是可以制导的,要不你参考一下?M_PG_AT就是AH99火箭的弹药:
class M_PG_AT : MissileBase {
                model = "\A3\Weapons_F\Ammo\Rocket_01_fly_F";
                proxyShape = "\A3\Weapons_F\Ammo\Rocket_01_F";
                hit = 800;
                indirectHit = 20;
                indirectHitRange = 5;
                cost = 500;
                maxSpeed = 720;        // max speed on level road, km/h
                irLock = true;
                laserLock = true;
                airLock = false;
                maxControlRange = 5000;        // max range for manual control, 0 = no control (passive weapon)
                trackOversteer = 1;
                trackLead = 1;
                maneuvrability = 8;
                timeToLive = 20;
                simulationStep = 0.01;
                airFriction = 0.1;
                sideAirFriction = 0.16;
                initTime = 0.002;
                thrustTime = 1.07;
                thrust = 530;
                fuseDistance = 5;
                effectsMissileInit = "MissileDAR1";
                effectsMissile = "missile2";
                whistleDist = 4;
                muzzleEffect = "";
                weaponLockSystem = 2 + 16;
                manualControl = true;
        };
 楼主| 发表于 2013-8-22 00:08:46 | 显示全部楼层
jinj8401 发表于 2013-8-21 23:21
是不是因为导弹发射后初始状态就是直线的,所以才出现“机炮不论转到哪个方向,炮弹都只能向前打”?我还真 ...

我的意思是机炮不论转到哪个方向,定义好的炮弹B_20mm_x都是从机头前方的方向发射出去

如图,不论机炮转到哪,炮弹都只打在直升机头指向的方向

本帖子中包含更多资源

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

x
 楼主| 发表于 2013-8-22 00:09:22 | 显示全部楼层
jinj8401 发表于 2013-8-21 23:21
是不是因为导弹发射后初始状态就是直线的,所以才出现“机炮不论转到哪个方向,炮弹都只能向前打”?我还真 ...


火箭弹不也是以MissileBase为基础的么?
发表于 2013-8-22 00:15:53 | 显示全部楼层
本帖最后由 jinj8401 于 2013-8-22 00:17 编辑
纯洁守护神 发表于 2013-8-22 00:09
火箭弹不也是以MissileBase为基础的么?


是啊,所以让你参考一下。你的意思我明白,如果不是弹药设置问题,就应该是因为你把弹药设置成了导弹,而作为导弹是需要设置发射装置的,你没将机炮设置为发射装置,所以它只能打直线了。
发表于 2013-8-22 00:17:32 | 显示全部楼层
顶楼上~楼上说得对~~就是这个理
 楼主| 发表于 2013-8-22 00:21:10 | 显示全部楼层
jinj8401 发表于 2013-8-22 00:15
是啊,所以让你参考一下。你的意思我明白,如果不是弹药设置问题,就应该是因为你把弹药设置成了导弹, ...

发射装置CannonCore和MissileLauncher都试过了

比如现在
class cfgWeapons
{
        class Default;
        class CannonCore;
        class gatling_20mm: CannonCore{};
        class MissileLauncher;
        class gatling_20mm_x: MissileLauncher
        {.........};
}
之前就是class gatling_20mm_x:gatling_20mm{...}没成功才改成missilelauncher的
结果还是不行
 楼主| 发表于 2013-8-22 00:23:48 | 显示全部楼层
jinj8401 发表于 2013-8-22 00:15
是啊,所以让你参考一下。你的意思我明白,如果不是弹药设置问题,就应该是因为你把弹药设置成了导弹, ...

机炮的完整定义
class gatling_20mm_x: MissileLauncher //之前是cannoncore
        {
                scope = 1;
                  displayName = "$STR_A3_gatling_20mm0";
                  nameSound = "cannon";
                  cursor = "EmptyCursor";
                  cursorAim = "mg";
                  canLock = 1;
                  ballisticsComputer = 2;
                lockingTargetSound[] = {"\A3\Sounds_F\weapons\Rockets\locked_1",0.31622776,1};
                  lockedTargetSound[] = {"\A3\Sounds_F\weapons\Rockets\locked_3",0.31622776,2.5};
                  modes[] = {"manual","close","short","medium","far"};
                holdsterAnimValue = 1;
                weaponLockDelay = 0.2;
                  class GunParticles
                  {
                           class Effect
                           {
                                    effectName = "MachineGun1";
                                    positionName = "Usti hlavne";
                                    directionName = "Konec hlavne";
                           };
                };
                class manual: CannonCore
                  {
                           displayName = "$STR_A3_gatling_20mm_manual0";
                           autoFire = 1;
                           sound[] = {"A3\Sounds_F\weapons\gatling\gatling4",1.1220185,1,1100};
                           weaponSoundEffect = "DefaultRifle";
                           reloadTime = 0.08;
                           dispersion = 0.0025;
                           soundContinuous = 0;
                           showToPlayer = 1;
                           burst = 1;
                           aiRateOfFire = 0.5;
                           aiRateOfFireDistance = 50;
                           minRange = 1;
                           minRangeProbab = 0.01;
                           midRange = 2;
                           midRangeProbab = 0.01;
                           maxRange = 3;
                           maxRangeProbab = 0.01;
                           textureType = "fullAuto";
                  };
                  class close: manual
                  {
                           showToPlayer = 0;
                           burst = 15;
                           aiRateOfFire = 0.25;
                           aiRateOfFireDistance = 400;
                           minRange = 0;
                           minRangeProbab = 0.05;
                           midRange = 200;
                           midRangeProbab = 0.7;
                           maxRange = 400;
                           maxRangeProbab = 0.2;
                  };
                  class short: close
                  {
                           burst = 10;
                           aiRateOfFire = 0.5;
                           aiRateOfFireDistance = 500;
                           minRange = 300;
                           minRangeProbab = 0.2;
                           midRange = 400;
                           midRangeProbab = 0.7;
                           maxRange = 500;
                           maxRangeProbab = 0.2;
                  };
                  class medium: close
                  {
                           burst = 7;
                           aiRateOfFire = 1;
                           aiRateOfFireDistance = 900;
                           minRange = 400;
                           minRangeProbab = 0.2;
                           midRange = 700;
                           midRangeProbab = 0.7;
                           maxRange = 900;
                           maxRangeProbab = 0.2;
                  };
                  class far: close
                  {
                           burst = 4;
                           aiRateOfFire = 1.5;
                           aiRateOfFireDistance = 1500;
                           minRange = 800;
                           minRangeProbab = 0.2;
                          midRange = 1000;
                           midRangeProbab = 0.4;
                           maxRange = 1500;
                           maxRangeProbab = 0.01;
                  };
                magazines[] = {"2000Rnd_20mm_shells","1000Rnd_20mm_shells","300Rnd_20mm_shells","2000Rnd_20mm_shells_x","1000Rnd_20mm_shells_x","300Rnd_20mm_shells_x"};
               
        };

弹匣是
        class VehicleMagazine;
        class 300Rnd_20mm_shells;
        class 300Rnd_20mm_shells_x: 300Rnd_20mm_shells
        {
                scope = 2;
                  displayName = "$STR_A3_CfgMagazines_300Rnd_20mm_shells0";
                  displayNameShort = "$STR_A3_CfgMagazines_300Rnd_20mm_shells_dns";
                  ammo = "B_20mm_x";                //用的就是之前定义的的B_20mm_x炮弹
                  count = 300;
                  initSpeed = 1030;
                  maxLeadSpeed = 300;
                  tracersEvery = 5;
                  nameSound = "cannon";
        };
        class 1000Rnd_20mm_shells_x: 300Rnd_20mm_shells_x
        {
                  displayName = "$STR_A3_CfgMagazines_1000Rnd_20mm_shells0";
                  count = 1000;
                  ammo = "B_20mm_Tracer_Red_x";
        };
        class 2000Rnd_20mm_shells_x: 300Rnd_20mm_shells_x
        {
                  displayName = "$STR_A3_CfgMagazines_2000Rnd_20mm_shells0";
                  count = 2000;
        };
发表于 2013-8-22 00:28:15 | 显示全部楼层
纯洁守护神 发表于 2013-8-22 00:21
发射装置CannonCore和MissileLauncher都试过了

比如现在

顺便问一句:你搞清了”class CfgAmmo、class CfgMagazines和class CfgWeapons {“三者之间的关系了吗?我是没弄明白Ammo和Magazines,Ammo是弹药,Magazines是弹夹?你要想让 gatling_20mm发射你设置的导弹式弹药,我想Magazines你也应该设置一下才合理。
发表于 2013-8-22 00:49:56 | 显示全部楼层
纯洁守护神 发表于 2013-8-22 00:23
机炮的完整定义
class gatling_20mm_x: MissileLauncher //之前是cannoncore
        {

cursorAim = "mg";
class manual: CannonCore
这些还是枪炮啊,你应该看看MissileLauncher组别里的设置。我E文不好,而且没有仔细看过武器弹药设置。我喜欢直接把现有的照搬过来,象你自创新武器弹药,我还真不行。
发表于 2013-8-22 02:39:38 | 显示全部楼层
本帖最后由 fromz 于 2013-8-22 02:42 编辑

不同弹种武器的模拟方式不同,你这个不单是config的问题,还包括模型
定义BulletCore类武器弹药发射的点(火药爆炸力推动的物理弹丸,不管是小口径还是大口径的从5.45毫米到155毫米都一样)
memoryPointGun="ustihlavneL";
定义MissileCore类武器弹药发射的点(有制导的主动力非弹壳内装火药生成的武器,一般都有助推器,如空空导弹,地空导弹,空地反坦克导弹)
memoryPointLMissile="Missile_1";
memoryPointRMissile="Missile_2";
定义RocketCore类武器弹药发射的点(无制导的主动力非弹壳内装火药生成的武器,大部分有助推器,如无控火箭弹)
memoryPointLRocket="Rocket_1";
memoryPointRRocket="Rocket_2";

你的车辆里根本就没定义Missile_1,Missile_2这样的逻辑点,引擎自然默认是你车体0,0,0点位置发射出的武器,并且没定义model.cfg,发射出来的位置不会随你炮塔转动的

Missile是不可能从ustihlavneL发射的,因为一般只有ustihlavneL点跟随炮塔炮管转动,如果你把Missile_1,Missile_2也在model.cfg里面定义与炮杆转动,或者何不简简单单试试memoryPointLMissile="ustihlavneL"; memoryPointRMissile="Usti hlavne";
发表于 2013-8-22 02:50:05 | 显示全部楼层
fromz 发表于 2013-8-22 02:39
不同弹种武器的模拟方式不同,你这个不单是config的问题,还包括模型
定义BulletCore类武器弹药发射的点( ...

老大就是老大,一下就说到了要害!但有个疑问我没搞明白:我修改AA2的A-10时发现A-10的config里竟然没有memoryPoint的任何语句,只在模型的memory层看到有kulomet点是跟武器有关的。难道AA2里的固定翼战机航炮与直升机武器设置完全不同?
发表于 2013-8-22 09:39:27 来自手机 | 显示全部楼层
jinj8401 发表于 2013-8-22 02:50
老大就是老大,一下就说到了要害!但有个疑问我没搞明白:我修改AA2的A-10时发现A-10的config里竟然没有m ...

有关模型记忆点的定义在config应该是有的,只是可能在一个基础config里,以后再制作插件的人就可以直接调用省去定义记忆点的工序,我觉得如果你又能力可以自己定义的。
发表于 2013-8-22 12:11:25 | 显示全部楼层
kongfanxiao101 发表于 2013-8-22 09:39
有关模型记忆点的定义在config应该是有的,只是可能在一个基础config里,以后再制作插件的人就可以直接调 ...

有道理,有空我好好找一下。感谢你的提示。
 楼主| 发表于 2013-8-22 17:55:59 | 显示全部楼层
fromz 发表于 2013-8-22 02:39
不同弹种武器的模拟方式不同,你这个不单是config的问题,还包括模型
定义BulletCore类武器弹药发射的点( ...

谢谢大神

不过目前我没找到ARMA3的AH99 CfgModel方面的定义在哪个PBO里,所以不知如何做起

您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-4-20 00:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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