MOOSE generated documentation [skip ci]

This commit is contained in:
Applevangelist 2021-12-28 10:09:15 +00:00
parent 823c49c6a2
commit d99593df6b
53 changed files with 1174 additions and 1245 deletions

View File

@ -1549,8 +1549,8 @@ Upon arrival at the 3D point, a new random 3D point will be selected within the
<p><img src="..\Presentations\AI_CAP\Dia10.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_CAP\Dia10.JPG" alt="Process"/></p>
<p>Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. <p>Until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_CAP\Dia13.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_CAP\Dia13.JPG" alt="Process"/></p>
@ -1585,7 +1585,7 @@ When the fuel treshold has been reached, the airplane will fly towards the neare
<li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li> <li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li>
<li>**<a href="##(AI_A2A_CAP).Destroy">AI_A2A_CAP.Destroy</a>**: The AI has destroyed a bogey <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li> <li>**<a href="##(AI_A2A_CAP).Destroy">AI_A2A_CAP.Destroy</a>**: The AI has destroyed a bogey <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li>
<li>**<a href="##(AI_A2A_CAP).Destroyed">AI_A2A_CAP.Destroyed</a>**: The AI has destroyed all bogeys <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li> <li>**<a href="##(AI_A2A_CAP).Destroyed">AI_A2A_CAP.Destroyed</a>**: The AI has destroyed all bogeys <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li>
<li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB.</li> <li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the thresholds have been reached, the AI will RTB.</li>
</ul> </ul>
<h2>3. Set the Range of Engagement</h2> <h2>3. Set the Range of Engagement</h2>
@ -2127,7 +2127,7 @@ Use the method <a href="AI.AI_Cap.html##(AI_A2A_CAP).SetEngageZone">AI.AI_Cap#AI
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_CAP).SetDamageThreshold">AI_A2A_CAP:SetDamageThreshold(PatrolDamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_CAP).SetDamageThreshold">AI_A2A_CAP:SetDamageThreshold(PatrolDamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -6387,14 +6387,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<h2><a id="#(AI_A2A_CAP).SetDamageThreshold" ><strong>AI_A2A_CAP:SetDamageThreshold(PatrolDamageThreshold)</strong></a></h2> <h2><a id="#(AI_A2A_CAP).SetDamageThreshold" ><strong>AI_A2A_CAP:SetDamageThreshold(PatrolDamageThreshold)</strong></a></h2>
</div> </div>
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
<p>However, damage cannot be foreseen early on. <p>However, damage cannot be foreseen early on.
Therefore, when the damage treshold is reached, Therefore, when the damage threshold is reached,
the AI will return immediately to the home base (RTB). the AI will return immediately to the home base (RTB).
Note that for groups, the average damage of the complete group will be calculated. Note that for groups, the average damage of the complete group will be calculated.
So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.</p> So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage threshold will be 0.25.</p>
<div id= "#Functions##SetDamageThreshold" class="w3-show w3-white"> <div id= "#Functions##SetDamageThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -6412,7 +6412,7 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p> <p>The threshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p>
</div> </div>
</div> </div>
@ -6515,8 +6515,8 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p> <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. <p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_AIR. When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_AIR.
Once the time is finished, the old AI will return to the base.</p> Once the time is finished, the old AI will return to the base.</p>
<div id= "#Functions##SetFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetFuelThreshold" class="w3-show w3-white">
@ -6535,7 +6535,7 @@ Once the time is finished, the old AI will return to the base.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p> <p>The threshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</div> </div>
</div> </div>

View File

@ -1537,7 +1537,7 @@ Controls a network of short range air/missile defense groups.</p>
<p>AI_A2A_DISPATCHER is the main A2A defense class that models the A2A defense system. <p>AI_A2A_DISPATCHER is the main A2A defense class that models the A2A defense system.
AI_A2A_GCICAP derives or inherits from AI_A2A_DISPATCHER and is a more <strong>noob</strong> user friendly class, but is less flexible.</p> AI_A2A_GCICAP derives or inherits from AI_A2A_DISPATCHER and is a more <strong>noob</strong> user friendly class, but is less flexible.</p>
<p>Before you start using the AI_A2A_DISPATCHER or AI_A2A_GCICAP ask youself the following questions.</p> <p>Before you start using the AI_A2A_DISPATCHER or AI_A2A_GCICAP ask yourself the following questions.</p>
<h2>0. Do I need AI_A2A_DISPATCHER or do I need AI_A2A_GCICAP?</h2> <h2>0. Do I need AI_A2A_DISPATCHER or do I need AI_A2A_GCICAP?</h2>
@ -1581,7 +1581,7 @@ if the border is crossed by enemy units.</p>
<p>A good functioning defense will have a "maximum range" evaluated to the enemy when CAP will be engaged or GCI will be spawned.</p> <p>A good functioning defense will have a "maximum range" evaluated to the enemy when CAP will be engaged or GCI will be spawned.</p>
<h2>6. Which Airbases, Carrier Ships, Farps will take part in the defense system for the Coalition?</h2> <h2>6. Which Airbases, Carrier Ships, FARPs will take part in the defense system for the Coalition?</h2>
<p>Carefully plan which airbases will take part in the coalition. Color each airbase in the color of the coalition.</p> <p>Carefully plan which airbases will take part in the coalition. Color each airbase in the color of the coalition.</p>
@ -1590,7 +1590,7 @@ if the border is crossed by enemy units.</p>
<p>The defense system works with Squadrons. Each Squadron must be given a unique name, that forms the <strong>key</strong> to the defense system. <p>The defense system works with Squadrons. Each Squadron must be given a unique name, that forms the <strong>key</strong> to the defense system.
Several options and activities can be set per Squadron.</p> Several options and activities can be set per Squadron.</p>
<h2>8. Where will the Squadrons be located? On Airbases? On Carrier Ships? On Farps?</h2> <h2>8. Where will the Squadrons be located? On Airbases? On Carrier Ships? On FARPs?</h2>
<p>Squadrons are placed as the "home base" on an airfield, carrier or farp. <p>Squadrons are placed as the "home base" on an airfield, carrier or farp.
Carefully plan where each Squadron will be located as part of the defense system.</p> Carefully plan where each Squadron will be located as part of the defense system.</p>
@ -1654,7 +1654,7 @@ Not all Squadrons need to perform GCI.</p>
<li>From a parking spot with cold engines</li> <li>From a parking spot with cold engines</li>
</ul> </ul>
<p><strong>The default takeoff method is staight in the air.</strong></p> <p><strong>The default takeoff method is straight in the air.</strong></p>
<h2>17. For each Squadron, which landing method will I use?</h2> <h2>17. For each Squadron, which landing method will I use?</h2>
@ -1784,7 +1784,7 @@ A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
<strong>DetectionSetGroup</strong> is then being configured to filter all active groups with a group name starting with <strong>DF CCCP AWACS</strong> or <strong>DF CCCP EWR</strong> to be included in the Set. <strong>DetectionSetGroup</strong> is then being configured to filter all active groups with a group name starting with <strong>DF CCCP AWACS</strong> or <strong>DF CCCP EWR</strong> to be included in the Set.
<strong>DetectionSetGroup</strong> is then being ordered to start the dynamic filtering. Note that any destroy or new spawn of a group with the above names will be removed or added to the Set.</p> <strong>DetectionSetGroup</strong> is then being ordered to start the dynamic filtering. Note that any destroy or new spawn of a group with the above names will be removed or added to the Set.</p>
<p>Then a new Detection object is created from the class DETECTION_AREAS. A grouping radius of 30000 is choosen, which is 30km. <p>Then a new Detection object is created from the class DETECTION_AREAS. A grouping radius of 30000 is chosen, which is 30km.
The <strong>Detection</strong> object is then passed to the <a href="##(AI_A2A_DISPATCHER).New">AI_A2A_DISPATCHER.New</a>() method to indicate the EWR network configuration and setup the A2A defense detection mechanism.</p> The <strong>Detection</strong> object is then passed to the <a href="##(AI_A2A_DISPATCHER).New">AI_A2A_DISPATCHER.New</a>() method to indicate the EWR network configuration and setup the A2A defense detection mechanism.</p>
<p>You could build a <strong>mutual defense system</strong> like this:</p> <p>You could build a <strong>mutual defense system</strong> like this:</p>
@ -2010,7 +2010,7 @@ If this parameter is not specified, then the default altitude will be used for t
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronLandingAtEngineShutdown">AI_A2A_DISPATCHER.SetSquadronLandingAtEngineShutdown</a>() will despawn the returning aircraft when the aircraft has returned to its parking spot and has turned off its engines.</li> <li><a href="##(AI_A2A_DISPATCHER).SetSquadronLandingAtEngineShutdown">AI_A2A_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> </ul>
<p>You can use these methods to minimize the airbase coodination overhead and to increase the airbase efficiency. <p>You can use these methods to minimize the airbase coordination 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 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. A2A defense system, as no new CAP or GCI planes can takeoff.
Note that the method <a href="##(AI_A2A_DISPATCHER).SetSquadronLandingNearAirbase">AI_A2A_DISPATCHER.SetSquadronLandingNearAirbase</a>() will only work for returning aircraft, not for damaged or out of fuel aircraft. Note that the method <a href="##(AI_A2A_DISPATCHER).SetSquadronLandingNearAirbase">AI_A2A_DISPATCHER.SetSquadronLandingNearAirbase</a>() will only work for returning aircraft, not for damaged or out of fuel aircraft.
@ -2039,7 +2039,7 @@ And for a couple of squadrons overrides this default method.</p>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia12.JPG" alt="Banner Image"/></p> <p><img src="..\Presentations\AI_A2A_DISPATCHER\Dia12.JPG" alt="Banner Image"/></p>
<p>In the case of GCI, the <a href="##(AI_A2A_DISPATCHER).SetSquadronGrouping">AI_A2A_DISPATCHER.SetSquadronGrouping</a>() method has additional behaviour. When there aren't enough CAP flights airborne, a GCI will be initiated for the remaining <p>In the case of GCI, the <a href="##(AI_A2A_DISPATCHER).SetSquadronGrouping">AI_A2A_DISPATCHER.SetSquadronGrouping</a>() method has additional behavior. When there aren't enough CAP flights airborne, a GCI will be initiated for the remaining
targets to be engaged. Depending on the grouping parameter, the spawned flights for GCI are grouped into this setting. targets to be engaged. Depending on the grouping parameter, the spawned flights for GCI are grouped into this setting.
For example with a group setting of 2, if 3 targets are detected and cannot be engaged by CAP or any airborne flight, 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> 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>
@ -2076,13 +2076,13 @@ multiplied by the Overhead and rounded up to the smallest integer.</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> <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> <h2>6.5. Squadron fuel threshold.</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: <p>When an airplane gets <strong>out of fuel</strong> to a certain %, 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 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> - 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_A2A_DISPATCHER.SetSquadronFuelThreshold</a>() to set the <strong>squadron fuel treshold</strong> of spawned airplanes for all squadrons.</p> <p>Use the method <a href="##(AI_A2A_DISPATCHER).SetSquadronFuelThreshold">AI_A2A_DISPATCHER.SetSquadronFuelThreshold</a>() to set the <strong>squadron fuel threshold</strong> of spawned airplanes for all squadrons.</p>
<h2>7. Setup a squadron for CAP</h2> <h2>7. Setup a squadron for CAP</h2>
@ -2149,7 +2149,7 @@ Zones can be circles, can be setup in the mission editor using trigger zones, bu
<li>The type of altitude measurement</li> <li>The type of altitude measurement</li>
</ul> </ul>
<p>These define how the squadron will perform the CAP while partrolling. Different terrain types requires different types of CAP.</p> <p>These define how the squadron will perform the CAP while patrolling. Different terrain types requires different types of CAP.</p>
<p>The <a href="##(AI_A2A_DISPATCHER).SetSquadronCapInterval">AI_A2A_DISPATCHER.SetSquadronCapInterval</a>() method specifies <strong>how much</strong> and <strong>when</strong> CAP flights will takeoff.</p> <p>The <a href="##(AI_A2A_DISPATCHER).SetSquadronCapInterval">AI_A2A_DISPATCHER.SetSquadronCapInterval</a>() method specifies <strong>how much</strong> and <strong>when</strong> CAP flights will takeoff.</p>
@ -2223,7 +2223,7 @@ whole pattern lies within the patrol zone.</p>
<p>Essentially this controls how many flights of GCI aircraft can be active at any time. <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. 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, 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> too short will mean that the intruders may have already passed the ideal interception point!</p>
<p>For example, the following setup will create a GCI for squadron "Sochi":</p> <p>For example, the following setup will create a GCI for squadron "Sochi":</p>
@ -2286,17 +2286,17 @@ For some default settings, a method is available that allows you to tweak the de
<p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultGrouping">AI_A2A_DISPATCHER.SetDefaultGrouping</a>() to set the <strong>default grouping</strong> of spawned airplanes for all squadrons.</p> <p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultGrouping">AI_A2A_DISPATCHER.SetDefaultGrouping</a>() to set the <strong>default grouping</strong> of spawned airplanes for all squadrons.</p>
<h2>10.5. Default RTB fuel treshold.</h2> <h2>10.5. Default RTB fuel threshold.</h2>
<p>When an airplane gets <strong>out of fuel</strong> to a certain %-tage, which is <strong>15% (0.15)</strong>, it will go RTB, and will be replaced with a new airplane when applicable.</p> <p>When an airplane gets <strong>out of fuel</strong> to a certain %, which is <strong>15% (0.15)</strong>, it will go RTB, and will be replaced with a new airplane when applicable.</p>
<p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultFuelThreshold">AI_A2A_DISPATCHER.SetDefaultFuelThreshold</a>() to set the <strong>default fuel treshold</strong> of spawned airplanes for all squadrons.</p> <p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultFuelThreshold">AI_A2A_DISPATCHER.SetDefaultFuelThreshold</a>() to set the <strong>default fuel threshold</strong> of spawned airplanes for all squadrons.</p>
<h2>10.6. Default RTB damage treshold.</h2> <h2>10.6. Default RTB damage threshold.</h2>
<p>When an airplane is <strong>damaged</strong> to a certain %-tage, which is <strong>40% (0.40)</strong>, it will go RTB, and will be replaced with a new airplane when applicable.</p> <p>When an airplane is <strong>damaged</strong> to a certain %, which is <strong>40% (0.40)</strong>, it will go RTB, and will be replaced with a new airplane when applicable.</p>
<p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultDamageThreshold">AI_A2A_DISPATCHER.SetDefaultDamageThreshold</a>() to set the <strong>default damage treshold</strong> of spawned airplanes for all squadrons.</p> <p>Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultDamageThreshold">AI_A2A_DISPATCHER.SetDefaultDamageThreshold</a>() to set the <strong>default damage threshold</strong> of spawned airplanes for all squadrons.</p>
<h2>10.7. Default settings for CAP.</h2> <h2>10.7. Default settings for CAP.</h2>
@ -2325,7 +2325,7 @@ 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. <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_A2A_DISPATCHER.SetDefaultTanker</a>() to set the tanker for the dispatcher. Then, use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultTanker">AI_A2A_DISPATCHER.SetDefaultTanker</a>() to set the tanker for the dispatcher.
Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultFuelThreshold">AI_A2A_DISPATCHER.SetDefaultFuelThreshold</a>() to set the %-tage left in the defender airplane tanks when a refuel action is needed.</p> Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultFuelThreshold">AI_A2A_DISPATCHER.SetDefaultFuelThreshold</a>() to set the % 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>When the tanker specified is alive and in the air, the tanker will be used for refuelling.</p>
@ -2339,7 +2339,7 @@ Use the method <a href="##(AI_A2A_DISPATCHER).SetDefaultFuelThreshold">AI_A2A_DI
A2ADispatcher:SetSquadronCapInterval("Sochi", 2, 30, 600, 1 ) A2ADispatcher:SetSquadronCapInterval("Sochi", 2, 30, 600, 1 )
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 ) A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
-- Set the default tanker for refuelling to "Tanker", when the default fuel treshold has reached 90% fuel left. -- Set the default tanker for refuelling to "Tanker", when the default fuel threshold has reached 90% fuel left.
A2ADispatcher:SetDefaultFuelThreshold( 0.9 ) A2ADispatcher:SetDefaultFuelThreshold( 0.9 )
A2ADispatcher:SetDefaultTanker( "Tanker" ) A2ADispatcher:SetDefaultTanker( "Tanker" )
</code></pre> </code></pre>
@ -2516,13 +2516,13 @@ without a route, and should only have ONE unit.</p>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\AI_A2A_GCICAP-ME_4.JPG" alt="Mission Editor Action"/></p> <p><img src="..\Presentations\AI_A2A_DISPATCHER\AI_A2A_GCICAP-ME_4.JPG" alt="Mission Editor Action"/></p>
<p><strong>All airplane or helicopter groups that are starting with any of the choosen Template Prefixes will result in a squadron created at the airbase.</strong></p> <p><strong>All airplane or helicopter groups that are starting with any of the chosen Template Prefixes will result in a squadron created at the airbase.</strong></p>
<h3>1.4) Place floating helicopters to create the CAP zones defined by its route points.</h3> <h3>1.4) Place floating helicopters to create the CAP zones defined by its route points.</h3>
<p><img src="..\Presentations\AI_A2A_DISPATCHER\AI_A2A_GCICAP-ME_5.JPG" alt="Mission Editor Action"/></p> <p><img src="..\Presentations\AI_A2A_DISPATCHER\AI_A2A_GCICAP-ME_5.JPG" alt="Mission Editor Action"/></p>
<p><strong>All airplane or helicopter groups that are starting with any of the choosen Template Prefixes will result in a squadron created at the airbase.</strong></p> <p><strong>All airplane or helicopter groups that are starting with any of the chosen Template Prefixes will result in a squadron created at the airbase.</strong></p>
<p>The helicopter indicates the start of the CAP zone. <p>The helicopter indicates the start of the CAP zone.
The route points define the form of the CAP zone polygon.</p> The route points define the form of the CAP zone polygon.</p>
@ -2535,7 +2535,7 @@ The route points define the form of the CAP zone polygon.</p>
<h3>2.1) Planes are taking off in the air from the airbases.</h3> <h3>2.1) Planes are taking off in the air from the airbases.</h3>
<p>This prevents airbases to get cluttered with airplanes taking off, it also reduces the risk of human players colliding with taxiiing airplanes, <p>This prevents airbases to get cluttered with airplanes taking off, it also reduces the risk of human players colliding with taxiing airplanes,
resulting in the airbase to halt operations.</p> 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> <p>You can change the way how planes take off by using the inherited methods from AI_A2A_DISPATCHER:</p>
@ -2563,7 +2563,7 @@ If you experience while testing problems with aircraft take-off or landing, plea
<h3>2.2) Planes return near the airbase or will land if damaged.</h3> <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. <p>When damaged airplanes return to the airbase, they will be routed and will disappear 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> 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> <p>You can change the way how planes land by using the inherited methods from AI_A2A_DISPATCHER:</p>
@ -2575,7 +2575,7 @@ There are exceptions to this rule, airplanes that aren't "listening" anymore due
<li><a href="##(AI_A2A_DISPATCHER).SetSquadronLandingAtEngineShutdown">AI_A2A_DISPATCHER.SetSquadronLandingAtEngineShutdown</a>() will despawn the returning aircraft when the aircraft has returned to its parking spot and has turned off its engines.</li> <li><a href="##(AI_A2A_DISPATCHER).SetSquadronLandingAtEngineShutdown">AI_A2A_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> </ul>
<p>You can use these methods to minimize the airbase coodination overhead and to increase the airbase efficiency. <p>You can use these methods to minimize the airbase coordination 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 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. A2A defense system, as no new CAP or GCI planes can takeoff.
Note that the method <a href="##(AI_A2A_DISPATCHER).SetSquadronLandingNearAirbase">AI_A2A_DISPATCHER.SetSquadronLandingNearAirbase</a>() will only work for returning aircraft, not for damaged or out of fuel aircraft. Note that the method <a href="##(AI_A2A_DISPATCHER).SetSquadronLandingNearAirbase">AI_A2A_DISPATCHER.SetSquadronLandingNearAirbase</a>() will only work for returning aircraft, not for damaged or out of fuel aircraft.
@ -2602,7 +2602,7 @@ Damaged or out-of-fuel aircraft are returning to the nearest friendly airbase an
<li>The type of altitude measurement</li> <li>The type of altitude measurement</li>
</ul> </ul>
<p>These define how the squadron will perform the CAP while partrolling. Different terrain types requires different types of CAP.</p> <p>These define how the squadron will perform the CAP while patrolling. Different terrain types requires different types of CAP.</p>
<p>The <a href="##(AI_A2A_DISPATCHER).SetSquadronCapInterval">AI_A2A_DISPATCHER.SetSquadronCapInterval</a>() method specifies <strong>how much</strong> and <strong>when</strong> CAP flights will takeoff.</p> <p>The <a href="##(AI_A2A_DISPATCHER).SetSquadronCapInterval">AI_A2A_DISPATCHER.SetSquadronCapInterval</a>() method specifies <strong>how much</strong> and <strong>when</strong> CAP flights will takeoff.</p>
@ -2632,7 +2632,7 @@ Damaged or out-of-fuel aircraft are returning to the nearest friendly airbase an
<p>Essentially this controls how many flights of GCI aircraft can be active at any time. <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. 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, 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> too short will mean that the intruders may have already passed the ideal interception point!</p>
<p>For example, the following setup will create a GCI for squadron "Sochi":</p> <p>For example, the following setup will create a GCI for squadron "Sochi":</p>
@ -2673,10 +2673,9 @@ The following parameters were given to the :New method of AI_A2A_GCICAP, and mea
These late activated Groups start with the name <code>SQUADRON CCCP</code>. Each Group object contains only one Unit, and defines the weapon payload, skin and skill level.</li> These late activated Groups start with the name <code>SQUADRON CCCP</code>. Each Group object contains only one Unit, and defines the weapon payload, skin and skill level.</li>
<li><code>"CAP CCCP"</code>: CAP Zones are defined using floating, late activated Helicopter Group objects, where the route points define the route of the polygon of the CAP Zone. <li><code>"CAP CCCP"</code>: CAP Zones are defined using floating, late activated Helicopter Group objects, where the route points define the route of the polygon of the CAP Zone.
These Helicopter Group objects start with the name <code>CAP CCCP</code>, and will be the locations wherein CAP will be performed.</li> These Helicopter Group objects start with the name <code>CAP CCCP</code>, and will be the locations wherein CAP will be performed.</li>
<li><code>2</code> Defines how many CAP airplanes are patrolling in each CAP zone defined simulateneously.</li> <li><code>2</code> Defines how many CAP airplanes are patrolling in each CAP zone defined simultaneously.</li>
</ul> </ul>
<h3>4.2) A more advanced setup:</h3> <h3>4.2) A more advanced setup:</h3>
<pre><code> -- Setup the AI_A2A_GCICAP dispatcher for the blue coalition. <pre><code> -- Setup the AI_A2A_GCICAP dispatcher for the blue coalition.
@ -2694,7 +2693,7 @@ The following parameters were given to the :New method of AI_A2A_GCICAP, and mea
<li><code>{ "104th CAP" }</code>: An array of the names of the CAP zones are defined using floating, late activated helicopter group objects, <li><code>{ "104th CAP" }</code>: An array of the names of the CAP zones are defined using floating, late activated helicopter group objects,
where the route points define the route of the polygon of the CAP Zone. where the route points define the route of the polygon of the CAP Zone.
These Helicopter Group objects start with the name <code>104th CAP</code>, and will be the locations wherein CAP will be performed.</li> These Helicopter Group objects start with the name <code>104th CAP</code>, and will be the locations wherein CAP will be performed.</li>
<li><code>4</code> Defines how many CAP airplanes are patrolling in each CAP zone defined simulateneously.</li> <li><code>4</code> Defines how many CAP airplanes are patrolling in each CAP zone defined simultaneously.</li>
</ul> </ul>
@ -2952,7 +2951,7 @@ The following parameters were given to the :New method of AI_A2A_GCICAP, and mea
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER).Landing">AI_A2A_DISPATCHER.Landing</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER).Landing">AI_A2A_DISPATCHER.Landing</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Defnes Landing location.</p> <p>Defines Landing type/location.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -3090,13 +3089,13 @@ The following parameters were given to the :New method of AI_A2A_GCICAP, and mea
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER).SetDefaultDamageThreshold">AI_A2A_DISPATCHER:SetDefaultDamageThreshold(DamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER).SetDefaultDamageThreshold">AI_A2A_DISPATCHER:SetDefaultDamageThreshold(DamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Set the default damage treshold when defenders will RTB.</p> <p>Set the default damage threshold when defenders will RTB.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER).SetDefaultFuelThreshold">AI_A2A_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER).SetDefaultFuelThreshold">AI_A2A_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Set the default fuel treshold when defenders will RTB or Refuel in the air.</p> <p>Set the default fuel threshold when defenders will RTB or Refuel in the air.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -3246,7 +3245,7 @@ The following parameters were given to the :New method of AI_A2A_GCICAP, and mea
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER).SetSquadronFuelThreshold">AI_A2A_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER).SetSquadronFuelThreshold">AI_A2A_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Set the fuel treshold for the squadron when defenders will RTB or Refuel in the air.</p> <p>Set the fuel threshold for the squadron when defenders will RTB or Refuel in the air.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -4541,7 +4540,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER.Squadron).Spawn">AI_A2A_DISPATCHER.Squadron.Spawn</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2A_DISPATCHER.Squadron).Spawn">AI_A2A_DISPATCHER.Squadron.Spawn</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Table of spaws Core.Spawn#SPAWN.</p> <p>Table of spawns Core.Spawn#SPAWN.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -4717,7 +4716,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
#table #table
<a id="#(AI_A2A_DISPATCHER).Landing" ><strong>AI_A2A_DISPATCHER.Landing</strong></a> <a id="#(AI_A2A_DISPATCHER).Landing" ><strong>AI_A2A_DISPATCHER.Landing</strong></a>
<p>Defnes Landing location.</p> <p>Defines Landing type/location.</p>
</div> </div>
@ -6074,8 +6073,8 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- Set the Squadron visible before startup of dispatcher. -- Set the Squadron visible before startup of dispatcher.
local IsVisible = A2ADispatcher:IsSquadronVisible( "Mineralnye" ) local IsVisible = A2ADispatcher:IsSquadronVisible( "Mineralnye" )
</code></pre> </code></pre>
</div> </div>
@ -6092,9 +6091,9 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p>AI_A2A_DISPATCHER constructor.</p> <p>AI_A2A_DISPATCHER constructor.</p>
<p>This is defining the A2A DISPATCHER for one coaliton. <p>This is defining the A2A DISPATCHER for one coalition.
The Dispatcher works with a <a href="Functional.Detection.html##(DETECTION_BASE)">Functional.Detection#DETECTION_BASE</a> object that is taking of the detection of targets using the EWR units. The Dispatcher works with a <a href="Functional.Detection.html##(DETECTION_BASE)">Functional.Detection#DETECTION_BASE</a> object that is taking of the detection of targets using the EWR units.
The Detection object is polymorphic, depending on the type of detection object choosen, the detection will work differently.</p> The Detection object is polymorphic, depending on the type of detection object chosen, the detection will work differently.</p>
<div id= "#Functions##New" class="w3-show w3-white"> <div id= "#Functions##New" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -6129,18 +6128,18 @@ The Detection object is polymorphic, depending on the type of detection object c
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- Setup the Detection, using DETECTION_AREAS. -- Setup the Detection, using DETECTION_AREAS.
-- First define the SET of GROUPs that are defining the EWR network. -- First define the SET of GROUPs that are defining the EWR network.
-- Here with prefixes DF CCCP AWACS, DF CCCP EWR. -- Here with prefixes DF CCCP AWACS, DF CCCP EWR.
DetectionSetGroup = SET_GROUP:New() DetectionSetGroup = SET_GROUP:New()
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } ) DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
DetectionSetGroup:FilterStart() DetectionSetGroup:FilterStart()
-- Define the DETECTION_AREAS, using the DetectionSetGroup, with a 30km grouping radius. -- Define the DETECTION_AREAS, using the DetectionSetGroup, with a 30km grouping radius.
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 ) Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
-- Now Setup the A2A dispatcher, and initialize it using the Detection object. -- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection ) -- A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
</code></pre> </code></pre>
</div> </div>
@ -7381,10 +7380,10 @@ or
<h2><a id="#(AI_A2A_DISPATCHER).SetDefaultDamageThreshold" ><strong>AI_A2A_DISPATCHER:SetDefaultDamageThreshold(DamageThreshold)</strong></a></h2> <h2><a id="#(AI_A2A_DISPATCHER).SetDefaultDamageThreshold" ><strong>AI_A2A_DISPATCHER:SetDefaultDamageThreshold(DamageThreshold)</strong></a></h2>
</div> </div>
<p>Set the default damage treshold when defenders will RTB.</p> <p>Set the default damage threshold when defenders will RTB.</p>
<p>The default damage treshold is by default set to 40%, which means that when the airplane is 40% damaged, it will go RTB.</p> <p>The default damage threshold is by default set to 40%, which means that when the airplane is 40% damaged, it will go RTB.</p>
<div id= "#Functions##SetDefaultDamageThreshold" class="w3-show w3-white"> <div id= "#Functions##SetDefaultDamageThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -7402,7 +7401,7 @@ or
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>A decimal number between 0 and 1, that expresses the %-tage of the damage treshold before going RTB.</p> <p>A decimal number between 0 and 1, that expresses the % of the damage threshold before going RTB.</p>
</div> </div>
</div> </div>
@ -7422,7 +7421,7 @@ or
-- Now Setup the A2A dispatcher, and initialize it using the Detection object. -- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection ) A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
-- Now Setup the default damage treshold. -- Now Setup the default damage threshold.
A2ADispatcher:SetDefaultDamageThreshold( 0.90 ) -- Go RTB when the airplane 90% damaged. A2ADispatcher:SetDefaultDamageThreshold( 0.90 ) -- Go RTB when the airplane 90% damaged.
</code></pre> </code></pre>
@ -7437,10 +7436,10 @@ or
<h2><a id="#(AI_A2A_DISPATCHER).SetDefaultFuelThreshold" ><strong>AI_A2A_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</strong></a></h2> <h2><a id="#(AI_A2A_DISPATCHER).SetDefaultFuelThreshold" ><strong>AI_A2A_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</strong></a></h2>
</div> </div>
<p>Set the default fuel treshold when defenders will RTB or Refuel in the air.</p> <p>Set the default fuel threshold 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> <p>The fuel threshold 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>
<div id= "#Functions##SetDefaultFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetDefaultFuelThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -7458,7 +7457,7 @@ or
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>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> <p>A decimal number between 0 and 1, that expresses the % of the threshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p>
</div> </div>
</div> </div>
@ -7478,7 +7477,7 @@ or
-- Now Setup the A2A dispatcher, and initialize it using the Detection object. -- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection ) A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
A2ADispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. A2ADispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
</code></pre> </code></pre>
@ -7536,7 +7535,6 @@ or
-- Set a grouping by default per 2 airplanes. -- Set a grouping by default per 2 airplanes.
A2ADispatcher:SetDefaultGrouping( 2 ) A2ADispatcher:SetDefaultGrouping( 2 )
</code></pre> </code></pre>
</div> </div>
@ -7744,8 +7742,18 @@ or
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The %-tage of Units that dispatching command will allocate to intercept in surplus of detected amount of units. <p>The % of Units that dispatching command will allocate to intercept in surplus of detected amount of units.</p>
The default overhead is 1, so equal balance. The <a href="##(AI_A2A_DISPATCHER).SetOverhead">AI_A2A_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength,
</div>
</div>
<h2><strong>Return value:</strong></h2>
<div class="w3-row w3-border-bottom w3-margin-left">
<div class="w3-half">
<p><a href="##(AI_A2A_DISPATCHER)">#AI_A2A_DISPATCHER</a>:</p>
</div>
<div class="w3-half">
<p>The default overhead is 1, so equal balance. The <a href="##(AI_A2A_DISPATCHER).SetOverhead">AI_A2A_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength,
taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance A2A missiles payload, may still be less effective than a F-15C with short missiles... taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance A2A missiles payload, may still be less effective than a F-15C with short missiles...
So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes. So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes.
The overhead must be given as a decimal value with 1 as the neutral value, which means that Overhead values:</p> The overhead must be given as a decimal value with 1 as the neutral value, which means that Overhead values:</p>
@ -7763,17 +7771,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>See example below.</p> <p>See example below.</p>
</div>
</div>
<h2><strong>Return value:</strong></h2>
<div class="w3-row w3-border-bottom w3-margin-left">
<div class="w3-half">
<p><a href="##(AI_A2A_DISPATCHER)">#AI_A2A_DISPATCHER</a>:</p>
</div>
<div class="w3-half">
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -7831,7 +7828,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -7850,7 +7846,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
-- Let new flights by default take-off from the airbase cold. -- Let new flights by default take-off from the airbase cold.
A2ADispatcher:SetDefaultTakeoff( AI_A2A_Dispatcher.Takeoff.Cold ) A2ADispatcher:SetDefaultTakeoff( AI_A2A_Dispatcher.Takeoff.Cold )
</code></pre> </code></pre>
</div> </div>
@ -7881,7 +7876,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -7921,7 +7915,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -7961,7 +7954,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -8001,7 +7993,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -8055,7 +8046,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -8116,11 +8106,12 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
-- Now Setup the A2A dispatcher, and initialize it using the Detection object. -- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection ) A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
A2ADispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. A2ADispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
-- Now Setup the default tanker. -- Now Setup the default tanker.
A2ADispatcher:SetDefaultTanker( "Tanker" ) -- The group name of the tanker is "Tanker" in the Mission Editor.</code></pre> A2ADispatcher:SetDefaultTanker( "Tanker" ) -- The group name of the tanker is "Tanker" in the Mission Editor.
</code></pre>
</div> </div>
@ -8325,7 +8316,7 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
A2ADispatcher:SetDisengageRadius( 50000 ) A2ADispatcher:SetDisengageRadius( 50000 )
-- Set 100km as the Disengage Radius. -- Set 100km as the Disengage Radius.
A2ADispatcher:SetDisngageRadius() -- 300000 is the default value. A2ADispatcher:SetDisengageRadius() -- 300000 is the default value.
</code></pre> </code></pre>
</div> </div>
@ -8627,7 +8618,6 @@ If you have only one prefix name for a squadron, you don't need to use the <code
<p>(optional) A number that specifies how many resources are in stock of the squadron. If not specified, the squadron will have infinite resources available.</p> <p>(optional) A number that specifies how many resources are in stock of the squadron. If not specified, the squadron will have infinite resources available.</p>
</div> </div>
</div> </div>
<h2><strong>Return value:</strong></h2> <h2><strong>Return value:</strong></h2>
@ -8639,6 +8629,7 @@ If you have only one prefix name for a squadron, you don't need to use the <code
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usages:</strong></h2> <h2><strong>Usages:</strong></h2>
@ -8662,7 +8653,6 @@ If you have only one prefix name for a squadron, you don't need to use the <code
-- The ResourceCount parameter is not given in the SetSquadron method. -- The ResourceCount parameter is not given in the SetSquadron method.
A2ADispatcher:SetSquadron( "104th", "Batumi", "Mig-29" ) A2ADispatcher:SetSquadron( "104th", "Batumi", "Mig-29" )
A2ADispatcher:SetSquadron( "23th", "Batumi", "Su-27" ) A2ADispatcher:SetSquadron( "23th", "Batumi", "Su-27" )
</code></pre></li> </code></pre></li>
</ul> </ul>
@ -8816,18 +8806,18 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- CAP Squadron execution. -- CAP Squadron execution.
CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) ) CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 ) A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 ) A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 )
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) ) CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" ) A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 ) A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
CAPZoneMiddle = ZONE:New( "CAP Zone Middle") CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" ) A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" )
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 ) A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
</code></pre> </code></pre>
</div> </div>
@ -9019,24 +9009,24 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- CAP Squadron execution. -- CAP Squadron execution.
CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) ) CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
-- Setup a CAP, engaging between 800 and 900 km/h, altitude 30 (above the sea), radio altitude measurement, -- Setup a CAP, engaging between 800 and 900 km/h, altitude 30 (above the sea), radio altitude measurement,
-- patrolling speed between 500 and 600 km/h, altitude between 4000 and 10000 meters, barometric altitude measurement. -- patrolling speed between 500 and 600 km/h, altitude between 4000 and 10000 meters, barometric altitude measurement.
A2ADispatcher:SetSquadronCapV2( "Mineralnye", 800, 900, 30, 30, "RADIO", CAPZoneEast, 500, 600, 4000, 10000, "BARO" ) A2ADispatcher:SetSquadronCapV2( "Mineralnye", 800, 900, 30, 30, "RADIO", CAPZoneEast, 500, 600, 4000, 10000, "BARO" )
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 ) A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 )
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) ) CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
-- Setup a CAP, engaging between 800 and 1200 km/h, altitude between 4000 and 10000 meters, radio altitude measurement, -- Setup a CAP, engaging between 800 and 1200 km/h, altitude between 4000 and 10000 meters, radio altitude measurement,
-- patrolling speed between 600 and 800 km/h, altitude between 4000 and 8000, barometric altitude measurement. -- patrolling speed between 600 and 800 km/h, altitude between 4000 and 8000, barometric altitude measurement.
A2ADispatcher:SetSquadronCapV2( "Sochi", 800, 1200, 2000, 3000, "RADIO", CAPZoneWest, 600, 800, 4000, 8000, "BARO" ) A2ADispatcher:SetSquadronCapV2( "Sochi", 800, 1200, 2000, 3000, "RADIO", CAPZoneWest, 600, 800, 4000, 8000, "BARO" )
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 ) A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
CAPZoneMiddle = ZONE:New( "CAP Zone Middle") CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
-- Setup a CAP, engaging between 800 and 1200 km/h, altitude between 5000 and 8000 meters, barometric altitude measurement, -- Setup a CAP, engaging between 800 and 1200 km/h, altitude between 5000 and 8000 meters, barometric altitude measurement,
-- patrolling speed between 600 and 800 km/h, altitude between 4000 and 8000, radio altitude. -- patrolling speed between 600 and 800 km/h, altitude between 4000 and 8000, radio altitude.
A2ADispatcher:SetSquadronCapV2( "Maykop", 800, 1200, 5000, 8000, "BARO", CAPZoneMiddle, 600, 800, 4000, 8000, "RADIO" ) A2ADispatcher:SetSquadronCapV2( "Maykop", 800, 1200, 5000, 8000, "BARO", CAPZoneMiddle, 600, 800, 4000, 8000, "RADIO" )
A2ADispatcher:SetSquadronCapInterval( "Maykop", 2, 30, 120, 1 ) A2ADispatcher:SetSquadronCapInterval( "Maykop", 2, 30, 120, 1 )
</code></pre> </code></pre>
</div> </div>
@ -9137,18 +9127,18 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- CAP Squadron execution. -- CAP Squadron execution.
CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) ) CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 ) A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 ) A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 )
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) ) CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" ) A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 ) A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
CAPZoneMiddle = ZONE:New( "CAP Zone Middle") CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" ) A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" )
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 ) A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
</code></pre> </code></pre>
</div> </div>
@ -9297,10 +9287,10 @@ If you have only one prefix name for a squadron, you don't need to use the <code
<h2><a id="#(AI_A2A_DISPATCHER).SetSquadronFuelThreshold" ><strong>AI_A2A_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</strong></a></h2> <h2><a id="#(AI_A2A_DISPATCHER).SetSquadronFuelThreshold" ><strong>AI_A2A_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</strong></a></h2>
</div> </div>
<p>Set the fuel treshold for the squadron when defenders will RTB or Refuel in the air.</p> <p>Set the fuel threshold 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> <p>The fuel threshold 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>
<div id= "#Functions##SetSquadronFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetSquadronFuelThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -9331,7 +9321,7 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>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> <p>A decimal number between 0 and 1, that expresses the % of the threshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p>
</div> </div>
</div> </div>
@ -9351,7 +9341,7 @@ If you have only one prefix name for a squadron, you don't need to use the <code
-- Now Setup the A2A dispatcher, and initialize it using the Detection object. -- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection ) A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
A2ADispatcher:SetSquadronFuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. A2ADispatcher:SetSquadronFuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
</code></pre> </code></pre>
@ -9427,10 +9417,10 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- GCI Squadron execution. -- GCI Squadron execution.
A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 ) A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )
A2ADispatcher:SetSquadronGci( "Novo", 900, 2100 ) A2ADispatcher:SetSquadronGci( "Novo", 900, 2100 )
A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 ) A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 )
</code></pre> </code></pre>
</div> </div>
@ -9544,10 +9534,10 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- GCI Squadron execution. -- GCI Squadron execution.
A2ADispatcher:SetSquadronGci2( "Mozdok", 900, 1200, 5000, 5000, "BARO" ) A2ADispatcher:SetSquadronGci2( "Mozdok", 900, 1200, 5000, 5000, "BARO" )
A2ADispatcher:SetSquadronGci2( "Novo", 900, 2100, 30, 30, "RADIO" ) A2ADispatcher:SetSquadronGci2( "Novo", 900, 2100, 30, 30, "RADIO" )
A2ADispatcher:SetSquadronGci2( "Maykop", 900, 1200, 100, 300, "RADIO" ) A2ADispatcher:SetSquadronGci2( "Maykop", 900, 1200, 100, 300, "RADIO" )
</code></pre> </code></pre>
</div> </div>
@ -9617,7 +9607,6 @@ If you have only one prefix name for a squadron, you don't need to use the <code
-- Set a grouping per 2 airplanes. -- Set a grouping per 2 airplanes.
A2ADispatcher:SetSquadronGrouping( "SquadronName", 2 ) A2ADispatcher:SetSquadronGrouping( "SquadronName", 2 )
</code></pre> </code></pre>
</div> </div>
@ -9961,7 +9950,18 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The %-tage of Units that dispatching command will allocate to intercept in surplus of detected amount of units. <p>The % of Units that dispatching command will allocate to intercept in surplus of detected amount of units.</p>
</div>
</div>
<h2><strong>Return value:</strong></h2>
<div class="w3-row w3-border-bottom w3-margin-left">
<div class="w3-half">
<p><a href="##(AI_A2A_DISPATCHER)">#AI_A2A_DISPATCHER</a>:</p>
</div>
<div class="w3-half">
<p>self
The default overhead is 1, so equal balance. The <a href="##(AI_A2A_DISPATCHER).SetOverhead">AI_A2A_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength, The default overhead is 1, so equal balance. The <a href="##(AI_A2A_DISPATCHER).SetOverhead">AI_A2A_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength,
taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance A2A missiles payload, may still be less effective than a F-15C with short missiles... taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance A2A missiles payload, may still be less effective than a F-15C with short missiles...
So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes. So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes.
@ -9980,17 +9980,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>See example below.</p> <p>See example below.</p>
</div>
</div>
<h2><strong>Return value:</strong></h2>
<div class="w3-row w3-border-bottom w3-margin-left">
<div class="w3-half">
<p><a href="##(AI_A2A_DISPATCHER)">#AI_A2A_DISPATCHER</a>:</p>
</div>
<div class="w3-half">
<p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -10133,7 +10122,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -10152,7 +10140,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
-- Let new flights take-off from the airbase cold. -- Let new flights take-off from the airbase cold.
A2ADispatcher:SetSquadronTakeoff( "SquadronName", AI_A2A_Dispatcher.Takeoff.Cold ) A2ADispatcher:SetSquadronTakeoff( "SquadronName", AI_A2A_Dispatcher.Takeoff.Cold )
</code></pre> </code></pre>
</div> </div>
@ -10197,7 +10184,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -10251,7 +10237,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -10305,7 +10290,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -10372,7 +10356,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -10439,7 +10422,6 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
<p>self</p> <p>self</p>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
@ -10513,11 +10495,12 @@ multiplied by the Overhead and rounded up to the smallest integer.</p>
-- Now Setup the A2A dispatcher, and initialize it using the Detection object. -- Now Setup the A2A dispatcher, and initialize it using the Detection object.
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection ) A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
-- Now Setup the squadron fuel treshold. -- Now Setup the squadron fuel threshold.
A2ADispatcher:SetSquadronFuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. A2ADispatcher:SetSquadronFuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
-- Now Setup the squadron tanker. -- Now Setup the squadron tanker.
A2ADispatcher:SetSquadronTanker( "SquadronName", "Tanker" ) -- The group name of the tanker is "Tanker" in the Mission Editor.</code></pre> A2ADispatcher:SetSquadronTanker( "SquadronName", "Tanker" ) -- The group name of the tanker is "Tanker" in the Mission Editor.
</code></pre>
</div> </div>
@ -10569,8 +10552,8 @@ They will lock the parking spot.</p>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- Set the Squadron visible before startup of dispatcher. -- Set the Squadron visible before startup of dispatcher.
A2ADispatcher:SetSquadronVisible( "Mineralnye" ) A2ADispatcher:SetSquadronVisible( "Mineralnye" )
</code></pre> </code></pre>
</div> </div>
@ -11217,7 +11200,7 @@ They will lock the parking spot.</p>
#table #table
<a id="#(AI_A2A_DISPATCHER).Landing" ><strong>AI_A2A_DISPATCHER.Landing</strong></a> <a id="#(AI_A2A_DISPATCHER).Landing" ><strong>AI_A2A_DISPATCHER.Landing</strong></a>
<p>Defnes Landing location.</p> <p>Defines Landing type/location.</p>
</div> </div>
@ -12468,7 +12451,7 @@ They will lock the parking spot.</p>
#table #table
<a id="#(AI_A2A_DISPATCHER).Landing" ><strong>AI_A2A_DISPATCHER.Landing</strong></a> <a id="#(AI_A2A_DISPATCHER).Landing" ><strong>AI_A2A_DISPATCHER.Landing</strong></a>
<p>Defnes Landing location.</p> <p>Defines Landing type/location.</p>
</div> </div>
@ -14025,7 +14008,7 @@ They will lock the parking spot.</p>
#table #table
<a id="#(AI_A2A_DISPATCHER).Landing" ><strong>AI_A2A_DISPATCHER.Landing</strong></a> <a id="#(AI_A2A_DISPATCHER).Landing" ><strong>AI_A2A_DISPATCHER.Landing</strong></a>
<p>Defnes Landing location.</p> <p>Defines Landing type/location.</p>
</div> </div>
@ -17502,7 +17485,7 @@ When moose is loading dynamically (for moose class development), tracing is swit
#table #table
<a id="#(AI_A2A_DISPATCHER.Squadron).Spawn" ><strong>AI_A2A_DISPATCHER.Squadron.Spawn</strong></a> <a id="#(AI_A2A_DISPATCHER.Squadron).Spawn" ><strong>AI_A2A_DISPATCHER.Squadron.Spawn</strong></a>
<p>Table of spaws Core.Spawn#SPAWN.</p> <p>Table of spawns Core.Spawn#SPAWN.</p>
</div> </div>
@ -17804,7 +17787,7 @@ For airplanes, 6000 (6km) is recommended, and is also the default value of this
-- The CAP Zone prefix is nil. No CAP is created. -- The CAP Zone prefix is nil. No CAP is created.
-- The CAP Limit is nil. -- The CAP Limit is nil.
-- The Grouping Radius is nil. The default range of 6km radius will be grouped as a group of targets. -- The Grouping Radius is nil. The default range of 6km radius will be grouped as a group of targets.
-- The Engage Radius is set nil. The default Engage Radius will be used to consider a defenser being assigned to a task. -- The Engage Radius is set nil. The default Engage Radius will be used to consider a defender being assigned to a task.
-- The GCI Radius is nil. Any target detected within the default GCI Radius will be considered for GCI engagement. -- The GCI Radius is nil. Any target detected within the default GCI Radius will be considered for GCI engagement.
-- The amount of resources for each squadron is set to 30. Thus about 30 resources are allocated to each squadron created. -- The amount of resources for each squadron is set to 30. Thus about 30 resources are allocated to each squadron created.
@ -18033,7 +18016,7 @@ For airplanes, 6000 (6km) is recommended, and is also the default value of this
-- The CAP Zone prefix is nil. No CAP is created. -- The CAP Zone prefix is nil. No CAP is created.
-- The CAP Limit is nil. -- The CAP Limit is nil.
-- The Grouping Radius is nil. The default range of 6km radius will be grouped as a group of targets. -- The Grouping Radius is nil. The default range of 6km radius will be grouped as a group of targets.
-- The Engage Radius is set nil. The default Engage Radius will be used to consider a defenser being assigned to a task. -- The Engage Radius is set nil. The default Engage Radius will be used to consider a defender being assigned to a task.
-- The GCI Radius is nil. Any target detected within the default GCI Radius will be considered for GCI engagement. -- The GCI Radius is nil. Any target detected within the default GCI Radius will be considered for GCI engagement.
-- The amount of resources for each squadron is set to 30. Thus about 30 resources are allocated to each squadron created. -- The amount of resources for each squadron is set to 30. Thus about 30 resources are allocated to each squadron created.

