New Refuelling process

This commit is contained in:
FlightControl_Master
2017-08-03 12:21:56 +02:00
parent 2611ba0fe8
commit dbe1d7aaa3
21 changed files with 1026 additions and 69 deletions

View File

@@ -182,6 +182,12 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).OnAfterRTB">AI_A2A:OnAfterRTB(Controllable, From, Event, To)</a></td>
<td class="summary">
<p>OnAfter Transition Handler for Event RTB.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).OnAfterRefuel">AI_A2A:OnAfterRefuel(Controllable, From, Event, To)</a></td>
<td class="summary">
<p>Refuel Handler OnAfter for AI_A2A</p>
</td>
</tr>
<tr>
@@ -206,6 +212,12 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).OnBeforeRTB">AI_A2A:OnBeforeRTB(Controllable, From, Event, To)</a></td>
<td class="summary">
<p>OnBefore Transition Handler for Event RTB.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).OnBeforeRefuel">AI_A2A:OnBeforeRefuel(Controllable, From, Event, To)</a></td>
<td class="summary">
<p>Refuel Handler OnBefore for AI_A2A</p>
</td>
</tr>
<tr>
@@ -326,12 +338,30 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).RTB">AI_A2A:RTB()</a></td>
<td class="summary">
<p>Synchronous Event Trigger for Event RTB.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).RTBHold">AI_A2A.RTBHold(AIGroup)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).RTBRoute">AI_A2A.RTBRoute(AIGroup)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).Refuel">AI_A2A:Refuel()</a></td>
<td class="summary">
<p>Refuel Trigger for AI_A2A</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).Resume">AI_A2A.Resume(AIGroup)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -380,6 +410,12 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).SetStatusOff">AI_A2A:SetStatusOff()</a></td>
<td class="summary">
<p>Set the status checking off.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).SetTanker">AI_A2A:SetTanker(TankerName)</a></td>
<td class="summary">
<p>Sets to refuel at the given tanker.</p>
</td>
</tr>
<tr>
@@ -404,12 +440,24 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).Stop">AI_A2A:Stop()</a></td>
<td class="summary">
<p>Synchronous Event Trigger for Event Stop.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).TankerName">AI_A2A.TankerName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).__RTB">AI_A2A:__RTB(Delay)</a></td>
<td class="summary">
<p>Asynchronous Event Trigger for Event RTB.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).__Refuel">AI_A2A:__Refuel(Delay)</a></td>
<td class="summary">
<p>Refuel Asynchronous Trigger for AI_A2A</p>
</td>
</tr>
<tr>
@@ -434,6 +482,12 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).onafterDead">AI_A2A:onafterDead()</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).onafterHold">AI_A2A:onafterHold(AIGroup, From, Event, To, HoldTime)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -446,6 +500,12 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).onafterRTB">AI_A2A:onafterRTB(AIGroup, From, Event, To)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).onafterRefuel">AI_A2A:onafterRefuel(AIGroup, From, Event, To)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -682,6 +742,43 @@ The To State string.</p>
<dl class="function">
<dt>
<a id="#(AI_A2A).OnAfterRefuel" >
<strong>AI_A2A:OnAfterRefuel(Controllable, From, Event, To)</strong>
</a>
</dt>
<dd>
<p>Refuel Handler OnAfter for AI_A2A</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).OnAfterStart" >
<strong>AI_A2A:OnAfterStart(From, Event, To)</strong>
</a>
@@ -833,6 +930,48 @@ The To State string.</p>
<p><em>#boolean:</em>
Return false to cancel Transition.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).OnBeforeRefuel" >
<strong>AI_A2A:OnBeforeRefuel(Controllable, From, Event, To)</strong>
</a>
</dt>
<dd>
<p>Refuel Handler OnBefore for AI_A2A</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Controllable.html##(CONTROLLABLE)">Wrapper.Controllable#CONTROLLABLE</a> Controllable </em></code>:
The Controllable Object managed by the FSM.</p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#boolean:</em></p>
</dd>
</dl>
<dl class="function">
@@ -1336,6 +1475,27 @@ Return false to cancel Transition.</p>
<dl class="function">
<dt>
<a id="#(AI_A2A).RTBHold" >
<strong>AI_A2A.RTBHold(AIGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).RTBRoute" >
<strong>AI_A2A.RTBRoute(AIGroup)</strong>
</a>
@@ -1344,6 +1504,40 @@ Return false to cancel Transition.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).Refuel" >
<strong>AI_A2A:Refuel()</strong>
</a>
</dt>
<dd>
<p>Refuel Trigger for AI_A2A</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).Resume" >
<strong>AI_A2A.Resume(AIGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
@@ -1587,6 +1781,33 @@ self</p>
<dl class="function">
<dt>
<a id="#(AI_A2A).SetTanker" >
<strong>AI_A2A:SetTanker(TankerName)</strong>
</a>
</dt>
<dd>
<p>Sets to refuel at the given tanker.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> TankerName </em></code>:
The group name of the tanker as defined within the Mission Editor or spawned.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_A2A)">#AI_A2A</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).SetTargetDistance" >
<strong>AI_A2A:SetTargetDistance(Coordinate)</strong>
</a>
@@ -1642,6 +1863,20 @@ self</p>
<p>Synchronous Event Trigger for Event Stop.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_A2A).TankerName" >
<strong>AI_A2A.TankerName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
@@ -1669,6 +1904,27 @@ The delay in seconds.</p>
<dl class="function">
<dt>
<a id="#(AI_A2A).__Refuel" >
<strong>AI_A2A:__Refuel(Delay)</strong>
</a>
</dt>
<dd>
<p>Refuel Asynchronous Trigger for AI_A2A</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#number Delay </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).__Start" >
<strong>AI_A2A:__Start(Delay)</strong>
</a>
@@ -1742,6 +1998,47 @@ The delay in seconds.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).onafterHold" >
<strong>AI_A2A:onafterHold(AIGroup, From, Event, To, HoldTime)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
</li>
<li>
<p><code><em> From </em></code>: </p>
</li>
<li>
<p><code><em> Event </em></code>: </p>
</li>
<li>
<p><code><em> To </em></code>: </p>
</li>
<li>
<p><code><em> HoldTime </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
@@ -1791,6 +2088,42 @@ The delay in seconds.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
</li>
<li>
<p><code><em> From </em></code>: </p>
</li>
<li>
<p><code><em> Event </em></code>: </p>
</li>
<li>
<p><code><em> To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A).onafterRefuel" >
<strong>AI_A2A:onafterRefuel(AIGroup, From, Event, To)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>

