mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
763 lines
22 KiB
HTML
763 lines
22 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html>
|
|
<head>
|
|
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
|
|
</head>
|
|
<body>
|
|
<div id="container">
|
|
<div id="product">
|
|
<div id="product_logo"></div>
|
|
<div id="product_name"><big><b></b></big></div>
|
|
<div id="product_description"></div>
|
|
</div>
|
|
<div id="main">
|
|
<div id="navigation">
|
|
<h2>Modules</h2>
|
|
<ul><li>
|
|
<a href="index.html">index</a>
|
|
</li></ul>
|
|
<ul>
|
|
<li>AI_Balancer</li>
|
|
<li><a href="AI_Cap.html">AI_Cap</a></li>
|
|
<li><a href="AI_Cas.html">AI_Cas</a></li>
|
|
<li><a href="AI_Designate.html">AI_Designate</a></li>
|
|
<li><a href="AI_Patrol.html">AI_Patrol</a></li>
|
|
<li><a href="Account.html">Account</a></li>
|
|
<li><a href="Airbase.html">Airbase</a></li>
|
|
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
|
|
<li><a href="Assign.html">Assign</a></li>
|
|
<li><a href="Base.html">Base</a></li>
|
|
<li><a href="Cargo.html">Cargo</a></li>
|
|
<li><a href="CleanUp.html">CleanUp</a></li>
|
|
<li><a href="Client.html">Client</a></li>
|
|
<li><a href="CommandCenter.html">CommandCenter</a></li>
|
|
<li><a href="Controllable.html">Controllable</a></li>
|
|
<li><a href="DCSAirbase.html">DCSAirbase</a></li>
|
|
<li><a href="DCSCoalitionObject.html">DCSCoalitionObject</a></li>
|
|
<li><a href="DCSCommand.html">DCSCommand</a></li>
|
|
<li><a href="DCSController.html">DCSController</a></li>
|
|
<li><a href="DCSGroup.html">DCSGroup</a></li>
|
|
<li><a href="DCSObject.html">DCSObject</a></li>
|
|
<li><a href="DCSTask.html">DCSTask</a></li>
|
|
<li><a href="DCSTypes.html">DCSTypes</a></li>
|
|
<li><a href="DCSUnit.html">DCSUnit</a></li>
|
|
<li><a href="DCSVec3.html">DCSVec3</a></li>
|
|
<li><a href="DCSWorld.html">DCSWorld</a></li>
|
|
<li><a href="DCSZone.html">DCSZone</a></li>
|
|
<li><a href="DCScountry.html">DCScountry</a></li>
|
|
<li><a href="DCStimer.html">DCStimer</a></li>
|
|
<li><a href="DCStrigger.html">DCStrigger</a></li>
|
|
<li><a href="Database.html">Database</a></li>
|
|
<li><a href="Detection.html">Detection</a></li>
|
|
<li><a href="DetectionManager.html">DetectionManager</a></li>
|
|
<li><a href="Escort.html">Escort</a></li>
|
|
<li><a href="Event.html">Event</a></li>
|
|
<li><a href="Fsm.html">Fsm</a></li>
|
|
<li><a href="Group.html">Group</a></li>
|
|
<li><a href="Identifiable.html">Identifiable</a></li>
|
|
<li><a href="Menu.html">Menu</a></li>
|
|
<li><a href="Message.html">Message</a></li>
|
|
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
|
|
<li><a href="Mission.html">Mission</a></li>
|
|
<li><a href="Movement.html">Movement</a></li>
|
|
<li><a href="Object.html">Object</a></li>
|
|
<li><a href="Point.html">Point</a></li>
|
|
<li><a href="Positionable.html">Positionable</a></li>
|
|
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
|
|
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
|
|
<li><a href="Radio.html">Radio</a></li>
|
|
<li><a href="Route.html">Route</a></li>
|
|
<li><a href="Scenery.html">Scenery</a></li>
|
|
<li><a href="ScheduleDispatcher.html">ScheduleDispatcher</a></li>
|
|
<li><a href="Scheduler.html">Scheduler</a></li>
|
|
<li><a href="Scoring.html">Scoring</a></li>
|
|
<li><a href="Sead.html">Sead</a></li>
|
|
<li><a href="Set.html">Set</a></li>
|
|
<li><a href="Smoke.html">Smoke</a></li>
|
|
<li><a href="Spawn.html">Spawn</a></li>
|
|
<li><a href="SpawnStatic.html">SpawnStatic</a></li>
|
|
<li><a href="Spot.html">Spot</a></li>
|
|
<li><a href="Static.html">Static</a></li>
|
|
<li><a href="StaticObject.html">StaticObject</a></li>
|
|
<li><a href="Task.html">Task</a></li>
|
|
<li><a href="Task_A2G.html">Task_A2G</a></li>
|
|
<li><a href="Task_A2G_Dispatcher.html">Task_A2G_Dispatcher</a></li>
|
|
<li><a href="Task_Cargo.html">Task_Cargo</a></li>
|
|
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
|
|
<li><a href="Unit.html">Unit</a></li>
|
|
<li><a href="Utils.html">Utils</a></li>
|
|
<li><a href="Zone.html">Zone</a></li>
|
|
<li><a href="env.html">env</a></li>
|
|
<li><a href="land.html">land</a></li>
|
|
<li><a href="routines.html">routines</a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="content">
|
|
<h1>Module <code>AI_Balancer</code></h1>
|
|
|
|
<p>Single-Player:<strong>No</strong> / Multi-Player:<strong>Yes</strong> / AI:<strong>Yes</strong> / Human:<strong>No</strong> / Types:<strong>All</strong> -- <strong>AI Balancing will replace in multi player missions
|
|
non-occupied human slots with AI groups, in order to provide an engaging simulation environment,
|
|
even when there are hardly any players in the mission.</strong></p>
|
|
|
|
<p><img src="..\Presentations\AI_Balancer\Dia1.JPG" alt="Banner Image"/></p>
|
|
|
|
<hr/>
|
|
|
|
<h1>Demo Missions</h1>
|
|
|
|
<h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/master-release/AIB%20-%20AI%20Balancing">AI_BALANCER Demo Missions source code</a></h3>
|
|
|
|
<h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/master/AIB%20-%20AI%20Balancing">AI_BALANCER Demo Missions, only for beta testers</a></h3>
|
|
|
|
<h3><a href="https://github.com/FlightControl-Master/MOOSE_MISSIONS/releases">ALL Demo Missions pack of the last release</a></h3>
|
|
|
|
<hr/>
|
|
|
|
<h1>YouTube Channel</h1>
|
|
|
|
<h3><a href="https://www.youtube.com/playlist?list=PL7ZUrU4zZUl2CJVIrL1TdAumuVS8n64B7">AI_BALANCER YouTube Channel</a></h3>
|
|
|
|
<hr/>
|
|
|
|
<h1><strong>API CHANGE HISTORY</strong></h1>
|
|
|
|
<p>The underlying change log documents the API changes.</p>
|
|
|
|
|
|
<p>Please read this carefully. The following notation is used:</p>
|
|
|
|
<ul>
|
|
<li><strong>Added</strong> parts are expressed in bold type face.</li>
|
|
<li><em>Removed</em> parts are expressed in italic type face.</li>
|
|
</ul>
|
|
|
|
<p>Hereby the change log:</p>
|
|
|
|
<p>2017-01-17: There is still a problem with AI being destroyed, but not respawned. Need to check further upon that.</p>
|
|
|
|
<p>2017-01-08: AI_BALANCER:<strong>InitSpawnInterval( Earliest, Latest )</strong> added.</p>
|
|
|
|
<hr/>
|
|
|
|
<h1><strong>AUTHORS and CONTRIBUTIONS</strong></h1>
|
|
|
|
<h3>Contributions:</h3>
|
|
|
|
<ul>
|
|
<li><strong><a href="https://forums.eagle.ru/member.php?u=112075">Dutch_Baron</a></strong>: Working together with James has resulted in the creation of the AI_BALANCER class. James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)</li>
|
|
<li><strong>SNAFU</strong>: Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE. None of the script code has been used however within the new AI_BALANCER moose class.</li>
|
|
</ul>
|
|
|
|
<h3>Authors:</h3>
|
|
|
|
<ul>
|
|
<li>FlightControl: Framework Design & Programming and Documentation.</li>
|
|
</ul>
|
|
|
|
|
|
<h2>Global(s)</h2>
|
|
<table class="function_list">
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="#AI_BALANCER">AI_BALANCER</a></td>
|
|
<td class="summary">
|
|
<h1>AI_BALANCER class, extends <a href="Fsm.html##(FSM_SET)">Fsm#FSM_SET</a></h1>
|
|
|
|
<p>The AI<em>BALANCER class monitors and manages as many replacement AI groups as there are
|
|
CLIENTS in a SET</em>CLIENT collection, which are not occupied by human players.</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<h2><a id="#(AI_BALANCER)">Type <code>AI_BALANCER</code></a></h2>
|
|
<table class="function_list">
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).Earliest">AI_BALANCER.Earliest</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).InitSpawnInterval">AI_BALANCER:InitSpawnInterval(Earliest, Latest)</a></td>
|
|
<td class="summary">
|
|
<p>Sets the earliest to the latest interval in seconds how long AI_BALANCER will wait to spawn a new AI.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).Latest">AI_BALANCER.Latest</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).New">AI_BALANCER:New(SetClient, SpawnAI)</a></td>
|
|
<td class="summary">
|
|
<p>Creates a new AI_BALANCER object</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).ReturnAirbaseSet">AI_BALANCER.ReturnAirbaseSet</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).ReturnToHomeAirbase">AI_BALANCER:ReturnToHomeAirbase(ReturnTresholdRange)</a></td>
|
|
<td class="summary">
|
|
<p>Returns the AI to the home <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).ReturnToNearestAirbases">AI_BALANCER:ReturnToNearestAirbases(ReturnTresholdRange, ReturnAirbaseSet)</a></td>
|
|
<td class="summary">
|
|
<p>Returns the AI to the nearest friendly <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).ReturnTresholdRange">AI_BALANCER.ReturnTresholdRange</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).SetClient">AI_BALANCER.SetClient</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).SpawnAI">AI_BALANCER.SpawnAI</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).Test">AI_BALANCER.Test</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).ToHomeAirbase">AI_BALANCER.ToHomeAirbase</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).ToNearestAirbase">AI_BALANCER.ToNearestAirbase</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).onenterDestroying">AI_BALANCER:onenterDestroying(SetGroup, AIGroup, From, Event, To, ClientName)</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).onenterMonitoring">AI_BALANCER:onenterMonitoring(SetGroup)</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).onenterReturning">AI_BALANCER:onenterReturning(SetGroup, AIGroup, From, Event, To)</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="name" nowrap="nowrap"><a href="##(AI_BALANCER).onenterSpawning">AI_BALANCER:onenterSpawning(SetGroup, ClientName, AIGroup, From, Event, To)</a></td>
|
|
<td class="summary">
|
|
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h2>Global(s)</h2>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="##(AI_BALANCER)">#AI_BALANCER</a></em>
|
|
<a id="AI_BALANCER" >
|
|
<strong>AI_BALANCER</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<h1>AI_BALANCER class, extends <a href="Fsm.html##(FSM_SET)">Fsm#FSM_SET</a></h1>
|
|
|
|
<p>The AI<em>BALANCER class monitors and manages as many replacement AI groups as there are
|
|
CLIENTS in a SET</em>CLIENT collection, which are not occupied by human players.</p>
|
|
|
|
|
|
<p>In other words, use AI_BALANCER to simulate human behaviour by spawning in replacement AI in multi player missions.</p>
|
|
|
|
<p>The parent class <a href="Fsm.html##(FSM_SET)">Fsm#FSM_SET</a> manages the functionality to control the Finite State Machine (FSM).
|
|
The mission designer can tailor the behaviour of the AI_BALANCER, by defining event and state transition methods.
|
|
An explanation about state and event transition methods can be found in the <a href="FSM.html">FSM</a> module documentation.</p>
|
|
|
|
<p>The mission designer can tailor the AI_BALANCER behaviour, by implementing a state or event handling method for the following:</p>
|
|
|
|
<ul>
|
|
<li><a href="##(AI_BALANCER).OnAfterSpawned">AI_BALANCER.OnAfterSpawned</a>( AISet, From, Event, To, AIGroup ): Define to add extra logic when an AI is spawned.</li>
|
|
</ul>
|
|
|
|
<h2>1. AI_BALANCER construction</h2>
|
|
|
|
<p>Create a new AI_BALANCER object with the <a href="##(AI_BALANCER).New">AI_BALANCER.New</a>() method:</p>
|
|
|
|
<h2>2. AI_BALANCER is a FSM</h2>
|
|
|
|
<p><img src="..\Presentations\AI_Balancer\Dia13.JPG" alt="Process"/></p>
|
|
|
|
<h3>2.1. AI_BALANCER States</h3>
|
|
|
|
<ul>
|
|
<li><strong>Monitoring</strong> ( Set ): Monitoring the Set if all AI is spawned for the Clients.</li>
|
|
<li><strong>Spawning</strong> ( Set, ClientName ): There is a new AI group spawned with ClientName as the name of reference.</li>
|
|
<li><strong>Spawned</strong> ( Set, AIGroup ): A new AI has been spawned. You can handle this event to customize the AI behaviour with other AI FSMs or own processes.</li>
|
|
<li><strong>Destroying</strong> ( Set, AIGroup ): The AI is being destroyed.</li>
|
|
<li><strong>Returning</strong> ( Set, AIGroup ): The AI is returning to the airbase specified by the ReturnToAirbase methods. Handle this state to customize the return behaviour of the AI, if any.</li>
|
|
</ul>
|
|
|
|
<h3>2.2. AI_BALANCER Events</h3>
|
|
|
|
<ul>
|
|
<li><strong>Monitor</strong> ( Set ): Every 10 seconds, the Monitor event is triggered to monitor the Set.</li>
|
|
<li><strong>Spawn</strong> ( Set, ClientName ): Triggers when there is a new AI group to be spawned with ClientName as the name of reference.</li>
|
|
<li><strong>Spawned</strong> ( Set, AIGroup ): Triggers when a new AI has been spawned. You can handle this event to customize the AI behaviour with other AI FSMs or own processes.</li>
|
|
<li><strong>Destroy</strong> ( Set, AIGroup ): The AI is being destroyed.</li>
|
|
<li><strong>Return</strong> ( Set, AIGroup ): The AI is returning to the airbase specified by the ReturnToAirbase methods.</li>
|
|
</ul>
|
|
|
|
<h2>3. AI_BALANCER spawn interval for replacement AI</h2>
|
|
|
|
<p>Use the method <a href="##(AI_BALANCER).InitSpawnInterval">AI_BALANCER.InitSpawnInterval</a>() to set the earliest and latest interval in seconds that is waited until a new replacement AI is spawned.</p>
|
|
|
|
<h2>4. AI_BALANCER returns AI to Airbases</h2>
|
|
|
|
<p>By default, When a human player joins a slot that is AI_BALANCED, the AI group will be destroyed by default.
|
|
However, there are 2 additional options that you can use to customize the destroy behaviour.
|
|
When a human player joins a slot, you can configure to let the AI return to:</p>
|
|
|
|
<ul>
|
|
<li><a href="##(AI_BALANCER).ReturnToHomeAirbase">AI_BALANCER.ReturnToHomeAirbase</a>: Returns the AI to the <strong>home</strong> <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</li>
|
|
<li><a href="##(AI_BALANCER).ReturnToNearestAirbases">AI_BALANCER.ReturnToNearestAirbases</a>: Returns the AI to the <strong>nearest friendly</strong> <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</li>
|
|
</ul>
|
|
|
|
<p>Note that when AI returns to an airbase, the AI<em>BALANCER will trigger the <strong>Return</strong> event and the AI will return,
|
|
otherwise the AI</em>BALANCER will trigger a <strong>Destroy</strong> event, and the AI will be destroyed.</p>
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<h2><a id="#(AI_Balancer)" >Type <code>AI_Balancer</code></a></h2>
|
|
|
|
<h2><a id="#(AI_BALANCER)" >Type <code>AI_BALANCER</code></a></h2>
|
|
<h3>Field(s)</h3>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em></em>
|
|
<a id="#(AI_BALANCER).Earliest" >
|
|
<strong>AI_BALANCER.Earliest</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_BALANCER).InitSpawnInterval" >
|
|
<strong>AI_BALANCER:InitSpawnInterval(Earliest, Latest)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>Sets the earliest to the latest interval in seconds how long AI_BALANCER will wait to spawn a new AI.</p>
|
|
|
|
|
|
<p>Provide 2 identical seconds if the interval should be a fixed amount of seconds.</p>
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em>#number Earliest </em></code>:
|
|
The earliest a new AI can be spawned in seconds.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em>#number Latest </em></code>:
|
|
The latest a new AI can be spawned in seconds.</p>
|
|
|
|
</li>
|
|
</ul>
|
|
<h3>Return value</h3>
|
|
|
|
|
|
<p>self</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em></em>
|
|
<a id="#(AI_BALANCER).Latest" >
|
|
<strong>AI_BALANCER.Latest</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_BALANCER).New" >
|
|
<strong>AI_BALANCER:New(SetClient, SpawnAI)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>Creates a new AI_BALANCER object</p>
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Core.Set.html##(SET_CLIENT)">Core.Set#SET_CLIENT</a> SetClient </em></code>:
|
|
A SET_CLIENT object that will contain the CLIENT objects to be monitored if they are alive or not (joined by a player).</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Functional.Spawn.html##(SPAWN)">Functional.Spawn#SPAWN</a> SpawnAI </em></code>:
|
|
The default Spawn object to spawn new AI Groups when needed.</p>
|
|
|
|
</li>
|
|
</ul>
|
|
<h3>Return value</h3>
|
|
|
|
<p><em><a href="##(AI_BALANCER)">#AI_BALANCER</a>:</em></p>
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em></em>
|
|
<a id="#(AI_BALANCER).ReturnAirbaseSet" >
|
|
<strong>AI_BALANCER.ReturnAirbaseSet</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_BALANCER).ReturnToHomeAirbase" >
|
|
<strong>AI_BALANCER:ReturnToHomeAirbase(ReturnTresholdRange)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>Returns the AI to the home <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
|
|
|
|
<h3>Parameter</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Distance)">Dcs.DCSTypes#Distance</a> ReturnTresholdRange </em></code>:
|
|
If there is an enemy <a href="Client.html##(CLIENT)">Client#CLIENT</a> within the ReturnTresholdRange given in meters, the AI will not return to the nearest <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
|
|
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_BALANCER).ReturnToNearestAirbases" >
|
|
<strong>AI_BALANCER:ReturnToNearestAirbases(ReturnTresholdRange, ReturnAirbaseSet)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
<p>Returns the AI to the nearest friendly <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Dcs.DCSTypes.html##(Distance)">Dcs.DCSTypes#Distance</a> ReturnTresholdRange </em></code>:
|
|
If there is an enemy <a href="Client.html##(CLIENT)">Client#CLIENT</a> within the ReturnTresholdRange given in meters, the AI will not return to the nearest <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Core.Set.html##(SET_AIRBASE)">Core.Set#SET_AIRBASE</a> ReturnAirbaseSet </em></code>:
|
|
The SET of <a href="Set.html##(SET_AIRBASE)">Set#SET_AIRBASE</a>s to evaluate where to return to.</p>
|
|
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em></em>
|
|
<a id="#(AI_BALANCER).ReturnTresholdRange" >
|
|
<strong>AI_BALANCER.ReturnTresholdRange</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Core.Set.html##(SET_CLIENT)">Core.Set#SET_CLIENT</a></em>
|
|
<a id="#(AI_BALANCER).SetClient" >
|
|
<strong>AI_BALANCER.SetClient</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Functional.Spawn.html##(SPAWN)">Functional.Spawn#SPAWN</a></em>
|
|
<a id="#(AI_BALANCER).SpawnAI" >
|
|
<strong>AI_BALANCER.SpawnAI</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a></em>
|
|
<a id="#(AI_BALANCER).Test" >
|
|
<strong>AI_BALANCER.Test</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em>#boolean</em>
|
|
<a id="#(AI_BALANCER).ToHomeAirbase" >
|
|
<strong>AI_BALANCER.ToHomeAirbase</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<em>#boolean</em>
|
|
<a id="#(AI_BALANCER).ToNearestAirbase" >
|
|
<strong>AI_BALANCER.ToNearestAirbase</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_BALANCER).onenterDestroying" >
|
|
<strong>AI_BALANCER:onenterDestroying(SetGroup, AIGroup, From, Event, To, ClientName)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Core.Set.html##(SET_GROUP)">Core.Set#SET_GROUP</a> SetGroup </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> From </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> Event </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> To </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> ClientName </em></code>: </p>
|
|
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_BALANCER).onenterMonitoring" >
|
|
<strong>AI_BALANCER:onenterMonitoring(SetGroup)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
<h3>Parameter</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em> SetGroup </em></code>: </p>
|
|
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_BALANCER).onenterReturning" >
|
|
<strong>AI_BALANCER:onenterReturning(SetGroup, AIGroup, From, Event, To)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Core.Set.html##(SET_GROUP)">Core.Set#SET_GROUP</a> SetGroup </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> From </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> Event </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> To </em></code>: </p>
|
|
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<dl class="function">
|
|
<dt>
|
|
|
|
<a id="#(AI_BALANCER).onenterSpawning" >
|
|
<strong>AI_BALANCER:onenterSpawning(SetGroup, ClientName, AIGroup, From, Event, To)</strong>
|
|
</a>
|
|
</dt>
|
|
<dd>
|
|
|
|
|
|
|
|
<h3>Parameters</h3>
|
|
<ul>
|
|
<li>
|
|
|
|
<p><code><em><a href="Core.Set.html##(SET_GROUP)">Core.Set#SET_GROUP</a> SetGroup </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em>#string ClientName </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> AIGroup </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> From </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> Event </em></code>: </p>
|
|
|
|
</li>
|
|
<li>
|
|
|
|
<p><code><em> To </em></code>: </p>
|
|
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|