View File

@ -1550,8 +1550,8 @@ Upon arrival at the 3D point, a new random 3D point will be selected within the
<p><img src="..\Presentations\AI_GCI\Dia10.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_GCI\Dia10.JPG" alt="Process"/></p>
<p>Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. <p>Until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_GCI\Dia13.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_GCI\Dia13.JPG" alt="Process"/></p>
@ -1586,7 +1586,7 @@ When the fuel treshold has been reached, the airplane will fly towards the neare
<li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li> <li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li>
<li>**<a href="##(AI_A2A_GCI).Destroy">AI_A2A_GCI.Destroy</a>**: The AI has destroyed a bogey <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li> <li>**<a href="##(AI_A2A_GCI).Destroy">AI_A2A_GCI.Destroy</a>**: The AI has destroyed a bogey <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li>
<li>**<a href="##(AI_A2A_GCI).Destroyed">AI_A2A_GCI.Destroyed</a>**: The AI has destroyed all bogeys <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li> <li>**<a href="##(AI_A2A_GCI).Destroyed">AI_A2A_GCI.Destroyed</a>**: The AI has destroyed all bogeys <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li>
<li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB.</li> <li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the thresholds have been reached, the AI will RTB.</li>
</ul> </ul>
<h2>3. Set the Range of Engagement</h2> <h2>3. Set the Range of Engagement</h2>

View File

@ -1548,8 +1548,8 @@ use derived AI_ classes to model AI offensive or defensive behaviour.</p>
<p><img src="..\Presentations\AI_PATROL\Dia10.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_PATROL\Dia10.JPG" alt="Process"/></p>
<p>Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. <p>Until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_PATROL\Dia11.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_PATROL\Dia11.JPG" alt="Process"/></p>
@ -1582,7 +1582,7 @@ When the fuel treshold has been reached, the airplane will fly towards the neare
<li><strong>RTB</strong> ( Group ): Route the AI to the home base.</li> <li><strong>RTB</strong> ( Group ): Route the AI to the home base.</li>
<li><strong>Detect</strong> ( Group ): The AI is detecting targets.</li> <li><strong>Detect</strong> ( Group ): The AI is detecting targets.</li>
<li><strong>Detected</strong> ( Group ): The AI has detected new targets.</li> <li><strong>Detected</strong> ( Group ): The AI has detected new targets.</li>
<li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB.</li> <li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the thresholds have been reached, the AI will RTB.</li>
</ul> </ul>
<h2>3. Set or Get the AI controllable</h2> <h2>3. Set or Get the AI controllable</h2>
@ -1621,8 +1621,8 @@ according the weather conditions.</p>
<h2>6. Manage the "out of fuel" in the AI_A2A_PATROL</h2> <h2>6. Manage the "out of fuel" in the AI_A2A_PATROL</h2>
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.
Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit,
while a new AI is targetted to the AI_A2A_PATROL. while a new AI is targetted to the AI_A2A_PATROL.
Once the time is finished, the old AI will return to the base. Once the time is finished, the old AI will return to the base.
Use the method <a href="##(AI_A2A_PATROL).ManageFuel">AI_A2A_PATROL.ManageFuel</a>() to have this proces in place.</p> Use the method <a href="##(AI_A2A_PATROL).ManageFuel">AI_A2A_PATROL.ManageFuel</a>() to have this proces in place.</p>
@ -1630,7 +1630,7 @@ Use the method <a href="##(AI_A2A_PATROL).ManageFuel">AI_A2A_PATROL.ManageFuel</
<h2>7. Manage "damage" behaviour of the AI in the AI_A2A_PATROL</h2> <h2>7. Manage "damage" behaviour of the AI in the AI_A2A_PATROL</h2>
<p>When the AI is damaged, it is required that a new Patrol is started. However, damage cannon be foreseen early on. <p>When the AI is damaged, it is required that a new Patrol is started. However, damage cannon be foreseen early on.
Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB). Therefore, when the damage threshold is reached, the AI will return immediately to the home base (RTB).
Use the method <a href="##(AI_A2A_PATROL).ManageDamage">AI_A2A_PATROL.ManageDamage</a>() to have this proces in place.</p> Use the method <a href="##(AI_A2A_PATROL).ManageDamage">AI_A2A_PATROL.ManageDamage</a>() to have this proces in place.</p>
<hr/> <hr/>

View File

@ -2951,7 +2951,7 @@ of the squadron are destroyed. This is to keep consistency of air operations and
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2G_DISPATCHER).SetDefaultFuelThreshold">AI_A2G_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2G_DISPATCHER).SetDefaultFuelThreshold">AI_A2G_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Set the default fuel treshold when defenders will RTB or Refuel in the air.</p> <p>Set the default fuel threshold when defenders will RTB or Refuel in the air.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -3197,7 +3197,7 @@ of the squadron are destroyed. This is to keep consistency of air operations and
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2G_DISPATCHER).SetSquadronFuelThreshold">AI_A2G_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_A2G_DISPATCHER).SetSquadronFuelThreshold">AI_A2G_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Set the fuel treshold for the squadron when defenders will RTB or Refuel in the air.</p> <p>Set the fuel threshold for the squadron when defenders will RTB or Refuel in the air.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -4647,17 +4647,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> The Defender Default Settings over all Squadrons.</p> <p> The Defender Default Settings over all Squadrons.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_A2G_DISPATCHER).DefenderPatrolIndex" ><strong>AI_A2G_DISPATCHER.DefenderPatrolIndex</strong></a>
</div> </div>
</div> </div>
@ -7546,10 +7535,10 @@ or
<h2><a id="#(AI_A2G_DISPATCHER).SetDefaultFuelThreshold" ><strong>AI_A2G_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</strong></a></h2> <h2><a id="#(AI_A2G_DISPATCHER).SetDefaultFuelThreshold" ><strong>AI_A2G_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</strong></a></h2>
</div> </div>
<p>Set the default fuel treshold when defenders will RTB or Refuel in the air.</p> <p>Set the default fuel threshold when defenders will RTB or Refuel in the air.</p>
<p>The fuel treshold is by default set to 15%, which means that an aircraft will stay in the air until 15% of its fuel is remaining.</p> <p>The fuel threshold is by default set to 15%, which means that an aircraft will stay in the air until 15% of its fuel is remaining.</p>
<div id= "#Functions##SetDefaultFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetDefaultFuelThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -7567,7 +7556,7 @@ or
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>A decimal number between 0 and 1, that expresses the % of the treshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p> <p>A decimal number between 0 and 1, that expresses the % of the threshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p>
</div> </div>
</div> </div>
@ -7587,7 +7576,7 @@ or
-- Now Setup the A2G dispatcher, and initialize it using the Detection object. -- Now Setup the A2G dispatcher, and initialize it using the Detection object.
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection ) A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
A2GDispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. A2GDispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
</code></pre> </code></pre>
@ -8344,7 +8333,7 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
-- Now Setup the A2G dispatcher, and initialize it using the Detection object. -- Now Setup the A2G dispatcher, and initialize it using the Detection object.
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection ) A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
A2GDispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. A2GDispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
-- Now Setup the default tanker. -- Now Setup the default tanker.
@ -10582,10 +10571,10 @@ If you have only one prefix name for a squadron, you don't need to use the <code
<h2><a id="#(AI_A2G_DISPATCHER).SetSquadronFuelThreshold" ><strong>AI_A2G_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</strong></a></h2> <h2><a id="#(AI_A2G_DISPATCHER).SetSquadronFuelThreshold" ><strong>AI_A2G_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</strong></a></h2>
</div> </div>
<p>Set the fuel treshold for the squadron when defenders will RTB or Refuel in the air.</p> <p>Set the fuel threshold 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 aircraft will stay in the air until 15% of its fuel is remaining.</p> <p>The fuel threshold is by default set to 15%, which means that an aircraft will stay in the air until 15% of its fuel is remaining.</p>
<div id= "#Functions##SetSquadronFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetSquadronFuelThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -10616,7 +10605,7 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>A decimal number between 0 and 1, that expresses the % of the treshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p> <p>A decimal number between 0 and 1, that expresses the % of the threshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p>
</div> </div>
</div> </div>
@ -10636,7 +10625,7 @@ If you have only one prefix name for a squadron, you don't need to use the <code
-- Now Setup the A2G dispatcher, and initialize it using the Detection object. -- Now Setup the A2G dispatcher, and initialize it using the Detection object.
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection ) A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
A2GDispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. A2GDispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
</code></pre> </code></pre>
@ -12460,7 +12449,7 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
-- Now Setup the A2G dispatcher, and initialize it using the Detection object. -- Now Setup the A2G dispatcher, and initialize it using the Detection object.
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection ) A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
-- Now Setup the squadron fuel treshold. -- Now Setup the squadron fuel threshold.
A2GDispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. A2GDispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
-- Now Setup the squadron tanker. -- Now Setup the squadron tanker.
@ -13000,17 +12989,6 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
<p> The Defender Default Settings over all Squadrons.</p> <p> The Defender Default Settings over all Squadrons.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_A2G_DISPATCHER).DefenderPatrolIndex" ><strong>AI_A2G_DISPATCHER.DefenderPatrolIndex</strong></a>
</div> </div>
</div> </div>
@ -14328,17 +14306,6 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
<p> The Defender Default Settings over all Squadrons.</p> <p> The Defender Default Settings over all Squadrons.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_A2G_DISPATCHER).DefenderPatrolIndex" ><strong>AI_A2G_DISPATCHER.DefenderPatrolIndex</strong></a>
</div> </div>
</div> </div>
@ -15962,17 +15929,6 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
<p> The Defender Default Settings over all Squadrons.</p> <p> The Defender Default Settings over all Squadrons.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_A2G_DISPATCHER).DefenderPatrolIndex" ><strong>AI_A2G_DISPATCHER.DefenderPatrolIndex</strong></a>
</div> </div>
</div> </div>

View File

@ -1550,8 +1550,8 @@ Upon arrival at the 3D point, a new random 3D point will be selected within the
<p><img src="..\Presentations\AI_GCI\Dia10.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_GCI\Dia10.JPG" alt="Process"/></p>
<p>Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. <p>Until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_GCI\Dia13.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_GCI\Dia13.JPG" alt="Process"/></p>

View File