View File

@@ -312,6 +312,12 @@ and automatically engage any airborne enemies that are within a certain range or
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).OnLeaveEngaging">AI_A2A_CAP:OnLeaveEngaging(Controllable, From, Event, To)</a></td>
<td class="summary">
<p>OnLeave Transition Handler for State Engaging.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_CAP).Resume">AI_A2A_CAP.Resume(AIGroup)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -499,6 +505,8 @@ Use the method <a href="AI_Cap.html##(AI_A2A_CAP).SetEngageZone">AI<em>Cap#AI</e
</dl>
<h2><a id="#(AI_A2A_Cap)" >Type <code>AI_A2A_Cap</code></a></h2>
<h2><a id="#(AI_A2A)" >Type <code>AI_A2A</code></a></h2>
<h2><a id="#(AI_A2A_CAP)" >Type <code>AI_A2A_CAP</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
@@ -1293,6 +1301,27 @@ Return false to cancel Transition.</p>
<dl class="function">
<dt>
<a id="#(AI_A2A_CAP).Resume" >
<strong>AI_A2A_CAP.Resume(AIGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A_CAP).SetEngageRange" >
<strong>AI_A2A_CAP:SetEngageRange(EngageRange)</strong>
</a>

View File

@@ -299,7 +299,7 @@ Per one, two, three, four?</p>
<h2><a id="#(AI_A2A_DISPATCHER)">Type <code>AI_A2A_DISPATCHER</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).AddDefenderToSquadron">AI_A2A_DISPATCHER:AddDefenderToSquadron(Squadron, Defender)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).AddDefenderToSquadron">AI_A2A_DISPATCHER:AddDefenderToSquadron(Squadron, Defender, Size)</a></td>
<td class="summary">
</td>
@@ -698,6 +698,12 @@ Per one, two, three, four?</p>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetDefaultTakeoffInAir">AI_A2A_DISPATCHER:SetDefaultTakeoffInAir()</a></td>
<td class="summary">
<p>Sets flights to default take-off in the air, as part of the defense system.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetDefaultTanker">AI_A2A_DISPATCHER:SetDefaultTanker(TankerName)</a></td>
<td class="summary">
<p>Set the default tanker where defenders will Refuel in the air.</p>
</td>
</tr>
<tr>
@@ -752,6 +758,12 @@ Per one, two, three, four?</p>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetSquadronCapInterval">AI_A2A_DISPATCHER:SetSquadronCapInterval(SquadronName, CapLimit, LowInterval, HighInterval, Probability)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetSquadronFuelThreshold">AI_A2A_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</a></td>
<td class="summary">
<p>Set the fuel treshold for the squadron when defenders will RTB or Refuel in the air.</p>
</td>
</tr>
<tr>
@@ -824,6 +836,12 @@ Per one, two, three, four?</p>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetSquadronTakeoffInAir">AI_A2A_DISPATCHER:SetSquadronTakeoffInAir(SquadronName)</a></td>
<td class="summary">
<p>Sets flights to take-off in the air, as part of the defense system.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetSquadronTanker">AI_A2A_DISPATCHER:SetSquadronTanker(SquadronName, TankerName)</a></td>
<td class="summary">
<p>Set the squadron tanker where defenders will Refuel in the air.</p>
</td>
</tr>
<tr>
@@ -1244,9 +1262,11 @@ targets to be engaged. Depending on the grouping parameter, the spawned flights
For example with a group setting of 2, if 3 targets are detected and cannot be engaged by CAP or any airborne flight,
a GCI needs to be started, the GCI flights will be grouped as follows: Group 1 of 2 flights and Group 2 of one flight!</p>
<p>Even more ... If one target has been detected, and the overhead is 1.5, grouping is 1, then two groups of planes will be spawned, with one unit each!</p>
<p>The <strong>grouping value is set for a Squadron</strong>, and can be <strong>dynamically adjusted</strong> during mission execution, so to adjust the defense flights grouping when the tactical situation changes.</p>
<h3>6.4. Overhead and Balance the effectiveness of the air defenses in case of GCI</h3>
<h3>6.4. Overhead and Balance the effectiveness of the air defenses in case of GCI.</h3>
<p>The effectiveness can be set with the <strong>overhead parameter</strong>. This is a number that is used to calculate the amount of Units that dispatching command will allocate to GCI in surplus of detected amount of units.
The <strong>default value</strong> of the overhead parameter is 1.0, which means <strong>equal balance</strong>. </p>
@@ -1270,8 +1290,18 @@ The overhead must be given as a decimal value with 1 as the neutral value, which
<p>The amount of defending units is calculated by multiplying the amount of detected attacking planes as part of the detected group
multiplied by the Overhead and rounded up to the smallest integer. </p>
<p>For example ... If one target has been detected, and the overhead is 1.5, grouping is 1, then two groups of planes will be spawned, with one unit each!</p>
<p>The <strong>overhead value is set for a Squadron</strong>, and can be <strong>dynamically adjusted</strong> during mission execution, so to adjust the defense overhead when the tactical situation changes.</p>
<h2>6.5. Squadron fuel treshold.</h2>
<p>When an airplane gets <strong>out of fuel</strong> to a certain %-tage, which is by default <strong>15% (0.15)</strong>, there are two possible actions that can be taken:
- The defender will go RTB, and will be replaced with a new defender if possible.
- The defender will refuel at a tanker, if a tanker has been specified for the squadron.</p>
<p>Use the method <a href="##(AI_A2A_DISPATCHER).SetSquadronFuelThreshold">AI<em>A2A</em>DISPATCHER.SetSquadronFuelThreshold</a>() to set the <strong>squadron fuel treshold</strong> of spawned airplanes for all squadrons.</p>
<h2>7. Setup a squadron for CAP</h2>
<h3>7.1. Set the CAP zones</h3>
@@ -1349,6 +1379,32 @@ Zones can be circles, can be setup in the mission editor using trigger zones, bu
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
</code></pre>
<h2>7.3. Squadron tanker to refuel when executing CAP and defender is out of fuel.</h2>
<p>Instead of sending CAP to RTB when out of fuel, you can let CAP refuel in mid air using a tanker.
This greatly increases the efficiency of your CAP operations.</p>
<p>In the mission editor, setup a group with task Refuelling. A tanker unit of the correct coalition will be automatically selected.
Then, use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultTanker">AI<em>A2A</em>DISPATCHER.SetDefaultTanker</a>() to set the default tanker for the refuelling.
You can also specify a specific tanker for refuelling for a squadron by using the method <a href="##(AI_A2A_DISPATCHER).SetSquadronTanker">AI<em>A2A</em>DISPATCHER.SetSquadronTanker</a>().</p>
<p>When the tanker specified is alive and in the air, the tanker will be used for refuelling.</p>
<p>For example, the following setup will create a CAP for squadron "Gelend" with a refuel task for the squadron:</p>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\AI_A2A_DISPATCHER-ME_10.JPG" alt="Banner Image"/></p>
<pre><code> -- Define the CAP
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-30" }, 20 )
A2ADispatcher:SetSquadronCap( "Gelend", ZONE:New( "PatrolZoneGelend" ), 4000, 8000, 600, 800, 1000, 1300 )
A2ADispatcher:SetSquadronCapInterval( "Gelend", 2, 30, 600, 1 )
A2ADispatcher:SetSquadronGci( "Gelend", 900, 1200 )
-- Setup the Refuelling for squadron "Gelend", at tanker (group) "TankerGelend" when the fuel in the tank of the CAP defenders is less than 80%.
A2ADispatcher:SetSquadronFuelThreshold( "Gelend", 0.8 )
A2ADispatcher:SetSquadronTanker( "Gelend", "TankerGelend" )
</code></pre>
<h2>8. Setup a squadron for GCI:</h2>
<p>The method <a href="##(AI_A2A_DISPATCHER).SetSquadronGci">AI<em>A2A</em>DISPATCHER.SetSquadronGci</a>() defines a GCI execution for a squadron.</p>
@@ -1457,6 +1513,32 @@ So, ensure that you set the default CAP limit <strong>before</strong> you spawn
<p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultCapTimeInterval">AI<em>A2A</em>DISPATCHER.SetDefaultCapTimeInterval</a>() to set the <strong>default CAP time interval</strong> of spawned airplanes for all squadrons. <br/>
Note that you can still change the CAP limit and CAP time intervals for each CAP individually using the <a href="##(AI_A2A_DISPATCHER).SetSquadronCapTimeInterval">AI<em>A2A</em>DISPATCHER.SetSquadronCapTimeInterval</a>() method.</p>
<h2>10.7.3. Default tanker for refuelling when executing CAP.</h2>
<p>Instead of sending CAP to RTB when out of fuel, you can let CAP refuel in mid air using a tanker.
This greatly increases the efficiency of your CAP operations.</p>
<p>In the mission editor, setup a group with task Refuelling. A tanker unit of the correct coalition will be automatically selected.
Then, use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultTanker">AI<em>A2A</em>DISPATCHER.SetDefaultTanker</a>() to set the tanker for the dispatcher.
Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultFuelTreshold">AI<em>A2A</em>DISPATCHER.SetDefaultFuelTreshold</a>() to set the %-tage left in the defender airplane tanks when a refuel action is needed.</p>
<p>When the tanker specified is alive and in the air, the tanker will be used for refuelling.</p>
<p>For example, the following setup will set the default refuel tanker to "Tanker":</p>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\AI_A2A_DISPATCHER-ME_11.JPG" alt="Banner Image"/></p>
<pre><code> -- Define the CAP
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-34" }, 20 )
A2ADispatcher:SetSquadronCap( "Sochi", ZONE:New( "PatrolZone" ), 4000, 8000, 600, 800, 1000, 1300 )
A2ADispatcher:SetSquadronCapInterval("Sochi", 2, 30, 600, 1 )
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
-- Set the default tanker for refuelling to "Tanker", when the default fuel treshold has reached 90% fuel left.
A2ADispatcher:SetDefaultFuelThreshold( 0.9 )
A2ADispatcher:SetDefaultTanker( "Tanker" )
</code></pre>
<h2>10.8. Default settings for GCI.</h2>
<h2>10.8.1. Optimal intercept point calculation.</h2>
@@ -1485,10 +1567,11 @@ This time can easily take 2 to 3 minutes, and even then the defenders still need
<h2>10.8.2. Default disengage radius.</h2>
<p>The radius to <strong>disengage any target</strong> when the <strong>distance</strong> of the defender to the <strong>home base</strong> is larger than the specified meters.
The default disengage radius is <strong>100km</strong> (100000 meters). Note that the disengage radius is applicable to ALL squadrons!</p>
The default disengage radius is <strong>300km</strong> (300000 meters). Note that the disengage radius is applicable to ALL squadrons!</p>
<p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDisengageRadius">AI<em>A2A</em>DISPATCHER.SetDisengageRadius</a>() to modify the default disengage radius to another distance setting.</p>
<h2>11. Q &amp; A:</h2>
<h3>11.1. Which countries will be selected for each coalition?</h3>
@@ -1813,7 +1896,7 @@ The following parameters were given to the :New method of AI<em>A2A</em>GCICAP,
<dt>
<a id="#(AI_A2A_DISPATCHER).AddDefenderToSquadron" >
<strong>AI_A2A_DISPATCHER:AddDefenderToSquadron(Squadron, Defender)</strong>
<strong>AI_A2A_DISPATCHER:AddDefenderToSquadron(Squadron, Defender, Size)</strong>
</a>
</dt>
<dd>
@@ -1831,6 +1914,11 @@ The following parameters were given to the :New method of AI<em>A2A</em>GCICAP,
<p><code><em> Defender </em></code>: </p>
</li>
<li>
<p><code><em> Size </em></code>: </p>
</li>
</ul>
</dd>
@@ -2107,7 +2195,6 @@ DefenderSquadron</p>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_A2A_DISPATCHER).DisengageRadius" >
<strong>AI_A2A_DISPATCHER.DisengageRadius</strong>
</a>
@@ -3686,6 +3773,44 @@ From the airbase hot, from the airbase cold, in the air, from the runway.</p>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetDefaultTanker" >
<strong>AI_A2A_DISPATCHER:SetDefaultTanker(TankerName)</strong>
</a>
</dt>
<dd>
<p>Set the default tanker where defenders will Refuel in the air.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(strig)">#strig</a> TankerName </em></code>:
A string defining the group name of the Tanker as defined within the Mission Editor.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_A2A_DISPATCHER)">#AI<em>A2A</em>DISPATCHER</a>:</em></p>
<h3>Usage:</h3>
<pre class="example"><code>
-- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold.
A2ADispatcher:SetDefaultRefuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
-- Now Setup the default tanker.
A2ADispatcher:SetDefaultTanker( "Tanker" ) -- The group name of the tanker is "Tanker" in the Mission Editor.</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetDefenderTask" >
<strong>AI_A2A_DISPATCHER:SetDefenderTask(Defender, Type, Fsm, Target)</strong>
</a>
@@ -3766,7 +3891,7 @@ From the airbase hot, from the airbase cold, in the air, from the runway.</p>
<li>
<p><code><em>#number DisengageRadius </em></code>:
(Optional, Default = 100000) The radius to disengage a target when too far from the home base.</p>
(Optional, Default = 300000) The radius to disengage a target when too far from the home base.</p>
</li>
</ul>
@@ -3781,7 +3906,7 @@ From the airbase hot, from the airbase cold, in the air, from the runway.</p>
Dispatcher:SetDisengageRadius( 50000 )
-- Set 100km as the disengage radius.
Dispatcher:SetDisngageRadius() -- 100000 is the default value.
Dispatcher:SetDisngageRadius() -- 300000 is the default value.
</code></pre>
</dd>
@@ -4164,6 +4289,51 @@ The squadron name.</p>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetSquadronFuelThreshold" >
<strong>AI_A2A_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</strong>
</a>
</dt>
<dd>
<p>Set the fuel treshold for the squadron when defenders will RTB or Refuel in the air.</p>
<p>The fuel treshold is by default set to 15%, which means that an airplane will stay in the air until 15% of its fuel has been consumed.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string SquadronName </em></code>:
The name of the squadron.</p>
</li>
<li>
<p><code><em>#number FuelThreshold </em></code>:
A decimal number between 0 and 1, that expresses the %-tage of the treshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_A2A_DISPATCHER)">#AI<em>A2A</em>DISPATCHER</a>:</em></p>
<h3>Usage:</h3>
<pre class="example"><code>
-- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold.
A2ADispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetSquadronGci" >
<strong>AI_A2A_DISPATCHER:SetSquadronGci(SquadronName, EngageMinSpeed, EngageMaxSpeed)</strong>
</a>
@@ -4673,6 +4843,50 @@ The name of the squadron.</p>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetSquadronTanker" >
<strong>AI_A2A_DISPATCHER:SetSquadronTanker(SquadronName, TankerName)</strong>
</a>
</dt>
<dd>
<p>Set the squadron tanker where defenders will Refuel in the air.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string SquadronName </em></code>:
The name of the squadron.</p>
</li>
<li>
<p><code><em><a href="##(strig)">#strig</a> TankerName </em></code>:
A string defining the group name of the Tanker as defined within the Mission Editor.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_A2A_DISPATCHER)">#AI<em>A2A</em>DISPATCHER</a>:</em></p>
<h3>Usage:</h3>
<pre class="example"><code>
-- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
-- Now Setup the squadron fuel treshold.
A2ADispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
-- Now Setup the squadron tanker.
A2ADispatcher:SetSquadronTanker( "SquadronName", "Tanker" ) -- The group name of the tanker is "Tanker" in the Mission Editor.</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetTacticalDisplay" >
<strong>AI_A2A_DISPATCHER:SetTacticalDisplay(TacticalDisplay)</strong>
</a>
@@ -5115,6 +5329,8 @@ The radius in meters wherein detected airplanes will GCI.</p>
<h2><a id="#(list)" >Type <code>list</code></a></h2>
<h2><a id="#(strig)" >Type <code>strig</code></a></h2>
</div>
</div>

