Turret Config Reference: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(added stabilizedInAxes = 4 define but functionality/description yet missing)
(Page format)
Line 1: Line 1:
{{SideTOC|0.9}}
{{Stub}}
{{Stub}}
=Introduction=
OFP used an optional turret class for some, few, models.
OFP used an optional turret class for some, few, models.


ARMA uses a '''Turrets''' (plural) class.  
Arma uses a '''Turrets''' (plural) class.  


Generally, there is only a single "MainTurret" in the turrets class of any model that wants to have one. Or put another way, any model that has any turrets at all, will have a MainTurret class plus additionals if any.
Generally, there is only a single "MainTurret" in the turrets class of any model that wants to have one. Or put another way, any model that has any turrets at all, will have a MainTurret class plus additionals if any.
Line 16: Line 14:


Ie, their parent (or parents) have inherited a Turret class that needs to be ignored (for this model and it's children). It is good practice to put the above statement in your model (if you dont use turrets). A later change by you to a 'better' (tm) parent might introduce unexpected errors if that parent has a turrets class and you didn't want one anyway.
Ie, their parent (or parents) have inherited a Turret class that needs to be ignored (for this model and it's children). It is good practice to put the above statement in your model (if you dont use turrets). A later change by you to a 'better' (tm) parent might introduce unexpected errors if that parent has a turrets class and you didn't want one anyway.


== Creating ==
== Creating ==
Creating any turret (singular) class for your model involves the use of
Creating any turret (singular) class for your model involves the use of


class cfgVehicles
<syntaxhighlight lang="cpp">
{
class CfgVehicles
  class SomeModel //AllVehicles eg
{
  {
class SomeModel // AllVehicles eg
  class NewTurret;   // derive from your base base base class
{
  };
class NewTurret; // derive from your base base base class
  class MyGreatModel:SomeModel // AllVehicles eg
};
  {
class MyGreatModel : SomeModel // AllVehicles eg
  class Turrets
{
  {
class Turrets
    class MainTurret : NewTurret // build (or overwrite) a completely new turret
{
    {
class MainTurret : NewTurret // build (or overwrite) a completely new turret
        ...
{
    };
...
    class MoreTurrets :NewTurret // if any
};
  };
class MoreTurrets : NewTurret // if any
};
{
...
};
};
};
};
</syntaxhighlight>


AllVehicles is the lowest possible base class where you can obtain a pristine NewTurret class. It would be an unusual model to inherit directly from AllVehicles (you might derive NewTurret from there, again, unusual), but you are unlikely to INHERIT AllVehicles directly. More likely, you've got some other generic class that fills in much of the donkey work. For the purposes of obtaining a NewTurret, it matters diddly squat where it comes from. ALL models have one. Used, or not.
AllVehicles is the lowest possible base class where you can obtain a pristine NewTurret class. It would be an unusual model to inherit directly from AllVehicles (you might derive NewTurret from there, again, unusual), but you are unlikely to INHERIT AllVehicles directly. More likely, you've got some other generic class that fills in much of the donkey work. For the purposes of obtaining a NewTurret, it matters diddly squat where it comes from. ALL models have one. Used, or not.
Line 44: Line 50:


There are of course, derivations on the theme, aka
There are of course, derivations on the theme, aka
class cfgVehicles
<syntaxhighlight lang="cpp">
{
class CfgVehicles
  class Ship;
{
  class Boat: Ship
class Ship;
  {
class Boat : Ship
  class Turrets
{
{    // your model has to inerit from somewhere!!!
class Turrets
  class NewTurret;   // create an entirely new animal OR
{    // your model has to inerit from somewhere!!!
  class MainTurret; // twiddle what's aleady there IF THERE !!!
class NewTurret; // create an entirely new animal OR
class MainTurret; // twiddle what's aleady there IF THERE !!!
};
};
class MyGreatModel : Boat
{
class Turrets:Turrets
{
class MainTurret : NewTurret // create an entirely new one OR
class MainTurret : MainTurret // just twiddle a few things from the generic class
{
...
};
};
};
};
};
  };
</syntaxhighlight>
  class MyGreatModel:Boat
  {
  class Turrets:Turrets
  {
    class MainTurret : NewTurret  //create an entirely new one OR
    class MainTurret : MainTurret // just twiddle a few things from the generic class
    {
        ....
    };
  };
};


The bottom line is that, ultimately, your turret will attach a '''NewTurret class''' (whether inherited, or, created right then)
The bottom line is that, ultimately, your turret will attach a '''NewTurret class''' (whether inherited, or, created right then)
Line 76: Line 85:
The following alphabetical sort describes all values that can be set in YOUR derived NewTurret (eg your MainTurret)
The following alphabetical sort describes all values that can be set in YOUR derived NewTurret (eg your MainTurret)


==Notes==
== Notes ==


*In the following list, the default value is declared. Ie the value that comes from the (sometimes inherited) NewTurret class. There should be no requirement to restate a default value unless the class you inherit from has done so.
* In the following list, the default value is declared. Ie the value that comes from the (sometimes inherited) NewTurret class. There should be no requirement to restate a default value unless the class you inherit from has done so.
 
* Some values cannot be known by the NewTurret class and are defaulted to empty. They need you, to fill them in. They are of course string values pertaining to YOUR model.
*Some values cannot be known by the NewTurret class and are defaulted to empty. They need you, to fill them in. They are of course string values pertaining to YOUR model.


Very fortunately, these values (memory points eg), are almost universal. It is a strange and wonderful model indeed that strays from the standard Czech names for these points.
Very fortunately, these values (memory points eg), are almost universal. It is a strange and wonderful model indeed that strays from the standard Czech names for these points.
Line 87: Line 95:




= Alpahbetic =
= Alphabetic =
=A=
=A=


== animationSourceBody= "mainTurret" ==
== animationSourceBody = "mainTurret" ==
[[TokenNameValueTypes|String]]: '''controller''' source name for use with this turret's body in the cfgModels class.
[[TokenNameValueTypes|String]]: '''controller''' source name for use with this turret's body in the cfgModels class.


<syntaxhighlight lang="cpp">
class CfgModels
class CfgModels
{
{
class YourModel: InheritedFromSomeWhere
class YourModel : InheritedFromSomeWhere
{
{
  class Animations:Animations
class Animations : Animations
  {
{
    class MainTurret
class MainTurret
    {
{
    type="rotationY";
type="rotationY";
    source="mainTurret";//The controller that provides input above
source="mainTurret"; // The controller that provides input above
    selection="OtocVez";//The name of the skeleton bone used.
selection="OtocVez"; // The name of the skeleton bone used.
    axis="OsaVeze";//name of the axis in the model.
axis="OsaVeze"; // name of the axis in the model.
};
};
};
};
</syntaxhighlight>


== animationSourceGun= "mainGun" ==
== animationSourceGun = "mainGun" ==
[[TokenNameValueTypes|String]]: Creates a new animation source for use with this turret's gun in the cfgModels class.
[[TokenNameValueTypes|String]]: Creates a new animation source for use with this turret's gun in the cfgModels class.


== animationSourceHatch= "hatchGunner" ==
== animationSourceHatch = "hatchGunner" ==
[[TokenNameValueTypes|String]] :Creates a new animation source for use with this turret's gunner hatch in the cfgModels class.
[[TokenNameValueTypes|String]] :Creates a new animation source for use with this turret's gunner hatch in the cfgModels class.


Line 118: Line 132:
[[TokenNameValueTypes|String]] : Creates animation for camera movement which is independent from the main cannon (see artillery guns, new in A3)
[[TokenNameValueTypes|String]] : Creates animation for camera movement which is independent from the main cannon (see artillery guns, new in A3)


== animationSourceStickX= "" ==
== animationSourceStickX = "" ==
[[TokenNameValueTypes|String]] : Creates animation transferring controller input in X axis. Useful for i.e. joystick in turrets (new in A3) in A3)
[[TokenNameValueTypes|String]] : Creates animation transferring controller input in X axis. Useful for i.e. joystick in turrets (new in A3) in A3)


== animationSourceStickY= "" ==
== animationSourceStickY = "" ==
[[TokenNameValueTypes|String]] : Creates animation transferring controller input in Y axis. Useful for i.e. joystick in turrets (new in A3)
[[TokenNameValueTypes|String]] : Creates animation transferring controller input in Y axis. Useful for i.e. joystick in turrets (new in A3)


=B=
=B=


== body= "mainTurret" ==
== body = "mainTurret" ==
[[TokenNameValueTypes|String]]: This defines the animation to be used for the horizontally moving selection of the turret and must be a model.cfg's '''animation classname'''. The name of the source for the animation is defined via [[Turret_Config_Reference#animationSourceBody.3D_.22mainTurret.22|animationSourceBody]].
[[TokenNameValueTypes|String]]: This defines the animation to be used for the horizontally moving selection of the turret and must be a model.cfg's '''animation classname'''. The name of the source for the animation is defined via [[Turret_Config_Reference#animationSourceBody.3D_.22mainTurret.22|animationSourceBody]].


Line 133: Line 147:
[[TokenNameValueTypes|String]] : unknown. (new in A3) used in conjunction with artillery turrets with detached camera elevation from gun elevation
[[TokenNameValueTypes|String]] : unknown. (new in A3) used in conjunction with artillery turrets with detached camera elevation from gun elevation


== canHideGunner= true ==
== canHideGunner = true ==
[[TokenNameValueTypes#Boolean|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


== castGunnerShadow= false ==
== castGunnerShadow = false ==
[[TokenNameValueTypes#Boolean|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


Line 146: Line 160:


== class HitPoints ==
== class HitPoints ==
class HitPoints
 
{
<syntaxhighlight lang="cpp">
    class HitTurret
class HitPoints
    {
{
    armor = 0.8;
class HitTurret
    material = 51;
{
    name = "turret";
armor = 0.8;
    visual = "turret";
material = 51;
    passThrough = 1;
name = "turret";
    };
visual = "turret";
    class HitGun
passThrough = 1;
    {
};
    armor = 0.6;
class HitGun
    material = 52;
{
    name = "gun";
armor = 0.6;
    visual = "gun";
material = 52;
    passThrough = 1;
name = "gun";
    };
visual = "gun";
  };
passThrough = 1;
};
};
</syntaxhighlight>
 
== class Turrets{} ==
== class Turrets{} ==


Line 170: Line 188:


== class ViewGunner ==
== class ViewGunner ==
class ViewGunner
 
{
<syntaxhighlight lang="cpp">
    initAngleX = 5;
class ViewGunner
    minAngleX = -85;
{
    maxAngleX = 85;
initAngleX = 5;
    initAngleY = 0;
minAngleX = -85;
    minAngleY = -150;
maxAngleX = 85;
    maxAngleY = 150;
initAngleY = 0;
    initFov = 0.7;
minAngleY = -150;
    minFov = 0.42; // FOV of 0.4 is considered as 1x magnification by RSC displays
maxAngleY = 150;
    maxFov = 0.85;
initFov = 0.7;
};
minFov = 0.42; // FOV of 0.4 is considered as 1x magnification by RSC displays
maxFov = 0.85;
};
</syntaxhighlight>


== class ViewOptics ==
== class ViewOptics ==
  class ViewOptics
  {
    initAngleX = 0;
    minAngleX = -30;
    maxAngleX = 30;
    initAngleY = 0;
    minAngleY = -100;
    maxAngleY = 100;
    initFov = 0.3;    // baseline FOV 0.4 / optic FOV 0.3 = x1.33 magnification
    minFov = 0.07; // baseline FOV 0.4 / optic FOV 0.07 = x5.7 magnification
    maxFov = 0.35;  // baseline FOV 0.4 / optic FOV 0.35 = x1.14 magnification
  };


== commanding= 1 ==
<syntaxhighlight lang="cpp">
class ViewOptics
{
initAngleX = 0;
minAngleX = -30;
maxAngleX = 30;
initAngleY = 0;
minAngleY = -100;
maxAngleY = 100;
initFov = 0.3; // baseline FOV 0.4 / optic FOV 0.3  = x1.33 magnification
minFov = 0.07; // baseline FOV 0.4 / optic FOV 0.07 = x5.7  magnification
maxFov = 0.35; // baseline FOV 0.4 / optic FOV 0.35 = x1.14 magnification
};
</syntaxhighlight>
 
== commanding = 1 ==
[[TokenNameValueTypes#Integer|Integer]] The commanding number defines who is in command of the vehicle. The turret with the highest number will be the vehicles commander. If he dies, the crew of the turret with the nearest smaller number will take over command, etc.
[[TokenNameValueTypes#Integer|Integer]] The commanding number defines who is in command of the vehicle. The turret with the highest number will be the vehicles commander. If he dies, the crew of the turret with the nearest smaller number will take over command, etc.


=D=
=D=


==dontCreateAI = false ==
== dontCreateAI = false ==
[[TokenNameValueTypes#Boolean|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


Line 209: Line 233:
=E=
=E=


== elevationMode= 3 ==
== elevationMode = 3 ==
[[TokenNameValueTypes#Integer|Integer]].
[[TokenNameValueTypes#Integer|Integer]].


Line 220: Line 244:
3 - Switchable between manual elevation (1) and auto elevation (2) - with elevationMode = 3 the gun barrel is elevated via the page-up and page-down keys. (new in A3).
3 - Switchable between manual elevation (1) and auto elevation (2) - with elevationMode = 3 the gun barrel is elevated via the page-up and page-down keys. (new in A3).


== ejectDeadGunner= false ==
== ejectDeadGunner = false ==
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunner's body will be ejected when killed.
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunner's body will be ejected when killed.


== elevationAnimSourceSpeed= 1.0f==
== elevationAnimSourceSpeed = 1.0f ==
[[TokenNameValueTypes#|Float]]. Speed of rising/lowering turret. See [[#animationSourceElevation_.3D_.22.22|animationSourceElevation]]
[[TokenNameValueTypes#|Float]]. Speed of rising/lowering turret. See [[#animationSourceElevation_.3D_.22.22|animationSourceElevation]]


=F=
=F=


== forceHideGunner= false ==
== forceHideGunner = false ==
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunner will not be able to turn out.
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunner will not be able to turn out.


=G=
=G=
==  gun= "mainGun" ==
==  gun = "mainGun" ==
[[TokenNameValueTypes#String|String]]: This defines the animation to be used for the verticaly moving selection of the turret and must be a model.cfg's '''animation classname'''. The name of the source for the animation is defined via [[Turret_Config_Reference#animationSourceGun.3D_.22mainGun.22|animationSourceGun]].
[[TokenNameValueTypes#String|String]]: This defines the animation to be used for the verticaly moving selection of the turret and must be a model.cfg's '''animation classname'''. The name of the source for the animation is defined via [[Turret_Config_Reference#animationSourceGun.3D_.22mainGun.22|animationSourceGun]].


== gunAxis ==
== gunAxis = "" ==
[[TokenNameValueTypes#String|String]]<br>
[[TokenNameValueTypes#String|String]]<br>
'''Description:''' Axis selectionname in MemoryLOD (for the gun axis, ie mouse up and down input).
'''Description:''' Axis selectionname in MemoryLOD (for the gun axis, ie mouse up and down input).
  gunAxis="OsaHlavne";
  gunAxis="OsaHlavne";


== gunBeg= "" ==
== gunBeg = "" ==
[[TokenNameValueTypes#String|String]] The name of the barrel's front point in the model.
[[TokenNameValueTypes#String|String]] The name of the barrel's front point in the model.
  '''example''': gunBeg="usti hlavne";
  '''example''': gunBeg="usti hlavne";
== gunEnd= "" ==
== gunEnd = "" ==
[[TokenNameValueTypes|String]] The name of the barrel's rear point in the model.
[[TokenNameValueTypes|String]] The name of the barrel's rear point in the model.
  '''example''': gunEnd="konec hlavne";
  '''example''': gunEnd="konec hlavne";


== gunnerAction= "" ==
== gunnerAction = "" ==
[[TokenNameValueTypes#String|String]] The name of the animation the gunner is using while turned out.
[[TokenNameValueTypes#String|String]] The name of the animation the gunner is using while turned out.


== gunnerCompartments= "Compartment1" ==
== gunnerCompartments = "Compartment1" ==
[[TokenNameValueTypes#String|String]] Only units sharing a compartment can switch seats.
[[TokenNameValueTypes#String|String]] Only units sharing a compartment can switch seats.


==gunnerFireAlsoInInternalCamera= true ==
==gunnerFireAlsoInInternalCamera = true ==
[[TokenNameValueTypes#Boolean|Boolean]]  
[[TokenNameValueTypes#Boolean|Boolean]]  


== gunnerForceOptics= true ==
== gunnerForceOptics = true ==
[[TokenNameValueTypes#Boolean|Boolean]]  Forces the gunner to use optics while turned in.
[[TokenNameValueTypes#Boolean|Boolean]]  Forces the gunner to use optics while turned in.


==gunnerGetInAction= "" ==
==gunnerGetInAction = "" ==
[[TokenNameValueTypes#String|String]] Name of animation used for Get In action
[[TokenNameValueTypes#String|String]] Name of animation used for Get In action


==gunnerGetOutAction= "" ==
==gunnerGetOutAction = "" ==
[[TokenNameValueTypes#String|String]] Name of animation used for Get Out action
[[TokenNameValueTypes#String|String]] Name of animation used for Get Out action


== gunnerInAction= "" ==
== gunnerInAction = "" ==
[[TokenNameValueTypes#String|String]] The name of the animation the gunner is using while turned in.
[[TokenNameValueTypes#String|String]] The name of the animation the gunner is using while turned in.


== gunnerName= "Gunner" ==
== gunnerName = "Gunner" ==
[[TokenNameValueTypes#String|String]] Allows to use a custom string for the name of the turret.
[[TokenNameValueTypes#String|String]] Allows to use a custom string for the name of the turret.


'''example''' gunnerName="Rear Gunner";
'''example''' gunnerName="Rear Gunner";


== gunnerNotSpawned= false ==
== gunnerNotSpawned = false ==
[[TokenNameValueTypes#Boolean|Boolean]] Used in A3 vanilla for Copilot turrets. Difference between gunnerNotSpawned and dontCreateAI is unknown.
[[TokenNameValueTypes#Boolean|Boolean]] Used in A3 vanilla for Copilot turrets. Difference between gunnerNotSpawned and dontCreateAI is unknown.


//Parameter doesn't exist in engine
//Parameter doesn't exist in engine


== gunnerOpticsColor[]= {0,0,0,1} ==
== gunnerOpticsColor[] = {0,0,0,1} ==
[[TokenNameValueTypes#Array|Array]]
[[TokenNameValueTypes#Array|Array]]


== gunnerOpticsEffect[]= {} ==
== gunnerOpticsEffect[] = {} ==
[[TokenNameValueTypes#Array|Array]] Defines the Effects used for the optical view when turned in. Effects correspond to classes defined in CfgOpticsEffect.
[[TokenNameValueTypes#Array|Array]] Defines the Effects used for the optical view when turned in. Effects correspond to classes defined in CfgOpticsEffect.


'''example''' gunnerOpticsEffect[]={"TankGunnerOptics1","OpticsCHAbera1"};
'''example''' gunnerOpticsEffect[]={"TankGunnerOptics1","OpticsCHAbera1"};


== gunnerOpticsModel= "" ==
== gunnerOpticsModel = "" ==
[[TokenNameValueTypes#String|String]] The optics model used when gunner is not turned out.
[[TokenNameValueTypes#String|String]] The optics model used when gunner is not turned out.


  '''example''': gunnerOpticsModel="\ca\Tracked\optika_tank_gunner";
  '''example''': gunnerOpticsModel="\ca\Tracked\optika_tank_gunner";


== gunnerOutFireAlsoInInternalCamera= true ==
== gunnerOutFireAlsoInInternalCamera = true ==
[[TokenNameValueTypes#Boolean|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


== gunnerOutForceOptics= false ==
== gunnerOutForceOptics = false ==
[[TokenNameValueTypes#Boolean|Boolean]] Forces the gunner to use optics while turned out.
[[TokenNameValueTypes#Boolean|Boolean]] Forces the gunner to use optics while turned out.


== gunnerOutOpticsColor[]= {0,0,0,1} ==
== gunnerOutOpticsColor[] = {0,0,0,1} ==
[[TokenNameValueTypes#Array|Array]]
[[TokenNameValueTypes#Array|Array]]


== gunnerOutOpticsEffect[]= {} ==
== gunnerOutOpticsEffect[] = {} ==
[[TokenNameValueTypes#Array|Array]]  
[[TokenNameValueTypes#Array|Array]]  


== gunnerOutOpticsModel= "" ==
== gunnerOutOpticsModel = "" ==
[[TokenNameValueTypes|String]]<br>
[[TokenNameValueTypes|String]]<br>
'''Description:''' The optics model used when gunner is turned out.
'''Description:''' The optics model used when gunner is turned out.
Line 309: Line 333:




== gunnerOutOpticsShowCursor= false ==
== gunnerOutOpticsShowCursor = false ==
[[TokenNameValueTypes#Boolean|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


== gunnerType= "" ==
== gunnerType = "" ==
[[TokenNameValueTypes|String]]<br>
[[TokenNameValueTypes|String]]<br>
'''Description:''' New in A3. The soldier class that is the default crew for this turret. Overwrites the class defined in the CfgVehicle crew=""; token
'''Description:''' New in A3. The soldier class that is the default crew for this turret. Overwrites the class defined in the CfgVehicle crew=""; token
  gunnerType="O_Soldier_F";
  gunnerType="O_Soldier_F";


== gunnerLeftHandAnimName= "" ==
== gunnerLeftHandAnimName = "" ==
[[TokenNameValueTypes|String]]<br>
[[TokenNameValueTypes|String]]<br>
'''Description:''' Defines bone for IK animations for gunner left hand
'''Description:''' Defines bone for IK animations for gunner left hand


== gunnerRightHandAnimName= "" ==
== gunnerRightHandAnimName = "" ==
[[TokenNameValueTypes|String]]<br>
[[TokenNameValueTypes|String]]<br>
'''Description:''' Defines bone for IK animations for gunner right hand
'''Description:''' Defines bone for IK animations for gunner right hand


== gunnerUsesPilotView= false ==
== gunnerUsesPilotView = false ==
[[TokenNameValueTypes#Boolean|Boolean]] The gunner will use the View LOD - Pilot if true.
[[TokenNameValueTypes#Boolean|Boolean]] The gunner will use the View LOD - Pilot if true.


=H=
=H=


== hasGunner= true ==
== hasGunner = true ==
[[TokenNameValueTypes#Boolean|Boolean]] When false, AI and players can't enter the turret from the outside. Players can switch to the turret from inside the vehicle however (if there is an enterable position with the same Compartment).
[[TokenNameValueTypes#Boolean|Boolean]] When false, AI and players can't enter the turret from the outside. Players can switch to the turret from inside the vehicle however (if there is an enterable position with the same Compartment).


== hideWeaponsGunner= true ==
== hideWeaponsGunner = true ==
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunners weapons (his rifle) will not be displayed.
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunners weapons (his rifle) will not be displayed.


=I=
=I=


== InGunnerMayFire= true ==
== InGunnerMayFire = true ==
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunner will be able to fire the turrets weapons while inside the vehicle.
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunner will be able to fire the turrets weapons while inside the vehicle.


== initElev= 0 ==
== initElev = 0 ==
[[TokenNameValueTypes#Degrees|Degrees]] The initial elevation of the gun.
[[TokenNameValueTypes#Degrees|Degrees]] The initial elevation of the gun.
== initTurn= 0 ==
 
== initTurn = 0 ==
[[TokenNameValueTypes#Degrees|Degrees]] The initial turn of the turret.
[[TokenNameValueTypes#Degrees|Degrees]] The initial turn of the turret.
== isCopilot = 0 ==
== isCopilot = 0 ==
== isPersonTurret = 2 ==
== isPersonTurret = 2 ==
Value 1 gives a working turret but only accessible from the inside while 2 enables a person to get into the turret from outside.
Value 1 gives a working turret but only accessible from the inside while 2 enables a person to get into the turret from outside.
Line 351: Line 378:
=L=
=L=


== lockWhenDriverOut= false ==
== lockWhenDriverOut = false ==
[[TokenNameValueTypes#Boolean|Boolean]] If true, the turret can not be moved while the driver is turned out.
[[TokenNameValueTypes#Boolean|Boolean]] If true, the turret can not be moved while the driver is turned out.


== lockWhenVehicleSpeed= -1 ==
== lockWhenVehicleSpeed = -1 ==
[[TokenNameValueTypes#Integers|Integer]] Vehicle speed (in meter per second) at which point the turret will automatically return to a neutral pose (does not match up with "initElev" or "initTurn"). Value of -1 means it will never lock.
[[TokenNameValueTypes#Integers|Integer]] Vehicle speed (in meter per second) at which point the turret will automatically return to a neutral pose (does not match up with "initElev" or "initTurn"). Value of -1 means it will never lock.


== LODTurnedIn= -1 ==
== LODTurnedIn = -1 ==
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Gunner is turned in. Value=-1 seems to default to the standard LOD (for Turret's that is Gunnerview).  Note that LODTurnedIn=VIEW_GUNNER; or similar is not valid - unless you use a #define (see Arma 3 Samples to see how defines work).
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Gunner is turned in. Value=-1 seems to default to the standard LOD (for Turret's that is Gunnerview).  Note that LODTurnedIn=VIEW_GUNNER; or similar is not valid - unless you use a #define (see Arma 3 Samples to see how defines work).


Line 364: Line 391:
The View_Commander LOD is the default for turrets that have "primaryObserver=1;" and "primaryGunner=0;" in their config. The View_Commander LOD can't be accessed manually in any other way.
The View_Commander LOD is the default for turrets that have "primaryObserver=1;" and "primaryGunner=0;" in their config. The View_Commander LOD can't be accessed manually in any other way.


== LODTurnedOut= -1 ==
== LODTurnedOut = -1 ==
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Gunner is turned out. The same rules as with LODTurnedIn apply.
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Gunner is turned out. The same rules as with LODTurnedIn apply.




== LODOpticsIn= -1 ==
== LODOpticsIn = -1 ==
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Gunner is turned in & in optics mode. Value=-1 or 0 default to the standard LOD (for Turret's that is Gunnerview).  Note that LODTurnedIn=VIEW_GUNNER; or similar is not valid - unless you use a #define (see Arma 3 Samples to see how defines work).
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Gunner is turned in & in optics mode. Value=-1 or 0 default to the standard LOD (for Turret's that is Gunnerview).  Note that LODTurnedIn=VIEW_GUNNER; or similar is not valid - unless you use a #define (see Arma 3 Samples to see how defines work).


Line 375: Line 402:
The View_Commander LOD is the default for turrets that have "primaryObserver=1;" and "primaryGunner=0;" in their config. The View_Commander LOD can't be accessed manually in any other way.
The View_Commander LOD is the default for turrets that have "primaryObserver=1;" and "primaryGunner=0;" in their config. The View_Commander LOD can't be accessed manually in any other way.


== LODOpticsOut= -1 ==
== LODOpticsOut = -1 ==
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Gunner is turned out & optics in. The same rules as with LODOpticsIn apply.
[[TokenNameValueTypes#Integers|Integer]] Defines the LOD that is to be used when the Gunner is turned out & optics in. The same rules as with LODOpticsIn apply.


=M=
=M=


== magazines[]= {} ==
== magazines[] = {} ==
[[TokenNameValueTypes|Array]] An array made of all magazines this turret is equipped with.
[[TokenNameValueTypes|Array]] An array made of all magazines this turret is equipped with.


  '''example''' magazines[]={"BigGunMagazine","SmallGunMagazine"};
  '''example''' magazines[]={"BigGunMagazine","SmallGunMagazine"};


== maxElev= 20 ==
== maxElev = 20 ==
[[TokenNameValueTypes#Degrees|Degrees]] The maximum elevation of the gun.
[[TokenNameValueTypes#Degrees|Degrees]] The maximum elevation of the gun.


== maxHorizontalRotSpeed= 1.2 ==
== maxHorizontalRotSpeed = 1.2 ==
[[TokenNameValueTypes|Float]] The maximum horizontal speed of the turret.
[[TokenNameValueTypes|Float]] The maximum horizontal speed of the turret.


Line 395: Line 422:
X = time in seconds to turn 360°
X = time in seconds to turn 360°


== maxTurn= 360 ==
== maxTurn = 360 ==
[[TokenNameValueTypes#Degrees|Degrees] The maximum turn of the turret, unit is deegres.
[[TokenNameValueTypes#Degrees|Degrees]] The maximum turn of the turret, unit is deegres.


== maxVerticalRotSpeed= 1.2 ==
== maxVerticalRotSpeed = 1.2 ==
[[TokenNameValueTypes|Float]] The maximum vertical speed of the turret, unit unknown. Bigger value - bigger rotation speed  
[[TokenNameValueTypes|Float]] The maximum vertical speed of the turret, unit unknown. Bigger value - bigger rotation speed  


== memoryPointsGetInGunner= "" ==
== memoryPointsGetInGunner = "" ==
[[TokenNameValueTypes#Strings|String]]  The name of the get in-point selection for this turret, located in the Memory-LOD of the model.
[[TokenNameValueTypes#Strings|String]]  The name of the get in-point selection for this turret, located in the Memory-LOD of the model.
  '''example''': memoryPointsGetInGunner="pos gunner";
  '''example''': memoryPointsGetInGunner="pos gunner";


== memoryPointsGetInGunnerDir= "" ==
== memoryPointsGetInGunnerDir = "" ==
[[TokenNameValueTypes#Strings|String]]  The name of the dir-point selection for this turret, located in the Memory-LOD of the model. It is used to make the gunner face a special direction while entering the vehicle.
[[TokenNameValueTypes#Strings|String]]  The name of the dir-point selection for this turret, located in the Memory-LOD of the model. It is used to make the gunner face a special direction while entering the vehicle.
  memoryPointsGetInGunnerDir="pos gunner dir";
  memoryPointsGetInGunnerDir="pos gunner dir";


== memoryPointGun= "" ==
== memoryPointGun = "" ==
[[TokenNameValueTypes#Strings|String]] The point in the model where the MG fire of this turret will come from.
[[TokenNameValueTypes#Strings|String]] The point in the model where the MG fire of this turret will come from.
  memoryPointGun="machineGun";
  memoryPointGun="machineGun";


== memoryPointGunnerOptics= "" ==
== memoryPointGunnerOptics = "" ==
[[TokenNameValueTypes#String|String]] The point in the model that defines gunner view point.
[[TokenNameValueTypes#String|String]] The point in the model that defines gunner view point.
  '''example''': memoryPointGunnerOptics="gunnerview";
  '''example''': memoryPointGunnerOptics="gunnerview";


==memoryPointGunnerOutOptics= "" ==
==memoryPointGunnerOutOptics = "" ==
[[TokenNameValueTypes#String|String]]
[[TokenNameValueTypes#String|String]]


== minElev= -4 ==
== minElev = -4 ==
[[TokenNameValueTypes#Degrees|Degrees]] The minimal elevation of the gun.
[[TokenNameValueTypes#Degrees|Degrees]] The minimal elevation of the gun.


== minTurn= -360 ==
== minTurn = -360 ==
[[TokenNameValueTypes#Degrees|Degrees]] The minimal turn of the turret, unit is deegres.
[[TokenNameValueTypes#Degrees|Degrees]] The minimal turn of the turret, unit is degrees.


== missileBeg= "spice rakety" ==
== missileBeg = "spice rakety" ==
[[TokenNameValueTypes#Strings|String]]  
[[TokenNameValueTypes#Strings|String]]  


== missileEnd= "konec rakety" ==
== missileEnd = "konec rakety" ==
[[TokenNameValueTypes#Strings|String]]  
[[TokenNameValueTypes#Strings|String]]  


=O=
=O=


== outGunnerMayFire =false ==
== outGunnerMayFire = false ==
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunner will be able to fire and move(!) the turret while turned out.
[[TokenNameValueTypes#Boolean|Boolean]] If true, the gunner will be able to fire and move(!) the turret while turned out.


Line 441: Line 468:
== primary= 1 ==
== primary= 1 ==
Unknown: ??
Unknown: ??
== primaryGunner= true ==
== primaryGunner = true ==
[[TokenNameValueTypes#Boolean|Boolean]] True if this turret is used by the primary gunner, false else. (!ATT! There can be only ONE primary gunner on a vehicle, else you might get CTD often! If you want to addMagazine smth then it will be ALWAYS on the primaryGunner weapons ONLY!).
[[TokenNameValueTypes#Boolean|Boolean]] True if this turret is used by the primary gunner, false else.
{{Warning | There can be only ONE primary gunner on a vehicle, else you might often get a CTD.<br>
Using [[addMagazine]] will add to the primaryGunner weapons. See [[addMagazineTurret]] ({{arma3}}) for other turrets.}}


== primaryObserver= false ==
== primaryObserver = false ==
[[TokenNameValueTypes#Boolean|Boolean]] True if this turret is used by the primary observer (e.g. tank commander), false else.
[[TokenNameValueTypes#Boolean|Boolean]] True if this turret is used by the primary observer (e.g. tank commander), false else.


==  proxyType= "CPGunner" ==
==  proxyType = "CPGunner" ==
[[TokenNameValueTypes#String|String]]: The proxy type of the turrets gunner, this may be CPGunner or CPCommander. The proxies have to be named according to this setting, so either "proxy:Gunner.XX" or "proxy:Commander.XX".
[[TokenNameValueTypes#String|String]]: The proxy type of the turrets gunner, this may be CPGunner or CPCommander. The proxies have to be named according to this setting, so either "proxy:Gunner.XX" or "proxy:Commander.XX".


== proxyIndex= 1 ==
== proxyIndex = 1 ==
[[TokenNameValueTypes|Integer]]: The proxy index of the turrets gunner. If your proxyType is "CPGunner" and proxyIndex=1, the proxyname must be "proxy:Gunner.01", etc.
[[TokenNameValueTypes|Integer]]: The proxy index of the turrets gunner. If your proxyType is "CPGunner" and proxyIndex=1, the proxyname must be "proxy:Gunner.01", etc.


== playerPosition= 1 ==
== playerPosition = 1 ==
[[TokenNameValueTypes|Integer]]: Player position, used for sound controller "playerPos" - see https://community.bistudio.com/wiki/Arma_3_Sound:_SoundControllers
[[TokenNameValueTypes|Integer]]: Player position, used for sound controller "playerPos" - see https://community.bistudio.com/wiki/Arma_3_Sound:_SoundControllers


=S=
=S=


== selectionFireAnim= "" ==
== selectionFireAnim = "" ==
[[TokenNameValueTypes#Strings|String]]  
[[TokenNameValueTypes#Strings|String]]  


Line 471: Line 500:
[[TokenNameValueTypes#Boolean|Boolean]] If true, turret is considered as Cargoposition
[[TokenNameValueTypes#Boolean|Boolean]] If true, turret is considered as Cargoposition


== soundServo[]= {"",0.003162,1.0} ==
== soundServo[] = {"",0.003162,1.0} ==
[[TokenNameValueTypes|Array]] Sound of the turrets servo, this is played whenever the turret is moving.
[[TokenNameValueTypes|Array]] Sound of the turrets servo, this is played whenever the turret is moving.


Line 483: Line 512:


If you use strings "StabilizedInAxisX" and the like, they won't work unless you create #define 's  in your config.
If you use strings "StabilizedInAxisX" and the like, they won't work unless you create #define 's  in your config.
#define StabilizedInAxesNone 0
<syntaxhighlight lang="cpp">
#define StabilizedInAxisX 1
#define StabilizedInAxesNone 0
#define StabilizedInAxisY 2
#define StabilizedInAxisX 1
#define StabilizedInAxesBoth 3
#define StabilizedInAxisY 2
#define StabilizedInAxesXYZ 4
#define StabilizedInAxesBoth 3
#define StabilizedInAxesXYZ 4
</syntaxhighlight>


== startEngine= true ==
== startEngine = true ==
[[TokenNameValueTypes#Boolean|Boolean]] If true, moving the turret will start the vehicles engine. The engine will stop automatically once the turret stops moving.
[[TokenNameValueTypes#Boolean|Boolean]] If true, moving the turret will start the vehicles engine. The engine will stop automatically once the turret stops moving.


Line 499: Line 530:
  turretAxis="OsaVeze";
  turretAxis="OsaVeze";


== turretFollowFreeLook = 0==
== turretFollowFreeLook = 0 ==
[[TokenNameValueTypes#Float|Float]] If 1, turret is slaved to the gunners viewdirection in freelook. When values is set to 2, it's possible to control turret on weaponless turrets. Value 1 is used in Attack Helicopters for example.
[[TokenNameValueTypes#Float|Float]] If 1, turret is slaved to the gunners viewdirection in freelook. When values is set to 2, it's possible to control turret on weaponless turrets. Value 1 is used in Attack Helicopters for example.


=U=
=U=


== usePip = 0==
== usePip = 0 ==
[[TokenNameValueTypes#Float|Float]] Gunner head movement will rotate the picture-in-picture (PIP) camera instead of the gunner's head within the vehicle.  Used for example in the Blackfish gunner turrets and the Hunter RCWS versions. Since 1.73.141940 it's possible to use usePiP=2, which is going to make gunner following main turret movement - used i.e. for mortar gunner.
[[TokenNameValueTypes#Float|Float]] Gunner head movement will rotate the picture-in-picture (PIP) camera instead of the gunner's head within the vehicle.  Used for example in the Blackfish gunner turrets and the Hunter RCWS versions. Since 1.73.141940 it's possible to use usePiP=2, which is going to make gunner following main turret movement - used i.e. for mortar gunner.


=V=
=V=


== viewGunnerInExternal= false ==
== viewGunnerInExternal = false ==
[[TokenNameValueTypes#Boolean|Boolean]] View gunner in external.
[[TokenNameValueTypes#Boolean|Boolean]] View gunner in external.


== viewGunnerShadow= true ==
== viewGunnerShadow = true ==
[[TokenNameValueTypes#Boolean|Boolean]]
[[TokenNameValueTypes#Boolean|Boolean]]


== viewGunnerShadowDiff= 1.0 ==
== viewGunnerShadowDiff = 1.0 ==
[[TokenNameValueTypes#Float|Float]]
[[TokenNameValueTypes#Float|Float]]


== viewGunnerShadowAmb= 1.0 ==
== viewGunnerShadowAmb = 1.0 ==
[[TokenNameValueTypes#Float|Float]]
[[TokenNameValueTypes#Float|Float]]


Line 524: Line 555:
=W=
=W=


== weapons[]= {} ==
== weapons[] = {} ==
[[TokenNameValueTypes|Array]] An array made of all weapons this turret is armed with.
[[TokenNameValueTypes|Array]] An array made of all weapons this turret is armed with.


'''example''':  weapons[]={"BWMod_L55","BWMod_MG3_veh"};
'''example''':  weapons[]={"BWMod_L55","BWMod_MG3_veh"};


[[Category:ArmA: Addon Configuration]]
[[Category:ArmA: Addon Configuration]]

Revision as of 23:16, 11 March 2020

Template:SideTOC Template:Stub OFP used an optional turret class for some, few, models.

Arma uses a Turrets (plural) class.

Generally, there is only a single "MainTurret" in the turrets class of any model that wants to have one. Or put another way, any model that has any turrets at all, will have a MainTurret class plus additionals if any.

This (often empty) Turrets class is embedded in the class heirarchy of many generic base models. A generic base model == Tank eg. Ie, a generic class that all real tanks inherit. For the given tank (a T80 eg), it is expected, that values will be filled into the (often empty) Turrets class already provided. Some model families (HMMV_Base eg) flesh out this turrets class for all their children, others don't. The principle being, that many child models will inherit a Turrets class whether they want it or not.

As a consequence, many models that don't have turrets require

class Turrets{};

Ie, their parent (or parents) have inherited a Turret class that needs to be ignored (for this model and it's children). It is good practice to put the above statement in your model (if you dont use turrets). A later change by you to a 'better' (tm) parent might introduce unexpected errors if that parent has a turrets class and you didn't want one anyway.


Creating

Creating any turret (singular) class for your model involves the use of

class CfgVehicles
{
	class SomeModel // AllVehicles eg
	{
		class NewTurret; // derive from your base base base class
	};
	class MyGreatModel : SomeModel // AllVehicles eg
	{
		class Turrets
		{
			class MainTurret : NewTurret // build (or overwrite) a completely new turret
			{
				...
			};
			class MoreTurrets : NewTurret // if any
			{
				...
			};
		};
	};
};

AllVehicles is the lowest possible base class where you can obtain a pristine NewTurret class. It would be an unusual model to inherit directly from AllVehicles (you might derive NewTurret from there, again, unusual), but you are unlikely to INHERIT AllVehicles directly. More likely, you've got some other generic class that fills in much of the donkey work. For the purposes of obtaining a NewTurret, it matters diddly squat where it comes from. ALL models have one. Used, or not.


Inheriting

There are of course, derivations on the theme, aka

class CfgVehicles
{
	class Ship;
	class Boat : Ship
	{
		class Turrets
		{     // your model has to inerit from somewhere!!!
			class NewTurret;	// create an entirely new animal OR
			class MainTurret;	// twiddle what's aleady there IF THERE !!!
		};
	};
	class MyGreatModel : Boat
	{
		class Turrets:Turrets
		{
			class MainTurret : NewTurret	// create an entirely new one OR
			class MainTurret : MainTurret	// just twiddle a few things from the generic class
			{
				...
			};
		};
	};
};

The bottom line is that, ultimately, your turret will attach a NewTurret class (whether inherited, or, created right then)


ALL models, ultimately, derive their turret(s), from this one, singular, NewTurret class.

The NewTurret class is embedded in ALL Vehicle classes (via the bin/config.bin). It can be used, or ignored, but it's unconditially there.

The following alphabetical sort describes all values that can be set in YOUR derived NewTurret (eg your MainTurret)

Notes

  • In the following list, the default value is declared. Ie the value that comes from the (sometimes inherited) NewTurret class. There should be no requirement to restate a default value unless the class you inherit from has done so.
  • Some values cannot be known by the NewTurret class and are defaulted to empty. They need you, to fill them in. They are of course string values pertaining to YOUR model.

Very fortunately, these values (memory points eg), are almost universal. It is a strange and wonderful model indeed that strays from the standard Czech names for these points.

In General, an inherited model will have already had these standard Czech names supplied by the parent. So at best, they are *generally* not required to be stated, and at worst, using the 'example' name supplied in the alpabetic list below is a fairly sage bet. (if you haven't got an OctoVez in your model,it's your problem, isn't it)


Alphabetic

A

animationSourceBody = "mainTurret"

String: controller source name for use with this turret's body in the cfgModels class.

class CfgModels
{
	class YourModel : InheritedFromSomeWhere
	{
		class Animations : Animations
		{
			class MainTurret
			{
				type="rotationY";
				source="mainTurret";	// The controller that provides input above
				selection="OtocVez";	// The name of the skeleton bone used.
				axis="OsaVeze";			// name of the axis in the model.
			};
		};
	};
};

animationSourceGun = "mainGun"

String: Creates a new animation source for use with this turret's gun in the cfgModels class.

animationSourceHatch = "hatchGunner"

String :Creates a new animation source for use with this turret's gunner hatch in the cfgModels class.

animationSourceElevation = ""

String : Creates a new animation source to be used for raising/lowering the turret. (new in A3)

animationSourceCamElev = ""

String : Creates animation for camera movement which is independent from the main cannon (see artillery guns, new in A3)

animationSourceStickX = ""

String : Creates animation transferring controller input in X axis. Useful for i.e. joystick in turrets (new in A3) in A3)

animationSourceStickY = ""

String : Creates animation transferring controller input in Y axis. Useful for i.e. joystick in turrets (new in A3)

B

body = "mainTurret"

String: This defines the animation to be used for the horizontally moving selection of the turret and must be a model.cfg's animation classname. The name of the source for the animation is defined via animationSourceBody.

C

cameraDir = ""

String : unknown. (new in A3) used in conjunction with artillery turrets with detached camera elevation from gun elevation

canHideGunner = true

Boolean

castGunnerShadow = false

Boolean

class GunFire: WeaponFireGun{}

class GunClouds: WeaponCloudsGun{}

class MGunClouds: WeaponCloudsMGun{}

These all inherit the default external class

class HitPoints

class HitPoints
{
	class HitTurret
	{
		armor = 0.8;
		material = 51;
		name = "turret";
		visual = "turret";
		passThrough = 1;
	};
	class HitGun
	{
		armor = 0.6;
		material = 52;
		name = "gun";
		visual = "gun";
		passThrough = 1;
	};
};

class Turrets{}

no embedded turret(s)

class ViewGunner

class ViewGunner
{
	initAngleX = 5;
	minAngleX = -85;
	maxAngleX = 85;
	initAngleY = 0;
	minAngleY = -150;
	maxAngleY = 150;
	initFov = 0.7;
	minFov = 0.42; // FOV of 0.4 is considered as 1x magnification by RSC displays
	maxFov = 0.85;
};

class ViewOptics

class ViewOptics
{
	initAngleX = 0;
	minAngleX = -30;
	maxAngleX = 30;
	initAngleY = 0;
	minAngleY = -100;
	maxAngleY = 100;
	initFov = 0.3; // baseline FOV 0.4 / optic FOV 0.3  = x1.33 magnification
	minFov = 0.07; // baseline FOV 0.4 / optic FOV 0.07 = x5.7  magnification
	maxFov = 0.35; // baseline FOV 0.4 / optic FOV 0.35 = x1.14 magnification
};

commanding = 1

Integer The commanding number defines who is in command of the vehicle. The turret with the highest number will be the vehicles commander. If he dies, the crew of the turret with the nearest smaller number will take over command, etc.

D

dontCreateAI = false

Boolean

Don't create AI in this turret

E

elevationMode = 3

Integer.

0 - Default, manual elevation by mouse

1 - Manual elevation by elevUp/Down actions (Page Up/Page Down with default keybinds)

2 - Auto elevation to the aimed position

3 - Switchable between manual elevation (1) and auto elevation (2) - with elevationMode = 3 the gun barrel is elevated via the page-up and page-down keys. (new in A3).

ejectDeadGunner = false

Boolean If true, the gunner's body will be ejected when killed.

elevationAnimSourceSpeed = 1.0f

Float. Speed of rising/lowering turret. See animationSourceElevation

F

forceHideGunner = false

Boolean If true, the gunner will not be able to turn out.

G

gun = "mainGun"

String: This defines the animation to be used for the verticaly moving selection of the turret and must be a model.cfg's animation classname. The name of the source for the animation is defined via animationSourceGun.

gunAxis = ""

String
Description: Axis selectionname in MemoryLOD (for the gun axis, ie mouse up and down input).

gunAxis="OsaHlavne";

gunBeg = ""

String The name of the barrel's front point in the model.

example: gunBeg="usti hlavne";

gunEnd = ""

String The name of the barrel's rear point in the model.

example: gunEnd="konec hlavne";

gunnerAction = ""

String The name of the animation the gunner is using while turned out.

gunnerCompartments = "Compartment1"

String Only units sharing a compartment can switch seats.

gunnerFireAlsoInInternalCamera = true

Boolean

gunnerForceOptics = true

Boolean Forces the gunner to use optics while turned in.

gunnerGetInAction = ""

String Name of animation used for Get In action

gunnerGetOutAction = ""

String Name of animation used for Get Out action

gunnerInAction = ""

String The name of the animation the gunner is using while turned in.

gunnerName = "Gunner"

String Allows to use a custom string for the name of the turret.

example gunnerName="Rear Gunner";

gunnerNotSpawned = false

Boolean Used in A3 vanilla for Copilot turrets. Difference between gunnerNotSpawned and dontCreateAI is unknown.

//Parameter doesn't exist in engine

gunnerOpticsColor[] = {0,0,0,1}

Array

gunnerOpticsEffect[] = {}

Array Defines the Effects used for the optical view when turned in. Effects correspond to classes defined in CfgOpticsEffect.

example gunnerOpticsEffect[]={"TankGunnerOptics1","OpticsCHAbera1"};

gunnerOpticsModel = ""

String The optics model used when gunner is not turned out.

example: gunnerOpticsModel="\ca\Tracked\optika_tank_gunner";

gunnerOutFireAlsoInInternalCamera = true

Boolean

gunnerOutForceOptics = false

Boolean Forces the gunner to use optics while turned out.

gunnerOutOpticsColor[] = {0,0,0,1}

Array

gunnerOutOpticsEffect[] = {}

Array

gunnerOutOpticsModel = ""

String
Description: The optics model used when gunner is turned out.

gunnerOutOpticsModel="\ca\Weapons\optika_empty";


gunnerOutOpticsShowCursor = false

Boolean

gunnerType = ""

String
Description: New in A3. The soldier class that is the default crew for this turret. Overwrites the class defined in the CfgVehicle crew=""; token

gunnerType="O_Soldier_F";

gunnerLeftHandAnimName = ""

String
Description: Defines bone for IK animations for gunner left hand

gunnerRightHandAnimName = ""

String
Description: Defines bone for IK animations for gunner right hand

gunnerUsesPilotView = false

Boolean The gunner will use the View LOD - Pilot if true.

H

hasGunner = true

Boolean When false, AI and players can't enter the turret from the outside. Players can switch to the turret from inside the vehicle however (if there is an enterable position with the same Compartment).

hideWeaponsGunner = true

Boolean If true, the gunners weapons (his rifle) will not be displayed.

I

InGunnerMayFire = true

Boolean If true, the gunner will be able to fire the turrets weapons while inside the vehicle.

initElev = 0

Degrees The initial elevation of the gun.

initTurn = 0

Degrees The initial turn of the turret.

isCopilot = 0

isPersonTurret = 2

Value 1 gives a working turret but only accessible from the inside while 2 enables a person to get into the turret from outside.

L

lockWhenDriverOut = false

Boolean If true, the turret can not be moved while the driver is turned out.

lockWhenVehicleSpeed = -1

Integer Vehicle speed (in meter per second) at which point the turret will automatically return to a neutral pose (does not match up with "initElev" or "initTurn"). Value of -1 means it will never lock.

LODTurnedIn = -1

Integer Defines the LOD that is to be used when the Gunner is turned in. Value=-1 seems to default to the standard LOD (for Turret's that is Gunnerview). Note that LODTurnedIn=VIEW_GUNNER; or similar is not valid - unless you use a #define (see Arma 3 Samples to see how defines work).

Value: -1 or 0 =Default LOD; 1=first resolution LOD; 1000=Gunnerview; 1100=Pilotview; 1200=Cargoview.

The View_Commander LOD is the default for turrets that have "primaryObserver=1;" and "primaryGunner=0;" in their config. The View_Commander LOD can't be accessed manually in any other way.

LODTurnedOut = -1

Integer Defines the LOD that is to be used when the Gunner is turned out. The same rules as with LODTurnedIn apply.


LODOpticsIn = -1

Integer Defines the LOD that is to be used when the Gunner is turned in & in optics mode. Value=-1 or 0 default to the standard LOD (for Turret's that is Gunnerview). Note that LODTurnedIn=VIEW_GUNNER; or similar is not valid - unless you use a #define (see Arma 3 Samples to see how defines work).

Value: -1 or 0 = Default LOD; 1=first resolution LOD; 1000=Gunnerview; 1100=Pilotview; 1200=Cargoview.

The View_Commander LOD is the default for turrets that have "primaryObserver=1;" and "primaryGunner=0;" in their config. The View_Commander LOD can't be accessed manually in any other way.

LODOpticsOut = -1

Integer Defines the LOD that is to be used when the Gunner is turned out & optics in. The same rules as with LODOpticsIn apply.

M

magazines[] = {}

Array An array made of all magazines this turret is equipped with.

example magazines[]={"BigGunMagazine","SmallGunMagazine"};

maxElev = 20

Degrees The maximum elevation of the gun.

maxHorizontalRotSpeed = 1.2

Float The maximum horizontal speed of the turret.

maxHorizontalRotSpeed = "((360/X)/45)";

X = time in seconds to turn 360°

maxTurn = 360

Degrees The maximum turn of the turret, unit is deegres.

maxVerticalRotSpeed = 1.2

Float The maximum vertical speed of the turret, unit unknown. Bigger value - bigger rotation speed

memoryPointsGetInGunner = ""

String The name of the get in-point selection for this turret, located in the Memory-LOD of the model.

example: memoryPointsGetInGunner="pos gunner";

memoryPointsGetInGunnerDir = ""

String The name of the dir-point selection for this turret, located in the Memory-LOD of the model. It is used to make the gunner face a special direction while entering the vehicle.

memoryPointsGetInGunnerDir="pos gunner dir";

memoryPointGun = ""

String The point in the model where the MG fire of this turret will come from.

memoryPointGun="machineGun";

memoryPointGunnerOptics = ""

String The point in the model that defines gunner view point.

example: memoryPointGunnerOptics="gunnerview";

memoryPointGunnerOutOptics = ""

String

minElev = -4

Degrees The minimal elevation of the gun.

minTurn = -360

Degrees The minimal turn of the turret, unit is degrees.

missileBeg = "spice rakety"

String

missileEnd = "konec rakety"

String

O

outGunnerMayFire = false

Boolean If true, the gunner will be able to fire and move(!) the turret while turned out.

P

primary= 1

Unknown: ??

primaryGunner = true

Boolean True if this turret is used by the primary gunner, false else.

There can be only ONE primary gunner on a vehicle, else you might often get a CTD.
Using addMagazine will add to the primaryGunner weapons. See addMagazineTurret (Arma 3) for other turrets.

primaryObserver = false

Boolean True if this turret is used by the primary observer (e.g. tank commander), false else.

proxyType = "CPGunner"

String: The proxy type of the turrets gunner, this may be CPGunner or CPCommander. The proxies have to be named according to this setting, so either "proxy:Gunner.XX" or "proxy:Commander.XX".

proxyIndex = 1

Integer: The proxy index of the turrets gunner. If your proxyType is "CPGunner" and proxyIndex=1, the proxyname must be "proxy:Gunner.01", etc.

playerPosition = 1

Integer: Player position, used for sound controller "playerPos" - see https://community.bistudio.com/wiki/Arma_3_Sound:_SoundControllers

S

selectionFireAnim = ""

String

showgunneroptics

Boolean
Description: ???

showgunneroptics=true;

//Doesn't exist in engine

showAsCargo = false

Boolean If true, turret is considered as Cargoposition

soundServo[] = {"",0.003162,1.0}

Array Sound of the turrets servo, this is played whenever the turret is moving.

stabilizedInAxes = 3

Integer

0 - No stabilization
1 - Gun elevation stabilized
2 - Turret traverse stabilized
3 - Both stabilized
4 - ???

If you use strings "StabilizedInAxisX" and the like, they won't work unless you create #define 's in your config.

#define StabilizedInAxesNone 0
#define StabilizedInAxisX 1
#define StabilizedInAxisY 2
#define StabilizedInAxesBoth 3
#define StabilizedInAxesXYZ 4

startEngine = true

Boolean If true, moving the turret will start the vehicles engine. The engine will stop automatically once the turret stops moving.

T

turretAxis

String
Description: Axis selectionname in MemoryLOD (for the turret axis, ie mouse left and right input).

turretAxis="OsaVeze";

turretFollowFreeLook = 0

Float If 1, turret is slaved to the gunners viewdirection in freelook. When values is set to 2, it's possible to control turret on weaponless turrets. Value 1 is used in Attack Helicopters for example.

U

usePip = 0

Float Gunner head movement will rotate the picture-in-picture (PIP) camera instead of the gunner's head within the vehicle. Used for example in the Blackfish gunner turrets and the Hunter RCWS versions. Since 1.73.141940 it's possible to use usePiP=2, which is going to make gunner following main turret movement - used i.e. for mortar gunner.

V

viewGunnerInExternal = false

Boolean View gunner in external.

viewGunnerShadow = true

Boolean

viewGunnerShadowDiff = 1.0

Float

viewGunnerShadowAmb = 1.0

Float


W

weapons[] = {}

Array An array made of all weapons this turret is armed with.

example: weapons[]={"BWMod_L55","BWMod_MG3_veh"};