@ -1506,11 +1506,11 @@ Controls a network of short range air/missile defense groups.</p>
<li>Setup (CAS) Controlled Air Support squadrons, to attack closeby enemy ground units near friendly installations.</li> <li>Setup (CAS) Controlled Air Support squadrons, to attack closeby enemy ground units near friendly installations.</li>
<li>Setup (BAI) Battleground Air Interdiction squadrons to attack remote enemy ground units and targets.</li> <li>Setup (BAI) Battleground Air Interdiction squadrons to attack remote enemy ground units and targets.</li>
<li>Define and use a detection network controlled by recce.</li> <li>Define and use a detection network controlled by recce.</li>
<li>Define AIR defense squadrons at airbases, farps and carriers.</li> <li>Define AIR defense squadrons at airbases, FARPs and carriers.</li>
<li>Enable airbases for AIR defenses.</li> <li>Enable airbases for AIR defenses.</li>
<li>Add different planes and helicopter templates to squadrons.</li> <li>Add different planes and helicopter templates to squadrons.</li>
<li>Assign squadrons to execute a specific engagement type depending on threat level of the detected ground enemy unit composition.</li> <li>Assign squadrons to execute a specific engagement type depending on threat level of the detected ground enemy unit composition.</li>
<li>Add multiple squadrons to different airbases, farps or carriers.</li> <li>Add multiple squadrons to different airbases, FARPs or carriers.</li>
<li>Define different ranges to engage upon.</li> <li>Define different ranges to engage upon.</li>
<li>Establish an automatic in air refuel process for planes using refuel tankers.</li> <li>Establish an automatic in air refuel process for planes using refuel tankers.</li>
<li>Setup default settings for all squadrons and AIR defenses.</li> <li>Setup default settings for all squadrons and AIR defenses.</li>
@ -1537,7 +1537,7 @@ Controls a network of short range air/missile defense groups.</p>
<p>AI_AIR_DISPATCHER is the main AIR defense class that models the AIR defense system.</p> <p>AI_AIR_DISPATCHER is the main AIR defense class that models the AIR defense system.</p>
<p>Before you start using the AI_AIR_DISPATCHER, ask youself the following questions.</p> <p>Before you start using the AI_AIR_DISPATCHER, ask yourself the following questions.</p>
<h2>1. Which coalition am I modeling an AIR defense system for? blue or red?</h2> <h2>1. Which coalition am I modeling an AIR defense system for? blue or red?</h2>
@ -1627,7 +1627,7 @@ Battleground Air Interdiction (BAI) tasks are launched when there are no friendl
<p>Depending on the defense type, different payloads will be needed. See further points on squadron definition.</p> <p>Depending on the defense type, different payloads will be needed. See further points on squadron definition.</p>
<h2>7. Where will the Squadrons be located? On Airbases? On Carrier Ships? On Farps?</h2> <h2>7. Where will the Squadrons be located? On Airbases? On Carrier Ships? On FARPs?</h2>
<p>Squadrons are placed at the <strong>home base</strong> on an <strong>airfield</strong>, <strong>carrier</strong> or <strong>farp</strong>. <p>Squadrons are placed at the <strong>home base</strong> on an <strong>airfield</strong>, <strong>carrier</strong> or <strong>farp</strong>.
Carefully plan where each Squadron will be located as part of the defense system required for mission effective defenses. Carefully plan where each Squadron will be located as part of the defense system required for mission effective defenses.
@ -1874,7 +1874,7 @@ alerted of new enemy ground targets.</p>
<strong>DetectionSetGroup</strong> is then calling <code>FilterStart()</code>, which is starting the dynamic filtering or inclusion of these groups. <strong>DetectionSetGroup</strong> is then calling <code>FilterStart()</code>, which is starting the dynamic filtering or inclusion of these groups.
Note that any destroy or new spawn of a group having a name, starting with the above prefix, will be removed or added to the set.</p> Note that any destroy or new spawn of a group having a name, starting with the above prefix, will be removed or added to the set.</p>
<p>Then a new detection object is created from the class <code>DETECTION_AREAS</code>. A grouping radius of 1000 meters (1km) is choosen.</p> <p>Then a new detection object is created from the class <code>DETECTION_AREAS</code>. A grouping radius of 1000 meters (1km) is chosen.</p>
<p>The <code>Detection</code> object is then passed to the <a href="##(AI_AIR_DISPATCHER).New">AI_AIR_DISPATCHER.New</a>() method to indicate the reconnaissance network <p>The <code>Detection</code> object is then passed to the <a href="##(AI_AIR_DISPATCHER).New">AI_AIR_DISPATCHER.New</a>() method to indicate the reconnaissance network
configuration and setup the AIR defense detection mechanism.</p> configuration and setup the AIR defense detection mechanism.</p>
@ -2199,7 +2199,7 @@ the way how the aircraft are starting up. Cold starts take the longest duration,
<li><a href="##(AI_AIR_DISPATCHER).SetSquadronLandingAtEngineShutdown">AI_AIR_DISPATCHER.SetSquadronLandingAtEngineShutdown</a>() will despawn the returning aircraft when the aircraft has returned to its parking spot and has turned off its engines.</li> <li><a href="##(AI_AIR_DISPATCHER).SetSquadronLandingAtEngineShutdown">AI_AIR_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> </ul>
<p>You can use these methods to minimize the airbase coodination overhead and to increase the airbase efficiency. <p>You can use these methods to minimize the airbase coordination 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 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. A2A defense system, as no new CAP or GCI planes can takeoff.
Note that the method <a href="##(AI_AIR_DISPATCHER).SetSquadronLandingNearAirbase">AI_AIR_DISPATCHER.SetSquadronLandingNearAirbase</a>() will only work for returning aircraft, not for damaged or out of fuel aircraft. Note that the method <a href="##(AI_AIR_DISPATCHER).SetSquadronLandingNearAirbase">AI_AIR_DISPATCHER.SetSquadronLandingNearAirbase</a>() will only work for returning aircraft, not for damaged or out of fuel aircraft.
@ -2281,13 +2281,13 @@ This limit will avoid an extensive amount of aircraft to engage with the enemy i
<p>Use the method <a href="##(AI_AIR_DISPATCHER).SetSquadronEngageLimit">AI_AIR_DISPATCHER.SetSquadronEngageLimit</a>() to limit the amount of aircraft that will engage with the enemy, per squadron.</p> <p>Use the method <a href="##(AI_AIR_DISPATCHER).SetSquadronEngageLimit">AI_AIR_DISPATCHER.SetSquadronEngageLimit</a>() to limit the amount of aircraft that will engage with the enemy, per squadron.</p>
<h2>4. Set the <strong>fuel treshold</strong>.</h2> <h2>4. Set the <strong>fuel threshold</strong>.</h2>
<p>When aircraft get <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: <p>When aircraft get <strong>out of fuel</strong> to a certain %, which is by default <strong>15% (0.15)</strong>, there are two possible actions that can be taken:
- The aircraft will go RTB, and will be replaced with a new aircraft if possible. - The aircraft will go RTB, and will be replaced with a new aircraft if possible.
- The aircraft will refuel at a tanker, if a tanker has been specified for the squadron.</p> - The aircraft will refuel at a tanker, if a tanker has been specified for the squadron.</p>
<p>Use the method <a href="##(AI_AIR_DISPATCHER).SetSquadronFuelThreshold">AI_AIR_DISPATCHER.SetSquadronFuelThreshold</a>() to set the <strong>squadron fuel treshold</strong> of the aircraft for all squadrons.</p> <p>Use the method <a href="##(AI_AIR_DISPATCHER).SetSquadronFuelThreshold">AI_AIR_DISPATCHER.SetSquadronFuelThreshold</a>() to set the <strong>squadron fuel threshold</strong> of the aircraft for all squadrons.</p>
<h2>6. Other configuration options</h2> <h2>6. Other configuration options</h2>
@ -2347,17 +2347,17 @@ Unless there is a specific behaviour set for a specific squadron, the default co
<p>Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultGrouping">AI_AIR_DISPATCHER.SetDefaultGrouping</a>() to set the <strong>default grouping</strong> of spawned airplanes for all squadrons.</p> <p>Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultGrouping">AI_AIR_DISPATCHER.SetDefaultGrouping</a>() to set the <strong>default grouping</strong> of spawned airplanes for all squadrons.</p>
<h2>10.5. Default RTB fuel treshold.</h2> <h2>10.5. Default RTB fuel threshold.</h2>
<p>When an airplane gets <strong>out of fuel</strong> to a certain %-tage, which is <strong>15% (0.15)</strong>, it will go RTB, and will be replaced with a new airplane when applicable.</p> <p>When an airplane gets <strong>out of fuel</strong> to a certain %, which is <strong>15% (0.15)</strong>, it will go RTB, and will be replaced with a new airplane when applicable.</p>
<p>Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultFuelThreshold">AI_AIR_DISPATCHER.SetDefaultFuelThreshold</a>() to set the <strong>default fuel treshold</strong> of spawned airplanes for all squadrons.</p> <p>Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultFuelThreshold">AI_AIR_DISPATCHER.SetDefaultFuelThreshold</a>() to set the <strong>default fuel threshold</strong> of spawned airplanes for all squadrons.</p>
<h2>10.6. Default RTB damage treshold.</h2> <h2>10.6. Default RTB damage threshold.</h2>
<p>When an airplane is <strong>damaged</strong> to a certain %-tage, which is <strong>40% (0.40)</strong>, it will go RTB, and will be replaced with a new airplane when applicable.</p> <p>When an airplane is <strong>damaged</strong> to a certain %, which is <strong>40% (0.40)</strong>, it will go RTB, and will be replaced with a new airplane when applicable.</p>
<p>Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultDamageThreshold">AI_AIR_DISPATCHER.SetDefaultDamageThreshold</a>() to set the <strong>default damage treshold</strong> of spawned airplanes for all squadrons.</p> <p>Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultDamageThreshold">AI_AIR_DISPATCHER.SetDefaultDamageThreshold</a>() to set the <strong>default damage threshold</strong> of spawned airplanes for all squadrons.</p>
<h2>10.7. Default settings for <strong>patrol</strong>.</h2> <h2>10.7. Default settings for <strong>patrol</strong>.</h2>
@ -2390,7 +2390,7 @@ 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. <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_AIR_DISPATCHER).SetDefaultTanker">AI_AIR_DISPATCHER.SetDefaultTanker</a>() to set the tanker for the dispatcher. Then, use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultTanker">AI_AIR_DISPATCHER.SetDefaultTanker</a>() to set the tanker for the dispatcher.
Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultFuelThreshold">AI_AIR_DISPATCHER.SetDefaultFuelThreshold</a>() to set the %-tage left in the defender airplane tanks when a refuel action is needed.</p> Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultFuelThreshold">AI_AIR_DISPATCHER.SetDefaultFuelThreshold</a>() to set the % 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>When the tanker specified is alive and in the air, the tanker will be used for refuelling.</p>
@ -2404,7 +2404,7 @@ Use the method <a href="##(AI_AIR_DISPATCHER).SetDefaultFuelThreshold">AI_AIR_DI
A2ADispatcher:SetSquadronCapInterval("Sochi", 2, 30, 600, 1 ) A2ADispatcher:SetSquadronCapInterval("Sochi", 2, 30, 600, 1 )
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 ) A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
-- Set the default tanker for refuelling to "Tanker", when the default fuel treshold has reached 90% fuel left. -- Set the default tanker for refuelling to "Tanker", when the default fuel threshold has reached 90% fuel left.
A2ADispatcher:SetDefaultFuelThreshold( 0.9 ) A2ADispatcher:SetDefaultFuelThreshold( 0.9 )
A2ADispatcher:SetDefaultTanker( "Tanker" ) A2ADispatcher:SetDefaultTanker( "Tanker" )
</code></pre> </code></pre>
@ -2450,9 +2450,6 @@ However, the squadron will still stay alive. Any airplane that is airborne will
of the squadron will be destroyed. This to keep consistency of air operations not to confuse the players.</p> of the squadron will be destroyed. This to keep consistency of air operations not to confuse the players.</p>
</div> </div>
</div> </div>
@ -2852,7 +2849,7 @@ of the squadron will be destroyed. This to keep consistency of air operations no
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR_DISPATCHER).SetDefaultDamageThreshold">AI_AIR_DISPATCHER:SetDefaultDamageThreshold(DamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR_DISPATCHER).SetDefaultDamageThreshold">AI_AIR_DISPATCHER:SetDefaultDamageThreshold(DamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Set the default damage treshold when defenders will RTB.</p> <p>Set the default damage threshold when defenders will RTB.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2864,7 +2861,7 @@ of the squadron will be destroyed. This to keep consistency of air operations no
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR_DISPATCHER).SetDefaultFuelThreshold">AI_AIR_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR_DISPATCHER).SetDefaultFuelThreshold">AI_AIR_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Set the default fuel treshold when defenders will RTB or Refuel in the air.</p> <p>Set the default fuel threshold when defenders will RTB or Refuel in the air.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -3044,7 +3041,7 @@ of the squadron will be destroyed. This to keep consistency of air operations no
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR_DISPATCHER).SetSquadronFuelThreshold">AI_AIR_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR_DISPATCHER).SetSquadronFuelThreshold">AI_AIR_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Set the fuel treshold for the squadron when defenders will RTB or Refuel in the air.</p> <p>Set the fuel threshold for the squadron when defenders will RTB or Refuel in the air.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -5469,7 +5466,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The %-tage of Units that dispatching command will allocate to intercept in surplus of detected amount of units. <p>The % of Units that dispatching command will allocate to intercept in surplus of detected amount of units.
The default overhead is 1, so equal balance. The <a href="##(AI_AIR_DISPATCHER).SetOverhead">AI_AIR_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength, The default overhead is 1, so equal balance. The <a href="##(AI_AIR_DISPATCHER).SetOverhead">AI_AIR_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength,
taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance AIR missiles payload, may still be less effective than a F-15C with short missiles... taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance AIR missiles payload, may still be less effective than a F-15C with short missiles...
So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes. So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes.
@ -5664,9 +5661,9 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
<p>AI_AIR_DISPATCHER constructor.</p> <p>AI_AIR_DISPATCHER constructor.</p>
<p>This is defining the AIR DISPATCHER for one coaliton. <p>This is defining the AIR DISPATCHER for one coalition.
The Dispatcher works with a <a href="Functional.Detection.html##(DETECTION_BASE)">Functional.Detection#DETECTION_BASE</a> object that is taking of the detection of targets using the EWR units. The Dispatcher works with a <a href="Functional.Detection.html##(DETECTION_BASE)">Functional.Detection#DETECTION_BASE</a> object that is taking of the detection of targets using the EWR units.
The Detection object is polymorphic, depending on the type of detection object choosen, the detection will work differently.</p> The Detection object is polymorphic, depending on the type of detection object chosen, the detection will work differently.</p>
<div id= "#Functions##New" class="w3-show w3-white"> <div id= "#Functions##New" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5700,19 +5697,19 @@ The Detection object is polymorphic, depending on the type of detection object c
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- Setup the Detection, using DETECTION_AREAS. -- Setup the Detection, using DETECTION_AREAS.
-- First define the SET of GROUPs that are defining the EWR network. -- First define the SET of GROUPs that are defining the EWR network.
-- Here with prefixes DF CCCP AWACS, DF CCCP EWR. -- Here with prefixes DF CCCP AWACS, DF CCCP EWR.
DetectionSetGroup = SET_GROUP:New() DetectionSetGroup = SET_GROUP:New()
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } ) DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
DetectionSetGroup:FilterStart() DetectionSetGroup:FilterStart()
-- Define the DETECTION_AREAS, using the DetectionSetGroup, with a 30km grouping radius.
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
-- Now Setup the AIR dispatcher, and initialize it using the Detection object. -- Define the DETECTION_AREAS, using the DetectionSetGroup, with a 30km grouping radius.
AIRDispatcher = AI_AIR_DISPATCHER:New( Detection ) -- Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
-- Now Setup the AIR dispatcher, and initialize it using the Detection object.
AIRDispatcher = AI_AIR_DISPATCHER:New( Detection )
</code></pre> </code></pre>
</div> </div>
@ -6581,10 +6578,10 @@ or
<h2><a id="#(AI_AIR_DISPATCHER).SetDefaultDamageThreshold" ><strong>AI_AIR_DISPATCHER:SetDefaultDamageThreshold(DamageThreshold)</strong></a></h2> <h2><a id="#(AI_AIR_DISPATCHER).SetDefaultDamageThreshold" ><strong>AI_AIR_DISPATCHER:SetDefaultDamageThreshold(DamageThreshold)</strong></a></h2>
</div> </div>
<p>Set the default damage treshold when defenders will RTB.</p> <p>Set the default damage threshold when defenders will RTB.</p>
<p>The default damage treshold is by default set to 40%, which means that when the airplane is 40% damaged, it will go RTB.</p> <p>The default damage threshold is by default set to 40%, which means that when the airplane is 40% damaged, it will go RTB.</p>
<div id= "#Functions##SetDefaultDamageThreshold" class="w3-show w3-white"> <div id= "#Functions##SetDefaultDamageThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -6602,7 +6599,7 @@ or
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>A decimal number between 0 and 1, that expresses the %-tage of the damage treshold before going RTB.</p> <p>A decimal number between 0 and 1, that expresses the % of the damage threshold before going RTB.</p>
</div> </div>
</div> </div>
@ -6622,7 +6619,7 @@ or
-- Now Setup the AIR dispatcher, and initialize it using the Detection object. -- Now Setup the AIR dispatcher, and initialize it using the Detection object.
AIRDispatcher = AI_AIR_DISPATCHER:New( Detection ) AIRDispatcher = AI_AIR_DISPATCHER:New( Detection )
-- Now Setup the default damage treshold. -- Now Setup the default damage threshold.
AIRDispatcher:SetDefaultDamageThreshold( 0.90 ) -- Go RTB when the airplane 90% damaged. AIRDispatcher:SetDefaultDamageThreshold( 0.90 ) -- Go RTB when the airplane 90% damaged.
</code></pre> </code></pre>
@ -6693,10 +6690,10 @@ or
<h2><a id="#(AI_AIR_DISPATCHER).SetDefaultFuelThreshold" ><strong>AI_AIR_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</strong></a></h2> <h2><a id="#(AI_AIR_DISPATCHER).SetDefaultFuelThreshold" ><strong>AI_AIR_DISPATCHER:SetDefaultFuelThreshold(FuelThreshold)</strong></a></h2>
</div> </div>
<p>Set the default fuel treshold when defenders will RTB or Refuel in the air.</p> <p>Set the default fuel threshold 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> <p>The fuel threshold 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>
<div id= "#Functions##SetDefaultFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetDefaultFuelThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -6714,7 +6711,7 @@ or
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>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> <p>A decimal number between 0 and 1, that expresses the % of the threshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p>
</div> </div>
</div> </div>
@ -6734,7 +6731,7 @@ or
-- Now Setup the AIR dispatcher, and initialize it using the Detection object. -- Now Setup the AIR dispatcher, and initialize it using the Detection object.
AIRDispatcher = AI_AIR_DISPATCHER:New( Detection ) AIRDispatcher = AI_AIR_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
AIRDispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. AIRDispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
</code></pre> </code></pre>
@ -7000,7 +6997,7 @@ or
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The %-tage of Units that dispatching command will allocate to intercept in surplus of detected amount of units. <p>The % of Units that dispatching command will allocate to intercept in surplus of detected amount of units.
The default overhead is 1, so equal balance. The <a href="##(AI_AIR_DISPATCHER).SetOverhead">AI_AIR_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength, The default overhead is 1, so equal balance. The <a href="##(AI_AIR_DISPATCHER).SetOverhead">AI_AIR_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength,
taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance AIR missiles payload, may still be less effective than a F-15C with short missiles... taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance AIR missiles payload, may still be less effective than a F-15C with short missiles...
So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes. So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes.
@ -7491,7 +7488,7 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
-- Now Setup the AIR dispatcher, and initialize it using the Detection object. -- Now Setup the AIR dispatcher, and initialize it using the Detection object.
AIRDispatcher = AI_AIR_DISPATCHER:New( Detection ) AIRDispatcher = AI_AIR_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
AIRDispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. AIRDispatcher:SetDefaultFuelThreshold( 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
-- Now Setup the default tanker. -- Now Setup the default tanker.
@ -8322,10 +8319,10 @@ If you have only one prefix name for a squadron, you don't need to use the <code
<h2><a id="#(AI_AIR_DISPATCHER).SetSquadronFuelThreshold" ><strong>AI_AIR_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</strong></a></h2> <h2><a id="#(AI_AIR_DISPATCHER).SetSquadronFuelThreshold" ><strong>AI_AIR_DISPATCHER:SetSquadronFuelThreshold(SquadronName, FuelThreshold)</strong></a></h2>
</div> </div>
<p>Set the fuel treshold for the squadron when defenders will RTB or Refuel in the air.</p> <p>Set the fuel threshold 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> <p>The fuel threshold 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>
<div id= "#Functions##SetSquadronFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetSquadronFuelThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -8356,7 +8353,7 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>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> <p>A decimal number between 0 and 1, that expresses the % of the threshold of fuel remaining in the tank when the plane will go RTB or Refuel.</p>
</div> </div>
</div> </div>
@ -8376,7 +8373,7 @@ If you have only one prefix name for a squadron, you don't need to use the <code
-- Now Setup the AIR dispatcher, and initialize it using the Detection object. -- Now Setup the AIR dispatcher, and initialize it using the Detection object.
AIRDispatcher = AI_AIR_DISPATCHER:New( Detection ) AIRDispatcher = AI_AIR_DISPATCHER:New( Detection )
-- Now Setup the default fuel treshold. -- Now Setup the default fuel threshold.
AIRDispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. AIRDispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
</code></pre> </code></pre>
@ -8723,7 +8720,7 @@ If you have only one prefix name for a squadron, you don't need to use the <code
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The %-tage of Units that dispatching command will allocate to intercept in surplus of detected amount of units. <p>The % of Units that dispatching command will allocate to intercept in surplus of detected amount of units.
The default overhead is 1, so equal balance. The <a href="##(AI_AIR_DISPATCHER).SetOverhead">AI_AIR_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength, The default overhead is 1, so equal balance. The <a href="##(AI_AIR_DISPATCHER).SetOverhead">AI_AIR_DISPATCHER.SetOverhead</a>() method can be used to tweak the defense strength,
taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance AIR missiles payload, may still be less effective than a F-15C with short missiles... taking into account the plane types of the squadron. For example, a MIG-31 with full long-distance AIR missiles payload, may still be less effective than a F-15C with short missiles...
So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes. So in this case, one may want to use the Overhead method to allocate more defending planes as the amount of detected attacking planes.
@ -9458,7 +9455,7 @@ multiplied by the Overhead and rounded up to the smallest integer. </p>
-- Now Setup the AIR dispatcher, and initialize it using the Detection object. -- Now Setup the AIR dispatcher, and initialize it using the Detection object.
AIRDispatcher = AI_AIR_DISPATCHER:New( Detection ) AIRDispatcher = AI_AIR_DISPATCHER:New( Detection )
-- Now Setup the squadron fuel treshold. -- Now Setup the squadron fuel threshold.
AIRDispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank. AIRDispatcher:SetSquadronRefuelThreshold( "SquadronName", 0.30 ) -- Go RTB when only 30% of fuel remaining in the tank.
-- Now Setup the squadron tanker. -- Now Setup the squadron tanker.

View File

@ -1827,7 +1827,7 @@ and the resulting state will be the <strong>To</strong> state.</p>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR).SetDamageThreshold">AI_AIR:SetDamageThreshold(PatrolDamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR).SetDamageThreshold">AI_AIR:SetDamageThreshold(PatrolDamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2934,17 +2934,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_AIR).IdleCount" ><strong>AI_AIR.IdleCount</strong></a>
</div> </div>
</div> </div>
@ -4509,14 +4498,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<h2><a id="#(AI_AIR).SetDamageThreshold" ><strong>AI_AIR:SetDamageThreshold(PatrolDamageThreshold)</strong></a></h2> <h2><a id="#(AI_AIR).SetDamageThreshold" ><strong>AI_AIR:SetDamageThreshold(PatrolDamageThreshold)</strong></a></h2>
</div> </div>
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
<p>However, damage cannot be foreseen early on. <p>However, damage cannot be foreseen early on.
Therefore, when the damage treshold is reached, Therefore, when the damage threshold is reached,
the AI will return immediately to the home base (RTB). the AI will return immediately to the home base (RTB).
Note that for groups, the average damage of the complete group will be calculated. Note that for groups, the average damage of the complete group will be calculated.
So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.</p> So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage threshold will be 0.25.</p>
<div id= "#Functions##SetDamageThreshold" class="w3-show w3-white"> <div id= "#Functions##SetDamageThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -4534,7 +4523,7 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p> <p>The threshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p>
</div> </div>
</div> </div>
@ -4637,8 +4626,8 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p> <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. <p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_AIR. When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_AIR.
Once the time is finished, the old AI will return to the base.</p> Once the time is finished, the old AI will return to the base.</p>
<div id= "#Functions##SetFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetFuelThreshold" class="w3-show w3-white">
@ -4657,7 +4646,7 @@ Once the time is finished, the old AI will return to the base.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p> <p>The threshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</div> </div>
</div> </div>
@ -5689,17 +5678,6 @@ Once the time is finished, the old AI will return to the base.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_AIR).IdleCount" ><strong>AI_AIR.IdleCount</strong></a>
</div> </div>
</div> </div>
@ -6425,17 +6403,6 @@ Once the time is finished, the old AI will return to the base.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_AIR).IdleCount" ><strong>AI_AIR.IdleCount</strong></a>
</div> </div>
</div> </div>
@ -8053,17 +8020,6 @@ Once the time is finished, the old AI will return to the base.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_AIR).IdleCount" ><strong>AI_AIR.IdleCount</strong></a>
</div> </div>
</div> </div>

View File

@ -1550,8 +1550,8 @@ Upon arrival at the 3D point, a new random 3D point will be selected within the
<p><img src="..\Presentations\AI_GCI\Dia10.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_GCI\Dia10.JPG" alt="Process"/></p>
<p>Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. <p>Until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_GCI\Dia13.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_GCI\Dia13.JPG" alt="Process"/></p>

View File