View File

@@ -204,7 +204,7 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).InterceptRoute">AI_A2A_GCI.InterceptRoute(AIControllable)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_GCI).InterceptRoute">AI_A2A_GCI.InterceptRoute(AIControllable, AIGroup)</a></td>
<td class="summary">
</td>
@@ -617,19 +617,24 @@ Use the method <a href="AI_Cap.html##(AI_A2A_GCI).SetEngageZone">AI<em>Cap#AI</e
<dt>
<a id="#(AI_A2A_GCI).InterceptRoute" >
<strong>AI_A2A_GCI.InterceptRoute(AIControllable)</strong>
<strong>AI_A2A_GCI.InterceptRoute(AIControllable, AIGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIControllable </em></code>: </p>
</li>
<li>
<p><code><em> AIGroup </em></code>: </p>
</li>
</ul>
</dd>

View File

@@ -251,6 +251,12 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).PatrolZone">AI_A2A_PATROL.PatrolZone</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_PATROL).Resume">AI_A2A_PATROL.Resume(AIGroup)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -430,6 +436,8 @@ Use the method <a href="##(AI_A2A_PATROL).ManageDamage">AI<em>A2A</em>PATROL.Man
</dl>
<h2><a id="#(AI_A2A_Patrol)" >Type <code>AI_A2A_Patrol</code></a></h2>
<h2><a id="#(AI_A2A)" >Type <code>AI_A2A</code></a></h2>
<h2><a id="#(AI_A2A_PATROL)" >Type <code>AI_A2A_PATROL</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
@@ -875,6 +883,27 @@ Note that this method is required, as triggers the next route when patrolling fo
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A_PATROL).Resume" >
<strong>AI_A2A_PATROL.Resume(AIGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">

View File

@@ -3417,6 +3417,7 @@ The range till cargo will board.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(CARGO_UNIT).CargoCarrier" >
<strong>CARGO_UNIT.CargoCarrier</strong>
</a>

View File

@@ -625,6 +625,12 @@ The different values of Unit.Category can be:</p>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).GetFriendliesNearBy">DETECTION_BASE:GetFriendliesNearBy(DetectedItem)</a></td>
<td class="summary">
<p>Returns friendly units nearby the FAC units ...</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).GetFriendliesNearIntercept">DETECTION_BASE:GetFriendliesNearIntercept(DetectedItem)</a></td>
<td class="summary">
<p>Returns friendly units nearby the intercept point ...</p>
</td>
</tr>
<tr>
@@ -703,6 +709,12 @@ The different values of Unit.Category can be:</p>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).IsFriendliesNearBy">DETECTION_BASE:IsFriendliesNearBy(DetectedItem)</a></td>
<td class="summary">
<p>Returns if there are friendlies nearby the FAC units ...</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).IsFriendliesNearIntercept">DETECTION_BASE:IsFriendliesNearIntercept(DetectedItem)</a></td>
<td class="summary">
<p>Returns if there are friendlies nearby the intercept ...</p>
</td>
</tr>
<tr>
@@ -2630,7 +2642,7 @@ The group to generate the report for.</p>
<dl class="function">
<dt>
<em></em>
<em>#number</em>
<a id="#(DETECTION_BASE).DetectionInterval" >
<strong>DETECTION_BASE.DetectionInterval</strong>
</a>
@@ -3099,6 +3111,32 @@ The distance. </p>
<dl class="function">
<dt>
<a id="#(DETECTION_BASE).GetFriendliesNearIntercept" >
<strong>DETECTION_BASE:GetFriendliesNearIntercept(DetectedItem)</strong>
</a>
</dt>
<dd>
<p>Returns friendly units nearby the intercept point ...</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> DetectedItem </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(map)">#map</a>:</em></p>
<h1>string,Wrapper.Unit#UNIT> The map of Friendly UNITs.</h1>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_BASE).GetPlayersNearBy" >
<strong>DETECTION_BASE:GetPlayersNearBy(DetectedItem)</strong>
</a>
@@ -3408,6 +3446,32 @@ trhe if there are friendlies nearby </p>
<dl class="function">
<dt>
<a id="#(DETECTION_BASE).IsFriendliesNearIntercept" >
<strong>DETECTION_BASE:IsFriendliesNearIntercept(DetectedItem)</strong>
</a>
</dt>
<dd>
<p>Returns if there are friendlies nearby the intercept ...</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> DetectedItem </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#boolean:</em>
trhe if there are friendlies near the intercept.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_BASE).IsPlayersNearBy" >
<strong>DETECTION_BASE:IsPlayersNearBy(DetectedItem)</strong>
</a>

