User Tools

Site Tools


ofp:modeling:cfgvehicles_configref

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ofp:modeling:cfgvehicles_configref [2007/07/06 04:58] – created cfgvehicles_configref initial page snakemanofp:modeling:cfgvehicles_configref [2024/07/31 15:57] (current) – links added. snakeman
Line 1: Line 1:
-====== CfgVehicles Config Reference ======+====== OFP CfgVehicles Config Reference ====== 
 + 
 +[[https://www.pmctactical.org/forum/viewforum.php?f=43|OFP Forum]], [[:ofp|OFP Home]], [[ofp:file_formats|OFP File Formats]], [[ofp:tools|OFP Tools]], [[ofp:missions|OFP Missions]], [[ofp:modeling|OFP 3D Modeling]], [[ofp:terrain|OFP Terrain]] 
 + 
 +**Operation Flashpoint (OFP)** aka ArmA: Cold War Assault (CWA)
  
 **TokenName Config.cpp Reference** **TokenName Config.cpp Reference**
Line 17: Line 21:
 </code> </code>
  
-This article details the token-names specifically available within the CfgVehicles class of a Config.cpp. The primary focus of this document is the TokenNames used for various aspects of controlling models within **Addons**. +This article details the token-names specifically available within the CfgVehicles class of a Config.cpp. The primary focus of this document is the TokenNames used for various aspects of controlling models within **Addons**.
  
 Unlike a command reference, where one meaning fits all, Token names are **not** verbs. The meaning of the name, it's effect, can be different, depending on context. You are advised therefore, that these names, as listed, apply //only// to the CfgVehicles class. They may, or may not, have identical meanings (if found), in other classes. Unlike a command reference, where one meaning fits all, Token names are **not** verbs. The meaning of the name, it's effect, can be different, depending on context. You are advised therefore, that these names, as listed, apply //only// to the CfgVehicles class. They may, or may not, have identical meanings (if found), in other classes.
Line 29: Line 33:
 [[ofp:modeling:tokennamevaluetypes|Boolean]]: An [[ofp:modeling:tokennamevaluetypes|Integer]] value of 0 or 1. This is a 'convenience type' in humanly readable text. The engine stores it as an integer. [[ofp:modeling:tokennamevaluetypes|Boolean]]: An [[ofp:modeling:tokennamevaluetypes|Integer]] value of 0 or 1. This is a 'convenience type' in humanly readable text. The engine stores it as an integer.
  
-[[ofp:modeling:tokennamevaluetypes|String]]: Any string value. +[[ofp:modeling:tokennamevaluetypes|String]]: Any string value.
  
-For elite only (not ArmA, or OFP) //ALL STRINGS MUST BE ENCLOSED IN QUOTES//+For elite only (not ArmA, or OFP) //ALL STRINGS MUST BE ENCLOSED IN QUOTES//.
  
 [[ofp:modeling:tokennamevaluetypes|Array]]: An array []={...} [[ofp:modeling:tokennamevaluetypes|Array]]: An array []={...}
Line 141: Line 145:
   driverAction =      "ManActShipDriver";   driverAction =      "ManActShipDriver";
   gunnerAction =      "ManActJeepGunner";   gunnerAction =      "ManActJeepGunner";
-  commanderInAction = "ManActTestDriver"; +  commanderInAction = "ManActTestDriver";
   driverInAction =    "ManActM113Driver";   driverInAction =    "ManActM113Driver";
   gunnerInAction =    "ManActM1A1Gunner";   gunnerInAction =    "ManActM1A1Gunner";
Line 207: Line 211:
 Determines how easy an object is to identify. Smaller values are easier to detect. Determines how easy an object is to identify. Smaller values are easier to detect.
  
-Typically, buildings are 0.2, vehicles, 0.5 +Typically, buildings are 0.2, vehicles, 0.5
  
 **A value of 1000 causes the underlying class to be identified instead.** Eg bushy trees, pink trees and yellow trees, can all be 'identified' as "trees". The description "bushy trees" is then used solely when Editing. See [[#VehicleClass]] **A value of 1000 causes the underlying class to be identified instead.** Eg bushy trees, pink trees and yellow trees, can all be 'identified' as "trees". The description "bushy trees" is then used solely when Editing. See [[#VehicleClass]]
Line 231: Line 235:
  
 ====== acceleration ====== ====== acceleration ======
-**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|Float]]: metres per second +**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|Float]]: metres per second
  
 <code> <code>