@ -1549,8 +1549,8 @@ Upon arrival at the 3D point, a new random 3D point will be selected within the
<p><img src="..\Presentations\AI_CAP\Dia10.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_CAP\Dia10.JPG" alt="Process"/></p>
<p>Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. <p>Until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_CAP\Dia13.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_CAP\Dia13.JPG" alt="Process"/></p>
@ -1585,7 +1585,7 @@ When the fuel treshold has been reached, the airplane will fly towards the neare
<li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li> <li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li>
<li>**<a href="##(AI_AIR_PATROL).Destroy">AI_AIR_PATROL.Destroy</a>**: The AI has destroyed a bogey <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li> <li>**<a href="##(AI_AIR_PATROL).Destroy">AI_AIR_PATROL.Destroy</a>**: The AI has destroyed a bogey <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li>
<li>**<a href="##(AI_AIR_PATROL).Destroyed">AI_AIR_PATROL.Destroyed</a>**: The AI has destroyed all bogeys <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li> <li>**<a href="##(AI_AIR_PATROL).Destroyed">AI_AIR_PATROL.Destroyed</a>**: The AI has destroyed all bogeys <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li>
<li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB.</li> <li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the thresholds have been reached, the AI will RTB.</li>
</ul> </ul>
<h2>3. Set the Range of Engagement</h2> <h2>3. Set the Range of Engagement</h2>
@ -2070,7 +2070,7 @@ Use the method <a href="AI.AI_Cap.html##(AI_AIR_PATROL).SetEngageZone">AI.AI_Cap
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR_PATROL).SetDamageThreshold">AI_AIR_PATROL:SetDamageThreshold(PatrolDamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_AIR_PATROL).SetDamageThreshold">AI_AIR_PATROL:SetDamageThreshold(PatrolDamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -5829,14 +5829,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<h2><a id="#(AI_AIR_PATROL).SetDamageThreshold" ><strong>AI_AIR_PATROL:SetDamageThreshold(PatrolDamageThreshold)</strong></a></h2> <h2><a id="#(AI_AIR_PATROL).SetDamageThreshold" ><strong>AI_AIR_PATROL:SetDamageThreshold(PatrolDamageThreshold)</strong></a></h2>
</div> </div>
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
<p>However, damage cannot be foreseen early on. <p>However, damage cannot be foreseen early on.
Therefore, when the damage treshold is reached, Therefore, when the damage threshold is reached,
the AI will return immediately to the home base (RTB). the AI will return immediately to the home base (RTB).
Note that for groups, the average damage of the complete group will be calculated. Note that for groups, the average damage of the complete group will be calculated.
So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.</p> So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage threshold will be 0.25.</p>
<div id= "#Functions##SetDamageThreshold" class="w3-show w3-white"> <div id= "#Functions##SetDamageThreshold" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5854,7 +5854,7 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p> <p>The threshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p>
</div> </div>
</div> </div>
@ -5957,8 +5957,8 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p> <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. <p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_AIR. When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_AIR.
Once the time is finished, the old AI will return to the base.</p> Once the time is finished, the old AI will return to the base.</p>
<div id= "#Functions##SetFuelThreshold" class="w3-show w3-white"> <div id= "#Functions##SetFuelThreshold" class="w3-show w3-white">
@ -5977,7 +5977,7 @@ Once the time is finished, the old AI will return to the base.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p> <p>The threshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</div> </div>
</div> </div>

View File

@ -2437,17 +2437,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(AI_AIR_SQUADRON).ResourceCount" ><strong>AI_AIR_SQUADRON.ResourceCount</strong></a>
</div> </div>
</div> </div>
@ -3519,17 +3508,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(AI_AIR_SQUADRON).ResourceCount" ><strong>AI_AIR_SQUADRON.ResourceCount</strong></a>
</div> </div>
</div> </div>

View File

@ -1559,7 +1559,7 @@ Controls a network of short range air/missile defense groups.</p>
<p>Upon started, The AI will <strong>Route</strong> itself towards the random 3D point within a patrol zone, <p>Upon started, The AI will <strong>Route</strong> itself towards the random 3D point within a patrol zone,
using a random speed within the given altitude and speed limits. using a random speed within the given altitude and speed limits.
Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits.
This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB.</p> This cycle will continue until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.</p>
<p><img src="..\Presentations\AI_BAI\Dia5.JPG" alt="Route Event"/></p> <p><img src="..\Presentations\AI_BAI\Dia5.JPG" alt="Route Event"/></p>
@ -1599,7 +1599,7 @@ Any target that is detected in the Engage Zone will be reported and will be dest
<p>It will keep patrolling there, until it is notified to RTB or move to another BOMB Zone. <p>It will keep patrolling there, until it is notified to RTB or move to another BOMB Zone.
It can be notified to go RTB through the <strong>RTB</strong> event.</p> It can be notified to go RTB through the <strong>RTB</strong> event.</p>
<p>When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> <p>When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_BAI\Dia12.JPG" alt="Engage Event"/></p> <p><img src="..\Presentations\AI_BAI\Dia12.JPG" alt="Engage Event"/></p>
@ -1634,7 +1634,7 @@ It can be notified to go RTB through the <strong>RTB</strong> event.</p>
<li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li> <li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li>
<li>**<a href="##(AI_BAI_ZONE).Destroy">AI_BAI_ZONE.Destroy</a>**: The AI has destroyed a target <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li> <li>**<a href="##(AI_BAI_ZONE).Destroy">AI_BAI_ZONE.Destroy</a>**: The AI has destroyed a target <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li>
<li>**<a href="##(AI_BAI_ZONE).Destroyed">AI_BAI_ZONE.Destroyed</a>**: The AI has destroyed all target <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the BOMB task.</li> <li>**<a href="##(AI_BAI_ZONE).Destroyed">AI_BAI_ZONE.Destroyed</a>**: The AI has destroyed all target <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the BOMB task.</li>
<li><strong>Status</strong>: The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB.</li> <li><strong>Status</strong>: The AI is checking status (fuel and damage). When the thresholds have been reached, the AI will RTB.</li>
</ul> </ul>
<h2>3. Modify the Engage Zone behaviour to pinpoint a <strong>map object</strong> or <strong>scenery object</strong></h2> <h2>3. Modify the Engage Zone behaviour to pinpoint a <strong>map object</strong> or <strong>scenery object</strong></h2>
@ -2063,7 +2063,7 @@ is the point where a map object is to be destroyed (like a bridge).</p>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_BAI_ZONE).ManageDamage">AI_BAI_ZONE:ManageDamage(PatrolDamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_BAI_ZONE).ManageDamage">AI_BAI_ZONE:ManageDamage(PatrolDamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -5834,14 +5834,14 @@ It is up to the mission designer to use the <a href="Wrapper.Unit.html">Wrapper.
<h2><a id="#(AI_BAI_ZONE).ManageDamage" ><strong>AI_BAI_ZONE:ManageDamage(PatrolDamageThreshold)</strong></a></h2> <h2><a id="#(AI_BAI_ZONE).ManageDamage" ><strong>AI_BAI_ZONE:ManageDamage(PatrolDamageThreshold)</strong></a></h2>
</div> </div>
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
<p>However, damage cannot be foreseen early on. <p>However, damage cannot be foreseen early on.
Therefore, when the damage treshold is reached, Therefore, when the damage threshold is reached,
the AI will return immediately to the home base (RTB). the AI will return immediately to the home base (RTB).
Note that for groups, the average damage of the complete group will be calculated. Note that for groups, the average damage of the complete group will be calculated.
So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.</p> So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage threshold will be 0.25.</p>
<div id= "#Functions##ManageDamage" class="w3-show w3-white"> <div id= "#Functions##ManageDamage" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5859,7 +5859,7 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p> <p>The threshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p>
</div> </div>
</div> </div>
@ -5888,8 +5888,8 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p> <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. <p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE. When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE.
Once the time is finished, the old AI will return to the base.</p> Once the time is finished, the old AI will return to the base.</p>
<div id= "#Functions##ManageFuel" class="w3-show w3-white"> <div id= "#Functions##ManageFuel" class="w3-show w3-white">
@ -5908,7 +5908,7 @@ Once the time is finished, the old AI will return to the base.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p> <p>The threshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</div> </div>
</div> </div>

View File

@ -1500,7 +1500,7 @@ Controls a network of short range air/missile defense groups.</p>
<ul> <ul>
<li>Patrol AI airplanes within a given zone.</li> <li>Patrol AI airplanes within a given zone.</li>
<li>Trigger detected events when enemy airplanes are detected.</li> <li>Trigger detected events when enemy airplanes are detected.</li>
<li>Manage a fuel treshold to RTB on time.</li> <li>Manage a fuel threshold to RTB on time.</li>
<li>Engage the enemy when detected.</li> <li>Engage the enemy when detected.</li>
</ul> </ul>
@ -1576,8 +1576,8 @@ Upon arrival at the 3D point, a new random 3D point will be selected within the
<p><img src="..\Presentations\AI_CAP\Dia10.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_CAP\Dia10.JPG" alt="Process"/></p>
<p>Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. <p>Until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_CAP\Dia13.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_CAP\Dia13.JPG" alt="Process"/></p>
@ -1612,7 +1612,7 @@ When the fuel treshold has been reached, the airplane will fly towards the neare
<li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li> <li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li>
<li>**<a href="##(AI_CAP_ZONE).Destroy">AI_CAP_ZONE.Destroy</a>**: The AI has destroyed a bogey <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li> <li>**<a href="##(AI_CAP_ZONE).Destroy">AI_CAP_ZONE.Destroy</a>**: The AI has destroyed a bogey <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li>
<li>**<a href="##(AI_CAP_ZONE).Destroyed">AI_CAP_ZONE.Destroyed</a>**: The AI has destroyed all bogeys <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li> <li>**<a href="##(AI_CAP_ZONE).Destroyed">AI_CAP_ZONE.Destroyed</a>**: The AI has destroyed all bogeys <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li>
<li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB.</li> <li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the thresholds have been reached, the AI will RTB.</li>
</ul> </ul>
<h2>3. Set the Range of Engagement</h2> <h2>3. Set the Range of Engagement</h2>
@ -1977,7 +1977,7 @@ Use the method <a href="AI.AI_Cap.html##(AI_CAP_ZONE).SetEngageZone">AI.AI_Cap#A
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_CAP_ZONE).ManageDamage">AI_CAP_ZONE:ManageDamage(PatrolDamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_CAP_ZONE).ManageDamage">AI_CAP_ZONE:ManageDamage(PatrolDamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -5489,14 +5489,14 @@ It is up to the mission designer to use the <a href="Wrapper.Unit.html">Wrapper.
<h2><a id="#(AI_CAP_ZONE).ManageDamage" ><strong>AI_CAP_ZONE:ManageDamage(PatrolDamageThreshold)</strong></a></h2> <h2><a id="#(AI_CAP_ZONE).ManageDamage" ><strong>AI_CAP_ZONE:ManageDamage(PatrolDamageThreshold)</strong></a></h2>
</div> </div>
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
<p>However, damage cannot be foreseen early on. <p>However, damage cannot be foreseen early on.
Therefore, when the damage treshold is reached, Therefore, when the damage threshold is reached,
the AI will return immediately to the home base (RTB). the AI will return immediately to the home base (RTB).
Note that for groups, the average damage of the complete group will be calculated. Note that for groups, the average damage of the complete group will be calculated.
So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.</p> So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage threshold will be 0.25.</p>
<div id= "#Functions##ManageDamage" class="w3-show w3-white"> <div id= "#Functions##ManageDamage" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5514,7 +5514,7 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p> <p>The threshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p>
</div> </div>
</div> </div>
@ -5543,8 +5543,8 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p> <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. <p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE. When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE.
Once the time is finished, the old AI will return to the base.</p> Once the time is finished, the old AI will return to the base.</p>
<div id= "#Functions##ManageFuel" class="w3-show w3-white"> <div id= "#Functions##ManageFuel" class="w3-show w3-white">
@ -5563,7 +5563,7 @@ Once the time is finished, the old AI will return to the base.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p> <p>The threshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</div> </div>
</div> </div>

View File

@ -2664,9 +2664,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> Aircraft is on a depoly mission.</p>
</div> </div>
</div> </div>
@ -2692,9 +2689,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> Aircraft is on a pickup mission.</p>
</div> </div>
</div> </div>
@ -4457,9 +4451,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> Aircraft is on a depoly mission.</p>
</div> </div>
</div> </div>
@ -4485,9 +4476,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> Aircraft is on a pickup mission.</p>
</div> </div>
</div> </div>
@ -5092,9 +5080,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> Aircraft is on a depoly mission.</p>
</div> </div>
</div> </div>
@ -5120,9 +5105,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> Aircraft is on a pickup mission.</p>
</div> </div>
</div> </div>
@ -6619,9 +6601,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> Aircraft is on a depoly mission.</p>
</div> </div>
</div> </div>
@ -6647,9 +6626,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> Aircraft is on a pickup mission.</p>
</div> </div>
</div> </div>

View File

@ -2785,28 +2785,22 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_CARGO_HELICOPTER).landingheight" ><strong>AI_CARGO_HELICOPTER.landingheight</strong></a> <a id="#(AI_CARGO_HELICOPTER).landingheight" ><strong>AI_CARGO_HELICOPTER.landingheight</strong></a>
<p> meter</p>
</div> </div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_CARGO_HELICOPTER).landingspeed" ><strong>AI_CARGO_HELICOPTER.landingspeed</strong></a> <a id="#(AI_CARGO_HELICOPTER).landingspeed" ><strong>AI_CARGO_HELICOPTER.landingspeed</strong></a>
<p> kph</p>
</div> </div>
</div> </div>
@ -4709,28 +4703,22 @@ Adjust if necessary.</code></pre>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_CARGO_HELICOPTER).landingheight" ><strong>AI_CARGO_HELICOPTER.landingheight</strong></a> <a id="#(AI_CARGO_HELICOPTER).landingheight" ><strong>AI_CARGO_HELICOPTER.landingheight</strong></a>
<p> meter</p>
</div> </div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_CARGO_HELICOPTER).landingspeed" ><strong>AI_CARGO_HELICOPTER.landingspeed</strong></a> <a id="#(AI_CARGO_HELICOPTER).landingspeed" ><strong>AI_CARGO_HELICOPTER.landingspeed</strong></a>
<p> kph</p>
</div> </div>
</div> </div>
@ -5385,28 +5373,22 @@ Adjust if necessary.</code></pre>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_CARGO_HELICOPTER).landingheight" ><strong>AI_CARGO_HELICOPTER.landingheight</strong></a> <a id="#(AI_CARGO_HELICOPTER).landingheight" ><strong>AI_CARGO_HELICOPTER.landingheight</strong></a>
<p> meter</p>
</div> </div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_CARGO_HELICOPTER).landingspeed" ><strong>AI_CARGO_HELICOPTER.landingspeed</strong></a> <a id="#(AI_CARGO_HELICOPTER).landingspeed" ><strong>AI_CARGO_HELICOPTER.landingspeed</strong></a>
<p> kph</p>
</div> </div>
</div> </div>
@ -6953,28 +6935,22 @@ Adjust if necessary.</code></pre>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_CARGO_HELICOPTER).landingheight" ><strong>AI_CARGO_HELICOPTER.landingheight</strong></a> <a id="#(AI_CARGO_HELICOPTER).landingheight" ><strong>AI_CARGO_HELICOPTER.landingheight</strong></a>
<p> meter</p>
</div> </div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(AI_CARGO_HELICOPTER).landingspeed" ><strong>AI_CARGO_HELICOPTER.landingspeed</strong></a> <a id="#(AI_CARGO_HELICOPTER).landingspeed" ><strong>AI_CARGO_HELICOPTER.landingspeed</strong></a>
<p> kph</p>
</div> </div>
</div> </div>

View File

@ -1560,7 +1560,7 @@ Controls a network of short range air/missile defense groups.</p>
<p>Upon started, The AI will <strong>Route</strong> itself towards the random 3D point within a patrol zone, <p>Upon started, The AI will <strong>Route</strong> itself towards the random 3D point within a patrol zone,
using a random speed within the given altitude and speed limits. using a random speed within the given altitude and speed limits.
Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits. Upon arrival at the 3D point, a new random 3D point will be selected within the patrol zone using the given limits.
This cycle will continue until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB.</p> This cycle will continue until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.</p>
<p><img src="..\Presentations\AI_CAS\Dia5.JPG" alt="Route Event"/></p> <p><img src="..\Presentations\AI_CAS\Dia5.JPG" alt="Route Event"/></p>
@ -1600,7 +1600,7 @@ Any target that is detected in the Engage Zone will be reported and will be dest
<p>It will keep patrolling there, until it is notified to RTB or move to another CAS Zone. <p>It will keep patrolling there, until it is notified to RTB or move to another CAS Zone.
It can be notified to go RTB through the <strong>RTB</strong> event.</p> It can be notified to go RTB through the <strong>RTB</strong> event.</p>
<p>When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> <p>When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_CAS\Dia12.JPG" alt="Engage Event"/></p> <p><img src="..\Presentations\AI_CAS\Dia12.JPG" alt="Engage Event"/></p>
@ -1635,7 +1635,7 @@ It can be notified to go RTB through the <strong>RTB</strong> event.</p>
<li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li> <li>**<a href="AI.AI_Patrol.html##(AI_PATROL_ZONE).Detected">AI.AI_Patrol#AI_PATROL_ZONE.Detected</a>**: The AI has detected new targets.</li>
<li>**<a href="##(AI_CAS_ZONE).Destroy">AI_CAS_ZONE.Destroy</a>**: The AI has destroyed a target <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li> <li>**<a href="##(AI_CAS_ZONE).Destroy">AI_CAS_ZONE.Destroy</a>**: The AI has destroyed a target <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</li>
<li>**<a href="##(AI_CAS_ZONE).Destroyed">AI_CAS_ZONE.Destroyed</a>**: The AI has destroyed all target <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li> <li>**<a href="##(AI_CAS_ZONE).Destroyed">AI_CAS_ZONE.Destroyed</a>**: The AI has destroyed all target <a href="Wrapper.Unit.html">Wrapper.Unit</a>s assigned in the CAS task.</li>
<li><strong>Status</strong>: The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB.</li> <li><strong>Status</strong>: The AI is checking status (fuel and damage). When the thresholds have been reached, the AI will RTB.</li>
</ul> </ul>
<hr/> <hr/>
@ -1994,7 +1994,7 @@ It can be notified to go RTB through the <strong>RTB</strong> event.</p>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_CAS_ZONE).ManageDamage">AI_CAS_ZONE:ManageDamage(PatrolDamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_CAS_ZONE).ManageDamage">AI_CAS_ZONE:ManageDamage(PatrolDamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -5692,14 +5692,14 @@ It is up to the mission designer to use the <a href="Wrapper.Unit.html">Wrapper.
<h2><a id="#(AI_CAS_ZONE).ManageDamage" ><strong>AI_CAS_ZONE:ManageDamage(PatrolDamageThreshold)</strong></a></h2> <h2><a id="#(AI_CAS_ZONE).ManageDamage" ><strong>AI_CAS_ZONE:ManageDamage(PatrolDamageThreshold)</strong></a></h2>
</div> </div>
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
<p>However, damage cannot be foreseen early on. <p>However, damage cannot be foreseen early on.
Therefore, when the damage treshold is reached, Therefore, when the damage threshold is reached,
the AI will return immediately to the home base (RTB). the AI will return immediately to the home base (RTB).
Note that for groups, the average damage of the complete group will be calculated. Note that for groups, the average damage of the complete group will be calculated.
So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.</p> So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage threshold will be 0.25.</p>
<div id= "#Functions##ManageDamage" class="w3-show w3-white"> <div id= "#Functions##ManageDamage" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5717,7 +5717,7 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p> <p>The threshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p>
</div> </div>
</div> </div>
@ -5746,8 +5746,8 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p> <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. <p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE. When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE.
Once the time is finished, the old AI will return to the base.</p> Once the time is finished, the old AI will return to the base.</p>
<div id= "#Functions##ManageFuel" class="w3-show w3-white"> <div id= "#Functions##ManageFuel" class="w3-show w3-white">
@ -5766,7 +5766,7 @@ Once the time is finished, the old AI will return to the base.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p> <p>The threshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</div> </div>
</div> </div>

View File

@ -1500,7 +1500,7 @@ Controls a network of short range air/missile defense groups.</p>
<ul> <ul>
<li>Patrol AI airplanes within a given zone.</li> <li>Patrol AI airplanes within a given zone.</li>
<li>Trigger detected events when enemy airplanes are detected.</li> <li>Trigger detected events when enemy airplanes are detected.</li>
<li>Manage a fuel treshold to RTB on time.</li> <li>Manage a fuel threshold to RTB on time.</li>
</ul> </ul>
<hr/> <hr/>
@ -1580,8 +1580,8 @@ use derived AI_ classes to model AI offensive or defensive behaviour.</p>
<p><img src="..\Presentations\AI_PATROL\Dia10.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_PATROL\Dia10.JPG" alt="Process"/></p>
<p>Until a fuel or damage treshold has been reached by the AI, or when the AI is commanded to RTB. <p>Until a fuel or damage threshold has been reached by the AI, or when the AI is commanded to RTB.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p> When the fuel threshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<p><img src="..\Presentations\AI_PATROL\Dia11.JPG" alt="Process"/></p> <p><img src="..\Presentations\AI_PATROL\Dia11.JPG" alt="Process"/></p>
@ -1614,7 +1614,7 @@ When the fuel treshold has been reached, the airplane will fly towards the neare
<li><strong>RTB</strong> ( Group ): Route the AI to the home base.</li> <li><strong>RTB</strong> ( Group ): Route the AI to the home base.</li>
<li><strong>Detect</strong> ( Group ): The AI is detecting targets.</li> <li><strong>Detect</strong> ( Group ): The AI is detecting targets.</li>
<li><strong>Detected</strong> ( Group ): The AI has detected new targets.</li> <li><strong>Detected</strong> ( Group ): The AI has detected new targets.</li>
<li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the tresholds have been reached, the AI will RTB.</li> <li><strong>Status</strong> ( Group ): The AI is checking status (fuel and damage). When the thresholds have been reached, the AI will RTB.</li>
</ul> </ul>
<h2>3. Set or Get the AI controllable</h2> <h2>3. Set or Get the AI controllable</h2>
@ -1653,8 +1653,8 @@ according the weather conditions.</p>
<h2>6. Manage the "out of fuel" in the AI_PATROL_ZONE</h2> <h2>6. Manage the "out of fuel" in the AI_PATROL_ZONE</h2>
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base. <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.
Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit,
while a new AI is targetted to the AI_PATROL_ZONE. while a new AI is targetted to the AI_PATROL_ZONE.
Once the time is finished, the old AI will return to the base. Once the time is finished, the old AI will return to the base.
Use the method <a href="##(AI_PATROL_ZONE).ManageFuel">AI_PATROL_ZONE.ManageFuel</a>() to have this proces in place.</p> Use the method <a href="##(AI_PATROL_ZONE).ManageFuel">AI_PATROL_ZONE.ManageFuel</a>() to have this proces in place.</p>
@ -1662,7 +1662,7 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageFuel">AI_PATROL_ZONE.ManageFuel
<h2>7. Manage "damage" behaviour of the AI in the AI_PATROL_ZONE</h2> <h2>7. Manage "damage" behaviour of the AI in the AI_PATROL_ZONE</h2>
<p>When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on. <p>When the AI is damaged, it is required that a new AIControllable is started. However, damage cannon be foreseen early on.
Therefore, when the damage treshold is reached, the AI will return immediately to the home base (RTB). Therefore, when the damage threshold is reached, the AI will return immediately to the home base (RTB).
Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI_PATROL_ZONE.ManageDamage</a>() to have this proces in place.</p> Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI_PATROL_ZONE.ManageDamage</a>() to have this proces in place.</p>
<hr/> <hr/>
@ -1760,7 +1760,7 @@ Use the method <a href="##(AI_PATROL_ZONE).ManageDamage">AI_PATROL_ZONE.ManageDa
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_PATROL_ZONE).ManageDamage">AI_PATROL_ZONE:ManageDamage(PatrolDamageThreshold)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(AI_PATROL_ZONE).ManageDamage">AI_PATROL_ZONE:ManageDamage(PatrolDamageThreshold)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -3136,9 +3136,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> This table contains the targets detected during patrol.</p>
</div> </div>
</div> </div>
@ -3341,14 +3338,14 @@ It is up to the mission designer to use the <a href="Wrapper.Unit.html">Wrapper.
<h2><a id="#(AI_PATROL_ZONE).ManageDamage" ><strong>AI_PATROL_ZONE:ManageDamage(PatrolDamageThreshold)</strong></a></h2> <h2><a id="#(AI_PATROL_ZONE).ManageDamage" ><strong>AI_PATROL_ZONE:ManageDamage(PatrolDamageThreshold)</strong></a></h2>
</div> </div>
<p>When the AI is damaged beyond a certain treshold, it is required that the AI returns to the home base.</p> <p>When the AI is damaged beyond a certain threshold, it is required that the AI returns to the home base.</p>
<p>However, damage cannot be foreseen early on. <p>However, damage cannot be foreseen early on.
Therefore, when the damage treshold is reached, Therefore, when the damage threshold is reached,
the AI will return immediately to the home base (RTB). the AI will return immediately to the home base (RTB).
Note that for groups, the average damage of the complete group will be calculated. Note that for groups, the average damage of the complete group will be calculated.
So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold will be 0.25.</p> So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage threshold will be 0.25.</p>
<div id= "#Functions##ManageDamage" class="w3-show w3-white"> <div id= "#Functions##ManageDamage" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -3366,7 +3363,7 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p> <p>The threshold in percentage (between 0 and 1) when the AI is considered to be damaged.</p>
</div> </div>
</div> </div>
@ -3395,8 +3392,8 @@ So, in a group of 4 airplanes, 2 lost and 2 with damage 0.2, the damage treshold
<p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p> <p>When the AI is out of fuel, it is required that a new AI is started, before the old AI can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated. <p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel threshold is calculated.
When the fuel treshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE. When the fuel threshold is reached, the AI will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROL_ZONE.
Once the time is finished, the old AI will return to the base.</p> Once the time is finished, the old AI will return to the base.</p>
<div id= "#Functions##ManageFuel" class="w3-show w3-white"> <div id= "#Functions##ManageFuel" class="w3-show w3-white">
@ -3415,7 +3412,7 @@ Once the time is finished, the old AI will return to the base.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p> <p>The threshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</div> </div>
</div> </div>
@ -6386,9 +6383,6 @@ Note that this method is required, as triggers the next route when patrolling fo
<p> This table contains the targets detected during patrol.</p>
</div> </div>
</div> </div>
@ -7133,9 +7127,6 @@ Note that this method is required, as triggers the next route when patrolling fo
<p> This table contains the targets detected during patrol.</p>
</div> </div>
</div> </div>
@ -8772,9 +8763,6 @@ Note that this method is required, as triggers the next route when patrolling fo
<p> This table contains the targets detected during patrol.</p>
</div> </div>
</div> </div>

View File

@ -1707,7 +1707,7 @@ And there is NO cargo object actually declared within the script! However, if yo
<li>is of type <code>Workmaterials</code></li> <li>is of type <code>Workmaterials</code></li>
<li>will report when a carrier is within 500 meters</li> <li>will report when a carrier is within 500 meters</li>
<li>will board to carriers when the carrier is within 500 meters from the cargo object</li> <li>will board to carriers when the carrier is within 500 meters from the cargo object</li>
<li>will dissapear when the cargo is within 25 meters from the carrier during boarding</li> <li>will disappear when the cargo is within 25 meters from the carrier during boarding</li>
</ul> </ul>
<p>So the overall syntax of the #CARGO naming tag and arguments are:</p> <p>So the overall syntax of the #CARGO naming tag and arguments are:</p>
@ -1737,7 +1737,7 @@ And there is NO cargo object actually declared within the script! However, if yo
<li>is of type <code>Workmaterials</code></li> <li>is of type <code>Workmaterials</code></li>
<li>will report when a carrier is within 500 meters</li> <li>will report when a carrier is within 500 meters</li>
<li>will board to carriers when the carrier is within 500 meters from the cargo object</li> <li>will board to carriers when the carrier is within 500 meters from the cargo object</li>
<li>will dissapear when the cargo is within 25 meters from the carrier during boarding</li> <li>will disappear when the cargo is within 25 meters from the carrier during boarding</li>
</ul> </ul>
<p>So the overall syntax of the #CARGO naming tag and arguments are:</p> <p>So the overall syntax of the #CARGO naming tag and arguments are:</p>

View File

@ -1820,10 +1820,27 @@ Controls a network of short range air/missile defense groups.</p>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(CARGO_GROUP).CargoCarrier" ><strong>CARGO_GROUP.CargoCarrier</strong></a>
<p>self.CargoObject:Destroy()</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(CARGO_GROUP).CargoGroup" ><strong>CARGO_GROUP.CargoGroup</strong></a> <a id="#(CARGO_GROUP).CargoGroup" ><strong>CARGO_GROUP.CargoGroup</strong></a>
<p> Then we register the new group in the database</p>
</div> </div>
</div> </div>
@ -1835,6 +1852,20 @@ Controls a network of short range air/missile defense groups.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(CARGO_GROUP).CargoObject" ><strong>CARGO_GROUP.CargoObject</strong></a>
<p> Now we spawn the new group based on the template created.</p>
</div> </div>
</div> </div>
@ -3124,10 +3155,27 @@ This works for ground only groups.</p>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(CARGO_GROUP).CargoCarrier" ><strong>CARGO_GROUP.CargoCarrier</strong></a>
<p>self.CargoObject:Destroy()</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(CARGO_GROUP).CargoGroup" ><strong>CARGO_GROUP.CargoGroup</strong></a> <a id="#(CARGO_GROUP).CargoGroup" ><strong>CARGO_GROUP.CargoGroup</strong></a>
<p> Then we register the new group in the database</p>
</div> </div>
</div> </div>
@ -3139,6 +3187,20 @@ This works for ground only groups.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(CARGO_GROUP).CargoObject" ><strong>CARGO_GROUP.CargoObject</strong></a>
<p> Now we spawn the new group based on the template created.</p>
</div> </div>
</div> </div>

View File

@ -2037,7 +2037,7 @@ Moose refers to <strong>_DATABASE</strong> within the framework extensively, but
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(DATABASE)._RegisterClients">DATABASE:_RegisterClients()</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(DATABASE)._RegisterClients">DATABASE:_RegisterClients()</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Private method that registers all Units of skill Client or Player within in the mission.</p> <p>Private method that registers all Units of skill Client or Player within the mission.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2049,7 +2049,7 @@ Moose refers to <strong>_DATABASE</strong> within the framework extensively, but
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(DATABASE)._RegisterGroupsAndUnits">DATABASE:_RegisterGroupsAndUnits()</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(DATABASE)._RegisterGroupsAndUnits">DATABASE:_RegisterGroupsAndUnits()</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Private method that registers all Groups and Units within in the mission.</p> <p>Private method that registers all Groups and Units within the mission.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2067,7 +2067,7 @@ Moose refers to <strong>_DATABASE</strong> within the framework extensively, but
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(DATABASE)._RegisterStatics">DATABASE:_RegisterStatics()</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(DATABASE)._RegisterStatics">DATABASE:_RegisterStatics()</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Private method that registers all Statics within the mission.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -5576,7 +5576,7 @@ This method is used by the SPAWN class.</p>
<h2><a id="#(DATABASE)._RegisterClients" ><strong>DATABASE:_RegisterClients()</strong></a></h2> <h2><a id="#(DATABASE)._RegisterClients" ><strong>DATABASE:_RegisterClients()</strong></a></h2>
</div> </div>
<p>Private method that registers all Units of skill Client or Player within in the mission.</p> <p>Private method that registers all Units of skill Client or Player within the mission.</p>
<div id= "#Functions##_RegisterClients" class="w3-show w3-white"> <div id= "#Functions##_RegisterClients" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5700,7 +5700,7 @@ This method is used by the SPAWN class.</p>
<h2><a id="#(DATABASE)._RegisterGroupsAndUnits" ><strong>DATABASE:_RegisterGroupsAndUnits()</strong></a></h2> <h2><a id="#(DATABASE)._RegisterGroupsAndUnits" ><strong>DATABASE:_RegisterGroupsAndUnits()</strong></a></h2>
</div> </div>
<p>Private method that registers all Groups and Units within in the mission.</p> <p>Private method that registers all Groups and Units within the mission.</p>
<div id= "#Functions##_RegisterGroupsAndUnits" class="w3-show w3-white"> <div id= "#Functions##_RegisterGroupsAndUnits" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5843,7 +5843,7 @@ This method is used by the SPAWN class.</p>
<h2><a id="#(DATABASE)._RegisterStatics" ><strong>DATABASE:_RegisterStatics()</strong></a></h2> <h2><a id="#(DATABASE)._RegisterStatics" ><strong>DATABASE:_RegisterStatics()</strong></a></h2>
</div> </div>
<p>Private method that registers all Statics within the mission.</p>
<div id= "#Functions##_RegisterStatics" class="w3-show w3-white"> <div id= "#Functions##_RegisterStatics" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">

View File

