mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Fixed some glitches in Detection (when set is empty) + documentation
This commit is contained in:
@@ -1304,11 +1304,49 @@ The route points define the form of the CAP zone polygon. </p>
|
||||
<p>This prevents airbases to get cluttered with airplanes taking off, it also reduces the risk of human players colliding with taxiiing airplanes,
|
||||
resulting in the airbase to halt operations.</p>
|
||||
|
||||
<p>You can change the way how planes take off by using the inherited methods from AI_A2A_DISPATCHER:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronTakeoff">AI<em>A2A</em>DISPATCHER.SetSquadronTakeoff</a>() is the generic configuration method to control takeoff from the air, hot, cold or from the runway. See the method for further details.</li>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronTakeoffInAir">AI<em>A2A</em>DISPATCHER.SetSquadronTakeoffInAir</a>() will spawn new aircraft from the squadron directly in the air.</li>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronTakeoffFromParkingCold">AI<em>A2A</em>DISPATCHER.SetSquadronTakeoffFromParkingCold</a>() will spawn new aircraft in without running engines at a parking spot at the airfield.</li>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronTakeoffFromParkingHot">AI<em>A2A</em>DISPATCHER.SetSquadronTakeoffFromParkingHot</a>() will spawn new aircraft in with running engines at a parking spot at the airfield.</li>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronTakeoffFromRunway">AI<em>A2A</em>DISPATCHER.SetSquadronTakeoffFromRunway</a>() will spawn new aircraft at the runway at the airfield.</li>
|
||||
</ul>
|
||||
|
||||
<p>Use these methods to fine-tune for specific airfields that are known to create bottlenecks, or have reduced airbase efficiency.
|
||||
The more and the longer aircraft need to taxi at an airfield, the more risk there is that:</p>
|
||||
|
||||
<ul>
|
||||
<li>aircraft will stop waiting for each other or for a landing aircraft before takeoff.</li>
|
||||
<li>aircraft may get into a "dead-lock" situation, where two aircraft are blocking each other.</li>
|
||||
<li>aircraft may collide at the airbase.</li>
|
||||
<li>aircraft may be awaiting the landing of a plane currently in the air, but never lands ...</li>
|
||||
</ul>
|
||||
|
||||
<p>Currently within the DCS engine, the airfield traffic coordination is erroneous and contains a lot of bugs.
|
||||
If you experience while testing problems with aircraft take-off or landing, please use one of the above methods as a solution to workaround these issues!</p>
|
||||
|
||||
<h3>2.2) Planes return near the airbase or will land if damaged.</h3>
|
||||
|
||||
<p>When damaged airplanes return to the airbase, they will be routed and will dissapear in the air when they are near the airbase.
|
||||
There are exceptions to this rule, airplanes that aren't "listening" anymore due to damage or out of fuel, will return to the airbase and land.</p>
|
||||
|
||||
<p>You can change the way how planes land by using the inherited methods from AI_A2A_DISPATCHER:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronLanding">AI<em>A2A</em>DISPATCHER.SetSquadronLanding</a>() is the generic configuration method to control landing, namely despawn the aircraft near the airfield in the air, right after landing, or at engine shutdown.</li>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronLandingNearAirbase">AI<em>A2A</em>DISPATCHER.SetSquadronLandingNearAirbase</a>() will despawn the returning aircraft in the air when near the airfield.</li>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronLandingAtRunway">AI<em>A2A</em>DISPATCHER.SetSquadronLandingAtRunway</a>() will despawn the returning aircraft directly after landing at the runway.</li>
|
||||
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronLandingAtEngineShutdown">AI<em>A2A</em>DISPATCHER.SetSquadronLandingAtEngineShutdown</a>() will despawn the returning aircraft when the aircraft has returned to its parking spot and has turned off its engines.</li>
|
||||
</ul>
|
||||
|
||||
<p>You can use these methods to minimize the airbase coodination overhead and to increase the airbase efficiency.
|
||||
When there are lots of aircraft returning for landing, at the same airbase, the takeoff process will be halted, which can cause a complete failure of the
|
||||
A2A defense system, as no new CAP or GCI planes can takeoff.
|
||||
Note that the method <a href="##(AI_A2A_DISPATCHER).SetSquadronLandingNearAirbase">AI<em>A2A</em>DISPATCHER.SetSquadronLandingNearAirbase</a>() will only work for returning aircraft, not for damaged or out of fuel aircraft.
|
||||
Damaged or out-of-fuel aircraft are returning to the nearest friendly airbase and will land, and are out of control from ground control.</p>
|
||||
|
||||
<h3>2.3) CAP operations setup for specific airbases, will be executed with the following parameters:</h3>
|
||||
|
||||
<ul>
|
||||
@@ -1317,12 +1355,55 @@ There are exceptions to this rule, airplanes that aren't "listening" anymore due
|
||||
<li>The engage speed between 800 and 1200 km/h.</li>
|
||||
</ul>
|
||||
|
||||
<p>You can change or add a CAP zone by using the inherited methods from AI_A2A_DISPATCHER:</p>
|
||||
|
||||
<p>The method <a href="##(AI_A2A_DISPATCHER).SetSquadronCap">AI<em>A2A</em>DISPATCHER.SetSquadronCap</a>() defines a CAP execution for a squadron.</p>
|
||||
|
||||
<p>Setting-up a CAP zone also requires specific parameters:</p>
|
||||
|
||||
<ul>
|
||||
<li>The minimum and maximum altitude</li>
|
||||
<li>The minimum speed and maximum patrol speed</li>
|
||||
<li>The minimum and maximum engage speed</li>
|
||||
<li>The type of altitude measurement</li>
|
||||
</ul>
|
||||
|
||||
<p>These define how the squadron will perform the CAP while partrolling. Different terrain types requires different types of CAP. </p>
|
||||
|
||||
<p>The <a href="##(AI_A2A_DISPATCHER).SetSquadronCapInterval">AI<em>A2A</em>DISPATCHER.SetSquadronCapInterval</a>() method specifies <strong>how much</strong> and <strong>when</strong> CAP flights will takeoff.</p>
|
||||
|
||||
<p>It is recommended not to overload the air defense with CAP flights, as these will decrease the performance of the overall system. </p>
|
||||
|
||||
<p>For example, the following setup will create a CAP for squadron "Sochi":</p>
|
||||
|
||||
<p> A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )</p>
|
||||
|
||||
<h3>2.4) Each airbase will perform GCI when required, with the following parameters:</h3>
|
||||
|
||||
<ul>
|
||||
<li>The engage speed is between 800 and 1200 km/h.</li>
|
||||
</ul>
|
||||
|
||||
<p>You can change or add a GCI parameters by using the inherited methods from AI_A2A_DISPATCHER:</p>
|
||||
|
||||
<p>The method <a href="##(AI_A2A_DISPATCHER).SetSquadronGci">AI<em>A2A</em>DISPATCHER.SetSquadronGci</a>() defines a GCI execution for a squadron.</p>
|
||||
|
||||
<p>Setting-up a GCI readiness also requires specific parameters:</p>
|
||||
|
||||
<ul>
|
||||
<li>The minimum speed and maximum patrol speed</li>
|
||||
</ul>
|
||||
|
||||
<p>Essentially this controls how many flights of GCI aircraft can be active at any time.
|
||||
Note allowing large numbers of active GCI flights can adversely impact mission performance on low or medium specification hosts/servers.
|
||||
GCI needs to be setup at strategic airbases. Too far will mean that the aircraft need to fly a long way to reach the intruders,
|
||||
too short will mean that the intruders may have alraedy passed the ideal interception point!</p>
|
||||
|
||||
<p>For example, the following setup will create a GCI for squadron "Sochi":</p>
|
||||
|
||||
<p> A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )</p>
|
||||
|
||||
<h3>2.5) Grouping or detected targets.</h3>
|
||||
|
||||
<p>Detected targets are constantly re-grouped, that is, when certain detected aircraft are moving further than the group radius, then these aircraft will become a separate
|
||||
@@ -1342,9 +1423,6 @@ Each defense system needs its own EWR network setup, airplane templates and CAP
|
||||
|
||||
<p>This is a good implementation, because maybe in the future, more coalitions may become available in DCS world.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<h2>4) Coding example how to use the AI_A2A_GCICAP class:</h2>
|
||||
|
||||
<pre><code> -- Setup the AI_A2A_GCICAP dispatcher for one coalition, and initialize it.
|
||||
|
||||
@@ -926,6 +926,9 @@ 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">
|
||||
|
||||
@@ -917,7 +917,6 @@ function below will use the range 1-7 just in case</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(DESIGNATE).LaserCodes" >
|
||||
<strong>DESIGNATE.LaserCodes</strong>
|
||||
</a>
|
||||
|
||||
@@ -196,6 +196,12 @@ DETECTION uses the in-built detection capabilities of DCS World, but adds new fu
|
||||
<td class="name" nowrap="nowrap"><a href="##(DETECTION_AREAS).ClassName">DETECTION_AREAS.ClassName</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(DETECTION_AREAS).CountryID">DETECTION_AREAS.CountryID</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -368,12 +374,6 @@ DETECTION uses the in-built detection capabilities of DCS World, but adds new fu
|
||||
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).CleanDetectionItem">DETECTION_BASE:CleanDetectionItem(DetectedItem, DetectedItemID)</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="name" nowrap="nowrap"><a href="##(DETECTION_BASE).CountryID">DETECTION_BASE.CountryID</a></td>
|
||||
<td class="summary">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -1596,6 +1596,20 @@ self</p>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(DETECTION_AREAS).CountryID" >
|
||||
<strong>DETECTION_AREAS.CountryID</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -2243,20 +2257,6 @@ The index of the DetectedItem.</p>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(DETECTION_BASE).CountryID" >
|
||||
<strong>DETECTION_BASE.CountryID</strong>
|
||||
</a>
|
||||
</dt>
|
||||
<dd>
|
||||
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -2393,7 +2393,6 @@ The index of the DetectedItem.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em>#number</em>
|
||||
<a id="#(DETECTION_BASE).DetectedItemCount" >
|
||||
<strong>DETECTION_BASE.DetectedItemCount</strong>
|
||||
</a>
|
||||
@@ -2407,7 +2406,6 @@ The index of the DetectedItem.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em>#number</em>
|
||||
<a id="#(DETECTION_BASE).DetectedItemMax" >
|
||||
<strong>DETECTION_BASE.DetectedItemMax</strong>
|
||||
</a>
|
||||
@@ -2565,7 +2563,7 @@ The index of the DetectedItem.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em>#number</em>
|
||||
<em></em>
|
||||
<a id="#(DETECTION_BASE).DetectionInterval" >
|
||||
<strong>DETECTION_BASE.DetectionInterval</strong>
|
||||
</a>
|
||||
|
||||
@@ -1598,7 +1598,7 @@ A string defining the start state.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<em>#string</em>
|
||||
<a id="#(FSM)._StartState" >
|
||||
<strong>FSM._StartState</strong>
|
||||
</a>
|
||||
@@ -1897,7 +1897,6 @@ A string defining the start state.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<a id="#(FSM).current" >
|
||||
<strong>FSM.current</strong>
|
||||
</a>
|
||||
|
||||
@@ -227,7 +227,6 @@ on defined intervals (currently every minute).</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em>#number</em>
|
||||
<a id="#(MOVEMENT).AliveUnits" >
|
||||
<strong>MOVEMENT.AliveUnits</strong>
|
||||
</a>
|
||||
@@ -236,9 +235,6 @@ on defined intervals (currently every minute).</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p> Contains the counter how many units are currently alive</p>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
|
||||
@@ -2194,6 +2194,9 @@ 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">
|
||||
@@ -2726,6 +2729,9 @@ when nothing was spawned.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p> Overwrite unit names by default with group name.</p>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -2740,6 +2746,9 @@ when nothing was spawned.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p> By default, no InitLimit</p>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="function">
|
||||
@@ -2775,7 +2784,7 @@ when nothing was spawned.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<em>#number</em>
|
||||
<a id="#(SPAWN).SpawnMaxGroups" >
|
||||
<strong>SPAWN.SpawnMaxGroups</strong>
|
||||
</a>
|
||||
@@ -2792,7 +2801,7 @@ when nothing was spawned.</p>
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<em>#number</em>
|
||||
<a id="#(SPAWN).SpawnMaxUnitsAlive" >
|
||||
<strong>SPAWN.SpawnMaxUnitsAlive</strong>
|
||||
</a>
|
||||
@@ -3120,7 +3129,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
|
||||
<dl class="function">
|
||||
<dt>
|
||||
|
||||
<em></em>
|
||||
<em>#boolean</em>
|
||||
<a id="#(SPAWN).SpawnUnControlled" >
|
||||
<strong>SPAWN.SpawnUnControlled</strong>
|
||||
</a>
|
||||
@@ -3144,7 +3153,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
|
||||
|
||||
|
||||
|
||||
<p> When the first Spawn executes, all the Groups need to be made visible before start.</p>
|
||||
<p> Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.</p>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -630,7 +630,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>
|
||||
|
||||
Reference in New Issue
Block a user