Jump to content

Recommended Posts

Hey guys and gals,

 

I've been working on an 120mm mortar of the german armed forces (modified Soltam K6). And I got two problems I hope your guys can help me to fix.

 

1. I can not get the mortar to have a firerange of min 450m to max 6350m. I tweaked around with the minelv and maxelv values but I only get strange results. Are these the right values at all?

 

2. As soon as I change the elevation (in game) by pressing the page up or page down keys the mortar wobbles around through the backblast - sometimes it even flips. How can I fix that?

 

Many thanks in advance.

 

CfgVehicles:

Spoiler

class CfgVehicles
{
    class LandVehicle;
    class StaticWeapon: LandVehicle
    {
        class Turrets
        {
            class MainTurret;
        };
    };
    class StaticMortar: StaticWeapon
    {
        class Turrets: Turrets
        {
            class MainTurret: MainTurret
            {
                class ViewOptics;
            };
        };
    };
    class HdBw_Moerser120mm_Base: StaticMortar
    {
        author="HdBw Modding Team";    
        displayname="Moerser 120mm";
        model="\HdBw_Moerser120mm\HdBw_Moerser120mm";
        transportSoldier=1;
        scope=0;
        cargoAction[]=
        {
            "Mortar_Gunner"
        };
        getInAction="GetInMortar";
        getOutAction="GetOutLow";
        
        editorSubcategory="EdSubcat_Turrets";        
        icon="";        
        picture="";
        UiPicture="";
        cost=200000;
        accuracy=0.25;
        threat[]={1,0.30000001,0.1};
        EPEImpulseDamageCoef=5;        
        mapSize=1.5;
        class Turrets: Turrets
        {
            class MainTurret: MainTurret
            {
                gunnerAction="Mortar_Gunner";
                gunnergetInAction="";
                gunnergetOutAction="";
                weapons[]=
                {
                    "Moerser_120mm"
                };
                elevationMode=1;
                initElev=0;
                minelev=-5;
                maxelev=90;
                initCamElev=0;
                minCamElev=-35;
                maxCamElev=35;
                minTurn=-180;
                maxTurn=180;
                initTurn=0;
                cameraDir="look";
                discreteDistance[]={450,900,1350,1800,2700,3600,4500,5400,6350};
                discreteDistanceCameraPoint[]=
                {
                    "eye"
                };
                discreteDistanceInitIndex=5;
                turretInfoType="RscWeaponRangeArtillery";
                gunnerForceOptics=1;
                memoryPointGunnerOptics="eye";
                gunnerOpticsModel="\A3\Weapons_F\acc\reticle_Mortar_01_F.p3d";
                class ViewOptics: ViewOptics
                {
                    initAngleX=0;
                    minAngleX=-30;
                    maxAngleX=30;
                    initAngleY=0;
                    minAngleY=-100;
                    maxAngleY=100;
                    initFov=0.17399999;
                    minFov=0.0077777999;
                    maxFov=0.14;
                    visionMode[]=
                    {
                        "Normal",
                        "NVG"
                    };
                };
                magazines[]=
                {
                    "1Rnd_120mm_Mo_shells",
                    "1Rnd_120mm_Mo_shells",
                    "1Rnd_120mm_Mo_shells",
                    "1Rnd_120mm_Mo_shells",
                    "1Rnd_120mm_Mo_shells",
                    "1Rnd_120mm_Mo_shells"
                };
                ejectDeadGunner=1;
            };
        };
        class EventHandlers
        {
            fired="_this call (uinamespace getvariable 'BIS_fnc_effectFired');";
        };
        htMin=1;
        htMax=480;
        afMax=0;
        mfMax=0;
        mFact=1;
        tBody=100;
        class DestructionEffects
        {
            class Smoke
            {
                simulation="particles";
                type="WeaponWreckSmoke";
                position="destructionEffect";
                intensity=1;
                interval=1;
                lifeTime=5;
            };
        };
        model="\HdBw_Moerser120mm\HdBw_Moerser120mm";
        artilleryScanner=1;
    };        
    
