First working version

This commit is contained in:
FlightControl_Master
2017-07-31 12:04:27 +02:00
parent 87634969b3
commit 85bd3a1c33
10 changed files with 476 additions and 61 deletions

View File

@@ -146,6 +146,12 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).ClearTargetDistance">AI_A2A:ClearTargetDistance()</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).DisengageRadius">AI_A2A.DisengageRadius</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -338,6 +344,12 @@
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).SetDamageThreshold">AI_A2A:SetDamageThreshold(PatrolDamageThreshold)</a></td>
<td class="summary">
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A).SetDisengageRadius">AI_A2A:SetDisengageRadius(DisengageRadius)</a></td>
<td class="summary">
<p>Sets the disengage range, that when engaging a target beyond the specified range, the engagement will be cancelled and the plane will RTB.</p>
</td>
</tr>
<tr>
@@ -543,6 +555,20 @@
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_A2A).DisengageRadius" >
<strong>AI_A2A.DisengageRadius</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
@@ -575,6 +601,7 @@
<dl class="function">
<dt>
<em>#number</em>
<a id="#(AI_A2A).IdleCount" >
<strong>AI_A2A.IdleCount</strong>
</a>
@@ -1397,6 +1424,33 @@ self</p>
<dl class="function">
<dt>
<a id="#(AI_A2A).SetDisengageRadius" >
<strong>AI_A2A:SetDisengageRadius(DisengageRadius)</strong>
</a>
</dt>
<dd>
<p>Sets the disengage range, that when engaging a target beyond the specified range, the engagement will be cancelled and the plane will RTB.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#number DisengageRadius </em></code>:
The disengage range.</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).SetDispatcher" >
<strong>AI_A2A:SetDispatcher(Dispatcher)</strong>
</a>

View File