Line 245: Line 249:
  
 ====== ambient ====== ====== ambient ======
-Float [[ofp:modeling:tokennamevaluetypes|Array]]: +Float [[ofp:modeling:tokennamevaluetypes|Array]]:
  
 <code> <code>
Line 269: Line 273:
  
 ====== animPeriod ====== ====== animPeriod ======
-[[ofp:modeling:tokennamevaluetypes|float]]: Seconds. +[[ofp:modeling:tokennamevaluetypes|float]]: Seconds.
  
 This TokenName is generally used inside AnimationSources class (ArmA only). It's use in OFP:R is as follows This TokenName is generally used inside AnimationSources class (ArmA only). It's use in OFP:R is as follows
Line 301: Line 305:
  armor = 3; // man  armor = 3; // man
  armor = 10; // motorcycle  armor = 10; // motorcycle
- armor = 20; // a small car + armor = 20; // a small car
  armor = 15..60; // aircraft  armor = 15..60; // aircraft
  armor = 150; // buildings  armor = 150; // buildings
Line 373: Line 377:
 ====== audible ====== ====== audible ======
 [[ofp:modeling:tokennamevaluetypes|float]]: Default Value 1 [[ofp:modeling:tokennamevaluetypes|float]]: Default Value 1
-  +
 <code> <code>
   audible = .05; //man   audible = .05; //man
Line 431: Line 435:
 ====== C ====== ====== C ======
 ====== ...CanSee ====== ====== ...CanSee ======
-[[ofp:modeling:tokennamevaluetypes|Integer]] +[[ofp:modeling:tokennamevaluetypes|Integer]]
  
-Used on vehicles that have zoom. +Used on vehicles that have zoom.
 1 = Radar;\\ 1 = Radar;\\
 2 = Eye;\\ 2 = Eye;\\
Line 474: Line 478:
  camouflage = 1; // man  camouflage = 1; // man
  camouflage = 4; // trucks  camouflage = 4; // trucks
- camouflage = 8; // tanks + camouflage = 8; // tanks
 </code> </code>
  
Line 547: Line 551:
 <code> <code>
  castCargoShadow = false;  castCargoShadow = false;
- castCommanderShadow = false; + castCommanderShadow = false;
  castDriverShadow = false;  castDriverShadow = false;
  castGunnerShadow = true;  castGunnerShadow = true;
Line 601: Line 605:
  
 ====== color ====== ====== color ======
-Float [[ofp:modeling:tokennamevaluetypes|Array]]: of floats. +Float [[ofp:modeling:tokennamevaluetypes|Array]]: of floats.
  
 <code> <code>
Line 641: Line 645:
 </code> </code>
  
-this token is always associated in a weapon or magazine couplet, inside a TransportWeapons, or +this token is always associated in a weapon or magazine couplet, inside a TransportWeapons, or
 TransportMagazines class. TransportMagazines class.
  
Line 712: Line 716:
   destrType = "DestructTree"; // smoke, crushing, falls over   destrType = "DestructTree"; // smoke, crushing, falls over
   destrType = "DestructTent"; // smoke, crushing, flattens   destrType = "DestructTent"; // smoke, crushing, flattens
-  destrType = "DestructMan";  +  destrType = "DestructMan";
   destrType = "DestructDefault"; // =building   destrType = "DestructDefault"; // =building
 </code> </code>
Line 879: Line 883:
  
 <code> <code>