View File

@@ -1598,7 +1598,7 @@ A string defining the start state.</p>
<dl class="function">
<dt>
<em>#string</em>
<em></em>
<a id="#(FSM)._StartState" >
<strong>FSM._StartState</strong>
</a>
@@ -1897,6 +1897,7 @@ A string defining the start state.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(FSM).current" >
<strong>FSM.current</strong>
</a>

View File

@@ -227,6 +227,7 @@ on defined intervals (currently every minute).</p>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(MOVEMENT).AliveUnits" >
<strong>MOVEMENT.AliveUnits</strong>
</a>
@@ -235,6 +236,9 @@ on defined intervals (currently every minute).</p>
<p> Contains the counter how many units are currently alive</p>
</dd>
</dl>
<dl class="function">

View File

@@ -2829,6 +2829,7 @@ The y coordinate.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(POINT_VEC2).z" >
<strong>POINT_VEC2.z</strong>
</a>

View File

@@ -1838,6 +1838,7 @@ self</p>
<dl class="function">
<dt>
<em><a href="Core.Spot.html##(SPOT)">Core.Spot#SPOT</a></em>
<a id="#(POSITIONABLE).Spot" >
<strong>POSITIONABLE.Spot</strong>
</a>

View File

@@ -1142,7 +1142,7 @@ true if metric.</p>
<dl class="function">
<dt>
<em></em>
<em>#boolean</em>
<a id="#(SETTINGS).Metric" >
<strong>SETTINGS.Metric</strong>
</a>