    class HdBw_Moerser120mm: HdBw_Moerser120mm_Base
    {
        scope=2;
        crewMacro(2,mF1,mC1)
        side=1;
        faction="BLU_F";
        crew="B_Soldier_F";
        availableForSupportTypes[]=
        {
            "Artillery"
        };
    };

 

cfgWeapons

Spoiler

#define RHA(mm,speed) caliber=(mm/((15*speed)/1000));
class Mode_SemiAuto;
class Mode_Burst;

class CfgAmmo
{
    class ShellBase;
    class HdBw_DM61_120m: ShellBase
    {
        hit=340;
        indirectHit=125;
        indirectHitRange=400;
        dangerRadiusHit=1000;
        suppressionRadiusHit=350;
        typicalSpeed=820;
        caliber=12;
        deflecting=0;
        explosive=0.80000001;
        cost=300;
        model="\A3\weapons_f\ammo\shell";
        CraterEffects="ArtyShellCrater";
        ExplosionEffects="MortarExplosion";
        whistleDist=120;
        artilleryLock=1;
        thrust=0;
        timeToLive=180;
        airFriction=0;
        sideairFriction=0;
        soundHit1[]=
        {
            "A3\Sounds_F\arsenal\explosives\shells\Artillery_tank_shell_155mm_explosion_01",
            2.5118864,
            1,
            1900
        };
        soundHit2[]=
        {
            "A3\Sounds_F\arsenal\explosives\shells\Artillery_tank_shell_155mm_explosion_02",
            2.5118864,
            1,
            1900
        };
        soundHit3[]=
        {
            "A3\Sounds_F\arsenal\explosives\shells\Artillery_tank_shell_155mm_explosion_03",
            2.5118864,
            1,
            1900
        };
        soundHit4[]=
        {
            "A3\Sounds_F\arsenal\explosives\shells\Artillery_tank_shell_155mm_explosion_04",
            2.5118864,
            1,
            1900
        };
        multiSoundHit[]=
        {
            "soundHit1",
            0.25,
            "soundHit2",
            0.25,
            "soundHit3",
            0.25,
            "soundHit4",
            0.25
        };
        class CamShakeExplode
        {
            power=31;
            duration=2.4000001;
            frequency=20;
            distance=339.599;
        };
        class CamShakeHit
        {
            power=155;
            duration=0.80000001;
            frequency=20;
            distance=1;
        };
        class CamShakeFire
        {
            power=1.52844;
            duration=2.4000001;
            frequency=20;
            distance=99.599197;
        };
        class CamShakePlayerFire
        {
            power=0.00099999998;
            duration=0.1;
            frequency=20;
            distance=1;
        };
    };
};

class cfgMagazines
{
    class VehicleMagazine;
    class 1Rnd_120mm_Mo_shells: VehicleMagazine
    {
        author="HdBw Modding Team";
        initSpeed=820;
        displayNameShort="DM61 120m";
        scope=2;
        displayName="DM61 120m";
        ammo="HdBw_DM61_120m";
        count=1;
        nameSound="heat";
    };
};

class cfgWeapons
{
    class CannonCore;
    class Moerser_120mm: CannonCore
    {
        scope=1;
        displayname="Moerser_120mm";
        nameSound="CannonCore";
        cursor="mortar";
        cursorAim="EmptyCursor";
        sounds[]=
        {
            "StandardSound"
        };
        class StandardSound
        {
            begin1[]=
            {
                "A3\Sounds_F\arsenal\weapons_static\Mortar\mortar_01",
                1.2589254,
                1,
                250
            };
            begin2[]=
            {
                "A3\Sounds_F\arsenal\weapons_static\Mortar\mortar_02",
                1.2589254,
                1,
                250
            };
            soundBegin[]=
            {
                "begin1",
                0.5,
                "begin2",
                0.5
            };
        };
        reloadSound[]=
        {
            "A3\Sounds_F\arsenal\weapons_static\Mortar\reload_mortar",
            1,
            1,
            20
        };
        reloadMagazineSound[]=
        {
            "A3\Sounds_F\arsenal\weapons_static\Mortar\reload_magazine_Mortar",
            1,
            1,
            20
        };
        soundServo[]=
        {
            "",
            9.9999997e-005,
            1
        };
        minRange=450;
        minRangeProbab=0.69999999;
        midRange=3400;
        midRangeProbab=0.69999999;
        maxRange=6350;
        maxRangeProbab=0.1;
        reloadTime=1.8;
        magazineReloadTime=3.5;
        maxLeadSpeed=100;
        autoReload=0;
        canLock=0;
        magazines[]=
        {
            "1Rnd_120mm_Mo_shells"
        };
        ballisticsComputer=0;
        class GunParticles
        {
            class FirstEffect
            {
                effectName="MortarFired";
                positionName="Usti Hlavne";
                directionName="Konec Hlavne";
            };
        };
        modes[]=
        {
            "Single1"
        };
        class Single1: Mode_SemiAuto
        {
            displayName="Reichweite";
            sounds[]=
            {
                "StandardSound"
            };
            class StandardSound
            {
                begin1[]=
                {
                    "A3\Sounds_F\arsenal\weapons_static\Mortar\mortar_01",
                    1.2589254,
                    1,
                    250
                };
                begin2[]=
                {
                    "A3\Sounds_F\arsenal\weapons_static\Mortar\mortar_02",
                    1.2589254,
                    1,
                    250
                };
                soundBegin[]=
                {
                    "begin1",
                    0.5,
                    "begin2",
                    0.5
                };
            };
            reloadSound[]=
            {
                "A3\Sounds_F\arsenal\weapons_static\Mortar\reload_mortar",
                1,
                1,
                20
            };
            soundServo[]=
            {
                "",
                9.9999997e-005,
                1
            };
            reloadTime=1.8;
            minRange=450;
            midRange=0;
            maxRange=6350;
            artilleryDispersion=1.9;
            artilleryCharge=0.34999999;
        };
    };
};   

 

config.cpp

Spoiler

class CfgPatches
{
    class HdBw_Moerser120mm
    {
        units[]=
        {
            "HdBw_Moerser120mm"
        };
        weapons[]={};
        requiredVersion=0.1;
        requiredAddons[]=
        {
            "A3_Static_F_Gamma","A3_CargoPoses_F","A3_Weapons_F"
        };
    };
};

#define ASSEMBLE_INFO(bagName, tripodName) \
        class assembleInfo \
        { \
                primary = 0; \
            base = ""; \
            assembleTo = ""; \
            dissasembleTo[] = {bagName, tripodName}; \
            displayName = ""; \
        };

#include "basicDefines.hpp"
#include "cfgWeapons.hpp"
#include "cfgVehicles.hpp"

 

Share this post


Link to post
Share on other sites
10 hours ago, EllaElectro said:

 indirectHit=125;

indirectHitRange=400;

Is this supposed to be a nuke?  This results in a 100% kill radius of 1.6km for unarmored infantry... Just saying.

 

 

You only have one firingmode, that is firing with 0.35x the muzzle velocity. So your min and max range will be significantly limited - The ballistic computer (both, the one from the optic that calculates your range, and the 'artillery cheat menu'  from actionmenu) can not calculate solutions for firing angles <= 45°. You need multiple firingmodes with different artillerycharges each to get a wider engagement range.

Also, any artillery in Arma that makes use of the artillery system (using artilleryCharge, Dispersion, and option for ballistic computer) is forced by the game engine to use airfriction=0 (no matter what you set in the config).  So compared to RL, the rounds have much longer range for the same muzzle velocity. So achieving minimum range you would have to shoot at extremely low barrel elevation.

 

For mortar flipping issue, you can increase PhysX and GeoLOD mass.  Another option is available in devbranch currently - changing recoil force of a weapon has been recently added (was hardcoded previously), but i don't remember the exact property name on top of my head. Look into the last devbranch changelogs to find it.

 

Share this post


Link to post
Share on other sites
9 hours ago, x3kj said:

Is this supposed to be a nuke?  This results in a 100% kill radius of 1.6km for unarmored infantry... Just saying.

Yeah I know. I have not started the balancing at all. I wanted to have the mortar work correctly first. Could be problematic with close distant firesupport :D

 

9 hours ago, x3kj said:

You only have one firingmode, that is firing with 0.35x the muzzle velocity. So your min and max range will be significantly limited - The ballistic computer (both, the one from the optic that calculates your range, and the 'artillery cheat menu'  from actionmenu) can not calculate solutions for firing angles <= 45°. You need multiple firingmodes with different artillerycharges each to get a wider engagement range.

Also, any artillery in Arma that makes use of the artillery system (using artilleryCharge, Dispersion, and option for ballistic computer) is forced by the game engine to use airfriction=0 (no matter what you set in the config).  So compared to RL, the rounds have much longer range for the same muzzle velocity. So achieving minimum range you would have to shoot at extremely low barrel elevation.

I'll give it a shot as soon as I find the time. The barrel elevation does not matter for me. I created a virtual barrel in extension of the static one. The visual barrel can be moved to the sides but not up and down. I want to include a mortar reloading animation as soon as the mortar works and that would be kinda diffucult with different barrel angles.

 

9 hours ago, x3kj said:

For mortar flipping issue, you can increase PhysX and GeoLOD mass.

That sounds like it will work.

 

Thanks a lot x3kj!

Share this post


Link to post
Share on other sites

Even if i can't get rid of the wobbling completely it is much better now and at least the mortar does not flip anymore (with ten tons of weight). The range problem is also solved.

Thanks again x3kj

 

 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×