-   Reflectors ::LandVehicle +   Reflectors ::LandVehicle
    {    {
     ambient[] = {0.1,0.1,0.1,1.0};     ambient[] = {0.1,0.1,0.1,1.0};
Line 971: Line 975:
  
 <code> <code>
- envelope[] = + envelope[] =
               0.000000,               0.000000,
                 0.000000,                 0.000000,
Line 1029: Line 1033:
  
 ====== forceSupply ====== ====== forceSupply ======
-[[ofp:modeling:tokennamevaluetypes|Boolean]] : Default +[[ofp:modeling:tokennamevaluetypes|Boolean]] : Default
  
 <code> <code>
Line 1046: Line 1050:
 </code> </code>
  
-One or both X Z values are used to keep objects separated (in meters) depending on +One or both X Z values are used to keep objects separated (in meters) depending on
 wedge, echelon, V,single line, fomations. wedge, echelon, V,single line, fomations.
  
Line 1116: Line 1120:
  
 <code> <code>
- class GunClouds:WeaponCloudsGun + class GunClouds:WeaponCloudsGun
  {  {
    cloudletGrowUp = 0.200000;    cloudletGrowUp = 0.200000;
Line 1189: Line 1193:
  
 ====== gunnerOutOptics... ====== ====== gunnerOutOptics... ======
-**[[arma:tokennames|ArmA]]** +**[[arma:tokennames|ArmA]]**
 [[ofp:modeling:tokennamevaluetypes|String]] [[ofp:modeling:tokennamevaluetypes|String]]
  
Line 1217: Line 1221:
  
 ====== ...Height ====== ====== ...Height ======
-**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|Integer]]: +**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|Integer]]:
  
 <code> <code>
- minHeight = 5; //Min height in metres above sealevel. + minHeight = 5; //Min height in metres above sealevel.
  maxHeight = 50;//max height above sea level.  maxHeight = 50;//max height above sea level.
  avgHeight = 10;  avgHeight = 10;
Line 1226: Line 1230:
  
 ====== has... ====== ====== has... ======
-[[ofp:modeling:tokennamevaluetypes|Bool]]: +[[ofp:modeling:tokennamevaluetypes|Bool]]:
  
 <code> <code>
Line 1241: Line 1245:
  
 ====== ...HeadTurnAI ====== ====== ...HeadTurnAI ======
-[[ofp:modeling:tokennamevaluetypes|Integer]] Degrees +[[ofp:modeling:tokennamevaluetypes|Integer]] Degrees
  
 <code> <code>
Line 1251: Line 1255:
 [[ofp:modeling:tokennamevaluetypes|String]] [[ofp:modeling:tokennamevaluetypes|Array]]: Default none. [[ofp:modeling:tokennamevaluetypes|String]] [[ofp:modeling:tokennamevaluetypes|Array]]: Default none.
  
-Here you can define selections on the model, which are not shown at mission startup. This is usefull for creating variations of one model, where the different selections are left out with hiddenSelections. (ex: Soldiers have the hidden selection "medic", as they should not have a red cross at their body): +Here you can define selections on the model, which are not shown at mission startup. This is usefull for creating variations of one model, where the different selections are left out with hiddenSelections. (ex: Soldiers have the hidden selection "medic", as they should not have a red cross at their body):
  
-Aside from this, the hidden selections are used for runtime texture assignment. Every element in the hidden selection-array corresponds to an index, with the first element being 0. +Aside from this, the hidden selections are used for runtime texture assignment. Every element in the hidden selection-array corresponds to an index, with the first element being 0.
  
 <code> <code>
Line 1365: Line 1369:
   insideSoundCoef = 0.05; //air vehicels are 2%   insideSoundCoef = 0.05; //air vehicels are 2%
 </code> </code>
-  +
 ====== interval ====== ====== interval ======
 [[ofp:modeling:tokennamevaluetypes|Float]]: This TokenName is used inside the [[#Smoke Class]] [[ofp:modeling:tokennamevaluetypes|Float]]: This TokenName is used inside the [[#Smoke Class]]
Line 1425: Line 1429:
   isMan = 1;   isMan = 1;
 </code> </code>
- +
 Defined within the man class Defined within the man class
  
Line 1470: Line 1474:
  
 ====== landingSpeed ====== ====== landingSpeed ======
-[[ofp:modeling:tokennamevaluetypes|Integer]]: Default 0 Kph. +[[ofp:modeling:tokennamevaluetypes|Integer]]: Default 0 Kph.
  
 <code> <code>
Line 1487: Line 1491:
   };   };
 </code> </code>
 +
  
 ====== M ====== ====== M ======
 +
 +
 +====== maneuvrability ======
 +
 +[[Float]]
 +
 +Description: Declares maneuvrability of guided missiles.
 +
 +<code>
 +manueuvrability=30;
 +</code>
  
 ====== magazine ====== ====== magazine ======