View File

@@ -822,6 +822,12 @@ and any spaces before and after the resulting name are removed.</p>
<td class="name" nowrap="nowrap"><a href="##(SPAWN)._TranslateRotate">SPAWN:_TranslateRotate(SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(SPAWN).uncontrolled">SPAWN.uncontrolled</a></td>
<td class="summary">
</td>
</tr>
</table>
@@ -2194,9 +2200,6 @@ The group that was spawned. You can use this group for further actions.</p>
<p> Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.</p>
</dd>
</dl>
<dl class="function">
@@ -2729,9 +2732,6 @@ when nothing was spawned.</p>
<p> Overwrite unit names by default with group name.</p>
</dd>
</dl>
<dl class="function">
@@ -2746,9 +2746,6 @@ when nothing was spawned.</p>
<p> By default, no InitLimit</p>
</dd>
</dl>
<dl class="function">
@@ -2784,7 +2781,7 @@ when nothing was spawned.</p>
<dl class="function">
<dt>
<em>#number</em>
<em></em>
<a id="#(SPAWN).SpawnMaxGroups" >
<strong>SPAWN.SpawnMaxGroups</strong>
</a>
@@ -2801,7 +2798,7 @@ when nothing was spawned.</p>
<dl class="function">
<dt>
<em>#number</em>
<em></em>
<a id="#(SPAWN).SpawnMaxUnitsAlive" >
<strong>SPAWN.SpawnMaxUnitsAlive</strong>
</a>
@@ -3129,7 +3126,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
<dl class="function">
<dt>
<em>#boolean</em>
<em></em>
<a id="#(SPAWN).SpawnUnControlled" >
<strong>SPAWN.SpawnUnControlled</strong>
</a>
@@ -3153,7 +3150,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
<p> Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.</p>
<p> When the first Spawn executes, all the Groups need to be made visible before start.</p>
</dd>
</dl>
@@ -3733,6 +3730,20 @@ True = Continue Scheduler</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(SPAWN).uncontrolled" >
<strong>SPAWN.uncontrolled</strong>
</a>
</dt>
<dd>
</dd>
</dl>

View File

@@ -436,6 +436,7 @@ ptional) The name of the new static.</p>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(SPAWNSTATIC).SpawnIndex" >
<strong>SPAWNSTATIC.SpawnIndex</strong>
</a>

View File

@@ -552,7 +552,7 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<dl class="function">
<dt>
<em><a href="Core.Cargo.html##(CARGO_GROUP)">Core.Cargo#CARGO_GROUP</a></em>
<em><a href="Core.Cargo.html##(CARGO)">Core.Cargo#CARGO</a></em>
<a id="#(FSM_PROCESS).Cargo" >
<strong>FSM_PROCESS.Cargo</strong>
</a>
@@ -566,6 +566,7 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<dl class="function">
<dt>
<em></em>
<a id="#(FSM_PROCESS).DeployZone" >
<strong>FSM_PROCESS.DeployZone</strong>
</a>
@@ -630,7 +631,7 @@ based on the tasking capabilities defined in <a href="Task.html##(TASK)">Task#TA
<dl class="function">
<dt>
<em>#number</em>
<em></em>
<a id="#(TASK_CARGO).CargoLimit" >
<strong>TASK_CARGO.CargoLimit</strong>
</a>

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB