<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bf2tech.uturista.pt/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=UTurista</id>
	<title>BF2 Technical Information Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://bf2tech.uturista.pt/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=UTurista"/>
	<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php/Special:Contributions/UTurista"/>
	<updated>2026-08-06T08:42:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=168</id>
		<title>Console Script Grammar</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=168"/>
		<updated>2022-08-14T14:36:13Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* CRD Argument Type */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Con files are the core of how Battlefield 2 (and 1942 before it) configures its weapons, maps, objects, players and other game assets. These files can be run by the engine or from within the in-game console. The in-game console uses the exact same syntax with the notable difference that multi-line commands like &amp;lt;code&amp;gt;beginRem&amp;lt;/code&amp;gt; do not work. With Battlefield 2, the console grammar has extended into a rudimentry scripting language, with loops and full conditionals.  Battlefield 1942 had only very rudimentry conditionals. &lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
There exist two classes of comments, block:&lt;br /&gt;
  beginRem&lt;br /&gt;
  this text is ignored&lt;br /&gt;
  endRem&lt;br /&gt;
and line:&lt;br /&gt;
  rem this text is ignored&lt;br /&gt;
&lt;br /&gt;
== Statements ==&lt;br /&gt;
Statements are a command followed by a number of optionally &amp;quot;quoted&amp;quot;, whitespace-seperated arguments. &lt;br /&gt;
  commandClass.commandMethod argument1 &amp;quot;argument2&amp;quot;&lt;br /&gt;
The number and type of the arguments depends on the command being used. The available commands is beyond the scope of this page, but a good portion of them are included with the editor.&lt;br /&gt;
&lt;br /&gt;
A full list is available by running GNU &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; against your bf2.exe&lt;br /&gt;
&lt;br /&gt;
=== CRD Argument Type ===&lt;br /&gt;
&lt;br /&gt;
Many arguments are a CRD type of argument, which stands for &#039;&#039;Continuous Random Distribution&#039;&#039;, and is used to calculate a random number based on the specify properties. &lt;br /&gt;
A CRD always has four sub-arguments, e.g.:&lt;br /&gt;
  CRD_NONE/3/0/0&lt;br /&gt;
&lt;br /&gt;
The first argument says what type of distribution should be used, the second and third depend on the type and the latter is called symmetry, and can affect any of the distributions; it will be explained later.&lt;br /&gt;
&lt;br /&gt;
The meaning of the second and third arguments, which are always &#039;&#039;&#039;numbers&#039;&#039;&#039;, varies depending on the type of distribution property specified. The four types for this first argument are:&lt;br /&gt;
    CRD_NONE - do not vary the argument at all, just return the first number.&lt;br /&gt;
    CRD_UNIFORM - uniform random distribution, between the two numbers specified.&lt;br /&gt;
    CRD_EXPONENTIAL - exponential drop off, first number specifies the mean (average).&lt;br /&gt;
    CRD_NORMAL - normal distribution, the first number is the mean, the second the variance. &lt;br /&gt;
&lt;br /&gt;
We just need the first three arguments to compute a random number, the final, fourth argument is a boolean and can affect the sign of this computed number: If this argument is 1 (true), then there is a 50/50 chance that the computed number will be negated. If 0 (false), no negation &amp;quot;coin-flip&amp;quot; takes place. &lt;br /&gt;
&lt;br /&gt;
Some examples:&lt;br /&gt;
  ObjectTemplate.TimeToLive CRD_NONE/240/0/0&lt;br /&gt;
&#039;&#039;TimeToLive&#039;&#039; will be set to 240: no computation was performed we just returned the first argument. This sort of CRD can be directly replaced by the number itself.&lt;br /&gt;
&lt;br /&gt;
  ObjectTemplate.TimeToLive CRD_UNIFORM/2/7/0&lt;br /&gt;
&#039;&#039;TimeToLive&#039;&#039; can be one of [2, 3, 4, 5, 6, 7] and they have all the same chance.&lt;br /&gt;
&lt;br /&gt;
  ObjectTemplate.rotationalSpeedInDof CRD_EXPONENTIAL/-20/0/1&lt;br /&gt;
The exponential distribution basically gives a distribution curve that drops off sharply and then levels out. It is computed by -mean*ln( random(0,1) ). In other words, a random number between 0 and 1 (not including 0 or 1) is generated, the natural logarithm of this number is computed, and the result is multiplied by the negative of the mean (the average), the second argument (and first number) passed in. For example, if the random number generated was 0.1, the natural log is -2.3, so since the mean was -20, the final number returned would be -(-20)*-2.3 = -46. Since the symmetric flag, the last argument, is set to 1 (true), there is a 50/50 chance that this result will be negated, i.e. be returned as 46 instead of -46.&lt;br /&gt;
&lt;br /&gt;
NOTE: this distribution is often misused in the Battlefield code, e.g.&lt;br /&gt;
&lt;br /&gt;
  ObjectTemplate.initRotation CRD_EXPONENTIAL/0/180/1&lt;br /&gt;
&lt;br /&gt;
is a common use. However, this setting actually always returns a value of 0, since that is the mean specified. The &amp;quot;180&amp;quot; argument is ignored.&lt;br /&gt;
&lt;br /&gt;
  ObjectTemplate.timeToLive CRD_NORMAL/2/3.5/0&lt;br /&gt;
&lt;br /&gt;
A normal distribution is a classic bell curve shape. The second argument is the mean, the average value, and the third argument is the variance, how fast the distribution curve drops off into its bell shape. The fourth argument again acts to force symmetry if set, though the bell curve has its own symmetry when the mean is 0.&lt;br /&gt;
&lt;br /&gt;
Variance specifies the range in which about 4/5ths of the numbers generated will fall. In our example, the 2 is the average time to live desired, and a variance of 3.5 means that this value can vary fairly widely; about 4/5ths of the numbers generated will be in the range +3.5 to -3.5 from the mean of 2, i.e. -1.5 to 5.5, with 1/5th of the numbers appearing above and below this range. &lt;br /&gt;
&lt;br /&gt;
([https://bfmods.com/mdt/scripting/CRD.html Source])&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
Variables must be predefined, and have a strict naming system.  All mutable variables must begin with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; whereas all immutable variables or &#039;&#039;constants&#039;&#039; must begin with &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;. It&#039;s a simple form of [[wikipedia:Hungarian Notation]].&lt;br /&gt;
&lt;br /&gt;
=== Mutable Variables ===&lt;br /&gt;
The code:&lt;br /&gt;
  var v_dongs = test&lt;br /&gt;
Defines a new variable called &#039;&#039;dongs&#039;&#039; or &#039;&#039;v_dongs&#039;&#039; depending on your point of view with the value &amp;quot;test&amp;quot;.  When defining a variable you can omit the default value however:&lt;br /&gt;
  var v_dongs&lt;br /&gt;
is a value construct for example.&lt;br /&gt;
&lt;br /&gt;
=== Immutable Variables ===&lt;br /&gt;
  const c_butts = test&lt;br /&gt;
Defines a constant called, again, &#039;&#039;butts&#039;&#039; or &#039;&#039;c_butts&#039;&#039; with the value &amp;quot;test&amp;quot;.  Obviously, this variable cannot be changed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; vs. &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; and assignments ===&lt;br /&gt;
Assigning to a variable is as simple as appending &amp;lt;code&amp;gt; -&amp;gt; v_varname&amp;lt;/code&amp;gt; to any command.  However, many commands do not return a value.  The ones that do generally return either a boolean value (&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) or a simple string.&lt;br /&gt;
&lt;br /&gt;
Clearly, trying to assign to a &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; variable is an error and will not work.&lt;br /&gt;
&lt;br /&gt;
== Conditionals ==&lt;br /&gt;
Conditionals include the standard &amp;lt;code&amp;gt;if ... endIf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;if ... elseIf ... endIf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;while ... endWhile&amp;lt;/code&amp;gt; constructs.  These evaluate an &#039;&#039;expression&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
The grammar of an expression is roughly:&lt;br /&gt;
  &amp;lt;variable&amp;gt; &amp;lt;comparator&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
Where&lt;br /&gt;
* &#039;&#039;variable&#039;&#039; is any variable name beginning with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;comparator&#039;&#039; is one of &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt; or their textual equivalents: &amp;lt;code&amp;gt;lessOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lessThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;notEquals&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;equals&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;value&#039;&#039; is any literal string, quoted if neccessary.&lt;br /&gt;
&lt;br /&gt;
== Return ==&lt;br /&gt;
You may cease interpretation of the current .con file by using the command &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;. This resumes interpretation from the calling file.  It is an error to use this unless the file was called with...&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; == &lt;br /&gt;
Both &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; trigger the interpretation of another .con file.&lt;br /&gt;
They also have the ability to set &#039;&#039;arguments&#039;&#039;, which are a special type of mutable variable. For example:&lt;br /&gt;
  run test.con 1 2 3&lt;br /&gt;
Runs test.con.  In test.con, the variables &amp;lt;code&amp;gt;v_arg1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;v_arg2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;v_arg3&amp;lt;/code&amp;gt; are set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; respectively. &lt;br /&gt;
Typically this is used along with a conditional to do something for the editor mode, or to do something different for single player mode (a common use in BF1942, where this method also existed).&lt;br /&gt;
&lt;br /&gt;
As for differences, &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; seems to create a new scope while &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; does not.&lt;br /&gt;
&lt;br /&gt;
== An Example ==&lt;br /&gt;
  var v_tst&lt;br /&gt;
  fileManager.fileExists movies/menu.bik -&amp;gt; v_tst&lt;br /&gt;
  if v_tst == 0&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu.bik movies/menu.bik&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu_loggedin.bik movies/menu_loggedin.bik&lt;br /&gt;
  endIf&lt;br /&gt;
This example checks if movies/menu.bik exists, and if it doesn&#039;t copies two files from the &amp;lt;code&amp;gt;bf2&amp;lt;/code&amp;gt; mod to the current mod.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=167</id>
		<title>Console Script Grammar</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=167"/>
		<updated>2022-08-14T14:35:29Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Adds CRD Argument Type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Con files are the core of how Battlefield 2 (and 1942 before it) configures its weapons, maps, objects, players and other game assets. These files can be run by the engine or from within the in-game console. The in-game console uses the exact same syntax with the notable difference that multi-line commands like &amp;lt;code&amp;gt;beginRem&amp;lt;/code&amp;gt; do not work. With Battlefield 2, the console grammar has extended into a rudimentry scripting language, with loops and full conditionals.  Battlefield 1942 had only very rudimentry conditionals. &lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
There exist two classes of comments, block:&lt;br /&gt;
  beginRem&lt;br /&gt;
  this text is ignored&lt;br /&gt;
  endRem&lt;br /&gt;
and line:&lt;br /&gt;
  rem this text is ignored&lt;br /&gt;
&lt;br /&gt;
== Statements ==&lt;br /&gt;
Statements are a command followed by a number of optionally &amp;quot;quoted&amp;quot;, whitespace-seperated arguments. &lt;br /&gt;
  commandClass.commandMethod argument1 &amp;quot;argument2&amp;quot;&lt;br /&gt;
The number and type of the arguments depends on the command being used. The available commands is beyond the scope of this page, but a good portion of them are included with the editor.&lt;br /&gt;
&lt;br /&gt;
A full list is available by running GNU &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; against your bf2.exe&lt;br /&gt;
&lt;br /&gt;
=== CRD Argument Type ===&lt;br /&gt;
&lt;br /&gt;
Many arguments are a CRD type of argument, which stands for &#039;&#039;Continuous Random Distribution&#039;&#039;, and is used to calculate a random number based on the specify properties. &lt;br /&gt;
A CRD always has four sub-arguments, e.g.:&lt;br /&gt;
  CRD_NONE/3/0/0&lt;br /&gt;
&lt;br /&gt;
The first argument says what type of distribution should be used, the second and third depend on the type and the latter is called symmetry, and can affect any of the distributions; it will be explained later.&lt;br /&gt;
&lt;br /&gt;
The meaning of the second and third arguments, which are always &#039;&#039;&#039;integers&#039;&#039;&#039;, varies depending on the type of distribution property specified. The four types for this first argument are:&lt;br /&gt;
    CRD_NONE - do not vary the argument at all, just return the first number.&lt;br /&gt;
    CRD_UNIFORM - uniform random distribution, between the two numbers specified.&lt;br /&gt;
    CRD_EXPONENTIAL - exponential drop off, first number specifies the mean (average).&lt;br /&gt;
    CRD_NORMAL - normal distribution, the first number is the mean, the second the variance. &lt;br /&gt;
&lt;br /&gt;
We just need the first three arguments to compute a random number, the final, fourth argument is a boolean and can affect the sign of this computed number: If this argument is 1 (true), then there is a 50/50 chance that the computed number will be negated. If 0 (false), no negation &amp;quot;coin-flip&amp;quot; takes place. &lt;br /&gt;
&lt;br /&gt;
Some examples:&lt;br /&gt;
  ObjectTemplate.TimeToLive CRD_NONE/240/0/0&lt;br /&gt;
&#039;&#039;TimeToLive&#039;&#039; will be set to 240: no computation was performed we just returned the first argument. This sort of CRD can be directly replaced by the number itself.&lt;br /&gt;
&lt;br /&gt;
  ObjectTemplate.TimeToLive CRD_UNIFORM/2/7/0&lt;br /&gt;
&#039;&#039;TimeToLive&#039;&#039; can be one of [2, 3, 4, 5, 6, 7] and they have all the same chance.&lt;br /&gt;
&lt;br /&gt;
  ObjectTemplate.rotationalSpeedInDof CRD_EXPONENTIAL/-20/0/1&lt;br /&gt;
The exponential distribution basically gives a distribution curve that drops off sharply and then levels out. It is computed by -mean*ln( random(0,1) ). In other words, a random number between 0 and 1 (not including 0 or 1) is generated, the natural logarithm of this number is computed, and the result is multiplied by the negative of the mean (the average), the second argument (and first number) passed in. For example, if the random number generated was 0.1, the natural log is -2.3, so since the mean was -20, the final number returned would be -(-20)*-2.3 = -46. Since the symmetric flag, the last argument, is set to 1 (true), there is a 50/50 chance that this result will be negated, i.e. be returned as 46 instead of -46.&lt;br /&gt;
&lt;br /&gt;
NOTE: this distribution is often misused in the Battlefield code, e.g.&lt;br /&gt;
&lt;br /&gt;
  ObjectTemplate.initRotation CRD_EXPONENTIAL/0/180/1&lt;br /&gt;
&lt;br /&gt;
is a common use. However, this setting actually always returns a value of 0, since that is the mean specified. The &amp;quot;180&amp;quot; argument is ignored.&lt;br /&gt;
&lt;br /&gt;
  ObjectTemplate.timeToLive CRD_NORMAL/2/3.5/0&lt;br /&gt;
&lt;br /&gt;
A normal distribution is a classic bell curve shape. The second argument is the mean, the average value, and the third argument is the variance, how fast the distribution curve drops off into its bell shape. The fourth argument again acts to force symmetry if set, though the bell curve has its own symmetry when the mean is 0.&lt;br /&gt;
&lt;br /&gt;
Variance specifies the range in which about 4/5ths of the numbers generated will fall. In our example, the 2 is the average time to live desired, and a variance of 3.5 means that this value can vary fairly widely; about 4/5ths of the numbers generated will be in the range +3.5 to -3.5 from the mean of 2, i.e. -1.5 to 5.5, with 1/5th of the numbers appearing above and below this range. &lt;br /&gt;
&lt;br /&gt;
([https://bfmods.com/mdt/scripting/CRD.html Source])&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
Variables must be predefined, and have a strict naming system.  All mutable variables must begin with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; whereas all immutable variables or &#039;&#039;constants&#039;&#039; must begin with &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;. It&#039;s a simple form of [[wikipedia:Hungarian Notation]].&lt;br /&gt;
&lt;br /&gt;
=== Mutable Variables ===&lt;br /&gt;
The code:&lt;br /&gt;
  var v_dongs = test&lt;br /&gt;
Defines a new variable called &#039;&#039;dongs&#039;&#039; or &#039;&#039;v_dongs&#039;&#039; depending on your point of view with the value &amp;quot;test&amp;quot;.  When defining a variable you can omit the default value however:&lt;br /&gt;
  var v_dongs&lt;br /&gt;
is a value construct for example.&lt;br /&gt;
&lt;br /&gt;
=== Immutable Variables ===&lt;br /&gt;
  const c_butts = test&lt;br /&gt;
Defines a constant called, again, &#039;&#039;butts&#039;&#039; or &#039;&#039;c_butts&#039;&#039; with the value &amp;quot;test&amp;quot;.  Obviously, this variable cannot be changed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; vs. &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; and assignments ===&lt;br /&gt;
Assigning to a variable is as simple as appending &amp;lt;code&amp;gt; -&amp;gt; v_varname&amp;lt;/code&amp;gt; to any command.  However, many commands do not return a value.  The ones that do generally return either a boolean value (&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) or a simple string.&lt;br /&gt;
&lt;br /&gt;
Clearly, trying to assign to a &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; variable is an error and will not work.&lt;br /&gt;
&lt;br /&gt;
== Conditionals ==&lt;br /&gt;
Conditionals include the standard &amp;lt;code&amp;gt;if ... endIf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;if ... elseIf ... endIf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;while ... endWhile&amp;lt;/code&amp;gt; constructs.  These evaluate an &#039;&#039;expression&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
The grammar of an expression is roughly:&lt;br /&gt;
  &amp;lt;variable&amp;gt; &amp;lt;comparator&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
Where&lt;br /&gt;
* &#039;&#039;variable&#039;&#039; is any variable name beginning with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;comparator&#039;&#039; is one of &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt; or their textual equivalents: &amp;lt;code&amp;gt;lessOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lessThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;notEquals&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;equals&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;value&#039;&#039; is any literal string, quoted if neccessary.&lt;br /&gt;
&lt;br /&gt;
== Return ==&lt;br /&gt;
You may cease interpretation of the current .con file by using the command &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;. This resumes interpretation from the calling file.  It is an error to use this unless the file was called with...&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; == &lt;br /&gt;
Both &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; trigger the interpretation of another .con file.&lt;br /&gt;
They also have the ability to set &#039;&#039;arguments&#039;&#039;, which are a special type of mutable variable. For example:&lt;br /&gt;
  run test.con 1 2 3&lt;br /&gt;
Runs test.con.  In test.con, the variables &amp;lt;code&amp;gt;v_arg1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;v_arg2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;v_arg3&amp;lt;/code&amp;gt; are set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; respectively. &lt;br /&gt;
Typically this is used along with a conditional to do something for the editor mode, or to do something different for single player mode (a common use in BF1942, where this method also existed).&lt;br /&gt;
&lt;br /&gt;
As for differences, &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; seems to create a new scope while &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; does not.&lt;br /&gt;
&lt;br /&gt;
== An Example ==&lt;br /&gt;
  var v_tst&lt;br /&gt;
  fileManager.fileExists movies/menu.bik -&amp;gt; v_tst&lt;br /&gt;
  if v_tst == 0&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu.bik movies/menu.bik&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu_loggedin.bik movies/menu_loggedin.bik&lt;br /&gt;
  endIf&lt;br /&gt;
This example checks if movies/menu.bik exists, and if it doesn&#039;t copies two files from the &amp;lt;code&amp;gt;bf2&amp;lt;/code&amp;gt; mod to the current mod.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=166</id>
		<title>Console Script Grammar</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=166"/>
		<updated>2022-08-12T08:08:29Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* include and run */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Con files are the core of how Battlefield 2 (and 1942 before it) configures its weapons, maps, objects, players and other game assets. These files can be run by the engine or from within the in-game console. The in-game console uses the exact same syntax with the notable difference that multi-line commands like &amp;lt;code&amp;gt;beginRem&amp;lt;/code&amp;gt; do not work. With Battlefield 2, the console grammar has extended into a rudimentry scripting language, with loops and full conditionals.  Battlefield 1942 had only very rudimentry conditionals. &lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
There exist two classes of comments, block:&lt;br /&gt;
  beginRem&lt;br /&gt;
  this text is ignored&lt;br /&gt;
  endRem&lt;br /&gt;
and line:&lt;br /&gt;
  rem this text is ignored&lt;br /&gt;
&lt;br /&gt;
== Statements ==&lt;br /&gt;
Statements are a command followed by a number of optionally &amp;quot;quoted&amp;quot;, whitespace-seperated arguments. The number of arguments may be variable or strictly limited by the command in use.  The available commands is beyond the scope of this page, but a good portion of them are included with the editor. A full list is available by running GNU &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; against your bf2.exe ;)&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
Variables must be predefined, and have a strict naming system.  All mutable variables must begin with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; whereas all immutable variables or &#039;&#039;constants&#039;&#039; must begin with &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;. It&#039;s a simple form of [[wikipedia:Hungarian Notation]].&lt;br /&gt;
&lt;br /&gt;
=== Mutable Variables ===&lt;br /&gt;
The code:&lt;br /&gt;
  var v_dongs = test&lt;br /&gt;
Defines a new variable called &#039;&#039;dongs&#039;&#039; or &#039;&#039;v_dongs&#039;&#039; depending on your point of view with the value &amp;quot;test&amp;quot;.  When defining a variable you can omit the default value however:&lt;br /&gt;
  var v_dongs&lt;br /&gt;
is a value construct for example.&lt;br /&gt;
&lt;br /&gt;
=== Immutable Variables ===&lt;br /&gt;
  const c_butts = test&lt;br /&gt;
Defines a constant called, again, &#039;&#039;butts&#039;&#039; or &#039;&#039;c_butts&#039;&#039; with the value &amp;quot;test&amp;quot;.  Obviously, this variable cannot be changed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; vs. &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; and assignments ===&lt;br /&gt;
Assigning to a variable is as simple as appending &amp;lt;code&amp;gt; -&amp;gt; v_varname&amp;lt;/code&amp;gt; to any command.  However, many commands do not return a value.  The ones that do generally return either a boolean value (&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) or a simple string.&lt;br /&gt;
&lt;br /&gt;
Clearly, trying to assign to a &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; variable is an error and will not work.&lt;br /&gt;
&lt;br /&gt;
== Conditionals ==&lt;br /&gt;
Conditionals include the standard &amp;lt;code&amp;gt;if ... endIf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;if ... elseIf ... endIf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;while ... endWhile&amp;lt;/code&amp;gt; constructs.  These evaluate an &#039;&#039;expression&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
The grammar of an expression is roughly:&lt;br /&gt;
  &amp;lt;variable&amp;gt; &amp;lt;comparator&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
Where&lt;br /&gt;
* &#039;&#039;variable&#039;&#039; is any variable name beginning with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;comparator&#039;&#039; is one of &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt; or their textual equivalents: &amp;lt;code&amp;gt;lessOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lessThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;notEquals&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;equals&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;value&#039;&#039; is any literal string, quoted if neccessary.&lt;br /&gt;
&lt;br /&gt;
== Return ==&lt;br /&gt;
You may cease interpretation of the current .con file by using the command &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;. This resumes interpretation from the calling file.  It is an error to use this unless the file was called with...&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; == &lt;br /&gt;
Both &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; trigger the interpretation of another .con file.&lt;br /&gt;
They also have the ability to set &#039;&#039;arguments&#039;&#039;, which are a special type of mutable variable. For example:&lt;br /&gt;
  run test.con 1 2 3&lt;br /&gt;
Runs test.con.  In test.con, the variables &amp;lt;code&amp;gt;v_arg1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;v_arg2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;v_arg3&amp;lt;/code&amp;gt; are set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; respectively. &lt;br /&gt;
Typically this is used along with a conditional to do something for the editor mode, or to do something different for single player mode (a common use in BF1942, where this method also existed).&lt;br /&gt;
&lt;br /&gt;
As for differences, &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; seems to create a new scope while &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; does not.&lt;br /&gt;
&lt;br /&gt;
== An Example ==&lt;br /&gt;
  var v_tst&lt;br /&gt;
  fileManager.fileExists movies/menu.bik -&amp;gt; v_tst&lt;br /&gt;
  if v_tst == 0&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu.bik movies/menu.bik&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu_loggedin.bik movies/menu_loggedin.bik&lt;br /&gt;
  endIf&lt;br /&gt;
This example checks if movies/menu.bik exists, and if it doesn&#039;t copies two files from the &amp;lt;code&amp;gt;bf2&amp;lt;/code&amp;gt; mod to the current mod.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=165</id>
		<title>Console Script Grammar</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=165"/>
		<updated>2022-08-12T08:08:12Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Adds difference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Con files are the core of how Battlefield 2 (and 1942 before it) configures its weapons, maps, objects, players and other game assets. These files can be run by the engine or from within the in-game console. The in-game console uses the exact same syntax with the notable difference that multi-line commands like &amp;lt;code&amp;gt;beginRem&amp;lt;/code&amp;gt; do not work. With Battlefield 2, the console grammar has extended into a rudimentry scripting language, with loops and full conditionals.  Battlefield 1942 had only very rudimentry conditionals. &lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
There exist two classes of comments, block:&lt;br /&gt;
  beginRem&lt;br /&gt;
  this text is ignored&lt;br /&gt;
  endRem&lt;br /&gt;
and line:&lt;br /&gt;
  rem this text is ignored&lt;br /&gt;
&lt;br /&gt;
== Statements ==&lt;br /&gt;
Statements are a command followed by a number of optionally &amp;quot;quoted&amp;quot;, whitespace-seperated arguments. The number of arguments may be variable or strictly limited by the command in use.  The available commands is beyond the scope of this page, but a good portion of them are included with the editor. A full list is available by running GNU &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; against your bf2.exe ;)&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
Variables must be predefined, and have a strict naming system.  All mutable variables must begin with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; whereas all immutable variables or &#039;&#039;constants&#039;&#039; must begin with &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;. It&#039;s a simple form of [[wikipedia:Hungarian Notation]].&lt;br /&gt;
&lt;br /&gt;
=== Mutable Variables ===&lt;br /&gt;
The code:&lt;br /&gt;
  var v_dongs = test&lt;br /&gt;
Defines a new variable called &#039;&#039;dongs&#039;&#039; or &#039;&#039;v_dongs&#039;&#039; depending on your point of view with the value &amp;quot;test&amp;quot;.  When defining a variable you can omit the default value however:&lt;br /&gt;
  var v_dongs&lt;br /&gt;
is a value construct for example.&lt;br /&gt;
&lt;br /&gt;
=== Immutable Variables ===&lt;br /&gt;
  const c_butts = test&lt;br /&gt;
Defines a constant called, again, &#039;&#039;butts&#039;&#039; or &#039;&#039;c_butts&#039;&#039; with the value &amp;quot;test&amp;quot;.  Obviously, this variable cannot be changed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; vs. &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; and assignments ===&lt;br /&gt;
Assigning to a variable is as simple as appending &amp;lt;code&amp;gt; -&amp;gt; v_varname&amp;lt;/code&amp;gt; to any command.  However, many commands do not return a value.  The ones that do generally return either a boolean value (&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) or a simple string.&lt;br /&gt;
&lt;br /&gt;
Clearly, trying to assign to a &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; variable is an error and will not work.&lt;br /&gt;
&lt;br /&gt;
== Conditionals ==&lt;br /&gt;
Conditionals include the standard &amp;lt;code&amp;gt;if ... endIf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;if ... elseIf ... endIf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;while ... endWhile&amp;lt;/code&amp;gt; constructs.  These evaluate an &#039;&#039;expression&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
The grammar of an expression is roughly:&lt;br /&gt;
  &amp;lt;variable&amp;gt; &amp;lt;comparator&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
Where&lt;br /&gt;
* &#039;&#039;variable&#039;&#039; is any variable name beginning with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;comparator&#039;&#039; is one of &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt; or their textual equivalents: &amp;lt;code&amp;gt;lessOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lessThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;notEquals&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;equals&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;value&#039;&#039; is any literal string, quoted if neccessary.&lt;br /&gt;
&lt;br /&gt;
== Return ==&lt;br /&gt;
You may cease interpretation of the current .con file by using the command &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;. This resumes interpretation from the calling file.  It is an error to use this unless the file was called with...&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; == &lt;br /&gt;
Both &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; trigger the interpretation of another .con file. They also have the ability to set &#039;&#039;arguments&#039;&#039;, which are a special type of mutable variable. For example:&lt;br /&gt;
  run test.con 1 2 3&lt;br /&gt;
Runs test.con.  In test.con, the variables &amp;lt;code&amp;gt;v_arg1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;v_arg2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;v_arg3&amp;lt;/code&amp;gt; are set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; respectively. &lt;br /&gt;
Typically this is used along with a conditional to do something for the editor mode, or to do something different for single player mode (a common use in BF1942, where this method also existed).&lt;br /&gt;
&lt;br /&gt;
As for differences, &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; seems to create a new scope while &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; does not.&lt;br /&gt;
&lt;br /&gt;
== An Example ==&lt;br /&gt;
  var v_tst&lt;br /&gt;
  fileManager.fileExists movies/menu.bik -&amp;gt; v_tst&lt;br /&gt;
  if v_tst == 0&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu.bik movies/menu.bik&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu_loggedin.bik movies/menu_loggedin.bik&lt;br /&gt;
  endIf&lt;br /&gt;
This example checks if movies/menu.bik exists, and if it doesn&#039;t copies two files from the &amp;lt;code&amp;gt;bf2&amp;lt;/code&amp;gt; mod to the current mod.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=ReverseEngineering&amp;diff=164</id>
		<title>ReverseEngineering</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=ReverseEngineering&amp;diff=164"/>
		<updated>2022-08-12T08:05:20Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLLs&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ AIDLL.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
| deinitDll	|| 0x10024630	|| 0x00024630	|| 1 (0x1)	&lt;br /&gt;
|-&lt;br /&gt;
| initDll	|| 0x100241d0	|| 0x000241d0	|| 2 (0x2)	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ AIDLL_w32ded.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
| deinitDll	|| 0x100637e0|| 0x100637e0|| 1 (0x1)	&lt;br /&gt;
|-&lt;br /&gt;
| initDll	|| 0x10063340|| 0x00063340	|| 2 (0x2)	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ BF2Audio.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
| getSoundEngine	|| 0x10007ad0	|| 0x00007ad0	|| 1 (0x1)	&lt;br /&gt;
|-&lt;br /&gt;
| shutdownSoundEngine	|| 0x10007b80	|| 0x00007b80	|| 2 (0x2)	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ BF2OpenAL.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
|  alBuffer3f  ||  0x100092a0  ||  0x000092a0  ||  3 (0x3)&lt;br /&gt;
|-&lt;br /&gt;
|  alBuffer3i  ||  0x100092a0  ||  0x000092a0  ||  4 (0x4)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferData  ||  0x10008700  ||  0x00008700  ||  5 (0x5)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferf  ||  0x100092a0  ||  0x000092a0  ||  6 (0x6)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferfv  ||  0x100092a0  ||  0x000092a0  ||  7 (0x7)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferi  ||  0x100092a0  ||  0x000092a0  ||  8 (0x8)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferiv  ||  0x100092a0  ||  0x000092a0  ||  9 (0x9)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureCloseDevice  ||  0x1002f260  ||  0x0002f260  ||  76 (0x4c)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureOpenDevice  ||  0x10030c00  ||  0x00030c00  ||  77 (0x4d)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureSamples  ||  0x1002f3d0  ||  0x0002f3d0  ||  78 (0x4e)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureStart  ||  0x1002f370  ||  0x0002f370  ||  79 (0x4f)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureStop  ||  0x1002f3a0  ||  0x0002f3a0  ||  80 (0x50)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCloseDevice  ||  0x1002f9e0  ||  0x0002f9e0  ||  81 (0x51)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCreateContext  ||  0x100360c0  ||  0x000360c0  ||  82 (0x52)&lt;br /&gt;
|-&lt;br /&gt;
|  alcDestroyContext  ||  0x1002f840  ||  0x0002f840  ||  83 (0x53)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetContextsDevice  ||  0x1002f900  ||  0x0002f900  ||  84 (0x54)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetCurrentContext  ||  0x1002f8d0  ||  0x0002f8d0  ||  85 (0x55)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetEnumValue  ||  0x1002f810  ||  0x0002f810  ||  86 (0x56)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetError  ||  0x1002f6c0  ||  0x0002f6c0  ||  87 (0x57)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetIntegerv  ||  0x10031010  ||  0x00031010  ||  88 (0x58)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetProcAddress  ||  0x1002f790  ||  0x0002f790  ||  89 (0x59)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetString  ||  0x100331e0  ||  0x000331e0  ||  90 (0x5a)&lt;br /&gt;
|-&lt;br /&gt;
|  alcIsExtensionPresent  ||  0x1002f6e0  ||  0x0002f6e0  ||  91 (0x5b)&lt;br /&gt;
|-&lt;br /&gt;
|  alcMakeContextCurrent  ||  0x1002f950  ||  0x0002f950  ||  92 (0x5c)&lt;br /&gt;
|-&lt;br /&gt;
|  alcOpenDevice  ||  0x10033490  ||  0x00033490  ||  93 (0x5d)&lt;br /&gt;
|-&lt;br /&gt;
|  alcProcessContext  ||  0x1002f6d0  ||  0x0002f6d0  ||  94 (0x5e)&lt;br /&gt;
|-&lt;br /&gt;
|  alcSuspendContext  ||  0x1002f6d0  ||  0x0002f6d0  ||  95 (0x5f)&lt;br /&gt;
|-&lt;br /&gt;
|  alDeleteBuffers  ||  0x10009680  ||  0x00009680  ||  10 (0xa)&lt;br /&gt;
|-&lt;br /&gt;
|  alDeleteSources  ||  0x1001c450  ||  0x0001c450  ||  11 (0xb)&lt;br /&gt;
|-&lt;br /&gt;
|  alDisable  ||  0x1001e930  ||  0x0001e930  ||  12 (0xc)&lt;br /&gt;
|-&lt;br /&gt;
|  alDistanceModel  ||  0x1001f350  ||  0x0001f350  ||  13 (0xd)&lt;br /&gt;
|-&lt;br /&gt;
|  alDopplerFactor  ||  0x1001f170  ||  0x0001f170  ||  14 (0xe)&lt;br /&gt;
|-&lt;br /&gt;
|  alDopplerVelocity  ||  0x1001f210  ||  0x0001f210  ||  15 (0xf)&lt;br /&gt;
|-&lt;br /&gt;
|  alEnable  ||  0x1001e930  ||  0x0001e930  ||  16 (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|  alGenBuffers  ||  0x10008570  ||  0x00008570  ||  17 (0x11)&lt;br /&gt;
|-&lt;br /&gt;
|  alGenSources  ||  0x1001c110  ||  0x0001c110  ||  18 (0x12)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBoolean  ||  0x1001e9b0  ||  0x0001e9b0  ||  19 (0x13)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBooleanv  ||  0x1001ed40  ||  0x0001ed40  ||  20 (0x14)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBuffer3f  ||  0x10009500  ||  0x00009500  ||  21 (0x15)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBuffer3i  ||  0x10009500  ||  0x00009500  ||  22 (0x16)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBufferf  ||  0x10009300  ||  0x00009300  ||  23 (0x17)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBufferfv  ||  0x10009300  ||  0x00009300  ||  24 (0x18)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBufferi  ||  0x10009380  ||  0x00009380  ||  25 (0x19)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBufferiv  ||  0x10009590  ||  0x00009590  ||  26 (0x1a)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetDouble  ||  0x1001eaa0  ||  0x0001eaa0  ||  27 (0x1b)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetDoublev  ||  0x1001ee30  ||  0x0001ee30  ||  28 (0x1c)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetEnumValue  ||  0x10018ca0  ||  0x00018ca0  ||  29 (0x1d)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetError  ||  0x10018aa0  ||  0x00018aa0  ||  30 (0x1e)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetFloat  ||  0x1001eb90  ||  0x0001eb90  ||  31 (0x1f)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetFloatv  ||  0x1001ef00  ||  0x0001ef00  ||  32 (0x20)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetInteger  ||  0x1001ec70  ||  0x0001ec70  ||  33 (0x21)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetIntegerv  ||  0x1001efd0  ||  0x0001efd0  ||  34 (0x22)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListener3f  ||  0x10019460  ||  0x00019460  ||  35 (0x23)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListener3i  ||  0x100196a0  ||  0x000196a0  ||  36 (0x24)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListenerf  ||  0x100193c0  ||  0x000193c0  ||  37 (0x25)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListenerfv  ||  0x10019510  ||  0x00019510  ||  38 (0x26)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListeneri  ||  0x10019630  ||  0x00019630  ||  39 (0x27)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListeneriv  ||  0x10019780  ||  0x00019780  ||  40 (0x28)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetProcAddress  ||  0x10018c40  ||  0x00018c40  ||  41 (0x29)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSource3f  ||  0x10019f20  ||  0x00019f20  ||  42 (0x2a)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSource3i  ||  0x10019ff0  ||  0x00019ff0  ||  43 (0x2b)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSourcef  ||  0x1001c600  ||  0x0001c600  ||  44 (0x2c)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSourcefv  ||  0x1001c8f0  ||  0x0001c8f0  ||  45 (0x2d)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSourcei  ||  0x1001ca50  ||  0x0001ca50  ||  46 (0x2e)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSourceiv  ||  0x1001cd80  ||  0x0001cd80  ||  47 (0x2f)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetString  ||  0x1001f0b0  ||  0x0001f0b0  ||  48 (0x30)&lt;br /&gt;
|-&lt;br /&gt;
|  alIsBuffer  ||  0x100086a0  ||  0x000086a0  ||  49 (0x31)&lt;br /&gt;
|-&lt;br /&gt;
|  alIsEnabled  ||  0x1001e970  ||  0x0001e970  ||  50 (0x32)&lt;br /&gt;
|-&lt;br /&gt;
|  alIsExtensionPresent  ||  0x10018b20  ||  0x00018b20  ||  51 (0x33)&lt;br /&gt;
|-&lt;br /&gt;
|  alIsSource  ||  0x100198c0  ||  0x000198c0  ||  52 (0x34)&lt;br /&gt;
|-&lt;br /&gt;
|  alListener3f  ||  0x10018e10  ||  0x00018e10  ||  53 (0x35)&lt;br /&gt;
|-&lt;br /&gt;
|  alListener3i  ||  0x10019200  ||  0x00019200  ||  54 (0x36)&lt;br /&gt;
|-&lt;br /&gt;
|  alListenerf  ||  0x10018d00  ||  0x00018d00  ||  55 (0x37)&lt;br /&gt;
|-&lt;br /&gt;
|  alListenerfv  ||  0x10018f40  ||  0x00018f40  ||  56 (0x38)&lt;br /&gt;
|-&lt;br /&gt;
|  alListeneri  ||  0x10019190  ||  0x00019190  ||  57 (0x39)&lt;br /&gt;
|-&lt;br /&gt;
|  alListeneriv  ||  0x10019280  ||  0x00019280  ||  58 (0x3a)&lt;br /&gt;
|-&lt;br /&gt;
|  alSource3f  ||  0x10019940  ||  0x00019940  ||  59 (0x3b)&lt;br /&gt;
|-&lt;br /&gt;
|  alSource3i  ||  0x10019b70  ||  0x00019b70  ||  60 (0x3c)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcef  ||  0x1001d2f0  ||  0x0001d2f0  ||  71 (0x47)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcefv  ||  0x1001da90  ||  0x0001da90  ||  72 (0x48)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcei  ||  0x1001dc00  ||  0x0001dc00  ||  73 (0x49)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceiv  ||  0x1001e530  ||  0x0001e530  ||  74 (0x4a)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcePause  ||  0x1001a100  ||  0x0001a100  ||  61 (0x3d)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcePausev  ||  0x1001a190  ||  0x0001a190  ||  62 (0x3e)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcePlay  ||  0x1001e670  ||  0x0001e670  ||  63 (0x3f)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcePlayv  ||  0x1001e7b0  ||  0x0001e7b0  ||  64 (0x40)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceQueueBuffers  ||  0x1001cf60  ||  0x0001cf60  ||  65 (0x41)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceRewind  ||  0x1001a440  ||  0x0001a440  ||  66 (0x42)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceRewindv  ||  0x1001a500  ||  0x0001a500  ||  67 (0x43)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceStop  ||  0x1001a270  ||  0x0001a270  ||  68 (0x44)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceStopv  ||  0x1001a330  ||  0x0001a330  ||  69 (0x45)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceUnqueueBuffers  ||  0x1001a620  ||  0x0001a620  ||  70 (0x46)&lt;br /&gt;
|-&lt;br /&gt;
|  alSpeedOfSound  ||  0x1001f2b0  ||  0x0001f2b0  ||  75 (0x4b)&lt;br /&gt;
|-&lt;br /&gt;
|  EAXGet  ||  0x1000b7d0  ||  0x0000b7d0  ||  1 (0x1)&lt;br /&gt;
|-&lt;br /&gt;
|  EAXSet  ||  0x1000ba90  ||  0x0000ba90  ||  2 (0x2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ BF2VoipServer.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
|  public: __thiscall BF2VoipServer::CBF2VoipServer::CBF2VoipServer(void)  ||  0x10001380  ||  0x00001380  ||  1 (0x1)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: __thiscall BF2VoipServer::CBF2VoipServer::~CBF2VoipServer(void)  ||  0x100013d0  ||  0x000013d0  ||  2 (0x2)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: bool __thiscall BF2VoipServer::CBF2VoipServer::IsRunning(void)  ||  0x100011a0  ||  0x000011a0  ||  5 (0x5)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: class BF2VoipServer::CBF2VoipServerInstance * __thiscall BF2VoipServer::CBF2VoipServer::getInstance(unsigned int)  ||  0x100012a0  ||  0x000012a0  ||  10 (0xa)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::CreateInstance(unsigned int,class std::basic_string&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt;,class std::allocator&amp;lt;char&amp;gt; &amp;gt;,int &amp;amp;)  ||  0x10001680  ||  0x00001680  ||  3 (0x3)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::Initialize(bool)  ||  0x100011b0  ||  0x000011b0  ||  4 (0x4)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::ReleaseAllInstances(void)  ||  0x10001500  ||  0x00001500  ||  6 (0x6)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::ReleaseInstance(int)  ||  0x10001450  ||  0x00001450  ||  7 (0x7)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::Shutdown(void)  ||  0x100015d0  ||  0x000015d0  ||  8 (0x8)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::Update(void)  ||  0x100012d0  ||  0x000012d0  ||  9 (0x9)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: unsigned int __thiscall BF2VoipServer::CBF2VoipServer::getNumInstances(void)  ||  0x10001280  ||  0x00001280  ||  11 (0xb)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=ReverseEngineering&amp;diff=163</id>
		<title>ReverseEngineering</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=ReverseEngineering&amp;diff=163"/>
		<updated>2022-08-12T08:04:34Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Created page with &amp;quot;DLLs {| class=&amp;quot;wikitable&amp;quot; |+ AIDLL.dll |- ! Function Name !! Address !! Relative Address !! Ordinal |- | deinitDll	|| 0x10024630	|| 0x00024630	|| 1 (0x1)	 |- | initDll	|| 0x100241d0	|| 0x000241d0	|| 2 (0x2)	 |}  {| class=&amp;quot;wikitable&amp;quot; |+ AIDLL_w32ded.dll |- ! Function Name !! Address !! Relative Address !! Ordinal |- | deinitDll	|| 0x100637e0|| 0x100637e0|| 1 (0x1)	 |- | initDll	|| 0x10063340|| 0x00063340	|| 2 (0x2)	 |}  {| class=&amp;quot;wikitable&amp;quot; |+ BF2Audio.dll |- ! Function N...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DLLs&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ AIDLL.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
| deinitDll	|| 0x10024630	|| 0x00024630	|| 1 (0x1)	&lt;br /&gt;
|-&lt;br /&gt;
| initDll	|| 0x100241d0	|| 0x000241d0	|| 2 (0x2)	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ AIDLL_w32ded.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
| deinitDll	|| 0x100637e0|| 0x100637e0|| 1 (0x1)	&lt;br /&gt;
|-&lt;br /&gt;
| initDll	|| 0x10063340|| 0x00063340	|| 2 (0x2)	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ BF2Audio.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
| getSoundEngine	|| 0x10007ad0	|| 0x00007ad0	|| 1 (0x1)	&lt;br /&gt;
|-&lt;br /&gt;
| shutdownSoundEngine	|| 0x10007b80	|| 0x00007b80	|| 2 (0x2)	&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ BF2OpenAL.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
|  alBuffer3f  ||  0x100092a0  ||  0x000092a0  ||  3 (0x3)&lt;br /&gt;
|-&lt;br /&gt;
|  alBuffer3i  ||  0x100092a0  ||  0x000092a0  ||  4 (0x4)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferData  ||  0x10008700  ||  0x00008700  ||  5 (0x5)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferf  ||  0x100092a0  ||  0x000092a0  ||  6 (0x6)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferfv  ||  0x100092a0  ||  0x000092a0  ||  7 (0x7)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferi  ||  0x100092a0  ||  0x000092a0  ||  8 (0x8)&lt;br /&gt;
|-&lt;br /&gt;
|  alBufferiv  ||  0x100092a0  ||  0x000092a0  ||  9 (0x9)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureCloseDevice  ||  0x1002f260  ||  0x0002f260  ||  76 (0x4c)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureOpenDevice  ||  0x10030c00  ||  0x00030c00  ||  77 (0x4d)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureSamples  ||  0x1002f3d0  ||  0x0002f3d0  ||  78 (0x4e)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureStart  ||  0x1002f370  ||  0x0002f370  ||  79 (0x4f)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCaptureStop  ||  0x1002f3a0  ||  0x0002f3a0  ||  80 (0x50)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCloseDevice  ||  0x1002f9e0  ||  0x0002f9e0  ||  81 (0x51)&lt;br /&gt;
|-&lt;br /&gt;
|  alcCreateContext  ||  0x100360c0  ||  0x000360c0  ||  82 (0x52)&lt;br /&gt;
|-&lt;br /&gt;
|  alcDestroyContext  ||  0x1002f840  ||  0x0002f840  ||  83 (0x53)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetContextsDevice  ||  0x1002f900  ||  0x0002f900  ||  84 (0x54)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetCurrentContext  ||  0x1002f8d0  ||  0x0002f8d0  ||  85 (0x55)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetEnumValue  ||  0x1002f810  ||  0x0002f810  ||  86 (0x56)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetError  ||  0x1002f6c0  ||  0x0002f6c0  ||  87 (0x57)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetIntegerv  ||  0x10031010  ||  0x00031010  ||  88 (0x58)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetProcAddress  ||  0x1002f790  ||  0x0002f790  ||  89 (0x59)&lt;br /&gt;
|-&lt;br /&gt;
|  alcGetString  ||  0x100331e0  ||  0x000331e0  ||  90 (0x5a)&lt;br /&gt;
|-&lt;br /&gt;
|  alcIsExtensionPresent  ||  0x1002f6e0  ||  0x0002f6e0  ||  91 (0x5b)&lt;br /&gt;
|-&lt;br /&gt;
|  alcMakeContextCurrent  ||  0x1002f950  ||  0x0002f950  ||  92 (0x5c)&lt;br /&gt;
|-&lt;br /&gt;
|  alcOpenDevice  ||  0x10033490  ||  0x00033490  ||  93 (0x5d)&lt;br /&gt;
|-&lt;br /&gt;
|  alcProcessContext  ||  0x1002f6d0  ||  0x0002f6d0  ||  94 (0x5e)&lt;br /&gt;
|-&lt;br /&gt;
|  alcSuspendContext  ||  0x1002f6d0  ||  0x0002f6d0  ||  95 (0x5f)&lt;br /&gt;
|-&lt;br /&gt;
|  alDeleteBuffers  ||  0x10009680  ||  0x00009680  ||  10 (0xa)&lt;br /&gt;
|-&lt;br /&gt;
|  alDeleteSources  ||  0x1001c450  ||  0x0001c450  ||  11 (0xb)&lt;br /&gt;
|-&lt;br /&gt;
|  alDisable  ||  0x1001e930  ||  0x0001e930  ||  12 (0xc)&lt;br /&gt;
|-&lt;br /&gt;
|  alDistanceModel  ||  0x1001f350  ||  0x0001f350  ||  13 (0xd)&lt;br /&gt;
|-&lt;br /&gt;
|  alDopplerFactor  ||  0x1001f170  ||  0x0001f170  ||  14 (0xe)&lt;br /&gt;
|-&lt;br /&gt;
|  alDopplerVelocity  ||  0x1001f210  ||  0x0001f210  ||  15 (0xf)&lt;br /&gt;
|-&lt;br /&gt;
|  alEnable  ||  0x1001e930  ||  0x0001e930  ||  16 (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|  alGenBuffers  ||  0x10008570  ||  0x00008570  ||  17 (0x11)&lt;br /&gt;
|-&lt;br /&gt;
|  alGenSources  ||  0x1001c110  ||  0x0001c110  ||  18 (0x12)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBoolean  ||  0x1001e9b0  ||  0x0001e9b0  ||  19 (0x13)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBooleanv  ||  0x1001ed40  ||  0x0001ed40  ||  20 (0x14)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBuffer3f  ||  0x10009500  ||  0x00009500  ||  21 (0x15)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBuffer3i  ||  0x10009500  ||  0x00009500  ||  22 (0x16)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBufferf  ||  0x10009300  ||  0x00009300  ||  23 (0x17)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBufferfv  ||  0x10009300  ||  0x00009300  ||  24 (0x18)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBufferi  ||  0x10009380  ||  0x00009380  ||  25 (0x19)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetBufferiv  ||  0x10009590  ||  0x00009590  ||  26 (0x1a)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetDouble  ||  0x1001eaa0  ||  0x0001eaa0  ||  27 (0x1b)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetDoublev  ||  0x1001ee30  ||  0x0001ee30  ||  28 (0x1c)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetEnumValue  ||  0x10018ca0  ||  0x00018ca0  ||  29 (0x1d)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetError  ||  0x10018aa0  ||  0x00018aa0  ||  30 (0x1e)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetFloat  ||  0x1001eb90  ||  0x0001eb90  ||  31 (0x1f)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetFloatv  ||  0x1001ef00  ||  0x0001ef00  ||  32 (0x20)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetInteger  ||  0x1001ec70  ||  0x0001ec70  ||  33 (0x21)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetIntegerv  ||  0x1001efd0  ||  0x0001efd0  ||  34 (0x22)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListener3f  ||  0x10019460  ||  0x00019460  ||  35 (0x23)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListener3i  ||  0x100196a0  ||  0x000196a0  ||  36 (0x24)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListenerf  ||  0x100193c0  ||  0x000193c0  ||  37 (0x25)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListenerfv  ||  0x10019510  ||  0x00019510  ||  38 (0x26)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListeneri  ||  0x10019630  ||  0x00019630  ||  39 (0x27)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetListeneriv  ||  0x10019780  ||  0x00019780  ||  40 (0x28)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetProcAddress  ||  0x10018c40  ||  0x00018c40  ||  41 (0x29)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSource3f  ||  0x10019f20  ||  0x00019f20  ||  42 (0x2a)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSource3i  ||  0x10019ff0  ||  0x00019ff0  ||  43 (0x2b)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSourcef  ||  0x1001c600  ||  0x0001c600  ||  44 (0x2c)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSourcefv  ||  0x1001c8f0  ||  0x0001c8f0  ||  45 (0x2d)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSourcei  ||  0x1001ca50  ||  0x0001ca50  ||  46 (0x2e)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetSourceiv  ||  0x1001cd80  ||  0x0001cd80  ||  47 (0x2f)&lt;br /&gt;
|-&lt;br /&gt;
|  alGetString  ||  0x1001f0b0  ||  0x0001f0b0  ||  48 (0x30)&lt;br /&gt;
|-&lt;br /&gt;
|  alIsBuffer  ||  0x100086a0  ||  0x000086a0  ||  49 (0x31)&lt;br /&gt;
|-&lt;br /&gt;
|  alIsEnabled  ||  0x1001e970  ||  0x0001e970  ||  50 (0x32)&lt;br /&gt;
|-&lt;br /&gt;
|  alIsExtensionPresent  ||  0x10018b20  ||  0x00018b20  ||  51 (0x33)&lt;br /&gt;
|-&lt;br /&gt;
|  alIsSource  ||  0x100198c0  ||  0x000198c0  ||  52 (0x34)&lt;br /&gt;
|-&lt;br /&gt;
|  alListener3f  ||  0x10018e10  ||  0x00018e10  ||  53 (0x35)&lt;br /&gt;
|-&lt;br /&gt;
|  alListener3i  ||  0x10019200  ||  0x00019200  ||  54 (0x36)&lt;br /&gt;
|-&lt;br /&gt;
|  alListenerf  ||  0x10018d00  ||  0x00018d00  ||  55 (0x37)&lt;br /&gt;
|-&lt;br /&gt;
|  alListenerfv  ||  0x10018f40  ||  0x00018f40  ||  56 (0x38)&lt;br /&gt;
|-&lt;br /&gt;
|  alListeneri  ||  0x10019190  ||  0x00019190  ||  57 (0x39)&lt;br /&gt;
|-&lt;br /&gt;
|  alListeneriv  ||  0x10019280  ||  0x00019280  ||  58 (0x3a)&lt;br /&gt;
|-&lt;br /&gt;
|  alSource3f  ||  0x10019940  ||  0x00019940  ||  59 (0x3b)&lt;br /&gt;
|-&lt;br /&gt;
|  alSource3i  ||  0x10019b70  ||  0x00019b70  ||  60 (0x3c)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcef  ||  0x1001d2f0  ||  0x0001d2f0  ||  71 (0x47)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcefv  ||  0x1001da90  ||  0x0001da90  ||  72 (0x48)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcei  ||  0x1001dc00  ||  0x0001dc00  ||  73 (0x49)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceiv  ||  0x1001e530  ||  0x0001e530  ||  74 (0x4a)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcePause  ||  0x1001a100  ||  0x0001a100  ||  61 (0x3d)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcePausev  ||  0x1001a190  ||  0x0001a190  ||  62 (0x3e)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcePlay  ||  0x1001e670  ||  0x0001e670  ||  63 (0x3f)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourcePlayv  ||  0x1001e7b0  ||  0x0001e7b0  ||  64 (0x40)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceQueueBuffers  ||  0x1001cf60  ||  0x0001cf60  ||  65 (0x41)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceRewind  ||  0x1001a440  ||  0x0001a440  ||  66 (0x42)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceRewindv  ||  0x1001a500  ||  0x0001a500  ||  67 (0x43)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceStop  ||  0x1001a270  ||  0x0001a270  ||  68 (0x44)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceStopv  ||  0x1001a330  ||  0x0001a330  ||  69 (0x45)&lt;br /&gt;
|-&lt;br /&gt;
|  alSourceUnqueueBuffers  ||  0x1001a620  ||  0x0001a620  ||  70 (0x46)&lt;br /&gt;
|-&lt;br /&gt;
|  alSpeedOfSound  ||  0x1001f2b0  ||  0x0001f2b0  ||  75 (0x4b)&lt;br /&gt;
|-&lt;br /&gt;
|  EAXGet  ||  0x1000b7d0  ||  0x0000b7d0  ||  1 (0x1)&lt;br /&gt;
|-&lt;br /&gt;
|  EAXSet  ||  0x1000ba90  ||  0x0000ba90  ||  2 (0x2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ BF2OpenAL.dll&lt;br /&gt;
|-&lt;br /&gt;
! Function Name !! Address !! Relative Address !! Ordinal&lt;br /&gt;
|-&lt;br /&gt;
|  public: __thiscall BF2VoipServer::CBF2VoipServer::CBF2VoipServer(void)  ||  0x10001380  ||  0x00001380  ||  1 (0x1)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: __thiscall BF2VoipServer::CBF2VoipServer::~CBF2VoipServer(void)  ||  0x100013d0  ||  0x000013d0  ||  2 (0x2)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: bool __thiscall BF2VoipServer::CBF2VoipServer::IsRunning(void)  ||  0x100011a0  ||  0x000011a0  ||  5 (0x5)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: class BF2VoipServer::CBF2VoipServerInstance * __thiscall BF2VoipServer::CBF2VoipServer::getInstance(unsigned int)  ||  0x100012a0  ||  0x000012a0  ||  10 (0xa)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::CreateInstance(unsigned int,class std::basic_string&amp;lt;char,struct std::char_traits&amp;lt;char&amp;gt;,class std::allocator&amp;lt;char&amp;gt; &amp;gt;,int &amp;amp;)  ||  0x10001680  ||  0x00001680  ||  3 (0x3)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::Initialize(bool)  ||  0x100011b0  ||  0x000011b0  ||  4 (0x4)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::ReleaseAllInstances(void)  ||  0x10001500  ||  0x00001500  ||  6 (0x6)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::ReleaseInstance(int)  ||  0x10001450  ||  0x00001450  ||  7 (0x7)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::Shutdown(void)  ||  0x100015d0  ||  0x000015d0  ||  8 (0x8)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: enum VOIP::VRESULT __thiscall BF2VoipServer::CBF2VoipServer::Update(void)  ||  0x100012d0  ||  0x000012d0  ||  9 (0x9)&lt;br /&gt;
 |-&lt;br /&gt;
|  public: unsigned int __thiscall BF2VoipServer::CBF2VoipServer::getNumInstances(void)  ||  0x10001280  ||  0x00001280  ||  11 (0xb)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Gamemodes&amp;diff=162</id>
		<title>Gamemodes</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Gamemodes&amp;diff=162"/>
		<updated>2021-06-16T19:09:50Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Created page with &amp;quot;Somehitng somehing gamemodes  == How to create a new gamemode ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Somehitng somehing gamemodes&lt;br /&gt;
&lt;br /&gt;
== How to create a new gamemode ==&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Main_Page&amp;diff=161</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Main_Page&amp;diff=161"/>
		<updated>2021-06-16T19:08:29Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to the BF2 and BF2:Project Reality Technical Information and Modding Wiki!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This website is intended to serve as a resource for the BF2/PR community, a repository of technical information related to the games Battlefield: 2 and the modification Project Reality. Specifically, we hope to collect a lot of useful information here related to using the embedded Python capabilities of these games, modding, game statistics, administration, etc.&lt;br /&gt;
&lt;br /&gt;
This website is a &amp;quot;wiki&amp;quot;, meaning that anyone can edit its contents in any way--add pages, change them, even delete them completely. Anyone can freely access the material here; if you&#039;d like to edit it, too, all you have to do to is to create a (free) login for yourself, so we can keep track of who made what changes. Generally speaking, please try to keep the information on each page factual; if you&#039;d like to discuss the content of a page, put the discussion on the related &amp;quot;talk&amp;quot; page (click the &amp;quot;discussion&amp;quot; tab at the top of the page in question).&lt;br /&gt;
&lt;br /&gt;
Credit to bf2tech.org[http://bf2tech.org] for the initial content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Special:AllPages|View All Articles on This Wiki]] &lt;br /&gt;
&lt;br /&gt;
The main topic areas of the wiki:&lt;br /&gt;
&lt;br /&gt;
* Project Reality Python&lt;br /&gt;
** [[Reality Logger]]&lt;br /&gt;
* Battlefield Python&lt;br /&gt;
** [[Learning Python]]&lt;br /&gt;
** The [[Big Picture]] of how Python hooks into BF2&lt;br /&gt;
** [[Event Reference|BF2 Event Reference]]&lt;br /&gt;
** [[Object Reference|BF2 Objects, Methods, and Attributes Reference]]&lt;br /&gt;
** [[Scripts|Python scripts]]: Complete scripts for inspiration and copying&lt;br /&gt;
** [[Python Cookbook|BF2 Python Cookbook]]: Short examples of how to do things&lt;br /&gt;
** [[Loading Python .pyd extensions]]&lt;br /&gt;
** [[Debugging]]&lt;br /&gt;
* Battlefield Networking&lt;br /&gt;
** [[Port Usage]]&lt;br /&gt;
** [[Protocols]]&lt;br /&gt;
** Bandwidth Requirements &lt;br /&gt;
* Battlefield Modding&lt;br /&gt;
** [[ConGrammar|Console / .con file Grammar]]&lt;br /&gt;
** [[BF2 Commands|Battlefield 2 Console Commands]]&lt;br /&gt;
** [[System Requirements]]&lt;br /&gt;
** [[File Formats]]&lt;br /&gt;
** [[File Checksums]]&lt;br /&gt;
** [[BF2 Statistics|Statistics Gathering]]&lt;br /&gt;
** [http://www.tweakguides.com/BF2_8.html Console Command Reference]&lt;br /&gt;
** [[Command Line Options]]&lt;br /&gt;
** [[Quick Tips]]&lt;br /&gt;
** [[Useful Software]]&lt;br /&gt;
** [[BF2CC|BF2CC Information]]&lt;br /&gt;
** [[ModManager]]&lt;br /&gt;
** [[Prospect]]&lt;br /&gt;
** [[Gamemodes|Creating a Gamemode]]&lt;br /&gt;
* [[BF2 Internals|Battlefield 2 Internals]]&lt;br /&gt;
* [[BF2 Changelog|Battlefield 2 Changelog]]&lt;br /&gt;
* Links to Other Useful BF2 Websites &lt;br /&gt;
&lt;br /&gt;
Here&#039;s a list of mysteries that we&#039;d like to solve and document here.&lt;br /&gt;
&lt;br /&gt;
If you have a BF2-related programming, modding, or admin project, you are welcome to create wiki pages here for your project, and to link to those pages from the wiki main page. If your project falls into one of those categories, the only other requirements are that any software must be licensed using an OSI-approved license, and your text must be licensed under an OSI-license or a Creative Commons license, such as the license used by this wiki itself. The BF2 Tech Wiki, its editors, and its sponsors make no guarantees or waranties whatsoever regarding anything; this wiki is simply made available to the BF2 community as a public service.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=160</id>
		<title>User:UTurista</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=160"/>
		<updated>2021-03-18T15:46:01Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Banana.png|thumb|banana]]&lt;br /&gt;
Hello World!!!&lt;br /&gt;
Hello again!!&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=File:Banana.png&amp;diff=159</id>
		<title>File:Banana.png</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=File:Banana.png&amp;diff=159"/>
		<updated>2021-03-18T15:45:50Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sd&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=158</id>
		<title>User:UTurista</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=158"/>
		<updated>2021-03-18T15:37:51Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello World!!!&lt;br /&gt;
Hello again!!&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=157</id>
		<title>User:UTurista</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=157"/>
		<updated>2021-03-18T09:58:40Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello World!!!&lt;br /&gt;
Hello again&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=148</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=148"/>
		<updated>2018-07-01T16:16:40Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: HEARTBEAT =&lt;br /&gt;
&lt;br /&gt;
Packet sent by the game server to the Master Server every 60s with the server&#039;s information.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
There is no request. Servers send this information every 60s so they can be considered &#039;alive&#039; and thus displayed in the server browser.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x03&amp;lt;/span&amp;gt;&#039;&#039; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;localIPs&amp;gt; &amp;lt;port&amp;gt; &amp;lt;natneg&amp;gt; &amp;lt;stateChanged&amp;gt; &amp;lt;gamename&amp;gt; &amp;lt;publicInfo&amp;gt; &amp;lt;serverKeys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== localIPs ====&lt;br /&gt;
Present when there&#039;s at least one local IP available.&lt;br /&gt;
&lt;br /&gt;
A list composed by strings. Each string starts with &#039;localip&#039; followed by a (sequential) number, a null character, and the the IP in IPv4 dotted-decimal notation, eg:&lt;br /&gt;
&lt;br /&gt;
 localip0 &#039;&#039;0x00&#039;&#039; 192.168.1.3 &#039;&#039;0x00&#039;&#039; localip1 &#039;&#039;0x00&#039;&#039; 192.168.1.4 &#039;&#039;0x00&#039;&#039; (42 bytes)&lt;br /&gt;
&lt;br /&gt;
==== port ====&lt;br /&gt;
Always available.&lt;br /&gt;
&lt;br /&gt;
String literal &#039;&#039;localport&#039;&#039; folowed by the string representation of the integer that represents the port, eg:  &lt;br /&gt;
  localport &#039;&#039;0x00&#039;&#039; 29900 (15 bytes)&lt;br /&gt;
&lt;br /&gt;
==== natneg ====&lt;br /&gt;
&lt;br /&gt;
==== stateChanged ====&lt;br /&gt;
&lt;br /&gt;
==== gamename ====&lt;br /&gt;
&lt;br /&gt;
==== publicInfo ====&lt;br /&gt;
&lt;br /&gt;
==== serverKeys ====&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=147</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=147"/>
		<updated>2018-07-01T16:16:21Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* localIPs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: HEARTBEAT =&lt;br /&gt;
&lt;br /&gt;
Packet sent by the game server to the Master Server every 60s with the server&#039;s information.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
There is no request. Servers send this information every 60s so they can be considered &#039;alive&#039; and thus displayed in the server browser.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x03&amp;lt;/span&amp;gt;&#039;&#039; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;localIPs&amp;gt; &amp;lt;port&amp;gt; &amp;lt;natneg&amp;gt; &amp;lt;stateChanged&amp;gt; &amp;lt;gamename&amp;gt; &amp;lt;publicInfo&amp;gt; &amp;lt;serverKeys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== localIPs ====&lt;br /&gt;
Present when there&#039;s at least one local IP available.&lt;br /&gt;
&lt;br /&gt;
A list composed by strings. Each string starts with &#039;localip&#039; followed by a (sequential) number, a null character, and the the IP in IPv4 dotted-decimal notation, eg:&lt;br /&gt;
&lt;br /&gt;
 localip0 &#039;&#039;0x00&#039;&#039; 192.168.1.3 &#039;&#039;0x00&#039;&#039; localip1 &#039;&#039;0x00&#039;&#039; 192.168.1.4 &#039;&#039;0x00&#039;&#039; (42 bytes)&lt;br /&gt;
&lt;br /&gt;
==== port ====&lt;br /&gt;
Always available.&lt;br /&gt;
&lt;br /&gt;
String literal &#039;&#039;localport&#039;&#039; folowed by the string representation of the integer that represents the port, eg:  &lt;br /&gt;
  localport 0x00 29900 (15 bytes)&lt;br /&gt;
&lt;br /&gt;
==== natneg ====&lt;br /&gt;
&lt;br /&gt;
==== stateChanged ====&lt;br /&gt;
&lt;br /&gt;
==== gamename ====&lt;br /&gt;
&lt;br /&gt;
==== publicInfo ====&lt;br /&gt;
&lt;br /&gt;
==== serverKeys ====&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=146</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=146"/>
		<updated>2018-07-01T16:15:37Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: HEARTBEAT =&lt;br /&gt;
&lt;br /&gt;
Packet sent by the game server to the Master Server every 60s with the server&#039;s information.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
There is no request. Servers send this information every 60s so they can be considered &#039;alive&#039; and thus displayed in the server browser.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x03&amp;lt;/span&amp;gt;&#039;&#039; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;localIPs&amp;gt; &amp;lt;port&amp;gt; &amp;lt;natneg&amp;gt; &amp;lt;stateChanged&amp;gt; &amp;lt;gamename&amp;gt; &amp;lt;publicInfo&amp;gt; &amp;lt;serverKeys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== localIPs ====&lt;br /&gt;
Present when there&#039;s at least one local IP available.&lt;br /&gt;
&lt;br /&gt;
A list composed by strings. Each string starts with &#039;localip&#039; followed by a (sequential) number, a null character, and the the IP in IPv4 dotted-decimal notation, eg:&lt;br /&gt;
&lt;br /&gt;
 localip0 &#039;&#039;0x00&#039;&#039; 192.168.1.3 &#039;&#039;0x00&#039;&#039; localip1 &#039;&#039;0x00&#039;&#039; 192.168.1.4 &#039;&#039;0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== port ====&lt;br /&gt;
Always available.&lt;br /&gt;
&lt;br /&gt;
String literal &#039;&#039;localport&#039;&#039; folowed by the string representation of the integer that represents the port, eg:  &lt;br /&gt;
  localport 0x00 29900 (15 bytes)&lt;br /&gt;
&lt;br /&gt;
==== natneg ====&lt;br /&gt;
&lt;br /&gt;
==== stateChanged ====&lt;br /&gt;
&lt;br /&gt;
==== gamename ====&lt;br /&gt;
&lt;br /&gt;
==== publicInfo ====&lt;br /&gt;
&lt;br /&gt;
==== serverKeys ====&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=145</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=145"/>
		<updated>2018-07-01T16:08:52Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* localIPs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: HEARTBEAT =&lt;br /&gt;
&lt;br /&gt;
Packet sent by the game server to the Master Server every 60s with the server&#039;s information.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
There is no request. Servers send this information every 60s so they can be considered &#039;alive&#039; and thus displayed in the server browser.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x03&amp;lt;/span&amp;gt;&#039;&#039; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;localIPs&amp;gt; &amp;lt;port&amp;gt; &amp;lt;natneg&amp;gt; &amp;lt;stateChanged&amp;gt; &amp;lt;gamename&amp;gt; &amp;lt;publicInfo&amp;gt; &amp;lt;serverKeys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== localIPs ====&lt;br /&gt;
Present when there&#039;s at least one local IP available.&lt;br /&gt;
&lt;br /&gt;
A list composed by strings. Each string starts with &#039;localip&#039; followed by a (sequential) number, a null character, and the the IP in IPv4 dotted-decimal notation, eg:&lt;br /&gt;
&lt;br /&gt;
 localip0 &#039;&#039;0x00&#039;&#039; 192.168.1.3 &#039;&#039;0x00&#039;&#039; localip1 &#039;&#039;0x00&#039;&#039; 192.168.1.4 &#039;&#039;0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== port ====&lt;br /&gt;
&lt;br /&gt;
==== natneg ====&lt;br /&gt;
&lt;br /&gt;
==== stateChanged ====&lt;br /&gt;
&lt;br /&gt;
==== gamename ====&lt;br /&gt;
&lt;br /&gt;
==== publicInfo ====&lt;br /&gt;
&lt;br /&gt;
==== serverKeys ====&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=144</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=144"/>
		<updated>2018-07-01T16:08:37Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* localIPs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: HEARTBEAT =&lt;br /&gt;
&lt;br /&gt;
Packet sent by the game server to the Master Server every 60s with the server&#039;s information.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
There is no request. Servers send this information every 60s so they can be considered &#039;alive&#039; and thus displayed in the server browser.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x03&amp;lt;/span&amp;gt;&#039;&#039; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;localIPs&amp;gt; &amp;lt;port&amp;gt; &amp;lt;natneg&amp;gt; &amp;lt;stateChanged&amp;gt; &amp;lt;gamename&amp;gt; &amp;lt;publicInfo&amp;gt; &amp;lt;serverKeys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== localIPs ====&lt;br /&gt;
Present when there&#039;s at least on local IP available.&lt;br /&gt;
&lt;br /&gt;
A list composed by strings. Each string starts with &#039;localip&#039; followed by a (sequential) number, a null character, and the the IP in IPv4 dotted-decimal notation, eg:&lt;br /&gt;
&lt;br /&gt;
 localip0 &#039;&#039;0x00&#039;&#039; 192.168.1.3 &#039;&#039;0x00&#039;&#039; localip1 &#039;&#039;0x00&#039;&#039; 192.168.1.4 &#039;&#039;0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== port ====&lt;br /&gt;
&lt;br /&gt;
==== natneg ====&lt;br /&gt;
&lt;br /&gt;
==== stateChanged ====&lt;br /&gt;
&lt;br /&gt;
==== gamename ====&lt;br /&gt;
&lt;br /&gt;
==== publicInfo ====&lt;br /&gt;
&lt;br /&gt;
==== serverKeys ====&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=143</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=143"/>
		<updated>2018-07-01T16:07:59Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* Reply */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: HEARTBEAT =&lt;br /&gt;
&lt;br /&gt;
Packet sent by the game server to the Master Server every 60s with the server&#039;s information.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
There is no request. Servers send this information every 60s so they can be considered &#039;alive&#039; and thus displayed in the server browser.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x03&amp;lt;/span&amp;gt;&#039;&#039; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;localIPs&amp;gt; &amp;lt;port&amp;gt; &amp;lt;natneg&amp;gt; &amp;lt;stateChanged&amp;gt; &amp;lt;gamename&amp;gt; &amp;lt;publicInfo&amp;gt; &amp;lt;serverKeys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== localIPs ====&lt;br /&gt;
Always present.&lt;br /&gt;
A list composed by strings. Each string starts with &#039;localip&#039; followed by a (sequential) number, a null character, and the the IP in IPv4 dotted-decimal notation, eg:&lt;br /&gt;
&lt;br /&gt;
 localip0 &#039;&#039;0x00&#039;&#039; 192.168.1.3 &#039;&#039;0x00&#039;&#039; localip1 &#039;&#039;0x00&#039;&#039; 192.168.1.4 &#039;&#039;0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== port ====&lt;br /&gt;
&lt;br /&gt;
==== natneg ====&lt;br /&gt;
&lt;br /&gt;
==== stateChanged ====&lt;br /&gt;
&lt;br /&gt;
==== gamename ====&lt;br /&gt;
&lt;br /&gt;
==== publicInfo ====&lt;br /&gt;
&lt;br /&gt;
==== serverKeys ====&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=142</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=142"/>
		<updated>2018-07-01T16:06:56Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Added more info to HEARTBEAT&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: HEARTBEAT =&lt;br /&gt;
&lt;br /&gt;
Packet sent by the game server to the Master Server every 60s with the server&#039;s information.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
There is no request. Servers send this information every 60s so they can be considered &#039;alive&#039; and thus displayed in the server browser.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x03&amp;lt;/span&amp;gt;&#039;&#039; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;localIPs&amp;gt; &amp;lt;port&amp;gt; &amp;lt;natneg&amp;gt; &amp;lt;stateChanged&amp;gt; &amp;lt;gamename&amp;gt; &amp;lt;publicInfo&amp;gt; &amp;lt;serverKeys&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== localIPs ====&lt;br /&gt;
Always present.&lt;br /&gt;
A list composed by strings. Each string starts with &#039;localip&#039; followed by a (sequential) number, a null character, and the the IP in IPv4 dotted-decimal notation, eg:&lt;br /&gt;
&lt;br /&gt;
 localip0 &#039;&#039;0x00&#039;&#039; 192.168.1.3 &#039;&#039;0x00&#039;&#039; localip1 &#039;&#039;0x00&#039;&#039; 192.168.1.4 &#039;&#039;0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=141</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=141"/>
		<updated>2018-07-01T15:50:39Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* Protocol 03: PACKET_HEARTBEAT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: HEARTBEAT =&lt;br /&gt;
&lt;br /&gt;
Packet sent by the game server to the Master Server every 60s with the server&#039;s information.&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=140</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=140"/>
		<updated>2018-07-01T15:09:40Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
= Protocol 03: PACKET_HEARTBEAT =&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=36</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=36"/>
		<updated>2018-04-25T21:15:52Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Fixed Gamespy SDK link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [https://files.uturista.pt/gamespy/ Gamespy SDK] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=35</id>
		<title>User:UTurista</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=35"/>
		<updated>2018-04-19T23:43:18Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello World!!!&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Object_Reference&amp;diff=34</id>
		<title>Object Reference</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Object_Reference&amp;diff=34"/>
		<updated>2017-12-27T22:04:19Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* RCon Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Python program interact with Battlefield 2 using &amp;quot;objects&amp;quot;, as well as &amp;quot;methods&amp;quot; (functions) and &amp;quot;attributes&amp;quot; (data) that are part of those objects. This section is a reference to the objects, methods, and attributes in BF2 that can be accessed and manipulated by Python programs.&lt;br /&gt;
&lt;br /&gt;
== host ==&lt;br /&gt;
&lt;br /&gt;
The host object encapsulates the interfaces between the main BF2 engine (written in C++) and Python modules.  Most host methods will generally not need to be used directly from within Python modules, as standard BF2 Python modules (like bf2.GameLogic, for example) provide object-oriented wrappers around most of the raw BF2 engine functions.&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import host&amp;lt;/code&amp;gt; to access the methods and attributes shown here.&lt;br /&gt;
&lt;br /&gt;
=== Event Handler Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.registerHandler(&#039;EventName&#039;, eventHandler[, alwaysCall])&amp;lt;/code&amp;gt;&lt;br /&gt;
: Registers a function to handle an event. If &amp;lt;code&amp;gt;alwaysCall&amp;lt;/code&amp;gt; is not specified the handler will only be called when the game is in the &amp;quot;Playing&amp;quot; state--not in the &amp;quot;Pregame&amp;quot; and &amp;quot;Postgame&amp;quot; states. If you would like it to run in Pregame and Postgame as well, &amp;lt;code&amp;gt;alwaysCall&amp;lt;/code&amp;gt; must be specified and evaluate as true (e.g. &amp;quot;1&amp;quot;).&lt;br /&gt;
; &amp;lt;code&amp;gt;host.registerGameStatusHandler(gameStatusEventHandler)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Registers a function to handle a game status event.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.unregisterGameStatusHandler(gameStatusEventHandler)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Unregisters a game status event-handling function.&lt;br /&gt;
&lt;br /&gt;
=== Trigger Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.trig_create(object, callback, objName, radius, unknownBool, data)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.trig_getObjects(trig_id)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.trig_destroyAll()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.trig_destroy(trig_id)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Global Stats Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_gamespyStatsNewGame()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_gamespyStatsEndGame()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_gamespyStatsSendSnapshotFinal(snapShot)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_gamespyStatsSendSnapshotUpdate&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_getStatsKeyVal(key)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_plrRequestAwards(playerIndex, unknown, unknown)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_plrRequestStats(playerIndex, unknown, urlToStatType)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Presumably returns the specified stat of the specified player.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_plrRequestUnlocks(playerIndex, unknown)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Presumably returns the specified player&#039;s unlocks.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_plrSetUnlocks(playerIndex, unknown, unknown)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pers_plrAwardMedal&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;sh&amp;quot; Methods (SwiffHost?) ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sh_setEnableCommander(bool)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Enables or disables the commander position.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;gl&amp;quot; Methods (GameLogic?) ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.gl_sendEndOfRoundData(dataString)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Presumably sends stats-related information to clients when a round ends.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;sgl&amp;quot; Methods (ServerGameLogic?) ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_getSettingsBool&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_sendTextMessage(playerId, 10, 1, message)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Send a server message to one player. Working Status Unknown&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_sendRankEvent(playerIndex, rank, score)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_sendMedalEvent(playerIndex, type, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_sendPythonEvent&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_sendGameLogicEvent(playerID, event, data)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_sendHudEvent(playerID, event, data)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_getIsAIGame()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Presumably returns whether or not the current game has AI.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_getControlPointsInGroup&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_endGame(winner, victoryType)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Presumably ends a current game, awarding victory of victoryType to winner.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_getParam(name, unknown, unknown)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_setParam(name, unknown, unknown, unknown)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_getWorldSize()&amp;lt;/code&amp;gt;&lt;br /&gt;
: returns a tuple giving the north/south and east/west dimensions of the current map, more-or-less in meters.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_getMapName()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the current map name.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.sgl_getModDirectory()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the directory containing the currently active mod.&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;ss&amp;quot; Methods (Server Settings?) ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.ss_getParam(parameter)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns value of specified setting.&lt;br /&gt;
: Settings include:&lt;br /&gt;
:: ticketRatio&lt;br /&gt;
:: teamRatioPct&lt;br /&gt;
:: maxPlayers&lt;br /&gt;
:: gameMode&lt;br /&gt;
:: mapName&lt;br /&gt;
:: timeLimit&lt;br /&gt;
:: scoreLimit&lt;br /&gt;
:: autoBalance&lt;br /&gt;
:: tkpEnabled&lt;br /&gt;
:: tkpNeeded&lt;br /&gt;
:: tkpDefault&lt;br /&gt;
:: globRank&lt;br /&gt;
:: globUnlocks&lt;br /&gt;
&lt;br /&gt;
: You cannot find out server name, port and other similar information this way. Instead, use f.e. host.rcon_invoke(&#039;sv.serverName&#039;) to get the server name.&lt;br /&gt;
&lt;br /&gt;
=== Object Manager Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.omgr_getObjectsOfTemplate(template)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.omgr_getObjectsOfType(type)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timer Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.timer_created(timer)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.timer_getTimers&amp;lt;/code&amp;gt; - Do not use, unfinished DICE code: Creates a Tuple and only fills one slot. Trying to access the other slots will crash the server.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.timer_destroy(timer)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.timer_getWallTime()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Return the number of seconds since server started; see [[BF2 Time]]&lt;br /&gt;
&lt;br /&gt;
=== Player Manager Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_enableScoreEvents&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_getScore(playerIndex, name)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Gets value of score name of specified player.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_setScore(playerIndex, name, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Sets value of score name of specified player.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_p_get(name, playerIndex)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_p_set(name, playerIndex, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_isIndexValid(index)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Checks the validity of specified player index.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_getCommander()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Presumably returns Player object for the current commander.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_getPlayers()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns current player objects.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.pmgr_getNumberOfPlayers()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns number of players.&lt;br /&gt;
&lt;br /&gt;
=== RCon Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.rcon_invoke(command)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Executes a server console command.&lt;br /&gt;
; &amp;lt;code&amp;gt;host.rcon_feedback(playerid, message)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Send a message to an in-game player RCon client.&lt;br /&gt;
&lt;br /&gt;
[[BF2_Commands|List of available host.rcon_invoke commands]]&lt;br /&gt;
&lt;br /&gt;
=== Logging Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;host.log(message)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Send a message to the log.&lt;br /&gt;
&lt;br /&gt;
== PhysicalObject ==&lt;br /&gt;
&lt;br /&gt;
PhysicalObjects represent physical things in the BF2 game world; as such, they have the properties of real objects in the physical world: properties like position (X, Y, Z coordinates) and orientation (rotation), and can contain, and be contained by, other PhysicalObjects.  PhysicalObjects appear to be implemented as C++ objects in the game engine which the embedded Python engine has access to, but since they are game engine objects, they are not defined anywhere in Python, and cannot be created directly in Python--but they can be accessed from Python. No special imports are necessary to manipulate these objects.&lt;br /&gt;
&lt;br /&gt;
Please note that since these are not native Python objects, we don&#039;t know what they are actually named inside the game engine; &amp;quot;PhysicalObject&amp;quot;, as well as the names of other types of objects that inherit from that class, are made up for convienience. We also can&#039;t see into the game engine code to see if the hierarchial structure of these classes is what is presented here--for example, VehicleObject and SoldierObject may, in fact, be a single class; the hierarchy of PhysicalObject&#039;s decendents given here should nevertheless be equivalent to whatever the real hierarchy is.&lt;br /&gt;
&lt;br /&gt;
PhysicalObject is a base class whose methods and attributes are inherited by several sub-classes.&lt;br /&gt;
&lt;br /&gt;
=== Methods for instances of PhysicalObject ===&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.isValid()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.getTemplateProperty()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.getPosition()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.setPosition( (X, Y, Z) )&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.getRotation()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.setRotation( (A, B, C) )&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.getParent()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns PhysicalObject that contains this instance, if any&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.getChildren()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns a tuple of PhysicalObjects contained by this instance&lt;br /&gt;
&lt;br /&gt;
For information about the coordinate system used by the Position and Rotation methods, see the page on [[BF2 Coordinates]].&lt;br /&gt;
&lt;br /&gt;
The known properties available via the getTemplateProperty method are:&lt;br /&gt;
; &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt;&lt;br /&gt;
: (For control points only.)&lt;br /&gt;
; &amp;lt;code&amp;gt;ControlPointID&amp;lt;/code&amp;gt;&lt;br /&gt;
: (For control points only.)&lt;br /&gt;
&lt;br /&gt;
=== Attributes for instances of PhysicalObject ===&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.templateName&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.isControlPoint&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.isPlayerControlObject&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.hasArmor&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;physicalObject.token&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WeaponObject ===&lt;br /&gt;
A WeaponObject is used to represent a weapon in BF2.  The WeaponObject class inherits the methods and attributes of PhysicalObject, with no additonal methods or attributes.&lt;br /&gt;
&lt;br /&gt;
=== KitObject ===&lt;br /&gt;
A KitObject is used to represent a &amp;quot;kit&amp;quot; in BF2.  The KitObject class inherits the methods and attributes of PhysicalObject, with no additonal methods or attributes.&lt;br /&gt;
&lt;br /&gt;
=== ControlPointObject ===&lt;br /&gt;
A ControlPointObject is used to represent a control point in BF2.  The ControlPointObject class inherits the methods and attributes of PhysicalObject, with the following additional methods and attributes:&lt;br /&gt;
&lt;br /&gt;
==== Additional Methods ====&lt;br /&gt;
; &amp;lt;code&amp;gt;ControlPointObject.cp_getParam(&#039;parameter&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;ControlPointObject.cp_setParam(&#039;parameter&#039;, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Additional Attributes ====&lt;br /&gt;
; &amp;lt;code&amp;gt;ControlPointObject.flagPosition&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns 0=top, 1=middle, 2=bottom&lt;br /&gt;
; &amp;lt;code&amp;gt;ControlPointObject.lastAttackingTeam&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;ControlPointObject.triggerId&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal Properties ====&lt;br /&gt;
ControlPointObjects also have a number of internal properties that are accessed through the &amp;lt;code&amp;gt;cp_getParam&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cp_setParam&amp;lt;/code&amp;gt; methods:&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;isHemisphere&amp;lt;/code&amp;gt;&lt;br /&gt;
: 0 or 1, indicating if the control point capture area is a hemisphere or not.&lt;br /&gt;
; &amp;lt;code&amp;gt;team&amp;lt;/code&amp;gt;&lt;br /&gt;
: Team the capture point belongs to: 0 for neutral, 1 for team 1, and 2 for team 2. Updating this value also changes the minimap and flag tag indicator.&lt;br /&gt;
; &amp;lt;code&amp;gt;flag&amp;lt;/code&amp;gt;&lt;br /&gt;
: The flag image used in the control point; 1 for team 1&#039;s flag, 2 for team 2&#039;s.&lt;br /&gt;
; &amp;lt;code&amp;gt;areaValue&amp;lt;/code&amp;gt;&lt;br /&gt;
: The weighting value for this control point&lt;br /&gt;
; &amp;lt;code&amp;gt;unableToChangeTeam&amp;lt;/code&amp;gt;&lt;br /&gt;
: Whether or not this control point is capturable (0) or not (1)&lt;br /&gt;
; &amp;lt;code&amp;gt;timeToGetControl&amp;lt;/code&amp;gt;&lt;br /&gt;
: How many seconds it takes to get control of this control point&lt;br /&gt;
; &amp;lt;code&amp;gt;timeToLoseControl&amp;lt;/code&amp;gt;&lt;br /&gt;
: How many seconds it takes to get control of this control point&lt;br /&gt;
; &amp;lt;code&amp;gt;onlyTakeableByTeam&amp;lt;/code&amp;gt;&lt;br /&gt;
: Whether (1) or not (0) this control point is only capturable by one team&lt;br /&gt;
; &amp;lt;code&amp;gt;takeOverChangePerSecond&amp;lt;/code&amp;gt;&lt;br /&gt;
: Capture speed; speed at which the flag at this control point raises or lowers.&lt;br /&gt;
; &amp;lt;code&amp;gt;enemyTicketLossWhenCaptured&amp;lt;/code&amp;gt;&lt;br /&gt;
: Ticket loss caused to the enemy when this control point is captured &#039;&#039;(needs to be verified)&#039;&#039;&lt;br /&gt;
; &amp;lt;code&amp;gt;playerId&amp;lt;/code&amp;gt;&lt;br /&gt;
: &#039;&#039;Unknown; may set the playerID of the player that captured this control point first (the first player to arrive, not assisting players?)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== VehicleObject ===&lt;br /&gt;
&lt;br /&gt;
A VehicleObject represents a BF2 vehicle.  The VehicleObject class inherits the methods and attributes of PhysicalObject, with several additional methods.  SoldierObject, used to represent the physical body of player, is a sub-class of VehicleObject.&lt;br /&gt;
&lt;br /&gt;
==== Additional Methods ====&lt;br /&gt;
; &amp;lt;code&amp;gt;vehicleObject.getDamage()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;vehicleObject.setDamage(intValue)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;vehicleObject.getIsWreck()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns boolean, 1 if the vehicle is destroyed&lt;br /&gt;
; &amp;lt;code&amp;gt;vehicleObject.getOccupyingPlayers()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns an array with index 0 being the driver&lt;br /&gt;
; &amp;lt;code&amp;gt;vehicleObject.getIsRemoteControlled()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The getDamage() and setDamage() methods actually read/set the health of the vehicle. Transport helicopters start with 1500, tanks with 1000 and light jeeps with 750. They all explode when the damage reaches 0.&lt;br /&gt;
&lt;br /&gt;
=== SoldierObject ===&lt;br /&gt;
A SoldierObject represents the physical body of a human or AI player in BF2. The SoldierObject class inherits the methods and attributes of VehicleObject, with no additonal methods or attributes. (Note: it appears that within the game engine, SoldierObject and VehicleObject may actually be the exact same thing; conceptually, though, it helps to think of SoldierObject as a subclass of VehicleObject).&lt;br /&gt;
&lt;br /&gt;
It is important to pay attention to the destinction between a player&#039;s &amp;quot;physical&amp;quot; body in the game, which is represented by an instance of the SoldierObject class, having position, orientation, health, etc., and the in-game &amp;quot;spirit&amp;quot; of that player, which is represented by an instance of the bf2.PlayerManager.Player class, having properties like a name, squad, profile ID, etc.  The bf2.PlayerManager.Player (&amp;quot;spirit&amp;quot;) is created when a player connects to the server, and persists as long as the server continues running, even across game rounds (and disconnect/reconnects--if the player disconnects and then reconnects, the server tries to match them up with an existing bf2.PlayerManager.Player object).  By contrast, a player remains associated with a SoldierObject only as long as they remain alive; as soon as they die, their association with the SoldierObject is broken; when they respawn, a new SoldierObject instance is created, and becomes associated with the player.  That is to say, between dying and respawning, the player&#039;s &amp;quot;spirit&amp;quot; leaves their first &amp;quot;body&amp;quot; and is &amp;quot;reincarnated&amp;quot; in a new &amp;quot;body&amp;quot;.  Is that metaphysical enough for you?&lt;br /&gt;
&lt;br /&gt;
== bf2.GameStatus ==&lt;br /&gt;
&lt;br /&gt;
Just used as a container for the constant values returned by callbacks from the &amp;lt;code&amp;gt;GameStatusChanged&amp;lt;/code&amp;gt; event:&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.GameStatus.Playing&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.GameStatus.EndGame&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.GameStatus.PreGame&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.GameStatus.Paused&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.GameStatus.RestartServer&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.GameStatus.NotConnected&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import bf2&amp;lt;/code&amp;gt; to access these class attributes.&lt;br /&gt;
&lt;br /&gt;
== bf2.GameLogic.GameLogic ==&lt;br /&gt;
&lt;br /&gt;
A wrapper around lots of BF2 engine stuff accessible through host, apparently to make it more Pythonic. During its initialization the bf2 class instantiates this class as the singleton object &amp;lt;code&amp;gt;bf2.gameLogic&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import bf2&amp;lt;/code&amp;gt; to access the methods and attributes of this object.&lt;br /&gt;
&lt;br /&gt;
=== Methods for the singleton object ===&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getModDir()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getMapName()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getWorldSize()&amp;lt;/code&amp;gt;&lt;br /&gt;
: returns a tuple giving the north/south and east/west dimensions of the current map, more-or-less in meters.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getTeamName(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.isAIGame()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.sendClientCommand(playerId, command, args)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Appears to tell game engine to prompt a player for input; the player&#039;s response returns control to Python by generating a [[Event Reference#Command Events|ClientCommand]] event; command is typically a numeric value, args can be anything, but is typically a tuple or list.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.sendGameEvent(playerObject, event, data)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Tells the BF2 game engine to cause a [[GameEvent]] to occur.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.sendMedalEvent(playerObject, type, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.sendRankEvent(playerObject, rank, score)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.sendHudEvent(playerObject, event, data)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Tells the BF2 game engine to cause a [[HudEvent]] to occur.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.sendServerMessage(playerId, message)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getTicketState(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setTicketState(team, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getTickets(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setTickets(team, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getDefaultTickets(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getTicketChangePerSecond(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setTicketChangePerSecond(team, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getTicketLimit(team, id)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setTicketLimit(team, id, value)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getDefaultTicketLossPerMin(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getDefaultTicketLossAtEndPerMin()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getWinner()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.getVictoryType()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setHealPointLimit(value)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Percentage heal required to trigger a [[Event Reference#Player Events|PlayerHealPoint]] event.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setRepairPointLimit(value)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Percentage heal required to trigger a [[Event Reference#Player Events|PlayerRepairPoint]] event.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setGiveAmmoPointLimit(value)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Percentage heal required to trigger a [[Event Reference#Player Events|PlayerGiveAmmoPoint]] event.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setTeamDamagePointLimit(value)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Percentage heal required to trigger a [[Event Reference#Player Events|PlayerTeamDamagePoint]] event.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.gameLogic.setTeamVehicleDamagePointLimit(value)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bf2.GameLogic.ServerSettings ==&lt;br /&gt;
&lt;br /&gt;
Another wrapper around more BF2 engine stuff that&#039;s accessible through host; this class makes it accessing these things cleaner and more Pythonic. During its initialization the bf2 class instantiates this class as the singleton object bf2.serverSettings.&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import bf2&amp;lt;/code&amp;gt; to access the methods and attributes of this object.&lt;br /&gt;
&lt;br /&gt;
=== Methods for the singleton object ===&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getTicketRatio()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getTeamRatioPercent()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getMaxPlayers()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getGameMode()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getMapName()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getTimeLimit()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getScoreLimit()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getAutoBalanceTeam()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getTKPunishEnabled()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getTKNumPunishToKick()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getTKPunishByDefault()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getUseGlobalRank()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.serverSettings.getUseGlobalUnlocks()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You cannot find out server name, port and other similar information this way. Instead, use f.e. host.rcon_invoke(&#039;sv.serverName&#039;) to get the server name.&lt;br /&gt;
&lt;br /&gt;
== bf2.ObjectManager.ObjectManager ==&lt;br /&gt;
&lt;br /&gt;
During its initialization the bf2 class instantiates this class as the singleton object bf2.objectManager. This object can be used by Python to get access to internal game engine C++ objects. A list of the available object types can be found [[Game Engine Object Types|here]], and a list of available object templates can be found [[Game Engine Object Templates|here]].&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import bf2&amp;lt;/code&amp;gt; to access the methods and attributes of this object.&lt;br /&gt;
&lt;br /&gt;
=== Methods for the singleton object ===&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.objectManager.getObjectsOfType(&#039;object type&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.objectManager.getObjectsOfTemplate(&#039;object template&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== bf2.PlayerManager.PlayerScore ==&lt;br /&gt;
&lt;br /&gt;
Objects of this class maintain a long list of player score attributes.  They are used inside of objects of the Player class; for any Player object x, &amp;lt;code&amp;gt;x.score&amp;lt;/code&amp;gt; is an object of class PlayerScore.&lt;br /&gt;
&lt;br /&gt;
You will not normally create objects of this class; they are created automatically as part of the Player class when Player objects are created. No special imports are necessary to access methods and attributes of these objects.&lt;br /&gt;
&lt;br /&gt;
There is also a separate &amp;lt;code&amp;gt;player.stats&amp;lt;/code&amp;gt; object, which tracks different information. You can use the following code fragment to see all of the variables in the &amp;lt;code&amp;gt;player.stats&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
for s in vars(player.stats):&lt;br /&gt;
	print str(s)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Class methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;reset()&amp;lt;/code&amp;gt;&lt;br /&gt;
: resets all score attributes stored within the object itself.&lt;br /&gt;
&lt;br /&gt;
=== Class attributes stored in the PlayerScore object ===&lt;br /&gt;
; &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;heals&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;ammos&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;repairs&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;damageAssists&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;passengerAssists&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;driverAssists&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;targetAssists&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;driverSpecials&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;revives&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;teamDamages&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;teamVehicleDamages&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;cpCaptures&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;cpDefends&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;cpAssists&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;suicides&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;cpNeutralizes&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;cpNeutralizeAssists&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;rplScore&amp;lt;/code&amp;gt;&lt;br /&gt;
: This attribute may not be in all versions of BF2&lt;br /&gt;
; &amp;lt;code&amp;gt;skillScore&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;cmdScore&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Class attributes stored in the BF2 engine ===&lt;br /&gt;
; &amp;lt;code&amp;gt;deaths&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;kills&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;TKs&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;score&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;skillScore&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;rplScore&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;cmdScore&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;fracScore&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;rank&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;firstPlace&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;secondPlace&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;thirdPlace&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bulletsFired&amp;lt;/code&amp;gt;&lt;br /&gt;
: gives a tuple, each element of which is a 2-tuple consisting of the name of a weapon the player has fired, and the number of shots they fired from that weapon. As the player uses more weapons, more of the 2-tuples are added to the list. An example tuple returned:&lt;br /&gt;
: &amp;lt;code&amp;gt;((&amp;quot;uspi-m16&amp;quot;, 30), (&amp;quot;knife&amp;quot;, 3))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Before the first weapon is fired, this may be &amp;lt;code&amp;gt;None&amp;lt;/code&amp;gt; or an empty tuple. The first weapon fired will not always be the first 2-tuple on the list returned.&lt;br /&gt;
; &amp;lt;code&amp;gt;bulletsGivingDamage&amp;lt;/code&amp;gt;&lt;br /&gt;
: Same as above, but only with bullets giving damage&lt;br /&gt;
; &amp;lt;code&amp;gt;bulletsFiredAndClear&amp;lt;/code&amp;gt;&lt;br /&gt;
: The &amp;quot;AndClear&amp;quot; resets the engine counter. polling this will only give new bullets. However having more than one module polling them is not a good idea.&lt;br /&gt;
; &amp;lt;code&amp;gt;bulletsGivingDamageAndClear&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Class attributes computed from other attribute values ===&lt;br /&gt;
; &amp;lt;code&amp;gt;dkRatio&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bf2.PlayerManager.Player ==&lt;br /&gt;
&lt;br /&gt;
An object of this class is created for each player in the game. When they are initialized, Player objects automatically instantiate a PlayerScore object and assign it to their score attribute.&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import bf2.PlayerManager&amp;lt;/code&amp;gt; if you wish to create objects of this class; normally, however, you will just access methods and attributes of already existing Player objects that are returned to you by other calls, which requires no special import statement.&lt;br /&gt;
&lt;br /&gt;
=== Instances created with ===&lt;br /&gt;
  x = bf2.PlayerManager.Player(index)&lt;br /&gt;
&lt;br /&gt;
=== Class Attributes ===&lt;br /&gt;
; &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt;&lt;br /&gt;
: playerID for this player&lt;br /&gt;
; &amp;lt;code&amp;gt;score&amp;lt;/code&amp;gt;&lt;br /&gt;
: current score for this player&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;isValid()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;isRemote()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;isAIPlayer()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;isAlive()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;isManDown()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;isConnected()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getProfileId()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;isFlagHolder()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getTeam()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;setTeam(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getPing()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the player&#039;s ping (network transit time from player to server and back) in milliseconds&lt;br /&gt;
; &amp;lt;code&amp;gt;getSuicide()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns 1 if the player suicided. Resets once the player spawns.&lt;br /&gt;
; &amp;lt;code&amp;gt;setSuicide(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getTimeToSpawn()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns 0 when a player is spawned in; when a player is waiting to spawn, it returns the number of seconds until they are allowed to spawn.&lt;br /&gt;
; &amp;lt;code&amp;gt;setTimeToSpawn(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Appears to generate an exception if used on a player that is already spawned in; if used on a player that that is waiting to spawn it changes the time until they are allowed to spawn.&lt;br /&gt;
; &amp;lt;code&amp;gt;getSquadId()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the player&#039;s squad ID. Squads for each team are independently numbered beginning at &amp;quot;1&amp;quot; and increasing thereafter. Players not on a squad, including team commanders, are assigned to squad &amp;quot;0&amp;quot;. &lt;br /&gt;
; &amp;lt;code&amp;gt;isSquadLeader()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns 1 if player is a squad leader.&lt;br /&gt;
; &amp;lt;code&amp;gt;isCommander()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns 1 if player is currently the commander.&lt;br /&gt;
; &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Return&#039;s player&#039;s name&lt;br /&gt;
; &amp;lt;code&amp;gt;setName(name)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Sets a player&#039;s name (at least, it changes what getName() returns), but the change doesn&#039;t show up in-game--everything in the game still shows the player&#039;s old name. (it is working,but only sees that player who connected after the name change.)&lt;br /&gt;
; &amp;lt;code&amp;gt;getSpawnGroup()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;setSpawnGroup(t)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getKit()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the current player&#039;s kit object.&lt;br /&gt;
; &amp;lt;code&amp;gt;getVehicle()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the current player&#039;s vehicle object. If the player is not in a vehicle at the time this returns the player&#039;s soldier object.&lt;br /&gt;
; &amp;lt;code&amp;gt;getDefaultVehicle()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the player&#039;s soldier object, no matter what vehicle they are in.&lt;br /&gt;
; &amp;lt;code&amp;gt;getPrimaryWeapon()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the weapon object for the player&#039;s currently selected weapon.&lt;br /&gt;
; &amp;lt;code&amp;gt;getAddress()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns player&#039;s IP address&lt;br /&gt;
; &amp;lt;code&amp;gt;setIsInsideCP(val)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getIsInsideCP()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bf2.PlayerManager.PlayerManager ==&lt;br /&gt;
&lt;br /&gt;
This class is a wraper around some player management functions in the BF2 engine, and also adds some simple calculations and logic to those functions. During its initialization the bf2 class instantiates this class as the singleton object bf2.playerManager.&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import bf2&amp;lt;/code&amp;gt; to access the methods and attributes of this object.&lt;br /&gt;
&lt;br /&gt;
=== Methods for the singleton object ===&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.getNumberOfPlayers()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.getCommander(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.getPlayers()&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.getPlayerByIndex(index)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.getNextPlayer(index)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.getNumberOfPlayersInTeam(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.getNumberOfAlivePlayersInTeam(team)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.enableScoreEvents()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Enables PlayerScore events&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.playerManager.disableScoreEvents()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Disables PlayerScore events&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== bf2.Timer ==&lt;br /&gt;
&lt;br /&gt;
(Not available in PR, use the realitytimer below.)&lt;br /&gt;
&lt;br /&gt;
Objects in this class are timers that can cause [[Event Reference#Timer Events|timer events]] to be generated when a fixed amount of time has elapsed.  Instances are created with&lt;br /&gt;
  timer = bf2.Timer(timerEventHandler, delta, alwaysTrigger, data)&lt;br /&gt;
&amp;lt;code&amp;gt;timerEventHandler&amp;lt;/code&amp;gt; is the handler to be called when &amp;lt;code&amp;gt;delta&amp;lt;/code&amp;gt; seconds have elapsed since the creation of the timer; &amp;lt;code&amp;gt;alwaysTrigger&amp;lt;/code&amp;gt; should be &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; &#039;&#039;(not sure what the alternative is).&#039;&#039; &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; is an optional item (typically a tuple) that will be passed to &amp;lt;code&amp;gt;timerEventHandler&amp;lt;/code&amp;gt;. (Note that even though &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; is optional when establishing a timer, the timerEventHandler must specify it as a parameter, or the handler won&#039;t work).&lt;br /&gt;
&lt;br /&gt;
A timer may fire only once per tick. Setting a very low interval time will assure the timer fires every tick. Setting 0 disables it.&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import bf2.Timer&amp;lt;/code&amp;gt; to create timer objects.&lt;br /&gt;
&lt;br /&gt;
=== Class Methods ===&lt;br /&gt;
; &amp;lt;code&amp;gt;destroy()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Destroys the associated game engine timer (but not the Python instance.)&lt;br /&gt;
; &amp;lt;code&amp;gt;getTime()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns the [[BF2 Time|wall time]] at which this timer will fire.&lt;br /&gt;
; &amp;lt;code&amp;gt;setTime(time)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Changes the [[BF2 Time|wall time]] at which this timer will fire.&lt;br /&gt;
; &amp;lt;code&amp;gt;setRecurring(interval)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Specifies this this timer should fire repeatedly, every interval seconds.&lt;br /&gt;
; &amp;lt;code&amp;gt;onTrigger()&amp;lt;/code&amp;gt;&lt;br /&gt;
: For internal use only; calls &amp;lt;code&amp;gt;timerEventHandler&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Project Reality Timer interface ===&lt;br /&gt;
&lt;br /&gt;
Project Reality timer (realitytimer.py) expands the default interface and adds:&lt;br /&gt;
&lt;br /&gt;
-Exception catching with a debug message when an exception is not caught in the handler, No need to worry about bad code crashing the server.&lt;br /&gt;
&lt;br /&gt;
-Internal check to make sure timers don&#039;t fire after destroy() was called (Can happen when Destroy() is called on the same tick)&lt;br /&gt;
&lt;br /&gt;
-realitytimer.fireOnce(targetFunc, delay, data=None) class that can fire an event once after delay and then destroy itself (No need to store reference)&lt;br /&gt;
&lt;br /&gt;
-realitytimer.fireNextTick(targetFunc, data=None) class that will fire the event at the next game tick and then destroy itself (Also no need to store)&lt;br /&gt;
&lt;br /&gt;
== bf2.TriggerManager.TriggerManager ==&lt;br /&gt;
&lt;br /&gt;
This class is a wraper around some player management functions in the BF2 engine. During its initialization the bf2 class instantiates this class as the singleton object bf2.triggerManager. This object is used to manage &amp;quot;triggers&amp;quot;, which are events that are fired when a PCO enters a defined spherical or hemispherical volume surrounding an object.&lt;br /&gt;
&lt;br /&gt;
You must &amp;lt;code&amp;gt;import bf2&amp;lt;/code&amp;gt; to access the methods and attributes of this object.&lt;br /&gt;
&lt;br /&gt;
=== Methods for the singleton object ===&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.triggerManager.createRadiusTrigger(object, callback, objName, radius, data=None)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Creates a trigger that causes &amp;lt;code&amp;gt;callback&amp;lt;/code&amp;gt; to be called if a player enters a spherical region of radius &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt; centered on &amp;lt;code&amp;gt;object&amp;lt;/code&amp;gt;, passing &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; as an argument.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.triggerManager.createHemiSphericalTrigger(object, callback, objName, radius, data=None)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Same as &amp;lt;code&amp;gt;bf2.triggerManager.createRadiusTrigger&amp;lt;/code&amp;gt;, except that instead of a spherical trigger region, the trigger region is a flat circle lying along the ground (yes, it&#039;s badly named).&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.triggerManager.destroyAllTriggers()&amp;lt;/code&amp;gt;&lt;br /&gt;
: Destroys all registered triggers.&lt;br /&gt;
; &amp;lt;code&amp;gt;bf2.triggerManager.destroy(trig_id)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Destroys a specific trigger.&lt;br /&gt;
; &amp;lt;code&amp;gt;getObjects(trig_id)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Returns a tuple containing all objects currently within the specified trigger region.&lt;br /&gt;
&lt;br /&gt;
== bf2.stats.constants ==&lt;br /&gt;
&lt;br /&gt;
This module appears intended to be imported with something like&lt;br /&gt;
  from bf2.stats.constants import *&lt;br /&gt;
so that everything in it is loaded into the local namespace, rather than being a part of any object. The module includes a lot of constants and dictionaries, as well as some utility functions.&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
; &amp;lt;code&amp;gt;getVehicleType(templateName)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getWeaponType(templateName)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getKitType(templateName)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getArmy(templateName)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getMapId(mapName)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getGameModeId(gameMode)&amp;lt;/code&amp;gt;&lt;br /&gt;
; &amp;lt;code&amp;gt;getRootParent(physicalObject)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Traverses the containment for physicalObject all the way to the top; returns the outermost (topmost?) containing object.&lt;br /&gt;
&lt;br /&gt;
For example, &amp;lt;code&amp;gt;getWeaponType(&amp;quot;usrif_m16a2&amp;quot;)&amp;lt;/code&amp;gt; looks up an M16 rifle in a dictionary called &amp;lt;code&amp;gt;weaponTypeMap&amp;lt;/code&amp;gt; (also defined in bf2.stats.constants) and returns the constant &amp;lt;code&amp;gt;WEAPON_TYPE_ASSAULT&amp;lt;/code&amp;gt;. . . which, too, is defined in bf2.stats.constants, as having a numeric value of &amp;quot;0&amp;quot;. A list of template names used in some of these functions can be found in the [[Game Engine Object Templates]] page.&lt;br /&gt;
&lt;br /&gt;
These constant values appear to be the same as those used in the [[BF2Stats|statistics server]], specifically the [[BF2Stats_LookUp_Values|look up values]].&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameEvent&amp;diff=33</id>
		<title>GameEvent</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameEvent&amp;diff=33"/>
		<updated>2017-12-27T22:01:53Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Created page with &amp;quot;Detailed information about the &amp;lt;code&amp;gt;bf2.gameLogic.sendGameEvent(playerObject, event, data)&amp;lt;/code&amp;gt; method:   {| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detailed information about the &amp;lt;code&amp;gt;bf2.gameLogic.sendGameEvent(playerObject, event, data)&amp;lt;/code&amp;gt; method:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; width: 100%;&amp;quot;.&lt;br /&gt;
|+&#039;&#039;&#039;Game Event Table&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Event #&#039;&#039;&#039;||&#039;&#039;&#039;Data&#039;&#039;&#039;||&amp;lt;center&amp;gt;&#039;&#039;&#039;Result&#039;&#039;&#039;&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;&#039;&#039;&#039;Notes&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||Sets GameStatus to zero.||Status zero, however, doesn&#039;t exist. Appears to turn the current game mode off.&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;||Sets GameStatus to &#039;&#039;&#039;Playing&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;2&amp;lt;/center&amp;gt;||Sets GameStatus to &#039;&#039;&#039;EndGame&#039;&#039;&#039;.||This ends the current round.&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;||Sets GameStatus to &#039;&#039;&#039;PreGame&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;4&amp;lt;/center&amp;gt;||Sets GameStatus to &#039;&#039;&#039;Paused&#039;&#039;&#039;.||Causes many odd things to happen.&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;5&amp;lt;/center&amp;gt;||Sets GameStatus to &#039;&#039;&#039;RestartServer&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;6&amp;lt;/center&amp;gt;||Sets GameStatus to &#039;&#039;&#039;NotConnected&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;2&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;All&amp;lt;/center&amp;gt;||None||Unknown function for the moment.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;All&amp;lt;/center&amp;gt;||None||Unknown function for the moment.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;4&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;All&amp;lt;/center&amp;gt;||None||Unknown function for the moment.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;5&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;All&amp;lt;/center&amp;gt;||None||Unknown function for the moment.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;6&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;All&amp;lt;/center&amp;gt;||None||Unknown function for the moment.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;7&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;All&amp;lt;/center&amp;gt;||None||Unknown function for the moment.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;8&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;All&amp;lt;/center&amp;gt;||None||Unknown function for the moment.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;9&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||None||Appears to do nothing.&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;||&amp;quot;You got a targeting assist!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;2&amp;lt;/center&amp;gt;||&amp;quot;You got a kill damage assist!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;||&amp;quot;You got a driver kill assist!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;10&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;quot;You got a healing point!&amp;quot;||&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;||&amp;quot;You got a repair point&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;2&amp;lt;/center&amp;gt;||&amp;quot;You got an ammo giving point!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;||&amp;quot;You got an driver ability assist!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;4&amp;lt;/center&amp;gt;||&amp;quot;You got a revive score!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;5&amp;lt;/center&amp;gt;||&amp;quot;You got points for destroying strategic object&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;11&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;quot;Team damage! Don&#039;t hurt your teammates&amp;quot;||&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;||&amp;quot;Team vehicle damage!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;12&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||&amp;quot;You have received points for Flag Capture!&amp;quot;||&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;||&amp;quot;Defended flag!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;2&amp;lt;/center&amp;gt;||&amp;quot;You got a capture assist point!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;||&amp;quot;You got a neutralize point!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;4&amp;lt;/center&amp;gt;||&amp;quot;You got a neutralize assist point!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;5&amp;lt;/center&amp;gt;||&amp;quot;You have destroyed strategic objective!&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;13&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;0&amp;lt;/center&amp;gt;||None||&lt;br /&gt;
|-&lt;br /&gt;
| ||&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;||Blurs the players screen for a short period.||If player is in a jet, blur lasts much longer. Bug or intended?&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
NOTE: Although things like &amp;quot;You got a capture assist point!&amp;quot; give you points during normal gameplay, this is not the case when sending the same game event. Instead it only gives the player the message, but no points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The above table was made possible through the efforts of [[User:=Mad=|=Mad=]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; align=left cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;.&lt;br /&gt;
|&#039;&#039;&#039;Event #&#039;&#039;&#039;||&#039;&#039;&#039;&amp;lt;center&amp;gt;Possible Name&amp;lt;/center&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLGameStatus&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;2&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLControlPointChangedTeam&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLKilledBy&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;4&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLLowOnTickets&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;5&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLFailedToChangePosition&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;6&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLReset&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;7&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLStartApplyForCommander&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;8&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLChangedTeam&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;9&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLAssistKill&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;10&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLReplenish&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;11&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLTeamDamage&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;12&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLConquest&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;13&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLTinnitus&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;14&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLRevive&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;15&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLGameEventLocal&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;16&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;Not Used&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;17&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLUAV&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;18&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;ECGameLogicGLScan&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To the left is a table that connects event numbers up to their internal name in the Battlefield 2 game engine. Hopefully knowing the names of these events will help us figure out what data needs to be sent to them. --[[User:King of Camelot|King of Camelot]] 17:21, 7 Aug 2005 (MDT)&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=HudEvent&amp;diff=32</id>
		<title>HudEvent</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=HudEvent&amp;diff=32"/>
		<updated>2017-12-27T22:01:18Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Created page with &amp;quot;Detailed information about the &amp;lt;code&amp;gt;bf2.gameLogic.sendHudEvent(player, event, data)&amp;lt;/code&amp;gt; method:   {| border=2 cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detailed information about the &amp;lt;code&amp;gt;bf2.gameLogic.sendHudEvent(player, event, data)&amp;lt;/code&amp;gt; method:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=2 cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; width: 100%;&amp;quot;.&lt;br /&gt;
|+&#039;&#039;&#039;Hud Event Table&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;&#039;&#039;&#039;Event #&#039;&#039;&#039;&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;&#039;&#039;&#039;Event Name&#039;&#039;&#039;&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;&#039;&#039;&#039;Data&#039;&#039;&#039;&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;&#039;&#039;&#039;Data Name&#039;&#039;&#039;&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;&#039;&#039;&#039;Result/Notes&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;1&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Close To Control Point|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;2&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Hud State Changed|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;3&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Hud Disable|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;4&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Hud Enable|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;5&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Init Loading Screen|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;6&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Update Loading Screen|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;7&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Set Loading Screen Debug|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;8&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Remove Loading Screen|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;9&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Map Zoom Changed|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;10&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Map Static Changed|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;11&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Is Full|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;12&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Is Private|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;13&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Creation Failed|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;14&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Creation Success|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;15&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Invalid Name|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;16&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Invitation|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;17&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Join Request|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;18&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Join Request Denied|| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;0 - 7&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Squad ID&amp;lt;/center&amp;gt;|| This event causes a &#039;&#039;&#039;&amp;quot;Your request to join #SQUADNAME# squad has been denied&amp;quot;&#039;&#039;&#039; message. The squad name changes depending on the supplied Squad ID.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;19&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Join Request Accepted|| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;0 - 7&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Squad ID&amp;lt;/center&amp;gt;|| This event causes a &#039;&#039;&#039;&amp;quot;Your request to join #SQUADNAME# squad has been accepted&amp;quot;&#039;&#039;&#039; message. The squad name changes depending on the supplied Squad ID.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;20&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Kicked From Squad|| style=&amp;quot;width:50px&amp;quot; |0 - 255 || style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Player ID&amp;lt;/center&amp;gt;|| This event causes a kicked from squad message, saying either &#039;&#039;&#039;&amp;quot;... has been kicked from your squad.&amp;quot;&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;You have been kicked from your squad&amp;quot;&#039;&#039;&#039;, depending on the player ID.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;21&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Left Squad|| style=&amp;quot;width:50px&amp;quot; |0 - 255|| style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Player ID&amp;lt;/center&amp;gt;|| This event causes a player left squad message, saying &#039;&#039;&#039;&amp;quot;... has left your squad&amp;quot;&#039;&#039;&#039;. This message will only work if the player it is sent to is in a squad. Nothing happens if the player ID is the player the message was sent to.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;22&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Joined Squad|| style=&amp;quot;width:50px&amp;quot; |0 - 255|| style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Player ID&amp;lt;/center&amp;gt;|| This event causes a player joined squad message, saying &#039;&#039;&#039;&amp;quot;... has joined your squad&amp;quot;&#039;&#039;&#039;. This message will only work if the player it is sent to is in a squad. Nothing happens if the player ID is the player the message was sent to.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;23&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Orders Received|| style=&amp;quot;width:50px&amp;quot; |0 - 255|| style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Player ID&amp;lt;/center&amp;gt;|| This event causes an order recieved message, saying &#039;&#039;&#039;&amp;quot;You have recieved a new order from your squadleader&amp;quot;&#039;&#039;&#039;. Player ID seems to have no effect on the message. Does nothing if player message is sent to is the squad leader.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;24&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |New Squad Leader|| style=&amp;quot;width:50px&amp;quot; |0 - 255|| style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Player ID&amp;lt;/center&amp;gt;|| This event causes a new squad leader message, saying either &#039;&#039;&#039;&amp;quot;... is your new squad leader&amp;quot;&#039;&#039;&#039; or &#039;&#039;&#039;&amp;quot;You are the new squad leader&amp;quot;&#039;&#039;&#039;, depending on the player ID.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;25&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Leader Request|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;26&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Commander Orders Received|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;27&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Commander Orders Sent|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;28&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad Orders Sent|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;29&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Request Recieved|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;30&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Request Sent|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;31&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Update Hud|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;32&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Weapon Changed|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;33&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Commander Accept|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;34&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Commander Decline|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;35&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Commander Invitation|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;36&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Squad LeaderInvitation|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;37&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Commander Resign|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;38&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Rank Change|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;39&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Medal Reward|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;40&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |UAV|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;41&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Satellite|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;42&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Artillery|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;43&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Unit Spotted|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;44&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Missile Lock|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;45&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |New Unlock|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;46&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Call For Medic|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;47&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Call For Ammo|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;48&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Call For Repair|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;49&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Call For Revive|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;50&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Auto Call For Revive|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;51&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Radio Call|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;52&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Was Hit|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;53&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;54&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;55&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;56&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;57&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Is Close To Mine|| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;0-255&amp;lt;/center&amp;gt; || style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Player ID&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;58&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Not Close To Mine|| style=&amp;quot;width:50px&amp;quot; | &amp;lt;center&amp;gt;0-255&amp;lt;/center&amp;gt; || style=&amp;quot;width:180px&amp;quot; |&amp;lt;center&amp;gt;Player ID&amp;lt;/center&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;59&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Muted By Remote|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;60&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;61&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |TK Option|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;62&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |TK Response|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;63&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;64&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Control Point Taken|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;65&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Control Point Lost|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;66&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Enable Help Message|| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;49&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Exit To Capture Flag&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;67&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Enable Help|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;68&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;69&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;70&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Ticket Bleed|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;71&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Ticket State Changed|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;72&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Begin Round|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;73&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;74&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Possibly Not Used|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;75&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Map Change Complete|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50px&amp;quot; |&amp;lt;center&amp;gt;76&amp;lt;/center&amp;gt;|| style=&amp;quot;width:180px&amp;quot; |Map Zoom Complete|| style=&amp;quot;width:50px&amp;quot; | || style=&amp;quot;width:180px&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Some hud events may cause informative messages to be sent to players ingame, but the hud event does not cause these events to happen, instead it only sends the message that would be sent if that event did happen.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=BF2_Time&amp;diff=31</id>
		<title>BF2 Time</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=BF2_Time&amp;diff=31"/>
		<updated>2017-09-28T17:03:21Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating BF2 Time&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Time is principly measured within Battlefield 2 by means of &amp;quot;wall time&amp;quot;--the time in high-resolution seconds since the server started running (e.g. &amp;quot;443.451488108&amp;quot;). Note that since the BF2 server does not restart between rounds (unlike the servers for Battlefield: 1942 and Battlefield: Vietnam, which both practially reboot between rounds), wall time continues to increase from round to round.&lt;br /&gt;
&lt;br /&gt;
The current wall time can be determined this way:&lt;br /&gt;
   timeNow = host.timer_getWallTime()&lt;br /&gt;
&lt;br /&gt;
Most &#039;&#039;(all?)&#039;&#039; time-related measurements inside BF2 are in seconds, and are based on wall time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other time functions are also available; for example:&lt;br /&gt;
  import time&lt;br /&gt;
  epochTime = time.time()  # Gives current [[wikipedia:Unix Epoch|epoch time]] (seconds since 1970 Jan 1)&lt;br /&gt;
  &lt;br /&gt;
  # Or, to get a formatted string containing a more user-friendly date and time:&lt;br /&gt;
  dateString = time.strftime(&amp;quot;%m-%d-%y %H:%M&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
See the [http://python.org/doc/2.3.4/lib/module-time.html Python Library Reference] for more information about ways to manipulate dates and times in Python.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Game_Engine_Object_Types&amp;diff=30</id>
		<title>Game Engine Object Types</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Game_Engine_Object_Types&amp;diff=30"/>
		<updated>2017-09-27T23:25:21Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Created page with &amp;quot;This is a list of C++ game engine &amp;quot;object types&amp;quot; that can be used in the bf2.objectManager.getObjectsOfType method. As an example, to get a list of all control points, you cou...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of C++ game engine &amp;quot;object types&amp;quot; that can be used in the bf2.objectManager.getObjectsOfType method. As an example, to get a list of all control points, you could use:&lt;br /&gt;
&lt;br /&gt;
 controlPoints = bf2.objectManager.getObjectsOfType(&lt;br /&gt;
                   &#039;dice.hfe.world.ObjectTemplate.ControlPoint&#039;)&lt;br /&gt;
 for cp in controlPoints:&lt;br /&gt;
     # do stuff to each control point&lt;br /&gt;
&lt;br /&gt;
=== Confirmed objecttype list ===&lt;br /&gt;
&lt;br /&gt;
;dice.hfe.world.ObjectTemplate.PlayerControlObject&lt;br /&gt;
:Returns a tuple of vehicle(?) objects that are controllable by a player (Includes the Commander assets). Vehicles are constructed of many objects, use the [[Object_Reference#PhysicalObject|getChildren()]] method to get a tuple of all objects in a vehicle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.ControlPoint&lt;br /&gt;
: Returns A tuple of [[Object_Reference#ControlPointObject|ControlPoint]] objects. A controlpoint is constructed of a flagpole and a flag. Depending on which team controls the controlpoint, a different flag image is displayed.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has children of type [[Object_Reference#PhysicalObject|PhysicalObject]] (flagpole, flag_us, flag_mec, flag_ch, flag_neutral)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.Trigger&lt;br /&gt;
: Returns a tuple of type unknown objects.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has no children&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.AmbientEffectArea&lt;br /&gt;
: Returns a tuple of type unknown objects.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has no children&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.Ladder&lt;br /&gt;
: Returns a tuple of type unknown objects.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has no children&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.TargetObject&lt;br /&gt;
: Returns a tuple of type unknown objects. These appear to always be of the template UniqueTarget.&lt;br /&gt;
: The first two objects in the tuple seem to always correspond to artillery. The first object is MEC or China artillery, while the second object always appears to be US artillery. When the round begins all the TargetObjects positions are set to (0.0, 0.0, 0.0). When artillery is fired, its corresponding TargetObject&#039;s position is set to the location of the artillery. This position remains until the artillery is fired again, and the position is overwritten with the new location. The other objects in the tuple correspond to guided missiles and such throughout the level(ie TV-Guided Missiles).&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has no children&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.ObjectSpawner&lt;br /&gt;
: Returns a tuple of [[Object_Reference#PhysicalObject|PhysicalObject]] objects. Spawned objects are defined in the GamePlayObjects.con file that is located in server.zip (GameModes/&amp;lt;gamemode&amp;gt;/&amp;lt;player count&amp;gt;). Examples of spawned objects are: UAV, JEEP_AAV, destroyable bridges.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has children of mixed type depending on the type of the parent object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.Soldier&lt;br /&gt;
: Returns a tuple of type unknown objects.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has children of type unknown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.AnimatedBundle&lt;br /&gt;
: Returns a tuple of type unknown objects.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has no children&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.Kit&lt;br /&gt;
: Returns a tuple of type unknown objects.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has children of type unknown&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.DestroyableObject&lt;br /&gt;
: Returns a tuple of type unknown objects.&lt;br /&gt;
:; Parent: None&lt;br /&gt;
:; Children: has no children&lt;br /&gt;
&lt;br /&gt;
=== Unconfirmed objecttype list ===&lt;br /&gt;
&lt;br /&gt;
These objects are valid but return an empty tuple. They are probably not accessible from python, or only valid when these objects exist in the map. This is not tested. Any insight on these objects is highly appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.PreDestinedFollowComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultFollowComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.FixedTargetComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.SeekClosestTargetComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultRicochetComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultPenetrateComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultProjSoundComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.ReplenishDetonationComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultDetonationComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.StickyCollisionComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.ResurrectCollisionComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.ReplenishCollisionComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultCollisionComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.ExplosivesFireComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.ThrownFireComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.SpawnObjectFireComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.LPFireComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.SimpleTargetComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.LPTargetComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.MultiFireArmTargetComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.ThrownAnimationComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultAnimationComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.TargetDeviationComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.SimpleDeviationComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.SoldierDeviationComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.WeaponBasedRecoilComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.SoldierBasedRecoilComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultSoundComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.ToggleCameraComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultZoomComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.ReplenishingAmmoComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.DefaultAmmoComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.MultiFireComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.SingleFireComp&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.StrategicObject&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.HelpHud&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.WarningHud&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.AbilityHud&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.WeaponHud&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.VehicleHud&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.TemplateComponent.PostProcess&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.GenericProjectile&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.TurnableRemoteControlledObject&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.RemoteControlledObject&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.LadderContainer&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.AreaObject&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.Obstacle&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.SupplyObject&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.SupplyDepot&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.KitPart&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.Parachute&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.GenericFireArm&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.AntennaObject&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.DestroyableWindow&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.DestroyableWindowsBundle&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.ItemContainer&lt;br /&gt;
&lt;br /&gt;
; dice.hfe.world.ObjectTemplate.Item&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=29</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=29"/>
		<updated>2017-09-27T13:55:26Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* Example: Requesting the number of players and server name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [[Gamespy SDK]] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=28</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=28"/>
		<updated>2017-09-27T13:55:06Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* Reply */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [[Gamespy SDK]] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The sub-protocol C replies with the usual protocol ID followed by the provided timestamp, the payload and the null byte to terminate the message.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The payload consists in all header&#039;s value requested separated by 0x00. The header&#039;s values maintains the same order as in the request.&lt;br /&gt;
&lt;br /&gt;
==== Example: Requesting the number of players and server name ====&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;0x02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x08 0x01&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The reply will be, 84 players and &#039;My Server&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;0x20 0x21 0x21 0x20&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;0x84 0x00 [PR v1.4.17.0] My Server&amp;lt;/span&amp;gt; 0x00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=27</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=27"/>
		<updated>2017-09-27T13:45:16Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* Request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [[Gamespy SDK]] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt; 0x00 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;span style=&amp;quot;color: #ff5100&amp;quot;&amp;gt;8th byte (YY)&amp;lt;/span&amp;gt; informs the server how many headers you&#039;re asking for, meaning the number of bytes that follows afterwards (plus 2 terminal ones). These &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;following bytes&amp;lt;/span&amp;gt;, excluding the last 2, define the header&#039;s indexes that you&#039;re querying about. See next table to see the mapping between index and header.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=BF2_Console_Commands&amp;diff=26</id>
		<title>BF2 Console Commands</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=BF2_Console_Commands&amp;diff=26"/>
		<updated>2017-09-22T15:30:32Z</updated>

		<summary type="html">&lt;p&gt;UTurista: /* combatArea */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== AnimationBundle ==&lt;br /&gt;
;animationBundle.abruptPlayback bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.addAnimation string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.addEvent string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.fadeInTime float -&amp;gt; float&lt;br /&gt;
:Used in AnimationSystem1p and 3p .inc files&lt;br /&gt;
:&amp;quot;Fade in: Animation Start. Allows a smooth transition between animations. The lower it is, the quicker it is. A high value makes the transition slower and longer. Fade in 0.01. Example: Idle/Walking to Sprinting&amp;quot;&lt;br /&gt;
;animationBundle.fadeOutTime float -&amp;gt; float&lt;br /&gt;
:Used in AnimationSystem1p and 3p .inc files&lt;br /&gt;
:&amp;quot;Fade out: Animation End. Same as above, Fadeout 0.1. Fadeout 0.4 would make it take 0.4 seconds to finish an animation&lt;br /&gt;
:example: From Sprinting to Walk/Idle&amp;quot;&lt;br /&gt;
;animationBundle.getAnimationLength string -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.getAnimationStartTime string -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.getEventStartTime string -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.isLooping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.jumpToLastAnimationAtStop bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.length float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.listAnimations -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.listEvents -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.playBackward bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.playForever bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.removeAnimation string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.removeEvent string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.setAnimationLength string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.setAnimationStartTime string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.setEventStartTime string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.useSpeedAsTime bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
&lt;br /&gt;
== AnimationManager ==&lt;br /&gt;
;animationManager.fadeInTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationManager.ignoreMotherOrientation int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationManager.length float -&amp;gt; float&lt;br /&gt;
:&amp;quot;AnimationSystem1p, AnimationSystem3p.inc&amp;quot;&lt;br /&gt;
:&amp;quot;The length of the animation. Must match up with ObjectTemplate.ammo.reloadTime to sync. If it&#039;s a lower value, animation will be sped up. If it&#039;s a higher value, animation will be slowed down.&amp;quot;&lt;br /&gt;
;animationManager.looping bool -&amp;gt; bool&lt;br /&gt;
:&amp;quot;AnimationSystem1p, AnimationSystem3p.inc&amp;quot;&lt;br /&gt;
;animationManager.noiceAmplitude float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationManager.noiceFreq int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationManager.originalLength -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
&lt;br /&gt;
== AnimationSystem ==&lt;br /&gt;
;animationSystem.activestring -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.activeAnimation string -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.activeBundle string -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.activeTrigger string -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.activeValueHolder string -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.amplitude Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.fire Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.hit Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.look Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.move Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.stiffness Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.use bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.zoomDamping Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.create string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.createAnimation string -&amp;gt; anim.BoneAnimation*&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.createBundle string -&amp;gt; anim.Bundle*&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.createTrigger string string -&amp;gt; anim.Trigger*&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.createValueHolder string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.deleteActiveBundle -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.deleteActiveTrigger -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.hide -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.list -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.listAnimations -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.listBundles -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.listTriggers -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;AnimationSystem.listTriggerTypes -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.listValueHolders -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.playbackModifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.reloadScript -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.save string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.saveActive -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.saveValueHolders -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
&lt;br /&gt;
== animationTrigger ==&lt;br /&gt;
;animationTrigger.addBundle std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.addChild std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.clearValueHolder -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.fadeInTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.getTypeName -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.idleTime Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.listBundles -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.message int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.removeBundle std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.removeChild std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.triggerOnAcceleration bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.useDirection bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.valueHolder std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
== animationValueHolder ==&lt;br /&gt;
;animationValueHolder.getFilename -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.max float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.min float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.normal float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.passOnMessage unsigned int -&amp;gt; unsigned int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.stopOnMessage unsigned int -&amp;gt; unsigned int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.values float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== audioSettings ==&lt;br /&gt;
;audioSettings.alwaysAllowSystemOpenAL bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.effectsVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.enableEAX bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.englishOnlyVoices bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.forceNumberOfVoices int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.helpVoiceVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.musicVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.provider std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.soundQuality std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipBoostEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipCaptureThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipCaptureVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipPlaybackVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipUsePushToTalk bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;bf2Engine.playMovie std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;chat.sayAll std::string -&amp;gt; void&lt;br /&gt;
:Menu (Hud Elements Chat.con)&lt;br /&gt;
:All Chat. Used in HudElementsChat.con&lt;br /&gt;
;chat.sayTeam std::string -&amp;gt; void&lt;br /&gt;
:Menu (Hud Elements Chat.con)&lt;br /&gt;
:Team Chat. Used in HudElementsChat.con&lt;br /&gt;
;CollisionCheck.checkStaticCollisionMeshes int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== collisionManager==&lt;br /&gt;
;collisionManager.buildDebugCollisionMeshes -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.createTemplate std::string -&amp;gt; void&lt;br /&gt;
:Used in .con files for collision meshes&lt;br /&gt;
:Creates a Collision Mesh template from the collision mesh name so it can be used in other files without creating a duplicate mesh&lt;br /&gt;
;collisionManager.drawBoundingBoxes bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawForces bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawIntersectFaces bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawMeshes bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawNormals bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawOnlyRoot float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawPivots bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawPrimitives bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawSoldierMesh bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawTestedFaces bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.getNameOfObjectInFocus -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.identityRotateObjectInFocus -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.rotateObjectInFocusAroundAxis uint float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.rotateObjectInFocusAroundVector Vec3 float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.setActiveLod int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.setDrawDistance float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.setGeometry bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.setSleepinessOfObjectInFocus int -&amp;gt; void&lt;br /&gt;
:.con presumably&lt;br /&gt;
:Effect unknown. Causes a game crash during loading when using collisionManager.setSleepinessOfObjectInFocus 0 in a .con of a GenericFirearm&lt;br /&gt;
;collisionManager.updateFlagsOfObjectInFocus U32 U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.useDeferredLoading bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== combatArea ==&lt;br /&gt;
;combatArea.active std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.addAreaPoint Vec2 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.deleteActiveCombatArea -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.getActiveCombatAreaName -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.inverted bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.layer int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.addVehicleDamage world::VehicleCategory float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.addVehicleTimer world::VehicleCategory float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.damage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.timeAllowedOutside float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.use bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.max Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.min Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.team int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.usedByPathFinding bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.vehicles int -&amp;gt; int&lt;br /&gt;
: Controls what kind of vehicle is effected by the combat zone. This can be used for crating an extra large, separate combat zone around the base combat zone only for jets, to give them a much larger area to fly in and when you hop into a jet, you can still see the base combat zone, but the area between the base and the jet combat zone will be 1/2 transparent. When hand coding this the values are:&lt;br /&gt;
:VehicleType &amp;quot;0&amp;quot; = Land&lt;br /&gt;
:VehicleType &amp;quot;1&amp;quot; = Sea&lt;br /&gt;
:VehicleType &amp;quot;2&amp;quot; = Planes&lt;br /&gt;
:VehicleType &amp;quot;3&amp;quot; = Choppers&lt;br /&gt;
:VehicleType &amp;quot;4&amp;quot; = All&lt;br /&gt;
:VehicleType &amp;quot;5&amp;quot; = Planes &amp;amp; Choppers&lt;br /&gt;
&lt;br /&gt;
== commander == &lt;br /&gt;
;commander.accept bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.artillery -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.commanderApply -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.commanderMutiny -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.commanderResign -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.satellite -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.sendOrder int bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.supplies -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.toggleArtilleryState -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.toggleSupplyState -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.toggleUAVState -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.toggleVehicleDropState -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.uav -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.vehicleDrop -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.zoomCommander -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== commanderInterface == &lt;br /&gt;
;commanderInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== commanderMenu == &lt;br /&gt;
;commanderMenu.deselect -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.doubleClick -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.rightClick -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.sendRadioMessage std::string TargetChannel -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.singleClick -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.vehicleDropReloadTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
== Console ==&lt;br /&gt;
;Console.allowMultipleFileLoad bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.bindKeyToConsoleScript int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.echo bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.echoErrors bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getActiveMethods std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getArgumentTypes std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getCategory std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getDelta std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getEnumName std::string std::string int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getRange std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getReturnType std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getTypeDescription std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.hasBundledType std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.hasRange std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.isDynamic std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.isSetGet std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.listConstants std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.listVariables std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.maxCommandHistorySize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.maxHistorySize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.maxLineSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.run std::string std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.useRelativePaths bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.workingPath std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
== controlMap ==&lt;br /&gt;
;controlMap.addAxisToAxisMapping int InputDeviceFlags InputDeviceAxes -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addAxisToTriggerMapping int int InputDeviceFlags -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addButtonAndKeyToAxisMapping int InputDeviceFlags InputDeviceButtons -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addButtonsToAxisMapping int InputDeviceFlags InputDeviceButtons -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addButtonToTriggerMapping int InputDeviceFlags InputDeviceButtons -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addKeyAndButtonToAxisMapping int InputDeviceFlags InputDeviceKeys -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addKeysToAxisMapping int InputDeviceFlags InputDeviceKeys -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.AddKeyToTriggerMapping int InputDeviceFlags InputDeviceKeys -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.deleteControlMap std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.dump -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.InvertMouse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.keyboardSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.mouseSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setActive std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setAxisScale io::InputDeviceAxes float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setButtonFallTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setButtonRiseTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setDoubleTapTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setPitchFactor float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setYawFactor float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== DecalManager ==&lt;br /&gt;
;decalManager.decalGeomClipAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.decalNormalOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.drawStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.fadeDistance float -&amp;gt; float&lt;br /&gt;
:&lt;br /&gt;
:Set the View Distance of the Decals to start to fade. Works in level .con files&lt;br /&gt;
;decalManager.fadeOutAtPercentageOfTimeToLive float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.generateTexture -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.startFadePercentageOfFadeDistancel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.timeToLive float -&amp;gt; float&lt;br /&gt;
:&amp;quot;Time in seconds of how long will a vehicle, effect or projectile will last. For vehicles, if it has been exited for a time, it will blow up. Uses CRD Arguments. More info: http://bfmods.com/mdt/scripting/ObjectTemplate/Properties/TimeToLive.html&amp;quot;&lt;br /&gt;
;demo.recordDemo std::string -&amp;gt; void&lt;br /&gt;
:&amp;quot;Starts the Battlerecorder Recording. Needs to specify a name. File is saved in mods/(mod)/Demos. In My Documents/Project Reality/Profile/001 (i.e 002, 003, default) create a demos folder and place both files there.&amp;quot;&lt;br /&gt;
== demo ==&lt;br /&gt;
;demo.restartDemo -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo.shutdownDemo -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo.stopRecording -&amp;gt; void&lt;br /&gt;
:Console ~ Command &lt;br /&gt;
:Stops the Battlerecorder Recording. File is saved in mods/(mod)/Demos. In My Documents/Battlefield 2/Profile/001 etc create a demos folder and place both files there.&lt;br /&gt;
;demo.toggleCameraDemo -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo.toggleDemoPauseOrPlay -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo.togglePlayerDemo bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== Editor ==&lt;br /&gt;
;Editor.createNewLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.deleteAllLayers -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.deleteAllObjects -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.deleteObject world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.deleteTemplate world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.getActiveLayer -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.getActiveLayerId -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.getActiveObject -&amp;gt; world::IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.getActiveObjectTemplate -&amp;gt; world::IObjectTemplate_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.hideLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listAllVehicles -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listLayers -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listMeshes -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listObjects -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listObjectsOfTemplate world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listTemplates std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listTextures -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.loadAllObjects std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.loadAllTemplatesAndObjects -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.printObjectCreationScript world::IObject_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.printTemplateCreationScript world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.quickReloadActiveTemplate -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.quickReloadTemplate world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.removeLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.renameLayer std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllEffects -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllObjects std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllSpawners -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllTemplates -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllTemplatesAndObjects -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllUsedTemplates std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveFolderToArchive std::string bool bool -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveSpawners bool bool bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveTemplateToFile std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveTemplateTreeStructure std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveVehicles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.setActiveLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.setActiveLayerId int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.setActiveObject world::IObject_ptrproxy -&amp;gt; world::IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.setActiveObjectTemplate world::IObjectTemplate_ptrproxy -&amp;gt; world::IObjectTemplate_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.ShowEntryPoints bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.showLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.start world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.stop world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.updateAllTemplates -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.updateTemplate world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== effectTweak ==&lt;br /&gt;
;effectTweak.setAgeScaleFactorForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setAlphaIntensityForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setEmitScaleFactorForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setEmitSpeedScaleFactorForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setSoundIntensity float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setStartAgeForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;envmapManager.generateEnvMaps -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;envmapManager.loadEMIFile std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;envmapManager.perPixelEnvironmentMappingEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;envmapManager.save -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.addPath std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.copyFile std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.deleteFile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.fileExists std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.mountArchive std::string std::string bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.moveFile std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.allowToggleFullscreen bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.lockFps int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
== gameLogic ==&lt;br /&gt;
;gameLogic.AddInvalidDropVehicleObject std::string bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.becomeSquadLeader bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.createObject std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.damageForBeingOutSideWorld float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.defaultLevel std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.defaultTimeToNextAIWave float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.enableVoHelp bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Enables the Voice Over Tips feature from vBF2. Uses prhelp.utxt in localization for strings/anything with HUD_HELP definitions&lt;br /&gt;
	: HudElementsHelp.con in Menu for the size&lt;br /&gt;
	: color&lt;br /&gt;
	: fade in time&lt;br /&gt;
	: create more messages and VoiceMessages_Help.con for voiceovers&amp;quot;&lt;br /&gt;
;gameLogic.extraUAVVehicleFlightHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.feslEnvironment int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getBeforeSpawnCameraDirection -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getBeforeSpawnCameraPosition -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getDefaultNumberOfTickets U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getDefaultNumberOfTicketsEx U32 U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getNumberOfTickets U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTeamDropVehicle int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTeamLanguage int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTeamName int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTicketLossAtEndPerMin -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTicketLossPerMin U32 -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.hitIndicationThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.maximumLevelViewDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.addHelpMessage std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.addMessage std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.addRadioFilter std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.addRadioVoice std::string std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.playHelpMessage std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.playRadioMessage int std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.setVolumes float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.noVehiclesOmit std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.outputPlayerStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.printCameraCoordToConsole -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.refreshTriggerables -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.remoteCommand int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.reset -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.roundNr int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setAirMouseInverted bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setAirMouseSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setBeforeSpawnCamera Vec3 Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setDefaultNumberOfTickets U32 U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setDefaultNumberOfTicketsEx U32 U32 U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setDropVehicleDeviationRadius int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setKit int KitType std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setNumberOfTickets U32 U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setNumDropVehiclesForTeam int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTeamDropVehicle int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTeamFlag int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTeamLanguage int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTeamName int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTicketLossAtEndPerMin float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTicketLossPerMin U32 float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.spawnAtCameraPosition bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.spawnObjectSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.spawnPlayers bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.supplyDropHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.supplyDropNumSecsToLive float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.teleport -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.teleportCameraTo Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.teleportTo Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.timeAllowedOutSideWorld float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.timeToNextAIWave float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.togglePause -&amp;gt; void&lt;br /&gt;
	:Console ~ Command&lt;br /&gt;
	:Pauses the game. Pressing &#039;P&#039; in COOP and Local does the same thing.&lt;br /&gt;
;gameLogic.vehicleDropHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;Game.radioMessage TargetChannel std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.sayAll std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.sayTeam int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== gameServerSettings ==&lt;br /&gt;
;gameServerSettings.setAdminScript std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setAllowNATNegotation bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setAutoBalanceTeam bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setAutoRecord bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setAutoRecordRounds int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setCommunityLogoURL std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setCoopBotCount int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setCoopBotDifficulty float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setCoopBotRatio float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setDemoDownloadURL std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setDemoHook std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setDemoIndexURL std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setEndDelay int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setFriendlyFireWithMines bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setGameMode std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setGameSpyPort int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setInterfaceIP std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setInternet bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setManDownTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setMaxPlayers int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setMinPlayersForVoting int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setNoVehicles float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setPassword std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setPunishTeamKills bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setRoundsPerMap int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setScoreLimit int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setServerName std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSoldierFF int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSoldierSplashFF int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSpawnTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSponsorLogoURL std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSponsorText std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setStartDelay int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSvPunkBuster bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTeamRatio float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTeamVoteOnly bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTicketRatio int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTimeBeforeRestartMap float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTimeLimit int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVehicleFF int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVehicleSplashFF int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipBFClientPort int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipBFServerPort int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipEnabled bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipServerPort int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipServerRemote bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipServerRemoteIP std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipSharedPassword std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoteTime int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.simulationRate int -&amp;gt; int&lt;br /&gt;
	:HudElementsDemoRecComm.con&lt;br /&gt;
	:&amp;quot;In Battlerecorder&lt;br /&gt;
	: it sets the speed for the decrease speed and increase speed buttons. Can be increased&lt;br /&gt;
	: though some users report no difference as it is dependent on the Demo FPS (Default is 30&lt;br /&gt;
	: settings must be recorded higher&lt;br /&gt;
	: something like 60) and Game FPS&amp;quot;&lt;br /&gt;
;game.toggleFullscreen -&amp;gt; void&lt;br /&gt;
	:~ Console&lt;br /&gt;
	:&amp;quot;Toggles Full-Screen and Windowed mode&lt;br /&gt;
	: though it will give you the nasty side-effect of seethrough terrain that would need the client to disconnect and reconnect to fix.&amp;quot;&lt;br /&gt;
;game.unload -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== generalSettings ==&lt;br /&gt;
;generalSettings.addFavouriteServer std::string int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.addServerHistory std::string int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setAllowPunkBuster bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setAutoReady bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setAutoReload bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setBFTVSaveDirectory std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setBotSkill float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setBuddytagColor int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setConfirmQuit bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setConnectionType int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setCrosshairColor int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setHUDTransparency float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setItemSelectionReverseItems bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setLCDDisplayModes bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMapIconAlphaTransparency float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMaxBots int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMaxBotsIncludeHumans bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMinimapRotate bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMinimapTransparency float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setNumRoundsPlayed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setOutOfVoting bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setPlayedVOHelp std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setServerFilter std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setSortKey std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setSortOrder int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setSquadtagColor int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setToggleFilters int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setUseAdvancedServerBrowser bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setUseBots bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setViewIntroMovie bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== geometryTemplate ==&lt;br /&gt;
;geometryTemplate.active IGeometryTemplate* -&amp;gt; IGeometryTemplate*&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.color Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.compressVertexData bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;GeometryTemplate.create std::string std::string -&amp;gt; IGeometryTemplate*&lt;br /&gt;
	:Used in .con files&lt;br /&gt;
	:Creates a Geometry Mesh template from the geometry mesh name so it can be used in other files without creating a duplicate mesh&lt;br /&gt;
;geometryTemplate.depth float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.doNotGenerateLightmaps bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.dumpInstances -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.glowFadeOutDistEnd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.glowFadeOutDistStart float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.glowing bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.height float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.ignoreLeafLighting bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.innerRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.lenght float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.length float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.lightmapOverride bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.maxSkip3pLods uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.maxSkipWreckLods uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.maxTextureRepeat int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.meshDetailLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.name -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.noLighting bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.nrOfAnimatedUVMatrix int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.outerRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;GeometryTemplate.printInfo bool -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.radius1 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.radius2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.rings uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setLightmapSizeAll int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setMaterialParallaxHeightScale int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setMaterialReflectionScale int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setSpecularStaticGloss int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setSubGeometryLodDistance int int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.shader std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.shadowDetailLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.sides uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.slices uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.stacks uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.tesselation BaseVector2&amp;lt;uint&amp;gt; -&amp;gt; BaseVector2&amp;lt;uint&amp;gt;&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.texture std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.useRadiusForShadowDepth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.useRadiusForShadowSpatial bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.width float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
== globalSettings ==&lt;br /&gt;
;globalSettings.setDefaultUser std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;globalSettings.setNamePrefix std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== hapticSettings ==&lt;br /&gt;
;hapticSettings.addWeaponClassMap std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.load -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivity float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLength float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthSEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthSOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivitySEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivitySOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLength float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthSEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthSOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffness float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessSEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessSOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setDamageScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setExplosionShakeScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setForceCapX float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setForceCapY float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setForceCapZ float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setGeneralShakeScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRTransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRTransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELITransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELITransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDTransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDTransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEATransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEATransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERTransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERTransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleCARBINE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleDEFIB float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleDROP float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleKNIFE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleLAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleLMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScalePISTOL float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleRIFLE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleRIFLELAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleSHOTGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleSMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleSNIPER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleTHROWN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_AIRGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_ARMORCANNON float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_COAXIALGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_HELIGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_HMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_LMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_MISSILE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleCARBINE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleDEFIB float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleDROP float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleKNIFE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleLAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleLMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScalePISTOL float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleRIFLE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleRIFLELAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleSHOTGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleSMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleSNIPER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleTHROWN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_AIRGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_ARMORCANNON float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_COAXIALGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_HELIGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_HMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_LMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_MISSILE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeCARBINE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeDEFIB float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeDROP float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeKNIFE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeLAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeLMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimePISTOL float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeRIFLE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeRIFLELAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeSHOTGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeSMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeSNIPER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeTHROWN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_AIRGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_ARMORCANNON float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_COAXIALGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_HELIGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_HMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_LMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_MISSILE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleCARBINE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleDEFIB float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleDROP float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleKNIFE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleLAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleLMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScalePISTOL float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleRIFLE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleRIFLELAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleSHOTGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleSMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleSNIPER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleTHROWN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_AIRGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_ARMORCANNON float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_COAXIALGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_HELIGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_HMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_LMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_MISSILE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setSpeedShakeScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivity float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivityAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivityHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivityLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivitySEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivitySOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== heightmapcluster ==&lt;br /&gt;
;heightmapcluster.addHeightmap std::string int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.compileWaterMeshesIntoHeightmap -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.importSurroundingRawHeightMap std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.intersectCameraRay -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.setClusterSize int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.setHeightmapSize int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.setSeaWaterLevel float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.smoothEdges int float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.stitchEdges -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.loadHeightData std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.loadMaterialData std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setBitResolution int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setMaterialScale int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setModified bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setScale Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setSize int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hemiMapManager.hemiLerpBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;hemiMapManager.makeHemiMap unsigned long std::string Vec3 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hemiMapManager.setBaseHemiMap std::string Vec3 float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== hudBuilder ==&lt;br /&gt;
;hudBuilder.addNodeAlphaShowEffect -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addNodeBlendEffect int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addNodeMoveShowEffect float int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addNodeVariableMoveShowEffect std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addObjectMarkerNodeLockTextNode std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addTransformListNode std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createBarNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createButtonNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createCompassNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createEditNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createHoverNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createListNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createMapNode std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createMiniMapNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createObjectMarkerNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createObjectSelectionNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createOccupiedNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createPictureNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createSliderNode std::string std::string float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createSplitNode std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createTextNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createTileNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createTransformListNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createTransformNode std::string std::string int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.deleteNode -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.newLayer -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.searchNodes std::string std::string -&amp;gt; meme::Node*&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setActiveObject std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeBorder int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeSnap int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeSnapDir bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeValueVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeVariableTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeAltConCmd std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeConCmd std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeDebug bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeFunction std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeMouseArea int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeMouseOverColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCommanderPos Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCommanderSize Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeBorder int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeOffset int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeSnapOffset int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeSnapTexture bool std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeTextureSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeValueVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeVariableTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCPFont std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCPFontColor float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeData int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeFont std::string bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeMaxLength int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeString int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setHoverInMiddlePos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setHoverMaxValue float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setHoverWidthLength float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeBackgroundColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeBorder int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeBorderColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeConCmd int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeData int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeFont std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeOutline bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeRowSpacing int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeScrollbar int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeScrollbarBackgroundColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeScrollbarColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeSelectColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setMaxiPos Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setMaxiSize Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setMiniPos Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setMiniSize Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setModifyer float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeAlphaVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeInTime float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeLogicShowVariable std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeOffset int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeOutTime float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodePos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodePosVariable int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeRGBVariables std::string std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeShowVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeLockOnType int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeLockText bool std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeLockTextOffset int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeObjects int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeTextureSize int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeWeapon int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectSelectionNodePointerSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setOccupiedNodeData int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setOccupiedNodePosVariable int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeAlphaMask std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeBorder int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeBorderColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeCenterPoint int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeRotateVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeRotation int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeTexture std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeVariableTexture std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setSliderNodeChild std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setSliderNodeData std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeOutLine std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeOutLineOffset float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeString std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeStringVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeStyle std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTileNodeOptions int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTranformListNodeOffset int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTranformListNodePosVariable int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setZoomIcons bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudItems.setBool std::string bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudItems.setFloat std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudItems.setString std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.addFavouriteServer bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.addTextureAtlas std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.enableSayAllChatBox bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.enableSaySquadChatBox bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.enableSayTeamChatBox bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.refresh -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setCommMousePos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setCommMouseSensitivity int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setCommPos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setCommSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setDisplayControlpoints bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setDisplayTickets bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setDone bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMapStatic bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMaximumNrOfCPs int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureArtillery std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureCancel std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureEmpty std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureFull std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureSupply std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureUAV std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setPaint bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setPointerMouseSensitivity int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setPointerSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setSpottedAngle float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setSpottedMenuPos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setSpottedMenuSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setSpottedMousePos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setTargetTop float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setUpdate bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ingameHelp.showIngameHelp std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;InputDevices.setAxisScale InputDeviceFlags InputDeviceAxes float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;InputDevices.setInvertAxis InputDeviceFlags InputDeviceAxes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;itemSelection.setReverseItems bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;levelsList.setVoteMapShow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;levelsList.singleClick int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.ambientColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
== lightManager ==&lt;br /&gt;
;lightManager.defaultEffectLightAffectionFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.dynamicPointColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.dynamicPointColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.dynamicPointColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.dynamicPointScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.effectShadowColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.effectSunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.enableStencilCullerReset bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.enableSun bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.groundHemi std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.hemiLerpBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.init -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.lightCullDistance float -&amp;gt; float&lt;br /&gt;
	:Used in sky.con&lt;br /&gt;
	:Raises the default limit of the culling of lightsources from a distance. Example: lightManager.lightCullDistance 2000 which extends the rendering of the lightsource.&lt;br /&gt;
;lightManager.lightMapAmbientAlphaCutoffRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLightsPerBundledMesh int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLightsPerSkinnedMesh int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLightsPerStaticMesh int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLightsPerTerrainPatch int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLodForMaterialBatching int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.singlePointColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.singlePointColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.singlePointColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.skinnedMeshShaderLodDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.skyColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.skyColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.skyColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticLightBlendingTime double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSkyColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSkyColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSkyColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSpecularColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunSpecColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunSpecColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunSpecColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.treeAmbientColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.treeSkyColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.treeSunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
== localPlayer ==&lt;br /&gt;
;localPlayer.commanderSelectDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;localPlayer.firstCommanderSelectDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
== localProfile ==&lt;br /&gt;
;localProfile.addDemoBookmark std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.save -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setEmail std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setGamespyNick std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setNick std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setNumTimesLoggedIn int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setPassword std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setTotalPlayedTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== maplist ==&lt;br /&gt;
;maplist.append std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.clear -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.configFile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.currentMap -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.insert int std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.list -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.load -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.mapCount -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.remove int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.save -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== material ==&lt;br /&gt;
;material.active unsigned int -&amp;gt; unsigned int&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.damageLoss float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.elasticity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.friction float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.hasWaterPhysics bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.isBarbwire bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.isOneSided bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.isSeeThrough bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.attMaterial unsigned int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.createCell unsigned int unsigned int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.damageMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.defMaterial unsigned int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.setDecalTemplate unsigned int IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.setEffectTemplate unsigned int IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.setSoundTemplate unsigned int IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.maxDamageLoss float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.minDamageLoss float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.name std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.overrideNeverPenetrate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.penetrationDeviation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.projectileCollisionHardness float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.resistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.type int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
== menuTeamManager ==&lt;br /&gt;
;menuTeamManager.addKit std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;menuTeamManager.addTeam std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;menuTeamManager.addWeapon std::string int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;menuTeamManager.setTeamId int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== minimap ==&lt;br /&gt;
;minimap.setCommanderOffset Vec2 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setCurrOrderList int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setDestinationBlend int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setFilterColor float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setFullScreenZoom int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setPaintAllKits -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setPaintAllVehicles -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setPaintKit int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setPaintVehicle int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setSourceBlend int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setZoom -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.toggleShowKits -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== nametags ==&lt;br /&gt;
;nametags.createBar NametagItemIDs int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.createIcon NametagItemIDs -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.deathFadeOutTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.deployableDistance double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.enemyDotLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.enemyTagDelayTime double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.enemyTagFadeInTime double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.enemyTagFadeOutTime double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.getCullDistance TagType -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.manDownFadeOutTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.maxCallDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.maxFriendlyDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.setCullDistance TagType Vec2 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.setTexture int std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.vehicleNametagOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.vehicleNametagOffsetFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
== networkableInfo ==&lt;br /&gt;
;networkableInfo.createNewInfo std::string -&amp;gt; void&lt;br /&gt;
	:Used in objects\common\Networkables.con&lt;br /&gt;
	:Creates a custom NetworkableInfo. Use with NetworkableInfo.setPredictionMode etc&lt;br /&gt;
;networkableInfo.deleteInfo std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;networkableInfo.setBasePriority float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;networkableInfo.setForceNetworkableId bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;networkableInfo.setIsUnique bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;networkableInfo.setPredictionMode PredictionMode -&amp;gt; void&lt;br /&gt;
	:&lt;br /&gt;
	:NetworkableInfo.setPredictionMode&lt;br /&gt;
;network.globalPredictionMode PredictionMode -&amp;gt; PredictionMode&lt;br /&gt;
: Unknow&lt;br /&gt;
== object ==&lt;br /&gt;
;object.absolutePosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.absolutePositionSecondary Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.absoluteTransformation Mat4 -&amp;gt; Mat4&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.active world::IObject_ptrproxy -&amp;gt; world::IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.addAbsolutePoint -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.attenuationRange1 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.attenuationRange2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.color Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.coneAngle1 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.coneAngle2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.create world::IObjectTemplate_ptrproxy Vec3 Vec3 -&amp;gt; world::IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.delete world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.deleteAll -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.direction Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.disableChildren bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.collectPlanesDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.drawDebugPlanes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.faceForwardThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.showCullStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.useExactTest bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.useOcclusion bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.forceStart world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.forceStop world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.fov float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.color Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.GenerateLightmapForThisInstance bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.loadMesh std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.subGeometry int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.subGeometryCount -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.technique std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.template -&amp;gt; IGeometryTemplate*&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.getControlPointId -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.getGroundPos Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.getLightSourceMask -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.getVisibleTeam -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.group int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.hasCollision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.hasUpdate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.HDRIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.info world::IObject_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.initGrid Vec2 Vec2 int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.isInGrid bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.isOvergrowth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.isSaveable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.isVisible bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.layer int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.list -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.listObjectsOfTemplate world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.loadAll std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectManager.drawStats int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.name std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.notInAI bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.printScript world::IObject_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.rotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.rotationSecondary Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.saveAll std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.scale Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setActive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setAsSkyLight -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setControlPointId int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setIsDisabledRecursive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setIsInTweakModeRecursive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setIsSaveableRecursive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setIsVisibleRecursive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setLightSourceMask int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.setObjectToGround world::IObject_ptrproxy -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setTeam int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setVisibleTeam int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.spawnOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.start world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.stop world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.team int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.template -&amp;gt; const IObjectTemplate*&lt;br /&gt;
: Unknow&lt;br /&gt;
== objectTemplate ==&lt;br /&gt;
;objectTemplate.3dMapIcon int -&amp;gt; int&lt;br /&gt;
	:Used in GenericFirearms (Mine etc) .tweak&lt;br /&gt;
	:&amp;quot;The image number sequence referenced in \menu\nametag\Objects.dds. Use the vBF2 file and count the images. 9 is the mine icon. Using this system&lt;br /&gt;
	: you could have custom 3D Mine Icons as long as they are the same size as the original.&amp;quot;&lt;br /&gt;
;objectTemplate.ability.hasAmmoAbility bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ability.hasHealingAbility bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ability.hasRepairingAbility bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ability.radarRadius int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityHud.ammoSound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityHud.healingSound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityHud.repairingSound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityInVehicleMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityInVehicleRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityInVehicleStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityRestoreRate float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.acceleration Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.acceleration float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.accumulate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.active world::IObjectTemplate_ptrproxy -&amp;gt; world::IObjectTemplate_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.activeSafe std::string world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addAmmoType int int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addChild bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addEmitterSpeed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addKitVehicleMod std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addLinePoint Vec2 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addPcoPosId int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addTargetObjectTypeToWatch int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addTemplate std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addToCollisionGroup U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addToProjectileList bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addTriggerableTarget std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addVehicleType std::string int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addVehicleType VehicleCategory -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addWorkOnMaterial int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.affectingType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.affectLightmappedObjects bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.airFlowAffect float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.airFriction float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.airResistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.airResistanceGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.aiTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alignEffectTransformation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alignRotationToSpeed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.allowDucking bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.allowInsideDynamicLights bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.allowInsideStaticSun bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaCull float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate0 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate1 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate2 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate3 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate4 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.altSoldierExitPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityCost float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityDrain float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.ammoType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.autoReload bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.changeMagAt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.firstShotExtraTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.instantReloadOnEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.lastShotExtraTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.magLinkWeapon std::string -&amp;gt; std::string&lt;br /&gt;
: &amp;quot;Weapons, Vehicles .tweak&amp;quot;&lt;br /&gt;
:Allows two weapons to share the same amount of bullets and magazines. Enter the weapon name to maglink. The weapon that&#039;s referenced must also have the same code. Weapons with fire selector code causes it to not work properly (citation needed)&lt;br /&gt;
;objectTemplate.ammo.magSize int -&amp;gt; int&lt;br /&gt;
:Weapons .tweak&lt;br /&gt;
:&amp;quot;Number of bullets in a magazine. -1 for Infinity, maximum non-infinity allowed is 1023, any more will cause a crash. Bug: In the Battlerecorder, it doesn&#039;t pickup a gun that fires for 10 seconds on with 1000 bullets for some reason. Tested with the L4Bren on Auto.&amp;quot;&lt;br /&gt;
;objectTemplate.ammo.minimumTimeUntilReload float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.nrOfMags int -&amp;gt; int&lt;br /&gt;
:Number of magazines allowed for a weapon.&lt;br /&gt;
;objectTemplate.ammo.onlyActiveWhileFiring bool -&amp;gt; bool&lt;br /&gt;
:Prevents the Medibag and Ammo Bag from being thrown when firing. Used in PR&#039;s Medikit and Repair Bag&lt;br /&gt;
;objectTemplate.ammo.reloadAmount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.reloadTime float -&amp;gt; float&lt;br /&gt;
:Time in seconds of how long it takes to reload. Must be the same number as the reload animation time from AnimationSystem1p.inc to sync properly.&lt;br /&gt;
;objectTemplate.ammo.reloadWithoutPlayer bool -&amp;gt; bool&lt;br /&gt;
:&amp;quot;If enabled, weapon will autoreload regardless client settings for autoreload. 1(Enabled), 0(Disabled)&amp;quot;&lt;br /&gt;
;objectTemplate.ammo.replenishingType ReplenishingType -&amp;gt; ReplenishingType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.toggleWhenNoAmmo bool -&amp;gt; bool&lt;br /&gt;
:Weapons .tweak&lt;br /&gt;
:&amp;quot;When no ammo, switch to previous selected weapon.&amp;quot;&lt;br /&gt;
;objectTemplate.ammoStorageSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.anchor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.anchorOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotation int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotationIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotationRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotationReverse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotationScale Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationMax Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationReverse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationSize Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animation.animateOnZoom bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animation.loopingFire float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animation.shiftDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animation.useShiftAnimation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationFrameCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationFrameCountX int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationFrameHeight int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationFrameWidth int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationPlayOnce bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationRandomizedStartFrame bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationSystem1P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationSystem3P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.accelerationFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.damping float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.maxSwayAngle Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.skeleton std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.speedFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.stiffness float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.areaValueTeam1 U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.areaValueTeam2 U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armingDelay float -&amp;gt; float&lt;br /&gt;
:Weapons .tweak&lt;br /&gt;
:Delay in seconds until the collision event is active. Used in the tripflares which has a 15 second delay before passing through it will trigger the collision. Also could just be the seconds before the grenade explodes though not sure&lt;br /&gt;
;objectTemplate.armor.addArmorEffect int std::string Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.addArmorEffectSpectacular int std::string Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.addWreckArmorEffect int std::string Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.alignLastEffectToHitDirection bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.angleMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.attackDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.canBeDestroyed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.canBeRepairedWhenWreck bool -&amp;gt; bool&lt;br /&gt;
:&amp;quot;Vehicles .tweak, Weapons .tweak&amp;quot;&lt;br /&gt;
:&amp;quot;Used in the AA Ship Boats. Basically, when it&#039;s a wreck, it can be repaired back to life.&amp;quot;&lt;br /&gt;
;objectTemplate.armor.criticalDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.deepWaterDamageDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.deepWaterLevel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.defaultMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.destroyOnSpectacularDeath bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionForceMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionForceMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hideChildrenOnSpectacularDeath bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hitPoints float -&amp;gt; float&lt;br /&gt;
:Vehicles .tweak&lt;br /&gt;
:The health of the vehicle. 0 = Dead. &lt;br /&gt;
;objectTemplate.armor.hpLostWhileCriticalDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hpLostWhileInDeepWater float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hpLostWhileInWater float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hpLostWhileUpSideDown float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.maxHitPoints float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.showDamageAsDirt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.speedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.timeToStayAfterDestroyed float -&amp;gt; float&lt;br /&gt;
:Vehicles .tweak&lt;br /&gt;
:&amp;quot;Interesting code. If set to PR&#039;s Jets and Helis, when they explode from wreck, the non-flaming wreck model stays though it shows in the minimap as an occupied vehicle.&amp;quot;&lt;br /&gt;
;objectTemplate.armor.timeToStayAsWreck float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.useMMOnDeath bool -&amp;gt; bool&lt;br /&gt;
:Use the Material Manager on Death. Not too sure about this one&lt;br /&gt;
;objectTemplate.armor.waterDamageDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.waterLevel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionForceMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionForceMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckHitPoints float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.artPos bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.attachClimberRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.attachToEventObject bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.attackSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.attenuationRange1 float -&amp;gt; float&lt;br /&gt;
:Used in .tweak Effect Files for Lightsource Templates&lt;br /&gt;
:&amp;quot;How wide you want the lightsource effect to be, used with ObjectTemplate.isDynamic 1. Range1 = X, which is the horizontal range. Max is 100, more than that will trigger an error message&amp;quot;&lt;br /&gt;
;objectTemplate.attenuationRange2 float -&amp;gt; float&lt;br /&gt;
:Used in .tweak Effect Files for Lightsource Templates&lt;br /&gt;
:&amp;quot;The height at which the lightsource will begin to drop. Range2 = Y, which is the vertical range. Max is 100 like above. To know the difference, set one to 50 and one to 100 and count the number of seconds the lightsource effect will last and compare.&amp;quot;&lt;br /&gt;
;objectTemplate.audio.newStyleAudio bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.audio.transformationRelativeRoot bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.audioReset -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.automaticPitchStabilization bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.automaticReset bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.automaticYawStabilization bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.autoUseAbility int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.averageTimeBetweenTests float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.awakeTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.blendMode std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.blockInputOnRotBundle std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.blurryVisionHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.blurryVisionTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.boneName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.bounceDamping float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.bounceLength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.bounceSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.bounceStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.boundingRadiusModifierWhenOccupied float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraShakeMaxSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraShakeSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraShakeStartSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayDofMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayDofMin float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayRightMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayRightMin float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayRodLength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwaySensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwaySpringDamping float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwaySpringStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.canFireGuiIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cannotFireGuiIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cannotFireTimer float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.canPickup bool -&amp;gt; bool&lt;br /&gt;
:Weapons&lt;br /&gt;
:&amp;quot;Allows explosives to be picked up using the wrench/repair object, example: at_mine&amp;quot;&lt;br /&gt;
;objectTemplate.canReverse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.capMaxSpeed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.castsDynamicShadow bool -&amp;gt; bool&lt;br /&gt;
:&amp;quot;Vehicles, Weapons and Soldiers&amp;quot;&lt;br /&gt;
:Enables the rendering of shadows.&lt;br /&gt;
;objectTemplate.castsStaticShadow bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.centerOfCollisionOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.centerOfMassOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
To offset the center of mass using 0/0/0 - X/Y/Z. Setting it to X/0.5/Z will make a Logistics Truck survive a direct ram to a Van while setting to 0 makes the truck crash. Tested while holding shift.&lt;br /&gt;
;objectTemplate.chance float -&amp;gt; float&lt;br /&gt;
:AmbientObjects.con&lt;br /&gt;
:&amp;quot;Chance that the triggerable effect may play when the player steps inside the radius. 1 means it will always play, while 0 means it will never play.&amp;quot;&lt;br /&gt;
;objectTemplate.changeLodAt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.chaseAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.chaseDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.chaseOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.clearTemplateList -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.clientHitDetection bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.climbableAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.climbersAttachForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.climbingSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.clockwise bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cockpitLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cockpitLod U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cockpitSubGeom int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cockpitSubGeom U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.bouncing bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.hasCollisionEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.maxStickAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.replenishingStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.replenishingType ReplenishingType -&amp;gt; ReplenishingType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.restoreHP float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.resurrectDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.stickToStaticObjects bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.stickToTerrain bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.stickToVehicles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionEffectName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionGroups U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionMesh std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionMesh std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionPart int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionSpeedAlongNormal float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionSpeedAlongPlane float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionStartRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.color Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.color Vec3ColorFloat -&amp;gt; Vec3ColorFloat&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.color1 Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.color2 Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.colorBlendGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneAngle1 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneAngle2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneInnerAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneOuterAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneOuterVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.constantForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.constantRpm bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.continousRotationSpeed Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.controlPointId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ControlPointId U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.controlPointName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.controlsCategory dice::hfe::world::VehicleCategory -&amp;gt; dice::hfe::world::VehicleCategory&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coolDownPerSec float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coolingFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.copyLinksCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.create std::string std::string -&amp;gt; IObjectTemplate*&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.createComponent std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.createdInEditor bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.createInvisible bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:Creates the object as invisible. Collisions and Functions still work. Tested on the at_mine&lt;br /&gt;
;objectTemplate.createNotInGrid bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.createVisibleInEditor bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.crewKitIndex int -&amp;gt; int&lt;br /&gt;
	:kits.con (example: gb82_pilot.con)&lt;br /&gt;
	:&amp;quot;Defines what Geom to use for the kit. Looks up the Geom1 etc in the .skinnedmesh which is located in the Meshes folder. For example&lt;br /&gt;
	: arg82/Meshes/arg82_kits1.skinnedmeshes. Open with BfMeshViewer to know what each number looks like.&amp;quot;&lt;br /&gt;
;objectTemplate.crosshairFireTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cullRadiusScale float -&amp;gt; float&lt;br /&gt;
	:&amp;quot;Weapons&lt;br /&gt;
	: Vehicle&lt;br /&gt;
	: Statics etc&amp;quot;&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMChase bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:Used to set at what distance the object is culled from display. Each number represents a distance of 25m. For example: ObjectTemplate.cullRadiusScale 6 = VD of 150m&lt;br /&gt;
;objectTemplate.CVMExternTrace bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMFlyBy bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMFrontChase bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMInside bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMNose bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMTrace bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.cycles int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damagedAmbientSoundLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageForBeingOutSideWorld float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageMandownSoldiers bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageOwner bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageWhenLost float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dampenSprintRotationalForceInAirMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dampHorizontalVel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dampHorizontalVelFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damping float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deAcceleration Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.debugAutoRotate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.debugForceGearUp bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.decalTextureName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.decreaseAngleToZero bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.decreaseAngleToZeroSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.decreaseAngleToZeroVerticalVel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.defaultAngleOfAttack float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.defaultWeaponIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.degradeDropStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.degradeThrowStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.degradeThrowStrength2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delay RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delayBeforeCycle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delayBeforeEnd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delayBeforeStart float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delayToUse float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.delete world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deleteComponent std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deployAnimationTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.destroyableWindowsTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.destroyOnExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.destroyWhenEmptyStorage bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonateAfterProjectileStopped bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonateAfterProjectileStoppedMinSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.allowFriendlyFireDetonation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.detectionRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.detonateDistanceToTarget float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.detonateOnWaterCollision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.effectRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.endEffectTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionConeAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionInnerConeRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionLineOfSightMinimumDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionSoldierLineOfSight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionSoldierLineOfSightHealRate float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionSoldierLineOfSightTimer float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionYMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMaxAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMaxHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMaxHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMaxRampTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMinAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMinHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMinHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMaxAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMaxHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMaxHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMaxRampTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMinAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMinHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMinHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMaxAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMaxHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMaxHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMaxRampTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMinAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMinHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMinHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangRadiusWithNightVision float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.invisibleAtEndEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.maxDepthForExplosion float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.minDetonationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.playMaterialEffectAtSurface bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.radiusDetonateWithAirVehicles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.replenishingStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.replenishingType ReplenishingType -&amp;gt; ReplenishingType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.showMineIndicationIcon bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.stopAtEndEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.timeUntilCanDetonate float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerType RadiusTriggerType -&amp;gt; RadiusTriggerType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerVictimMinSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.useCollisionNormal bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.useMMOnEndEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.devModCrouch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.devModLie float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.devModStand float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.devModZoom float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.fireDevAdd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.fireDevMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.fireDevSub float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.minDev float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.miscDevAddJump float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.miscDevMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.miscDevSub float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.radius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.setFireDev float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.setMiscDev float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.setSpeedDev float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.setTurnDev float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.speedDevAddForward float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.speedDevAddStrafe float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.speedDevMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.speedDevSub float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.subProjectileDev float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.turnDevAddPitch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.turnDevAddYaw float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.turnDevMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.turnDevSub float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.differential float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.direction Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.directionalScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableIfEnemyInsideRadius bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableInputWhileDucking bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableSpawnPointsOnEnter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableWhenEmptyVehicle bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableWhenEmptyVehicleDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableWhenLosingControl bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableWhenWreck bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dismountAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dismountCheckOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.distance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.distanceCannotEnter float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.distToMinDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.distToStartLoseDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dontAllowExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dontClearTeamOnExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.drag float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;How much the drag from the body of a vehicle affects its speed. Without it&lt;br /&gt;
	: a vehicle will have an infinite top speed.&amp;quot;&lt;br /&gt;
;objectTemplate.drag RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dragModifier Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dragModifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dragOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
	:&lt;br /&gt;
	:To offset the drag using 0/0/0 - X/Y/Z&lt;br /&gt;
;objectTemplate.dragOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.drawOrder std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dropHeadwear std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dropStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.effectChangeWaterHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.effectOnSpawn std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.effectTemplateBaseName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.elasticity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitDirectionZFromSpeedDof bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitFrequency float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitFrequencyScaleFactorLowerBound float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitPrio std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitRadius Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitRangeX RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitRangeY RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitRangeZ RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitterSpeedScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitterType std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.enabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.enemyTicketLossWhenCaptured int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.engineInfluence float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.engineName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.engineType int -&amp;gt; int&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;What kind of vehicle the engine is for. Car&lt;br /&gt;
	: tank&lt;br /&gt;
	: plane ship or helicopter.&amp;quot;&lt;br /&gt;
;objectTemplate.entryRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.events int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.exitSpeedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fadeInFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fadeOutFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.addBarrelName std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.addFireRate int -&amp;gt; void&lt;br /&gt;
	:&amp;quot;Weapons&lt;br /&gt;
	: Vehicles .tweak&amp;quot;&lt;br /&gt;
	:&amp;quot;Defines the fire mode selector. You can add three lines max of each one. 0 = Single&lt;br /&gt;
	: 1 = Burst&lt;br /&gt;
	: 2 = Auto&amp;quot;&lt;br /&gt;
;objectTemplate.fire.addTimeEvent WeaponTrigger WeaponAction float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.altFireInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
	:&lt;br /&gt;
	:Which PlayerInput map to use for the right-click function. Usually PIAlt&lt;br /&gt;
;objectTemplate.fire.batchSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.burstSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.busyUntilButtonRelease bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.detonatorObject std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.dropLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.dropWeaponAfterFiringDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.dropWeaponAfterReloadDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireInCameraDof bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireInCameraDofLocked bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireLaunchDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireLaunchDelaySoft float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireStartDelay RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.hideLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.hideWeaponAfterFiringDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.hideWeaponAfterReloadDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.ignoreFireButton io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.isBarrel std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.maxProjectilesInWorld int -&amp;gt; int&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;The max amount of projectiles in the weapon that can be set before the engine cleans up each one. If the limit is 10&lt;br /&gt;
	: deploying one any further will delete an existing projectile. Used for explosives&lt;br /&gt;
	: mines and maybe bullets.&amp;quot;&lt;br /&gt;
;objectTemplate.fire.onlyFireWhenProne bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Restricts the weapon to fire only when prone. Though when firing during prone&lt;br /&gt;
	: a player can then stand and run to deploy an explosive for example. FH2 uses these for the machine gunner kits&amp;quot;&lt;br /&gt;
;objectTemplate.fire.projectileStartPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
	:&lt;br /&gt;
	:Position in X/Y/Z from the crosshair or PCO from where the projectile will launch.&lt;br /&gt;
;objectTemplate.fire.projectileStartRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.pullbackTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.radioMessageDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.randomRotationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.removeBarrelName std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.roundsPerMinute int -&amp;gt; int&lt;br /&gt;
:&amp;quot;Used in GenericFirearms (Weapons, Projectiles)&amp;quot;&lt;br /&gt;
:&amp;quot;The rate of fire, measured in Rounds Per Minute (RPM). Must be dividable by 1800. Check: http://researchmaniacs.com/Math/Divisible-By/What-is-1800-divisible-by.html&amp;quot;&lt;br /&gt;
;objectTemplate.fire.showWeaponAfterReloadDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.timeToReachMaxStrengthSlow float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.toggleWeaponTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.triggerChargesTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.useDummyProjectiles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fixAxisSpring bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flagTemplateTeam0 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flagTemplateTeam1 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flagTemplateTeam2 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flapLift float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flicker float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.floaterMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.floatMaxLift float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.floatMinLift float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.changePitch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.changeYaw float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.maxPitch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.maxYaw float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.minDist float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.followStiffness float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.force float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.forceSustainedFire bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.forceToWaterSurface bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ForSoldierOnly bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fov float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gasCloudDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gasCloudRadiusTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gasCloudType geom::GasCloudType -&amp;gt; geom::GasCloudType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gasMaskSprintFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearChangeTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearDown float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearDownDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearDownHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearDownSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearUp float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearUpDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearUpHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearUpSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry.dropGeom int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry.kit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry1P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry3P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometryPart int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.getHeatBarType -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.getPosition int -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.getRotation int -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.getTemplate int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.globalEffectLevel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gravity float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:Sets the gravity for the map. Can use minus values as well&lt;br /&gt;
;objectTemplate.gravityGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gravityModifier float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:Sets the gravity for the vehicle. Can use minus values as well which makes the projectile go upwards&lt;br /&gt;
;objectTemplate.gravityModifier RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gravityModifierOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.grip PhysicsGripFlags -&amp;gt; PhysicsGripFlags&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Set only for wheels. &lt;br /&gt;
;- Roll grip for wheels that are not powered.&lt;br /&gt;
;- Engine grip for wheels that are powered.&lt;br /&gt;
;- Engine dummy grip for wheel you want to make looking like they are powered&lt;br /&gt;
	: but actually aren&#039;t.&amp;quot;&lt;br /&gt;
;objectTemplate.groundContactVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.group U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.halfVolumeDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.handleCollisionSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasAltEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasCollisionPhysics bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Check for all objects that has a collision mesh. Allows it to be hit by both bullets&lt;br /&gt;
	: players and vehicles&amp;quot;&lt;br /&gt;
;objectTemplate.HasGreyCapturingState bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasMobilePhysics bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:Check for objects and parts that can move.&lt;br /&gt;
;objectTemplate.hasOnTimeEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasOverDamage bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasPartner bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasPointPhysics bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasRelativeOffset bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasResponsePhysics bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasRestrictedExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasRotationalPointPhysics bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.HDRIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.healSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.healStorageSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.heatAddWhenFire float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.heatIncrement float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.height float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.heightOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.altHelpSoundKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.altHelpStringKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToDistance int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpSoundKeyEnemy std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpSoundKeyFriendly std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpSoundKeyNeutral std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpStringKeyEnemy std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpStringKeyFriendly std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpStringKeyNeutral std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.helpSoundKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.helpStringKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.lowAmmoHelpSoundKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.lowAmmoHelpStringKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.lowArmorHelpSoundKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.lowArmorHelpStringKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hideFirstPerson bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hoistFlag bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hoistMinMax Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.holdObject bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.horizontalDampAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.horizontalDampAngleFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.horizontalSpeedMagnifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hullHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.poleVectorLeft Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.poleVectorRight Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.positionLeft Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.positionRight Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.rotationLeft Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.rotationRight Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inertiaModifier Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.info world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inheritHeatFromPrimary bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.initiallyWalkable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.input io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inputToPitch io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inputToRoll io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inputToYaw io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideDamageFrequency float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideDamageThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideFOV float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideStaticSunAmbientColor Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideStaticSunColor Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideStaticSunDamageColor Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideStaticSunDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.intensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.intensity RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.intensityAtSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.intensityOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inventorySize U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inverseHeatBar bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.invertGear bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.invisible bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.is3dSound bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;If the .wav file is Mono&lt;br /&gt;
	: setting it to 1 will tell the engine to play it on both channels. If applied to a .wav that is Stereo&lt;br /&gt;
	: it will play on the entire map. Same with .ogg files though it&#039;s usually experiementation.&amp;quot;&lt;br /&gt;
;objectTemplate.isCounterForce bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isDestructable bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:Check only if object is a destroyable static object.&lt;br /&gt;
;objectTemplate.isDynamic bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isGasMask bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isHemisphere bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isLocalSystem bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Makes the effect follow the projectile and allows it to arch. Used for the M67 &amp;quot;&amp;quot;Zippo&amp;quot;&amp;quot; Tank Flamethrower Effect. Without it&lt;br /&gt;
	: the flame effect just shoots straight but not following the projectile&amp;quot;&lt;br /&gt;
;objectTemplate.isLooping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isNightVision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isNotSaveable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isOpenVehicle bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Allows the ragdoll to slide off when killed from a vehicle position. Used in Technicals. If this is option&lt;br /&gt;
	: the passenger animation must have a die animation specified otherwise the ragdolls will float in the air.&amp;quot;&lt;br /&gt;
;objectTemplate.isOvergrowth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isPortalPassing bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isSelectable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isSleeping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isStatic bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isStaticSystem bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isUnderwaterEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isUnstrategicControlPoint bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.itemIndex int -&amp;gt; int&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;What number in the keyboard is mapped to what weapon/tool. Max is 9&lt;br /&gt;
	: not sure about 0. Also positions the weapon icon square.&amp;quot;&lt;br /&gt;
;objectTemplate.itemType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.keepProjectiles float -&amp;gt; float&lt;br /&gt;
	:Weapons&lt;br /&gt;
	:Time to keep the projectile in the world in seconds after you or the weapon dies&lt;br /&gt;
;objectTemplate.killHeatSeekingMissile bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.kitTeam int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.kitType hfe::KitType -&amp;gt; hfe::KitType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.lesserYawAtSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.liftRegulated bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.LightAffectionFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.lightMapIntensityOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.lightType std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.linkAttachMovement float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.linkAttachTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.linkedEffectContainer std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.list std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.listenerObstruction float -&amp;gt; float&lt;br /&gt;
	:Vehicles .tweak&lt;br /&gt;
	:How muffled is the sound. Lower value is least muffled.&lt;br /&gt;
;ObjectTemplate.listTemplateClasses -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.listTemplates -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.loadAll -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.localPredictOnClient bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Used with Grenades and if there&#039;s any effect&lt;br /&gt;
	: projectiles. Seems like it tells the server to predict what&#039;s going to happen. Maybe used with the Networkable Setting?&amp;quot;&lt;br /&gt;
;objectTemplate.lodDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.LodDistance std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.loopCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.looping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.loseControlWhenEnemyClose bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.loseControlWhenNotClose bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.lowSamples int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maintainCameraOnEnter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maintainCameraOnExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.manDownCameraOffsetInDof float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.manDownCameraOffsetInUp float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.mapMaterial uint std::string uint -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maskOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maskType hfe::MaskObjectType -&amp;gt; hfe::MaskObjectType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.mass float -&amp;gt; float&lt;br /&gt;
	:&amp;quot;Used in Vehicles&lt;br /&gt;
	: Deployables etc&amp;quot;&lt;br /&gt;
	:Mass is the weight of the vehicle in KG and also taking into account the GravityModifier value&lt;br /&gt;
;objectTemplate.material int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxAngleOfAttack float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxCorner Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxDistanceUnderWaterSurface float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxGasCloudRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxNrOfObjectSpawned U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxResetSpeed Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.MaxRopeLength float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:Fastropes confirmed ?!?!?!?!&lt;br /&gt;
;objectTemplate.maxRotation Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxSpawnDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxSpeed Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxTracerScaler float -&amp;gt; float&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:How long the tracer effect can be depending on projectile speed. Refs: http://www.battlefieldsingleplayer.com/forum/index.php?showtopic=8592&amp;amp;mode=threaded&amp;amp;pid=84936&lt;br /&gt;
;objectTemplate.maxTriggerDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxVertRegAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.MaxZiplineLength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.mediumSamples int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minCorner Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minDistanceUnderWaterSurface float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minGasCloudRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minimapNameOffset Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minimumTimeBetweenTriggering float -&amp;gt; float&lt;br /&gt;
	:AmbientObjects.con (Map)&lt;br /&gt;
	:The time when the trigger will repeat again after entering the trigger radius. Happens after the effect plays. In seconds. Depends also on ObjectTemplate.chance&lt;br /&gt;
;objectTemplate.minNrToTakeControl U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minRotation Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minSpawnDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minTimeBetweenActivation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minTracerScaler float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minTrailVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minYNormal float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.movementSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.movementType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.moveToWaterSurface bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.name -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nameTagOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nearCullingEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.networkableInfo std::string -&amp;gt; std::string&lt;br /&gt;
	:Networkables.con&lt;br /&gt;
	:&amp;quot;Needs to be set for objects that won&#039;t work online without them. Depends on the way it&#039;s set and if it crashes immediately&lt;br /&gt;
	: is laggy&lt;br /&gt;
	: or crashes unexpectantly&amp;quot;&lt;br /&gt;
;objectTemplate.neverDrawAs1p bool -&amp;gt; bool&lt;br /&gt;
	:&amp;quot;Vehicle&lt;br /&gt;
	: Weapons&lt;br /&gt;
	: Effects&amp;quot;&lt;br /&gt;
	:Makes the effect not draw in front of you when in 1p mode. Link: http://www.realitymod.com/forum/f388-pr-bf2-community-modding/113277-1p-animations-pcos-3.html&lt;br /&gt;
;objectTemplate.newCar2.brakeTorque float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.engineBrakeTorque float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.engineFeedbackMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.frictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.frictionTorque float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.maxRpm float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.minRpm float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.slopeTorqueMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.useClutchedTorque bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelInertia float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatDriveFrictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatFrictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatMinDynamicFriction float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatPeakAt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongDriveFrictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongFrictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongMinDynamicFriction float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongPeakAt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noEffectAtPerpSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noPassengerTimeToLive int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noPhysics bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noPropellerEffectAtSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nosePos Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.notCycledIfOccupied bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noVertRegAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nrOfObjectToSpawn int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nrOfRespawns int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.numberOfGears int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.NumberOfLinks int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.numNetworkedEffects int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.numPlanes int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.objectShadows bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.objectTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.onlyTakeableByTeam U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.onlyWhenOccupied bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.otherCollisionLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.overheatPenalty float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pan float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ParticleMaxSize float -&amp;gt; float&lt;br /&gt;
	:Used in Vehicle .con and .tweak files&lt;br /&gt;
	:&amp;quot;Defines what materials the vehicle should use&lt;br /&gt;
	: which references the materialdefine file. Use BfMeshViewer to find out what numbers belong to what sides.&amp;quot;&lt;br /&gt;
;objectTemplate.particleSystemTemplate std::string -&amp;gt; std::string&lt;br /&gt;
	:Same as above&lt;br /&gt;
	:Same as above&lt;br /&gt;
;objectTemplate.particleType std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pcoFlags int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pcoId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.penetrate.allowLiquidPenetration bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.penetrate.allowSolidPenetration bool -&amp;gt; bool&lt;br /&gt;
	: &lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.penetrate.neverPenetrate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.physicsFrequency int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.physicsType PhysicsType -&amp;gt; PhysicsType&lt;br /&gt;
	:Vehicles&lt;br /&gt;
	:&amp;quot;None&#039; for no collision&lt;br /&gt;
	: &#039;Point&#039; for projectile (Ignores mesh)&lt;br /&gt;
	: &#039;Mesh&#039; if object has collision mesh&amp;quot;&lt;br /&gt;
;objectTemplate.pitch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pitchEnvelope std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pitchOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pivotOffset Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.PivotPosition Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.playAtEventPosition bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.playAtPlayerPosition bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.portalPassingPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.poseCameraPosition int Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.position Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.positionalSpeedInDof RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.positionalSpeedInRight RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.positionalSpeedInUp RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.positionOffset Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.postProcess.tvDistortionFreq float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.postProcess.tvDistortionRoll float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.postProcess.tvDistortionScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.postProcess.tvInterference float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.preCacheObject bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.preWarmTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.printScript world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectileTemplate std::string -&amp;gt; std::string&lt;br /&gt;
	:&amp;quot;In Weapons&lt;br /&gt;
	: Vehicles .tweak GenericFirearm&amp;quot;&lt;br /&gt;
	:Defines the projectile that the GenericFirearm should use. Looks for the GenericProjectile that is defined in all .tweak files. &lt;br /&gt;
;objectTemplate.projectOnHeightmap bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorApplyMask bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorAspect float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorFar float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorFov float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorNear float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorTexture std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.propRotAxis int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pureRotational bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.QualityLevel std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radialDirection float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.destroyedMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.failMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.repairedMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.spottedMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.useMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radiusOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ragdollLandedDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomAgeFactor RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomColorIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomDirectionAngle Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomizeGeomPart bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRadialDirection float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRotation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRotationSpeed Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRotationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomTimeToLive float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rcType RemoteControlledObjectType -&amp;gt; RemoteControlledObjectType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.readBinary std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.cameraRecoilSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.cameraRecoilSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.goBackOnRecoil bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.hasRecoilForce bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilForceLeftRight RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilForceUp RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilGraphExponent float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilGraphFrameCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilGraphTotalMovement float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilSpeedGB float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.zoomModifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.refillAmmoSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulatePitch Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulatePitchInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateRoll Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateRollInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateToLift float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateVerticalPos Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateVerticalPosInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateYaw Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateYawInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
	:In the effects .tweak when creating an effect&lt;br /&gt;
	:Allows an effect template to be used with custom settings.&lt;br /&gt;
;objectTemplate.regWhenMinInput float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.relativePositionInDof RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.relativePositionInRight RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.relativePositionInUp RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.relativePositionOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rememberExcessInput bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.remoteEngineInput int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.removeTemplate int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.replaceItem std::string -&amp;gt; void&lt;br /&gt;
	:In the .con and .tweak&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.respawnDelay float -&amp;gt; float&lt;br /&gt;
	:In the .con and .tweak&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.restoreRotationOnExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.restoreSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.reverbLevel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ropeScaleFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotateAsAnimatedUV bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotateAsAnimatedUVObject std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotateAsAnimatedUVReverse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotateUV bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationalForce Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationalSpeedInDof RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationalSpeedInRight RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationalSpeedInUp RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationAxle int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationSpeed Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationSpeedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationSpeedModBlur float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.save world::IObjectTemplate_ptrproxy -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.saveAll -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.saveInSeparateFile bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.scale Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatAnimationSystem std::string -&amp;gt; std::string&lt;br /&gt;
	:In Vehicles .tweak&lt;br /&gt;
	:Defines the location of the .inc animation file for the seat. Example: Passenger.inc&lt;br /&gt;
;objectTemplate.seatInformation std::string Vec3 Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatLeftRotationLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatParent std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatRightRotationLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
	:In Vehicles .tweak&lt;br /&gt;
	:Allows the PCO to be rotated. Uses X/Y/Z. Relevant to Seat X Y Z Arrow. See BF2Editor Vehicle for more info. For example -10/0/0 wil rotate the player backwards.&lt;br /&gt;
;objectTemplate.secondaryProjectileTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.directionBonus float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.maxAngleLock float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.maxDistLock float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.reLockTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.targetType TargetType -&amp;gt; TargetType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.trackingDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.selfLights bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.selfShadowIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.selfShadows bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setActiveTemplate int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAIEnterOnSpawn bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAllowSpawnCloseToVehicle bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAnimationFrameHeightRelative float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAnimationFrameWidthRelative float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAxisFixation Math::Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setCollisionMesh std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setEnterOnSpawn bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setExplodePartAtDestroy bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setGearRatios float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setHasTarget bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setHealth int float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setHeatBarType heatBarType -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setMinSpawnHeight float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setNumWindows int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setObjectTemplate int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setOnlyForAI bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setOnlyForHuman bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setPosition Math::Vec3 int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setPositionalFixation Math::Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setRotation Math::Vec3 int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setScatterSpawnPositions bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSkeletonCollisionBone std::string int Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSoldierExitLocation Vec3 Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnAsParaTroper bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnDelay float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnPositionOffset Math::Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnPreventionDelay float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnRotation Math::Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setTeamGeometry int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setToolTipType dice::hfe::world::ToolTipType -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setVehicleType dice::hfe::world::VehicleType -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.shadowIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.shakeFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sharedStorageSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.showInFirstPerson bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.showInThirdPerson bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.showOnMinimap bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.signalTriggerId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sinkingSpeedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.size float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.size RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeModifier Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeModifierX float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeModifierY float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeModifierZ float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.skeleton std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.skeleton1P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.skeleton3P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.snapToZeroOnNoInput bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.softness float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soldierExitPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soldierExitRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sound.maxSoundsPerBurst int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sound.noisy bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundFilename std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundFilter std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.spawnDelay float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.spawnDelayAtStart bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.spawnOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.speccolor Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.specialToggleWeaponInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.speed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.speedFromParticle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.speedFromPhysics bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.spinWhenNoEngineInAir float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintDissipationTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear1Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear2Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear3Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear4Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear5Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintLossAtJump float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintRecoverTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintStaminaDissipationFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAtCreation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAutoRotateOnEnter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startLodPercentageOfLodDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startOnEffects int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startProbability float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startRotation RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startTeam int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.stopOnEffects int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.stopType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.3dMapIcon int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.destroyedIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.intactIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.isOnePiece bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.part int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.strategicObjectName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyGroupId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyGroupNeeded int int bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyValueNeededTeam1 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyValueNeededTeam2 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyValueTeam1 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyValueTeam2 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supportsEmitter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supportsGlow bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supportsPerPixel bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supportsPerVertex bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.connectionEffect std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.connectionEffectOnlyWhenZoomed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.disableFireWhenActiveMissile bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.disableGuidanceOnReload bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.lockAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.lockDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.loseLockDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.maxDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.maxVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.minVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.onLockChangeToWeapon bool std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.sendVehicleLockWarning bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.setTargetAtMaxDistance bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.targetInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.targetObjectTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.targetSystem TargetSystem -&amp;gt; TargetSystem&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.updateInterval float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.useCameraDirectionToTarget bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.useDynamicVelocity bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.velocityModifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.targetType TargetType -&amp;gt; TargetType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.team int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.team U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.team int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.teamChange bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.teamFromClosestCP bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.teamOnVehicle bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.template std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.templateHasBeenUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.textureName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.textureOffsetVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.textureTileFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.throwStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.throwStrength2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.Timeout float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToGetControl float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToLive RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToLive float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToLiveAfterDeath float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToLoseControl float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToRemoveTK float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.toggleMouseLook bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.toggleWeapon bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.tolerance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.torque float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.tracerConvergeDistance float -&amp;gt; float&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:&amp;quot;At what distance the tracers (which start from the gunbarrel) and the projectile&lt;br /&gt;
	: which start from the camera&lt;br /&gt;
	: converges. Only relevant if FireInCameraDof is checked.&amp;quot;&lt;br /&gt;
;objectTemplate.tracerInterval int -&amp;gt; int&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:&amp;quot;Set one for tracer on every shot&lt;br /&gt;
	: 2 for every other and so on.&amp;quot;&lt;br /&gt;
;objectTemplate.tracerScaler float -&amp;gt; float&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:How long the tracer effect will be as default.&lt;br /&gt;
;objectTemplate.tracerSizeModifier float -&amp;gt; float&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:How fat the tracer will be.&lt;br /&gt;
;objectTemplate.tracerTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnAcceleration float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnHighAmplitude float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnHighOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnLowAmplitude float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnLowOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trailEffectTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.Transparency RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.transparencyGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.treeCollisionDiameter float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.triggerForEachActivatingPlayer bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.triggerId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.triggerRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.turnVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.type world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.type int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleFlightHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleSampleResolution float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.unableToChangeTeam bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.unlockIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.unlockLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.update world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.updateAll -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.upDropBoost float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.upThrowBoost float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.upThrowBoost2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useAbsoluteDirection bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useButtonRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useCameraOrientation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.usedByAi bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useDeAcceleration bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.usedOnTransparentMaterials bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.usedOnTransparentSurface bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useGeomPart int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useProjectileCamera bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleCameraShake CameraShakeTriggers -&amp;gt; CameraShakeTriggers&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleCategory dice::hfe::world::VehicleCategory -&amp;gt; dice::hfe::world::VehicleCategory&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleFov float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.AbilityIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.addAbilityIcon std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.addShowOnCamMode int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.addVehicleIcon std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.disableOnSprint bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.displaySelectionOnEnter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.enablePostProcessingOnGuiIndex bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.getShowOnCamMode int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.guiIndex int -&amp;gt; int&lt;br /&gt;
	:Vehicles and Weapons .tweak&lt;br /&gt;
	:Defines the Vehicle General User Inferface Index to use like the Blackhawk green HUD. Gui Index is located in the .cons of menu\HUD\HudSetup\Vehicles&lt;br /&gt;
;objectTemplate.vehicleHud.hasTurretIcon bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.hudName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.injurySound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.isCoDriver bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.maxClimbSpeed int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.miniMapIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.miniMapIconLeaderSize std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.miniMapIconSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.pantingSound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.showCrossHair bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.showInfo bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.showOnCamMode int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.spottedIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.spottedIconSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.standardHelpEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.typeIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.useChildHud bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.usePlayerIcon bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.useSelectionIcons bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.useVehicleCommRose bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.vehicleIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.vehicleIconPos Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.vehicleType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.velocity float -&amp;gt; float&lt;br /&gt;
	:&amp;quot;Used in GenericFirearms (Weapons&lt;br /&gt;
	: Projectiles)&amp;quot;&lt;br /&gt;
	:&amp;quot;The speed of the projectile&lt;br /&gt;
	: measured in Rate of Fire (ROF). Lower ROF are affected by gravity/bullet drop while higher ones fire with lower bullet drop&amp;quot;&lt;br /&gt;
;objectTemplate.visibleOn3dMap bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.volume float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:The loudness of the sound.&lt;br /&gt;
;objectTemplate.volumeEnvelope std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.volumeGroup int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.warningHud.firstWarningSound std::string -&amp;gt; std::string&lt;br /&gt;
	:Used in Vehicle .tweak&lt;br /&gt;
	:Defines the 1st warning sound when getting locked onto. Uses the file path pointing to a .wav or an .ogg file along with usual sound configuration code. &#039;Beep Beep Beep&#039;&lt;br /&gt;
;objectTemplate.warningHud.secondWarningSound std::string -&amp;gt; std::string&lt;br /&gt;
	:Used in Vehicle .tweak&lt;br /&gt;
	:Defines the 2nd warning sound when getting locked onto. Uses the file path pointing to a .wav or an .ogg file along with usual sound configuration code. &#039;Beeeeeeeeeeep&#039;&lt;br /&gt;
;objectTemplate.warningHud.warningIcon std::string -&amp;gt; std::string&lt;br /&gt;
	:Used in Vehicle .tweak&lt;br /&gt;
	:Defines the location of the warning icon. Example: ObjectTemplate.WarningHud.warningIcon Ingame\GeneralIcons\Action_Icons\mylaserlockicon.tga&lt;br /&gt;
;objectTemplate.warningHud.warningType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.waterHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.waterSurfaceOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.addShowOnCamMode int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.altCrosshairIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.altGuiIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.altWeaponIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.ammoBarBackIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.ammoBarFrontIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.ammoIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.clipIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.crosshairIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.crosshairIconSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.deviationFactor int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.disableOnSprint bool -&amp;gt; bool&lt;br /&gt;
	:Used in Weapons/Vehicles .tweak&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.weaponHud.displaySelectOnActivation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.enableMouse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.enablePostProcessingOnGuiIndex int -&amp;gt; int&lt;br /&gt;
	:Used in Weapons/Vehicles .tweak&lt;br /&gt;
	:Makes the GuiIndex have a black and white effect. Use with all objectTemplate.postProcess.tv code to adjust the TV effect&lt;br /&gt;
;objectTemplate.weaponHud.firstLockSound std::string -&amp;gt; std::string&lt;br /&gt;
	:&lt;br /&gt;
	:The first lock sound that plays when there is a lock in progress on the jet&lt;br /&gt;
;objectTemplate.weaponHud.getShowOnCamMode int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.guiIndex int -&amp;gt; int&lt;br /&gt;
	:&amp;quot;Used in Weapons&lt;br /&gt;
	: Vehicle .tweak&amp;quot;&lt;br /&gt;
	:Defines the Weapon General User Inferface Index to use like the repair bar. Gui Index is located in the .cons of menu\HUD\HudSetup\Vehicles&lt;br /&gt;
;objectTemplate.weaponHud.hasFireRate bool -&amp;gt; bool&lt;br /&gt;
	:Used in Weapons .tweak&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.weaponHud.hasMag bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.hasRangeFinder bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.hudName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.maxVisualDeviation int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.minVisualDeviation int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.overheatSound std::string -&amp;gt; std::string&lt;br /&gt;
	:&amp;quot;Used in Weapons&lt;br /&gt;
	: Vehicle .tweak&amp;quot;&lt;br /&gt;
	:&amp;quot;For the overheat sound. Adding it makes the engine reference the string defined with MenuSound.con. Usually it&#039;s S_Weapon_Handheld_Overheat&lt;br /&gt;
	: S_Vehicle_Handheld_Overheat but can be anything and custom ones can be used if needed&amp;quot;&lt;br /&gt;
;objectTemplate.weaponHud.secondLockSound std::string -&amp;gt; std::string&lt;br /&gt;
	:&amp;quot;Used in Weapons&lt;br /&gt;
	: Vehicle .tweak&amp;quot;&lt;br /&gt;
	:The second lock sound that plays when the lock has been set&lt;br /&gt;
;objectTemplate.weaponHud.selectIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.showAmmo bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.ShowClips bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.showInfo bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.showOnCamMode int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.specialAbilityIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.switchGuiOnCamera bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.weaponIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.widnBlowTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windAffectionFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windAgingFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windBlowTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windFalloff float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windIsDynamic bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windowSizeVector Vec3 -&amp;gt; Vec3&lt;br /&gt;
	:&amp;quot;Used in Projectiles&lt;br /&gt;
	: Vehicles&lt;br /&gt;
	: Effect&amp;quot;&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.windRadialFalloff float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windSpeedAgeDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windType std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.wingLift float -&amp;gt; float&lt;br /&gt;
	:&amp;quot;Planes&lt;br /&gt;
	: Helis&amp;quot;&lt;br /&gt;
	:How much speed will affect object lifting on control surface.&lt;br /&gt;
;objectTemplate.wingToRegulatorRatio float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.workOnSoldiers bool -&amp;gt; bool&lt;br /&gt;
	:Supply Objects&lt;br /&gt;
	:Allows the soldier to receive HP/Ammo depending on the type of supply set&lt;br /&gt;
;objectTemplate.workOnVehicles bool -&amp;gt; bool&lt;br /&gt;
	:Supply Objects&lt;br /&gt;
	:Allows the vehicle to receive HP/Ammo depending on the type of supply set&lt;br /&gt;
;objectTemplate.worldFOV float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.writeBinary std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.writeZ bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.yawSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ziplineSoldierHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.addZoomFactor float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.allowUntoggledFire bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.changeCameraId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.changeCameraViewMode CameraViewMode -&amp;gt; CameraViewMode&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.changeFovDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.disableMuzzleWhenZoomed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.mouseSpeedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.onlyZoomWhenProne bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.startCameraId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.startCameraViewMode CameraViewMode -&amp;gt; CameraViewMode&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.useProjectileCamera bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.zoomDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.zoomInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.zoomLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.zoomOutAfterFire bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zRotation RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zRotationSnap float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.togglePause -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== overgrowth ==&lt;br /&gt;
;overgrowth.addMaterial std::string uint -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.addType std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.closeDistFade float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.closeDistPercentage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.editorEnable float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.exportToTerrainTexture -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.generateAll -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.generateAtlas -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getActiveMaterialName -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getGeometryList -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getLodDistance -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getMaterialList -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getTypeList -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.lodTimer float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.paintMaterial float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.paintShadowmap float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.path std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.postLoad -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.preLoad -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.removeActiveMaterial -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.removeActiveType -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.save -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.setActiveMaterial std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.setActiveType std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.density float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.geometry std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.minRadiusToOthers float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.minRadiusToSame float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.normalScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.randomScale Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.rotationScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.viewDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.viewDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;Particles.enableOldParticles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Particles.enableParticles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== particleSystemManager ==&lt;br /&gt;
;particleSystemManager.affectedByWind bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.drawBoundingBoxEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.drawStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.generateTexture -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.overdrawScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.particleSystemShaderQuality uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.qualityLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.resetStats -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.startFadePercentageOfViewDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.startLodPercentageOfLodDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.viewDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;physics.airDensityZeroAtHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;physics.gravity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;physics.listProperties -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;physics.wind Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
== Player ==&lt;br /&gt;
;Player.active IPlayer* -&amp;gt; IPlayer*&lt;br /&gt;
: Unknow&lt;br /&gt;
;Player.create std::string std::string -&amp;gt; IPlayer*&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.isAi bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.isAlive bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.isNetwork bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.kit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Player.list -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Player.listPlayerClasses -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.moveTo Vec3 -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.name -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.pickup std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Player.saveAll std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.setFov float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.setVehicleWithInputId IObject_ptrproxy int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.spawnGroup int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.team int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.vehicle IObject_ptrproxy -&amp;gt; IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;portal.debugLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;portal.showStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== profile ==&lt;br /&gt;
;profile.activateCharacterProfile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.activatePlayerProfile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.activeCharacterProfile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.activeMod std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.activePlayerProfile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.addCharacterProfile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.addModSetting std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.applySettings -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.createPlayerProfile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.defaultKit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.getIndexForKit std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.playerName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.rank int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.setIndexForKit std::string int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.tagIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.tagText std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.visualUnlockLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
== pythonHost ==&lt;br /&gt;
;pythonHost.reinitialize -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;pythonHost.sendCommand std::string std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== radio ==&lt;br /&gt;
;radio.answer bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.callForAmmo -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.callForMedic -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.callForRepair -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radioInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;radioInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.sendKitMessage -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.sendSpottedMessage bool world::VehicleType -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.setSpottedMenuActive -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radioVehicleInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;radioVehicleInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.active bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addAngularConstraint int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addBone int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addCapsuleCollision int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addConstraint int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addDihedralAngleConstraint int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addDistanceLessThanConstraint int int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addForce int Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addJointConstraint int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addParticle int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.drawConstraints bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.gravity float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.linkMode int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.lockBone int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.removeConstraint int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.reset -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.save -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.setParticleCollisionCriteria float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.skeleton std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.toSkeleton int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
 == renderer ==&lt;br /&gt;
;renderer.allowA2M bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.allowOnDemandPostProcessing bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.ambientIlluminationRange Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.ambientSun bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.clearColor BaseVector3&amp;lt;int&amp;gt; -&amp;gt; BaseVector3&amp;lt;int&amp;gt;&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.coronaFadeSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.disableFadeOnRoads bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.distanceCullConst float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.distanceCullConstPCO float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.divAccum float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.draw1pMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.draw1pZOnly bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawBundledMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawConsole bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawDeferred bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawFps int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawGraphs bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawHud bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawNametags bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawObjects bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawOvergrowth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawParticles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawPostProduction bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawRoads bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawSkinnedMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawSkyDome bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawStaticMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawSunFlare bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawTerrain bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawTrees bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawUndergrowth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawWatermark bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.dumpScreen std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.enableHWOcclusion bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRBlendingFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRBlendingTimeDark double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRBlendingTimeLight double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDREnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRHorizWeights std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRPassGate float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRVertWeights std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRWeights std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Renderer.fieldOfView1p float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fogColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fogStartEndAndBase Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.forceBundledMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.forceSkinnedMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.forceStaticMeshMaxPolyPercentage int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.forceStaticMeshSkipLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.getQualityLodDistanceBM int -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.getQualityLodDistanceSKM int -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.getQualityLodDistanceSTM int -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.globalBundleMeshLodDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.globalSkinnedMeshLodDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.globalStaticMeshLodDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.glowEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.glowStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.isNightMap bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.lightBlurStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.listScreenModes -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.makeTopWorldScreen U32 std::string Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.minCullDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightMode uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightVisionEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightVisionGradient std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightVisionMaxPower float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightVisionRegenRPS float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.occlusionObjectsMaxFrames int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.occlusionTerrainMaxFrames int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.presentAsync bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.presentSpinIfBusy bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.qualityLodEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.renderAheadLimit uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.roadDepthBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.roadLodDistMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.roadSlopeScaleDepthBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.screenDumpPath std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.screenMode int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.setQualityLodDistanceALL int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.setQualityLodDistanceBM int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.setQualityLodDistanceSKM int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.setQualityLodDistanceSTM int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Renderer.soldier.debugCharacterMode int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Renderer.soldier.debugDrawCollision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Renderer.soldier.debugDrawSkeletons bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.stopRenderMovie -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tearGasStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvAmbient float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvGranularity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvInterference float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tweakFarPlane1p float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tweakNearPlane float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tweakNearPlane1p float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.vsync bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterAnimSpeed float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:Sets the water speed.&lt;br /&gt;
;renderer.waterColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterFogColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterFogStartEndAndBase Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.watermarkFilename std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.watermarkPos Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.watermarkScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterNormalMap std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterScroll Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterSpecularColor Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterSpecularPower float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.xpPerfFlags int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.xpPerfFlags2 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.addNick std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.clear -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.configFile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.list -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.load -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.removeNick std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.save -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== scoreboard==&lt;br /&gt;
;scoreboard.setToggleShow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreboard.singleClick int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== scoreManager ==&lt;br /&gt;
;scoreManager.ammo int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.ammoScoreLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.assistKill int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.controlPointCapture int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.death int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.driverPassenger int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.flagCapture int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.flagReturn int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.heal int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.healScoreLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.inDirectKill int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.kill int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.objective int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.repair int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.repairScoreLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.soldierRevive int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.teamDamage int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.teamDamageLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.teamVehicleDamage int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.teamVehicleDamageLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.TK int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.vehicleRevive int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.boolGet std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.boolSet std::string bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.floatGet std::string -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.floatSet std::string float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.intGet std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.intSet std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.stringGet std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.stringSet std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.U32Get std::string -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.U32Set std::string U32 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== shadermanager ==&lt;br /&gt;
;shadermanager.byPassDiceStates bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileDebugTerrain bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compilePartialPrecisionTypes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileSkipOptimizations bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileUsePartialPrecision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileUsePreShaders bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileUsePS2A bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileWithDebug bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.listEffects -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.reloadAllEffects -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.reloadEffect std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.allowAlphaShadows bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.alphaShadowThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.dropShadowClipHeightOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.dynamic1pShadowsEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.dynamicShadowsEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.dynamicStaticMeshShadowsEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.lightmapIntensityBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.occludedSkyNightIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadow80Line float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowFromBundledMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowFromSkinnedMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowFromStaticMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowFromTerrainLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowIntensityBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapBitDepth int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapDepthBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapDepthDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapIncludeStaticMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapObjectSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapSlopeBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMergeDynamicShadowFrustums bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowOccluderOversizeFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowOverrideQuality int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMFovY float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMUseSlideback bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMUseUnitCubeClipping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMZFarOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMZMinInfinityZ float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMZNearOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowShowFrustums bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowSunExtrusionLength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowSunHeightOverFade Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowSunScalePower float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowTestBelowRayLenght float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowTSMFocus float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowUpdateFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowUpdatesEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowUseSweepTest bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.useLSSMOptimizations bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.usePSMOptimizations bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;skinnedMeshRenderer.shaderQuality ShaderQuality -&amp;gt; ShaderQuality&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.cloudLerpFactors Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.cloudTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.cloudTexture std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.cloudTexture2 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.domePosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.domeRotation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.domeSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.fadeCloudsDistances Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareFadeAdd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareFadeMul float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareTexture std::string -&amp;gt; std::string&lt;br /&gt;
	:Map: Sky.con&lt;br /&gt;
	:&amp;quot;The texture of the sunflare/actual sunflare. When switching to a map with no sunflare&lt;br /&gt;
	: it will still use the previous maps one. So for maps like Fallujah West/Saaremaa&lt;br /&gt;
	: an invisible texture needs to be defined instead to prevent the sunflare bug. Usage: Skydome.flareTexture common\textures\sunflare\Sunglow_no&amp;quot;&lt;br /&gt;
;skyDome.hasCloudLayer bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.hasCloudLayer2 bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.lightingBlend float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.lightingColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.scrollDirection Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.scrollDirection2 Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.skyTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.skyTexture std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.addMenuSound std::string std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.addSound std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.addTrigger std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.dopplerEffect float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.getAllSoundTemplates -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.getProperty std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.getVolumeForGroup int -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.initialize int std::string int -&amp;gt; SoundInitResult&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.interactiveMode bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.listenerReverb float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.loadMusic std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.masterVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.playMusic -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.playSound std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.removeAllTriggers -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.setProperty std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.setReverb std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.setVolumeForGroup int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.showSoundSources bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.showStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Sound.startEngines bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.stopMusic float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.stopSound std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.tinnitusSetup std::string float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.tweakTemplate std::string float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.windSetup std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.commitSuicide -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.listSpawnGroups -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.selectNextUnlock int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.setPlayerKit int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.setPlayerTeam int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.toggleMembers bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeaderInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeaderInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeader.sendOrder int bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeader.sendRequest int bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeader.sendRequestForOrder -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squad.leaveSquad -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.changeSquadName std::string bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.joinSquad int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.leaveSquad int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.listSquadMembers int int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.listSquads int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.makeMeCommander -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.popNextCommanderApplicant int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.applyInviteList -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.createSquad -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.doubleClickInvite -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.doubleClickNew -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.setShowInviteList bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.setSquadCreateSelect bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.setSquadNameSelect -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.singleClickInvite -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.singleClickNew -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.squadCreateLockToggle -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.allowAnisoFiltering bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.convertLightmapName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableLightIndexes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableLightMapAtlas bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableNewLightmapNames bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableRendering bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableUnifiedIndexlist bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.loadAllLightMapFiles std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.loadAllLightMapFilesDLL std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.materialCullingEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.maxLightMappedLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.noLods bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== sv ==&lt;br /&gt;
;sv.adminScript std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.allowExternalViews bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.allowFreeCam bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.allowNATNegotiation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.allowNoseCam bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.autoBalanceTeam bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.autoDemoHook std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.autoRecord bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.communityLogoURL std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.configFile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.coopBotCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.coopBotDifficulty float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.coopBotRatio float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.demoDownloadURL std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.demoIndexURL std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.demoQuality int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.endDelay int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.endOfRoundDelay int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.friendlyFireWithMines bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.gameSpyPort int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.hitIndicator bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.interfaceIP std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.internet bool -&amp;gt; std::string&lt;br /&gt;
	:&lt;br /&gt;
	:1 = Adds the server to the server list. Tested this with the PRBF2_repo_w32ded.exe shortcut tool&lt;br /&gt;
;sv.load -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.manDownTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.maxConnectionType ConnectionType -&amp;gt; ConnectionType&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.maxPlayers int -&amp;gt; std::string&lt;br /&gt;
	:&lt;br /&gt;
	:Increases the player number count in the W32 Dedicated to the number specified. Effect unknown. Maximum allowed is 100 though not sure if it&#039;s a BF2 thing or not&lt;br /&gt;
;sv.minPlayersForVoting int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.notEnoughPlayersRestartDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.noVehicles float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.numPlayersNeededToStart int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.numReservedSlots int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.password std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.punkBuster bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.radioBlockedDurationTime int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.radioMaxSpamFlagCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.ranked bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.roundsPerMap int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.save -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.scoreLimit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.serverIP std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.serverName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.serverPort int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.soldierFriendlyFire int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.soldierSplashFriendlyFire int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.spawnTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.sponsorLogoURL std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.sponsorText std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.startDelay int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.teamRatioPercent float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.teamVoteOnly bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.ticketRatio int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.timeBeforeRestartMap float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.timeLimit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.tkNumPunishToKick int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.tkPunishByDefault bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.tkPunishEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.useGlobalRank bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.useGlobalUnlocks bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.vehicleFriendlyFire int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.vehicleSplashFriendlyFire int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipBFClientPort int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipBFServerPort int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipQuality int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipServerPort int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipServerRemote bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipServerRemoteIP std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipSharedPassword std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voteTime int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.votingEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.welcomeMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.addAward int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.addCredit std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.addGameMode std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.addRank int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.enableScroller bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.loadImage std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.serverBrowserFrameSkips int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.setScrollerRect int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.setScrollFadeSpeed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.setScrollSpeed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.ambientColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.baseCellSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.checkInside bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.cullerType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.detailCullMaxLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod0SwitchStart float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod0SwitchStop float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod1SwitchStart float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod1SwitchStop float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod2Start float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lodSwitchDistance int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.updateLodLevel bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.useStitchedLods bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.forceRenderStyle int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.GIColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.GIColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.GIColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.init -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.load std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.refreshTerrainSampling -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.sunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.terrainWaterColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterAlphaAdd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterAlphaHeightMul float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterAnimSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterNormalMap std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterQuality int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterReflectivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterScroll Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterSpecularColor Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterSpecularPower float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterSunIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterTransparency float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;texturemanager.customTextureSuffix std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.dynamicShadowsEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.enabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.load std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.reload -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.simpleShaderEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.test uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.test2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.viewDistanceFade float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.viewDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.zPassPatchCount uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;Vars.set std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setAntialiasing std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setDynamicLightingQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setDynamicShadowsQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setEffectsQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setGeometryQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setLightingQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setResolution std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setTerrainQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setTextureFilteringQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setTextureQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setVideoOptionScheme int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setViewDistanceScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.doubleStrikeMaxDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.doubleStrikeMinDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.doubleStrikeProbability float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.inFadeSegments float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningBlendOutTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningColor Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningDuration float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningGroundPenetration float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningMaxInterval float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningMaxPos Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningMinInterval float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningMinPos Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningPertubation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningScale Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningSegments int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningSFXDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningSFXName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.outFadeSegments float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.skyBlendOutTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.stormEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;windManager.globalWindDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;windManager.globalWindSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;&lt;br /&gt;
: Unknow&lt;br /&gt;
;All Vars.Set Codes&lt;br /&gt;
	:Usage&lt;br /&gt;
	:Description&lt;br /&gt;
;EngineRunningTimer 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim-soldier-1p-speed-crouch 1.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim-soldier-1p-speed-prone 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim-soldier-spring-clamp 0.001000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim-soldier-spring-zoom-factor 6.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_offsetBackwardTime 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playCameraAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playSoldierAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playSoldierPostAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playVehicleAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playWeaponAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_skipSync 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_smoothSet 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startJumpAtSpeed 2.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startLandAtHeight 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startLandAtSpeed -0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startLeftOffset 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startRightOffset 0.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_test 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;armor-invunerable-time 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;armor-invunerable-time-afterwreck 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;armor-max-soldier-wrecktime 60.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;armor-water-safetycheck-time 2.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cFric 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cRest 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-dist 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-fast 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-interpolate-attachobject 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-normal 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-slow 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-stiffness 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam_use_acc 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-check-closevehicle-freq 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-expshake-amp 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-expshake-freq 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-expshake-insidevehicle-mod 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-expshake-time 0.400000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-movement-speed-on-crouch 0.150000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-movement-speed-on-prone 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-movement-speed-on-stand 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-recoil-amplitude 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-recoil-speedmod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-recoil-type 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-amp 2.0&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-amplitude 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-distance 7.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-freq 10.0&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-frequency 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-time 0.2&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-surface-snap-offset 0.090000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-cull-sphere-obb 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-depth 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-cyl 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-int 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-line-width 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-lines 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-point-physics-radius 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-soldier 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-tested_faces 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-dump-all-tests 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-edge 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-edge-limit 0.866000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-forceOff-debugmeshes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-load-debugmeshes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-normal-limit 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-obb-cull-mode 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-obb-cull-radius 0.577350&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-obb-cull-vertex-limit 10&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-collision-adjust-mod 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-collision-test-count 8&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-collision-test-count-start-backAt 3&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-collision-test-radius-mod 0.999000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-crouch-height 1.400000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-crush-depth 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-debug-proj-hit 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-extend-ray 0.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-overrun-impact-mod 2.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-pivot-height 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-prone-height 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-radius 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-stand-height 1.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-static-vertex-limit 20&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-use-cyl 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-use-cyl-normal 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-use-face 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-use-fast-sphere-at-length 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-vel-dot-norm 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-debug-default-terrain 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-impact-speed-limit 4.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-skip-multcolls 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-skip-multcolls-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-skip-multcolls-th 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-test-lod-distance-factor 0.060000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-test-lod-min-distance 25.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-test-projectile-lod-distance-factor 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-use-cubic-speedmod 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-use-mod-on-soldier 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;conn-packetsize-override 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;damage-angle-mod-choke 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;deathcam-terrainoffset 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;debug-draw-test-ray 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;debug-engine 0 bool -&amp;gt; bool&lt;br /&gt;
	:Activate in Console in Debugger&lt;br /&gt;
	:&amp;quot;Shows the RPM&lt;br /&gt;
	: Speed&lt;br /&gt;
	: Acceleration in a 3d text. May need !restart to work and is somewhat buggy&amp;quot;&lt;br /&gt;
;debug-outputNewObject 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;debug-spring 0 bool -&amp;gt; bool&lt;br /&gt;
	:Activate in Console in Debugger and normal&lt;br /&gt;
	:&amp;quot;Shows lines when approaching a vehicle. You can see what direction the vehicle will go when turning&lt;br /&gt;
	: and has a bunch of other information regarding wheels&amp;quot;&lt;br /&gt;
;demo-cam-360-capture 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-360-capture-move 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-mouse-wheel-scale 0.850000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-offset 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-offset-min 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-offset-slow 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-offset-speed 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-fspeed 100.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-slomo-cam 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;detonation-collface-offset 0.070000&lt;br /&gt;
: Unknow&lt;br /&gt;
;detonation-collface-offset-speedmod 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;detonation-collface-offset-speedmod-max 500.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-material-tweak 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-amplitude-first 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-amplitude-last 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-frequency-first 80.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-frequency-last 35.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-time-first 0.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-time-last 0.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-inertia 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-inertia2 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-inertia3 0.960000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-slope-no-gear-up-limit 0.174000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-slope-torque-mod-1st-gear 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-sound-smooth-time 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;event-delay 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;event-delay-ticks 32&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-insidevehicle-mod 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-maxdamage 150.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-maxforce 20.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-mod 4.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-ownvehicle-mod 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-hotspot 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-hotspot-ray 0.020000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-hotspot-ray-max 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-latencyComp 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-soldier-expforce-ymod 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;fb-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;feedback-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;fire-delay-after-jump 1.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;fire-delay-from-prone 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;flying_height 110.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;follow-component-prediction-factor 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;force-reg-limit 20.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;hack-ignore-asserts 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;hc_dump 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;hc_freeze 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;hc_normals 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;hc_water 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ignoreFriendlyTimer 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;jump-delay-after-prone 1.200000&lt;br /&gt;
	:Vars.set&lt;br /&gt;
	:Delay in seconds after prone to block the jump input. Setting it to 0 allows jumping when pressing space while moving from prone to standing&lt;br /&gt;
;ladder-bottom-marginal 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-climb-speed-mod 0.045000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-down-angle-limit 35.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-down-ray-mag 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-down-ray-mag-skid 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-end-camera-offset 0.400000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-exit-offset 0.750000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-getoff-ray-min 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-getoff-speed-mod 1.150000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-offset-top 0.360000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-ray-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-ray-debug2 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-skid-speed-mod 4.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-soldier-dist 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-soldier-start-getoff 1.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-step-size 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-top-exit-offset 0.750000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-up-ray-mag-skid 1.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-water-limit 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;local-prediction 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;local-prediction-confirmtime 30&lt;br /&gt;
: Unknow&lt;br /&gt;
;local-prediction-lerpTime 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;local-prediction-minDelay 0.150000&lt;br /&gt;
: Unknow&lt;br /&gt;
;maxDistKillMissile 15.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;network-engine-fullPrecision 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;network-spring-fullPrecision 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectManager-cullHandleUpdateOnClientFactor 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectspawner-draw-lines 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectspawner-inner-circle 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectspawner-num-tries 7&lt;br /&gt;
: Unknow&lt;br /&gt;
;old-turn-limit 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;old-turn-mod 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;opt-late-loading 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;opt-nosound 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;overheadCamera-acceleration 250.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;overheadCamera-maxPositionDelta 7.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;p-pos-damp 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;p-pos-damp-water 0.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;p-rot-damp 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;p-rot-damp-water 0.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-collapse-angle 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-collapse-time 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-collapse-time-water 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-spawn-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-start-landing-height 8.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-exitpos-testlod 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-min-playing-ticks 20&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-show-gcs-stats 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-unmanned-max-minor-axis 0.400000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-unmanned-min-major-axis 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-ang-vel 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-break-mod 0.950000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-bsp-stats 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-contact-adjust-gravity-count 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-convert-collision-meshes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-damage-frame-count 3&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-damage-scale 100.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-damage-scale-limit 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-draw-soldier-bullet-collision 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-engine-inertia 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-engine-slope 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-force-awake 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-force-sleeping 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-dyn 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-exp 3&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-lat 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-mul 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-stat 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-wheel 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-wheel2 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-gas 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-gravity-compensation-size 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-gravity-contact-mod 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-hand-break-adjust 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-hand-break-release 10&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-hand-break-rpm 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-i-mod 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-imp-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-imp-wakeup 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-impulse-limit 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-debug -1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-default 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-max 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-maxRenderAheadTime 0.033333&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-pingFactor 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-useClientWindow 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-useInput 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-useRenderAhead 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-lin-acc 1.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-lin-mod 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-lin-vel 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-list-physics-nodes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-list-response-physics 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-max-imp 1000.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-max-speed 1500.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-new-collision-meshes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-print -1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-proj-collision-count 3&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-proj-collision-depth 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-proj-precision 0.001000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-proj-spring-on-up-axis 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-sep-fifty-fifty 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-acceleration 0.120000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-air-movement-factor 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crawl-speed 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crouch-speed 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crush-minposspeedsqr 12.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crush-minrotspeedsqr 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crush-minvehicleposspeedsqr 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-deceleration 0.350000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-elasticity 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-feet-contact-normal 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-feet-level -0.040000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-friction 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-imp-feet 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-inair-speed 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-jump-factor 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-jump-length-factor 0.980000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-look-factor-x 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-look-factor-y 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-resistance 0.020000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-run-speed 3.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-skydive-speed 15.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-skydiveat-speed -10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-speed-factor 0.850000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-sprint-dissipation-time 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-sprint-limit 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-sprint-recover-time 120.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-sprint-speed 7.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-start-float 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-stop-float 0.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-swim-speed 2.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-swimcrawl-speed 3.645000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-take-fall-damage 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-walk-speed 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-spring-client-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-spring-server-debug 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-tank-engine-inertia 0.070000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-turn 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-wing-water-mod 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-wreck 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-crouch 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-run 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-sprint 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-walk 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-crawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-run 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-sprint 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-walk 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-crawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-crouch 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-sprint 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-walk 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-crawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-crouch 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-run 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-walk 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-crawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-crouch 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-run 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-sprint 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;prone-delay-after-jump 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;prone-delay-from-stand 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll-max-inherit-speed 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_bodyBoneSize 0.120000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_boneSize 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_clientMaxUpdateTime 0.002000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_collMid 0.999900&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_completeCollRadius 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_dT 0.011111&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_enableForce 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_expRotateForce 13.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_gravityOverTime 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_iterations 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_kneeBoneSize 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legBackAngle -0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legForwardAngle 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legForwardFactor 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legPointForwardAngle 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legPointForwardFactor 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_net_boneEnable 15&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_net_debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_net_interpolate 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_sleep 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_sleepDelta 0.020000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_slowMotion 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useAngularConstraints 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useCapsuleCollision 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useConstraints 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useLandCollision 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useObjectCollision 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_dieForce 0.0&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_dieInVehicleForce 100.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_expForceMod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_hitForce 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_hitUp 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;replenish-checkaim-freq 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;replenish-checkaim-maint-freq 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;replenish-ignoreteam 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;rot-use-old 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;rotationalbundle-max-speed-mod 30.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rotationalbundle-sound-smooth-time 0.150000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rpm-k 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rpm-wheel 0.060000&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;server-sleep-overhead-time 0.005000&lt;br /&gt;
: Unknow&lt;br /&gt;
;shoot-mag 10.000000&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;show-damage-ndicator-for-all 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;show-engine 0&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;soldier-drop-max 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-drop-min 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-drown-damage 8.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-footstep-effect-cull-distance 20.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-footstep-offset-dof-prone 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-footstep-offset-dof-stand 0.130000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-footstep-offset-y -0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-fov1p 0.820000&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;soldier-impact-speed-limit 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-impact-speed-limit-2 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-lookDown 70.000000&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;soldier-lookMaxAngle 40.000000/85.000000/0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-lookSideRestore 4.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-lookUp -70.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-mandown-rotspeed 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-mandown-speed 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-prone-inwater-limit 1.100000&lt;br /&gt;
	:Vars.Set&lt;br /&gt;
	:&amp;quot;The number referenced is the angle. Setting it to 0 allows you to prone into water. Can shoot walls when it&#039;s in water&lt;br /&gt;
	: but not walls from the surface. Setting it to 2 prevents you from proning near water in which you automatically go to the standing position&amp;quot;&lt;br /&gt;
;soldier-proneLookDown 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-proneLookUp -30.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-revive-disableinputtime 2.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-terrain-speed-limit 9.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-timeToEnableWeapon 1.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_lookIdleAngle 15.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_lookIdleTime 2.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_lookSmooth 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_throwGun 0.025000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_throwGunForward 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_throwHelmet 0.025000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_throwKitPartsDelay 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-listener-radius 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-disable 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-max 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-max-reuse-frames 15&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-opt0 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-opt1 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-radius 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-reuse-frames 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-tinnitus-range 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnpoint-scatter-maxdist 9.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnpoint-scatter-mindist 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnpoint-scatter-testlod 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnpoint-terrain-offset 1.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sprint-recharge-delay-after-jump 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;stand-delay-from-prone 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;stick-default-distance 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;tank-square 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;targetYOffset 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;use-loading-profiler 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;weapon-detonationDebug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;weapon-detonationTriggerFreq 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wh-torque-mult 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wh-torque-offs 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wh-use-slip-ratio 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;wheel-inertia 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wheel-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wp-delay-pingfactor 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;wp-delay-reloadfactor 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;wp-delay-ticks 15&lt;br /&gt;
: Unknow&lt;br /&gt;
;zipline-soldier-height 1.490000&lt;br /&gt;
: Unknow&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=25</id>
		<title>User:UTurista</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=25"/>
		<updated>2017-09-10T11:35:09Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello World!!&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=24</id>
		<title>User:UTurista</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=24"/>
		<updated>2017-09-10T11:32:03Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello World!&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=System_Requirements&amp;diff=23</id>
		<title>System Requirements</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=System_Requirements&amp;diff=23"/>
		<updated>2017-09-09T23:50:17Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;According to EA the following are the system requirements for running a BF2 server:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LINUX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Minimum Specification, based on playing a 16 player game:&lt;br /&gt;
  CPU: 1 Ghz Processor&lt;br /&gt;
  RAM: 256 Mb&lt;br /&gt;
&lt;br /&gt;
Recommended Specification, based on playing a 64player game:&lt;br /&gt;
  CPU: 3,4 Ghz Pentium 4 or Athlon XP, or a 2 Ghz 64 Opteron.&lt;br /&gt;
  RAM: 1 Gb&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WINDOWS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Minimum Specification, based on playing a 16 player game:&lt;br /&gt;
  CPU: 1 Ghz Processor&lt;br /&gt;
  RAM: 384 Mb&lt;br /&gt;
&lt;br /&gt;
Recommended Specification, based on playing a 64player game:&lt;br /&gt;
  CPU: 3,6 Ghz Pentium 4 or Athlon XP&lt;br /&gt;
  RAM: 1 Gb&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=BF2_Coordinates&amp;diff=22</id>
		<title>BF2 Coordinates</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=BF2_Coordinates&amp;diff=22"/>
		<updated>2017-09-09T23:46:56Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Battlefield 2 uses basic a basic 3-dimensional coordinate system to specify the position and orientation of objects within the game world.&lt;br /&gt;
&lt;br /&gt;
Note that only objects of the [[Object Reference#PhysicalObject|PhysicalObject]] class and classes that inherit from it ([[Object Reference#SoldierObject|SoldierObject]], [[Object Reference#ControlPointObject|ControlPointObject]], and so on) that &amp;quot;exist&amp;quot; in the game world and posssess positons and orientations. So, for example, instances of [[Object Reference#bf2.PlayerManager.Player|bf2.PlayerManager.Player]] do &#039;&#039;&#039;not&#039;&#039;&#039; have positions or orientations.&lt;br /&gt;
&lt;br /&gt;
So, to retrieve position and orientation for a vehicle (say, an Abrams tank), representated by the [[Object Reference#VehicleObject|VehicleObject]] &amp;lt;code&amp;gt;tank&amp;lt;/code&amp;gt;:&lt;br /&gt;
  position = tank.getPosition()&lt;br /&gt;
  rotation = tank.getRotation()&lt;br /&gt;
&lt;br /&gt;
On the other hand, to get the position and orientation of a player, representated by the [[Object Reference#bf2.PlayerManager.Player|bf2.PlayerManager.Player]] object &amp;lt;code&amp;gt;andreas&amp;lt;/code&amp;gt;:&lt;br /&gt;
  andreasSoldier = andreas.getVehicle()   # Get the [[Object Reference#SoldierObject|SoldierObject]] containing andreas&lt;br /&gt;
  position = andreasSoldier.getPosition()&lt;br /&gt;
  rotation = andreasSoldier.getRotation()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Position ==&lt;br /&gt;
&lt;br /&gt;
Coordinates are specified by a three-element tuple, (X, Y, Z). For example:&lt;br /&gt;
  (-160.95599365234375, 162.54800415039062, -266.01699829101562)&lt;br /&gt;
Within .con files these coordinates are written with slashes: &amp;quot;X/Y/Z&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These coordinates spell out a position along three axes:&lt;br /&gt;
* The &#039;&#039;&#039;X&#039;&#039;&#039; value tells how far east or west an object is; moving further east causes X to increase, moving further west causes it to decrease.&lt;br /&gt;
* The &#039;&#039;&#039;Y&#039;&#039;&#039; value tells your altitude; as you go higher, Y increases.&lt;br /&gt;
* The &#039;&#039;&#039;Z&#039;&#039;&#039; value tells how far north or south an object is; moving further north causes Z to increase, moving further south causes it to decrease.&lt;br /&gt;
&lt;br /&gt;
In all BF2 maps the origin of the coordinate system (0, 0) is at the point in the very center of the map. Each unit in the coordinate system equals approximately 1 meter in the game world.  Therefore, the example coordinate listed above will be a point 160.96 meters east and 266.02 meters south of map center, at an altitude of 162.55 meters. Note, however, that this is an &amp;quot;absolute&amp;quot; altitude; the altitude relative to the ground will depend on how high the surface of the ground is at that point; &amp;quot;sea level&amp;quot; varies quite a bit from map to map.&lt;br /&gt;
&lt;br /&gt;
There are two sizes of map included with the basic Battlefield 2 game; the size of map may be determined by using the &amp;lt;code&amp;gt;bf2.gameLogic.getWorldSize()&amp;lt;/code&amp;gt; method. This method returns a two-element tuple that gives the number of meters E/W and N/S along the edges of the map. All maps except Strike at Karkand return (2048, 2048), indicating the maps cover 4 square kilometers (2048x2048 meters), with coordinates running from -1024 to +1024 along each dimension. Strike at Karkand is the only map of a different size, and returns (1024, 1024), indicating a map covering 1 square kilometer, with coordinates running from -512 to +512 along each dimension. (&amp;lt;code&amp;gt;bf2.gameLogic.getWorldSize()&amp;lt;/code&amp;gt; appears to get it&#039;s information from the &amp;lt;code&amp;gt;heightmapcluster.setHeightmapSize&amp;lt;/code&amp;gt; parameter in the file &amp;lt;code&amp;gt;Battlefield 2/mods/bf2/Levels/&amp;lt;name of map&amp;gt;/server.zip/Heightdata.con&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The distance between any two points can easily be found by using the [[wikipedia:Pythagorean theorem|Pythagorean Theorem]]:&lt;br /&gt;
  import math&lt;br /&gt;
  &lt;br /&gt;
  def findDistance(point1, point2):&lt;br /&gt;
      &amp;lt;nowiki&amp;gt;&#039;&#039;&#039;Use Pythagorean Theorem to find distance between two sets of coordinates.&lt;br /&gt;
      With normal BF2 scaling, the resulting distance will be in meters.&#039;&#039;&#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
      deltaX = math.fabs(point1[0] - point2[0])&lt;br /&gt;
      deltaY = math.fabs(point1[1] - point2[1])&lt;br /&gt;
      deltaZ = math.fabs(point1[2] - point2[2])&lt;br /&gt;
    &lt;br /&gt;
      distance = math.sqrt(deltaX * deltaX +&lt;br /&gt;
                           deltaY * deltaY +&lt;br /&gt;
                           deltaZ * deltaZ)&lt;br /&gt;
      &lt;br /&gt;
      return distance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rotation ==&lt;br /&gt;
&lt;br /&gt;
Rotational orientation (attitude) is specified by another three-element tuple, (A, P, R). For example:&lt;br /&gt;
  (166.29025268554687, 0.0, 0.0)&lt;br /&gt;
Within .con files, these angles are written with slashes: &amp;quot;A/P/R&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;A&#039;&#039;&#039; (&amp;quot;azimuth&amp;quot;, also known as &amp;quot;yaw&amp;quot;) gives rotation from due north going clockwise (if A is positive) or counter-clockwise (if A is negative), (or, the amount our viewpoint is rotated around a vertical axis passing through our viewpoint) measured in degrees:&lt;br /&gt;
** A=0 means due north&lt;br /&gt;
** A=90 means due east&lt;br /&gt;
** A=180 means due south&lt;br /&gt;
** A=270 means due west&lt;br /&gt;
* &#039;&#039;&#039;P&#039;&#039;&#039; (&amp;quot;pitch&amp;quot;) tells how much we&#039;re tilting down compared to horizontal, (or, the amount tilted up or down along the axis passing through our viewpoint from left to right) measured in degrees:&lt;br /&gt;
** P=0 means horizontal&lt;br /&gt;
** P=45 means tilting down halfway between horizontal and vertical&lt;br /&gt;
** P=90 means looking straight down&lt;br /&gt;
** P=-45 means tilting up halfway between horizonal and vertical&lt;br /&gt;
** P=-90 means looking straight up&lt;br /&gt;
* &#039;&#039;&#039;R&#039;&#039;&#039; (&amp;quot;roll&amp;quot;) gives the amount the viewpoint has rolled around an axis passing from the back of our viewpoint through the front of the viewpoint, measured in degrees:&lt;br /&gt;
** R=0 means no roll&lt;br /&gt;
** R=45 means viewpoint is rolled counter-clockwise by 45 degrees&lt;br /&gt;
** R=-45 means viewpoint is rolled clockwise by 45 degrees&lt;br /&gt;
&lt;br /&gt;
If all these numbers are making your head spin, try this diagram:&lt;br /&gt;
&lt;br /&gt;
[[Image:Roll-pitch-yaw.gif]]&lt;br /&gt;
&lt;br /&gt;
Note: The pitch and roll rotational coordinates apply to aircraft and cameras in BF2, but do &#039;&#039;&#039;not&#039;&#039;&#039; apply to players or vehicles on the ground.  Ground players and vehicles &#039;&#039;&#039;always&#039;&#039;&#039; show P and R to be &amp;quot;0&amp;quot;, regardless of their actual attitude (a soldier looking straight up in the air will still have a P value of &amp;quot;0&amp;quot;, for example).&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=MediaWiki:Sidebar&amp;diff=21</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=MediaWiki:Sidebar&amp;diff=21"/>
		<updated>2017-09-09T23:46:04Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Added IRC link and changed title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help&lt;br /&gt;
* Project Reality&lt;br /&gt;
** http://realitymod.com/forum/|Forums&lt;br /&gt;
** https://github.com/realitymod|GitHub&lt;br /&gt;
** http://www.realitymod.com/irc/|IRC&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Player_Identity&amp;diff=20</id>
		<title>Player Identity</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Player_Identity&amp;diff=20"/>
		<updated>2017-09-09T23:45:02Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are several ways a player&#039;s identity can be represented in Battlefield 2; this page discusses them, explains some of their different uses, and shows how to access them and convert one to another.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Player ID ==&lt;br /&gt;
&lt;br /&gt;
Player ID (&amp;quot;playerID&amp;quot;, also known as &amp;quot;index&amp;quot;) is the simplist and most basic way of identifying players, and is the most commonly used throughout the game.  The first player to connect to the server is given a Player ID of &amp;quot;0&amp;quot;; the second gets a Player ID of &amp;quot;1&amp;quot;, and so on.  At the beginning of the next round the server goes through and re-assigns Player IDs for each player, again beginning at 0, so as to fill in any &amp;quot;holes&amp;quot; in the numbering system created by players who have disconnected.&lt;br /&gt;
&lt;br /&gt;
Most [[bf2wiki:Console Commands|console commands]] that refer to players use Player ID: for example, &amp;lt;code&amp;gt;admin.kickPlayer&amp;lt;/code&amp;gt; is followed by a Player ID number.  The easiest way to find out which player has which Player ID from the console is to use the &amp;lt;code&amp;gt;admin.listplayers&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
From Python, several methods are available access information about a player based on Player ID, for example [[Object Reference#bf2.PlayerManager.PlayerManager|&amp;lt;code&amp;gt;bf2.playerManager.getPlayerByIndex(playerID)&amp;lt;/code&amp;gt;]] will take a playerID and return the associated playerObject.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Player Name ==&lt;br /&gt;
&lt;br /&gt;
This is the name that shows up in the colored &amp;quot;name tag&amp;quot; above each player&#039;s head in the BF2 game world, and is also the same as the &amp;quot;account name&amp;quot; that players log into BF2 with. Because players must create an account in order to log in for multiplayer internet play, EA&#039;s account management system insures that each Player Name is unique. On the other hand, there is nothing to stop a single player from signing up with many different Player Names.&lt;br /&gt;
&lt;br /&gt;
You can find a player&#039;s name from their Player Object:&lt;br /&gt;
  playerObject.getName()&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; As of BF2 version 1.03 this will return the player&#039;s name AND their &#039;prefix&#039;, which is an arbitrary tag, 6 letters in length. RegEx &amp;quot;&amp;lt;code&amp;gt;\S{0,6}\s&amp;lt;/code&amp;gt;&amp;quot; will match the entire prefix of a playername for stripping or whatnot. Less precise, but just as effective: &amp;quot;&amp;lt;code&amp;gt;\S.*?\s&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Player Object ==&lt;br /&gt;
&lt;br /&gt;
Player Objects (&amp;quot;playerObjects&amp;quot;) are instances of the [[Object Reference#bf2.PlayerManager.Player|&amp;lt;code&amp;gt;bf2.PlayerManager.Player&amp;lt;/code&amp;gt;]] class, and each of them encapsulate and provide access to much of the information about a specific connected player. Player Objects exist from the time a player first connects to a running BF2 server until that server shuts down--even if a player disconnects, BF2 retains his or her Player Object, and if the same player later reconnects to the server, BF2 attempts to reassociate the player with the same Player Object.&lt;br /&gt;
&lt;br /&gt;
If you want to know the name, score, ping, or other properties of a player, you use methods of the their Player Object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Soldier Object ==&lt;br /&gt;
&lt;br /&gt;
[[Player Identity#Player Objects|Player Objects]] are abstractions in the BF2 world--they can be thought of as corresponding to the &amp;quot;spirit&amp;quot; or &amp;quot;ghost&amp;quot; of a player.  Soldier Objects (&amp;quot;soldierObjects&amp;quot;), on the other hand, are instances of the [[Object Reference#SoldierObject|SoldierObject]] class, and correspond to &amp;quot;physical&amp;quot; objects in the BF2 world, complete with geographic coordinates, orientation, the ability to contain, and be contained by, other physical objects, etc. When a player spawns into a game, a new Soldier Object is created, and their Player Object becomes associated with it. When a player dies, the Soldier Object is destroyed, but the Player Object continues to exist, until the player spawns into the game again.&lt;br /&gt;
&lt;br /&gt;
If you want to know the location of a player, their current kit and weapon (contained &amp;quot;child&amp;quot; objects), or what vehicle their are riding in (a containing &amp;quot;parent&amp;quot; object), you look at the player&#039;s Soldier Object.&lt;br /&gt;
&lt;br /&gt;
To find which Soldier Object corresponds to a specific spawned-in player from their [[Player Identity#Player Object|Player Object]], use:&lt;br /&gt;
  playerObject.getVehicle()&lt;br /&gt;
&lt;br /&gt;
Other than searching through all possible players, there is no known way to go directly from a Soldier Object to it&#039;s corresponding Player Object. Instead, most of the [[Event Reference|game events]] for which you would want to do this send &#039;&#039;&#039;both&#039;&#039;&#039; the relevent Player Object and Soldier Object in their callbacks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Profile ID ==&lt;br /&gt;
&lt;br /&gt;
Profile ID is a [http://www.gamespy.net/ GameSpy] ID number that is unique to a specific BF2 player login; no matter what computer, no matter what CD key, no matter what server that player uses, if they login with the same name and password, they will be assigned the same Profile ID. Profile ID can therefore be used to uniquely identify particular players, and is the basis for the EA ranking system: player statistics are tracked by Profile ID.&lt;br /&gt;
&lt;br /&gt;
To retrieve the Profile ID for a player, apply the &amp;quot;getProfileId&amp;quot; method to the appropriate [[Player Identity#Player Object|Player Object]]:&lt;br /&gt;
  playerObj.getProfileId()&lt;br /&gt;
&lt;br /&gt;
* The profile ID is also stored between the square brackets on the 2nd line of the &amp;quot;gp.info&amp;quot; file which resides in the root of the BF2 client folder.  Note that the file is cumulative so it may contain the info for all the players that have been using the client computer; if so then each player info block is separated by a blank line. --- Dimmer (2005-07-29)&lt;br /&gt;
&lt;br /&gt;
== CD Key Hash ==&lt;br /&gt;
&lt;br /&gt;
As part of the BF2 client installation process, the user must enter a &amp;quot;CD key&amp;quot; that was provided along with their copy of the game, along with their CDs or DVD. The CD key is supposed to be unique to one specific copy of the game; more than one game can be installed with the same CD key, but EA has various anti-piracy safeguards that will block game copies with duplicate CD keys from functioning in most cases.&lt;br /&gt;
&lt;br /&gt;
Because the CD key uniquely (for the most part) identifies a particular computer and not any particular player, it can be a useful tool--for example, as a way to ban jerks (&amp;quot;&#039;&#039;smaktards&#039;&#039;&amp;quot;, in technical language) from a server, so that they will be blocked regardless of what login (Profile ID) they use.&lt;br /&gt;
&lt;br /&gt;
For security reasons, a player&#039;s CD key is never accessible within BF2, but for virtually all purposes, their &amp;quot;CD key hash&amp;quot;, which is available, serves just as well.  This &amp;quot;hash&amp;quot; uses the [http://lange.dhs.org/people/matt/blog/archives/2003_11.html#000013 obsolete] [[wikipedia:MD5|MD5]] algorithm to create a [[wikipedia:Cryptographic Hash Function|crytographic hash]] of the player&#039;s CD key (after removing any dashes, and converting it to upper-case). CD key hashes in BF2 are 128-bit numbers, which are typically represented in [[wikipedia:Hexadecimal|hexadecimal]]; for example: &amp;quot;&amp;lt;code&amp;gt;5e851bd2ce31a2b885266537a9c704aa&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There is no built-in means of determining a player&#039;s CD key hash, but the [[Cookbook:Accessing CD Key Hash|playerData]] function provides a quick and easy way to get at it. Conversely, the [[Cookbook:Computing CD Key Hashes|keyHash]] function provides an easy way to convert a CD key into it&#039;s corresponding hash; if you just want to find out what your own key hash is, the fastest way to do that is to use this standalone [[BF2 Key Hasher|key hashing program]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IP Address ==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:IP Address|IP address]] is the address of a particular computer on a network, such as &amp;quot;&amp;lt;code&amp;gt;192.168.100.1&amp;lt;/code&amp;gt;&amp;quot;. Generally speaking, a player&#039;s IP address can be used as a way to identify their computer (similar to how CD key hash can be used), as well as to tell something about their location--[http://www.maxmind.com/app/python which country they are in], for example. In practice, care must be used in these applications because many internet service providers use [[wikipedia:Network Address Translation|NAT]] to dynamically change their customers&#039; IP addresses from day to day; AOL is the worst, changing addresses from one connection to the next! If you ban or kick a player based on their IP address, they may well reconnect to your server a few minutes later with a different IP address.&lt;br /&gt;
&lt;br /&gt;
You can access the IP address a player is using from their [[Player Identity#Player Object|Player Object]]:&lt;br /&gt;
  playerObject.getAddress()&lt;br /&gt;
You can also use the [[Scripts:playerData|playerData]] function to retrieve the same information, along with [[Player Identity#CD Key Hash|CD key hashes]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PunkBuster GUID ==&lt;br /&gt;
&lt;br /&gt;
The [http://www.evenbalance.com/index.php?page=support-bf2.php PunkBuster] anti-cheating system is built into Battlefield 2. PunkBuster assigns a &amp;quot;Globally Unique ID&amp;quot;, or GUID, to each user, and uses this for the purpose of tracking and banning players that it detects cheating. In principle, GUIDs are pretty much the same thing as BF2&#039;s [[Player Identity#CD Key Hash|CD key hashes]], but appear to initialize the MD5 algorithm differently. For all practical purposes, you can think of a player&#039;s GUID as just being a second (and different) CD key hash. Just like CD key hashes, they uniquely identify installed copies of BF2, and so can be used for all the same purposes as CD key hashes.&lt;br /&gt;
&lt;br /&gt;
PunkBuster GUIDs for players on a server can easily be determined by using the &amp;lt;code&amp;gt;pb_sv_plist&amp;lt;/code&amp;gt; command from the console. Unfortunately, the &amp;quot;wiring&amp;quot; between BF2 and PunkBuster is such that RCon clients and Python scripts trying to run this command cannot receive any data back; there is therefore no way at present to access GUID information from within a script or from RCon.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=MediaWiki:Sidebar&amp;diff=19</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=MediaWiki:Sidebar&amp;diff=19"/>
		<updated>2017-09-09T23:42:24Z</updated>

		<summary type="html">&lt;p&gt;UTurista: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help&lt;br /&gt;
* Useful links&lt;br /&gt;
** http://realitymod.com/forum/|Forums&lt;br /&gt;
** https://github.com/realitymod|GitHub&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=MediaWiki:Sidebar&amp;diff=18</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=MediaWiki:Sidebar&amp;diff=18"/>
		<updated>2017-09-09T23:41:54Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Created page with &amp;quot; * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help * Useful links ** [http://realitymod.com/forum/...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help&lt;br /&gt;
* Useful links&lt;br /&gt;
** [http://realitymod.com/forum/ Forums]&lt;br /&gt;
** [https://github.com/realitymod GitHub]&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=17</id>
		<title>User:UTurista</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=User:UTurista&amp;diff=17"/>
		<updated>2017-09-09T23:36:40Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello World&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=BF2_Changelog&amp;diff=16</id>
		<title>BF2 Changelog</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=BF2_Changelog&amp;diff=16"/>
		<updated>2017-09-09T23:33:12Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Update v1.50 =&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Additional support for Windows Vista.&lt;br /&gt;
* Added Highway Tampa as a required map.&lt;br /&gt;
* Added a new map called Operation Blue Pearl.&lt;br /&gt;
&lt;br /&gt;
== Gameplay tweaks ==&lt;br /&gt;
* Changes made to both the J10 and F35B to make them more balanced. Please note that the J10 is a superior dogfighter to the F35B and as such these two aircraft will never be equally matched.&lt;br /&gt;
* AA targeting tweaked to make it more effective.&lt;br /&gt;
* Added checks to prevent &amp;quot;runway grieving&amp;quot;.&lt;br /&gt;
* Various changes made to prevent cheating.&lt;br /&gt;
* Tweaked the hit detection, hits will be more accurate to the model.&lt;br /&gt;
* Added support for the Novint Falcon controller.&lt;br /&gt;
&lt;br /&gt;
== Special thanks ==&lt;br /&gt;
* Special thanks to Blackbird at the TV2 community www.battle.no&lt;br /&gt;
* Special thanks to Elton Muuga (Sir. Elxx)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Update v1.41 =&lt;br /&gt;
== Bug fixes ==&lt;br /&gt;
* Fixed an extremely intermittent server crash bug.&lt;br /&gt;
&lt;br /&gt;
= Update v1.4 =&lt;br /&gt;
== Gameplay tweaks ==&lt;br /&gt;
* The vehicle drop has been modified to help prevent exploits such as blocking enemy vehicles, destroying vehicles and commander assets, or as an alternative to artillery.&lt;br /&gt;
* C4 tossing distance has been reduced.&lt;br /&gt;
* A prone-&amp;gt;crouch delay has been added.&lt;br /&gt;
&lt;br /&gt;
== Bug fixes ==&lt;br /&gt;
* Fixed the Linux server hangs when trying to load a Special Forces Co-Op map.&lt;br /&gt;
* Another attempt at fixing the Red/Blue nametag bug.&lt;br /&gt;
* Fixed the missing server info on the map briefing screen.&lt;br /&gt;
* Fixed the server browser issues with updating info.&lt;br /&gt;
* Fixed the filter by maps size option in the server browser.&lt;br /&gt;
* Fixed a low reproducibility crash bug related to the vehicle drop.&lt;br /&gt;
* Fixed a crash in Co-op after a player is revived without a kit.&lt;br /&gt;
* Fixed a server crash on Linux 32 when trying to rotate maps in Coop Mode.&lt;br /&gt;
* Fixed the occasionnal red distance marker appearing on the ground.&lt;br /&gt;
* Fixed the bug that caused the player&#039;s arms to become invisible when switching weapons.&lt;br /&gt;
* Co-Op bot console commands now function on local servers.&lt;br /&gt;
* Fixed the excessive damage taken by the Muscle Car.&lt;br /&gt;
* Adjusted the minimum number of players to start the round on ranked servers. &lt;br /&gt;
** The new values for 16, 32 and 64 players are 6, 8 and 8 respectively.&lt;br /&gt;
* Re-enabled unlocks on unranked servers.&lt;br /&gt;
* Commander options are no longer available whilst commander is dead.&lt;br /&gt;
* Fixed bug where a spawn point is shown as selected when it is not if player has spawned in during the preview round.&lt;br /&gt;
* Co-Op (Local Server) - Fixed the issue where no other players may join the server if the server host is kicked and banned.&lt;br /&gt;
* Ranked Servers now force unlocks.&lt;br /&gt;
* Added support for multiple gamemodes in single maplist for mods.&lt;br /&gt;
&lt;br /&gt;
= Update v1.3 =&lt;br /&gt;
== New features==&lt;br /&gt;
* Air dropped vehicles:&lt;br /&gt;
** Squad members can now send a request up the chain of command for a vehicle to be dropped at their location.  &lt;br /&gt;
* Co-op: &lt;br /&gt;
**  Co-op Mode allows you to play Single Player levels on the Internet and LAN with both AI controlled bots and human players. Several new options have been created that will allow the server creator to modify how the bots behave in game.&lt;br /&gt;
** Number of Bots: This setting allows you to determine the total number of bots that will spawn in game.&lt;br /&gt;
** Bot Ratio: This setting allows you to determine the percentage of total bots that will spawn for each team.  For example, setting this value to 25 means that 25% of the total bots will spawn in Team 1, and 75% in Team 2. Team 1 is always the MEC, Chinese, or their allies, while Team 2 is always the USA, EU, and their allies.&lt;br /&gt;
** Bot Difficulty: This setting determines the skill level of the bots. 10 is    easiest, 100 is the most difficult.&lt;br /&gt;
* Default Kit Selection:&lt;br /&gt;
**  The kit that you used last is remembered at the beginning of the round and between maps.&lt;br /&gt;
&lt;br /&gt;
== Bug fixes &amp;amp; gameplay tweaks ==&lt;br /&gt;
* Fixed issues with remote console and linux server&lt;br /&gt;
* Prevented ban list from being cleared in the event of a server crash.&lt;br /&gt;
* Fixed the bug where helicopters abandoned in the air would continue flying.&lt;br /&gt;
* Fixed issue with player not properly ranking up on servers where they continuously play.&lt;br /&gt;
* If the player joins a squad while dead, the player will not be able to use the squad leader as a spawn point until they have respawned once.&lt;br /&gt;
* Flag Capture bar now reacts accurately to players entering the capture radius.&lt;br /&gt;
* Fixed bug where friendly vehicles showed as valid targets&lt;br /&gt;
* Friendly Vehicle lock: Lock-on weapons do not lock on to friendly vehicles.  &lt;br /&gt;
**  The box with an X through it will still appear, but a lock tone will not sound and then if fired, the missile will not track the friendly target.&lt;br /&gt;
* Fixed bug that altered mini map functionality&lt;br /&gt;
* Adjusted missile count on BF2SF helicopters.&lt;br /&gt;
* Fixed bug with Special Forces rank names.&lt;br /&gt;
* Fixed repairing HUD for the engineer when in a vehicle&lt;br /&gt;
* Adjusted award criteria&lt;br /&gt;
* Fixed a client crash after entering 300 characters into the IP address using &amp;quot;connect to IP&amp;quot;&lt;br /&gt;
* Fixed a tech hang when creating a single player account from an offline account&lt;br /&gt;
* Fixed crash when switching from BF2 to BF2:SF (or vice versa)&lt;br /&gt;
* Fixed a crash caused when a player is joining a map and another player logs into the same account&lt;br /&gt;
* Fixed a Dragon Valley exploit&lt;br /&gt;
* Fixed a bug on Zatar Wetlands where AA missiles would not lock onto oil towers&lt;br /&gt;
* Fixed a bug that caused the Eurofighter explosion to appear as a Mig-29 wreckage&lt;br /&gt;
* Armor Bar removed from occupied machinegun emplacements&lt;br /&gt;
* Fixed a bug on Kubra Dam and Zatar Wetlands that caused enemy AA sites to not display in bombing HUD&lt;br /&gt;
* Special Forces - Firing crossbow from open vehicle position causes others to see player weapon firing&lt;br /&gt;
* Fixed Repair Hud for the engineer when in a vehicle and repairing a team mate vehicles&lt;br /&gt;
* Fixed a bug on Strike at Karkand where players were able to get inside a building by Train Accident when FF is turned off&lt;br /&gt;
* Fixed the commander assets on Wake Island 2007 so that the US can no longer disable the Chinese artillery&lt;br /&gt;
* Fixed a bug in Zatar Wetlands 32 where commander assets were not being properly dropped to the location specified by the User.&lt;br /&gt;
&lt;br /&gt;
= Update v1.22 =&lt;br /&gt;
== Bug fixes ==&lt;br /&gt;
* Improved Server Stability&lt;br /&gt;
* Adjusted handling of the Tiger attack chopper&lt;br /&gt;
* Added delay for aiming reticule when going prone to all support weapons&lt;br /&gt;
* Adjusted deviation on MG36 and PKM to be in line with other support weapons&lt;br /&gt;
* Increased rpm from 600 to 900 on the P90&lt;br /&gt;
* Fixed Lock on error on certain Oil towers&lt;br /&gt;
* Fixed a Great Wall Exploit&lt;br /&gt;
* Fixed exploits on Dragon Valley and Karkand&lt;br /&gt;
&lt;br /&gt;
= Update v1.21 =&lt;br /&gt;
== Bug fixes ==&lt;br /&gt;
* Fixed the Hmmwv with TOW crash on Battlefield 2: Special Forces maps&lt;br /&gt;
* Fixed the Battle Recorder crash&lt;br /&gt;
* Fixed the screen capture&lt;br /&gt;
* Fixed the issue with Pixel Shader 1.4 video cards&lt;br /&gt;
* Fixed the issue that caused heat seeking missiles to stick to oil towers&lt;br /&gt;
* Fixed the issue that caused heat seeking missiles to zigzag&lt;br /&gt;
* Reduced the maximum number of claymores that can be dropped to 2&lt;br /&gt;
* Fixed the Server Browser filter to enable search by map name&lt;br /&gt;
* Fixed the error in Client - Server communication causing sound, animation and other sync issues. &lt;br /&gt;
&lt;br /&gt;
= Update v1.2 =&lt;br /&gt;
== Bug fixes &amp;amp; gameplay tweaks ==&lt;br /&gt;
* Dolphin Diving is no longer possible&lt;br /&gt;
* Players can no longer jump and shoot at the same time&lt;br /&gt;
* &amp;quot;Prone Spamming&amp;quot; is now fixed&lt;br /&gt;
* &amp;quot;Sprint exploit&amp;quot; is now fixed&lt;br /&gt;
* Helicopters now carry 8 missiles rather than 14&lt;br /&gt;
* TV-Guided missile now have a shorter range&lt;br /&gt;
* Damage decreased from M134&lt;br /&gt;
* Hit points on all air vehicles has been reduced&lt;br /&gt;
* AA missile lock has been improved&lt;br /&gt;
* All support kit weapons have been adjusted&lt;br /&gt;
* All Sniper rifles have been adjusted&lt;br /&gt;
* Sa80 has been adjusted&lt;br /&gt;
* G3A3 has been adjusted&lt;br /&gt;
* Reload while sprinting has been enabled&lt;br /&gt;
* Medic defibrillator paddles have been adjusted.  They now reload while not in use.&lt;br /&gt;
* SCAR-L reload sound has been fixed&lt;br /&gt;
* Server setting to allow friendly fire to be off on mines without affecting other weapons.&lt;br /&gt;
* Server search filters now work properly&lt;br /&gt;
* Mines can no longer be destroyed with other explosives&lt;br /&gt;
* Bug in MP7 fire rate fixed.  Ammo count increased and mag count and damage decreased&lt;br /&gt;
* Flash bang effect radius decreased&lt;br /&gt;
* Added unlocks for Sniper and AT kits&lt;br /&gt;
* Fixed a bug in terrain rendering with night vision, whereby terrain was still dark in dark areas.&lt;br /&gt;
* Fixed a bug whereby mods that are not bf2 or not xpack permutate shaders every time a level is loaded.&lt;br /&gt;
* Fixed a bug whereby non-xpack mods cannot use xpack shaders.&lt;br /&gt;
* Fixed bug in TV guided missiles of Havoc helicopter&lt;br /&gt;
* The LAV25 no longer shoots through penetrable materials.&lt;br /&gt;
* Vehicles no longer disappear when viewed from some vehicles with a HUD (e.g. Tanks).&lt;br /&gt;
* Performance gain found in static mesh rendering.&lt;br /&gt;
* Detonation radius from grenade launcher explosions has been reduced.&lt;br /&gt;
* Grenade launcher projectiles now have a minimum distance.&lt;br /&gt;
* Decreased Flashbang count from 4 to 3&lt;br /&gt;
* Replaced the existing Czech Flag with the correct one in the front end&lt;br /&gt;
 &lt;br /&gt;
== Expansions of ranks ==&lt;br /&gt;
* Ranks have now been expanded to allow for players to rank up to General &lt;br /&gt;
&lt;br /&gt;
== New features == &lt;br /&gt;
=== Visible uav ===&lt;br /&gt;
* The UAV that is placed by Commanders will now include a visual element.  &lt;br /&gt;
**  An actual UAV will appear within the UAV detection radius and circle the area.  &lt;br /&gt;
**  Players will be able to shoot it down, bringing the UAV detection to a premature end. The Commander will be able to continue placing UAVs once the timer resets, as usual.&lt;br /&gt;
&lt;br /&gt;
== Known issues == &lt;br /&gt;
=== ATI crossfire cards ===&lt;br /&gt;
CROSSFIRE cards with 256 Megs of memory, running in CROSSFIRE mode will run out of memory at very high resolution settings. &lt;br /&gt;
On very high resolutions, such as 1920x1440 with 6x antialiasing, in CROSSFIRE mode the ATI drivers are more restrictive about where resources are allocated, and as a result run out of memory sooner than with a single board. This running out of memory causes the device context creation to fail.  The result is that the game just sits in a loop with a black screen.  If you experience a context creation failure change your resolution to a lower setting (e.g. 1024x768 or even lower).&lt;br /&gt;
&lt;br /&gt;
= Update v1.12 =&lt;br /&gt;
== Bug fixes == &lt;br /&gt;
* Fixed a crash when users switch weapons using the mouse wheel while piloting a bomber (SU-34, F-15 and J10) in core BF2 maps.&lt;br /&gt;
* Removed the Grappling Hook and the Zip Line from kits from &amp;quot;The Iron Gator&amp;quot; map.&lt;br /&gt;
* Fixed single player loading screens to match map selection image.&lt;br /&gt;
* Fixed an issue in the menus so that users can click on BF2:SF ribbons to view the descriptions.&lt;br /&gt;
* Fixed an issue in the Browser so that BF2:SF servers are now represented with a green &amp;quot;2&amp;quot; icon.&lt;br /&gt;
* Global improvement of collision detection on the Grappling Hook and the Zip Line.&lt;br /&gt;
* Fixed damage state artillery icon on the 3d map when an artillery is destroyed.&lt;br /&gt;
&lt;br /&gt;
== Change of video specs ==&lt;br /&gt;
* NVIDIA GeForce FX 5900 family:&lt;br /&gt;
** GeForce FX 5900 Ultra&lt;br /&gt;
** GeForce FX 5900&lt;br /&gt;
** GeForce FX 5900XT&lt;br /&gt;
** GeForce FX 5950 Ultra&lt;br /&gt;
** GeForce FX 5900ZT&lt;br /&gt;
** GeForce PCX 5900&lt;br /&gt;
* For these cards, the default video settings have been changed to LOW.&lt;br /&gt;
&lt;br /&gt;
== Update to grappling hook and Zipline description ==&lt;br /&gt;
&lt;br /&gt;
=== Grappling hook ===&lt;br /&gt;
* The GRAPPLING HOOK is part of the Assault and Anti-tank kits.  Throw it using the fire or alternate fire buttons.  Press &amp;quot;E&amp;quot; to get on and off of the rope.  &lt;br /&gt;
** Use the direction keys to climb the rope.  The rope will connect to any static object in the world, which means it will not work on terrain or vehicles. Any Assault or Anti-Tank kit can pick up any grappling hook, even those from other teams, as long as you do not already have one in your kit at the time.&lt;br /&gt;
&lt;br /&gt;
=== Zip Line ===&lt;br /&gt;
* The ZIP LINE is part of the Special Forces and Sniper kits.  Use the fire button to shoot the line and use the alternate fire button to check if the target is a viable connection point or not.  Once the line is in place, use &amp;quot;E&amp;quot; to get on.&lt;br /&gt;
**You will slide down the line automatically. Any Spec-Ops or Sniper kit can pick up any zip line, even those from the other team, as long as you do not already have one in your kit at the time.&lt;br /&gt;
&lt;br /&gt;
= Update v1.03 =&lt;br /&gt;
== New features ==&lt;br /&gt;
* Wake Island Map&lt;br /&gt;
** Included a remade version of this popular BF1942 map.  &lt;br /&gt;
** Battlefield 2 version includes a 64 player layout and is configured for multiplayer only.&lt;br /&gt;
* Server Favorites / History&lt;br /&gt;
**There is a new tab in the MULTIPLAYER menu that holds a list of the last 20 internet servers you have connected to, plus a listof servers you have selected as favorites.&lt;br /&gt;
*** Added a button to the other multiplayer tabs that adds the currently highlighted server to your favorites list.&lt;br /&gt;
*** Added buttons in the in-game server info menu (press TAB to access) that will add or remove the server you are currently playing on to / from your favorites list.&lt;br /&gt;
* Account Login Welcome Screen&lt;br /&gt;
** After you login to an online account, a message appears that contains BF2 news and information which updates periodically.&lt;br /&gt;
* Stat Compare&lt;br /&gt;
** By clicking the COMPARE button in BFHQ, you can search for another players name and load their current stats into BFHQ. Using the arrow buttons next to the name in the top-left corner of the menu, you can toggle between your stats and their stats.&lt;br /&gt;
** You can also load a player&#039;s stats by double-clicking on their name in any     leaderboard.&lt;br /&gt;
* Nickname Prefix&lt;br /&gt;
** You can add a 6-character prefix (such as a clan tag) to your account nickname which   will be displayed in-game next to your nametag in the score menu, in game messages, and above your player in the game world. This prefix does not change your account   name or statistic information (e.g. the prefix does not appear next to your name on the leaderboards).You can change this prefix at any time at the account login menu.&lt;br /&gt;
* Server Reserved Slots&lt;br /&gt;
** You can define a list of player nicknames that will act as a &amp;quot;reservation list&amp;quot; for your server.&lt;br /&gt;
*** The list is located in mods\bf2\settings\ReservedSlots.con&lt;br /&gt;
*** You can add player names to the list by editing the file and adding the following text for each player: reservedSlots.addNick &amp;lt;account name&amp;gt; where &amp;lt;account name&amp;gt; is the player&#039;s registered account name, not including a nickname prefix (see above).&lt;br /&gt;
*** You can define the number of slots to set aside for reserved players in the dedicated server launcher, or with the setting sv.numReservedSlots &amp;lt;number&amp;gt; in your serverSettings.con file.&lt;br /&gt;
*** The number of players on the list and the number of reserved slots does not necessarily have to be the same.&lt;br /&gt;
* Mod Support&lt;br /&gt;
** There are several new changes that improve support for mods.&lt;br /&gt;
** When connecting to a server that is running a mod that you have installed but not activated, it will be automatically activated and you will load into the server.&lt;br /&gt;
** Added a filter on the server browser for servers running the currently activated mod.&lt;br /&gt;
** Fixed dedicated server launcher to properly handle launching mods.&lt;br /&gt;
** Improved support for mods sharing archives with bf2&lt;br /&gt;
* Improvements to in-game HUD / Map&lt;br /&gt;
** The viewable area of the spawn menu / commander map is now scaled based on the     out-of-bounds area so that only the playable area takes up the majority of viewable   map space.&lt;br /&gt;
** The names of CPs are now displayed on the spawn menu / commander map and minimap&lt;br /&gt;
** The minimap zoom level now changes dynamically depending on the type of vehicle     you are in.  If you zoom in or out manually, thatzoom level is remembered for that     vehicle type next time you use it.&lt;br /&gt;
** The names of players in your vehicle are displayed in the HUD when someone enters   the vehicle or switches positions.&lt;br /&gt;
** There is a new element in vehicle HUDs that displays the reload time for   countermeasures (smoke and flares).&lt;br /&gt;
** Flags for each team are now displayed below their ticket count on the minimap to   make it easier to tell what team you are assigned to.&lt;br /&gt;
&lt;br /&gt;
== Gameplay changes ==&lt;br /&gt;
* Many criteria for ranks and awards have changed.  If you are immediately eligible for a new promotion, unlock, badge, award, or ribbon, it will be awarded the next time you receive points on a ranked server.&lt;br /&gt;
* Only 1 player in a vehicle will get credit for or speed up capturing a flag at a CP.  The other passengers must exit the vehicle to increase the speed of capture or receive capture score.&lt;br /&gt;
* Commanders no longer accrue a TK when artillery hits teammates.   &lt;br /&gt;
* The commander&#039;s supply drop now has an icon on the minimap and a 3D-map icon in the world.&lt;br /&gt;
* Auto team balance no longer moves players to the other team if they are a team commander or a squad leader.&lt;br /&gt;
* The wrench repair rate on helicopters has been decreased.&lt;br /&gt;
* You now receive 1 support point for destroying an enemy commander&#039;s artillery, UAV or Radar station.&lt;br /&gt;
* If you have received a point for healing, repairing, or resupplying a teammate, you will not receive another point from them for the same action for a set period of time.&lt;br /&gt;
* Singleplayer enemies use the knife more effectively.&lt;br /&gt;
* New engine sounds for the T98 tank.&lt;br /&gt;
* New engine sounds for the China/MEC light jeep.&lt;br /&gt;
* New cannon sounds on APCs.&lt;br /&gt;
&lt;br /&gt;
== Bug fixes ==&lt;br /&gt;
* Fixed physics of vehicles against soldiers so that soldiers are not killed so easily by moving vehicles.&lt;br /&gt;
* Fixed a physics issue that can cause you to be stuck when falling into shallow water&lt;br /&gt;
* Fixed an issue with soldier armor when spawning on a squad leader in a vehicle&lt;br /&gt;
* Fixed some objects that caused vehicles to take massive collision damage&lt;br /&gt;
* Fixed erroneous message stating that you punished a TK when auto-punish is OFF on the server.&lt;br /&gt;
* When a vehicle explodes due to external forces, the driver is no longer mis-credited for the kills.&lt;br /&gt;
* Added turret movement sounds to several vehicles.&lt;br /&gt;
* Fixed an issue that caused crosshairs to stay on the screen when switching camera views.&lt;br /&gt;
* Fixed an issue that caused the time limit status of the server not to be sent to clients when it is changed by the server.&lt;br /&gt;
* Fixed server setting sv.allowExternalViews.  Setting this to 0 will disallow external views.&lt;br /&gt;
* Added setting for interfaceIP to the server launcher&lt;br /&gt;
* Changed automatic TK banning to ban by cd-key instead of IP address&lt;br /&gt;
* Improved the stability of secondary position turrets to reduce jerkiness during movement.&lt;br /&gt;
* Fixed spawning on squad leaders to prevent players from spawning where they should not.&lt;br /&gt;
* Fixed issue with auto team balance not sending new players to the team with less players. &lt;br /&gt;
* Set T90 top hatch armor to &amp;quot;Front Armor&amp;quot;.&lt;br /&gt;
* Set some wheels on jets and helicopters to stronger armor to prevent them from being destroyed instantly by AT missiles.&lt;br /&gt;
* Adjusted wheeled vehicle engines on hills to improve climbing.&lt;br /&gt;
* Changed the Commo-rose behavior so that player does not leave crouch when using it.&lt;br /&gt;
* Passwords entered to join password protected servers are now cleared after use.&lt;br /&gt;
* Improved PLAY NOW functionality.&lt;br /&gt;
* Fixed some memory usage issues in the front end.&lt;br /&gt;
* Fixed an issue allowing color changes in player name text.&lt;br /&gt;
* When you click on a server in the server browser, the information from that server is updated to be more accurate.&lt;br /&gt;
* Fixed a crash in the Ranked Linux server when communication with stats back-end ceased.&lt;br /&gt;
* Improved the behavior of AA missiles when locked on an enemy.&lt;br /&gt;
* Fixed an issue where parachuting soldiers could not be healed.&lt;br /&gt;
* Added the server port to the SERVER INFO tab.&lt;br /&gt;
* Removed the SERVER INFO tab when playing singleplayer&lt;br /&gt;
* Fixed an issue causing some soldier &amp;amp; vehicle control keys to be used for in-game menus.&lt;br /&gt;
* Added new soldier artwork in BFHQ&lt;br /&gt;
* Added name of video director to credits&lt;br /&gt;
 &lt;br /&gt;
= Update v1.02 =&lt;br /&gt;
* Fixed a server memory leak&lt;br /&gt;
&lt;br /&gt;
= Update v1.01 =&lt;br /&gt;
* Fixed an issue that caused the Multiplayer Browser to become unresponsive.&lt;br /&gt;
* Fixed an issue where some game controls were not available to be rebound within the   Options menu.&lt;br /&gt;
* Fixed an issue with increasing performance degradation on servers.&lt;br /&gt;
* Fixed a problem with shader caching on client/host : after the first map in a rotation, shaders would be loaded on the fly during gameplay.&lt;br /&gt;
* Fixed a crash with rebinding LMB&lt;br /&gt;
* Fixed a problem that caused environment mapping to not appear on reflective surfaces.&lt;br /&gt;
* Fixed a crash that happened when a client picks up a kit that doesn&#039;t exist anymore.&lt;br /&gt;
* Fixed a problem with AI when the game was paused for a long time: bots would become unresponsive and also shoot more accurately.&lt;br /&gt;
* LOD distances tweaked on certain objects.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Main_Page&amp;diff=15</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Main_Page&amp;diff=15"/>
		<updated>2017-09-09T23:11:22Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Added realitymod python category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to the BF2 and BF2:Project Reality Technical Information and Modding Wiki!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This website is intended to serve as a resource for the BF2/PR community, a repository of technical information related to the games Battlefield: 2 and the modification Project Reality. Specifically, we hope to collect a lot of useful information here related to using the embedded Python capabilities of these games, modding, game statistics, administration, etc.&lt;br /&gt;
&lt;br /&gt;
This website is a &amp;quot;wiki&amp;quot;, meaning that anyone can edit its contents in any way--add pages, change them, even delete them completely. Anyone can freely access the material here; if you&#039;d like to edit it, too, all you have to do to is to create a (free) login for yourself, so we can keep track of who made what changes. Generally speaking, please try to keep the information on each page factual; if you&#039;d like to discuss the content of a page, put the discussion on the related &amp;quot;talk&amp;quot; page (click the &amp;quot;discussion&amp;quot; tab at the top of the page in question).&lt;br /&gt;
&lt;br /&gt;
Credit to bf2tech.org[http://bf2tech.org] for the initial content.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Special:AllPages|View All Articles on This Wiki]] &lt;br /&gt;
&lt;br /&gt;
The main topic areas of the wiki:&lt;br /&gt;
&lt;br /&gt;
* Project Reality Python&lt;br /&gt;
** [[Reality Logger]]&lt;br /&gt;
* Battlefield Python&lt;br /&gt;
** [[Learning Python]]&lt;br /&gt;
** The [[Big Picture]] of how Python hooks into BF2&lt;br /&gt;
** [[Event Reference|BF2 Event Reference]]&lt;br /&gt;
** [[Object Reference|BF2 Objects, Methods, and Attributes Reference]]&lt;br /&gt;
** [[Scripts|Python scripts]]: Complete scripts for inspiration and copying&lt;br /&gt;
** [[Python Cookbook|BF2 Python Cookbook]]: Short examples of how to do things&lt;br /&gt;
** [[Loading Python .pyd extensions]]&lt;br /&gt;
** [[Debugging]]&lt;br /&gt;
* Battlefield Networking&lt;br /&gt;
** [[Port Usage]]&lt;br /&gt;
** [[Protocols]]&lt;br /&gt;
** Bandwidth Requirements &lt;br /&gt;
* Battlefield Modding&lt;br /&gt;
** [[ConGrammar|.con File Grammar]]&lt;br /&gt;
** [[BF2 Commands|All Battlefield 2 Commands]]&lt;br /&gt;
** [[System Requirements]]&lt;br /&gt;
** [[File Formats]]&lt;br /&gt;
** [[File Checksums]]&lt;br /&gt;
** [[BF2 Statistics|Statistics Gathering]]&lt;br /&gt;
** [http://www.tweakguides.com/BF2_8.html Console Command Reference]&lt;br /&gt;
** [[Command Line Options]]&lt;br /&gt;
** [[Quick Tips]]&lt;br /&gt;
** [[Useful Software]]&lt;br /&gt;
** [[BF2CC|BF2CC Information]]&lt;br /&gt;
** [[ModManager]]&lt;br /&gt;
** [[Prospect]]&lt;br /&gt;
* [[Assembly|Battlefield 2 Assembly]]&lt;br /&gt;
* [[BF2 Changelog|Battlefield 2 Changelog]]&lt;br /&gt;
* Links to Other Useful BF2 Websites &lt;br /&gt;
&lt;br /&gt;
Here&#039;s a list of mysteries that we&#039;d like to solve and document here.&lt;br /&gt;
&lt;br /&gt;
If you have a BF2-related programming, modding, or admin project, you are welcome to create wiki pages here for your project, and to link to those pages from the wiki main page. If your project falls into one of those categories, the only other requirements are that any software must be licensed using an OSI-approved license, and your text must be licensed under an OSI-license or a Creative Commons license, such as the license used by this wiki itself. The BF2 Tech Wiki, its editors, and its sponsors make no guarantees or waranties whatsoever regarding anything; this wiki is simply made available to the BF2 community as a public service.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Reality_Logger&amp;diff=14</id>
		<title>Reality Logger</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Reality_Logger&amp;diff=14"/>
		<updated>2017-09-09T23:10:03Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Reality Logger is used to easily log to a file.&lt;br /&gt;
&lt;br /&gt;
==Creating a logger==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;realitylogger.createLogger( name, path, fileName, continous )&amp;lt;/code&amp;gt;&lt;br /&gt;
* name - a unique key used to select the logger&lt;br /&gt;
* Path - Diretory the log file gets created in&lt;br /&gt;
* FileName - Name of the file created. If not contionous should specify a date format (strftime format)&lt;br /&gt;
* Continous - Whether to log to one file all the time or create new one every round&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
createLogger may be called many times with the same key, repeating calls will be properly filtered out. It is not required to put it in an init() function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using a logger==&lt;br /&gt;
&lt;br /&gt;
To acquire a logger:&lt;br /&gt;
&amp;lt;code&amp;gt;X = realitylogger.RealityLogger[key]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Basic logging commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;X.logLine(line)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;X.logLines(lines)&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=File_Formats&amp;diff=13</id>
		<title>File Formats</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=File_Formats&amp;diff=13"/>
		<updated>2017-09-09T23:09:00Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Image Files ===&lt;br /&gt;
The majority of the image files within the Battlefield 2 directory structure have the &#039;&#039;&#039;PNG&#039;&#039;&#039; file extension, however most of these image files are in fact &#039;&#039;&#039;DDS&#039;&#039;&#039; files with an incorrect file extension. There are a few image files that really are PNG files (mainly within &amp;lt;tt&amp;gt;Battlefield 2\mods\bf2\Objects\&amp;lt;/tt&amp;gt;), and can be easily loaded by an image viewer/editor.&lt;br /&gt;
&lt;br /&gt;
The image files in Menu_client.zip are packed into a DDS Texture Atlas file. Basicly, an atlas file combines a lot of small images into one big image to improve reading performance. An index file with coordinates is used to locate the individual images in the Atlas.&lt;br /&gt;
The Atlas images and index files are located in Menu_client.zip/Atlas.&lt;br /&gt;
&lt;br /&gt;
=== External Links ===&lt;br /&gt;
[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp Microsoft Developer Network DDS File Reference]&lt;br /&gt;
&lt;br /&gt;
[http://www.libpng.org/pub/png/ PNG File Information]&lt;br /&gt;
&lt;br /&gt;
[http://eliteforce2.filefront.com/file/DDS_Converter;29412 DDS File Convertor]&lt;br /&gt;
&lt;br /&gt;
[http://developer.nvidia.com/object/photoshop_dds_plugins.html Nvidia DDS Plugin for reading and writing DDS files in Adobe Photoshop]&lt;br /&gt;
&lt;br /&gt;
[http://developer.nvidia.com/object/texture_atlas_tools.html Nvidia texture atlas tools reading and creating tool]&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=BF2_Console_Commands&amp;diff=12</id>
		<title>BF2 Console Commands</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=BF2_Console_Commands&amp;diff=12"/>
		<updated>2017-09-09T23:08:19Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== AnimationBundle ==&lt;br /&gt;
;animationBundle.abruptPlayback bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.addAnimation string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.addEvent string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.fadeInTime float -&amp;gt; float&lt;br /&gt;
:Used in AnimationSystem1p and 3p .inc files&lt;br /&gt;
:&amp;quot;Fade in: Animation Start. Allows a smooth transition between animations. The lower it is, the quicker it is. A high value makes the transition slower and longer. Fade in 0.01. Example: Idle/Walking to Sprinting&amp;quot;&lt;br /&gt;
;animationBundle.fadeOutTime float -&amp;gt; float&lt;br /&gt;
:Used in AnimationSystem1p and 3p .inc files&lt;br /&gt;
:&amp;quot;Fade out: Animation End. Same as above, Fadeout 0.1. Fadeout 0.4 would make it take 0.4 seconds to finish an animation&lt;br /&gt;
:example: From Sprinting to Walk/Idle&amp;quot;&lt;br /&gt;
;animationBundle.getAnimationLength string -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.getAnimationStartTime string -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.getEventStartTime string -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.isLooping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.jumpToLastAnimationAtStop bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.length float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.listAnimations -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.listEvents -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.playBackward bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.playForever bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.removeAnimation string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.removeEvent string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.setAnimationLength string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.setAnimationStartTime string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.setEventStartTime string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationBundle.useSpeedAsTime bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
&lt;br /&gt;
== AnimationManager ==&lt;br /&gt;
;animationManager.fadeInTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationManager.ignoreMotherOrientation int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationManager.length float -&amp;gt; float&lt;br /&gt;
:&amp;quot;AnimationSystem1p, AnimationSystem3p.inc&amp;quot;&lt;br /&gt;
:&amp;quot;The length of the animation. Must match up with ObjectTemplate.ammo.reloadTime to sync. If it&#039;s a lower value, animation will be sped up. If it&#039;s a higher value, animation will be slowed down.&amp;quot;&lt;br /&gt;
;animationManager.looping bool -&amp;gt; bool&lt;br /&gt;
:&amp;quot;AnimationSystem1p, AnimationSystem3p.inc&amp;quot;&lt;br /&gt;
;animationManager.noiceAmplitude float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationManager.noiceFreq int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationManager.originalLength -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
&lt;br /&gt;
== AnimationSystem ==&lt;br /&gt;
;animationSystem.activestring -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.activeAnimation string -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.activeBundle string -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.activeTrigger string -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.activeValueHolder string -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.amplitude Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.fire Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.hit Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.look Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.move Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.stiffness Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.use bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.cameraSpring.zoomDamping Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.create string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.createAnimation string -&amp;gt; anim.BoneAnimation*&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.createBundle string -&amp;gt; anim.Bundle*&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.createTrigger string string -&amp;gt; anim.Trigger*&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.createValueHolder string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.deleteActiveBundle -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.deleteActiveTrigger -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.hide -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.list -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.listAnimations -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.listBundles -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.listTriggers -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;AnimationSystem.listTriggerTypes -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.listValueHolders -&amp;gt; string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.playbackModifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.reloadScript -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.save string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.saveActive -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationSystem.saveValueHolders -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
&lt;br /&gt;
== animationTrigger ==&lt;br /&gt;
;animationTrigger.addBundle std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.addChild std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.clearValueHolder -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.fadeInTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.getTypeName -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.idleTime Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.listBundles -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.message int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.removeBundle std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.removeChild std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.triggerOnAcceleration bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.useDirection bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationTrigger.valueHolder std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
== animationValueHolder ==&lt;br /&gt;
;animationValueHolder.getFilename -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.max float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.min float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.normal float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.passOnMessage unsigned int -&amp;gt; unsigned int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.stopOnMessage unsigned int -&amp;gt; unsigned int&lt;br /&gt;
: Unknow&lt;br /&gt;
;animationValueHolder.values float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== audioSettings ==&lt;br /&gt;
;audioSettings.alwaysAllowSystemOpenAL bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.effectsVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.enableEAX bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.englishOnlyVoices bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.forceNumberOfVoices int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.helpVoiceVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.musicVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.provider std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.soundQuality std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipBoostEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipCaptureThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipCaptureVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipPlaybackVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;audioSettings.voipUsePushToTalk bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;bf2Engine.playMovie std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;chat.sayAll std::string -&amp;gt; void&lt;br /&gt;
:Menu (Hud Elements Chat.con)&lt;br /&gt;
:All Chat. Used in HudElementsChat.con&lt;br /&gt;
;chat.sayTeam std::string -&amp;gt; void&lt;br /&gt;
:Menu (Hud Elements Chat.con)&lt;br /&gt;
:Team Chat. Used in HudElementsChat.con&lt;br /&gt;
;CollisionCheck.checkStaticCollisionMeshes int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== collisionManager==&lt;br /&gt;
;collisionManager.buildDebugCollisionMeshes -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.createTemplate std::string -&amp;gt; void&lt;br /&gt;
:Used in .con files for collision meshes&lt;br /&gt;
:Creates a Collision Mesh template from the collision mesh name so it can be used in other files without creating a duplicate mesh&lt;br /&gt;
;collisionManager.drawBoundingBoxes bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawForces bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawIntersectFaces bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawMeshes bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawNormals bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawOnlyRoot float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawPivots bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawPrimitives bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawSoldierMesh bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.drawTestedFaces bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.getNameOfObjectInFocus -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.identityRotateObjectInFocus -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.rotateObjectInFocusAroundAxis uint float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.rotateObjectInFocusAroundVector Vec3 float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.setActiveLod int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.setDrawDistance float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.setGeometry bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.setSleepinessOfObjectInFocus int -&amp;gt; void&lt;br /&gt;
:.con presumably&lt;br /&gt;
:Effect unknown. Causes a game crash during loading when using collisionManager.setSleepinessOfObjectInFocus 0 in a .con of a GenericFirearm&lt;br /&gt;
;collisionManager.updateFlagsOfObjectInFocus U32 U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;collisionManager.useDeferredLoading bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== combatArea ==&lt;br /&gt;
;combatArea.active std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.addAreaPoint Vec2 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.deleteActiveCombatArea -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.getActiveCombatAreaName -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.inverted bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.layer int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.addVehicleDamage world::VehicleCategory float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.addVehicleTimer world::VehicleCategory float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.damage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.timeAllowedOutside float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatAreaManager.use bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.max Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.min Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.team int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.usedByPathFinding bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;combatArea.vehicles int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
== commander == &lt;br /&gt;
;commander.accept bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.artillery -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.commanderApply -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.commanderMutiny -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.commanderResign -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.satellite -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.sendOrder int bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.supplies -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.toggleArtilleryState -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.toggleSupplyState -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.toggleUAVState -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.toggleVehicleDropState -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.uav -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.vehicleDrop -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commander.zoomCommander -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== commanderInterface == &lt;br /&gt;
;commanderInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== commanderMenu == &lt;br /&gt;
;commanderMenu.deselect -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.doubleClick -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.rightClick -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.sendRadioMessage std::string TargetChannel -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.singleClick -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;commanderMenu.vehicleDropReloadTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
== Console ==&lt;br /&gt;
;Console.allowMultipleFileLoad bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.bindKeyToConsoleScript int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.echo bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.echoErrors bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getActiveMethods std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getArgumentTypes std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getCategory std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getDelta std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getEnumName std::string std::string int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getRange std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getReturnType std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.getTypeDescription std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.hasBundledType std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.hasRange std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.isDynamic std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.isSetGet std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.listConstants std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.listVariables std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.maxCommandHistorySize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.maxHistorySize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.maxLineSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.run std::string std::string std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.useRelativePaths bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Console.workingPath std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
== controlMap ==&lt;br /&gt;
;controlMap.addAxisToAxisMapping int InputDeviceFlags InputDeviceAxes -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addAxisToTriggerMapping int int InputDeviceFlags -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addButtonAndKeyToAxisMapping int InputDeviceFlags InputDeviceButtons -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addButtonsToAxisMapping int InputDeviceFlags InputDeviceButtons -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addButtonToTriggerMapping int InputDeviceFlags InputDeviceButtons -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addKeyAndButtonToAxisMapping int InputDeviceFlags InputDeviceKeys -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.addKeysToAxisMapping int InputDeviceFlags InputDeviceKeys -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.AddKeyToTriggerMapping int InputDeviceFlags InputDeviceKeys -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.deleteControlMap std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.dump -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.InvertMouse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.keyboardSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.mouseSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setActive std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setAxisScale io::InputDeviceAxes float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setButtonFallTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setButtonRiseTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setDoubleTapTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setPitchFactor float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;controlMap.setYawFactor float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== DecalManager ==&lt;br /&gt;
;decalManager.decalGeomClipAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.decalNormalOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.drawStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.fadeDistance float -&amp;gt; float&lt;br /&gt;
:&lt;br /&gt;
:Set the View Distance of the Decals to start to fade. Works in level .con files&lt;br /&gt;
;decalManager.fadeOutAtPercentageOfTimeToLive float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.generateTexture -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.startFadePercentageOfFadeDistancel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;decalManager.timeToLive float -&amp;gt; float&lt;br /&gt;
:&amp;quot;Time in seconds of how long will a vehicle, effect or projectile will last. For vehicles, if it has been exited for a time, it will blow up. Uses CRD Arguments. More info: http://bfmods.com/mdt/scripting/ObjectTemplate/Properties/TimeToLive.html&amp;quot;&lt;br /&gt;
;demo.recordDemo std::string -&amp;gt; void&lt;br /&gt;
:&amp;quot;Starts the Battlerecorder Recording. Needs to specify a name. File is saved in mods/(mod)/Demos. In My Documents/Project Reality/Profile/001 (i.e 002, 003, default) create a demos folder and place both files there.&amp;quot;&lt;br /&gt;
== demo ==&lt;br /&gt;
;demo.restartDemo -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo.shutdownDemo -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo.stopRecording -&amp;gt; void&lt;br /&gt;
:Console ~ Command &lt;br /&gt;
:Stops the Battlerecorder Recording. File is saved in mods/(mod)/Demos. In My Documents/Battlefield 2/Profile/001 etc create a demos folder and place both files there.&lt;br /&gt;
;demo.toggleCameraDemo -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo.toggleDemoPauseOrPlay -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo.togglePlayerDemo bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== Editor ==&lt;br /&gt;
;Editor.createNewLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.deleteAllLayers -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.deleteAllObjects -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.deleteObject world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.deleteTemplate world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.getActiveLayer -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.getActiveLayerId -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.getActiveObject -&amp;gt; world::IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.getActiveObjectTemplate -&amp;gt; world::IObjectTemplate_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.hideLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listAllVehicles -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listLayers -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listMeshes -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listObjects -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listObjectsOfTemplate world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listTemplates std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.listTextures -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.loadAllObjects std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.loadAllTemplatesAndObjects -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.printObjectCreationScript world::IObject_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.printTemplateCreationScript world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.quickReloadActiveTemplate -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.quickReloadTemplate world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.removeLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.renameLayer std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllEffects -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllObjects std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllSpawners -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllTemplates -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllTemplatesAndObjects -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveAllUsedTemplates std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveFolderToArchive std::string bool bool -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveSpawners bool bool bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveTemplateToFile std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveTemplateTreeStructure std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.saveVehicles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.setActiveLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.setActiveLayerId int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.setActiveObject world::IObject_ptrproxy -&amp;gt; world::IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.setActiveObjectTemplate world::IObjectTemplate_ptrproxy -&amp;gt; world::IObjectTemplate_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.ShowEntryPoints bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.showLayer std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.start world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.stop world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.updateAllTemplates -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Editor.updateTemplate world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== effectTweak ==&lt;br /&gt;
;effectTweak.setAgeScaleFactorForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setAlphaIntensityForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setEmitScaleFactorForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setEmitSpeedScaleFactorForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setSoundIntensity float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;effectTweak.setStartAgeForAllEffects float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;envmapManager.generateEnvMaps -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;envmapManager.loadEMIFile std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;envmapManager.perPixelEnvironmentMappingEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;envmapManager.save -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.addPath std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.copyFile std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.deleteFile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.fileExists std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.mountArchive std::string std::string bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;fileManager.moveFile std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.allowToggleFullscreen bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.lockFps int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
== gameLogic ==&lt;br /&gt;
;gameLogic.AddInvalidDropVehicleObject std::string bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.becomeSquadLeader bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.createObject std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.damageForBeingOutSideWorld float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.defaultLevel std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.defaultTimeToNextAIWave float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.enableVoHelp bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Enables the Voice Over Tips feature from vBF2. Uses prhelp.utxt in localization for strings/anything with HUD_HELP definitions&lt;br /&gt;
	: HudElementsHelp.con in Menu for the size&lt;br /&gt;
	: color&lt;br /&gt;
	: fade in time&lt;br /&gt;
	: create more messages and VoiceMessages_Help.con for voiceovers&amp;quot;&lt;br /&gt;
;gameLogic.extraUAVVehicleFlightHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.feslEnvironment int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getBeforeSpawnCameraDirection -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getBeforeSpawnCameraPosition -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getDefaultNumberOfTickets U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getDefaultNumberOfTicketsEx U32 U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getNumberOfTickets U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTeamDropVehicle int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTeamLanguage int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTeamName int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTicketLossAtEndPerMin -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.getTicketLossPerMin U32 -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.hitIndicationThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.maximumLevelViewDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.addHelpMessage std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.addMessage std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.addRadioFilter std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.addRadioVoice std::string std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.playHelpMessage std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.playRadioMessage int std::string std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.messages.setVolumes float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.noVehiclesOmit std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.outputPlayerStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.printCameraCoordToConsole -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.refreshTriggerables -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.remoteCommand int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.reset -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.roundNr int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setAirMouseInverted bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setAirMouseSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setBeforeSpawnCamera Vec3 Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setDefaultNumberOfTickets U32 U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setDefaultNumberOfTicketsEx U32 U32 U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setDropVehicleDeviationRadius int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setKit int KitType std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setNumberOfTickets U32 U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setNumDropVehiclesForTeam int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTeamDropVehicle int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTeamFlag int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTeamLanguage int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTeamName int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTicketLossAtEndPerMin float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.setTicketLossPerMin U32 float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.spawnAtCameraPosition bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.spawnObjectSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.spawnPlayers bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.supplyDropHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.supplyDropNumSecsToLive float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.teleport -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.teleportCameraTo Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.teleportTo Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.timeAllowedOutSideWorld float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.timeToNextAIWave float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameLogic.togglePause -&amp;gt; void&lt;br /&gt;
	:Console ~ Command&lt;br /&gt;
	:Pauses the game. Pressing &#039;P&#039; in COOP and Local does the same thing.&lt;br /&gt;
;gameLogic.vehicleDropHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;Game.radioMessage TargetChannel std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.sayAll std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.sayTeam int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== gameServerSettings ==&lt;br /&gt;
;gameServerSettings.setAdminScript std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setAllowNATNegotation bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setAutoBalanceTeam bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setAutoRecord bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setAutoRecordRounds int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setCommunityLogoURL std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setCoopBotCount int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setCoopBotDifficulty float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setCoopBotRatio float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setDemoDownloadURL std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setDemoHook std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setDemoIndexURL std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setEndDelay int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setFriendlyFireWithMines bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setGameMode std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setGameSpyPort int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setInterfaceIP std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setInternet bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setManDownTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setMaxPlayers int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setMinPlayersForVoting int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setNoVehicles float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setPassword std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setPunishTeamKills bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setRoundsPerMap int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setScoreLimit int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setServerName std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSoldierFF int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSoldierSplashFF int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSpawnTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSponsorLogoURL std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSponsorText std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setStartDelay int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setSvPunkBuster bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTeamRatio float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTeamVoteOnly bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTicketRatio int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTimeBeforeRestartMap float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setTimeLimit int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVehicleFF int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVehicleSplashFF int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipBFClientPort int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipBFServerPort int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipEnabled bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipServerPort int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipServerRemote bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipServerRemoteIP std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoipSharedPassword std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;gameServerSettings.setVoteTime int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;game.simulationRate int -&amp;gt; int&lt;br /&gt;
	:HudElementsDemoRecComm.con&lt;br /&gt;
	:&amp;quot;In Battlerecorder&lt;br /&gt;
	: it sets the speed for the decrease speed and increase speed buttons. Can be increased&lt;br /&gt;
	: though some users report no difference as it is dependent on the Demo FPS (Default is 30&lt;br /&gt;
	: settings must be recorded higher&lt;br /&gt;
	: something like 60) and Game FPS&amp;quot;&lt;br /&gt;
;game.toggleFullscreen -&amp;gt; void&lt;br /&gt;
	:~ Console&lt;br /&gt;
	:&amp;quot;Toggles Full-Screen and Windowed mode&lt;br /&gt;
	: though it will give you the nasty side-effect of seethrough terrain that would need the client to disconnect and reconnect to fix.&amp;quot;&lt;br /&gt;
;game.unload -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== generalSettings ==&lt;br /&gt;
;generalSettings.addFavouriteServer std::string int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.addServerHistory std::string int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setAllowPunkBuster bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setAutoReady bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setAutoReload bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setBFTVSaveDirectory std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setBotSkill float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setBuddytagColor int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setConfirmQuit bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setConnectionType int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setCrosshairColor int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setHUDTransparency float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setItemSelectionReverseItems bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setLCDDisplayModes bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMapIconAlphaTransparency float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMaxBots int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMaxBotsIncludeHumans bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMinimapRotate bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setMinimapTransparency float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setNumRoundsPlayed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setOutOfVoting bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setPlayedVOHelp std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setServerFilter std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setSortKey std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setSortOrder int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setSquadtagColor int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setToggleFilters int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setUseAdvancedServerBrowser bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setUseBots bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;generalSettings.setViewIntroMovie bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== geometryTemplate ==&lt;br /&gt;
;geometryTemplate.active IGeometryTemplate* -&amp;gt; IGeometryTemplate*&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.color Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.compressVertexData bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;GeometryTemplate.create std::string std::string -&amp;gt; IGeometryTemplate*&lt;br /&gt;
	:Used in .con files&lt;br /&gt;
	:Creates a Geometry Mesh template from the geometry mesh name so it can be used in other files without creating a duplicate mesh&lt;br /&gt;
;geometryTemplate.depth float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.doNotGenerateLightmaps bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.dumpInstances -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.glowFadeOutDistEnd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.glowFadeOutDistStart float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.glowing bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.height float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.ignoreLeafLighting bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.innerRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.lenght float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.length float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.lightmapOverride bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.maxSkip3pLods uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.maxSkipWreckLods uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.maxTextureRepeat int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.meshDetailLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.name -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.noLighting bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.nrOfAnimatedUVMatrix int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.outerRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;GeometryTemplate.printInfo bool -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.radius1 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.radius2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.rings uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setLightmapSizeAll int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setMaterialParallaxHeightScale int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setMaterialReflectionScale int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setSpecularStaticGloss int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.setSubGeometryLodDistance int int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.shader std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.shadowDetailLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.sides uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.slices uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.stacks uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.tesselation BaseVector2&amp;lt;uint&amp;gt; -&amp;gt; BaseVector2&amp;lt;uint&amp;gt;&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.texture std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.useRadiusForShadowDepth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.useRadiusForShadowSpatial bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;geometryTemplate.width float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
== globalSettings ==&lt;br /&gt;
;globalSettings.setDefaultUser std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;globalSettings.setNamePrefix std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== hapticSettings ==&lt;br /&gt;
;hapticSettings.addWeaponClassMap std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.load -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivity float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLength float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthSEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivityLengthSOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivitySEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setAimSensitivitySOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLength float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthSEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxLengthSOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffness float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessSEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setControlBoxStiffnessSOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setDamageScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setExplosionShakeScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setForceCapX float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setForceCapY float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setForceCapZ float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setGeneralShakeScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRSmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRTransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsAIRTransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELIScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELISmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELITransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsHELITransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDSmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDTransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsLANDTransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEAScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEASmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEATransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSEATransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScale float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleXHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleXLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleXMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleYHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleYLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleYMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleZHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleZLow float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERScaleZMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeXHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeXLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeXMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeYHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeYLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeYMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeZHigh int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeZLow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERSmoothTimeZMed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERTransitionValueHigh float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setPhysicsSOLDIERTransitionValueMed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleCARBINE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleDEFIB float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleDROP float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleKNIFE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleLAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleLMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScalePISTOL float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleRIFLE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleRIFLELAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleSHOTGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleSMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleSNIPER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleTHROWN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_AIRGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_ARMORCANNON float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_COAXIALGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_HELIGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_HMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_LMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPitchScaleV_MISSILE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleCARBINE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleDEFIB float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleDROP float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleKNIFE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleLAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleLMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScalePISTOL float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleRIFLE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleRIFLELAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleSHOTGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleSMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleSNIPER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleTHROWN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_AIRGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_ARMORCANNON float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_COAXIALGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_HELIGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_HMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_LMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchScaleV_MISSILE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeCARBINE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeDEFIB float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeDROP float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeKNIFE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeLAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeLMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimePISTOL float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeRIFLE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeRIFLELAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeSHOTGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeSMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeSNIPER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeTHROWN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_AIRGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_ARMORCANNON float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_COAXIALGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_HELIGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_HMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_LMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilPunchTimeV_MISSILE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleCARBINE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleDEFIB float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleDROP float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleKNIFE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleLAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleLMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScalePISTOL float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleRIFLE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleRIFLELAUNCHER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleSHOTGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleSMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleSNIPER float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleTHROWN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_AIRGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_ARMORCANNON float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_COAXIALGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_HELIGUN float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_HMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_LMG float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setRecoilYawScaleV_MISSILE float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setSpeedShakeScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivity float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivityAIR float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivityHELI float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivityLAND float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivitySEA float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hapticSettings.setTurnSensitivitySOLDIER float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== heightmapcluster ==&lt;br /&gt;
;heightmapcluster.addHeightmap std::string int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.compileWaterMeshesIntoHeightmap -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.importSurroundingRawHeightMap std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.intersectCameraRay -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.setClusterSize int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.setHeightmapSize int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.setSeaWaterLevel float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.smoothEdges int float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmapcluster.stitchEdges -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.loadHeightData std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.loadMaterialData std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setBitResolution int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setMaterialScale int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setModified bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setScale Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;heightmap.setSize int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hemiMapManager.hemiLerpBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;hemiMapManager.makeHemiMap unsigned long std::string Vec3 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hemiMapManager.setBaseHemiMap std::string Vec3 float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== hudBuilder ==&lt;br /&gt;
;hudBuilder.addNodeAlphaShowEffect -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addNodeBlendEffect int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addNodeMoveShowEffect float int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addNodeVariableMoveShowEffect std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addObjectMarkerNodeLockTextNode std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.addTransformListNode std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createBarNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createButtonNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createCompassNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createEditNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createHoverNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createListNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createMapNode std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createMiniMapNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createObjectMarkerNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createObjectSelectionNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createOccupiedNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createPictureNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createSliderNode std::string std::string float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createSplitNode std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createTextNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createTileNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createTransformListNode std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.createTransformNode std::string std::string int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.deleteNode -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.newLayer -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.searchNodes std::string std::string -&amp;gt; meme::Node*&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setActiveObject std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeBorder int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeSnap int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeSnapDir bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeValueVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setBarNodeVariableTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeAltConCmd std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeConCmd std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeDebug bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeFunction std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeMouseArea int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeMouseOverColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setButtonNodeTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCommanderPos Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCommanderSize Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeBorder int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeOffset int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeSnapOffset int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeSnapTexture bool std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeTextureSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeValueVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCompassNodeVariableTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCPFont std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setCPFontColor float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeData int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeFont std::string bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeMaxLength int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setEditNodeString int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setHoverInMiddlePos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setHoverMaxValue float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setHoverWidthLength float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeBackgroundColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeBorder int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeBorderColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeConCmd int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeData int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeFont std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeOutline bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeRowSpacing int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeScrollbar int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeScrollbarBackgroundColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeScrollbarColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setListNodeSelectColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setMaxiPos Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setMaxiSize Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setMiniPos Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setMiniSize Vec2 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setModifyer float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeAlphaVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeInTime float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeLogicShowVariable std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeOffset int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeOutTime float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodePos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodePosVariable int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeRGBVariables std::string std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeShowVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setNodeSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeLockOnType int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeLockText bool std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeLockTextOffset int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeObjects int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeTexture int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeTextureSize int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectMarkerNodeWeapon int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setObjectSelectionNodePointerSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setOccupiedNodeData int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setOccupiedNodePosVariable int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeAlphaMask std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeBorder int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeBorderColor float float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeCenterPoint int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeRotateVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeRotation int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeTexture std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setPictureNodeVariableTexture std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setSliderNodeChild std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setSliderNodeData std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeOutLine std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeOutLineOffset float float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeString std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeStringVariable std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTextNodeStyle std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTileNodeOptions int int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTranformListNodeOffset int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setTranformListNodePosVariable int std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudBuilder.setZoomIcons bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudItems.setBool std::string bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudItems.setFloat std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudItems.setString std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.addFavouriteServer bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.addTextureAtlas std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.enableSayAllChatBox bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.enableSaySquadChatBox bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.enableSayTeamChatBox bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.refresh -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setCommMousePos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setCommMouseSensitivity int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setCommPos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setCommSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setDisplayControlpoints bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setDisplayTickets bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setDone bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMapStatic bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMaximumNrOfCPs int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureArtillery std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureCancel std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureEmpty std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureFull std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureSupply std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setMouseTextureUAV std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setPaint bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setPointerMouseSensitivity int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setPointerSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setSpottedAngle float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setSpottedMenuPos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setSpottedMenuSize int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setSpottedMousePos int int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setTargetTop float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;hudManager.setUpdate bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ingameHelp.showIngameHelp std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;InputDevices.setAxisScale InputDeviceFlags InputDeviceAxes float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;InputDevices.setInvertAxis InputDeviceFlags InputDeviceAxes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;itemSelection.setReverseItems bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;levelsList.setVoteMapShow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;levelsList.singleClick int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.ambientColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
== lightManager ==&lt;br /&gt;
;lightManager.defaultEffectLightAffectionFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.dynamicPointColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.dynamicPointColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.dynamicPointColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.dynamicPointScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.effectShadowColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.effectSunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.enableStencilCullerReset bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.enableSun bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.groundHemi std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.hemiLerpBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.init -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.lightCullDistance float -&amp;gt; float&lt;br /&gt;
	:Used in sky.con&lt;br /&gt;
	:Raises the default limit of the culling of lightsources from a distance. Example: lightManager.lightCullDistance 2000 which extends the rendering of the lightsource.&lt;br /&gt;
;lightManager.lightMapAmbientAlphaCutoffRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLightsPerBundledMesh int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLightsPerSkinnedMesh int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLightsPerStaticMesh int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLightsPerTerrainPatch int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.maxLodForMaterialBatching int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.singlePointColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.singlePointColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.singlePointColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.skinnedMeshShaderLodDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.skyColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.skyColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.skyColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticLightBlendingTime double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSkyColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSkyColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSkyColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSpecularColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.staticSunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunSpecColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunSpecColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.sunSpecColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.treeAmbientColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.treeSkyColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;lightManager.treeSunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
== localPlayer ==&lt;br /&gt;
;localPlayer.commanderSelectDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;localPlayer.firstCommanderSelectDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
== localProfile ==&lt;br /&gt;
;localProfile.addDemoBookmark std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.save -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setEmail std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setGamespyNick std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setNick std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setNumTimesLoggedIn int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setPassword std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;localProfile.setTotalPlayedTime float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== maplist ==&lt;br /&gt;
;maplist.append std::string std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.clear -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.configFile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.currentMap -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.insert int std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.list -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.load -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.mapCount -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.remove int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;maplist.save -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== material ==&lt;br /&gt;
;material.active unsigned int -&amp;gt; unsigned int&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.damageLoss float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.elasticity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.friction float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.hasWaterPhysics bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.isBarbwire bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.isOneSided bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.isSeeThrough bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.attMaterial unsigned int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.createCell unsigned int unsigned int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.damageMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.defMaterial unsigned int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.setDecalTemplate unsigned int IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.setEffectTemplate unsigned int IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;materialManager.setSoundTemplate unsigned int IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.maxDamageLoss float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.minDamageLoss float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.name std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.overrideNeverPenetrate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.penetrationDeviation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.projectileCollisionHardness float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.resistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;material.type int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
== menuTeamManager ==&lt;br /&gt;
;menuTeamManager.addKit std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;menuTeamManager.addTeam std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;menuTeamManager.addWeapon std::string int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;menuTeamManager.setTeamId int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== minimap ==&lt;br /&gt;
;minimap.setCommanderOffset Vec2 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setCurrOrderList int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setDestinationBlend int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setFilterColor float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setFullScreenZoom int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setPaintAllKits -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setPaintAllVehicles -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setPaintKit int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setPaintVehicle int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setSourceBlend int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.setZoom -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;minimap.toggleShowKits -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== nametags ==&lt;br /&gt;
;nametags.createBar NametagItemIDs int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.createIcon NametagItemIDs -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.deathFadeOutTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.deployableDistance double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.enemyDotLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.enemyTagDelayTime double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.enemyTagFadeInTime double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.enemyTagFadeOutTime double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.getCullDistance TagType -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.manDownFadeOutTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.maxCallDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.maxFriendlyDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.setCullDistance TagType Vec2 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.setTexture int std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.vehicleNametagOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;nametags.vehicleNametagOffsetFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
== networkableInfo ==&lt;br /&gt;
;networkableInfo.createNewInfo std::string -&amp;gt; void&lt;br /&gt;
	:Used in objects\common\Networkables.con&lt;br /&gt;
	:Creates a custom NetworkableInfo. Use with NetworkableInfo.setPredictionMode etc&lt;br /&gt;
;networkableInfo.deleteInfo std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;networkableInfo.setBasePriority float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;networkableInfo.setForceNetworkableId bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;networkableInfo.setIsUnique bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;networkableInfo.setPredictionMode PredictionMode -&amp;gt; void&lt;br /&gt;
	:&lt;br /&gt;
	:NetworkableInfo.setPredictionMode&lt;br /&gt;
;network.globalPredictionMode PredictionMode -&amp;gt; PredictionMode&lt;br /&gt;
: Unknow&lt;br /&gt;
== object ==&lt;br /&gt;
;object.absolutePosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.absolutePositionSecondary Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.absoluteTransformation Mat4 -&amp;gt; Mat4&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.active world::IObject_ptrproxy -&amp;gt; world::IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.addAbsolutePoint -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.attenuationRange1 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.attenuationRange2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.color Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.coneAngle1 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.coneAngle2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.create world::IObjectTemplate_ptrproxy Vec3 Vec3 -&amp;gt; world::IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.delete world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.deleteAll -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.direction Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.disableChildren bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.collectPlanesDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.drawDebugPlanes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.faceForwardThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.showCullStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.useExactTest bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectDrawer.useOcclusion bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.forceStart world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.forceStop world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.fov float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.color Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.GenerateLightmapForThisInstance bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.loadMesh std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.subGeometry int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.subGeometryCount -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.technique std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.geometry.template -&amp;gt; IGeometryTemplate*&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.getControlPointId -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.getGroundPos Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.getLightSourceMask -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.getVisibleTeam -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.group int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.hasCollision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.hasUpdate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.HDRIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.info world::IObject_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.initGrid Vec2 Vec2 int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.isInGrid bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.isOvergrowth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.isSaveable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.isVisible bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.layer int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.list -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.listObjectsOfTemplate world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.loadAll std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectManager.drawStats int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.name std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.notInAI bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.printScript world::IObject_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.rotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.rotationSecondary Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.saveAll std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.scale Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setActive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setAsSkyLight -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setControlPointId int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setIsDisabledRecursive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setIsInTweakModeRecursive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setIsSaveableRecursive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setIsVisibleRecursive bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setLightSourceMask int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.setObjectToGround world::IObject_ptrproxy -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setTeam int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.setVisibleTeam int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.spawnOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.start world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Object.stop world::IObject_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.team int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.template -&amp;gt; const IObjectTemplate*&lt;br /&gt;
: Unknow&lt;br /&gt;
== objectTemplate ==&lt;br /&gt;
;objectTemplate.3dMapIcon int -&amp;gt; int&lt;br /&gt;
	:Used in GenericFirearms (Mine etc) .tweak&lt;br /&gt;
	:&amp;quot;The image number sequence referenced in \menu\nametag\Objects.dds. Use the vBF2 file and count the images. 9 is the mine icon. Using this system&lt;br /&gt;
	: you could have custom 3D Mine Icons as long as they are the same size as the original.&amp;quot;&lt;br /&gt;
;objectTemplate.ability.hasAmmoAbility bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ability.hasHealingAbility bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ability.hasRepairingAbility bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ability.radarRadius int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityHud.ammoSound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityHud.healingSound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityHud.repairingSound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityInVehicleMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityInVehicleRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityInVehicleStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.abilityRestoreRate float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.acceleration Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.acceleration float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.accumulate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.active world::IObjectTemplate_ptrproxy -&amp;gt; world::IObjectTemplate_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.activeSafe std::string world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addAmmoType int int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addChild bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addEmitterSpeed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addKitVehicleMod std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addLinePoint Vec2 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addPcoPosId int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addTargetObjectTypeToWatch int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addTemplate std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addToCollisionGroup U32 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addToProjectileList bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addTriggerableTarget std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addVehicleType std::string int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addVehicleType VehicleCategory -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.addWorkOnMaterial int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.affectingType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.affectLightmappedObjects bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.AgeScaleFactorUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.airFlowAffect float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.airFriction float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.airResistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.airResistanceGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.aiTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alignEffectTransformation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alignRotationToSpeed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.allowDucking bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.allowInsideDynamicLights bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.allowInsideStaticSun bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaCull float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaIntensityUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alphaOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate0 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate1 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate2 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate3 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.alternateTemplate4 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.altSoldierExitPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityCost float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityDrain float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.abilityStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.ammoType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.autoReload bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.changeMagAt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.firstShotExtraTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.instantReloadOnEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.lastShotExtraTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.magLinkWeapon std::string -&amp;gt; std::string&lt;br /&gt;
: &amp;quot;Weapons, Vehicles .tweak&amp;quot;&lt;br /&gt;
:Allows two weapons to share the same amount of bullets and magazines. Enter the weapon name to maglink. The weapon that&#039;s referenced must also have the same code. Weapons with fire selector code causes it to not work properly (citation needed)&lt;br /&gt;
;objectTemplate.ammo.magSize int -&amp;gt; int&lt;br /&gt;
:Weapons .tweak&lt;br /&gt;
:&amp;quot;Number of bullets in a magazine. -1 for Infinity, maximum non-infinity allowed is 1023, any more will cause a crash. Bug: In the Battlerecorder, it doesn&#039;t pickup a gun that fires for 10 seconds on with 1000 bullets for some reason. Tested with the L4Bren on Auto.&amp;quot;&lt;br /&gt;
;objectTemplate.ammo.minimumTimeUntilReload float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.nrOfMags int -&amp;gt; int&lt;br /&gt;
:Number of magazines allowed for a weapon.&lt;br /&gt;
;objectTemplate.ammo.onlyActiveWhileFiring bool -&amp;gt; bool&lt;br /&gt;
:Prevents the Medibag and Ammo Bag from being thrown when firing. Used in PR&#039;s Medikit and Repair Bag&lt;br /&gt;
;objectTemplate.ammo.reloadAmount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.reloadTime float -&amp;gt; float&lt;br /&gt;
:Time in seconds of how long it takes to reload. Must be the same number as the reload animation time from AnimationSystem1p.inc to sync properly.&lt;br /&gt;
;objectTemplate.ammo.reloadWithoutPlayer bool -&amp;gt; bool&lt;br /&gt;
:&amp;quot;If enabled, weapon will autoreload regardless client settings for autoreload. 1(Enabled), 0(Disabled)&amp;quot;&lt;br /&gt;
;objectTemplate.ammo.replenishingType ReplenishingType -&amp;gt; ReplenishingType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ammo.toggleWhenNoAmmo bool -&amp;gt; bool&lt;br /&gt;
:Weapons .tweak&lt;br /&gt;
:&amp;quot;When no ammo, switch to previous selected weapon.&amp;quot;&lt;br /&gt;
;objectTemplate.ammoStorageSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.anchor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.anchorOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotation int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotationIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotationRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotationReverse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVRotationScale Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationMax Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationReverse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationSize Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animatedUVTranslationSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animation.animateOnZoom bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animation.loopingFire float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animation.shiftDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animation.useShiftAnimation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationFrameCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationFrameCountX int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationFrameHeight int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationFrameWidth int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationPlayOnce bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationRandomizedStartFrame bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationSystem1P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.animationSystem3P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.accelerationFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.damping float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.maxSwayAngle Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.skeleton std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.speedFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.antenna.stiffness float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.areaValueTeam1 U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.areaValueTeam2 U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armingDelay float -&amp;gt; float&lt;br /&gt;
:Weapons .tweak&lt;br /&gt;
:Delay in seconds until the collision event is active. Used in the tripflares which has a 15 second delay before passing through it will trigger the collision. Also could just be the seconds before the grenade explodes though not sure&lt;br /&gt;
;objectTemplate.armor.addArmorEffect int std::string Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.addArmorEffectSpectacular int std::string Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.addWreckArmorEffect int std::string Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.alignLastEffectToHitDirection bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.angleMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.attackDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.canBeDestroyed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.canBeRepairedWhenWreck bool -&amp;gt; bool&lt;br /&gt;
:&amp;quot;Vehicles .tweak, Weapons .tweak&amp;quot;&lt;br /&gt;
:&amp;quot;Used in the AA Ship Boats. Basically, when it&#039;s a wreck, it can be repaired back to life.&amp;quot;&lt;br /&gt;
;objectTemplate.armor.criticalDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.deepWaterDamageDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.deepWaterLevel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.defaultMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.destroyOnSpectacularDeath bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionForceMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionForceMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.explosionRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hideChildrenOnSpectacularDeath bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hitPoints float -&amp;gt; float&lt;br /&gt;
:Vehicles .tweak&lt;br /&gt;
:The health of the vehicle. 0 = Dead. &lt;br /&gt;
;objectTemplate.armor.hpLostWhileCriticalDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hpLostWhileInDeepWater float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hpLostWhileInWater float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.hpLostWhileUpSideDown float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.maxHitPoints float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.showDamageAsDirt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.speedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.timeToStayAfterDestroyed float -&amp;gt; float&lt;br /&gt;
:Vehicles .tweak&lt;br /&gt;
:&amp;quot;Interesting code. If set to PR&#039;s Jets and Helis, when they explode from wreck, the non-flaming wreck model stays though it shows in the minimap as an occupied vehicle.&amp;quot;&lt;br /&gt;
;objectTemplate.armor.timeToStayAsWreck float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.useMMOnDeath bool -&amp;gt; bool&lt;br /&gt;
:Use the Material Manager on Death. Not too sure about this one&lt;br /&gt;
;objectTemplate.armor.waterDamageDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.waterLevel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionForceMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionForceMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckExplosionRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.armor.wreckHitPoints float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.artPos bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.attachClimberRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.attachToEventObject bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.attackSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.attenuationRange1 float -&amp;gt; float&lt;br /&gt;
:Used in .tweak Effect Files for Lightsource Templates&lt;br /&gt;
:&amp;quot;How wide you want the lightsource effect to be, used with ObjectTemplate.isDynamic 1. Range1 = X, which is the horizontal range. Max is 100, more than that will trigger an error message&amp;quot;&lt;br /&gt;
;objectTemplate.attenuationRange2 float -&amp;gt; float&lt;br /&gt;
:Used in .tweak Effect Files for Lightsource Templates&lt;br /&gt;
:&amp;quot;The height at which the lightsource will begin to drop. Range2 = Y, which is the vertical range. Max is 100 like above. To know the difference, set one to 50 and one to 100 and count the number of seconds the lightsource effect will last and compare.&amp;quot;&lt;br /&gt;
;objectTemplate.audio.newStyleAudio bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.audio.transformationRelativeRoot bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.audioReset -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.automaticPitchStabilization bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.automaticReset bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.automaticYawStabilization bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.autoUseAbility int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.averageTimeBetweenTests float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.awakeTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.blendMode std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.blockInputOnRotBundle std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.blurryVisionHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.blurryVisionTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.boneName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.bounceDamping float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.bounceLength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.bounceSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.bounceStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.boundingRadiusModifierWhenOccupied float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraShakeMaxSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraShakeSensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraShakeStartSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayDofMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayDofMin float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayRightMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayRightMin float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwayRodLength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwaySensitivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwaySpringDamping float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cameraSwaySpringStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.canFireGuiIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cannotFireGuiIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cannotFireTimer float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.canPickup bool -&amp;gt; bool&lt;br /&gt;
:Weapons&lt;br /&gt;
:&amp;quot;Allows explosives to be picked up using the wrench/repair object, example: at_mine&amp;quot;&lt;br /&gt;
;objectTemplate.canReverse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.capMaxSpeed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.castsDynamicShadow bool -&amp;gt; bool&lt;br /&gt;
:&amp;quot;Vehicles, Weapons and Soldiers&amp;quot;&lt;br /&gt;
:Enables the rendering of shadows.&lt;br /&gt;
;objectTemplate.castsStaticShadow bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.centerOfCollisionOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.centerOfMassOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
To offset the center of mass using 0/0/0 - X/Y/Z. Setting it to X/0.5/Z will make a Logistics Truck survive a direct ram to a Van while setting to 0 makes the truck crash. Tested while holding shift.&lt;br /&gt;
;objectTemplate.chance float -&amp;gt; float&lt;br /&gt;
:AmbientObjects.con&lt;br /&gt;
:&amp;quot;Chance that the triggerable effect may play when the player steps inside the radius. 1 means it will always play, while 0 means it will never play.&amp;quot;&lt;br /&gt;
;objectTemplate.changeLodAt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.chaseAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.chaseDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.chaseOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.clearTemplateList -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.clientHitDetection bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.climbableAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.climbersAttachForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.climbingSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.clockwise bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cockpitLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cockpitLod U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cockpitSubGeom int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cockpitSubGeom U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.bouncing bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.hasCollisionEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.maxStickAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.replenishingStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.replenishingType ReplenishingType -&amp;gt; ReplenishingType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.restoreHP float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.resurrectDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.stickToStaticObjects bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.stickToTerrain bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collision.stickToVehicles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionEffectName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionGroups U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionMesh std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionMesh std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionPart int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionSpeedAlongNormal float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionSpeedAlongPlane float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.collisionStartRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.color Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.color Vec3ColorFloat -&amp;gt; Vec3ColorFloat&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.color1 Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.color2 Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.colorBlendGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneAngle1 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneAngle2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneInnerAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneOuterAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coneOuterVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.constantForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.constantRpm bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.continousRotationSpeed Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.controlPointId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ControlPointId U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.controlPointName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.controlsCategory dice::hfe::world::VehicleCategory -&amp;gt; dice::hfe::world::VehicleCategory&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coolDownPerSec float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.coolingFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.copyLinksCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.create std::string std::string -&amp;gt; IObjectTemplate*&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.createComponent std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.createdInEditor bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.createInvisible bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:Creates the object as invisible. Collisions and Functions still work. Tested on the at_mine&lt;br /&gt;
;objectTemplate.createNotInGrid bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.createVisibleInEditor bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.crewKitIndex int -&amp;gt; int&lt;br /&gt;
	:kits.con (example: gb82_pilot.con)&lt;br /&gt;
	:&amp;quot;Defines what Geom to use for the kit. Looks up the Geom1 etc in the .skinnedmesh which is located in the Meshes folder. For example&lt;br /&gt;
	: arg82/Meshes/arg82_kits1.skinnedmeshes. Open with BfMeshViewer to know what each number looks like.&amp;quot;&lt;br /&gt;
;objectTemplate.crosshairFireTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.cullRadiusScale float -&amp;gt; float&lt;br /&gt;
	:&amp;quot;Weapons&lt;br /&gt;
	: Vehicle&lt;br /&gt;
	: Statics etc&amp;quot;&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMChase bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:Used to set at what distance the object is culled from display. Each number represents a distance of 25m. For example: ObjectTemplate.cullRadiusScale 6 = VD of 150m&lt;br /&gt;
;objectTemplate.CVMExternTrace bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMFlyBy bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMFrontChase bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMInside bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMNose bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.CVMTrace bool -&amp;gt; bool&lt;br /&gt;
	:Vehicles .tweak files&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.cycles int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damagedAmbientSoundLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageForBeingOutSideWorld float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageMandownSoldiers bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageOwner bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damageWhenLost float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dampenSprintRotationalForceInAirMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dampHorizontalVel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dampHorizontalVelFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.damping float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deAcceleration Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.debugAutoRotate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.debugForceGearUp bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.decalTextureName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.decreaseAngleToZero bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.decreaseAngleToZeroSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.decreaseAngleToZeroVerticalVel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.defaultAngleOfAttack float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.defaultWeaponIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.degradeDropStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.degradeThrowStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.degradeThrowStrength2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delay RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delayBeforeCycle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delayBeforeEnd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delayBeforeStart float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.delayToUse float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.delete world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deleteComponent std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deployAnimationTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.destroyableWindowsTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.destroyOnExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.destroyWhenEmptyStorage bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonateAfterProjectileStopped bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonateAfterProjectileStoppedMinSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.allowFriendlyFireDetonation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.detectionRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.detonateDistanceToTarget float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.detonateOnWaterCollision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.effectRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.endEffectTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionConeAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionInnerConeRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionLineOfSightMinimumDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionMaterial int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionSoldierLineOfSight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionSoldierLineOfSightHealRate float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionSoldierLineOfSightTimer float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.explosionYMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMaxAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMaxHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMaxHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMaxRampTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMinAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMinHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangAdditiveGlowMinHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMaxAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMaxHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMaxHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMaxRampTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMinAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMinHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangBillboardMinHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMaxAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMaxHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMaxHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMaxRampTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMinAlpha float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMinHealTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangMotionBlurMinHoldTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.flashbangRadiusWithNightVision float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.invisibleAtEndEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.maxDepthForExplosion float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.minDetonationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.playMaterialEffectAtSurface bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.radiusDetonateWithAirVehicles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.replenishingStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.replenishingType ReplenishingType -&amp;gt; ReplenishingType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.showMineIndicationIcon bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.stopAtEndEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.timeUntilCanDetonate float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerType RadiusTriggerType -&amp;gt; RadiusTriggerType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.triggerVictimMinSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.useCollisionNormal bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.detonation.useMMOnEndEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.devModCrouch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.devModLie float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.devModStand float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.devModZoom float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.fireDevAdd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.fireDevMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.fireDevSub float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.minDev float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.miscDevAddJump float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.miscDevMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.miscDevSub float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.radius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.setFireDev float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.setMiscDev float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.setSpeedDev float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.setTurnDev float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.speedDevAddForward float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.speedDevAddStrafe float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.speedDevMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.speedDevSub float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.subProjectileDev float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.turnDevAddPitch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.turnDevAddYaw float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.turnDevMax float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.deviation.turnDevSub float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.differential float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.direction Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.directionalScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableIfEnemyInsideRadius bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableInputWhileDucking bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableSpawnPointsOnEnter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableWhenEmptyVehicle bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableWhenEmptyVehicleDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableWhenLosingControl bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.disableWhenWreck bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dismountAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dismountCheckOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.distance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.distanceCannotEnter float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.distToMinDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.distToStartLoseDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dontAllowExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dontClearTeamOnExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.drag float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;How much the drag from the body of a vehicle affects its speed. Without it&lt;br /&gt;
	: a vehicle will have an infinite top speed.&amp;quot;&lt;br /&gt;
;objectTemplate.drag RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dragModifier Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dragModifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dragOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
	:&lt;br /&gt;
	:To offset the drag using 0/0/0 - X/Y/Z&lt;br /&gt;
;objectTemplate.dragOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.drawOrder std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dropHeadwear std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.dropStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.effectChangeWaterHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.effectOnSpawn std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.effectTemplateBaseName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.elasticity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitDirectionZFromSpeedDof bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitFrequency float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitFrequencyScaleFactorLowerBound float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitPrio std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitRadius Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitRangeX RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitRangeY RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitRangeZ RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitScaleFactorUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitSpeedScaleUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitterSpeedScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitterType std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.emitTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.enabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.enemyTicketLossWhenCaptured int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.engineInfluence float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.engineName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.engineType int -&amp;gt; int&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;What kind of vehicle the engine is for. Car&lt;br /&gt;
	: tank&lt;br /&gt;
	: plane ship or helicopter.&amp;quot;&lt;br /&gt;
;objectTemplate.entryRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.events int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.exitSpeedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fadeInFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fadeOutFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.addBarrelName std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.addFireRate int -&amp;gt; void&lt;br /&gt;
	:&amp;quot;Weapons&lt;br /&gt;
	: Vehicles .tweak&amp;quot;&lt;br /&gt;
	:&amp;quot;Defines the fire mode selector. You can add three lines max of each one. 0 = Single&lt;br /&gt;
	: 1 = Burst&lt;br /&gt;
	: 2 = Auto&amp;quot;&lt;br /&gt;
;objectTemplate.fire.addTimeEvent WeaponTrigger WeaponAction float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.altFireInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
	:&lt;br /&gt;
	:Which PlayerInput map to use for the right-click function. Usually PIAlt&lt;br /&gt;
;objectTemplate.fire.batchSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.burstSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.busyUntilButtonRelease bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.detonatorObject std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.dropLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.dropWeaponAfterFiringDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.dropWeaponAfterReloadDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireInCameraDof bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireInCameraDofLocked bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireLaunchDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireLaunchDelaySoft float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.fireStartDelay RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.hideLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.hideWeaponAfterFiringDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.hideWeaponAfterReloadDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.ignoreFireButton io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.isBarrel std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.maxProjectilesInWorld int -&amp;gt; int&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;The max amount of projectiles in the weapon that can be set before the engine cleans up each one. If the limit is 10&lt;br /&gt;
	: deploying one any further will delete an existing projectile. Used for explosives&lt;br /&gt;
	: mines and maybe bullets.&amp;quot;&lt;br /&gt;
;objectTemplate.fire.onlyFireWhenProne bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Restricts the weapon to fire only when prone. Though when firing during prone&lt;br /&gt;
	: a player can then stand and run to deploy an explosive for example. FH2 uses these for the machine gunner kits&amp;quot;&lt;br /&gt;
;objectTemplate.fire.projectileStartPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
	:&lt;br /&gt;
	:Position in X/Y/Z from the crosshair or PCO from where the projectile will launch.&lt;br /&gt;
;objectTemplate.fire.projectileStartRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.pullbackTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.radioMessageDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.randomRotationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.removeBarrelName std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.roundsPerMinute int -&amp;gt; int&lt;br /&gt;
:&amp;quot;Used in GenericFirearms (Weapons, Projectiles)&amp;quot;&lt;br /&gt;
:&amp;quot;The rate of fire, measured in Rounds Per Minute (RPM). Must be dividable by 1800. Check: http://researchmaniacs.com/Math/Divisible-By/What-is-1800-divisible-by.html&amp;quot;&lt;br /&gt;
;objectTemplate.fire.showWeaponAfterReloadDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.timeToReachMaxStrengthSlow float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.toggleWeaponTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.triggerChargesTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fire.useDummyProjectiles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fixAxisSpring bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flagTemplateTeam0 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flagTemplateTeam1 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flagTemplateTeam2 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flapLift float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.flicker float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.floaterMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.floatMaxLift float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.floatMinLift float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.changePitch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.changeYaw float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.maxPitch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.maxYaw float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.follow.minDist float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.followStiffness float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.force float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.forceSustainedFire bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.forceToWaterSurface bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ForSoldierOnly bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.fov float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gasCloudDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gasCloudRadiusTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gasCloudType geom::GasCloudType -&amp;gt; geom::GasCloudType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gasMaskSprintFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearChangeTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearDown float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearDownDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearDownHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearDownSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearUp float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearUpDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearUpHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gearUpSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry.dropGeom int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry.kit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry1P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometry3P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.geometryPart int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.getHeatBarType -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.getPosition int -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.getRotation int -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.getTemplate int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.globalEffectLevel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gravity float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:Sets the gravity for the map. Can use minus values as well&lt;br /&gt;
;objectTemplate.gravityGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gravityModifier float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:Sets the gravity for the vehicle. Can use minus values as well which makes the projectile go upwards&lt;br /&gt;
;objectTemplate.gravityModifier RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.gravityModifierOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.grip PhysicsGripFlags -&amp;gt; PhysicsGripFlags&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Set only for wheels. &lt;br /&gt;
;- Roll grip for wheels that are not powered.&lt;br /&gt;
;- Engine grip for wheels that are powered.&lt;br /&gt;
;- Engine dummy grip for wheel you want to make looking like they are powered&lt;br /&gt;
	: but actually aren&#039;t.&amp;quot;&lt;br /&gt;
;objectTemplate.groundContactVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.group U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.halfVolumeDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.handleCollisionSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasAltEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasCollisionPhysics bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Check for all objects that has a collision mesh. Allows it to be hit by both bullets&lt;br /&gt;
	: players and vehicles&amp;quot;&lt;br /&gt;
;objectTemplate.HasGreyCapturingState bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasMobilePhysics bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:Check for objects and parts that can move.&lt;br /&gt;
;objectTemplate.hasOnTimeEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasOverDamage bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasPartner bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasPointPhysics bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasRelativeOffset bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasResponsePhysics bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasRestrictedExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hasRotationalPointPhysics bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.HDRIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.healSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.healStorageSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.heatAddWhenFire float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.heatIncrement float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.height float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.heightOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.altHelpSoundKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.altHelpStringKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToDistance int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpSoundKeyEnemy std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpSoundKeyFriendly std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpSoundKeyNeutral std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpStringKeyEnemy std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpStringKeyFriendly std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.closeToHelpStringKeyNeutral std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.helpSoundKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.helpStringKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.lowAmmoHelpSoundKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.lowAmmoHelpStringKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.lowArmorHelpSoundKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.helpHud.lowArmorHelpStringKey std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hideFirstPerson bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hoistFlag bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hoistMinMax Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.holdObject bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.horizontalDampAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.horizontalDampAngleFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.horizontalSpeedMagnifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.hullHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.poleVectorLeft Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.poleVectorRight Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.positionLeft Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.positionRight Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.rotationLeft Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ik.rotationRight Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inertiaModifier Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.info world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inheritHeatFromPrimary bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.initiallyWalkable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.input io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inputToPitch io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inputToRoll io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inputToYaw io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideDamageFrequency float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideDamageThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideFOV float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideStaticSunAmbientColor Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideStaticSunColor Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideStaticSunDamageColor Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.insideStaticSunDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.intensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.intensity RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.intensityAtSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.intensityOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inventorySize U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.inverseHeatBar bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.invertGear bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.invisible bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.is3dSound bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;If the .wav file is Mono&lt;br /&gt;
	: setting it to 1 will tell the engine to play it on both channels. If applied to a .wav that is Stereo&lt;br /&gt;
	: it will play on the entire map. Same with .ogg files though it&#039;s usually experiementation.&amp;quot;&lt;br /&gt;
;objectTemplate.isCounterForce bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isDestructable bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:Check only if object is a destroyable static object.&lt;br /&gt;
;objectTemplate.isDynamic bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isGasMask bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isHemisphere bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isLocalSystem bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Makes the effect follow the projectile and allows it to arch. Used for the M67 &amp;quot;&amp;quot;Zippo&amp;quot;&amp;quot; Tank Flamethrower Effect. Without it&lt;br /&gt;
	: the flame effect just shoots straight but not following the projectile&amp;quot;&lt;br /&gt;
;objectTemplate.isLooping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isNightVision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isNotSaveable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isOpenVehicle bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Allows the ragdoll to slide off when killed from a vehicle position. Used in Technicals. If this is option&lt;br /&gt;
	: the passenger animation must have a die animation specified otherwise the ragdolls will float in the air.&amp;quot;&lt;br /&gt;
;objectTemplate.isOvergrowth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isPortalPassing bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isSelectable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isSleeping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isStatic bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isStaticSystem bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isUnderwaterEffect bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.isUnstrategicControlPoint bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.itemIndex int -&amp;gt; int&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;What number in the keyboard is mapped to what weapon/tool. Max is 9&lt;br /&gt;
	: not sure about 0. Also positions the weapon icon square.&amp;quot;&lt;br /&gt;
;objectTemplate.itemType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.keepProjectiles float -&amp;gt; float&lt;br /&gt;
	:Weapons&lt;br /&gt;
	:Time to keep the projectile in the world in seconds after you or the weapon dies&lt;br /&gt;
;objectTemplate.killHeatSeekingMissile bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.kitTeam int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.kitType hfe::KitType -&amp;gt; hfe::KitType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.lesserYawAtSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.liftRegulated bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.LightAffectionFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.lightMapIntensityOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.lightType std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.linkAttachMovement float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.linkAttachTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.linkedEffectContainer std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.list std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.listenerObstruction float -&amp;gt; float&lt;br /&gt;
	:Vehicles .tweak&lt;br /&gt;
	:How muffled is the sound. Lower value is least muffled.&lt;br /&gt;
;ObjectTemplate.listTemplateClasses -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.listTemplates -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.loadAll -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.localPredictOnClient bool -&amp;gt; bool&lt;br /&gt;
	:&lt;br /&gt;
	:&amp;quot;Used with Grenades and if there&#039;s any effect&lt;br /&gt;
	: projectiles. Seems like it tells the server to predict what&#039;s going to happen. Maybe used with the Networkable Setting?&amp;quot;&lt;br /&gt;
;objectTemplate.lodDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.LodDistance std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.loopCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.looping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.loseControlWhenEnemyClose bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.loseControlWhenNotClose bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.lowSamples int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maintainCameraOnEnter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maintainCameraOnExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.manDownCameraOffsetInDof float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.manDownCameraOffsetInUp float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.mapMaterial uint std::string uint -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maskOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maskType hfe::MaskObjectType -&amp;gt; hfe::MaskObjectType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.mass float -&amp;gt; float&lt;br /&gt;
	:&amp;quot;Used in Vehicles&lt;br /&gt;
	: Deployables etc&amp;quot;&lt;br /&gt;
	:Mass is the weight of the vehicle in KG and also taking into account the GravityModifier value&lt;br /&gt;
;objectTemplate.material int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxAngleOfAttack float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxCorner Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxDistanceUnderWaterSurface float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxGasCloudRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxNrOfObjectSpawned U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxResetSpeed Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.MaxRopeLength float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:Fastropes confirmed ?!?!?!?!&lt;br /&gt;
;objectTemplate.maxRotation Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxSpawnDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxSpeed Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxTracerScaler float -&amp;gt; float&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:How long the tracer effect can be depending on projectile speed. Refs: http://www.battlefieldsingleplayer.com/forum/index.php?showtopic=8592&amp;amp;mode=threaded&amp;amp;pid=84936&lt;br /&gt;
;objectTemplate.maxTriggerDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.maxVertRegAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.MaxZiplineLength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.mediumSamples int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minCorner Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minDamage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minDistanceUnderWaterSurface float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minGasCloudRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minimapNameOffset Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minimumTimeBetweenTriggering float -&amp;gt; float&lt;br /&gt;
	:AmbientObjects.con (Map)&lt;br /&gt;
	:The time when the trigger will repeat again after entering the trigger radius. Happens after the effect plays. In seconds. Depends also on ObjectTemplate.chance&lt;br /&gt;
;objectTemplate.minNrToTakeControl U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minRotation Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minSpawnDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minTimeBetweenActivation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minTracerScaler float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minTrailVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.minYNormal float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.movementSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.movementType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.moveToWaterSurface bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.name -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nameTagOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nearCullingEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.networkableInfo std::string -&amp;gt; std::string&lt;br /&gt;
	:Networkables.con&lt;br /&gt;
	:&amp;quot;Needs to be set for objects that won&#039;t work online without them. Depends on the way it&#039;s set and if it crashes immediately&lt;br /&gt;
	: is laggy&lt;br /&gt;
	: or crashes unexpectantly&amp;quot;&lt;br /&gt;
;objectTemplate.neverDrawAs1p bool -&amp;gt; bool&lt;br /&gt;
	:&amp;quot;Vehicle&lt;br /&gt;
	: Weapons&lt;br /&gt;
	: Effects&amp;quot;&lt;br /&gt;
	:Makes the effect not draw in front of you when in 1p mode. Link: http://www.realitymod.com/forum/f388-pr-bf2-community-modding/113277-1p-animations-pcos-3.html&lt;br /&gt;
;objectTemplate.newCar2.brakeTorque float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.engineBrakeTorque float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.engineFeedbackMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.frictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.frictionTorque float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.maxRpm float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.minRpm float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.slopeTorqueMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.useClutchedTorque bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelInertia float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatDriveFrictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatFrictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatMinDynamicFriction float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatPeakAt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLatScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongDriveFrictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongFrictionMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongMinDynamicFriction float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongPeakAt float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.newCar2.wheelLongScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noEffectAtPerpSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noPassengerTimeToLive int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noPhysics bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noPropellerEffectAtSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nosePos Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.notCycledIfOccupied bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.noVertRegAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nrOfObjectToSpawn int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.nrOfRespawns int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.numberOfGears int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.NumberOfLinks int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.numNetworkedEffects int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.numPlanes int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.objectShadows bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.objectTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.onlyTakeableByTeam U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.onlyWhenOccupied bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.otherCollisionLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.overheatPenalty float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pan float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ParticleMaxSize float -&amp;gt; float&lt;br /&gt;
	:Used in Vehicle .con and .tweak files&lt;br /&gt;
	:&amp;quot;Defines what materials the vehicle should use&lt;br /&gt;
	: which references the materialdefine file. Use BfMeshViewer to find out what numbers belong to what sides.&amp;quot;&lt;br /&gt;
;objectTemplate.particleSystemTemplate std::string -&amp;gt; std::string&lt;br /&gt;
	:Same as above&lt;br /&gt;
	:Same as above&lt;br /&gt;
;objectTemplate.particleType std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pcoFlags int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pcoId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.penetrate.allowLiquidPenetration bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.penetrate.allowSolidPenetration bool -&amp;gt; bool&lt;br /&gt;
	: &lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.penetrate.neverPenetrate bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.physicsFrequency int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.physicsType PhysicsType -&amp;gt; PhysicsType&lt;br /&gt;
	:Vehicles&lt;br /&gt;
	:&amp;quot;None&#039; for no collision&lt;br /&gt;
	: &#039;Point&#039; for projectile (Ignores mesh)&lt;br /&gt;
	: &#039;Mesh&#039; if object has collision mesh&amp;quot;&lt;br /&gt;
;objectTemplate.pitch float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pitchEnvelope std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pitchOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pivotOffset Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.PivotPosition Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.playAtEventPosition bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.playAtPlayerPosition bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.portalPassingPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.poseCameraPosition int Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.position Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.positionalSpeedInDof RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.positionalSpeedInRight RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.positionalSpeedInUp RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.positionOffset Math::Vec3 -&amp;gt; Math::Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.postProcess.tvDistortionFreq float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.postProcess.tvDistortionRoll float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.postProcess.tvDistortionScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.postProcess.tvInterference float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.preCacheObject bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.preWarmTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.printScript world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectileTemplate std::string -&amp;gt; std::string&lt;br /&gt;
	:&amp;quot;In Weapons&lt;br /&gt;
	: Vehicles .tweak GenericFirearm&amp;quot;&lt;br /&gt;
	:Defines the projectile that the GenericFirearm should use. Looks for the GenericProjectile that is defined in all .tweak files. &lt;br /&gt;
;objectTemplate.projectOnHeightmap bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorApplyMask bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorAspect float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorFar float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorFov float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorNear float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.projectorTexture std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.propRotAxis int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.pureRotational bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.QualityLevel std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radialDirection float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.destroyedMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.failMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.repairedMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.spottedMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radio.useMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.radiusOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ragdollLandedDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomAgeFactor RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomColorIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomDirectionAngle Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomizeGeomPart bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRadialDirection float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRotation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRotationSpeed Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomRotationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.randomTimeToLive float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rcType RemoteControlledObjectType -&amp;gt; RemoteControlledObjectType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.readBinary std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.cameraRecoilSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.cameraRecoilSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.goBackOnRecoil bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.hasRecoilForce bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilForce float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilForceLeftRight RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilForceUp RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilGraphExponent float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilGraphFrameCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilGraphTotalMovement float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.recoilSpeedGB float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.recoil.zoomModifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.refillAmmoSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulatePitch Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulatePitchInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateRoll Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateRollInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateToLift float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateVerticalPos Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateVerticalPosInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateYaw Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.regulateYawInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
	:In the effects .tweak when creating an effect&lt;br /&gt;
	:Allows an effect template to be used with custom settings.&lt;br /&gt;
;objectTemplate.regWhenMinInput float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.relativePositionInDof RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.relativePositionInRight RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.relativePositionInUp RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.relativePositionOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rememberExcessInput bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.remoteEngineInput int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.removeTemplate int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.replaceItem std::string -&amp;gt; void&lt;br /&gt;
	:In the .con and .tweak&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.respawnDelay float -&amp;gt; float&lt;br /&gt;
	:In the .con and .tweak&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.restoreRotationOnExit bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.restoreSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.reverbLevel float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ropeScaleFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotateAsAnimatedUV bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotateAsAnimatedUVObject std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotateAsAnimatedUVReverse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotateUV bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationalForce Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationalSpeedInDof RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationalSpeedInRight RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationalSpeedInUp RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationAxle int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationSpeed Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationSpeedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.rotationSpeedModBlur float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.save world::IObjectTemplate_ptrproxy -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.saveAll -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.saveInSeparateFile bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.scale Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatAnimationSystem std::string -&amp;gt; std::string&lt;br /&gt;
	:In Vehicles .tweak&lt;br /&gt;
	:Defines the location of the .inc animation file for the seat. Example: Passenger.inc&lt;br /&gt;
;objectTemplate.seatInformation std::string Vec3 Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatLeftRotationLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatParent std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatRightRotationLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seatRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
	:In Vehicles .tweak&lt;br /&gt;
	:Allows the PCO to be rotated. Uses X/Y/Z. Relevant to Seat X Y Z Arrow. See BF2Editor Vehicle for more info. For example -10/0/0 wil rotate the player backwards.&lt;br /&gt;
;objectTemplate.secondaryProjectileTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.directionBonus float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.maxAngleLock float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.maxDistLock float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.reLockTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.targetType TargetType -&amp;gt; TargetType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.seek.trackingDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.selfLights bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.selfShadowIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.selfShadows bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setActiveTemplate int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAIEnterOnSpawn bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAllowSpawnCloseToVehicle bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAnimationFrameHeightRelative float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAnimationFrameWidthRelative float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setAxisFixation Math::Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setCollisionMesh std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setEnterOnSpawn bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setExplodePartAtDestroy bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setGearRatios float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setHasTarget bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setHealth int float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setHeatBarType heatBarType -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setMinSpawnHeight float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setNumWindows int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setObjectTemplate int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setOnlyForAI bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setOnlyForHuman bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setPosition Math::Vec3 int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setPositionalFixation Math::Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setRotation Math::Vec3 int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setScatterSpawnPositions bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSkeletonCollisionBone std::string int Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSoldierExitLocation Vec3 Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnAsParaTroper bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnDelay float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnPositionOffset Math::Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnPreventionDelay float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setSpawnRotation Math::Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setTeamGeometry int std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setToolTipType dice::hfe::world::ToolTipType -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.setVehicleType dice::hfe::world::VehicleType -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.shadowIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.shakeFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sharedStorageSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.showInFirstPerson bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.showInThirdPerson bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.showOnMinimap bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.signalTriggerId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sinkingSpeedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.size float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.size RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeModifier Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeModifierX float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeModifierY float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeModifierZ float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sizeOverTime OverTimeDistribution -&amp;gt; OverTimeDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.skeleton std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.skeleton1P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.skeleton3P std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.snapToZeroOnNoInput bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.softness float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soldierExitPosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soldierExitRotation Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sound.maxSoundsPerBurst int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sound.noisy bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundFilename std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundFilter std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundIntensityUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.soundRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.spawnDelay float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.spawnDelayAtStart bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.spawnOffset Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.speccolor Vec3ColorFloatIntensity -&amp;gt; Vec3ColorFloatIntensity&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.specialToggleWeaponInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.speed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.speedFromParticle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.speedFromPhysics bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.spinWhenNoEngineInAir float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintDissipationTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear1Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear2Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear3Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear4Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintGear5Dampen float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintLossAtJump float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintRecoverTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.sprintStaminaDissipationFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromAcceleration Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromAltitude Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromEngine Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromRotationalSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromSpeed Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeFromSpeedInDof Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeRange Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAgeUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAtCreation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startAutoRotateOnEnter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startLodPercentageOfLodDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startOnEffects int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startProbability float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startRotation RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.startTeam int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.stopOnEffects int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.stopType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.3dMapIcon int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.destroyedIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.intactIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.isOnePiece bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.part int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strategicObject.strategicObjectName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.strength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyGroupId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyGroupNeeded int int bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyValueNeededTeam1 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyValueNeededTeam2 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyValueTeam1 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supplyValueTeam2 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supportsEmitter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supportsGlow bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supportsPerPixel bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.supportsPerVertex bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.connectionEffect std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.connectionEffectOnlyWhenZoomed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.disableFireWhenActiveMissile bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.disableGuidanceOnReload bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.lockAngle float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.lockDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.loseLockDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.maxDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.maxVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.minVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.onLockChangeToWeapon bool std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.sendVehicleLockWarning bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.setTargetAtMaxDistance bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.targetInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.targetObjectTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.targetSystem TargetSystem -&amp;gt; TargetSystem&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.updateInterval float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.useCameraDirectionToTarget bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.useDynamicVelocity bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.target.velocityModifier float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.targetType TargetType -&amp;gt; TargetType&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.team int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.team U32 -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.team int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.teamChange bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.teamFromClosestCP bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.teamOnVehicle bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.template std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.templateHasBeenUsed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.textureName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.textureOffsetVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.textureTileFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.throwStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.throwStrength2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.Timeout float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToGetControl float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToLive RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToLive float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToLiveAfterDeath float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToLoseControl float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.timeToRemoveTK float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.toggleMouseLook bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.toggleWeapon bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.tolerance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.torque float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.tracerConvergeDistance float -&amp;gt; float&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:&amp;quot;At what distance the tracers (which start from the gunbarrel) and the projectile&lt;br /&gt;
	: which start from the camera&lt;br /&gt;
	: converges. Only relevant if FireInCameraDof is checked.&amp;quot;&lt;br /&gt;
;objectTemplate.tracerInterval int -&amp;gt; int&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:&amp;quot;Set one for tracer on every shot&lt;br /&gt;
	: 2 for every other and so on.&amp;quot;&lt;br /&gt;
;objectTemplate.tracerScaler float -&amp;gt; float&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:How long the tracer effect will be as default.&lt;br /&gt;
;objectTemplate.tracerSizeModifier float -&amp;gt; float&lt;br /&gt;
	:Used in Projectiles (Weapons)&lt;br /&gt;
	:How fat the tracer will be.&lt;br /&gt;
;objectTemplate.tracerTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnAcceleration float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnHighAmplitude float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnHighOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnLowAmplitude float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnLowOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trackTurnSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.trailEffectTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.Transparency RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.transparencyGraph Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.treeCollisionDiameter float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.triggerForEachActivatingPlayer bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.triggerId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.triggerRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.turnVelocity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.type world::IObjectTemplate_ptrproxy -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.type int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleFlightHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleSampleResolution float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.uavVehicleTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.unableToChangeTeam bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.unlockIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.unlockLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.update world::IObjectTemplate_ptrproxy -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ObjectTemplate.updateAll -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.upDropBoost float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.upThrowBoost float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.upThrowBoost2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useAbsoluteDirection bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useButtonRadius float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useCameraOrientation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.usedByAi bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useDeAcceleration bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.usedOnTransparentMaterials bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.usedOnTransparentSurface bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useGeomPart int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.useProjectileCamera bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleCameraShake CameraShakeTriggers -&amp;gt; CameraShakeTriggers&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleCategory dice::hfe::world::VehicleCategory -&amp;gt; dice::hfe::world::VehicleCategory&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleFov float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.AbilityIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.addAbilityIcon std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.addShowOnCamMode int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.addVehicleIcon std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.disableOnSprint bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.displaySelectionOnEnter bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.enablePostProcessingOnGuiIndex bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.getShowOnCamMode int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.guiIndex int -&amp;gt; int&lt;br /&gt;
	:Vehicles and Weapons .tweak&lt;br /&gt;
	:Defines the Vehicle General User Inferface Index to use like the Blackhawk green HUD. Gui Index is located in the .cons of menu\HUD\HudSetup\Vehicles&lt;br /&gt;
;objectTemplate.vehicleHud.hasTurretIcon bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.hudName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.injurySound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.isCoDriver bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.maxClimbSpeed int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.miniMapIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.miniMapIconLeaderSize std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.miniMapIconSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.pantingSound std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.showCrossHair bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.showInfo bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.showOnCamMode int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.spottedIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.spottedIconSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.standardHelpEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.typeIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.useChildHud bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.usePlayerIcon bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.useSelectionIcons bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.useVehicleCommRose bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.vehicleIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.vehicleIconPos Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.vehicleHud.vehicleType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.velocity float -&amp;gt; float&lt;br /&gt;
	:&amp;quot;Used in GenericFirearms (Weapons&lt;br /&gt;
	: Projectiles)&amp;quot;&lt;br /&gt;
	:&amp;quot;The speed of the projectile&lt;br /&gt;
	: measured in Rate of Fire (ROF). Lower ROF are affected by gravity/bullet drop while higher ones fire with lower bullet drop&amp;quot;&lt;br /&gt;
;objectTemplate.visibleOn3dMap bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.volume float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:The loudness of the sound.&lt;br /&gt;
;objectTemplate.volumeEnvelope std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.volumeGroup int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.warningHud.firstWarningSound std::string -&amp;gt; std::string&lt;br /&gt;
	:Used in Vehicle .tweak&lt;br /&gt;
	:Defines the 1st warning sound when getting locked onto. Uses the file path pointing to a .wav or an .ogg file along with usual sound configuration code. &#039;Beep Beep Beep&#039;&lt;br /&gt;
;objectTemplate.warningHud.secondWarningSound std::string -&amp;gt; std::string&lt;br /&gt;
	:Used in Vehicle .tweak&lt;br /&gt;
	:Defines the 2nd warning sound when getting locked onto. Uses the file path pointing to a .wav or an .ogg file along with usual sound configuration code. &#039;Beeeeeeeeeeep&#039;&lt;br /&gt;
;objectTemplate.warningHud.warningIcon std::string -&amp;gt; std::string&lt;br /&gt;
	:Used in Vehicle .tweak&lt;br /&gt;
	:Defines the location of the warning icon. Example: ObjectTemplate.WarningHud.warningIcon Ingame\GeneralIcons\Action_Icons\mylaserlockicon.tga&lt;br /&gt;
;objectTemplate.warningHud.warningType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.waterHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.waterSurfaceOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.addShowOnCamMode int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.altCrosshairIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.altGuiIndex int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.altWeaponIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.ammoBarBackIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.ammoBarFrontIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.ammoIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.clipIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.crosshairIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.crosshairIconSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.deviationFactor int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.disableOnSprint bool -&amp;gt; bool&lt;br /&gt;
	:Used in Weapons/Vehicles .tweak&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.weaponHud.displaySelectOnActivation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.enableMouse bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.enablePostProcessingOnGuiIndex int -&amp;gt; int&lt;br /&gt;
	:Used in Weapons/Vehicles .tweak&lt;br /&gt;
	:Makes the GuiIndex have a black and white effect. Use with all objectTemplate.postProcess.tv code to adjust the TV effect&lt;br /&gt;
;objectTemplate.weaponHud.firstLockSound std::string -&amp;gt; std::string&lt;br /&gt;
	:&lt;br /&gt;
	:The first lock sound that plays when there is a lock in progress on the jet&lt;br /&gt;
;objectTemplate.weaponHud.getShowOnCamMode int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.guiIndex int -&amp;gt; int&lt;br /&gt;
	:&amp;quot;Used in Weapons&lt;br /&gt;
	: Vehicle .tweak&amp;quot;&lt;br /&gt;
	:Defines the Weapon General User Inferface Index to use like the repair bar. Gui Index is located in the .cons of menu\HUD\HudSetup\Vehicles&lt;br /&gt;
;objectTemplate.weaponHud.hasFireRate bool -&amp;gt; bool&lt;br /&gt;
	:Used in Weapons .tweak&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.weaponHud.hasMag bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.hasRangeFinder bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.hudName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.maxVisualDeviation int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.minVisualDeviation int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.overheatSound std::string -&amp;gt; std::string&lt;br /&gt;
	:&amp;quot;Used in Weapons&lt;br /&gt;
	: Vehicle .tweak&amp;quot;&lt;br /&gt;
	:&amp;quot;For the overheat sound. Adding it makes the engine reference the string defined with MenuSound.con. Usually it&#039;s S_Weapon_Handheld_Overheat&lt;br /&gt;
	: S_Vehicle_Handheld_Overheat but can be anything and custom ones can be used if needed&amp;quot;&lt;br /&gt;
;objectTemplate.weaponHud.secondLockSound std::string -&amp;gt; std::string&lt;br /&gt;
	:&amp;quot;Used in Weapons&lt;br /&gt;
	: Vehicle .tweak&amp;quot;&lt;br /&gt;
	:The second lock sound that plays when the lock has been set&lt;br /&gt;
;objectTemplate.weaponHud.selectIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.showAmmo bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.ShowClips bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.showInfo bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.showOnCamMode int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.specialAbilityIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.switchGuiOnCamera bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponHud.weaponIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.weaponType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.widnBlowTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windAffectionFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windAgingFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windBlowTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windFalloff float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windIsDynamic bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windowSizeVector Vec3 -&amp;gt; Vec3&lt;br /&gt;
	:&amp;quot;Used in Projectiles&lt;br /&gt;
	: Vehicles&lt;br /&gt;
	: Effect&amp;quot;&lt;br /&gt;
	:&lt;br /&gt;
;objectTemplate.windRadialFalloff float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windSpeedAgeDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.windType std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.wingLift float -&amp;gt; float&lt;br /&gt;
	:&amp;quot;Planes&lt;br /&gt;
	: Helis&amp;quot;&lt;br /&gt;
	:How much speed will affect object lifting on control surface.&lt;br /&gt;
;objectTemplate.wingToRegulatorRatio float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.workOnSoldiers bool -&amp;gt; bool&lt;br /&gt;
	:Supply Objects&lt;br /&gt;
	:Allows the soldier to receive HP/Ammo depending on the type of supply set&lt;br /&gt;
;objectTemplate.workOnVehicles bool -&amp;gt; bool&lt;br /&gt;
	:Supply Objects&lt;br /&gt;
	:Allows the vehicle to receive HP/Ammo depending on the type of supply set&lt;br /&gt;
;objectTemplate.worldFOV float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.writeBinary std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.writeZ bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.yawSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.ziplineSoldierHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.addZoomFactor float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.allowUntoggledFire bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.changeCameraId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.changeCameraViewMode CameraViewMode -&amp;gt; CameraViewMode&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.changeFovDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.disableMuzzleWhenZoomed bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.mouseSpeedMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.onlyZoomWhenProne bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.startCameraId int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.startCameraViewMode CameraViewMode -&amp;gt; CameraViewMode&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.useProjectileCamera bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.zoomDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.zoomInput io::PlayerInputMap -&amp;gt; io::PlayerInputMap&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.zoomLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zoom.zoomOutAfterFire bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zRotation RandomDistribution -&amp;gt; RandomDistribution&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectTemplate.zRotationSnap float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;object.togglePause -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== overgrowth ==&lt;br /&gt;
;overgrowth.addMaterial std::string uint -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.addType std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.closeDistFade float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.closeDistPercentage float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.editorEnable float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.exportToTerrainTexture -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.generateAll -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.generateAtlas -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getActiveMaterialName -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getGeometryList -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getLodDistance -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getMaterialList -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.getTypeList -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.lodTimer float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.paintMaterial float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.paintShadowmap float float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.path std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.postLoad -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.preLoad -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.removeActiveMaterial -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.removeActiveType -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.save -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.setActiveMaterial std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.setActiveType std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.density float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.geometry std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.minRadiusToOthers float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.minRadiusToSame float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.normalScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.randomScale Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowthType.rotationScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.viewDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;overgrowth.viewDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;Particles.enableOldParticles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Particles.enableParticles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== particleSystemManager ==&lt;br /&gt;
;particleSystemManager.affectedByWind bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.drawBoundingBoxEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.drawStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.generateTexture -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.overdrawScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.particleSystemShaderQuality uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.qualityLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.resetStats -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.startFadePercentageOfViewDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.startLodPercentageOfLodDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;particleSystemManager.viewDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;physics.airDensityZeroAtHeight float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;physics.gravity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;physics.listProperties -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;physics.wind Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
== Player ==&lt;br /&gt;
;Player.active IPlayer* -&amp;gt; IPlayer*&lt;br /&gt;
: Unknow&lt;br /&gt;
;Player.create std::string std::string -&amp;gt; IPlayer*&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.isAi bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.isAlive bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.isNetwork bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.kit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Player.list -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Player.listPlayerClasses -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.moveTo Vec3 -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.name -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.pickup std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Player.saveAll std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.setFov float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.setVehicleWithInputId IObject_ptrproxy int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.spawnGroup int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.team int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;player.vehicle IObject_ptrproxy -&amp;gt; IObject_ptrproxy&lt;br /&gt;
: Unknow&lt;br /&gt;
;portal.debugLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;portal.showStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== profile ==&lt;br /&gt;
;profile.activateCharacterProfile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.activatePlayerProfile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.activeCharacterProfile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.activeMod std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.activePlayerProfile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.addCharacterProfile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.addModSetting std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.applySettings -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.createPlayerProfile std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.defaultKit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.getIndexForKit std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.playerName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.rank int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.setIndexForKit std::string int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.tagIcon std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.tagText std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;profile.visualUnlockLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
== pythonHost ==&lt;br /&gt;
;pythonHost.reinitialize -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;pythonHost.sendCommand std::string std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== radio ==&lt;br /&gt;
;radio.answer bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.callForAmmo -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.callForMedic -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.callForRepair -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radioInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;radioInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.sendKitMessage -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.sendSpottedMessage bool world::VehicleType -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radio.setSpottedMenuActive -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;radioVehicleInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;radioVehicleInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.active bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addAngularConstraint int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addBone int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addCapsuleCollision int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addConstraint int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addDihedralAngleConstraint int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addDistanceLessThanConstraint int int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addForce int Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addJointConstraint int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.addParticle int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.drawConstraints bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.gravity float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.linkMode int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.lockBone int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.removeConstraint int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.reset -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.save -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.setParticleCollisionCriteria float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.skeleton std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragDoll.toSkeleton int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
 == renderer ==&lt;br /&gt;
;renderer.allowA2M bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.allowOnDemandPostProcessing bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.ambientIlluminationRange Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.ambientSun bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.clearColor BaseVector3&amp;lt;int&amp;gt; -&amp;gt; BaseVector3&amp;lt;int&amp;gt;&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.coronaFadeSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.disableFadeOnRoads bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.distanceCullConst float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.distanceCullConstPCO float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.divAccum float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.draw1pMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.draw1pZOnly bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawBundledMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawConsole bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawDeferred bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawFps int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawGraphs bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawHud bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawNametags bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawObjects bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawOvergrowth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawParticles bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawPostProduction bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawRoads bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawSkinnedMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawSkyDome bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawStaticMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawSunFlare bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawTerrain bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawTrees bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawUndergrowth bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.drawWatermark bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.dumpScreen std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.enableHWOcclusion bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRBlendingFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRBlendingTimeDark double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRBlendingTimeLight double -&amp;gt; double&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDREnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRHorizWeights std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRPassGate float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRVertWeights std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fakeHDRWeights std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;Renderer.fieldOfView1p float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fogColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.fogStartEndAndBase Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.forceBundledMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.forceSkinnedMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.forceStaticMeshMaxPolyPercentage int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.forceStaticMeshSkipLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.getQualityLodDistanceBM int -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.getQualityLodDistanceSKM int -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.getQualityLodDistanceSTM int -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.globalBundleMeshLodDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.globalSkinnedMeshLodDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.globalStaticMeshLodDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.glowEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.glowStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.isNightMap bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.lightBlurStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.listScreenModes -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.makeTopWorldScreen U32 std::string Vec3 -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.minCullDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightMode uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightVisionEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightVisionGradient std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightVisionMaxPower float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.nightVisionRegenRPS float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.occlusionObjectsMaxFrames int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.occlusionTerrainMaxFrames int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.presentAsync bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.presentSpinIfBusy bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.qualityLodEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.renderAheadLimit uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.roadDepthBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.roadLodDistMod float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.roadSlopeScaleDepthBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.screenDumpPath std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.screenMode int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.setQualityLodDistanceALL int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.setQualityLodDistanceBM int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.setQualityLodDistanceSKM int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.setQualityLodDistanceSTM int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;Renderer.soldier.debugCharacterMode int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;Renderer.soldier.debugDrawCollision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Renderer.soldier.debugDrawSkeletons bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.stopRenderMovie -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tearGasStrength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvAmbient float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvGranularity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tvInterference float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tweakFarPlane1p float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tweakNearPlane float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.tweakNearPlane1p float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.vsync bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterAnimSpeed float -&amp;gt; float&lt;br /&gt;
	:&lt;br /&gt;
	:Sets the water speed.&lt;br /&gt;
;renderer.waterColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterFogColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterFogStartEndAndBase Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.watermarkFilename std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.watermarkPos Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.watermarkScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterNormalMap std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterScroll Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterSpecularColor Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.waterSpecularPower float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.xpPerfFlags int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;renderer.xpPerfFlags2 int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.addNick std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.clear -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.configFile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.list -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.load -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.removeNick std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;reservedSlots.save -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== scoreboard==&lt;br /&gt;
;scoreboard.setToggleShow int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreboard.singleClick int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
== scoreManager ==&lt;br /&gt;
;scoreManager.ammo int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.ammoScoreLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.assistKill int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.controlPointCapture int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.death int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.driverPassenger int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.flagCapture int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.flagReturn int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.heal int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.healScoreLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.inDirectKill int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.kill int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.objective int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.repair int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.repairScoreLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.soldierRevive int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.teamDamage int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.teamDamageLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.teamVehicleDamage int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.teamVehicleDamageLimit float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.TK int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;scoreManager.vehicleRevive int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.boolGet std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.boolSet std::string bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.floatGet std::string -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.floatSet std::string float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.intGet std::string -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.intSet std::string int -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.stringGet std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.stringSet std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.U32Get std::string -&amp;gt; U32&lt;br /&gt;
: Unknow&lt;br /&gt;
;SettingsManager.U32Set std::string U32 -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== shadermanager ==&lt;br /&gt;
;shadermanager.byPassDiceStates bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileDebugTerrain bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compilePartialPrecisionTypes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileSkipOptimizations bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileUsePartialPrecision bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileUsePreShaders bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileUsePS2A bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.compileWithDebug bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.listEffects -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.reloadAllEffects -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadermanager.reloadEffect std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.allowAlphaShadows bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.alphaShadowThreshold float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.dropShadowClipHeightOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.dynamic1pShadowsEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.dynamicShadowsEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.dynamicStaticMeshShadowsEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.lightmapIntensityBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.occludedSkyNightIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadow80Line float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowFromBundledMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowFromSkinnedMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowFromStaticMeshLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowFromTerrainLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowIntensityBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapBitDepth int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapDepthBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapDepthDistance float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapIncludeStaticMeshes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapObjectSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMapSlopeBias float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowMergeDynamicShadowFrustums bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowOccluderOversizeFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowOverrideQuality int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMFovY float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMUseSlideback bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMUseUnitCubeClipping bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMZFarOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMZMinInfinityZ float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowPSMZNearOffset float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowShowFrustums bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowSunExtrusionLength float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowSunHeightOverFade Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowSunScalePower float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowTestBelowRayLenght float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowTSMFocus float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowUpdateFactor float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowUpdatesEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.shadowUseSweepTest bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.useLSSMOptimizations bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;shadowManager.usePSMOptimizations bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;skinnedMeshRenderer.shaderQuality ShaderQuality -&amp;gt; ShaderQuality&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.cloudLerpFactors Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.cloudTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.cloudTexture std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.cloudTexture2 std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.domePosition Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.domeRotation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.domeSize float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.fadeCloudsDistances Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareFadeAdd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareFadeMul float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.flareTexture std::string -&amp;gt; std::string&lt;br /&gt;
	:Map: Sky.con&lt;br /&gt;
	:&amp;quot;The texture of the sunflare/actual sunflare. When switching to a map with no sunflare&lt;br /&gt;
	: it will still use the previous maps one. So for maps like Fallujah West/Saaremaa&lt;br /&gt;
	: an invisible texture needs to be defined instead to prevent the sunflare bug. Usage: Skydome.flareTexture common\textures\sunflare\Sunglow_no&amp;quot;&lt;br /&gt;
;skyDome.hasCloudLayer bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.hasCloudLayer2 bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.lightingBlend float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.lightingColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.scrollDirection Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.scrollDirection2 Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.skyTemplate std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;skyDome.skyTexture std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.addMenuSound std::string std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.addSound std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.addTrigger std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.dopplerEffect float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.getAllSoundTemplates -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.getProperty std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.getVolumeForGroup int -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.initialize int std::string int -&amp;gt; SoundInitResult&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.interactiveMode bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.listenerReverb float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.loadMusic std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.masterVolume float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.playMusic -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.playSound std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.removeAllTriggers -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.setProperty std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.setReverb std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.setVolumeForGroup int float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.showSoundSources bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.showStats bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;Sound.startEngines bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.stopMusic float -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.stopSound std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.tinnitusSetup std::string float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.tweakTemplate std::string float float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound.windSetup std::string float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.commitSuicide -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.listSpawnGroups -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.selectNextUnlock int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.setPlayerKit int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.setPlayerTeam int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnManager.toggleMembers bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeaderInterface.selectOrder std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeaderInterface.setStringMap std::string std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeader.sendOrder int bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeader.sendRequest int bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadLeader.sendRequestForOrder -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squad.leaveSquad -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.changeSquadName std::string bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.joinSquad int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.leaveSquad int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.listSquadMembers int int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.listSquads int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.makeMeCommander -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadManager.popNextCommanderApplicant int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.applyInviteList -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.createSquad -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.doubleClickInvite -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.doubleClickNew -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.setShowInviteList bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.setSquadCreateSelect bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.setSquadNameSelect -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.singleClickInvite -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.singleClickNew -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;squadMenu.squadCreateLockToggle -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.allowAnisoFiltering bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.convertLightmapName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableLightIndexes bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableLightMapAtlas bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableNewLightmapNames bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableRendering bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.enableUnifiedIndexlist bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.loadAllLightMapFiles std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.loadAllLightMapFilesDLL std::string std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.materialCullingEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.maxLightMappedLod int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;staticMeshRenderer.noLods bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
== sv ==&lt;br /&gt;
;sv.adminScript std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.allowExternalViews bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.allowFreeCam bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.allowNATNegotiation bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.allowNoseCam bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.autoBalanceTeam bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.autoDemoHook std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.autoRecord bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.communityLogoURL std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.configFile std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.coopBotCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.coopBotDifficulty float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.coopBotRatio float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.demoDownloadURL std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.demoIndexURL std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.demoQuality int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.endDelay int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.endOfRoundDelay int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.friendlyFireWithMines bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.gameSpyPort int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.hitIndicator bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.interfaceIP std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.internet bool -&amp;gt; std::string&lt;br /&gt;
	:&lt;br /&gt;
	:1 = Adds the server to the server list. Tested this with the PRBF2_repo_w32ded.exe shortcut tool&lt;br /&gt;
;sv.load -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.manDownTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.maxConnectionType ConnectionType -&amp;gt; ConnectionType&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.maxPlayers int -&amp;gt; std::string&lt;br /&gt;
	:&lt;br /&gt;
	:Increases the player number count in the W32 Dedicated to the number specified. Effect unknown. Maximum allowed is 100 though not sure if it&#039;s a BF2 thing or not&lt;br /&gt;
;sv.minPlayersForVoting int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.notEnoughPlayersRestartDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.noVehicles float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.numPlayersNeededToStart int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.numReservedSlots int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.password std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.punkBuster bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.radioBlockedDurationTime int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.radioMaxSpamFlagCount int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.ranked bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.roundsPerMap int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.save -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.scoreLimit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.serverIP std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.serverName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.serverPort int -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.soldierFriendlyFire int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.soldierSplashFriendlyFire int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.spawnTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.sponsorLogoURL std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.sponsorText std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.startDelay int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.teamRatioPercent float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.teamVoteOnly bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.ticketRatio int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.timeBeforeRestartMap float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.timeLimit int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.tkNumPunishToKick int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.tkPunishByDefault bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.tkPunishEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.useGlobalRank bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.useGlobalUnlocks bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.vehicleFriendlyFire int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.vehicleSplashFriendlyFire int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipBFClientPort int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipBFServerPort int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipQuality int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipServerPort int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipServerRemote bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipServerRemoteIP std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voipSharedPassword std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.voteTime int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.votingEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;sv.welcomeMessage std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.addAward int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.addCredit std::string int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.addGameMode std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.addRank int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.enableScroller bool -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.loadImage std::string -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.serverBrowserFrameSkips int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.setScrollerRect int int int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.setScrollFadeSpeed int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;swiffHost.setScrollSpeed float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.ambientColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.create std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.baseCellSize int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.checkInside bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.cullerType int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.detailCullMaxLevel int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod0SwitchStart float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod0SwitchStop float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod1SwitchStart float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod1SwitchStop float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lod2Start float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.lodSwitchDistance int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.updateLodLevel bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrainCuller.useStitchedLods bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.forceRenderStyle int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.GIColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.GIColorHigh Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.GIColorLow Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.init -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.load std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.refreshTerrainSampling -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.sunColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.terrainWaterColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterAlphaAdd float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterAlphaHeightMul float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterAnimSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterColor Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterNormalMap std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterQuality int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterReflectivity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterScroll Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterSpecularColor Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterSpecularPower float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterSunIntensity float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;terrain.waterTransparency float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;texturemanager.customTextureSuffix std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.dynamicShadowsEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.enabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.load std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.reload -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.simpleShaderEnable bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.test uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.test2 float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.viewDistanceFade float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.viewDistanceScale float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;undergrowth.zPassPatchCount uint -&amp;gt; uint&lt;br /&gt;
: Unknow&lt;br /&gt;
;Vars.set std::string std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setAntialiasing std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setDynamicLightingQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setDynamicShadowsQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setEffectsQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setGeometryQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setLightingQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setResolution std::string -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setTerrainQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setTextureFilteringQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setTextureQuality int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setVideoOptionScheme int -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;videoSettings.setViewDistanceScale float -&amp;gt; void&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.doubleStrikeMaxDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.doubleStrikeMinDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.doubleStrikeProbability float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.inFadeSegments float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningBlendOutTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningColor Vec4 -&amp;gt; Vec4&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningDuration float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningGroundPenetration float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningMaxInterval float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningMaxPos Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningMinInterval float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningMinPos Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningPertubation float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningScale Vec2 -&amp;gt; Vec2&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningSegments int -&amp;gt; int&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningSFXDelay float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.lightningSFXName std::string -&amp;gt; std::string&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.outFadeSegments float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.skyBlendOutTime float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;weatherManager.stormEnabled bool -&amp;gt; bool&lt;br /&gt;
: Unknow&lt;br /&gt;
;windManager.globalWindDirection Vec3 -&amp;gt; Vec3&lt;br /&gt;
: Unknow&lt;br /&gt;
;windManager.globalWindSpeed float -&amp;gt; float&lt;br /&gt;
: Unknow&lt;br /&gt;
;&lt;br /&gt;
: Unknow&lt;br /&gt;
;All Vars.Set Codes&lt;br /&gt;
	:Usage&lt;br /&gt;
	:Description&lt;br /&gt;
;EngineRunningTimer 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim-soldier-1p-speed-crouch 1.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim-soldier-1p-speed-prone 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim-soldier-spring-clamp 0.001000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim-soldier-spring-zoom-factor 6.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_offsetBackwardTime 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playCameraAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playSoldierAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playSoldierPostAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playVehicleAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_playWeaponAnimations 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_skipSync 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_smoothSet 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startJumpAtSpeed 2.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startLandAtHeight 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startLandAtSpeed -0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startLeftOffset 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_startRightOffset 0.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;anim_test 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;armor-invunerable-time 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;armor-invunerable-time-afterwreck 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;armor-max-soldier-wrecktime 60.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;armor-water-safetycheck-time 2.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cFric 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cRest 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-dist 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-fast 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-interpolate-attachobject 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-normal 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-slow 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam-stiffness 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;cam_use_acc 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-check-closevehicle-freq 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-expshake-amp 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-expshake-freq 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-expshake-insidevehicle-mod 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-expshake-time 0.400000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-movement-speed-on-crouch 0.150000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-movement-speed-on-prone 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-movement-speed-on-stand 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-recoil-amplitude 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-recoil-speedmod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-recoil-type 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-amp 2.0&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-amplitude 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-distance 7.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-freq 10.0&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-frequency 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-shake-time 0.2&lt;br /&gt;
: Unknow&lt;br /&gt;
;camera-surface-snap-offset 0.090000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-cull-sphere-obb 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-depth 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-cyl 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-int 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-line-width 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-lines 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-point-physics-radius 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-soldier 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-draw-tested_faces 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-dump-all-tests 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-edge 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-edge-limit 0.866000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-forceOff-debugmeshes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-load-debugmeshes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-normal-limit 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-obb-cull-mode 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-obb-cull-radius 0.577350&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-obb-cull-vertex-limit 10&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-collision-adjust-mod 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-collision-test-count 8&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-collision-test-count-start-backAt 3&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-collision-test-radius-mod 0.999000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-crouch-height 1.400000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-crush-depth 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-debug-proj-hit 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-extend-ray 0.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-overrun-impact-mod 2.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-pivot-height 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-prone-height 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-radius 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-soldier-stand-height 1.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-static-vertex-limit 20&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-use-cyl 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-use-cyl-normal 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-use-face 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-use-fast-sphere-at-length 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;coll-vel-dot-norm 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-debug-default-terrain 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-impact-speed-limit 4.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-skip-multcolls 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-skip-multcolls-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-skip-multcolls-th 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-test-lod-distance-factor 0.060000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-test-lod-min-distance 25.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-test-projectile-lod-distance-factor 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-use-cubic-speedmod 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;collision-use-mod-on-soldier 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;conn-packetsize-override 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;damage-angle-mod-choke 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;deathcam-terrainoffset 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;debug-draw-test-ray 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;debug-engine 0 bool -&amp;gt; bool&lt;br /&gt;
	:Activate in Console in Debugger&lt;br /&gt;
	:&amp;quot;Shows the RPM&lt;br /&gt;
	: Speed&lt;br /&gt;
	: Acceleration in a 3d text. May need !restart to work and is somewhat buggy&amp;quot;&lt;br /&gt;
;debug-outputNewObject 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;debug-spring 0 bool -&amp;gt; bool&lt;br /&gt;
	:Activate in Console in Debugger and normal&lt;br /&gt;
	:&amp;quot;Shows lines when approaching a vehicle. You can see what direction the vehicle will go when turning&lt;br /&gt;
	: and has a bunch of other information regarding wheels&amp;quot;&lt;br /&gt;
;demo-cam-360-capture 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-360-capture-move 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-mouse-wheel-scale 0.850000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-offset 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-offset-min 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-offset-slow 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-cam-offset-speed 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-fspeed 100.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;demo-slomo-cam 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;detonation-collface-offset 0.070000&lt;br /&gt;
: Unknow&lt;br /&gt;
;detonation-collface-offset-speedmod 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;detonation-collface-offset-speedmod-max 500.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-material-tweak 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-amplitude-first 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-amplitude-last 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-frequency-first 80.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-frequency-last 35.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-time-first 0.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-audio-sway-time-last 0.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-inertia 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-inertia2 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-inertia3 0.960000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-slope-no-gear-up-limit 0.174000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-slope-torque-mod-1st-gear 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;engine-sound-smooth-time 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;event-delay 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;event-delay-ticks 32&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-insidevehicle-mod 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-maxdamage 150.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-maxforce 20.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-mod 4.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-camshake-ownvehicle-mod 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-hotspot 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-hotspot-ray 0.020000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-hotspot-ray-max 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-latencyComp 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;explosion-soldier-expforce-ymod 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;fb-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;feedback-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;fire-delay-after-jump 1.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;fire-delay-from-prone 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;flying_height 110.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;follow-component-prediction-factor 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;force-reg-limit 20.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;hack-ignore-asserts 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;hc_dump 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;hc_freeze 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;hc_normals 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;hc_water 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ignoreFriendlyTimer 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;jump-delay-after-prone 1.200000&lt;br /&gt;
	:Vars.set&lt;br /&gt;
	:Delay in seconds after prone to block the jump input. Setting it to 0 allows jumping when pressing space while moving from prone to standing&lt;br /&gt;
;ladder-bottom-marginal 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-climb-speed-mod 0.045000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-down-angle-limit 35.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-down-ray-mag 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-down-ray-mag-skid 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-end-camera-offset 0.400000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-exit-offset 0.750000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-getoff-ray-min 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-getoff-speed-mod 1.150000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-offset-top 0.360000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-ray-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-ray-debug2 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-skid-speed-mod 4.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-soldier-dist 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-soldier-start-getoff 1.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-step-size 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-top-exit-offset 0.750000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-up-ray-mag-skid 1.700000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ladder-water-limit 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;local-prediction 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;local-prediction-confirmtime 30&lt;br /&gt;
: Unknow&lt;br /&gt;
;local-prediction-lerpTime 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;local-prediction-minDelay 0.150000&lt;br /&gt;
: Unknow&lt;br /&gt;
;maxDistKillMissile 15.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;network-engine-fullPrecision 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;network-spring-fullPrecision 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectManager-cullHandleUpdateOnClientFactor 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectspawner-draw-lines 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectspawner-inner-circle 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;objectspawner-num-tries 7&lt;br /&gt;
: Unknow&lt;br /&gt;
;old-turn-limit 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;old-turn-mod 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;opt-late-loading 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;opt-nosound 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;overheadCamera-acceleration 250.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;overheadCamera-maxPositionDelta 7.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;p-pos-damp 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;p-pos-damp-water 0.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;p-rot-damp 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;p-rot-damp-water 0.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-collapse-angle 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-collapse-time 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-collapse-time-water 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-spawn-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;parachute-start-landing-height 8.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-exitpos-testlod 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-min-playing-ticks 20&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-show-gcs-stats 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-unmanned-max-minor-axis 0.400000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pco-unmanned-min-major-axis 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-ang-vel 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-break-mod 0.950000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-bsp-stats 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-contact-adjust-gravity-count 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-convert-collision-meshes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-damage-frame-count 3&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-damage-scale 100.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-damage-scale-limit 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-draw-soldier-bullet-collision 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-engine-inertia 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-engine-slope 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-force-awake 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-force-sleeping 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-dyn 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-exp 3&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-lat 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-mul 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-stat 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-wheel 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-fri-wheel2 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-gas 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-gravity-compensation-size 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-gravity-contact-mod 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-hand-break-adjust 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-hand-break-release 10&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-hand-break-rpm 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-i-mod 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-imp-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-imp-wakeup 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-impulse-limit 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-debug -1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-default 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-max 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-maxRenderAheadTime 0.033333&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-pingFactor 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-useClientWindow 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-useInput 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-latencyComp-useRenderAhead 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-lin-acc 1.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-lin-mod 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-lin-vel 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-list-physics-nodes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-list-response-physics 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-max-imp 1000.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-max-speed 1500.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-new-collision-meshes 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-print -1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-proj-collision-count 3&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-proj-collision-depth 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-proj-precision 0.001000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-proj-spring-on-up-axis 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-sep-fifty-fifty 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-acceleration 0.120000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-air-movement-factor 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crawl-speed 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crouch-speed 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crush-minposspeedsqr 12.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crush-minrotspeedsqr 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-crush-minvehicleposspeedsqr 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-deceleration 0.350000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-elasticity 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-feet-contact-normal 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-feet-level -0.040000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-friction 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-imp-feet 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-inair-speed 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-jump-factor 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-jump-length-factor 0.980000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-look-factor-x 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-look-factor-y 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-resistance 0.020000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-run-speed 3.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-skydive-speed 15.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-skydiveat-speed -10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-speed-factor 0.850000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-sprint-dissipation-time 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-sprint-limit 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-sprint-recover-time 120.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-sprint-speed 7.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-start-float 0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-stop-float 0.900000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-swim-speed 2.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-swimcrawl-speed 3.645000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-take-fall-damage 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-soldier-walk-speed 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-spring-client-debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-spring-server-debug 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-tank-engine-inertia 0.070000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-turn 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-wing-water-mod 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;phy-wreck 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-crouch 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-run 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-sprint 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crawl-walk 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-crawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-run 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-sprint 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-crouch-walk 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-crawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-crouch 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-sprint 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-run-walk 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-crawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-crouch 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-run 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-sprint-walk 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-crawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-crouch 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-run 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-sprint 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-swim 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;pose-walk-swimCrawl 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;prone-delay-after-jump 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;prone-delay-from-stand 1.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll-max-inherit-speed 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_bodyBoneSize 0.120000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_boneSize 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_clientMaxUpdateTime 0.002000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_collMid 0.999900&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_completeCollRadius 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_dT 0.011111&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_enableForce 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_expRotateForce 13.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_gravityOverTime 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_iterations 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_kneeBoneSize 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legBackAngle -0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legForwardAngle 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legForwardFactor 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legPointForwardAngle 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_legPointForwardFactor 0.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_net_boneEnable 15&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_net_debug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_net_interpolate 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_sleep 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_sleepDelta 0.020000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_slowMotion 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useAngularConstraints 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useCapsuleCollision 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useConstraints 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useLandCollision 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;ragdoll_useObjectCollision 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_dieForce 0.0&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_dieInVehicleForce 100.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_expForceMod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_hitForce 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rd_hitUp 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;replenish-checkaim-freq 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;replenish-checkaim-maint-freq 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;replenish-ignoreteam 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;rot-use-old 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;rotationalbundle-max-speed-mod 30.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rotationalbundle-sound-smooth-time 0.150000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rpm-k 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;rpm-wheel 0.060000&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;server-sleep-overhead-time 0.005000&lt;br /&gt;
: Unknow&lt;br /&gt;
;shoot-mag 10.000000&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;show-damage-ndicator-for-all 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;show-engine 0&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;soldier-drop-max 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-drop-min 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-drown-damage 8.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-footstep-effect-cull-distance 20.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-footstep-offset-dof-prone 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-footstep-offset-dof-stand 0.130000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-footstep-offset-y -0.990000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-fov1p 0.820000&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;soldier-impact-speed-limit 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-impact-speed-limit-2 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-lookDown 70.000000&lt;br /&gt;
	:No effect&lt;br /&gt;
	:&lt;br /&gt;
;soldier-lookMaxAngle 40.000000/85.000000/0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-lookSideRestore 4.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-lookUp -70.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-mandown-rotspeed 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-mandown-speed 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-prone-inwater-limit 1.100000&lt;br /&gt;
	:Vars.Set&lt;br /&gt;
	:&amp;quot;The number referenced is the angle. Setting it to 0 allows you to prone into water. Can shoot walls when it&#039;s in water&lt;br /&gt;
	: but not walls from the surface. Setting it to 2 prevents you from proning near water in which you automatically go to the standing position&amp;quot;&lt;br /&gt;
;soldier-proneLookDown 5.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-proneLookUp -30.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-revive-disableinputtime 2.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-terrain-speed-limit 9.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier-timeToEnableWeapon 1.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_lookIdleAngle 15.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_lookIdleTime 2.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_lookSmooth 10.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_throwGun 0.025000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_throwGunForward 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_throwHelmet 0.025000&lt;br /&gt;
: Unknow&lt;br /&gt;
;soldier_throwKitPartsDelay 0.300000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-listener-radius 0.200000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-disable 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-max 0.800000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-max-reuse-frames 15&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-opt0 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-opt1 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-radius 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-obstruction-reuse-frames 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;sound-tinnitus-range 0.600000&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnpoint-scatter-maxdist 9.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnpoint-scatter-mindist 3.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnpoint-scatter-testlod 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;spawnpoint-terrain-offset 1.010000&lt;br /&gt;
: Unknow&lt;br /&gt;
;sprint-recharge-delay-after-jump 2.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;stand-delay-from-prone 1.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;stick-default-distance 0.050000&lt;br /&gt;
: Unknow&lt;br /&gt;
;tank-square 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;targetYOffset 0.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;use-loading-profiler 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;weapon-detonationDebug 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;weapon-detonationTriggerFreq 0.250000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wh-torque-mult 0.500000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wh-torque-offs 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wh-use-slip-ratio 0&lt;br /&gt;
: Unknow&lt;br /&gt;
;wheel-inertia 0.100000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wheel-mod 1.000000&lt;br /&gt;
: Unknow&lt;br /&gt;
;wp-delay-pingfactor 2&lt;br /&gt;
: Unknow&lt;br /&gt;
;wp-delay-reloadfactor 1&lt;br /&gt;
: Unknow&lt;br /&gt;
;wp-delay-ticks 15&lt;br /&gt;
: Unknow&lt;br /&gt;
;zipline-soldier-height 1.490000&lt;br /&gt;
: Unknow&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=11</id>
		<title>Console Script Grammar</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Console_Script_Grammar&amp;diff=11"/>
		<updated>2017-09-09T23:07:09Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Con files are the core of how Battlefield 2 (and 1942 before it) configures its weapons, maps, objects, players and other game assets.  With Battlefield 2, the con grammar has extended into a rudimentry scripting language, with loops and full conditionals.  Battlefield 1942 had only very rudimentry conditionals.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
There exist two classes of comments, block:&lt;br /&gt;
  beginRem&lt;br /&gt;
  this text is ignored&lt;br /&gt;
  endRem&lt;br /&gt;
and line:&lt;br /&gt;
  rem this text is ignored&lt;br /&gt;
&lt;br /&gt;
== Statements ==&lt;br /&gt;
Statements are a command followed by a number of optionally &amp;quot;quoted&amp;quot;, whitespace-seperated arguments. The number of arguments may be variable or strictly limited by the command in use.  The available commands is beyond the scope of this page, but a good portion of them are included with the editor. A full list is available by running GNU &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; against your bf2.exe ;)&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
Variables must be predefined, and have a strict naming system.  All mutable variables must begin with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; whereas all immutable variables or &#039;&#039;constants&#039;&#039; must begin with &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;. It&#039;s a simple form of [[wikipedia:Hungarian Notation]].&lt;br /&gt;
&lt;br /&gt;
=== Mutable Variables ===&lt;br /&gt;
The code:&lt;br /&gt;
  var v_dongs = test&lt;br /&gt;
Defines a new variable called &#039;&#039;dongs&#039;&#039; or &#039;&#039;v_dongs&#039;&#039; depending on your point of view with the value &amp;quot;test&amp;quot;.  When defining a variable you can omit the default value however:&lt;br /&gt;
  var v_dongs&lt;br /&gt;
is a value construct for example.&lt;br /&gt;
&lt;br /&gt;
=== Immutable Variables ===&lt;br /&gt;
  const c_butts = test&lt;br /&gt;
Defines a constant called, again, &#039;&#039;butts&#039;&#039; or &#039;&#039;c_butts&#039;&#039; with the value &amp;quot;test&amp;quot;.  Obviously, this variable cannot be changed.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; vs. &amp;lt;code&amp;gt;var&amp;lt;/code&amp;gt; and assignments ===&lt;br /&gt;
Assigning to a variable is as simple as appending &amp;lt;code&amp;gt; -&amp;gt; v_varname&amp;lt;/code&amp;gt; to any command.  However, many commands do not return a value.  The ones that do generally return either a boolean value (&amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;) or a simple string.&lt;br /&gt;
&lt;br /&gt;
Clearly, trying to assign to a &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; variable is an error and will not work.&lt;br /&gt;
&lt;br /&gt;
== Conditionals ==&lt;br /&gt;
Conditionals include the standard &amp;lt;code&amp;gt;if ... endIf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;if ... elseIf ... endIf&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;while ... endWhile&amp;lt;/code&amp;gt; constructs.  These evaluate an &#039;&#039;expression&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Expressions ===&lt;br /&gt;
The grammar of an expression is roughly:&lt;br /&gt;
  &amp;lt;variable&amp;gt; &amp;lt;comparator&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
Where&lt;br /&gt;
* &#039;&#039;variable&#039;&#039; is any variable name beginning with &amp;lt;code&amp;gt;v_&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;c_&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;comparator&#039;&#039; is one of &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt; or their textual equivalents: &amp;lt;code&amp;gt;lessOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lessThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterOrEqualThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;greaterThan&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;notEquals&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;equals&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;value&#039;&#039; is any literal string, quoted if neccessary.&lt;br /&gt;
&lt;br /&gt;
== Return ==&lt;br /&gt;
You may cease interpretation of the current .con file by using the command &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;. This resumes interpretation from the calling file.  It is an error to use this unless the file was called with...&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; == &lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; do similar things and may in fact be identical.  These trigger the interpretation of another .con file. They also have the ability to set &#039;&#039;arguments&#039;&#039;, which are a special type of mutable variable. For example:&lt;br /&gt;
  run test.con 1 2 3&lt;br /&gt;
Runs test.con.  In test.con, the variables &amp;lt;code&amp;gt;v_arg1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;v_arg2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;v_arg3&amp;lt;/code&amp;gt; are set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; respectively.  Typically this is used along with a conditional to do something for the editor mode, or to do something different for single player mode (a common use in BF1942, where this method also existed).&lt;br /&gt;
&lt;br /&gt;
== An Example ==&lt;br /&gt;
  var v_tst&lt;br /&gt;
  fileManager.fileExists movies/menu.bik -&amp;gt; v_tst&lt;br /&gt;
  if v_tst == 0&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu.bik movies/menu.bik&lt;br /&gt;
  fileManager.copyFile ../../mods/bf2/movies/menu_loggedin.bik movies/menu_loggedin.bik&lt;br /&gt;
  endIf&lt;br /&gt;
This example checks if movies/menu.bik exists, and if it doesn&#039;t copies two files from the &amp;lt;code&amp;gt;bf2&amp;lt;/code&amp;gt; mod to the current mod.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Debugging&amp;diff=10</id>
		<title>Debugging</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Debugging&amp;diff=10"/>
		<updated>2017-09-09T23:03:15Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;The New Method:&#039;&#039;&#039;&lt;br /&gt;
Simple and good method for bf2 python debugging is the gui debugger. Especially if you start the bf2.exe in window mode (for error popups) cause with the gui debugger you debug live. Simply download the file (3kb) and copy the included files to your &lt;br /&gt;
Battlefield 2 Installfolder\python\bf2\ and overwrite the existing __init__.py (a backup is also included in the download).&lt;br /&gt;
http://rapidshare.com/files/277404959/bf2_gui_debugging.zip&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Old Method:&#039;&#039;&#039;&lt;br /&gt;
The BF2 engine has some debugging features, one of which is a log file that it can produce during the course of a game that records various pieces of information that would be useful in debugging. This BF2 engine log file can be written to from Python programs by using the &amp;lt;code&amp;gt;host.log(msg)&amp;lt;/code&amp;gt; method. Unfortunately, no one seems to know how to turn this logging on right now--maybe it&#039;s a command-line option? It&#039;s even possible that the debugging features were stripped out of the retail version of the BF2 server, and so the log may be non-existent.&lt;br /&gt;
&lt;br /&gt;
The core DICE Python code includes a Python debugging feature that sends it&#039;s output to the BF2 engine log file via &amp;lt;code&amp;gt;host.log&amp;lt;/code&amp;gt;. It does this by redefining the stdout (standard output) and stderr (standard error message) I/O streams so that instead of going to the console (which is basically non-existent for the embedded Python interpreter), they are routed to &amp;lt;code&amp;gt;host.log&amp;lt;/code&amp;gt;, where they will be recorded along with any log information from the BF2 engine. Once this redefinition is done, a simple Python &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; statement will send its output to the log file.&lt;br /&gt;
&lt;br /&gt;
The classes used to accomplish this output redirection are defined in &amp;lt;code&amp;gt;bf2.__init__&amp;lt;/code&amp;gt;, but the actual redirection itself doesn&#039;t happen until the BF2 engine calls the &amp;lt;code&amp;gt;bf2.init_module()&amp;lt;/code&amp;gt;. . . so any &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; statements executed before this will go nowhere.&lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;bf2.__init__&amp;lt;/code&amp;gt; module, close to the beginning of the file, is a line that says: &amp;lt;code&amp;gt;g_debug = 0&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;g_debug&amp;lt;/code&amp;gt; serves as a global flag that activates (=1) or deactivates (=0) the printing of debugging information throughout all BF2 Python modules. Throughout the DICE Python code, whenever the program has a bit of information that might be useful in debugging (often just a statement that &amp;quot;we reached this point&amp;quot;), the code checks the value of &amp;lt;code&amp;gt;g_debug&amp;lt;/code&amp;gt;, and if it&#039;s 1, it prints the debugging information. (If you want to use g_debug as a switch for debugging information from your own modules, be sure to put &amp;lt;code&amp;gt;from bf2 import g_debug&amp;lt;/code&amp;gt; in those modules).&lt;br /&gt;
&lt;br /&gt;
So, why is this any good if &amp;lt;code&amp;gt;host.log&amp;lt;/code&amp;gt; is a black hole? Because you can redirect redirect stdout and stderr yourself, to your own log file. . . inside &amp;lt;code&amp;gt;bf2.init_module&amp;lt;/code&amp;gt; (in the file &amp;lt;code&amp;gt;Battlefield 2 Server/python/__init__.py&amp;lt;/code&amp;gt;, then look for the line that says &amp;quot;&amp;lt;code&amp;gt;def init_module():&amp;lt;/code&amp;gt;&amp;quot;), look for the code that reads&lt;br /&gt;
  sys.stdout = fake_stream(&#039;stdout&#039;)&lt;br /&gt;
  sys.stderr = fake_stream(&#039;stderr&#039;)&lt;br /&gt;
and replace it with:&lt;br /&gt;
  logFile = open(&#039;mylogfile.log&#039;, &#039;a&#039;)&lt;br /&gt;
  sys.stdout = logFile&lt;br /&gt;
  sys.stderr = logFile&lt;br /&gt;
(The &amp;lt;code&amp;gt;&#039;a&#039;&amp;lt;/code&amp;gt; means that Python should &amp;quot;append&amp;quot; output to the end of the log file, as opposed to erasing it first). This change will cause anything every error message and the output of every &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; statement to be routed to the file &amp;lt;code&amp;gt;Battlefield 2 Server/mylogfile.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You can now use &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; statements in your own Python code as a way of getting feedback about what&#039;s going on in your programming.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: Because of the way your operating system buffers I/O, you may not see anything in your log file until the &amp;lt;code&amp;gt;stdout&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;stderr&amp;lt;/code&amp;gt; streams are closed or until the operating system&#039;s internal buffer is full--which may not happen for quite a while. . . and maybe not until the server is shut down--and even then, your output may vanish completely if the server isn&#039;t shutdown in an orderly way.  For example, if you are using the server GUI tool available from EA and you push the &amp;quot;Stop&amp;quot; button when the server is running, the server will shutdown abruptly without flushing it&#039;s buffers--and you&#039;ll find nothing in your log file.  To shut the server down gracefully, type the &amp;quot;quit&amp;quot; command into the server&#039;s window directly.  If you&#039;ve sent some particularly important information to the log file and you want to insure it gets there, you can use the &amp;lt;code&amp;gt;sys.stdout.flush()&amp;lt;/code&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
NOTE: You can use host.rcon_invoke(&#039;echo &amp;quot;...&amp;quot;&#039;) to print things directly to the server console.&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=Port_Usage&amp;diff=9</id>
		<title>Port Usage</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=Port_Usage&amp;diff=9"/>
		<updated>2017-09-09T23:02:25Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Pre-face ==&lt;br /&gt;
&lt;br /&gt;
EA says the following ports are used by BF2, But the list is suspect for several reasons. The original list was published in a community news letter on EA&#039;s official BF2 page, and was a hode podge of ports, now I can&#039;t seem to find that community update again, if anyone bookmarked it please let us know the url&amp;lt;br&amp;gt;&lt;br /&gt;
Here is a tentative list:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&#039;&#039;&#039;BF2 Server Ports&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Protocol !! Ports !! In/Out !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TCP || align=right | 80 || align=center | ??? || Battle Recorder / PunkBuster&lt;br /&gt;
|-&lt;br /&gt;
| TCP || align=right | 4711 || align=center | IN || Remote console&lt;br /&gt;
|-&lt;br /&gt;
| ??? || align=right | 4712 || align=center | ??? || BF2 CC Daemon&lt;br /&gt;
|-&lt;br /&gt;
| UDP || align=right | 27901 || align=center | IN || Stats port&lt;br /&gt;
|-&lt;br /&gt;
| UDP || align=right | 1500-4999 || align=center | ??? || &amp;quot;General use&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| UDP/TCP || align=right | 1024-1124 || align=center | ??? || &amp;quot;General use&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| UDP || align=right | 29900 || align=center | ??? || Server status (Gamespy)&lt;br /&gt;
|-&lt;br /&gt;
| UDP/TCP || align=right | 27900 || align=center | ??? || Stats port&lt;br /&gt;
|-&lt;br /&gt;
| UDP || align=right | 16567 || align=center | IN || PunkBuster&lt;br /&gt;
|-&lt;br /&gt;
| UDP || align=right | 55123-55125 || align=center | IN/OUT || VoIP&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I&#039;ve done some research on ports used and such, please contribute on the [[What Ports]] page if you got updates/erratas&lt;br /&gt;
&lt;br /&gt;
== Firewalling Your Server ==&lt;br /&gt;
&lt;br /&gt;
This is from the readmeserver.txt&lt;br /&gt;
&lt;br /&gt;
 FIREWALL&lt;br /&gt;
 &lt;br /&gt;
 The use of a software firewall on the server is not recommended,&lt;br /&gt;
 as it can adversely affect server performance and the overall&lt;br /&gt;
 gameplay experience.&lt;br /&gt;
&lt;br /&gt;
Ignore this. Running a server on the internet without a firewall is like &amp;lt;code&amp;gt;insert favourite allegory about being sodomized here&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to firewall your server ===&lt;br /&gt;
&lt;br /&gt;
Two ways to do this:&lt;br /&gt;
&lt;br /&gt;
;External firewall:You have a machine that all traffic has to pass through to get to your server (my favourite)&lt;br /&gt;
;Local Firewall:You are running a firewall on the same server as you have the server (uses local CPU,so not the best way)&lt;br /&gt;
&lt;br /&gt;
We will NOT go into the rigamole on HOW to set up a firewall for your system here, lots of other sites cover this.&lt;br /&gt;
What we will attempt to cover here is the specific rulesets that are needed for a BF2 server to work properly.&lt;br /&gt;
=== External Firewall ===&lt;br /&gt;
We need more info here folks!&lt;br /&gt;
=== Local Firewall ===&lt;br /&gt;
==== Linux Iptables ====&lt;br /&gt;
This ruleset allows my server to be seen in the server browser list, people can join it AND use VOIP&lt;br /&gt;
Note that this is a stander server, only one BF2 server on the machine, and no hank panky with ports&lt;br /&gt;
used and such&lt;br /&gt;
 iptables -A &amp;lt;ChainName&amp;gt; -m udp -p udp -m multiport --dports 29900,29901,29902,29903,29904,16567,55125 -j ACCEPT&lt;br /&gt;
 iptables -A &amp;lt;ChainName&amp;gt; -m tcp -p tcp -m multiport --dports 4711 -j ACCEPT &lt;br /&gt;
 iptables -A &amp;lt;ChainName&amp;gt; -m udp -p udp --sport 29910 -s 207.38.8.27 -j ACCEPT&lt;br /&gt;
 iptables -A &amp;lt;ChainName&amp;gt; -m udp -p udp --sport 29910 -s 207.38.8.28 -j ACCEPT&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
	<entry>
		<id>https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=8</id>
		<title>GameSpy Protocol</title>
		<link rel="alternate" type="text/html" href="https://bf2tech.uturista.pt/index.php?title=GameSpy_Protocol&amp;diff=8"/>
		<updated>2017-09-09T23:01:24Z</updated>

		<summary type="html">&lt;p&gt;UTurista: Creating page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basics =&lt;br /&gt;
These are the protocols used to communicate with the server using the &#039;&#039;sv.gameSpyPort&#039;&#039; port in order to retrieve one or more of the following available information type:&lt;br /&gt;
&lt;br /&gt;
Server Data&lt;br /&gt;
* This is general information about the game in progress (i.e., the map that is being played, the type of game, and any specific game settings that would be of interest to players before they joined). &lt;br /&gt;
Player Data&lt;br /&gt;
* This is information about a specific player that is in the current game (i.e., the player&#039;s name, their current score, what team they are on, and the latency to the game server). &lt;br /&gt;
Team Data&lt;br /&gt;
* This is information about a specific team in the current game (i.e., the name of the team and the team score. If your game does not support team play you do not need to report any team information). &lt;br /&gt;
&lt;br /&gt;
 Data is reported in a &amp;quot;key-value&amp;quot; format: player keys always end in an &amp;quot;_&amp;quot; character (such as &amp;quot;score_&amp;quot;) and team keys always end in a &amp;quot;_t&amp;quot; (such as score_t). Server keys can end in anything other than an &amp;quot;_&amp;quot; or &amp;quot;_t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Almost every protocol starts the same way:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;YY&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;Header&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint16&lt;br /&gt;
| Always 0xFE 0xFD&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| Always retuned in the messages, may be used as an identifier distinguish between multiple packets from the same server&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
App packages sent by the server are limited to 1400 bytes and all communication is handled in UDP&lt;br /&gt;
&lt;br /&gt;
Battlefield 2 uses the [[Gamespy SDK]] to handle these requests.&lt;br /&gt;
&lt;br /&gt;
= Protocol 00: Server information =&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol A ==&lt;br /&gt;
Only replies with 1 message, even if means responding with incomplete information&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x00&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; are a individual flags to request to the server its headers, players and team information, respectively.&lt;br /&gt;
&lt;br /&gt;
These flags need to set to FF to be considered enabled and multiple combinations can be made, eg: asking headers and team information will be ( FF 00 FF )&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
Same as [[GameSpy_Protocol#Reply_2|&amp;quot;Sub-Protocol B&amp;quot;&#039;s reply]] but limited to 1 reply, 1400 bytes and some fields might be omitted, depending on the flags.&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol B ==&lt;br /&gt;
The most complete protocol; it always reply all 3 information fields (server, players, team) using one or more packages (of 1400 bytes).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
 &#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;0xFE 0xFD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;0x00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; 0x01&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;HH&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: darkred&amp;quot;&amp;gt;PP&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color:purple&amp;quot;&amp;gt;TT&amp;lt;/span&amp;gt; will be ignored not matter the value.&lt;br /&gt;
&lt;br /&gt;
It&#039;s the last byte, 0x01, that matters. More specifically the last byte only needs to have the least significant bit set to 1.&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
The server may reply with one or more messages if the information is bigger than the 1400 bytes limit.&lt;br /&gt;
&lt;br /&gt;
These messages will always start with:&lt;br /&gt;
 &#039;&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;&#039;&#039;XX XX XX XX&#039;&#039;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;&#039;&#039;YY&#039;&#039;&amp;lt;/span&amp;gt; PAYLOAD&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;Protocol ID&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Always zero&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;Timestamp&amp;lt;/span&amp;gt;&lt;br /&gt;
| uint32&lt;br /&gt;
| The value sent in the request&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;&amp;quot;splitnum&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
| string&lt;br /&gt;
| Always &amp;quot;splitnum&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: purple&amp;quot;&amp;gt;splitnum&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| Only seen &#039;&#039;&#039;00&#039;&#039;&#039; probably indicates how the strings are terminated[https://en.wikipedia.org/wiki/Null-terminated_string]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color: DarkCyan&amp;quot;&amp;gt;Message Number&amp;lt;/span&amp;gt;&lt;br /&gt;
| byte&lt;br /&gt;
| The most significant bit indicates if its the last message, all others are used for the message number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The payload 1st byte indicates the &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;type&amp;lt;/span&amp;gt;: 00, 01 and 02 for Server Headers, Player information and Team Information, respectively.&lt;br /&gt;
&lt;br /&gt;
==== Server Headers ====&lt;br /&gt;
key/value pairs.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;&amp;lt;key N&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value N&amp;gt;&amp;lt;/span&amp;gt; 00  00&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;hostname&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamename&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;battlefield2&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;gamever&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;1.5.3153-802.0&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: darkorange;&amp;quot;&amp;gt;password&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;: &amp;quot;[PR v1.4.6.0] =]H[= HARDCORE GAMING - NA&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamename&#039;&#039;&#039;: &amp;quot;battlefield2&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;gamever&#039;&#039;&#039;: &amp;quot;1.5.3153-802.0&amp;quot;&lt;br /&gt;
 &#039;&#039;&#039;password&#039;&#039;&#039;: &amp;quot;0&amp;quot; (false)&lt;br /&gt;
&lt;br /&gt;
==== Player information and Team information ====&lt;br /&gt;
&lt;br /&gt;
Player and Team informations are stored into &amp;lt;key&amp;gt;:&amp;lt;array of values&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
With the actual format being&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;&amp;lt;key 1&amp;gt;&amp;lt;/span&amp;gt; 00 &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value 1 + offset&amp;gt;&amp;lt;/span&amp;gt; 00 ... &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;lt;value NN&amp;gt;&amp;lt;/span&amp;gt; 00 00 00&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;QQ&amp;lt;/span&amp;gt; is the type. With 0x01 indicating its Player information and 0x02 representing Team information.&lt;br /&gt;
&lt;br /&gt;
Since the message may end before the array ends, the first value after each key is the &amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;&amp;lt;offset&amp;gt;&amp;lt;/span&amp;gt; that defines the index to start from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example of the player information&#039;s section with 3 players is:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;\01 &amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;player_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;=MD=shilijia&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;&amp;gt;11&amp;lt; WangXi&amp;lt;/span&amp;gt;\00 &amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;a365476093&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;score_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;191&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;159&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;\00\00&amp;lt;span style=&amp;quot;color: #ff9900;&amp;quot;&amp;gt;ping_&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #339966;&amp;quot;&amp;gt;\00&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;50&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;33&amp;lt;/span&amp;gt;\00&amp;lt;span style=&amp;quot;color: #33cccc;&amp;quot;&amp;gt;18&amp;lt;/span&amp;gt;\00\00\00&lt;br /&gt;
Which is:&lt;br /&gt;
 &#039;&#039;&#039;player_&#039;&#039;&#039;: [&amp;quot; =MD=shilijia&amp;quot;, &amp;quot;&amp;gt;11&amp;lt; WangXi&amp;quot;, &amp;quot; a365476093&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;score_&#039;&#039;&#039;: [&amp;quot;191&amp;quot;, &amp;quot;159&amp;quot;, &amp;quot;0&amp;quot;]&lt;br /&gt;
 &#039;&#039;&#039;ping_&#039;&#039;&#039;: [&amp;quot;50&amp;quot;, &amp;quot;33&amp;quot;, &amp;quot;18&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Sub-Protocol C ==&lt;br /&gt;
The 3rd of our sub-protocols to request information about the server allows you to indicate which headers and how many you want to know about.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&#039;FE FD 00 &#039;&#039;XX XX XX XX YY KK&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... KK&amp;lt;sub&amp;gt;YY-1&amp;lt;/sub&amp;gt; 00 00&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The 8th byte (YY) informs the server how many headers you&#039;re asking for.&amp;lt;br&amp;gt;&lt;br /&gt;
The following bytes, excluding the last 2, indicate the header (see next table).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Offset&lt;br /&gt;
| Header&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| hostname&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| gamename&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| gamever&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| hostport&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| mapname&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| gametype&lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| gamevariant&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| numplayers&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0a&lt;br /&gt;
| maxplayers&lt;br /&gt;
|-&lt;br /&gt;
| 0b&lt;br /&gt;
| gamemode&lt;br /&gt;
|-&lt;br /&gt;
| 0c&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0d&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0e&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 0f&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| timelimit&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| roundtime?&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| ??&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&lt;br /&gt;
= Protocol 02: Echo =&lt;br /&gt;
An echo protocol. The server always returns the data sent after the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;protocol ID&amp;lt;/span&amp;gt; (up to 32 bytes) prefixed with the Echo Response Identifier (0x05).&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;05&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; ... XX&amp;lt;sub&amp;gt;31&amp;lt;/sub&amp;gt;&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Protocol 08: Keep Alive=&lt;br /&gt;
Sent by the master server to the server to report it knows about it&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span &amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;08&amp;lt;/span &amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
No reply&lt;br /&gt;
&lt;br /&gt;
= Protocol 09: Echo Alternative =&lt;br /&gt;
According to game-spy specifications this should be used to generate a 4 bytes value for us to send in the following replies as the  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;TimeStamp&amp;lt;/span&amp;gt;, therefore allowing an IP verification.&amp;lt;br&amp;gt;&lt;br /&gt;
Battlefield 2 however just returns 4 bytes of what we send with 2 more hardcoded bytes appended.&lt;br /&gt;
&lt;br /&gt;
=== Request === &lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;FE FD&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Reply ===&lt;br /&gt;
&#039;&#039;&amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;09&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;XX XX XX XX&amp;lt;/span&amp;gt; 30 00&#039;&#039;&lt;/div&gt;</summary>
		<author><name>UTurista</name></author>
	</entry>
</feed>