@ -1529,12 +1529,12 @@ in the correct processing order.</p>
<p><img src="..\Presentations\EVENT\Dia5.JPG" alt="Objects"/></p> <p><img src="..\Presentations\EVENT\Dia5.JPG" alt="Objects"/></p>
<p>There are 5 levels of kind of objects that the _EVENTDISPATCHER services:</p> <p>There are 5 types/levels of objects that the _EVENTDISPATCHER services:</p>
<ul> <ul>
<li>_DATABASE object: The core of the MOOSE objects. Any object that is created, deleted or updated, is done in this database.</li> <li>_DATABASE object: The core of the MOOSE objects. Any object that is created, deleted or updated, is done in this database.</li>
<li>SET_ derived classes: Subsets of the _DATABASE object. These subsets are updated by the _EVENTDISPATCHER as the second priority.</li> <li>SET_ derived classes: These are subsets of the _DATABASE object. These subsets are updated by the _EVENTDISPATCHER as the second priority.</li>
<li>UNIT objects: UNIT objects can subscribe to DCS events. Each DCS event will be directly published to teh subscribed UNIT object.</li> <li>UNIT objects: UNIT objects can subscribe to DCS events. Each DCS event will be directly published to the subscribed UNIT object.</li>
<li>GROUP objects: GROUP objects can subscribe to DCS events. Each DCS event will be directly published to the subscribed GROUP object.</li> <li>GROUP objects: GROUP objects can subscribe to DCS events. Each DCS event will be directly published to the subscribed GROUP object.</li>
<li>Any other object: Various other objects can subscribe to DCS events. Each DCS event triggered will be published to each subscribed object.</li> <li>Any other object: Various other objects can subscribe to DCS events. Each DCS event triggered will be published to each subscribed object.</li>
</ul> </ul>
@ -1629,22 +1629,25 @@ The Event Handler received the EVENTDATA object as a parameter, and can be used
There are basically 4 main categories of information stored in the EVENTDATA structure:</p> There are basically 4 main categories of information stored in the EVENTDATA structure:</p>
<ul> <ul>
<li><p>Initiator Unit data: Several fields documenting the initiator unit related to the event.</p></li> <li>Initiator Unit data: Several fields documenting the initiator unit related to the event.</li>
<li><p>Target Unit data: Several fields documenting the target unit related to the event.</p></li> <li>Target Unit data: Several fields documenting the target unit related to the event.</li>
<li><p>Weapon data: Certain events populate weapon information.</p></li> <li>Weapon data: Certain events populate weapon information.</li>
<li><p>Place data: Certain events populate place information.</p> <li>Place data: Certain events populate place information.</li>
<p> --- This function is an Event Handling function that will be called when Tank1 is Dead.
-- EventData is an EVENTDATA structure.
-- We use the EventData.IniUnit to smoke the tank Green.
-- @param Wrapper.Unit#UNIT self
-- @param Core.Event#EVENTDATA EventData
function Tank1:OnEventDead( EventData )</p>
<p> EventData.IniUnit:SmokeGreen()
end</p></li>
</ul> </ul>
<p>Example code snippet:</p>
<pre><code> --- This function is an Event Handling function that will be called when Tank1 is Dead.
-- EventData is an EVENTDATA structure.
-- We use the EventData.IniUnit to smoke the tank Green.
-- @param Wrapper.Unit#UNIT self
-- @param Core.Event#EVENTDATA EventData
function Tank1:OnEventDead( EventData )
EventData.IniUnit:SmokeGreen()
end
</code></pre>
<p>Find below an overview which events populate which information categories:</p> <p>Find below an overview which events populate which information categories:</p>
<p><img src="..\Presentations\EVENT\Dia14.JPG" alt="Objects"/></p> <p><img src="..\Presentations\EVENT\Dia14.JPG" alt="Objects"/></p>
@ -1653,8 +1656,9 @@ There are basically 4 main categories of information stored in the EVENTDATA str
In that case the initiator or target unit fields will refer to a STATIC object! In that case the initiator or target unit fields will refer to a STATIC object!
In case a STATIC object is involved, the documentation indicates which fields will and won't not be populated. In case a STATIC object is involved, the documentation indicates which fields will and won't not be populated.
The fields <strong>IniObjectCategory</strong> and <strong>TgtObjectCategory</strong> contain the indicator which <strong>kind of object is involved</strong> in the event. The fields <strong>IniObjectCategory</strong> and <strong>TgtObjectCategory</strong> contain the indicator which <strong>kind of object is involved</strong> in the event.
You can use the enumerator <strong>Object.Category.UNIT</strong> and <strong>Object.Category.STATIC</strong> to check on IniObjectCategory and TgtObjectCategory. You can use the enumerator <strong>Object.Category.UNIT</strong> and <strong>Object.Category.STATIC</strong> to check on IniObjectCategory and TgtObjectCategory.</p>
Example code snippet:</p>
<p>Example code snippet:</p>
<pre><code> if Event.IniObjectCategory == Object.Category.UNIT then <pre><code> if Event.IniObjectCategory == Object.Category.UNIT then
... ...

View File

@ -1517,11 +1517,11 @@ Controls a network of short range air/missile defense groups.</p>
<p>A Finite State Machine (FSM) models a process flow that transitions between various <strong>States</strong> through triggered <strong>Events</strong>.</p> <p>A Finite State Machine (FSM) models a process flow that transitions between various <strong>States</strong> through triggered <strong>Events</strong>.</p>
<p>A FSM can only be in one of a finite number of states. <p>A FSM can only be in one of a finite number of states.
The machine is in only one state at a time; the state it is in at any given time is called the <strong>current state</strong>. The machine is in only one state at a time; the state it is in at any given time is called the <strong>current state</strong>.
It can change from one state to another when initiated by an <strong><strong>internal</strong> or <strong>external</strong> triggering event</strong>, which is called a <strong>transition</strong>. It can change from one state to another when initiated by an <strong><strong>internal</strong> or <strong>external</strong> triggering event</strong>, which is called a <strong>transition</strong>.
An <strong>FSM implementation</strong> is defined by <strong>a list of its states</strong>, <strong>its initial state</strong>, and <strong>the triggering events</strong> for <strong>each possible transition</strong>. A <strong>FSM implementation</strong> is defined by <strong>a list of its states</strong>, <strong>its initial state</strong>, and <strong>the triggering events</strong> for <strong>each possible transition</strong>.
An FSM implementation is composed out of <strong>two parts</strong>, a set of <strong>state transition rules</strong>, and an implementation set of <strong>state transition handlers</strong>, implementing those transitions.</p> A FSM implementation is composed out of <strong>two parts</strong>, a set of <strong>state transition rules</strong>, and an implementation set of <strong>state transition handlers</strong>, implementing those transitions.</p>
<p>The FSM class supports a <strong>hierarchical implementation of a Finite State Machine</strong>, <p>The FSM class supports a <strong>hierarchical implementation of a Finite State Machine</strong>,
that is, it allows to <strong>embed existing FSM implementations in a master FSM</strong>. that is, it allows to <strong>embed existing FSM implementations in a master FSM</strong>.
@ -1534,14 +1534,14 @@ orders him to destroy x targets and account the results.
Other examples of ready made FSM could be:</p> Other examples of ready made FSM could be:</p>
<ul> <ul>
<li>route a plane to a zone flown by a human</li> <li>Route a plane to a zone flown by a human.</li>
<li>detect targets by an AI and report to humans</li> <li>Detect targets by an AI and report to humans.</li>
<li>account for destroyed targets by human players</li> <li>Account for destroyed targets by human players.</li>
<li>handle AI infantry to deploy from or embark to a helicopter or airplane or vehicle </li> <li>Handle AI infantry to deploy from or embark to a helicopter or airplane or vehicle.</li>
<li>let an AI patrol a zone</li> <li>Let an AI patrol a zone.</li>
</ul> </ul>
<p>The <strong>MOOSE framework</strong> uses extensively the FSM class and derived FSM_ classes, <p>The <strong>MOOSE framework</strong> extensively uses the FSM class and derived FSM_ classes,
because <strong>the goal of MOOSE is to simplify mission design complexity for mission building</strong>. because <strong>the goal of MOOSE is to simplify mission design complexity for mission building</strong>.
By efficiently utilizing the FSM class and derived classes, MOOSE allows mission designers to quickly build processes. By efficiently utilizing the FSM class and derived classes, MOOSE allows mission designers to quickly build processes.
<strong>Ready made FSM-based implementations classes</strong> exist within the MOOSE framework that <strong>can easily be re-used, <strong>Ready made FSM-based implementations classes</strong> exist within the MOOSE framework that <strong>can easily be re-used,
@ -1549,8 +1549,8 @@ and tailored</strong> by mission designers through <strong>the implementation of
Each of these FSM implementation classes start either with:</p> Each of these FSM implementation classes start either with:</p>
<ul> <ul>
<li>an acronym <strong>AI_</strong>, which indicates an FSM implementation directing <strong>AI controlled</strong> <a href="GROUP.html">GROUP</a> and/or <a href="UNIT.html">UNIT</a>. These AI_ classes derive the <a href="##(FSM_CONTROLLABLE)">#FSM_CONTROLLABLE</a> class.</li> <li>an acronym <strong>AI_</strong>, which indicates a FSM implementation directing <strong>AI controlled</strong> <a href="GROUP.html">GROUP</a> and/or <a href="UNIT.html">UNIT</a>. These AI_ classes derive the <a href="##(FSM_CONTROLLABLE)">#FSM_CONTROLLABLE</a> class.</li>
<li>an acronym <strong>TASK_</strong>, which indicates an FSM implementation executing a <a href="TASK.html">TASK</a> executed by Groups of players. These TASK_ classes derive the <a href="##(FSM_TASK)">#FSM_TASK</a> class.</li> <li>an acronym <strong>TASK_</strong>, which indicates a FSM implementation executing a <a href="TASK.html">TASK</a> executed by Groups of players. These TASK_ classes derive the <a href="##(FSM_TASK)">#FSM_TASK</a> class.</li>
<li>an acronym <strong>ACT_</strong>, which indicates an Sub-FSM implementation, directing <strong>Humans actions</strong> that need to be done in a <a href="TASK.html">TASK</a>, seated in a <a href="CLIENT.html">CLIENT</a> (slot) or a <a href="UNIT.html">UNIT</a> (CA join). These ACT_ classes derive the <a href="##(FSM_PROCESS)">#FSM_PROCESS</a> class.</li> <li>an acronym <strong>ACT_</strong>, which indicates an Sub-FSM implementation, directing <strong>Humans actions</strong> that need to be done in a <a href="TASK.html">TASK</a>, seated in a <a href="CLIENT.html">CLIENT</a> (slot) or a <a href="UNIT.html">UNIT</a> (CA join). These ACT_ classes derive the <a href="##(FSM_PROCESS)">#FSM_PROCESS</a> class.</li>
</ul> </ul>
@ -1562,7 +1562,7 @@ The state machine can be found on <a href="https://github.com/kyleconroy/lua-sta
I've reworked this development (taken the concept), and created a <strong>hierarchical state machine</strong> out of it, embedded within the DCS simulator. I've reworked this development (taken the concept), and created a <strong>hierarchical state machine</strong> out of it, embedded within the DCS simulator.
Additionally, I've added extendability and created an API that allows seamless FSM implementation.</p> Additionally, I've added extendability and created an API that allows seamless FSM implementation.</p>
<p>The following derived classes are available in the MOOSE framework, that implement a specialised form of a FSM:</p> <p>The following derived classes are available in the MOOSE framework, that implement a specialized form of a FSM:</p>
<ul> <ul>
<li><a href="##(FSM_TASK)">#FSM_TASK</a>: Models Finite State Machines for <a href="Task.html">Task</a>s.</li> <li><a href="##(FSM_TASK)">#FSM_TASK</a>: Models Finite State Machines for <a href="Task.html">Task</a>s.</li>
@ -5651,7 +5651,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#string
<a id="#(FSM)._StartState" ><strong>FSM._StartState</strong></a> <a id="#(FSM)._StartState" ><strong>FSM._StartState</strong></a>
@ -7254,7 +7254,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#string
<a id="#(FSM)._StartState" ><strong>FSM._StartState</strong></a> <a id="#(FSM)._StartState" ><strong>FSM._StartState</strong></a>

View File

@ -16158,17 +16158,6 @@ When moose is loading dynamically (for moose class development), tracing is swit
<p>the y coordinate in meters.</p> <p>the y coordinate in meters.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(POINT_VEC2).z" ><strong>POINT_VEC2.z</strong></a>
</div> </div>
</div> </div>
@ -16967,17 +16956,6 @@ When moose is loading dynamically (for moose class development), tracing is swit
<p>the y coordinate in meters.</p> <p>the y coordinate in meters.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(POINT_VEC2).z" ><strong>POINT_VEC2.z</strong></a>
</div> </div>
</div> </div>
@ -24711,17 +24689,6 @@ Creates a line on the F10 map from one point to another.</p>
<p>the y coordinate in meters.</p> <p>the y coordinate in meters.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(POINT_VEC2).z" ><strong>POINT_VEC2.z</strong></a>
</div> </div>
</div> </div>

View File

@ -2714,7 +2714,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#string
<a id="#(SETTINGS).A2ASystem" ><strong>SETTINGS.A2ASystem</strong></a> <a id="#(SETTINGS).A2ASystem" ><strong>SETTINGS.A2ASystem</strong></a>
@ -4819,7 +4819,7 @@ It is advised to use this method at the start of the mission.</p>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#string
<a id="#(SETTINGS).A2ASystem" ><strong>SETTINGS.A2ASystem</strong></a> <a id="#(SETTINGS).A2ASystem" ><strong>SETTINGS.A2ASystem</strong></a>

View File

@ -3418,6 +3418,20 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(SPAWN).SpawnCount" ><strong>SPAWN.SpawnCount</strong></a>
<p> The internal counter of the amount of spawning the has happened since SpawnStart.</p>
</div> </div>
</div> </div>
@ -3589,6 +3603,17 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(SPAWN).SpawnInitLivery" ><strong>SPAWN.SpawnInitLivery</strong></a>
</div> </div>
</div> </div>
@ -3780,17 +3805,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(SPAWN).SpawnUnControlled" ><strong>SPAWN.SpawnUnControlled</strong></a>
</div> </div>
</div> </div>
@ -3803,7 +3817,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<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>
</div> </div>
@ -6398,7 +6412,7 @@ You can use the following enumerations to search for the pre-defined airbases on
The known AIRBASE objects are automatically imported at mission start by MOOSE. The known AIRBASE objects are automatically imported at mission start by MOOSE.
Therefore, there isn't any New() constructor defined for AIRBASE objects.</p> Therefore, there isn't any New() constructor defined for AIRBASE objects.</p>
<p>Ships and Farps are added within the mission, and are therefore not known. <p>Ships and FARPs are added within the mission, and are therefore not known.
For these AIRBASE objects, there isn't an <a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> enumeration defined. For these AIRBASE objects, there isn't an <a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> enumeration defined.
You need to provide the <strong>exact name</strong> of the airbase as the parameter to the <a href="Wrapper.Airbase.html##(AIRBASE).FindByName">Wrapper.Airbase#AIRBASE.FindByName</a>() method!</p> You need to provide the <strong>exact name</strong> of the airbase as the parameter to the <a href="Wrapper.Airbase.html##(AIRBASE).FindByName">Wrapper.Airbase#AIRBASE.FindByName</a>() method!</p>
@ -8758,6 +8772,20 @@ This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups.</p
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(SPAWN).SpawnCount" ><strong>SPAWN.SpawnCount</strong></a>
<p> The internal counter of the amount of spawning the has happened since SpawnStart.</p>
</div> </div>
</div> </div>
@ -8929,6 +8957,17 @@ This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups.</p
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(SPAWN).SpawnInitLivery" ><strong>SPAWN.SpawnInitLivery</strong></a>
</div> </div>
</div> </div>
@ -9120,17 +9159,6 @@ This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups.</p
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(SPAWN).SpawnUnControlled" ><strong>SPAWN.SpawnUnControlled</strong></a>
</div> </div>
</div> </div>
@ -9143,7 +9171,7 @@ This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups.</p
<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>
</div> </div>

View File

@ -1865,24 +1865,6 @@ such as position and heading.</p>
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(SPAWNSTATIC)._SpawnStatic">SPAWNSTATIC:_SpawnStatic(Template, CountryID)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(SPAWNSTATIC)._SpawnStatic">SPAWNSTATIC:_SpawnStatic(Template, CountryID)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Spawns a new static using a given template.</p> <p>Spawns a new static using a given template.</p>
</td>
</tr>
<tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(SPAWNSTATIC).heliport_callsign_id">SPAWNSTATIC.heliport_callsign_id</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word">
</td>
</tr>
<tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(SPAWNSTATIC).heliport_frequency">SPAWNSTATIC.heliport_frequency</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word">
</td>
</tr>
<tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(SPAWNSTATIC).heliport_modulation">SPAWNSTATIC.heliport_modulation</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word">
</td> </td>
</tr> </tr>
</table> </table>
@ -2789,39 +2771,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(SPAWNSTATIC).heliport_callsign_id" ><strong>SPAWNSTATIC.heliport_callsign_id</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(SPAWNSTATIC).heliport_frequency" ><strong>SPAWNSTATIC.heliport_frequency</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(SPAWNSTATIC).heliport_modulation" ><strong>SPAWNSTATIC.heliport_modulation</strong></a>
</div> </div>
</div> </div>
@ -4043,39 +3992,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(SPAWNSTATIC).heliport_callsign_id" ><strong>SPAWNSTATIC.heliport_callsign_id</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(SPAWNSTATIC).heliport_frequency" ><strong>SPAWNSTATIC.heliport_frequency</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(SPAWNSTATIC).heliport_modulation" ><strong>SPAWNSTATIC.heliport_modulation</strong></a>
</div> </div>
</div> </div>

View File

@ -1505,7 +1505,7 @@ Controls a network of short range air/missile defense groups.</p>
<li>Create polygon zones.</li> <li>Create polygon zones.</li>
<li>Create moving zones around a unit.</li> <li>Create moving zones around a unit.</li>
<li>Create moving zones around a group.</li> <li>Create moving zones around a group.</li>
<li>Provide the zone behaviour. Some zones are static, while others are moveable.</li> <li>Provide the zone behavior. Some zones are static, while others are moveable.</li>
<li>Enquiry if a coordinate is within a zone.</li> <li>Enquiry if a coordinate is within a zone.</li>
<li>Smoke zones.</li> <li>Smoke zones.</li>
<li>Set a zone probability to control zone selection.</li> <li>Set a zone probability to control zone selection.</li>
@ -1517,11 +1517,11 @@ Controls a network of short range air/missile defense groups.</p>
</ul> </ul>
<p>There are essentially two core functions that zones accomodate:</p> <p>There are essentially two core functions that zones accommodate:</p>
<ul> <ul>
<li>Test if an object is within the zone boundaries.</li> <li>Test if an object is within the zone boundaries.</li>
<li>Provide the zone behaviour. Some zones are static, while others are moveable.</li> <li>Provide the zone behavior. Some zones are static, while others are moveable.</li>
</ul> </ul>
<p>The object classes are using the zone classes to test the zone boundaries, which can take various forms:</p> <p>The object classes are using the zone classes to test the zone boundaries, which can take various forms:</p>
@ -1826,7 +1826,7 @@ This class is an abstract BASE class for derived classes, and is not meant to be
<ul> <ul>
<li><a href="##(ZONE_POLYGON_BASE).GetRandomVec2">ZONE_POLYGON_BASE.GetRandomVec2</a>(): Gets a random 2D point in the zone.</li> <li><a href="##(ZONE_POLYGON_BASE).GetRandomVec2">ZONE_POLYGON_BASE.GetRandomVec2</a>(): Gets a random 2D point in the zone.</li>
<li><a href="##(ZONE_POLYGON_BASE).GetRandomPointVec2">ZONE_POLYGON_BASE.GetRandomPointVec2</a>(): Return a <a href="Core.Point.html##(POINT_VEC2)">Core.Point#POINT_VEC2</a> object representing a random 2D point within the zone.</li> <li><a href="##(ZONE_POLYGON_BASE).GetRandomPointVec2">ZONE_POLYGON_BASE.GetRandomPointVec2</a>(): Return a <a href="Core.Point.html##(POINT_VEC2)">Core.Point#POINT_VEC2</a> object representing a random 2D point within the zone.</li>
<li><a href="##(ZONE_POLYGON_BASE).GetRandomPointVec3">ZONE_POLYGON_BASE.GetRandomPointVec3</a>(): Return a <a href="Core.Point.html##(POINT_VEC3)">Core.Point#POINT_VEC3</a> object representing a random 3D point at landheight within the zone.</li> <li><a href="##(ZONE_POLYGON_BASE).GetRandomPointVec3">ZONE_POLYGON_BASE.GetRandomPointVec3</a>(): Return a <a href="Core.Point.html##(POINT_VEC3)">Core.Point#POINT_VEC3</a> object representing a random 3D point at land height within the zone.</li>
</ul> </ul>
<h2>Draw zone</h2> <h2>Draw zone</h2>
@ -12662,7 +12662,7 @@ Returns the Coalition for the given Coalition if there are units of the Coalitio
<p>Is All in Zone of Coalition?</p> <p>Is All in Zone of Coalition?</p>
<p>Check if only the specifed coalition is inside the zone and noone else.</p> <p>Check if only the specified coalition is inside the zone and noone else.</p>
<div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white"> <div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -12787,8 +12787,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsEmpty = self.Zone:IsNoneInZone()</code></pre> self.Zone:Scan()
local IsEmpty = self.Zone:IsNoneInZone()
</code></pre>
</div> </div>
@ -12836,8 +12838,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>
@ -12853,7 +12857,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
<p>Is Some in Zone of Coalition?</p> <p>Is Some in Zone of Coalition?</p>
<p>Check if more than one coaltion is inside the zone and the specifed coalition is one of them. <p>Check if more than one coalition is inside the zone and the specified coalition is one of them.
You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated! You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated!
Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p> Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p>
@ -12873,7 +12877,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>ID of the coaliton which is checked to be inside the zone.</p> <p>ID of the coalition which is checked to be inside the zone.</p>
</div> </div>
</div> </div>
@ -12889,8 +12893,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>
@ -14705,7 +14711,7 @@ Returns the Coalition for the given Coalition if there are units of the Coalitio
<p>Is All in Zone of Coalition?</p> <p>Is All in Zone of Coalition?</p>
<p>Check if only the specifed coalition is inside the zone and noone else.</p> <p>Check if only the specified coalition is inside the zone and noone else.</p>
<div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white"> <div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -14830,8 +14836,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsEmpty = self.Zone:IsNoneInZone()</code></pre> self.Zone:Scan()
local IsEmpty = self.Zone:IsNoneInZone()
</code></pre>
</div> </div>
@ -14879,8 +14887,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>
@ -14896,7 +14906,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
<p>Is Some in Zone of Coalition?</p> <p>Is Some in Zone of Coalition?</p>
<p>Check if more than one coaltion is inside the zone and the specifed coalition is one of them. <p>Check if more than one coalition is inside the zone and the specified coalition is one of them.
You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated! You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated!
Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p> Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p>
@ -14916,7 +14926,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>ID of the coaliton which is checked to be inside the zone.</p> <p>ID of the coalition which is checked to be inside the zone.</p>
</div> </div>
</div> </div>
@ -14932,8 +14942,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>

View File

@ -3323,7 +3323,7 @@ normandy:Start()
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(ARTY).report">ARTY.report</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(ARTY).report">ARTY.report</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Arty group sends messages about their current state or target to its coaliton.</p> <p>Arty group sends messages about their current state or target to its coalition.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -5216,7 +5216,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
#boolean #boolean
<a id="#(ARTY).report" ><strong>ARTY.report</strong></a> <a id="#(ARTY).report" ><strong>ARTY.report</strong></a>
<p>Arty group sends messages about their current state or target to its coaliton.</p> <p>Arty group sends messages about their current state or target to its coalition.</p>
</div> </div>
@ -14145,7 +14145,7 @@ The illumination bomb will burn for 300 seconds (5 minutes). Assuming a descent
#boolean #boolean
<a id="#(ARTY).report" ><strong>ARTY.report</strong></a> <a id="#(ARTY).report" ><strong>ARTY.report</strong></a>
<p>Arty group sends messages about their current state or target to its coaliton.</p> <p>Arty group sends messages about their current state or target to its coalition.</p>
</div> </div>
@ -15497,7 +15497,7 @@ The illumination bomb will burn for 300 seconds (5 minutes). Assuming a descent
#boolean #boolean
<a id="#(ARTY).report" ><strong>ARTY.report</strong></a> <a id="#(ARTY).report" ><strong>ARTY.report</strong></a>
<p>Arty group sends messages about their current state or target to its coaliton.</p> <p>Arty group sends messages about their current state or target to its coalition.</p>
</div> </div>
@ -17741,7 +17741,7 @@ The illumination bomb will burn for 300 seconds (5 minutes). Assuming a descent
#boolean #boolean
<a id="#(ARTY).report" ><strong>ARTY.report</strong></a> <a id="#(ARTY).report" ><strong>ARTY.report</strong></a>
<p>Arty group sends messages about their current state or target to its coaliton.</p> <p>Arty group sends messages about their current state or target to its coalition.</p>
</div> </div>

View File

@ -3433,6 +3433,17 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(DESIGNATE).LaserCodes" ><strong>DESIGNATE.LaserCodes</strong></a>
</div> </div>
</div> </div>
@ -6590,6 +6601,17 @@ Designate:SetFlashStatusMenu( false )</code></pre>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(DESIGNATE).LaserCodes" ><strong>DESIGNATE.LaserCodes</strong></a>
</div> </div>
</div> </div>
@ -7389,6 +7411,17 @@ Designate:SetFlashStatusMenu( false )</code></pre>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(DESIGNATE).LaserCodes" ><strong>DESIGNATE.LaserCodes</strong></a>
</div> </div>
</div> </div>
@ -8158,6 +8191,17 @@ Designate:SetFlashStatusMenu( false )</code></pre>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(DESIGNATE).LaserCodes" ><strong>DESIGNATE.LaserCodes</strong></a>
</div> </div>
</div> </div>
@ -9819,6 +9863,17 @@ Designate:SetFlashStatusMenu( false )</code></pre>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(DESIGNATE).LaserCodes" ><strong>DESIGNATE.LaserCodes</strong></a>
</div> </div>
</div> </div>

View File

@ -18954,7 +18954,7 @@ When moose is loading dynamically (for moose class development), tracing is swit
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(DETECTION_BASE).RefreshTimeInterval" ><strong>DETECTION_BASE.RefreshTimeInterval</strong></a> <a id="#(DETECTION_BASE).RefreshTimeInterval" ><strong>DETECTION_BASE.RefreshTimeInterval</strong></a>
@ -23678,7 +23678,7 @@ zones that reflect cloudy areas where detected units may not be so easily visual
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(DETECTION_BASE).RefreshTimeInterval" ><strong>DETECTION_BASE.RefreshTimeInterval</strong></a> <a id="#(DETECTION_BASE).RefreshTimeInterval" ><strong>DETECTION_BASE.RefreshTimeInterval</strong></a>
@ -25457,7 +25457,7 @@ zones that reflect cloudy areas where detected units may not be so easily visual
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(DETECTION_BASE).RefreshTimeInterval" ><strong>DETECTION_BASE.RefreshTimeInterval</strong></a> <a id="#(DETECTION_BASE).RefreshTimeInterval" ><strong>DETECTION_BASE.RefreshTimeInterval</strong></a>

View File

@ -2899,6 +2899,17 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p>The #DETECTION_AREAS object for AWACS</p> <p>The #DETECTION_AREAS object for AWACS</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(MANTIS).AWACS_Prefix" ><strong>MANTIS.AWACS_Prefix</strong></a>
</div> </div>
</div> </div>
@ -3334,6 +3345,9 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> switch alarm state RED</p>
</div> </div>
</div> </div>
@ -6550,6 +6564,17 @@ E.g. `mymantis:SetAdvancedMode(true, 90)`</code></pre>
<p>The #DETECTION_AREAS object for AWACS</p> <p>The #DETECTION_AREAS object for AWACS</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(MANTIS).AWACS_Prefix" ><strong>MANTIS.AWACS_Prefix</strong></a>
</div> </div>
</div> </div>
@ -6985,6 +7010,9 @@ E.g. `mymantis:SetAdvancedMode(true, 90)`</code></pre>
<p> switch alarm state RED</p>
</div> </div>
</div> </div>

View File

@ -3009,7 +3009,7 @@ manager:Stop(7200)
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(RAT).ctable">RAT.ctable</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(RAT).ctable">RAT.ctable</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Table with the valid coalitons from choice self.friendly.</p> <p>Table with the valid coalitions from choice self.friendly.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -3358,6 +3358,12 @@ manager:Stop(7200)
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(RAT).termtype">RAT.termtype</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(RAT).termtype">RAT.termtype</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Type of terminal to be used when spawning at an airbase.</p> <p>Type of terminal to be used when spawning at an airbase.</p>
</td>
</tr>
<tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(RAT).type">RAT.type</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word">
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -6048,7 +6054,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
#table #table
<a id="#(RAT).ctable" ><strong>RAT.ctable</strong></a> <a id="#(RAT).ctable" ><strong>RAT.ctable</strong></a>
<p>Table with the valid coalitons from choice self.friendly.</p> <p>Table with the valid coalitions from choice self.friendly.</p>
</div> </div>
@ -6688,6 +6694,17 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p>Type of terminal to be used when spawning at an airbase.</p> <p>Type of terminal to be used when spawning at an airbase.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(RAT).type" ><strong>RAT.type</strong></a>
</div> </div>
</div> </div>
@ -10178,7 +10195,7 @@ c17:Spawn(5)</code></pre>
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code>yak:Spawn(5) will spawn five aircraft. By default aircraft will spawn at neutral and red airports if the template group is part of the red coaliton.</code></pre> <pre class="example"><code>yak:Spawn(5) will spawn five aircraft. By default aircraft will spawn at neutral and red airports if the template group is part of the red coalition.</code></pre>
</div> </div>
@ -13928,7 +13945,7 @@ Initializes the ratcraft array and group menu.</p>
#table #table
<a id="#(RAT).ctable" ><strong>RAT.ctable</strong></a> <a id="#(RAT).ctable" ><strong>RAT.ctable</strong></a>
<p>Table with the valid coalitons from choice self.friendly.</p> <p>Table with the valid coalitions from choice self.friendly.</p>
</div> </div>
@ -14568,6 +14585,17 @@ Initializes the ratcraft array and group menu.</p>
<p>Type of terminal to be used when spawning at an airbase.</p> <p>Type of terminal to be used when spawning at an airbase.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(RAT).type" ><strong>RAT.type</strong></a>
</div> </div>
</div> </div>
@ -17177,7 +17205,7 @@ You can use the following enumerations to search for the pre-defined airbases on
The known AIRBASE objects are automatically imported at mission start by MOOSE. The known AIRBASE objects are automatically imported at mission start by MOOSE.
Therefore, there isn't any New() constructor defined for AIRBASE objects.</p> Therefore, there isn't any New() constructor defined for AIRBASE objects.</p>
<p>Ships and Farps are added within the mission, and are therefore not known. <p>Ships and FARPs are added within the mission, and are therefore not known.
For these AIRBASE objects, there isn't an <a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> enumeration defined. For these AIRBASE objects, there isn't an <a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> enumeration defined.
You need to provide the <strong>exact name</strong> of the airbase as the parameter to the <a href="Wrapper.Airbase.html##(AIRBASE).FindByName">Wrapper.Airbase#AIRBASE.FindByName</a>() method!</p> You need to provide the <strong>exact name</strong> of the airbase as the parameter to the <a href="Wrapper.Airbase.html##(AIRBASE).FindByName">Wrapper.Airbase#AIRBASE.FindByName</a>() method!</p>
@ -19889,7 +19917,7 @@ This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups.</p
#table #table
<a id="#(RAT).ctable" ><strong>RAT.ctable</strong></a> <a id="#(RAT).ctable" ><strong>RAT.ctable</strong></a>
<p>Table with the valid coalitons from choice self.friendly.</p> <p>Table with the valid coalitions from choice self.friendly.</p>
</div> </div>
@ -20529,6 +20557,17 @@ This is needed to ensure that Re-SPAWNing only is done for landed AIR Groups.</p
<p>Type of terminal to be used when spawning at an airbase.</p> <p>Type of terminal to be used when spawning at an airbase.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(RAT).type" ><strong>RAT.type</strong></a>
</div> </div>
</div> </div>