@@ -386,6 +386,12 @@ Per one, two, three, four?</p>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).Detection">AI_A2A_DISPATCHER.Detection</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).DisengageRadius">AI_A2A_DISPATCHER.DisengageRadius</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -401,7 +407,7 @@ Per one, two, three, four?</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).EvaluateGCI">AI_A2A_DISPATCHER:EvaluateGCI(DetectedItem, Target)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).EvaluateGCI">AI_A2A_DISPATCHER:EvaluateGCI(DetectedItem)</a></td>
<td class="summary">
<p>Creates an GCI task when there are targets for it.</p>
</td>
@@ -704,6 +710,12 @@ Per one, two, three, four?</p>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetDefenderTaskTarget">AI_A2A_DISPATCHER:SetDefenderTaskTarget(AIGroup, Defender, Target)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetDisengageRadius">AI_A2A_DISPATCHER:SetDisengageRadius(DisengageRadius)</a></td>
<td class="summary">
<p>Define the radius to disengage any target when the distance to the home base is larger than the specified meters.</p>
</td>
</tr>
<tr>
@@ -716,6 +728,12 @@ Per one, two, three, four?</p>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetGciRadius">AI_A2A_DISPATCHER:SetGciRadius(GciRadius)</a></td>
<td class="summary">
<p>Define the radius to check if a target can be engaged by an ground controlled intercept.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).SetIntercept">AI_A2A_DISPATCHER:SetIntercept(InterceptDelay)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -863,7 +881,7 @@ Per one, two, three, four?</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).onafterGCI">AI_A2A_DISPATCHER:onafterGCI(From, Event, To, Target, DefendersMissing, AIGroups)</a></td>
<td class="name" nowrap="nowrap"><a href="##(AI_A2A_DISPATCHER).onafterGCI">AI_A2A_DISPATCHER:onafterGCI(From, Event, To, DetectedItem, DefendersMissing, Friendlies)</a></td>
<td class="summary">
</td>
@@ -1419,7 +1437,9 @@ For some default settings, a method is available that allows you to tweak the de
<p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultDamageThreshold">AI<em>A2A</em>DISPATCHER.SetDefaultDamageThreshold</a>() to set the <strong>default damage treshold</strong> of spawned airplanes for all squadrons.</p>
<h2>10.7. Default CAP Time Interval.</h2>
<h2>10.7. Default settings for CAP.</h2>
<h3>10.7.1. Default CAP Time Interval.</h3>
<p>CAP is time driven, and will evaluate in random time intervals if a new CAP needs to be spawned.
The <strong>default CAP time interval</strong> is between <strong>180</strong> and <strong>600</strong> seconds.</p>
@@ -1427,7 +1447,7 @@ The <strong>default CAP time interval</strong> is between <strong>180</strong> a
<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.8. Default CAP limit.</h2>
<h3>10.7.2. Default CAP limit.</h3>
<p>Multiple CAP can be airborne at the same time for one squadron, which is controlled by the <strong>CAP limit</strong>.
The <strong>default CAP limit</strong> is 1 CAP per squadron to be airborne at the same time.
@@ -1437,6 +1457,31 @@ 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.8. Default settings for GCI.</h2>
<h2>10.8.1. Optimal intercept point.</h2>
<p>When intruders are detected, the intrusion path of the attackers can be monitored by the EWR. <br/>
Although defender planes might be on standby at the airbase, it can still take some time to get the defenses up in the air if there aren't any defenses airborne.
This time can easily take 2 to 3 minutes, and even then the defenders still need to fly towards the target, which takes also time.</p>
<p>Therefore, an optimal <strong>intercept point</strong> is calculated which takes a couple of parameters:</p>
<ul>
<li>The average bearing of the intruders for an amount of seconds.</li>
<li>The average speed of the intruders for an amount of seconds.</li>
<li>The altitude of the intruders.</li>
<li>An assumed time it takes to get planes operational at the airbase.</li>
<li>The intercept speed, which is given as a parameter for each squadron or set by default for all squadrons.</li>
</ul>
<p>The <strong>intercept point</strong> will determine:</p>
<ul>
<li>If there are any friendlies close to engage the target. These can be defenders performing CAP or defenders in RTB.</li>
<li>The optimal airbase from where defenders will takeoff for gci.</li>
</ul>
<h2>11. Q &amp; A:</h2>
<h3>11.1. Which countries will be selected for each coalition?</h3>
@@ -2050,6 +2095,20 @@ DefenderSquadron</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_A2A_DISPATCHER).DisengageRadius" >
<strong>AI_A2A_DISPATCHER.DisengageRadius</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
@@ -2105,24 +2164,19 @@ If there are no targets to be set.</p>
<dt>
<a id="#(AI_A2A_DISPATCHER).EvaluateGCI" >
<strong>AI_A2A_DISPATCHER:EvaluateGCI(DetectedItem, Target)</strong>
<strong>AI_A2A_DISPATCHER:EvaluateGCI(DetectedItem)</strong>
</a>
</dt>
<dd>
<p>Creates an GCI task when there are targets for it.</p>
<h3>Parameters</h3>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Functional.Detection.html##(DETECTION_BASE.DetectedItem)">Functional.Detection#DETECTION_BASE.DetectedItem</a> DetectedItem </em></code>: </p>
</li>
<li>
<p><code><em> Target </em></code>: </p>
</li>
</ul>
<h3>Return values</h3>
@@ -3692,6 +3746,42 @@ From the airbase hot, from the airbase cold, in the air, from the runway.</p>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetDisengageRadius" >
<strong>AI_A2A_DISPATCHER:SetDisengageRadius(DisengageRadius)</strong>
</a>
</dt>
<dd>
<p>Define the radius to disengage any target when the distance to the home base is larger than the specified meters.</p>
<h3>Parameter</h3>
<ul>
<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>
</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>
-- Set 50km as the disengage radius.
Dispatcher:SetDisengageRadius( 50000 )
-- Set 100km as the disengage radius.
Dispatcher:SetDisngageRadius() -- 100000 is the default value.
</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetEngageRadius" >
<strong>AI_A2A_DISPATCHER:SetEngageRadius(EngageRadius)</strong>
</a>
@@ -3787,6 +3877,27 @@ If too large, intercept missions may be triggered when the detected target is to
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetIntercept" >
<strong>AI_A2A_DISPATCHER:SetIntercept(InterceptDelay)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> InterceptDelay </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_A2A_DISPATCHER).SetSquadron" >
<strong>AI_A2A_DISPATCHER:SetSquadron(SquadronName, AirbaseName, SpawnTemplates, Resources)</strong>
</a>
@@ -4766,7 +4877,7 @@ Provide a value of <strong>true</strong> to display every 30 seconds a tactical
<dt>
<a id="#(AI_A2A_DISPATCHER).onafterGCI" >
<strong>AI_A2A_DISPATCHER:onafterGCI(From, Event, To, Target, DefendersMissing, AIGroups)</strong>
<strong>AI_A2A_DISPATCHER:onafterGCI(From, Event, To, DetectedItem, DefendersMissing, Friendlies)</strong>
</a>
</dt>
<dd>
@@ -4792,7 +4903,7 @@ Provide a value of <strong>true</strong> to display every 30 seconds a tactical
</li>
<li>
<p><code><em> Target </em></code>: </p>
<p><code><em> DetectedItem </em></code>: </p>
</li>
<li>
@@ -4802,7 +4913,7 @@ Provide a value of <strong>true</strong> to display every 30 seconds a tactical
</li>
<li>
<p><code><em> AIGroups </em></code>: </p>
<p><code><em> Friendlies </em></code>: </p>
</li>
</ul>