Line 1503: Line 1519:
  
 <code> <code>
- class TransportMagazines + class TransportMagazines
  {  {
-     class _xx_M16 +     class _xx_M16
      {      {
         magazine = M16;         magazine = M16;
         count = 30*1;         count = 30*1;
      };      };
-     class _xx_M60 +     class _xx_M60
      {      {
         ......         ......
      };      };
-     class _xx_PK +     class _xx_PK
      {      {
         ......         ......
Line 1530: Line 1546:
 [[ofp:modeling:tokennamevaluetypes|Float]]: Default Value = 10 (meters). [[ofp:modeling:tokennamevaluetypes|Float]]: Default Value = 10 (meters).
  
-Used for the map editor to show the [[#icon|icon]] associated with this model class. +Used for the map editor to show the [[#icon|icon]] associated with this model class.
  
 There is no x y component to this, the meaurement units are meters. There is no x y component to this, the meaurement units are meters.
Line 1579: Line 1595:
   max = 60 / 3.6;   max = 60 / 3.6;
 </code> </code>
- +
 Note for readability, these values are //normally// expressed as strings which the engine itself will convert. Note for readability, these values are //normally// expressed as strings which the engine itself will convert.
  
Line 1585: Line 1601:
  
 ====== memoryPointExhaust... ====== ====== memoryPointExhaust... ======
-**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|String]]: +**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|String]]:
  
 <code> <code>
Line 1593: Line 1609:
  
 ====== memoryPointGun ====== ====== memoryPointGun ======
-**[[arma:tokennames|ArmA]]** //[[ofp:modeling:tokennamevaluetypes|String]]:// +**[[arma:tokennames|ArmA]]** //[[ofp:modeling:tokennamevaluetypes|String]]://
  
 <code> <code>
Line 1600: Line 1616:
  
 ====== memoryPointGunnerOptics ====== ====== memoryPointGunnerOptics ======
-**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|String]] +**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|String]]
  
 <code> <code>
Line 1607: Line 1623:
  
 ====== memoryPointGunnerOutOptics ====== ====== memoryPointGunnerOutOptics ======
-**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|String]] +**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|String]]
  
 <code> <code>
Line 1614: Line 1630:
  
 ====== memoryPoint...Missile ====== ====== memoryPoint...Missile ======
-**[[arma:tokennames|ArmA]]** //[[ofp:modeling:tokennamevaluetypes|String]]:// +**[[arma:tokennames|ArmA]]** //[[ofp:modeling:tokennamevaluetypes|String]]://
  
 <code> <code>
Line 1622: Line 1638:
  
 ====== memoryPoint...Rocket ====== ====== memoryPoint...Rocket ======
-**[[arma:tokennames|ArmA]]** //[[ofp:modeling:tokennamevaluetypes|String]]:// +**[[arma:tokennames|ArmA]]** //[[ofp:modeling:tokennamevaluetypes|String]]://
  
 <code> <code>
Line 1692: Line 1708:
  
 <code> <code>
- model = "\AddonName\anyp3d(.p3d)"; + model = "\AddonName\anyp3d(.p3d)";
 </code> </code>
  
Line 1726: Line 1742:
  
 ====== name ====== ====== name ======
-[[ofp:modeling:tokennamevaluetypes|String]]: +[[ofp:modeling:tokennamevaluetypes|String]]:
  
 <code> <code>
Line 1749: Line 1765:
 <code> <code>
   nameSound = crew;   nameSound = crew;
-  nameSound = target; +  nameSound = target;
   nameSound = tank;   nameSound = tank;
   nameSound = house;   nameSound = house;
Line 1809: Line 1825:
 ====== ...OpticsColor ====== ====== ...OpticsColor ======
 Float [[ofp:modeling:tokennamevaluetypes|Array]] : Default  {0,0,0,1}; Float [[ofp:modeling:tokennamevaluetypes|Array]] : Default  {0,0,0,1};
- +
 <code> <code>
   driverOpticsColor[] = {0,0,0,1};   driverOpticsColor[] = {0,0,0,1};
Line 1827: Line 1843:
 ====== gunnerOpticsShowCursor ====== ====== gunnerOpticsShowCursor ======
 [[ofp:modeling:tokennamevaluetypes|Bool]] [[ofp:modeling:tokennamevaluetypes|Bool]]
- +
 <code> <code>
  gunnerOpticsShowCursor = true;  gunnerOpticsShowCursor = true;
Line 1857: Line 1873:
  
 ====== position ====== ====== position ======
-[[ofp:modeling:tokennamevaluetypes|String]]: +[[ofp:modeling:tokennamevaluetypes|String]]:
  
 <code> <code>
Line 1913: Line 1929:
  
 ====== ...Radius ====== ====== ...Radius ======
-[[ofp:modeling:tokennamevaluetypes|Float]]: +[[ofp:modeling:tokennamevaluetypes|Float]]:
  
 Represents a circular area (radius in meters from **centre** of object for action to take place) Represents a circular area (radius in meters from **centre** of object for action to take place)
Line 1952: Line 1968:
  
 <code> <code>
- class ReloadAnimations + class ReloadAnimations
  {  {
     class SomeThingA     class SomeThingA
Line 2108: Line 2124:
 In the above example, it is just as useful to declare the base class **private**. But, see below, and see [[#accuracy]] In the above example, it is just as useful to declare the base class **private**. But, see below, and see [[#accuracy]]
  
-Protected classes are CamCreatable in the mission.sqm. +Protected classes are CamCreatable in the mission.sqm.
  
 Protected classes are immensely useful to 'hide' obsolete models that are still required to maintain compatibility with older missions. Ie older missions will still be playable, but newly created ones will only 'get at' the newer improvements specified in a public class. This Protected classes are immensely useful to 'hide' obsolete models that are still required to maintain compatibility with older missions. Ie older missions will still be playable, but newly created ones will only 'get at' the newer improvements specified in a public class. This
Line 2146: Line 2162:
   sensitivity = 2; //sniper   sensitivity = 2; //sniper
 </code> </code>
 +
  
 ====== sensitivityEar ====== ====== sensitivityEar ======
 [[ofp:modeling:tokennamevaluetypes|Float]]: Default 0.0075 [[ofp:modeling:tokennamevaluetypes|Float]]: Default 0.0075
 +
 +It sets how good certain unit hears other. Higher value means given unit hears better.
  
 <code> <code>
Line 2203: Line 2222:
  
 ====== sound ====== ====== sound ======
-[[ofp:modeling:tokennamevaluetypes|String]]: +[[ofp:modeling:tokennamevaluetypes|String]]:
 Used by animated objects (campfire eg) to give sound effect. Or, simply by ambients(wolves) Used by animated objects (campfire eg) to give sound effect. Or, simply by ambients(wolves)
  
Line 2233: Line 2252:
  
 <code> <code>
-   normalExt[] =  +   normalExt[] = 
-   normal[] = +   normal[] =
    road[] =    road[] =
-   rock[] = +   rock[] =
    water[] =    water[] =
-   gravel[] =  +   gravel[] = 
-   sand[] =  +   sand[] = 
-   drygrass[] =  +   drygrass[] = 
-   grass[] =  +   grass[] = 
-   forest[] =  +   forest[] = 
-   mud[] =  +   mud[] = 
-   wood[] =  +   wood[] = 
-   metal[] =  +   metal[] = 
-   snow[] = +   snow[] =
    hallway[] =    hallway[] =
-   fallbody[] =  +   fallbody[] = 
-   laydown[] =  +   laydown[] = 
-   standup[] = +   standup[] =
    crawl[] =    crawl[] =
 </code> </code>
Line 2267: Line 2286:
  
 ====== Sounds Various ====== ====== Sounds Various ======
-Complex [[ofp:modeling:tokennamevaluetypes|Array]]: +Complex [[ofp:modeling:tokennamevaluetypes|Array]]:
  
 All the following use All the following use
Line 2274: Line 2293:
  nameOfSound[]= {"\AddonName\AnySound(.wss)",0.000000,1,1};  nameOfSound[]= {"\AddonName\AnySound(.wss)",0.000000,1,1};
 </code> </code>
 +
 +  * 1st parameter: Sound file (path). *.wss is default, *.ogg can be specified.
 +  * 2nd parameter: Change of volume compared to the strongest sound that is audible at the camera's (player's) position. It means that the strongest sound is played on 100% and this sound is played weaker (calculated from dB value, distance, occlude, ...). If this sound is alone in sound scene then it is played on 100% every time.
 +  * 3rd parameter: Speed of playing, 1 = normal speed/time of playing, 2 = 2 times slower, with half lower pitch.
  
 wss is the default. ogg can be specified. wss is the default. ogg can be specified.
Line 2329: Line 2352:
  #define EAST 0 // (Russian)  #define EAST 0 // (Russian)
  #define WEST 1 // (Nato)  #define WEST 1 // (Nato)
- #define RESISISTANCE 2 // Guerilla + #define RESISISTANCE 2 // Guerilla
  #define CIVILIAN 3  #define CIVILIAN 3
  #define NEUTRAL 4  #define NEUTRAL 4
Line 2341: Line 2364:
 </code> </code>
  
-NEUTRAL is the general case for all objects. +NEUTRAL is the general case for all objects.
  
 NO_SIDE is used for ambient seagulls and wolves (see [[#sound]]). It differs from NEUTRAL in that the engine spends no time looking for interraction with other objects. NO_SIDE is used for ambient seagulls and wolves (see [[#sound]]). It differs from NEUTRAL in that the engine spends no time looking for interraction with other objects.
Line 2358: Line 2381:
   simulation = airplane,helicopter,tank // (eg)   simulation = airplane,helicopter,tank // (eg)
 </code> </code>
- +
 __Related TokenName__: [[#model]] __Related TokenName__: [[#model]]
  
Line 2537: Line 2560:
   transportMaxMagazines = 2000;   transportMaxMagazines = 2000;
 </code> </code>
- +
 Values vary depending on exact tupe of 'boat' eg. Values vary depending on exact tupe of 'boat' eg.
  
Line 2550: Line 2573:
   transportSoldier = 3;     //jeep/car   transportSoldier = 3;     //jeep/car
   transportSoldier = 50;    //large ship   transportSoldier = 50;    //large ship
-  transportSoldier = 6to10; //SmallShip +  transportSoldier = 6to10; //SmallShip
   transportSoldier = 3;     //a10   transportSoldier = 3;     //a10
   transportSoldier = 8to12; //helicopters   transportSoldier = 8to12; //helicopters
Line 2689: Line 2712:
  
 ====== view...Shadow ====== ====== view...Shadow ======
-**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|Boolean]]: +**[[arma:tokennames|ArmA]]** [[ofp:modeling:tokennamevaluetypes|Boolean]]:
  
 <code> <code>
Line 2706: Line 2729:
  
 ====== weapon ====== ====== weapon ======
-[[ofp:modeling:tokennamevaluetypes|String]]: +[[ofp:modeling:tokennamevaluetypes|String]]:
  
 <code> <code>
Line 2714: Line 2737:
 Selects a weapon from the CfgWeapons class Selects a weapon from the CfgWeapons class
  
-====== weapons ====== +====== weapons ======
 Variable String [[ofp:modeling:tokennamevaluetypes|Array]]: default {}; Variable String [[ofp:modeling:tokennamevaluetypes|Array]]: default {};
  
ofp/modeling/cfgvehicles_configref.1183697925.txt.gz · Last modified: 2007/07/10 09:52 (external edit)

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

All PMC web site download services are temporarily suspended until web site yearly fees have been recovered, want to download addons/mods? Then Support PMC.

If you are grateful for all the work PMC has done in the past 25 years, use Support PMC page.