View File

@ -1520,14 +1520,14 @@ Controls a network of short range air/missile defense groups.</p>
<hr/> <hr/>
<p>Administers the scoring of player achievements, <p>Administers the scoring of player achievements,
and creates a CSV file logging the scoring events and results for use at team or squadron websites.</p> and creates a CSV file logging the scoring events and results for use at team or squadron websites.</p>
<p>SCORING automatically calculates the threat level of the objects hit and destroyed by players, <p>SCORING automatically calculates the threat level of the objects hit and destroyed by players,
which can be <a href="Wrapper.Unit.html">Wrapper.Unit</a>, <a href="Static.html">Static</a> objects.</p> which can be <a href="Wrapper.Unit.html">Wrapper.Unit</a>, <a href="Static.html">Static</a> objects.</p>
<p>Positive score points are granted when enemy or neutral targets are destroyed. <p>Positive score points are granted when enemy or neutral targets are destroyed.
Negative score points or penalties are given when a friendly target is hit or destroyed. Negative score points or penalties are given when a friendly target is hit or destroyed.
This brings a lot of dynamism in the scoring, where players need to take care to inflict damage on the right target. This brings a lot of dynamism in the scoring, where players need to take care to inflict damage on the right target.
By default, penalties weight heavier in the scoring, to ensure that players don't commit fratricide. By default, penalties weight heavier in the scoring, to ensure that players don't commit fratricide.
The total score of the player is calculated by <strong>adding the scores minus the penalties</strong>.</p> The total score of the player is calculated by <strong>adding the scores minus the penalties</strong>.</p>
@ -1535,8 +1535,8 @@ The total score of the player is calculated by <strong>adding the scores minus t
<p><img src="..\Presentations\SCORING\Dia4.JPG" alt="Banner Image"/></p> <p><img src="..\Presentations\SCORING\Dia4.JPG" alt="Banner Image"/></p>
<p>The score value is calculated based on the <strong>threat level of the player</strong> and the <strong>threat level of the target</strong>. <p>The score value is calculated based on the <strong>threat level of the player</strong> and the <strong>threat level of the target</strong>.
A calculated score takes the threat level of the target divided by a balanced threat level of the player unit. <br/> A calculated score takes the threat level of the target divided by a balanced threat level of the player unit.
As such, if the threat level of the target is high, and the player threat level is low, a higher score will be given than As such, if the threat level of the target is high, and the player threat level is low, a higher score will be given than
if the threat level of the player would be high too.</p> if the threat level of the player would be high too.</p>
<p><img src="..\Presentations\SCORING\Dia5.JPG" alt="Banner Image"/></p> <p><img src="..\Presentations\SCORING\Dia5.JPG" alt="Banner Image"/></p>
@ -1559,17 +1559,17 @@ The default range of the scores granted is a value between 0 and 10. The default
<p>Various <a href="Zone.html">Zone</a>s can be defined for which scores are also granted when objects in that <a href="Zone.html">Zone</a> are destroyed. <p>Various <a href="Zone.html">Zone</a>s can be defined for which scores are also granted when objects in that <a href="Zone.html">Zone</a> are destroyed.
This is <strong>specifically useful</strong> to designate <strong>scenery targets on the map</strong> that will generate points when destroyed.</p> This is <strong>specifically useful</strong> to designate <strong>scenery targets on the map</strong> that will generate points when destroyed.</p>
<p>With a small change in MissionScripting.lua, the scoring results can also be logged in a <strong>CSV file</strong>. <br/> <p>With a small change in MissionScripting.lua, the scoring results can also be logged in a <strong>CSV file</strong>.
These CSV files can be used to:</p> These CSV files can be used to:</p>
<ul> <ul>
<li>Upload scoring to a database or a BI tool to publish the scoring results to the player community.</li> <li>Upload scoring to a database or a BI tool to publish the scoring results to the player community.</li>
<li>Upload scoring in an (online) Excel like tool, using pivot tables and pivot charts to show mission results.</li> <li>Upload scoring in an (online) Excel like tool, using pivot tables and pivot charts to show mission results.</li>
<li>Share scoring amoung players after the mission to discuss mission results.</li> <li>Share scoring among players after the mission to discuss mission results.</li>
</ul> </ul>
<p>Scores can be <strong>reported</strong>. <strong>Menu options</strong> are automatically added to <strong>each player group</strong> when a player joins a client slot or a CA unit. <p>Scores can be <strong>reported</strong>. <strong>Menu options</strong> are automatically added to <strong>each player group</strong> when a player joins a client slot or a CA unit.
Use the radio menu F10 to consult the scores while running the mission. Use the radio menu F10 to consult the scores while running the mission.
Scores can be reported for your user, or an overall score can be reported of all players currently active in the mission.</p> Scores can be reported for your user, or an overall score can be reported of all players currently active in the mission.</p>
<hr/> <hr/>
@ -1601,7 +1601,6 @@ Scores can be reported for your user, or an overall score can be reported of all
<pre><code> local Scoring = SCORING:New( "Scoring File" ) <pre><code> local Scoring = SCORING:New( "Scoring File" )
</code></pre> </code></pre>
<h1>Set the destroy score or penalty scale:</h1> <h1>Set the destroy score or penalty scale:</h1>
<p>Score scales can be set for scores granted when enemies or friendlies are destroyed.</p> <p>Score scales can be set for scores granted when enemies or friendlies are destroyed.</p>
@ -1622,13 +1621,12 @@ Scores can be reported for your user, or an overall score can be reported of all
<pre><code> local Scoring = SCORING:New( "Scoring File" ) <pre><code> local Scoring = SCORING:New( "Scoring File" )
</code></pre> </code></pre>
<h1>Set the destroy score or penalty scale:</h1> <h1>Set the destroy score or penalty scale:</h1>
<p>Score scales can be set for scores granted when enemies or friendlies are destroyed.</p> <p>Score scales can be set for scores granted when enemies or friendlies are destroyed.</p>
<p>Use the method <a href="##(SCORING).SetScaleDestroyScore">SCORING.SetScaleDestroyScore</a>() to set the scale of enemy destroys (positive destroys). <p>Use the method <a href="##(SCORING).SetScaleDestroyScore">SCORING.SetScaleDestroyScore</a>() to set the scale of enemy destroys (positive destroys).
Use the method <a href="##(SCORING).SetScaleDestroyPenalty">SCORING.SetScaleDestroyPenalty</a>() to set the scale of friendly destroys (negative destroys).</p> Use the method <a href="##(SCORING).SetScaleDestroyPenalty">SCORING.SetScaleDestroyPenalty</a>() to set the scale of friendly destroys (negative destroys).</p>
<pre><code> local Scoring = SCORING:New( "Scoring File" ) <pre><code> local Scoring = SCORING:New( "Scoring File" )
@ -1642,9 +1640,9 @@ The penalties will be given in a scale from 0 to 40.</p>
<h1>Define special targets that will give extra scores:</h1> <h1>Define special targets that will give extra scores:</h1>
<p>Special targets can be set that will give extra scores to the players when these are destroyed. <p>Special targets can be set that will give extra scores to the players when these are destroyed.
Use the methods <a href="##(SCORING).AddUnitScore">SCORING.AddUnitScore</a>() and <a href="##(SCORING).RemoveUnitScore">SCORING.RemoveUnitScore</a>() to specify a special additional score for a specific <a href="Wrapper.Unit.html">Wrapper.Unit</a>s. <br/> Use the methods <a href="##(SCORING).AddUnitScore">SCORING.AddUnitScore</a>() and <a href="##(SCORING).RemoveUnitScore">SCORING.RemoveUnitScore</a>() to specify a special additional score for a specific <a href="Wrapper.Unit.html">Wrapper.Unit</a>s.
Use the methods <a href="##(SCORING).AddStaticScore">SCORING.AddStaticScore</a>() and <a href="##(SCORING).RemoveStaticScore">SCORING.RemoveStaticScore</a>() to specify a special additional score for a specific <a href="Static.html">Static</a>s. <br/> Use the methods <a href="##(SCORING).AddStaticScore">SCORING.AddStaticScore</a>() and <a href="##(SCORING).RemoveStaticScore">SCORING.RemoveStaticScore</a>() to specify a special additional score for a specific <a href="Static.html">Static</a>s.
Use the method <a href="##(SCORING).SetGroupGroup">SCORING.SetGroupGroup</a>() to specify a special additional score for a specific <a href="Wrapper.Group.html">Wrapper.Group</a>s. </p> Use the method <a href="##(SCORING).SetGroupGroup">SCORING.SetGroupGroup</a>() to specify a special additional score for a specific <a href="Wrapper.Group.html">Wrapper.Group</a>s.</p>
<pre><code> local Scoring = SCORING:New( "Scoring File" ) <pre><code> local Scoring = SCORING:New( "Scoring File" )
Scoring:AddUnitScore( UNIT:FindByName( "Unit #001" ), 200 ) Scoring:AddUnitScore( UNIT:FindByName( "Unit #001" ), 200 )
@ -1661,11 +1659,11 @@ For example, this can be done as follows:</p>
<h1>Define destruction zones that will give extra scores:</h1> <h1>Define destruction zones that will give extra scores:</h1>
<p>Define zones of destruction. Any object destroyed within the zone of the given category will give extra points. <p>Define zones of destruction. Any object destroyed within the zone of the given category will give extra points.
Use the method <a href="##(SCORING).AddZoneScore">SCORING.AddZoneScore</a>() to add a <a href="Zone.html">Zone</a> for additional scoring. <br/> Use the method <a href="##(SCORING).AddZoneScore">SCORING.AddZoneScore</a>() to add a <a href="Zone.html">Zone</a> for additional scoring.
Use the method <a href="##(SCORING).RemoveZoneScore">SCORING.RemoveZoneScore</a>() to remove a <a href="Zone.html">Zone</a> for additional scoring. <br/> Use the method <a href="##(SCORING).RemoveZoneScore">SCORING.RemoveZoneScore</a>() to remove a <a href="Zone.html">Zone</a> for additional scoring.
There are interesting variations that can be achieved with this functionality. For example, if the <a href="Zone.html">Zone</a> is a <a href="Core.Zone.html##(ZONE_UNIT)">Core.Zone#ZONE_UNIT</a>, There are interesting variations that can be achieved with this functionality. For example, if the <a href="Zone.html">Zone</a> is a <a href="Core.Zone.html##(ZONE_UNIT)">Core.Zone#ZONE_UNIT</a>,
then the zone is a moving zone, and anything destroyed within that <a href="Zone.html">Zone</a> will generate points. then the zone is a moving zone, and anything destroyed within that <a href="Zone.html">Zone</a> will generate points.
The other implementation could be to designate a scenery target (a building) in the mission editor surrounded by a <a href="Zone.html">Zone</a>, The other implementation could be to designate a scenery target (a building) in the mission editor surrounded by a <a href="Zone.html">Zone</a>,
just large enough around that building.</p> just large enough around that building.</p>
<h1>Add extra Goal scores upon an event or a condition:</h1> <h1>Add extra Goal scores upon an event or a condition:</h1>
@ -1675,17 +1673,17 @@ Use the method <a href="##(SCORING).AddGoalScore">SCORING.AddGoalScore</a>() to
<h1>(Decommissioned) Configure fratricide level.</h1> <h1>(Decommissioned) Configure fratricide level.</h1>
<p><strong>This functionality is decomissioned until the DCS bug concerning Unit:destroy() not being functional in multi player for player units has been fixed by ED</strong>.</p> <p><strong>This functionality is decommissioned until the DCS bug concerning Unit:destroy() not being functional in multi player for player units has been fixed by ED</strong>.</p>
<p>When a player commits too much damage to friendlies, his penalty score will reach a certain level. <p>When a player commits too much damage to friendlies, his penalty score will reach a certain level.
Use the method <a href="##(SCORING).SetFratricide">SCORING.SetFratricide</a>() to define the level when a player gets kicked. <br/> Use the method <a href="##(SCORING).SetFratricide">SCORING.SetFratricide</a>() to define the level when a player gets kicked.
By default, the fratricide level is the default penalty mutiplier * 2 for the penalty score.</p> By default, the fratricide level is the default penalty multiplier * 2 for the penalty score.</p>
<h1>Penalty score when a player changes the coalition.</h1> <h1>Penalty score when a player changes the coalition.</h1>
<p>When a player changes the coalition, he can receive a penalty score. <p>When a player changes the coalition, he can receive a penalty score.
Use the method <a href="##(SCORING).SetCoalitionChangePenalty">SCORING.SetCoalitionChangePenalty</a>() to define the penalty when a player changes coalition. Use the method <a href="##(SCORING).SetCoalitionChangePenalty">SCORING.SetCoalitionChangePenalty</a>() to define the penalty when a player changes coalition.
By default, the penalty for changing coalition is the default penalty scale. </p> By default, the penalty for changing coalition is the default penalty scale.</p>
<h1>Define output CSV files.</h1> <h1>Define output CSV files.</h1>
@ -1715,13 +1713,13 @@ For me, this installation folder is in <em>D:\Program Files\Eagle Dynamics\DCS W
end end
</code></pre> </code></pre>
<p>When these lines are not sanitized, functions become available to check the time, and to write files to your system at the above specified location. <br/> <p>When these lines are not sanitized, functions become available to check the time, and to write files to your system at the above specified location.
Note that the MissionScripting.lua file provides a warning. So please beware of this warning as outlined by Eagle Dynamics!</p> Note that the MissionScripting.lua file provides a warning. So please beware of this warning as outlined by Eagle Dynamics!</p>
<pre><code> --Sanitize Mission Scripting environment <pre><code> --Sanitize Mission Scripting environment
--This makes unavailable some unsecure functions. --This makes unavailable some unsecure functions.
--Mission downloaded from server to client may contain potentialy harmful lua code that may use these functions. --Mission downloaded from server to client may contain potentially harmful lua code that may use these functions.
--You can remove the code below and make availble these functions at your own risk. --You can remove the code below and make available these functions at your own risk.
</code></pre> </code></pre>
<p>The MOOSE designer cannot take any responsibility of any damage inflicted as a result of the de-sanitization. <p>The MOOSE designer cannot take any responsibility of any damage inflicted as a result of the de-sanitization.
@ -2950,7 +2948,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p> During mission startup, especially for single player, <p> During mission startup, especially for single player,
iterate the database for the player that has joined, and add him to the scoring, and set the menu. iterate the database for the player that has joined, and add him to the scoring, and set the menu.
But this can only be started one second after the mission has started, so i need to schedule this ...</p> But this can only be started one second after the mission has started, so i need to schedule this ...</p>
@ -2974,7 +2972,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(SCORING).penaltyoncoalitionchange" ><strong>SCORING.penaltyoncoalitionchange</strong></a> <a id="#(SCORING).penaltyoncoalitionchange" ><strong>SCORING.penaltyoncoalitionchange</strong></a>
@ -3026,7 +3024,7 @@ The Score can be both positive and negative.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The <a href="Wrapper.Unit.html">Wrapper.Unit</a> of the Player. Other Properties for the scoring are taken from this PlayerUnit, like coalition, type etc. </p> <p>The <a href="Wrapper.Unit.html">Wrapper.Unit</a> of the Player. Other Properties for the scoring are taken from this PlayerUnit, like coalition, type etc.</p>
</div> </div>
</div> </div>
@ -3218,7 +3216,7 @@ The Score can be both positive and negative.</p>
<p>Add a <a href="Static.html">Static</a> for additional scoring when the <a href="Static.html">Static</a> is destroyed.</p> <p>Add a <a href="Static.html">Static</a> for additional scoring when the <a href="Static.html">Static</a> is destroyed.</p>
<p>Note that if there was already a <a href="Static.html">Static</a> declared within the scoring with the same name, <p>Note that if there was already a <a href="Static.html">Static</a> declared within the scoring with the same name,
then the old <a href="Static.html">Static</a> will be replaced with the new <a href="Static.html">Static</a>.</p> then the old <a href="Static.html">Static</a> will be replaced with the new <a href="Static.html">Static</a>.</p>
<div id= "#Functions##AddStaticScore" class="w3-show w3-white"> <div id= "#Functions##AddStaticScore" class="w3-show w3-white">
@ -3279,7 +3277,7 @@ then the old <a href="Static.html">Static</a> will be replaced with the new <a
<p>Add a <a href="Wrapper.Unit.html">Wrapper.Unit</a> for additional scoring when the <a href="Wrapper.Unit.html">Wrapper.Unit</a> is destroyed.</p> <p>Add a <a href="Wrapper.Unit.html">Wrapper.Unit</a> for additional scoring when the <a href="Wrapper.Unit.html">Wrapper.Unit</a> is destroyed.</p>
<p>Note that if there was already a <a href="Wrapper.Unit.html">Wrapper.Unit</a> declared within the scoring with the same name, <p>Note that if there was already a <a href="Wrapper.Unit.html">Wrapper.Unit</a> declared within the scoring with the same name,
then the old <a href="Wrapper.Unit.html">Wrapper.Unit</a> will be replaced with the new <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</p> then the old <a href="Wrapper.Unit.html">Wrapper.Unit</a> will be replaced with the new <a href="Wrapper.Unit.html">Wrapper.Unit</a>.</p>
<div id= "#Functions##AddUnitScore" class="w3-show w3-white"> <div id= "#Functions##AddUnitScore" class="w3-show w3-white">
@ -3359,7 +3357,7 @@ This allows for a dynamic destruction zone evolution within your mission.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The <a href="Zone.html">Zone</a> which defines the destruction score perimeters. <p>The <a href="Zone.html">Zone</a> which defines the destruction score perimeters.
Note that a zone can be a polygon or a moving zone.</p> Note that a zone can be a polygon or a moving zone.</p>
</div> </div>
@ -3633,8 +3631,8 @@ Note that a zone can be a polygon or a moving zone.</p>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> <pre class="example"><code>
-- Define a new scoring object for the mission Gori Valley. -- Define a new scoring object for the mission Gori Valley.
ScoringObject = SCORING:New( "Gori Valley" ) ScoringObject = SCORING:New( "Gori Valley" )
</code></pre> </code></pre>
</div> </div>
@ -3867,7 +3865,7 @@ This allows for a dynamic destruction zone evolution within your mission.</p>
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The <a href="Zone.html">Zone</a> which defines the destruction score perimeters. <p>The <a href="Zone.html">Zone</a> which defines the destruction score perimeters.
Note that a zone can be a polygon or a moving zone.</p> Note that a zone can be a polygon or a moving zone.</p>
</div> </div>
@ -4447,7 +4445,7 @@ Note that a zone can be a polygon or a moving zone.</p>
<p>Use the method <a href="##(SCORING).SetCoalitionChangePenalty">SCORING.SetCoalitionChangePenalty</a>() to define the penalty when a player changes coalition. <p>Use the method <a href="##(SCORING).SetCoalitionChangePenalty">SCORING.SetCoalitionChangePenalty</a>() to define the penalty when a player changes coalition.
By default, the penalty for changing coalition is the default penalty scale. </p> By default, the penalty for changing coalition is the default penalty scale.</p>
<div id= "#Functions##SetCoalitionChangePenalty" class="w3-show w3-white"> <div id= "#Functions##SetCoalitionChangePenalty" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -4465,7 +4463,7 @@ By default, the penalty for changing coalition is the default penalty scale. </
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The amount of penalty that is given. </p> <p>The amount of penalty that is given.</p>
</div> </div>
</div> </div>
@ -4538,8 +4536,8 @@ By default, the penalty for changing coalition is the default penalty scale. </
<p>When a player commits too much damage to friendlies, his penalty score will reach a certain level.</p> <p>When a player commits too much damage to friendlies, his penalty score will reach a certain level.</p>
<p>Use this method to define the level when a player gets kicked. <br/> <p>Use this method to define the level when a player gets kicked.
By default, the fratricide level is the default penalty mutiplier * 2 for the penalty score.</p> By default, the fratricide level is the default penalty multiplier * 2 for the penalty score.</p>
<div id= "#Functions##SetFratricide" class="w3-show w3-white"> <div id= "#Functions##SetFratricide" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -4601,7 +4599,7 @@ By default, the fratricide level is the default penalty mutiplier * 2 for the pe
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>If true is given, the messages are sent. </p> <p>If true is given, the messages are sent.</p>
</div> </div>
</div> </div>
@ -4645,7 +4643,7 @@ By default, the fratricide level is the default penalty mutiplier * 2 for the pe
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>If true is given, the messages are sent. </p> <p>If true is given, the messages are sent.</p>
</div> </div>
</div> </div>
@ -4689,7 +4687,7 @@ By default, the fratricide level is the default penalty mutiplier * 2 for the pe
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>If true is given, the messages are sent. </p> <p>If true is given, the messages are sent.</p>
</div> </div>
</div> </div>
@ -4793,7 +4791,7 @@ By default, the fratricide level is the default penalty mutiplier * 2 for the pe
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>If true is given, the messages are sent. </p> <p>If true is given, the messages are sent.</p>
</div> </div>
</div> </div>
@ -5470,7 +5468,7 @@ The scale magnifies the scores given to the players.</p>
<p> During mission startup, especially for single player, <p> During mission startup, especially for single player,
iterate the database for the player that has joined, and add him to the scoring, and set the menu. iterate the database for the player that has joined, and add him to the scoring, and set the menu.
But this can only be started one second after the mission has started, so i need to schedule this ...</p> But this can only be started one second after the mission has started, so i need to schedule this ...</p>
@ -5494,7 +5492,7 @@ The scale magnifies the scores given to the players.</p>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(SCORING).penaltyoncoalitionchange" ><strong>SCORING.penaltyoncoalitionchange</strong></a> <a id="#(SCORING).penaltyoncoalitionchange" ><strong>SCORING.penaltyoncoalitionchange</strong></a>

View File

@ -2288,7 +2288,7 @@ warehouseBatumi:Load("D:\\My Warehouse Data\\")
warehouseBatumi:Start() warehouseBatumi:Start()
</code></pre> </code></pre>
<p>This sequence loads all assets from file. If a warehouse was captured in the last mission, it also respawns the static warehouse structure with the right coaliton. <p>This sequence loads all assets from file. If a warehouse was captured in the last mission, it also respawns the static warehouse structure with the right coalition.
However, it due to DCS limitations it is not possible to set the airbase coalition. This has to be done manually in the mission editor. Or alternatively, one could However, it due to DCS limitations it is not possible to set the airbase coalition. This has to be done manually in the mission editor. Or alternatively, one could
spawn some ground units via a self request and let them capture the airbase.</p> spawn some ground units via a self request and let them capture the airbase.</p>
@ -4745,7 +4745,7 @@ end
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(WAREHOUSE).zone">WAREHOUSE.zone</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(WAREHOUSE).zone">WAREHOUSE.zone</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Zone around the warehouse. If this zone is captured, the warehouse and all its assets goes to the capturing coaliton.</p> <p>Zone around the warehouse. If this zone is captured, the warehouse and all its assets goes to the capturing coalition.</p>
</td> </td>
</tr> </tr>
</table> </table>
@ -6839,7 +6839,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<a href="Core.Zone.html##(ZONE)">Core.Zone#ZONE</a> <a href="Core.Zone.html##(ZONE)">Core.Zone#ZONE</a>
<a id="#(WAREHOUSE).zone" ><strong>WAREHOUSE.zone</strong></a> <a id="#(WAREHOUSE).zone" ><strong>WAREHOUSE.zone</strong></a>
<p>Zone around the warehouse. If this zone is captured, the warehouse and all its assets goes to the capturing coaliton.</p> <p>Zone around the warehouse. If this zone is captured, the warehouse and all its assets goes to the capturing coalition.</p>
</div> </div>
@ -7931,7 +7931,7 @@ Optionally, only warehouses with (specific) assets can be included in the search
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Coalition side of the warehouse. Default is the same coaliton as the present warehouse. Set to false for any coalition.</p> <p>(Optional) Coalition side of the warehouse. Default is the same coalition as the present warehouse. Set to false for any coalition.</p>
</div> </div>
</div> </div>
@ -15035,7 +15035,7 @@ This is important in order to determine if a job is done and can be removed from
<p>Create or update mark text at warehouse, which is displayed in F10 map showing how many assets of each type are in stock.</p> <p>Create or update mark text at warehouse, which is displayed in F10 map showing how many assets of each type are in stock.</p>
<p>Only the coaliton of the warehouse owner is able to see it.</p> <p>Only the coalition of the warehouse owner is able to see it.</p>
<div id= "#Functions##_UpdateWarehouseMarkText" class="w3-show w3-white"> <div id= "#Functions##_UpdateWarehouseMarkText" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -19984,7 +19984,7 @@ this request is used to put the groups back into the warehouse stock.</p>
<a href="Core.Zone.html##(ZONE)">Core.Zone#ZONE</a> <a href="Core.Zone.html##(ZONE)">Core.Zone#ZONE</a>
<a id="#(WAREHOUSE).zone" ><strong>WAREHOUSE.zone</strong></a> <a id="#(WAREHOUSE).zone" ><strong>WAREHOUSE.zone</strong></a>
<p>Zone around the warehouse. If this zone is captured, the warehouse and all its assets goes to the capturing coaliton.</p> <p>Zone around the warehouse. If this zone is captured, the warehouse and all its assets goes to the capturing coalition.</p>
</div> </div>
@ -21970,7 +21970,7 @@ this request is used to put the groups back into the warehouse stock.</p>
<a href="Core.Zone.html##(ZONE)">Core.Zone#ZONE</a> <a href="Core.Zone.html##(ZONE)">Core.Zone#ZONE</a>
<a id="#(WAREHOUSE).zone" ><strong>WAREHOUSE.zone</strong></a> <a id="#(WAREHOUSE).zone" ><strong>WAREHOUSE.zone</strong></a>
<p>Zone around the warehouse. If this zone is captured, the warehouse and all its assets goes to the capturing coaliton.</p> <p>Zone around the warehouse. If this zone is captured, the warehouse and all its assets goes to the capturing coalition.</p>
</div> </div>

View File

@ -2188,7 +2188,7 @@ We start the monitoring after 5 seconds, and will repeat every 30 seconds a chec
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(ZONE_CAPTURE_COALITION).GetPreviousCoalition">ZONE_CAPTURE_COALITION:GetPreviousCoalition()</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(ZONE_CAPTURE_COALITION).GetPreviousCoalition">ZONE_CAPTURE_COALITION:GetPreviousCoalition()</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Get the previous coaliton, i.e.</p> <p>Get the previous coalition, i.e.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2842,7 +2842,7 @@ We start the monitoring after 5 seconds, and will repeat every 30 seconds a chec
<p>Check if zone is "Attacked", i.e.</p> <p>Check if zone is "Attacked", i.e.</p>
<p>another coaliton entered the zone.</p> <p>another coalition entered the zone.</p>
<div id= "#Functions##IsAttacked" class="w3-show w3-white"> <div id= "#Functions##IsAttacked" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -2938,7 +2938,7 @@ We start the monitoring after 5 seconds, and will repeat every 30 seconds a chec
<p>Check if zone is "Guarded", i.e.</p> <p>Check if zone is "Guarded", i.e.</p>
<p>only one (the defending) coaliton is present inside the zone.</p> <p>only one (the defending) coalition is present inside the zone.</p>
<div id= "#Functions##IsGuarded" class="w3-show w3-white"> <div id= "#Functions##IsGuarded" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -4242,7 +4242,7 @@ end
<h2><a id="#(ZONE_CAPTURE_COALITION).GetPreviousCoalition" ><strong>ZONE_CAPTURE_COALITION:GetPreviousCoalition()</strong></a></h2> <h2><a id="#(ZONE_CAPTURE_COALITION).GetPreviousCoalition" ><strong>ZONE_CAPTURE_COALITION:GetPreviousCoalition()</strong></a></h2>
</div> </div>
<p>Get the previous coaliton, i.e.</p> <p>Get the previous coalition, i.e.</p>
<p>the one owning the zone before the current one. </p> <p>the one owning the zone before the current one. </p>
@ -6146,7 +6146,7 @@ Returns the Coalition for the given Coalition if there are units of the Coalitio
<p>Is All in Zone of Coalition?</p> <p>Is All in Zone of Coalition?</p>
<p>Check if only the specifed coalition is inside the zone and noone else.</p> <p>Check if only the specified coalition is inside the zone and noone else.</p>
<div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white"> <div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -6271,8 +6271,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsEmpty = self.Zone:IsNoneInZone()</code></pre> self.Zone:Scan()
local IsEmpty = self.Zone:IsNoneInZone()
</code></pre>
</div> </div>
@ -6320,8 +6322,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>
@ -6337,7 +6341,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
<p>Is Some in Zone of Coalition?</p> <p>Is Some in Zone of Coalition?</p>
<p>Check if more than one coaltion is inside the zone and the specifed coalition is one of them. <p>Check if more than one coalition is inside the zone and the specified coalition is one of them.
You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated! You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated!
Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p> Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p>
@ -6357,7 +6361,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>ID of the coaliton which is checked to be inside the zone.</p> <p>ID of the coalition which is checked to be inside the zone.</p>
</div> </div>
</div> </div>
@ -6373,8 +6377,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>