View File

@@ -926,9 +926,6 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI<em>PATROL</em>ZONE.M
<p> This table contains the targets detected during patrol.</p>
</dd>
</dl>
<dl class="function">

View File

@@ -184,6 +184,12 @@ DETECTION uses the in-built detection capabilities of DCS World, but adds new fu
<td class="name" nowrap="nowrap"><a href="##(DETECTION_AREAS).BoundDetectedZones">DETECTION_AREAS:BoundDetectedZones()</a></td>
<td class="summary">
<p>Bound the detected zones</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_AREAS).CalculateIntercept">DETECTION_AREAS:CalculateIntercept(DetectedItem)</a></td>
<td class="summary">
<p>Calculate the optimal intercept point of the DetectedItem.</p>
</td>
</tr>
<tr>
@@ -612,7 +618,7 @@ The different values of Unit.Category can be:</p>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).GetFriendliesDistance">DETECTION_BASE:GetFriendliesDistance(DetectedItem)</a></td>
<td class="summary">
<p>Returns friendly units nearby the FAC units sorted per distance ...</p>
<p>Returns the distance used to identify friendlies near the deteted item ...</p>
</td>
</tr>
<tr>
@@ -667,6 +673,18 @@ The different values of Unit.Category can be:</p>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).InitDetectVisual">DETECTION_BASE:InitDetectVisual(DetectVisual)</a></td>
<td class="summary">
<p>Detect Visual.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).Intercept">DETECTION_BASE.Intercept</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).InterceptDelay">DETECTION_BASE.InterceptDelay</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -841,6 +859,12 @@ The different values of Unit.Category can be:</p>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).SetFriendliesRange">DETECTION_BASE:SetFriendliesRange(FriendliesRange)</a></td>
<td class="summary">
<p>Set the radius in meters to validate if friendlies are nearby.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).SetIntercept">DETECTION_BASE:SetIntercept(Intercept, IntereptDelay, InterceptDelay)</a></td>
<td class="summary">
<p>Set the parameters to calculate to optimal intercept point.</p>
</td>
</tr>
<tr>
@@ -959,6 +983,12 @@ The different values of Unit.Category can be:</p>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE.DetectedItem).ID">DETECTION_BASE.DetectedItem.ID</a></td>
<td class="summary">
<p>-- The identifier of the detected area.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE.DetectedItem).InterceptCoord">DETECTION_BASE.DetectedItem.InterceptCoord</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -1566,6 +1596,27 @@ self</p>
<dl class="function">
<dt>
<a id="#(DETECTION_AREAS).CalculateIntercept" >
<strong>DETECTION_AREAS:CalculateIntercept(DetectedItem)</strong>
</a>
</dt>
<dd>
<p>Calculate the optimal intercept point of the DetectedItem.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(DETECTION_BASE.DetectedItem)">#DETECTION_BASE.DetectedItem</a> DetectedItem </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_AREAS).CalculateThreatLevelA2G" >
<strong>DETECTION_AREAS:CalculateThreatLevelA2G(DetectedItem)</strong>
</a>
@@ -2414,6 +2465,7 @@ The index of the DetectedItem.</p>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(DETECTION_BASE).DetectedItemMax" >
<strong>DETECTION_BASE.DetectedItemMax</strong>
</a>
@@ -2579,7 +2631,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>
@@ -3002,7 +3054,7 @@ DetectedSet</p>
</dt>
<dd>
<p>Returns friendly units nearby the FAC units sorted per distance ...</p>
<p>Returns the distance used to identify friendlies near the deteted item ...</p>
<h3>Parameter</h3>
<ul>
@@ -3014,8 +3066,8 @@ DetectedSet</p>
</ul>
<h3>Return value</h3>
<p><em><a href="##(map)">#map</a>:</em></p>
<h1>number,Wrapper.Unit#UNIT> The map of Friendly UNITs.</h1>
<p><em>#number:</em>
The distance. </p>
</dd>
</dl>
@@ -3246,6 +3298,34 @@ self</p>
<p><em><a href="##(DETECTION_BASE)">#DETECTION_BASE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(DETECTION_BASE).Intercept" >
<strong>DETECTION_BASE.Intercept</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(DETECTION_BASE).InterceptDelay" >
<strong>DETECTION_BASE.InterceptDelay</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
@@ -4117,6 +4197,44 @@ self</p>
<dl class="function">
<dt>
<a id="#(DETECTION_BASE).SetIntercept" >
<strong>DETECTION_BASE:SetIntercept(Intercept, IntereptDelay, InterceptDelay)</strong>
</a>
</dt>
<dd>
<p>Set the parameters to calculate to optimal intercept point.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#boolean Intercept </em></code>:
Intercept is true if an intercept point is calculated. Intercept is false if it is disabled. The default Intercept is false.</p>
</li>
<li>
<p><code><em>#number IntereptDelay </em></code>:
If Intercept is true, then InterceptDelay is the average time it takes to get airplanes airborne.</p>
</li>
<li>
<p><code><em> InterceptDelay </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(DETECTION_BASE)">#DETECTION_BASE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_BASE).SetRejectZones" >
<strong>DETECTION_BASE:SetRejectZones(RejectZones)</strong>
</a>
@@ -4540,6 +4658,20 @@ The To State string.</p>
<p>-- The identifier of the detected area.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(DETECTION_BASE.DetectedItem).InterceptCoord" >
<strong>DETECTION_BASE.DetectedItem.InterceptCoord</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">

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

@@ -2200,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">
@@ -2752,9 +2749,6 @@ when nothing was spawned.</p>
<p> By default, no InitLimit</p>
</dd>
</dl>
<dl class="function">
@@ -2790,7 +2784,7 @@ when nothing was spawned.</p>
<dl class="function">
<dt>
<em>#number</em>
<em></em>
<a id="#(SPAWN).SpawnMaxGroups" >
<strong>SPAWN.SpawnMaxGroups</strong>
</a>
@@ -2807,7 +2801,7 @@ when nothing was spawned.</p>
<dl class="function">
<dt>
<em>#number</em>
<em></em>
<a id="#(SPAWN).SpawnMaxUnitsAlive" >
<strong>SPAWN.SpawnMaxUnitsAlive</strong>
</a>
@@ -3135,7 +3129,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>

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