View File

@ -3471,7 +3471,7 @@ Returns the Coalition for the given Coalition if there are units of the Coalitio
<p>Is All in Zone of Coalition?</p> <p>Is All in Zone of Coalition?</p>
<p>Check if only the specifed coalition is inside the zone and noone else.</p> <p>Check if only the specified coalition is inside the zone and noone else.</p>
<div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white"> <div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -3596,8 +3596,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsEmpty = self.Zone:IsNoneInZone()</code></pre> self.Zone:Scan()
local IsEmpty = self.Zone:IsNoneInZone()
</code></pre>
</div> </div>
@ -3645,8 +3647,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>
@ -3662,7 +3666,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
<p>Is Some in Zone of Coalition?</p> <p>Is Some in Zone of Coalition?</p>
<p>Check if more than one coaltion is inside the zone and the specifed coalition is one of them. <p>Check if more than one coalition is inside the zone and the specified coalition is one of them.
You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated! You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated!
Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p> Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p>
@ -3682,7 +3686,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>ID of the coaliton which is checked to be inside the zone.</p> <p>ID of the coalition which is checked to be inside the zone.</p>
</div> </div>
</div> </div>
@ -3698,8 +3702,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>

View File

@ -4806,7 +4806,7 @@ Returns the Coalition for the given Coalition if there are units of the Coalitio
<p>Is All in Zone of Coalition?</p> <p>Is All in Zone of Coalition?</p>
<p>Check if only the specifed coalition is inside the zone and noone else.</p> <p>Check if only the specified coalition is inside the zone and noone else.</p>
<div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white"> <div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -4931,8 +4931,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsEmpty = self.Zone:IsNoneInZone()</code></pre> self.Zone:Scan()
local IsEmpty = self.Zone:IsNoneInZone()
</code></pre>
</div> </div>
@ -4980,8 +4982,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>
@ -4997,7 +5001,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
<p>Is Some in Zone of Coalition?</p> <p>Is Some in Zone of Coalition?</p>
<p>Check if more than one coaltion is inside the zone and the specifed coalition is one of them. <p>Check if more than one coalition is inside the zone and the specified coalition is one of them.
You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated! You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated!
Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p> Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p>
@ -5017,7 +5021,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>ID of the coaliton which is checked to be inside the zone.</p> <p>ID of the coalition which is checked to be inside the zone.</p>
</div> </div>
</div> </div>
@ -5033,8 +5037,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>

View File

@ -1497,7 +1497,7 @@ Controls a network of short range air/missile defense groups.</p>
<hr/> <hr/>
<p>ZONE_GOAL_COALITION models processes that have a Goal with a defined achievement involving a Zone for a Coalition. <br/> <p>ZONE_GOAL_COALITION models processes that have a Goal with a defined achievement involving a Zone for a Coalition.
Derived classes implement the ways how the achievements can be realized.</p> Derived classes implement the ways how the achievements can be realized.</p>
<hr/> <hr/>
@ -1589,7 +1589,7 @@ Derived classes implement the ways how the achievements can be realized.</p>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(ZONE_GOAL_COALITION).GetPreviousCoalition">ZONE_GOAL_COALITION:GetPreviousCoalition()</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(ZONE_GOAL_COALITION).GetPreviousCoalition">ZONE_GOAL_COALITION:GetPreviousCoalition()</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Get the previous coaliton, i.e.</p> <p>Get the previous coalition, i.e.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2166,7 +2166,7 @@ Derived classes implement the ways how the achievements can be realized.</p>
<h2><a id="#(ZONE_GOAL_COALITION).GetPreviousCoalition" ><strong>ZONE_GOAL_COALITION:GetPreviousCoalition()</strong></a></h2> <h2><a id="#(ZONE_GOAL_COALITION).GetPreviousCoalition" ><strong>ZONE_GOAL_COALITION:GetPreviousCoalition()</strong></a></h2>
</div> </div>
<p>Get the previous coaliton, i.e.</p> <p>Get the previous coalition, i.e.</p>
<p>the one owning the zone before the current one. </p> <p>the one owning the zone before the current one. </p>
@ -3954,7 +3954,7 @@ Returns the Coalition for the given Coalition if there are units of the Coalitio
<p>Is All in Zone of Coalition?</p> <p>Is All in Zone of Coalition?</p>
<p>Check if only the specifed coalition is inside the zone and noone else.</p> <p>Check if only the specified coalition is inside the zone and noone else.</p>
<div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white"> <div id= "#Functions##IsAllInZoneOfCoalition" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -4079,8 +4079,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsEmpty = self.Zone:IsNoneInZone()</code></pre> self.Zone:Scan()
local IsEmpty = self.Zone:IsNoneInZone()
</code></pre>
</div> </div>
@ -4128,8 +4130,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsOccupied = self.Zone:IsNoneInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>
@ -4145,7 +4149,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
<p>Is Some in Zone of Coalition?</p> <p>Is Some in Zone of Coalition?</p>
<p>Check if more than one coaltion is inside the zone and the specifed coalition is one of them. <p>Check if more than one coalition is inside the zone and the specified coalition is one of them.
You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated! You first need to use the <a href="##(ZONE_RADIUS).Scan">ZONE_RADIUS.Scan</a> method to scan the zone before it can be evaluated!
Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p> Note that once a zone has been scanned, multiple evaluations can be done on the scan result set.</p>
@ -4165,7 +4169,7 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>ID of the coaliton which is checked to be inside the zone.</p> <p>ID of the coalition which is checked to be inside the zone.</p>
</div> </div>
</div> </div>
@ -4181,8 +4185,10 @@ Note that once a zone has been scanned, multiple evaluations can be done on the
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code> self.Zone:Scan() <pre class="example"><code>
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )</code></pre> self.Zone:Scan()
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )
</code></pre>
</div> </div>

View File

@ -38684,7 +38684,7 @@ When moose is loading dynamically (for moose class development), tracing is swit
<p> Set case to that of lead.</p> <p> Set case of f</p>
</div> </div>
@ -38752,17 +38752,6 @@ When moose is loading dynamically (for moose class development), tracing is swit
<p>Data table at each position in the groove. Elements are of type <a href="##(AIRBOSS).GrooveData">AIRBOSS.GrooveData</a>.</p> <p>Data table at each position in the groove. Elements are of type <a href="##(AIRBOSS).GrooveData">AIRBOSS.GrooveData</a>.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(AIRBOSS.PlayerData).holding" ><strong>AIRBOSS.PlayerData.holding</strong></a>
</div> </div>
</div> </div>
@ -38956,9 +38945,6 @@ When moose is loading dynamically (for moose class development), tracing is swit
<p> Set new time stamp.</p>
</div> </div>
</div> </div>

View File

@ -3540,7 +3540,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CSAR).FreeVHFFrequencies" ><strong>CSAR.FreeVHFFrequencies</strong></a> <a id="#(CSAR).FreeVHFFrequencies" ><strong>CSAR.FreeVHFFrequencies</strong></a>
@ -3629,11 +3629,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CSAR).allheligroupset" ><strong>CSAR.allheligroupset</strong></a> <a id="#(CSAR).allheligroupset" ><strong>CSAR.allheligroupset</strong></a>
<p> GROUP_SET of all helis</p>
</div> </div>
</div> </div>
@ -4181,6 +4184,20 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(CSAR).rescuedpilots" ><strong>CSAR.rescuedpilots</strong></a>
<p> counter for saved pilots</p>
</div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
@ -4206,6 +4223,20 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(CSAR).rescues" ><strong>CSAR.rescues</strong></a>
<p> counter for successful rescue landings at FARP/AFB/MASH</p>
</div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
@ -8301,7 +8332,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CSAR).FreeVHFFrequencies" ><strong>CSAR.FreeVHFFrequencies</strong></a> <a id="#(CSAR).FreeVHFFrequencies" ><strong>CSAR.FreeVHFFrequencies</strong></a>
@ -8390,11 +8421,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CSAR).allheligroupset" ><strong>CSAR.allheligroupset</strong></a> <a id="#(CSAR).allheligroupset" ><strong>CSAR.allheligroupset</strong></a>
<p> GROUP_SET of all helis</p>
</div> </div>
</div> </div>
@ -8942,6 +8976,20 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(CSAR).rescuedpilots" ><strong>CSAR.rescuedpilots</strong></a>
<p> counter for saved pilots</p>
</div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
@ -8967,6 +9015,20 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(CSAR).rescues" ><strong>CSAR.rescues</strong></a>
<p> counter for successful rescue landings at FARP/AFB/MASH</p>
</div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
@ -10581,7 +10643,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CSAR).FreeVHFFrequencies" ><strong>CSAR.FreeVHFFrequencies</strong></a> <a id="#(CSAR).FreeVHFFrequencies" ><strong>CSAR.FreeVHFFrequencies</strong></a>
@ -10670,11 +10732,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CSAR).allheligroupset" ><strong>CSAR.allheligroupset</strong></a> <a id="#(CSAR).allheligroupset" ><strong>CSAR.allheligroupset</strong></a>
<p> GROUP_SET of all helis</p>
</div> </div>
</div> </div>
@ -11222,6 +11287,20 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(CSAR).rescuedpilots" ><strong>CSAR.rescuedpilots</strong></a>
<p> counter for saved pilots</p>
</div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
@ -11247,6 +11326,20 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(CSAR).rescues" ><strong>CSAR.rescues</strong></a>
<p> counter for successful rescue landings at FARP/AFB/MASH</p>
</div>
</div> </div>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">

View File

@ -5722,7 +5722,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).FreeUHFFrequencies" ><strong>CTLD.FreeUHFFrequencies</strong></a> <a id="#(CTLD).FreeUHFFrequencies" ><strong>CTLD.FreeUHFFrequencies</strong></a>
@ -5733,7 +5733,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).FreeVHFFrequencies" ><strong>CTLD.FreeVHFFrequencies</strong></a> <a id="#(CTLD).FreeVHFFrequencies" ><strong>CTLD.FreeVHFFrequencies</strong></a>
@ -5863,14 +5863,11 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).PilotGroups" ><strong>CTLD.PilotGroups</strong></a> <a id="#(CTLD).PilotGroups" ><strong>CTLD.PilotGroups</strong></a>
<p> tables</p>
</div> </div>
</div> </div>
@ -12843,7 +12840,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).FreeUHFFrequencies" ><strong>CTLD.FreeUHFFrequencies</strong></a> <a id="#(CTLD).FreeUHFFrequencies" ><strong>CTLD.FreeUHFFrequencies</strong></a>
@ -12854,7 +12851,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).FreeVHFFrequencies" ><strong>CTLD.FreeVHFFrequencies</strong></a> <a id="#(CTLD).FreeVHFFrequencies" ><strong>CTLD.FreeVHFFrequencies</strong></a>
@ -12984,14 +12981,11 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).PilotGroups" ><strong>CTLD.PilotGroups</strong></a> <a id="#(CTLD).PilotGroups" ><strong>CTLD.PilotGroups</strong></a>
<p> tables</p>
</div> </div>
</div> </div>
@ -15136,7 +15130,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).FreeUHFFrequencies" ><strong>CTLD.FreeUHFFrequencies</strong></a> <a id="#(CTLD).FreeUHFFrequencies" ><strong>CTLD.FreeUHFFrequencies</strong></a>
@ -15147,7 +15141,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).FreeVHFFrequencies" ><strong>CTLD.FreeVHFFrequencies</strong></a> <a id="#(CTLD).FreeVHFFrequencies" ><strong>CTLD.FreeVHFFrequencies</strong></a>
@ -15277,14 +15271,11 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#table
<a id="#(CTLD).PilotGroups" ><strong>CTLD.PilotGroups</strong></a> <a id="#(CTLD).PilotGroups" ><strong>CTLD.PilotGroups</strong></a>
<p> tables</p>
</div> </div>
</div> </div>
@ -19485,17 +19476,6 @@ When moose is loading dynamically (for moose class development), tracing is swit
<p>Can transport crate.</p> <p>Can transport crate.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(CTLD.UnitCapabilities).length" ><strong>CTLD.UnitCapabilities.length</strong></a>
</div> </div>
</div> </div>
@ -23204,6 +23184,17 @@ When moose is loading dynamically (for moose class development), tracing is swit
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a href="Core.Point.html##(COORDINATE)">Core.Point#COORDINATE</a>
<a id="#(CTLD_ENGINEERING).currwpt" ><strong>CTLD_ENGINEERING.currwpt</strong></a>
</div> </div>
</div> </div>
@ -23857,6 +23848,17 @@ When moose is loading dynamically (for moose class development), tracing is swit
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a href="Core.Point.html##(COORDINATE)">Core.Point#COORDINATE</a>
<a id="#(CTLD_ENGINEERING).currwpt" ><strong>CTLD_ENGINEERING.currwpt</strong></a>
</div> </div>
</div> </div>

View File

@ -4565,7 +4565,7 @@ If the Unit is part of a Task in the Mission, true is returned.</p>
<div class="w3-row w3-margin-left w3-border-bottom w3-border-l2"> <div class="w3-row w3-margin-left w3-border-bottom w3-border-l2">
<div class="w3-half"> <div class="w3-half">
<p> <p>
<a href="DCS.html##(coaliton.side)">DCS#coaliton.side</a> <a href="DCS.html##(coalition.side)">DCS#coalition.side</a>
<strong><strong>MissionCoalition</strong></strong> <strong><strong>MissionCoalition</strong></strong>
</p> </p>
</div> </div>

View File

@ -1579,7 +1579,7 @@ Note that the order of the tasks are shortest distance first to the unit positio
<p><img src="../Tasking/Report_Statistics_Progress.JPG" alt="Mission"/></p> <p><img src="../Tasking/Report_Statistics_Progress.JPG" alt="Mission"/></p>
<p>A statistic report on the progress of the mission. Each task achievement will increase the %-tage to 100% as a goal to complete the task.</p> <p>A statistic report on the progress of the mission. Each task achievement will increase the % to 100% as a goal to complete the task.</p>
<h2>1.3) Join a Task.</h2> <h2>1.3) Join a Task.</h2>

View File

@ -3083,11 +3083,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(TASK_A2G_DISPATCHER).FlashNewTask" ><strong>TASK_A2G_DISPATCHER.FlashNewTask</strong></a> <a id="#(TASK_A2G_DISPATCHER).FlashNewTask" ><strong>TASK_A2G_DISPATCHER.FlashNewTask</strong></a>
<p> set to false to suppress flash messages</p>
</div> </div>
</div> </div>
@ -3660,11 +3663,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(TASK_A2G_DISPATCHER).FlashNewTask" ><strong>TASK_A2G_DISPATCHER.FlashNewTask</strong></a> <a id="#(TASK_A2G_DISPATCHER).FlashNewTask" ><strong>TASK_A2G_DISPATCHER.FlashNewTask</strong></a>
<p> set to false to suppress flash messages</p>
</div> </div>
</div> </div>
@ -4847,11 +4853,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(TASK_A2G_DISPATCHER).FlashNewTask" ><strong>TASK_A2G_DISPATCHER.FlashNewTask</strong></a> <a id="#(TASK_A2G_DISPATCHER).FlashNewTask" ><strong>TASK_A2G_DISPATCHER.FlashNewTask</strong></a>
<p> set to false to suppress flash messages</p>
</div> </div>
</div> </div>
@ -6340,11 +6349,14 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(TASK_A2G_DISPATCHER).FlashNewTask" ><strong>TASK_A2G_DISPATCHER.FlashNewTask</strong></a> <a id="#(TASK_A2G_DISPATCHER).FlashNewTask" ><strong>TASK_A2G_DISPATCHER.FlashNewTask</strong></a>
<p> set to false to suppress flash messages</p>
</div> </div>
</div> </div>

View File

@ -3150,7 +3150,7 @@ based on the tasking capabilities defined in <a href="Tasking.Task.html##(TASK)"
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(TASK_CARGO).CargoLimit" ><strong>TASK_CARGO.CargoLimit</strong></a> <a id="#(TASK_CARGO).CargoLimit" ><strong>TASK_CARGO.CargoLimit</strong></a>
@ -4572,7 +4572,7 @@ based on the tasking capabilities defined in <a href="Tasking.Task.html##(TASK)"
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(TASK_CARGO).CargoLimit" ><strong>TASK_CARGO.CargoLimit</strong></a> <a id="#(TASK_CARGO).CargoLimit" ><strong>TASK_CARGO.CargoLimit</strong></a>
@ -9104,7 +9104,7 @@ If the Unit is part of the Task, true is returned.</p>
<div> <div>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
#number
<a id="#(TASK_CARGO).CargoLimit" ><strong>TASK_CARGO.CargoLimit</strong></a> <a id="#(TASK_CARGO).CargoLimit" ><strong>TASK_CARGO.CargoLimit</strong></a>

View File

@ -3091,54 +3091,21 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARBriefing" ><strong>TASK_CARGO_DISPATCHER.CSARBriefing</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARDeployZones" ><strong>TASK_CARGO_DISPATCHER.CSARDeployZones</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARTaskName" ><strong>TASK_CARGO_DISPATCHER.CSARTaskName</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(TASK_CARGO_DISPATCHER).CSARTasks" ><strong>TASK_CARGO_DISPATCHER.CSARTasks</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).DefaultDeployZones" ><strong>TASK_CARGO_DISPATCHER.DefaultDeployZones</strong></a> <a id="#(TASK_CARGO_DISPATCHER).DefaultDeployZones" ><strong>TASK_CARGO_DISPATCHER.DefaultDeployZones</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).MaxCSAR" ><strong>TASK_CARGO_DISPATCHER.MaxCSAR</strong></a>
</div> </div>
</div> </div>
@ -4203,54 +4170,21 @@ This method can only be used once!</p>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARBriefing" ><strong>TASK_CARGO_DISPATCHER.CSARBriefing</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARDeployZones" ><strong>TASK_CARGO_DISPATCHER.CSARDeployZones</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARTaskName" ><strong>TASK_CARGO_DISPATCHER.CSARTaskName</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(TASK_CARGO_DISPATCHER).CSARTasks" ><strong>TASK_CARGO_DISPATCHER.CSARTasks</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).DefaultDeployZones" ><strong>TASK_CARGO_DISPATCHER.DefaultDeployZones</strong></a> <a id="#(TASK_CARGO_DISPATCHER).DefaultDeployZones" ><strong>TASK_CARGO_DISPATCHER.DefaultDeployZones</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).MaxCSAR" ><strong>TASK_CARGO_DISPATCHER.MaxCSAR</strong></a>
</div> </div>
</div> </div>
@ -5094,54 +5028,21 @@ This method can only be used once!</p>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARBriefing" ><strong>TASK_CARGO_DISPATCHER.CSARBriefing</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARDeployZones" ><strong>TASK_CARGO_DISPATCHER.CSARDeployZones</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARTaskName" ><strong>TASK_CARGO_DISPATCHER.CSARTaskName</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(TASK_CARGO_DISPATCHER).CSARTasks" ><strong>TASK_CARGO_DISPATCHER.CSARTasks</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).DefaultDeployZones" ><strong>TASK_CARGO_DISPATCHER.DefaultDeployZones</strong></a> <a id="#(TASK_CARGO_DISPATCHER).DefaultDeployZones" ><strong>TASK_CARGO_DISPATCHER.DefaultDeployZones</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).MaxCSAR" ><strong>TASK_CARGO_DISPATCHER.MaxCSAR</strong></a>
</div> </div>
</div> </div>
@ -6620,54 +6521,21 @@ This method can only be used once!</p>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARBriefing" ><strong>TASK_CARGO_DISPATCHER.CSARBriefing</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARDeployZones" ><strong>TASK_CARGO_DISPATCHER.CSARDeployZones</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).CSARTaskName" ><strong>TASK_CARGO_DISPATCHER.CSARTaskName</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
#boolean
<a id="#(TASK_CARGO_DISPATCHER).CSARTasks" ><strong>TASK_CARGO_DISPATCHER.CSARTasks</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).DefaultDeployZones" ><strong>TASK_CARGO_DISPATCHER.DefaultDeployZones</strong></a> <a id="#(TASK_CARGO_DISPATCHER).DefaultDeployZones" ><strong>TASK_CARGO_DISPATCHER.DefaultDeployZones</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(TASK_CARGO_DISPATCHER).MaxCSAR" ><strong>TASK_CARGO_DISPATCHER.MaxCSAR</strong></a>
</div> </div>
</div> </div>

View File

@ -3593,7 +3593,7 @@ use negative idp for rounding ahead of decimal place, positive for rounding afte
<p>Get the coalition name from its numerical ID, e.g.</p> <p>Get the coalition name from its numerical ID, e.g.</p>
<p>coaliton.side.RED.</p> <p>coalition.side.RED.</p>
<div id= "#Functions##GetCoalitionName" class="w3-show w3-white"> <div id= "#Functions##GetCoalitionName" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">

View File

@ -2906,13 +2906,13 @@ If the DCS Unit object does not exist or is nil, the CLIENT methods will return
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CLIENT).TaskOrbitCircle">CLIENT:TaskOrbitCircle(Altitude, Speed, Coordinate)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CLIENT).TaskOrbitCircle">CLIENT:TaskOrbitCircle(Altitude, Speed, Coordinate)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>(AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</p> <p>(AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CLIENT).TaskOrbitCircleAtVec2">CLIENT:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CLIENT).TaskOrbitCircleAtVec2">CLIENT:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>(AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</p> <p>(AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2924,7 +2924,7 @@ If the DCS Unit object does not exist or is nil, the CLIENT methods will return
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CLIENT).TaskRoute">CLIENT:TaskRoute(Points)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CLIENT).TaskRoute">CLIENT:TaskRoute(Points)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Return a Misson task to follow a given route defined by Points.</p> <p>Return a Mission task to follow a given route defined by Points.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -7842,7 +7842,7 @@ Note that a controllable can only have one beacon activated at a time with the e
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The ID of the unit the beacon is attached to. Usefull if more units are in one group.</p> <p>The ID of the unit the beacon is attached to. Useful if more units are in one group.</p>
</div> </div>
</div> </div>
@ -8342,7 +8342,7 @@ Note that a controllable can only have one beacon activated at a time with the e
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Delay in seconds before the frequncy is set. Default is immediately.</p> <p>(Optional) Delay in seconds before the frequency is set. Default is immediately.</p>
</div> </div>
</div> </div>
@ -8467,17 +8467,18 @@ Note that this can only work on GROUP level, although individual UNITs can be co
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code>--- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. <pre class="example"><code>
HeliGroup = GROUP:FindByName( "Helicopter" ) -- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class.
HeliGroup = GROUP:FindByName( "Helicopter" )
--- Route the helicopter back to the FARP after 60 seconds. -- Route the helicopter back to the FARP after 60 seconds.
-- We use the SCHEDULER class to do this. -- We use the SCHEDULER class to do this.
SCHEDULER:New( nil, SCHEDULER:New( nil,
function( HeliGroup ) function( HeliGroup )
local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 ) local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 )
HeliGroup:SetCommand( CommandRTB ) HeliGroup:SetCommand( CommandRTB )
end, { HeliGroup }, 90 end, { HeliGroup }, 90
)</code></pre> )</code></pre>
</div> </div>
@ -8701,7 +8702,7 @@ SCHEDULER:New( nil,
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -8989,7 +8990,7 @@ SCHEDULER:New( nil,
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -9604,7 +9605,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks.</p> <p>Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuel" class="w3-show w3-white"> <div id= "#Functions##GetFuel" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -9637,7 +9638,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative average amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p> <p>Returns relative average amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuelAve" class="w3-show w3-white"> <div id= "#Functions##GetFuelAve" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -9670,7 +9671,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative minimum amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p> <p>Returns relative minimum amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuelMin" class="w3-show w3-white"> <div id= "#Functions##GetFuelMin" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -13116,7 +13117,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -13251,7 +13252,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(Optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -13373,7 +13374,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Limits maximal quantity of attack. The aicraft/controllable will not make more attacks than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(Optional) Limits maximal quantity of attack. The aircraft/controllable will not make more attacks than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -13495,7 +13496,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -13754,7 +13755,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -15442,7 +15443,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(CLIENT).TaskOrbitCircle" ><strong>CLIENT:TaskOrbitCircle(Altitude, Speed, Coordinate)</strong></a></h2> <h2><a id="#(CLIENT).TaskOrbitCircle" ><strong>CLIENT:TaskOrbitCircle(Altitude, Speed, Coordinate)</strong></a></h2>
</div> </div>
<p>(AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</p> <p>(AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</p>
<div id= "#Functions##TaskOrbitCircle" class="w3-show w3-white"> <div id= "#Functions##TaskOrbitCircle" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -15512,7 +15513,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(CLIENT).TaskOrbitCircleAtVec2" ><strong>CLIENT:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</strong></a></h2> <h2><a id="#(CLIENT).TaskOrbitCircleAtVec2" ><strong>CLIENT:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</strong></a></h2>
</div> </div>
<p>(AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</p> <p>(AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</p>
<div id= "#Functions##TaskOrbitCircleAtVec2" class="w3-show w3-white"> <div id= "#Functions##TaskOrbitCircleAtVec2" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -15615,7 +15616,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(CLIENT).TaskRoute" ><strong>CLIENT:TaskRoute(Points)</strong></a></h2> <h2><a id="#(CLIENT).TaskRoute" ><strong>CLIENT:TaskRoute(Points)</strong></a></h2>
</div> </div>
<p>Return a Misson task to follow a given route defined by Points.</p> <p>Return a Mission task to follow a given route defined by Points.</p>
<div id= "#Functions##TaskRoute" class="w3-show w3-white"> <div id= "#Functions##TaskRoute" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">

View File

@ -1577,10 +1577,10 @@ This is different from the EnRoute tasks, where the targets of the task need to
<li><a href="##(CONTROLLABLE).TaskHold">CONTROLLABLE.TaskHold</a>: (GROUND) Hold ground controllable from moving.</li> <li><a href="##(CONTROLLABLE).TaskHold">CONTROLLABLE.TaskHold</a>: (GROUND) Hold ground controllable from moving.</li>
<li><a href="##(CONTROLLABLE).TaskHoldPosition">CONTROLLABLE.TaskHoldPosition</a>: (AIR) Hold position at the current position of the first unit of the controllable.</li> <li><a href="##(CONTROLLABLE).TaskHoldPosition">CONTROLLABLE.TaskHoldPosition</a>: (AIR) Hold position at the current position of the first unit of the controllable.</li>
<li><a href="##(CONTROLLABLE).TaskLand">CONTROLLABLE.TaskLand</a>: (AIR HELICOPTER) Landing at the ground. For helicopters only.</li> <li><a href="##(CONTROLLABLE).TaskLand">CONTROLLABLE.TaskLand</a>: (AIR HELICOPTER) Landing at the ground. For helicopters only.</li>
<li><a href="##(CONTROLLABLE).TaskLandAtZone">CONTROLLABLE.TaskLandAtZone</a>: (AIR) Land the controllable at a <a href="##(CONTROLLABLE).TaskOrbitCircle">CONTROLLABLE.TaskOrbitCircle</a>: (AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</li> <li><a href="##(CONTROLLABLE).TaskLandAtZone">CONTROLLABLE.TaskLandAtZone</a>: (AIR) Land the controllable at a <a href="##(CONTROLLABLE).TaskOrbitCircle">CONTROLLABLE.TaskOrbitCircle</a>: (AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</li>
<li><a href="##(CONTROLLABLE).TaskOrbitCircleAtVec2">CONTROLLABLE.TaskOrbitCircleAtVec2</a>: (AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</li> <li><a href="##(CONTROLLABLE).TaskOrbitCircleAtVec2">CONTROLLABLE.TaskOrbitCircleAtVec2</a>: (AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</li>
<li><a href="##(CONTROLLABLE).TaskRefueling">CONTROLLABLE.TaskRefueling</a>: (AIR) Refueling from the nearest tanker. No parameters.</li> <li><a href="##(CONTROLLABLE).TaskRefueling">CONTROLLABLE.TaskRefueling</a>: (AIR) Refueling from the nearest tanker. No parameters.</li>
<li><a href="##(CONTROLLABLE).TaskRoute">CONTROLLABLE.TaskRoute</a>: (AIR + GROUND) Return a Misson task to follow a given route defined by Points.</li> <li><a href="##(CONTROLLABLE).TaskRoute">CONTROLLABLE.TaskRoute</a>: (AIR + GROUND) Return a Mission task to follow a given route defined by Points.</li>
<li><a href="##(CONTROLLABLE).TaskRouteToVec2">CONTROLLABLE.TaskRouteToVec2</a>: (AIR + GROUND) Make the Controllable move to a given point.</li> <li><a href="##(CONTROLLABLE).TaskRouteToVec2">CONTROLLABLE.TaskRouteToVec2</a>: (AIR + GROUND) Make the Controllable move to a given point.</li>
<li><a href="##(CONTROLLABLE).TaskRouteToVec3">CONTROLLABLE.TaskRouteToVec3</a>: (AIR + GROUND) Make the Controllable move to a given point.</li> <li><a href="##(CONTROLLABLE).TaskRouteToVec3">CONTROLLABLE.TaskRouteToVec3</a>: (AIR + GROUND) Make the Controllable move to a given point.</li>
<li><a href="##(CONTROLLABLE).TaskRouteToZone">CONTROLLABLE.TaskRouteToZone</a>: (AIR + GROUND) Route the controllable to a given zone.</li> <li><a href="##(CONTROLLABLE).TaskRouteToZone">CONTROLLABLE.TaskRouteToZone</a>: (AIR + GROUND) Route the controllable to a given zone.</li>
@ -1604,7 +1604,7 @@ This is different from the EnRoute tasks, where the targets of the task need to
<h2>2.3) Task preparation</h2> <h2>2.3) Task preparation</h2>
<p>There are certain task methods that allow to tailor the task behaviour:</p> <p>There are certain task methods that allow to tailor the task behavior:</p>
<ul> <ul>
<li><a href="##(CONTROLLABLE).TaskWrappedAction">CONTROLLABLE.TaskWrappedAction</a>: Return a WrappedAction Task taking a Command.</li> <li><a href="##(CONTROLLABLE).TaskWrappedAction">CONTROLLABLE.TaskWrappedAction</a>: Return a WrappedAction Task taking a Command.</li>
@ -1659,7 +1659,7 @@ The method <a href="##(CONTROLLABLE).SetTaskWaypoint">CONTROLLABLE.SetTaskWaypoi
<h1>5) Option methods</h1> <h1>5) Option methods</h1>
<p>Controllable <strong>Option methods</strong> change the behaviour of the Controllable while being alive.</p> <p>Controllable <strong>Option methods</strong> change the behavior of the Controllable while being alive.</p>
<h2>5.1) Rule of Engagement:</h2> <h2>5.1) Rule of Engagement:</h2>
@ -2487,13 +2487,13 @@ The method <a href="##(CONTROLLABLE).SetTaskWaypoint">CONTROLLABLE.SetTaskWaypoi
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CONTROLLABLE).TaskOrbitCircle">CONTROLLABLE:TaskOrbitCircle(Altitude, Speed, Coordinate)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CONTROLLABLE).TaskOrbitCircle">CONTROLLABLE:TaskOrbitCircle(Altitude, Speed, Coordinate)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>(AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</p> <p>(AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CONTROLLABLE).TaskOrbitCircleAtVec2">CONTROLLABLE:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CONTROLLABLE).TaskOrbitCircleAtVec2">CONTROLLABLE:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>(AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</p> <p>(AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2505,7 +2505,7 @@ The method <a href="##(CONTROLLABLE).SetTaskWaypoint">CONTROLLABLE.SetTaskWaypoi
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CONTROLLABLE).TaskRoute">CONTROLLABLE:TaskRoute(Points)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(CONTROLLABLE).TaskRoute">CONTROLLABLE:TaskRoute(Points)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Return a Misson task to follow a given route defined by Points.</p> <p>Return a Mission task to follow a given route defined by Points.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -3934,7 +3934,7 @@ Note that a controllable can only have one beacon activated at a time with the e
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The ID of the unit the beacon is attached to. Usefull if more units are in one group.</p> <p>The ID of the unit the beacon is attached to. Useful if more units are in one group.</p>
</div> </div>
</div> </div>
@ -4434,7 +4434,7 @@ Note that a controllable can only have one beacon activated at a time with the e
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Delay in seconds before the frequncy is set. Default is immediately.</p> <p>(Optional) Delay in seconds before the frequency is set. Default is immediately.</p>
</div> </div>
</div> </div>
@ -4559,17 +4559,18 @@ Note that this can only work on GROUP level, although individual UNITs can be co
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code>--- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. <pre class="example"><code>
HeliGroup = GROUP:FindByName( "Helicopter" ) -- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class.
HeliGroup = GROUP:FindByName( "Helicopter" )
--- Route the helicopter back to the FARP after 60 seconds. -- Route the helicopter back to the FARP after 60 seconds.
-- We use the SCHEDULER class to do this. -- We use the SCHEDULER class to do this.
SCHEDULER:New( nil, SCHEDULER:New( nil,
function( HeliGroup ) function( HeliGroup )
local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 ) local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 )
HeliGroup:SetCommand( CommandRTB ) HeliGroup:SetCommand( CommandRTB )
end, { HeliGroup }, 90 end, { HeliGroup }, 90
)</code></pre> )</code></pre>
</div> </div>
@ -4793,7 +4794,7 @@ SCHEDULER:New( nil,
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -5081,7 +5082,7 @@ SCHEDULER:New( nil,
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -5696,7 +5697,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks.</p> <p>Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuel" class="w3-show w3-white"> <div id= "#Functions##GetFuel" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5729,7 +5730,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative average amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p> <p>Returns relative average amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuelAve" class="w3-show w3-white"> <div id= "#Functions##GetFuelAve" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -5762,7 +5763,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative minimum amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p> <p>Returns relative minimum amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuelMin" class="w3-show w3-white"> <div id= "#Functions##GetFuelMin" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -9208,7 +9209,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -9343,7 +9344,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(Optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -9465,7 +9466,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Limits maximal quantity of attack. The aicraft/controllable will not make more attacks than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(Optional) Limits maximal quantity of attack. The aircraft/controllable will not make more attacks than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -9587,7 +9588,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -9846,7 +9847,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -11534,7 +11535,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(CONTROLLABLE).TaskOrbitCircle" ><strong>CONTROLLABLE:TaskOrbitCircle(Altitude, Speed, Coordinate)</strong></a></h2> <h2><a id="#(CONTROLLABLE).TaskOrbitCircle" ><strong>CONTROLLABLE:TaskOrbitCircle(Altitude, Speed, Coordinate)</strong></a></h2>
</div> </div>
<p>(AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</p> <p>(AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</p>
<div id= "#Functions##TaskOrbitCircle" class="w3-show w3-white"> <div id= "#Functions##TaskOrbitCircle" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -11604,7 +11605,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(CONTROLLABLE).TaskOrbitCircleAtVec2" ><strong>CONTROLLABLE:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</strong></a></h2> <h2><a id="#(CONTROLLABLE).TaskOrbitCircleAtVec2" ><strong>CONTROLLABLE:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</strong></a></h2>
</div> </div>
<p>(AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</p> <p>(AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</p>
<div id= "#Functions##TaskOrbitCircleAtVec2" class="w3-show w3-white"> <div id= "#Functions##TaskOrbitCircleAtVec2" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -11707,7 +11708,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(CONTROLLABLE).TaskRoute" ><strong>CONTROLLABLE:TaskRoute(Points)</strong></a></h2> <h2><a id="#(CONTROLLABLE).TaskRoute" ><strong>CONTROLLABLE:TaskRoute(Points)</strong></a></h2>
</div> </div>
<p>Return a Misson task to follow a given route defined by Points.</p> <p>Return a Mission task to follow a given route defined by Points.</p>
<div id= "#Functions##TaskRoute" class="w3-show w3-white"> <div id= "#Functions##TaskRoute" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">

View File

@ -3146,13 +3146,13 @@ amount of fuel in the group.</p>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(GROUP).TaskOrbitCircle">GROUP:TaskOrbitCircle(Altitude, Speed, Coordinate)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(GROUP).TaskOrbitCircle">GROUP:TaskOrbitCircle(Altitude, Speed, Coordinate)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>(AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</p> <p>(AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(GROUP).TaskOrbitCircleAtVec2">GROUP:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(GROUP).TaskOrbitCircleAtVec2">GROUP:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>(AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</p> <p>(AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -3164,7 +3164,7 @@ amount of fuel in the group.</p>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(GROUP).TaskRoute">GROUP:TaskRoute(Points)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(GROUP).TaskRoute">GROUP:TaskRoute(Points)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Return a Misson task to follow a given route defined by Points.</p> <p>Return a Mission task to follow a given route defined by Points.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -4751,7 +4751,18 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionZone" ><strong>GROUP.InitRespawnRandomizePositionZone</strong></a> <a id="#(GROUP).InitRespawnRandomizePositionInner" ><strong>GROUP.InitRespawnRandomizePositionInner</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionOuter" ><strong>GROUP.InitRespawnRandomizePositionOuter</strong></a>
@ -8858,7 +8869,18 @@ So each unit of the group is respawned at exactly the same parking spot as it cu
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionZone" ><strong>GROUP.InitRespawnRandomizePositionZone</strong></a> <a id="#(GROUP).InitRespawnRandomizePositionInner" ><strong>GROUP.InitRespawnRandomizePositionInner</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionOuter" ><strong>GROUP.InitRespawnRandomizePositionOuter</strong></a>
@ -8988,7 +9010,7 @@ Note that a controllable can only have one beacon activated at a time with the e
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The ID of the unit the beacon is attached to. Usefull if more units are in one group.</p> <p>The ID of the unit the beacon is attached to. Useful if more units are in one group.</p>
</div> </div>
</div> </div>
@ -9488,7 +9510,7 @@ Note that a controllable can only have one beacon activated at a time with the e
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Delay in seconds before the frequncy is set. Default is immediately.</p> <p>(Optional) Delay in seconds before the frequency is set. Default is immediately.</p>
</div> </div>
</div> </div>
@ -9613,17 +9635,18 @@ Note that this can only work on GROUP level, although individual UNITs can be co
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code>--- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. <pre class="example"><code>
HeliGroup = GROUP:FindByName( "Helicopter" ) -- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class.
HeliGroup = GROUP:FindByName( "Helicopter" )
--- Route the helicopter back to the FARP after 60 seconds. -- Route the helicopter back to the FARP after 60 seconds.
-- We use the SCHEDULER class to do this. -- We use the SCHEDULER class to do this.
SCHEDULER:New( nil, SCHEDULER:New( nil,
function( HeliGroup ) function( HeliGroup )
local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 ) local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 )
HeliGroup:SetCommand( CommandRTB ) HeliGroup:SetCommand( CommandRTB )
end, { HeliGroup }, 90 end, { HeliGroup }, 90
)</code></pre> )</code></pre>
</div> </div>
@ -9847,7 +9870,7 @@ SCHEDULER:New( nil,
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -10135,7 +10158,7 @@ SCHEDULER:New( nil,
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -10750,7 +10773,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks.</p> <p>Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuel" class="w3-show w3-white"> <div id= "#Functions##GetFuel" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -10783,7 +10806,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative average amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p> <p>Returns relative average amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuelAve" class="w3-show w3-white"> <div id= "#Functions##GetFuelAve" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -10816,7 +10839,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative minimum amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p> <p>Returns relative minimum amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuelMin" class="w3-show w3-white"> <div id= "#Functions##GetFuelMin" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -14262,7 +14285,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -14397,7 +14420,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(Optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -14519,7 +14542,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Limits maximal quantity of attack. The aicraft/controllable will not make more attacks than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(Optional) Limits maximal quantity of attack. The aircraft/controllable will not make more attacks than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -14641,7 +14664,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -14900,7 +14923,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -16588,7 +16611,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(GROUP).TaskOrbitCircle" ><strong>GROUP:TaskOrbitCircle(Altitude, Speed, Coordinate)</strong></a></h2> <h2><a id="#(GROUP).TaskOrbitCircle" ><strong>GROUP:TaskOrbitCircle(Altitude, Speed, Coordinate)</strong></a></h2>
</div> </div>
<p>(AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</p> <p>(AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</p>
<div id= "#Functions##TaskOrbitCircle" class="w3-show w3-white"> <div id= "#Functions##TaskOrbitCircle" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -16658,7 +16681,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(GROUP).TaskOrbitCircleAtVec2" ><strong>GROUP:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</strong></a></h2> <h2><a id="#(GROUP).TaskOrbitCircleAtVec2" ><strong>GROUP:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</strong></a></h2>
</div> </div>
<p>(AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</p> <p>(AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</p>
<div id= "#Functions##TaskOrbitCircleAtVec2" class="w3-show w3-white"> <div id= "#Functions##TaskOrbitCircleAtVec2" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -16761,7 +16784,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(GROUP).TaskRoute" ><strong>GROUP:TaskRoute(Points)</strong></a></h2> <h2><a id="#(GROUP).TaskRoute" ><strong>GROUP:TaskRoute(Points)</strong></a></h2>
</div> </div>
<p>Return a Misson task to follow a given route defined by Points.</p> <p>Return a Mission task to follow a given route defined by Points.</p>
<div id= "#Functions##TaskRoute" class="w3-show w3-white"> <div id= "#Functions##TaskRoute" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -17399,7 +17422,18 @@ Note that when the WayPoint parameter is used, the new start mission waypoint of
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionZone" ><strong>GROUP.InitRespawnRandomizePositionZone</strong></a> <a id="#(GROUP).InitRespawnRandomizePositionInner" ><strong>GROUP.InitRespawnRandomizePositionInner</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionOuter" ><strong>GROUP.InitRespawnRandomizePositionOuter</strong></a>
@ -21038,7 +21072,18 @@ Coordinates are dependent on the position of the maps origin.</p>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionZone" ><strong>GROUP.InitRespawnRandomizePositionZone</strong></a> <a id="#(GROUP).InitRespawnRandomizePositionInner" ><strong>GROUP.InitRespawnRandomizePositionInner</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionOuter" ><strong>GROUP.InitRespawnRandomizePositionOuter</strong></a>
@ -21692,7 +21737,18 @@ If the Identifiable is alive, true is returned. </p>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionZone" ><strong>GROUP.InitRespawnRandomizePositionZone</strong></a> <a id="#(GROUP).InitRespawnRandomizePositionInner" ><strong>GROUP.InitRespawnRandomizePositionInner</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionOuter" ><strong>GROUP.InitRespawnRandomizePositionOuter</strong></a>
@ -21952,7 +22008,18 @@ If the Identifiable is alive, true is returned. </p>
<div class="w3-card-2 w3-padding-small w3-margin-top"> <div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionZone" ><strong>GROUP.InitRespawnRandomizePositionZone</strong></a> <a id="#(GROUP).InitRespawnRandomizePositionInner" ><strong>GROUP.InitRespawnRandomizePositionInner</strong></a>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a id="#(GROUP).InitRespawnRandomizePositionOuter" ><strong>GROUP.InitRespawnRandomizePositionOuter</strong></a>

View File

@ -1543,32 +1543,32 @@ Controls a network of short range air/missile defense groups.</p>
<h1>Create a Marker</h1> <h1>Create a Marker</h1>
<pre><code>-- Create a MARKER object at Batumi with a trivial text. <pre><code>-- Create a MARKER object at Batumi with a trivial text.
local Coordinate=AIRBASE:FindByName("Batumi"):GetCoordinate() local Coordinate = AIRBASE:FindByName( "Batumi" ):GetCoordinate()
mymarker=MARKER:New(Coordinate, "I am Batumi Airfield") mymarker = MARKER:New( Coordinate, "I am Batumi Airfield" )
</code></pre> </code></pre>
<p>Now this does <strong>not</strong> show the marker yet. We still need to specifiy to whom it is shown. There are several options, i.e. <p>Now this does <strong>not</strong> show the marker yet. We still need to specify to whom it is shown. There are several options, i.e.
show the marker to everyone, to a speficic coaliton only, or only to a specific group.</p> show the marker to everyone, to a specific coalition only, or only to a specific group.</p>
<h2>For Everyone</h2> <h2>For Everyone</h2>
<p>If the marker should be visible to everyone, you can use the :ToAll() function.</p> <p>If the marker should be visible to everyone, you can use the :ToAll() function.</p>
<pre><code>mymarker=MARKER:New(Coordinate, "I am Batumi Airfield"):ToAll() <pre><code>mymarker = MARKER:New( Coordinate, "I am Batumi Airfield" ):ToAll()
</code></pre> </code></pre>
<h2>For a Coaliton</h2> <h2>For a Coalition</h2>
<p>If the maker should be visible to a specific coalition, you can use the :ToCoalition() function.</p> <p>If the maker should be visible to a specific coalition, you can use the :ToCoalition() function.</p>
<pre><code>mymarker=MARKER:New(Coordinate, "I am Batumi Airfield"):ToCoaliton(coaliton.side.BLUE) <pre><code>mymarker = MARKER:New( Coordinate , "I am Batumi Airfield" ):ToCoalition( coalition.side.BLUE )
</code></pre> </code></pre>
<h3>To Blue Coaliton</h3> <h3>To Blue Coalition</h3>
<h3>To Red Coalition</h3> <h3>To Red Coalition</h3>
<p>This would show the marker only to the Blue coaliton.</p> <p>This would show the marker only to the Blue coalition.</p>
<h2>For a Group</h2> <h2>For a Group</h2>
@ -1580,31 +1580,31 @@ show the marker to everyone, to a speficic coaliton only, or only to a specific
<p>The marker text and coordinate can be updated easily as shown below.</p> <p>The marker text and coordinate can be updated easily as shown below.</p>
<p>However, note that <strong>updateing involves to remove and recreate the marker if either text or its coordinate is changed</strong>. <p>However, note that <strong>updating involves to remove and recreate the marker if either text or its coordinate is changed</strong>.
<em>This is a DCS scripting engine limitation.</em></p> <em>This is a DCS scripting engine limitation.</em></p>
<h2>Update Text</h2> <h2>Update Text</h2>
<p>If you created a marker "mymarker" as shown above, you can update the dispayed test by</p> <p>If you created a marker "mymarker" as shown above, you can update the displayed test by</p>
<pre><code>mymarker:UpdateText("I am the new text at Batumi") <pre><code>mymarker:UpdateText( "I am the new text at Batumi" )
</code></pre> </code></pre>
<p>The update can also be delayed by, e.g. 90 seconds, using</p> <p>The update can also be delayed by, e.g. 90 seconds, using</p>
<pre><code>mymarker:UpdateText("I am the new text at Batumi", 90) <pre><code>mymarker:UpdateText( "I am the new text at Batumi", 90 )
</code></pre> </code></pre>
<h2>Update Coordinate</h2> <h2>Update Coordinate</h2>
<p>If you created a marker "mymarker" as shown above, you can update its coordinate on the F10 map by</p> <p>If you created a marker "mymarker" as shown above, you can update its coordinate on the F10 map by</p>
<pre><code>mymarker:UpdateCoordinate(NewCoordinate) <pre><code>mymarker:UpdateCoordinate( NewCoordinate )
</code></pre> </code></pre>
<p>The update can also be delayed by, e.g. 60 seconds, using</p> <p>The update can also be delayed by, e.g. 60 seconds, using</p>
<pre><code>mymarker:UpdateCoordinate(NewCoordinate, 60) <pre><code>mymarker:UpdateCoordinate( NewCoordinate , 60 )
</code></pre> </code></pre>
<h1>Retrieve Data</h1> <h1>Retrieve Data</h1>
@ -1613,20 +1613,20 @@ show the marker to everyone, to a speficic coaliton only, or only to a specific
<h2>Text</h2> <h2>Text</h2>
<pre><code>local text=mymarker:GetText() <pre><code>local text =mymarker:GetText()
env.info("Marker Text = " .. text) env.info( "Marker Text = " .. text )
</code></pre> </code></pre>
<h2>Coordinate</h2> <h2>Coordinate</h2>
<pre><code>local Coordinate=mymarker:GetCoordinate() <pre><code>local Coordinate = mymarker:GetCoordinate()
env.info("Marker Coordinate LL DSM = " .. Coordinate:ToStringLLDMS()) env.info( "Marker Coordinate LL DSM = " .. Coordinate:ToStringLLDMS() )
</code></pre> </code></pre>
<h1>FSM Events</h1> <h1>FSM Events</h1>
<p>Moose creates addditonal events, so called FSM event, when markers are added, changed, removed, and text or the coordianteis updated.</p> <p>Moose creates additional events, so called FSM event, when markers are added, changed, removed, and text or the coordinate is updated.</p>
<p>These events can be captured and used for processing via OnAfter functions as shown below.</p> <p>These events can be captured and used for processing via OnAfter functions as shown below.</p>
@ -1644,7 +1644,6 @@ env.info("Marker Coordinate LL DSM = " .. Coordinate:ToStringLLDMS())
<h1>Examples</h1> <h1>Examples</h1>
</div> </div>
</div> </div>
@ -1946,7 +1945,7 @@ env.info("Marker Coordinate LL DSM = " .. Coordinate:ToStringLLDMS())
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(MARKER).message">MARKER.message</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(MARKER).message">MARKER.message</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Message dispayed when the mark is added.</p> <p>Message displayed when the mark is added.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2016,7 +2015,7 @@ env.info("Marker Coordinate LL DSM = " .. Coordinate:ToStringLLDMS())
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(MARKER).tocoaliton">MARKER.tocoaliton</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(MARKER).tocoalition">MARKER.tocoalition</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
</td> </td>
@ -2940,7 +2939,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
#string #string
<a id="#(MARKER).message" ><strong>MARKER.message</strong></a> <a id="#(MARKER).message" ><strong>MARKER.message</strong></a>
<p>Message dispayed when the mark is added.</p> <p>Message displayed when the mark is added.</p>
</div> </div>
@ -4143,7 +4142,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>Coalition 1=Red, 2=Blue, 0=Neutral. See <code>coaliton.side.RED</code>.</p> <p>Coalition 1=Red, 2=Blue, 0=Neutral. See <code>coalition.side.RED</code>.</p>
</div> </div>
</div> </div>
@ -5046,7 +5045,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
#string #string
<a id="#(MARKER).message" ><strong>MARKER.message</strong></a> <a id="#(MARKER).message" ><strong>MARKER.message</strong></a>
<p>Message dispayed when the mark is added.</p> <p>Message displayed when the mark is added.</p>
</div> </div>
@ -6660,7 +6659,7 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
#string #string
<a id="#(MARKER).message" ><strong>MARKER.message</strong></a> <a id="#(MARKER).message" ><strong>MARKER.message</strong></a>
<p>Message dispayed when the mark is added.</p> <p>Message displayed when the mark is added.</p>
</div> </div>

View File

@ -3515,17 +3515,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a href="Core.Spot.html##(SPOT)">Core.Spot#SPOT</a>
<a id="#(POSITIONABLE).Spot" ><strong>POSITIONABLE.Spot</strong></a>
</div> </div>
</div> </div>
@ -7088,17 +7077,6 @@ Coordinates are dependent on the position of the maps origin.</p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a href="Core.Spot.html##(SPOT)">Core.Spot#SPOT</a>
<a id="#(POSITIONABLE).Spot" ><strong>POSITIONABLE.Spot</strong></a>
</div> </div>
</div> </div>
@ -7676,17 +7654,6 @@ If the Identifiable is alive, true is returned. </p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a href="Core.Spot.html##(SPOT)">Core.Spot#SPOT</a>
<a id="#(POSITIONABLE).Spot" ><strong>POSITIONABLE.Spot</strong></a>
</div> </div>
</div> </div>
@ -7870,17 +7837,6 @@ If the Identifiable is alive, true is returned. </p>
</div>
</div>
<div>
<div class="w3-card-2 w3-padding-small w3-margin-top">
<a href="Core.Spot.html##(SPOT)">Core.Spot#SPOT</a>
<a id="#(POSITIONABLE).Spot" ><strong>POSITIONABLE.Spot</strong></a>
</div> </div>
</div> </div>

View File

@ -2716,13 +2716,13 @@ If you want to obtain the complete <strong>3D position</strong> including orient
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(UNIT).TaskOrbitCircle">UNIT:TaskOrbitCircle(Altitude, Speed, Coordinate)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(UNIT).TaskOrbitCircle">UNIT:TaskOrbitCircle(Altitude, Speed, Coordinate)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>(AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</p> <p>(AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(UNIT).TaskOrbitCircleAtVec2">UNIT:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(UNIT).TaskOrbitCircleAtVec2">UNIT:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>(AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</p> <p>(AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -2734,7 +2734,7 @@ If you want to obtain the complete <strong>3D position</strong> including orient
<tr class="w3-border"> <tr class="w3-border">
<td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(UNIT).TaskRoute">UNIT:TaskRoute(Points)</a></p></td> <td class="name w3-half w3-container" style="word-wrap: break-word"><p><a href="##(UNIT).TaskRoute">UNIT:TaskRoute(Points)</a></p></td>
<td class="summary w3-half w3-container" style="word-wrap: break-word"> <td class="summary w3-half w3-container" style="word-wrap: break-word">
<p>Return a Misson task to follow a given route defined by Points.</p> <p>Return a Mission task to follow a given route defined by Points.</p>
</td> </td>
</tr> </tr>
<tr class="w3-border"> <tr class="w3-border">
@ -6312,7 +6312,7 @@ Note that a controllable can only have one beacon activated at a time with the e
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>The ID of the unit the beacon is attached to. Usefull if more units are in one group.</p> <p>The ID of the unit the beacon is attached to. Useful if more units are in one group.</p>
</div> </div>
</div> </div>
@ -6812,7 +6812,7 @@ Note that a controllable can only have one beacon activated at a time with the e
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Delay in seconds before the frequncy is set. Default is immediately.</p> <p>(Optional) Delay in seconds before the frequency is set. Default is immediately.</p>
</div> </div>
</div> </div>
@ -6937,17 +6937,18 @@ Note that this can only work on GROUP level, although individual UNITs can be co
</div> </div>
</div> </div>
<h2><strong>Usage:</strong></h2> <h2><strong>Usage:</strong></h2>
<pre class="example"><code>--- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class. <pre class="example"><code>
HeliGroup = GROUP:FindByName( "Helicopter" ) -- This test demonstrates the use(s) of the SwitchWayPoint method of the GROUP class.
HeliGroup = GROUP:FindByName( "Helicopter" )
--- Route the helicopter back to the FARP after 60 seconds. -- Route the helicopter back to the FARP after 60 seconds.
-- We use the SCHEDULER class to do this. -- We use the SCHEDULER class to do this.
SCHEDULER:New( nil, SCHEDULER:New( nil,
function( HeliGroup ) function( HeliGroup )
local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 ) local CommandRTB = HeliGroup:CommandSwitchWayPoint( 2, 8 )
HeliGroup:SetCommand( CommandRTB ) HeliGroup:SetCommand( CommandRTB )
end, { HeliGroup }, 90 end, { HeliGroup }, 90
)</code></pre> )</code></pre>
</div> </div>
@ -7171,7 +7172,7 @@ SCHEDULER:New( nil,
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -7459,7 +7460,7 @@ SCHEDULER:New( nil,
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -8074,7 +8075,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks.</p> <p>Returns relative amount of fuel (from 0.0 to 1.0) the unit has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuel" class="w3-show w3-white"> <div id= "#Functions##GetFuel" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -8107,7 +8108,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative average amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p> <p>Returns relative average amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuelAve" class="w3-show w3-white"> <div id= "#Functions##GetFuelAve" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -8140,7 +8141,7 @@ If <strong>at least one</strong> detection method is specified, only the methods
<p>Returns relative minimum amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p> <p>Returns relative minimum amount of fuel (from 0.0 to 1.0) a unit or group has in its internal tanks.</p>
<p>This method returns nil to ensure polymorphic behaviour! This method needs to be overridden by GROUP or UNIT.</p> <p>This method returns nil to ensure polymorphic behavior! This method needs to be overridden by GROUP or UNIT.</p>
<div id= "#Functions##GetFuelMin" class="w3-show w3-white"> <div id= "#Functions##GetFuelMin" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -11586,7 +11587,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -11721,7 +11722,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(Optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -11843,7 +11844,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(Optional) Limits maximal quantity of attack. The aicraft/controllable will not make more attacks than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(Optional) Limits maximal quantity of attack. The aircraft/controllable will not make more attacks than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -11965,7 +11966,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -12224,7 +12225,7 @@ Warning! When you switch this option off, the airborne group will continue to fl
</div> </div>
<div class="w3-half"> <div class="w3-half">
<p>(optional) This parameter limits maximal quantity of attack. The aicraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aicraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p> <p>(optional) This parameter limits maximal quantity of attack. The aircraft/controllable will not make more attack than allowed even if the target controllable not destroyed and the aircraft/controllable still have ammo. If not defined the aircraft/controllable will attack target until it will be destroyed or until the aircraft/controllable will run out of ammo.</p>
</div> </div>
</div> </div>
@ -13912,7 +13913,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(UNIT).TaskOrbitCircle" ><strong>UNIT:TaskOrbitCircle(Altitude, Speed, Coordinate)</strong></a></h2> <h2><a id="#(UNIT).TaskOrbitCircle" ><strong>UNIT:TaskOrbitCircle(Altitude, Speed, Coordinate)</strong></a></h2>
</div> </div>
<p>(AIR) Orbit at the current position of the first unit of the controllable at a specified alititude.</p> <p>(AIR) Orbit at the current position of the first unit of the controllable at a specified altitude.</p>
<div id= "#Functions##TaskOrbitCircle" class="w3-show w3-white"> <div id= "#Functions##TaskOrbitCircle" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -13982,7 +13983,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(UNIT).TaskOrbitCircleAtVec2" ><strong>UNIT:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</strong></a></h2> <h2><a id="#(UNIT).TaskOrbitCircleAtVec2" ><strong>UNIT:TaskOrbitCircleAtVec2(Point, Altitude, Speed)</strong></a></h2>
</div> </div>
<p>(AIR) Orbit at a specified position at a specified alititude during a specified duration with a specified speed.</p> <p>(AIR) Orbit at a specified position at a specified altitude during a specified duration with a specified speed.</p>
<div id= "#Functions##TaskOrbitCircleAtVec2" class="w3-show w3-white"> <div id= "#Functions##TaskOrbitCircleAtVec2" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">
@ -14085,7 +14086,7 @@ Used to support CarpetBombing Task</p>
<h2><a id="#(UNIT).TaskRoute" ><strong>UNIT:TaskRoute(Points)</strong></a></h2> <h2><a id="#(UNIT).TaskRoute" ><strong>UNIT:TaskRoute(Points)</strong></a></h2>
</div> </div>
<p>Return a Misson task to follow a given route defined by Points.</p> <p>Return a Mission task to follow a given route defined by Points.</p>
<div id= "#Functions##TaskRoute" class="w3-show w3-white"> <div id= "#Functions##TaskRoute" class="w3-show w3-white">
<div class="w3-container w3-white" id="functiontype"> <div class="w3-container w3-white" id="functiontype">