MOOSE/docs/Documentation/ATC_Ground.html
FlightControl_Master b7183023c9 Documentation
2017-11-22 06:23:58 +01:00

1238 lines
38 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><a href="AI_A2A.html">AI_A2A</a></li>
<li><a href="AI_A2A_Cap.html">AI_A2A_Cap</a></li>
<li><a href="AI_A2A_Dispatcher.html">AI_A2A_Dispatcher</a></li>
<li><a href="AI_A2A_GCI.html">AI_A2A_GCI</a></li>
<li><a href="AI_A2A_Patrol.html">AI_A2A_Patrol</a></li>
<li><a href="AI_Bai.html">AI_Bai</a></li>
<li><a href="AI_Balancer.html">AI_Balancer</a></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_Formation.html">AI_Formation</a></li>
<li><a href="AI_Patrol.html">AI_Patrol</a></li>
<li>ATC_Ground</li>
<li><a href="Account.html">Account</a></li>
<li><a href="Airbase.html">Airbase</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="Designate.html">Designate</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="Goal.html">Goal</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="Protect.html">Protect</a></li>
<li><a href="Radio.html">Radio</a></li>
<li><a href="Rat.html">Rat</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="Settings.html">Settings</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="TaskZoneCapture.html">TaskZoneCapture</a></li>
<li><a href="Task_A2A.html">Task_A2A</a></li>
<li><a href="Task_A2A_Dispatcher.html">Task_A2A_Dispatcher</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="UserFlag.html">UserFlag</a></li>
<li><a href="UserSound.html">UserSound</a></li>
<li><a href="Utils.html">Utils</a></li>
<li><a href="Velocity.html">Velocity</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="ZoneCaptureCoalition.html">ZoneCaptureCoalition</a></li>
<li><a href="ZoneGoal.html">ZoneGoal</a></li>
<li><a href="ZoneGoalCargo.html">ZoneGoalCargo</a></li>
<li><a href="ZoneGoalCoalition.html">ZoneGoalCoalition</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>ATC_Ground</code></h1>
<p><strong>Functional</strong> -- The ATC_GROUND classes monitor airbase traffic and regulate speed while taxiing.</p>
<hr/>
<p><img src="..\Presentations\ATC_GROUND\Dia1.JPG" alt="Banner Image"/></p>
<hr/>
<h3>Contributions: Dutch Baron - Concept &amp; Testing</h3>
<h3>Author: FlightControl - Framework Design &amp; Programming</h3>
<hr/>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#ATC_GROUND">ATC_GROUND</a></td>
<td class="summary">
<p>Base class for ATC_GROUND implementations.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#ATC_GROUND_CAUCASUS">ATC_GROUND_CAUCASUS</a></td>
<td class="summary">
<h1>ATC_GROUND_CAUCASUS, extends <a href="##(ATC_GROUND)">#ATC_GROUND</a></h1>
<p>The ATC_GROUND_CAUCASUS class monitors the speed of the airplanes at the airbase during taxi.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#ATC_GROUND_NEVADA">ATC_GROUND_NEVADA</a></td>
<td class="summary">
<h1>ATC_GROUND_NEVADA, extends <a href="##(ATC_GROUND)">#ATC_GROUND</a></h1>
<p>The ATC_GROUND_NEVADA class monitors the speed of the airplanes at the airbase during taxi.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#ATC_GROUND_NORMANDY">ATC_GROUND_NORMANDY</a></td>
<td class="summary">
<h1>ATC_GROUND_NORMANDY, extends <a href="##(ATC_GROUND)">#ATC_GROUND</a></h1>
<p>The ATC_GROUND_NORMANDY class monitors the speed of the airplanes at the airbase during taxi.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#SSB">SSB</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(ATC_GROUND)">Type <code>ATC_GROUND</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).AirbaseList">ATC_GROUND.AirbaseList</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).Airbases">ATC_GROUND.Airbases</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).KickSpeed">ATC_GROUND.KickSpeed</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).MaximumKickSpeed">ATC_GROUND.MaximumKickSpeed</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).New">ATC_GROUND:New(Airbases, AirbaseList)</a></td>
<td class="summary">
<p>Creates a new ATC_GROUND object.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).SetClient">ATC_GROUND.SetClient</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).SetKickSpeed">ATC_GROUND:SetKickSpeed(KickSpeed, Airbase)</a></td>
<td class="summary">
<p>Set the maximum speed in meters per second (Mps) until the player gets kicked.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).SetKickSpeedKmph">ATC_GROUND:SetKickSpeedKmph(KickSpeed, Airbase)</a></td>
<td class="summary">
<p>Set the maximum speed in Kmph until the player gets kicked.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).SetKickSpeedMiph">ATC_GROUND:SetKickSpeedMiph(KickSpeedMiph, Airbase)</a></td>
<td class="summary">
<p>Set the maximum speed in Miph until the player gets kicked.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).SetMaximumKickSpeed">ATC_GROUND:SetMaximumKickSpeed(MaximumKickSpeed, Airbase)</a></td>
<td class="summary">
<p>Set the maximum kick speed in meters per second (Mps) until the player gets kicked.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).SetMaximumKickSpeedKmph">ATC_GROUND:SetMaximumKickSpeedKmph(MaximumKickSpeed, Airbase)</a></td>
<td class="summary">
<p>Set the maximum kick speed in kilometers per hour (Kmph) until the player gets kicked.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).SetMaximumKickSpeedMiph">ATC_GROUND:SetMaximumKickSpeedMiph(MaximumKickSpeedMiph, Airbase)</a></td>
<td class="summary">
<p>Set the maximum kick speed in miles per hour (Miph) until the player gets kicked.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND).SmokeRunways">ATC_GROUND:SmokeRunways(SmokeColor)</a></td>
<td class="summary">
<p>Smoke the airbases runways.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND)._AirbaseMonitor">ATC_GROUND:_AirbaseMonitor()</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(ATC_GROUND_CAUCASUS)">Type <code>ATC_GROUND_CAUCASUS</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND_CAUCASUS).New">ATC_GROUND_CAUCASUS:New(AirbaseNames)</a></td>
<td class="summary">
<p>Creates a new ATC<em>GROUND</em>CAUCASUS object.</p>
</td>
</tr>
</table>
<h2><a id="#(ATC_GROUND_NEVADA)">Type <code>ATC_GROUND_NEVADA</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND_NEVADA).New">ATC_GROUND_NEVADA:New(AirbaseNames)</a></td>
<td class="summary">
<p>Creates a new ATC<em>GROUND</em>NEVADA object.</p>
</td>
</tr>
</table>
<h2><a id="#(ATC_GROUND_NORMANDY)">Type <code>ATC_GROUND_NORMANDY</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND_NORMANDY).AirbaseMonitor">ATC_GROUND_NORMANDY.AirbaseMonitor</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ATC_GROUND_NORMANDY).New">ATC_GROUND_NORMANDY:New(AirbaseNames)</a></td>
<td class="summary">
<p>Creates a new ATC<em>GROUND</em>NORMANDY object.</p>
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(ATC_GROUND)">#ATC_GROUND</a></em>
<a id="ATC_GROUND" >
<strong>ATC_GROUND</strong>
</a>
</dt>
<dd>
<p>Base class for ATC_GROUND implementations.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(ATC_GROUND_CAUCASUS)">#ATC_GROUND_CAUCASUS</a></em>
<a id="ATC_GROUND_CAUCASUS" >
<strong>ATC_GROUND_CAUCASUS</strong>
</a>
</dt>
<dd>
<h1>ATC_GROUND_CAUCASUS, extends <a href="##(ATC_GROUND)">#ATC_GROUND</a></h1>
<p>The ATC_GROUND_CAUCASUS class monitors the speed of the airplanes at the airbase during taxi.</p>
<p>The pilots may not drive faster than the maximum speed for the airbase, or they will be despawned.</p>
<hr/>
<p><img src="..\Presentations\ATC_GROUND\Dia1.JPG" alt="Banner Image"/></p>
<hr/>
<p>The default maximum speed for the airbases at Caucasus is <strong>50 km/h</strong>. Warnings are given if this speed limit is trespassed.
Players will be immediately kicked when driving faster than <strong>150 km/h</strong> on the taxi way.</p>
<p>The pilot will receive 3 times a warning during speeding. After the 3rd warning, if the pilot is still driving
faster than the maximum allowed speed, the pilot will be kicked.</p>
<p>Different airbases have different maximum speeds, according safety regulations.</p>
<h1>Airbases monitored</h1>
<p>The following airbases are monitored at the Caucasus region.
Use the <a href="Airbase.html##(AIRBASE).Caucasus">Airbase#AIRBASE.Caucasus</a> enumeration to select the airbases to be monitored.</p>
<ul>
<li><code>AIRBASE.Caucasus.Anapa_Vityazevo</code></li>
<li><code>AIRBASE.Caucasus.Batumi</code></li>
<li><code>AIRBASE.Caucasus.Beslan</code></li>
<li><code>AIRBASE.Caucasus.Gelendzhik</code></li>
<li><code>AIRBASE.Caucasus.Gudauta</code></li>
<li><code>AIRBASE.Caucasus.Kobuleti</code></li>
<li><code>AIRBASE.Caucasus.Krasnodar_Center</code></li>
<li><code>AIRBASE.Caucasus.Krasnodar_Pashkovsky</code></li>
<li><code>AIRBASE.Caucasus.Krymsk</code></li>
<li><code>AIRBASE.Caucasus.Kutaisi</code></li>
<li><code>AIRBASE.Caucasus.Maykop_Khanskaya</code></li>
<li><code>AIRBASE.Caucasus.Mineralnye_Vody</code></li>
<li><code>AIRBASE.Caucasus.Mozdok</code></li>
<li><code>AIRBASE.Caucasus.Nalchik</code></li>
<li><code>AIRBASE.Caucasus.Novorossiysk</code></li>
<li><code>AIRBASE.Caucasus.Senaki_Kolkhi</code></li>
<li><code>AIRBASE.Caucasus.Sochi_Adler</code></li>
<li><code>AIRBASE.Caucasus.Soganlug</code></li>
<li><code>AIRBASE.Caucasus.Sukhumi_Babushara</code></li>
<li><code>AIRBASE.Caucasus.Tbilisi_Lochini</code></li>
<li><code>AIRBASE.Caucasus.Vaziani</code></li>
</ul>
<h1>Installation</h1>
<h2>In Single Player Missions</h2>
<p>ATC_GROUND is fully functional in single player.</p>
<h2>In Multi Player Missions</h2>
<p>ATC_GROUND is functional in multi player, however ...</p>
<p>Due to a bug in DCS since release 1.5, the despawning of clients are not anymore working in multi player.
To <strong>work around this problem</strong>, a much better solution has been made, using the <strong>slot blocker</strong> script designed
by Ciribob. </p>
<p>With the help of <strong>Ciribob</strong>, this script has been extended to also kick client players while in flight.
ATC_GROUND is communicating with this modified script to kick players!</p>
<p>Install the file <strong>SimpleSlotBlockGameGUI.lua</strong> on the server, following the installation instructions described by Ciribob.</p>
<p><a href="https://github.com/ciribob/DCS-SimpleSlotBlock">Simple Slot Blocker from Ciribob &amp; FlightControl</a></p>
<h1>Script it!</h1>
<h2>1. ATC_GROUND_CAUCASUS Constructor</h2>
<p>Creates a new ATC<em>GROUND</em>CAUCASUS object that will monitor pilots taxiing behaviour.</p>
<pre><code>-- This creates a new ATC_GROUND_CAUCASUS object.
-- Monitor all the airbases.
ATC_Ground = ATC_GROUND_CAUCASUS:New()
-- Monitor specific airbases only.
ATC_Ground = ATC_GROUND_CAUCASUS:New(
{ AIRBASE.Caucasus.Gelendzhik,
AIRBASE.Caucasus.Krymsk
}
)
</code></pre>
<h2>2. Set various options</h2>
<p>There are various methods that you can use to tweak the behaviour of the ATC_GROUND classes.</p>
<h3>2.1 Speed limit at an airbase.</h3>
<ul>
<li><a href="##(ATC_GROUND).SetKickSpeed">ATC_GROUND.SetKickSpeed</a>(): Set the speed limit allowed at an airbase in meters per second.</li>
<li><a href="##(ATC_GROUND).SetKickSpeedKmph">ATC_GROUND.SetKickSpeedKmph</a>(): Set the speed limit allowed at an airbase in kilometers per hour.</li>
<li><a href="##(ATC_GROUND).SetKickSpeedMiph">ATC_GROUND.SetKickSpeedMiph</a>(): Set the speed limit allowed at an airbase in miles per hour.</li>
</ul>
<h3>2.2 Prevent Takeoff at an airbase. Players will be kicked immediately.</h3>
<ul>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeed">ATC_GROUND.SetMaximumKickSpeed</a>(): Set the maximum speed allowed at an airbase in meters per second. </li>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeedKmph">ATC_GROUND.SetMaximumKickSpeedKmph</a>(): Set the maximum speed allowed at an airbase in kilometers per hour.</li>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeedMiph">ATC_GROUND.SetMaximumKickSpeedMiph</a>(): Set the maximum speed allowed at an airbase in miles per hour.</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(ATC_GROUND_NEVADA)">#ATC_GROUND_NEVADA</a></em>
<a id="ATC_GROUND_NEVADA" >
<strong>ATC_GROUND_NEVADA</strong>
</a>
</dt>
<dd>
<h1>ATC_GROUND_NEVADA, extends <a href="##(ATC_GROUND)">#ATC_GROUND</a></h1>
<p>The ATC_GROUND_NEVADA class monitors the speed of the airplanes at the airbase during taxi.</p>
<p>The pilots may not drive faster than the maximum speed for the airbase, or they will be despawned.</p>
<hr/>
<p><img src="..\Presentations\ATC_GROUND\Dia1.JPG" alt="Banner Image"/></p>
<hr/>
<p>The default maximum speed for the airbases at Nevada is <strong>50 km/h</strong>. Warnings are given if this speed limit is trespassed.
Players will be immediately kicked when driving faster than <strong>150 km/h</strong> on the taxi way.</p>
<p>The ATC_GROUND_NEVADA class monitors the speed of the airplanes at the airbase during taxi.
The pilots may not drive faster than the maximum speed for the airbase, or they will be despawned.</p>
<p>The pilot will receive 3 times a warning during speeding. After the 3rd warning, if the pilot is still driving
faster than the maximum allowed speed, the pilot will be kicked.</p>
<p>Different airbases have different maximum speeds, according safety regulations.</p>
<h1>Airbases monitored</h1>
<p>The following airbases are monitored at the Nevada region.
Use the <a href="Airbase.html##(AIRBASE).Nevada">Airbase#AIRBASE.Nevada</a> enumeration to select the airbases to be monitored.</p>
<ul>
<li><code>AIRBASE.Nevada.Beatty_Airport</code></li>
<li><code>AIRBASE.Nevada.Boulder_City_Airport</code></li>
<li><code>AIRBASE.Nevada.Creech_AFB</code></li>
<li><code>AIRBASE.Nevada.Echo_Bay</code></li>
<li><code>AIRBASE.Nevada.Groom_Lake_AFB</code></li>
<li><code>AIRBASE.Nevada.Henderson_Executive_Airport</code></li>
<li><code>AIRBASE.Nevada.Jean_Airport</code></li>
<li><code>AIRBASE.Nevada.Laughlin_Airport</code></li>
<li><code>AIRBASE.Nevada.Lincoln_County</code></li>
<li><code>AIRBASE.Nevada.McCarran_International_Airport</code></li>
<li><code>AIRBASE.Nevada.Mellan_Airstrip</code></li>
<li><code>AIRBASE.Nevada.Mesquite</code></li>
<li><code>AIRBASE.Nevada.Mina_Airport_3Q0</code></li>
<li><code>AIRBASE.Nevada.Nellis_AFB</code></li>
<li><code>AIRBASE.Nevada.North_Las_Vegas</code></li>
<li><code>AIRBASE.Nevada.Pahute_Mesa_Airstrip</code></li>
<li><code>AIRBASE.Nevada.Tonopah_Airport</code></li>
<li><code>AIRBASE.Nevada.Tonopah_Test_Range_Airfield</code></li>
</ul>
<h1>Installation</h1>
<h2>In Single Player Missions</h2>
<p>ATC_GROUND is fully functional in single player.</p>
<h2>In Multi Player Missions</h2>
<p>ATC_GROUND is functional in multi player, however ...</p>
<p>Due to a bug in DCS since release 1.5, the despawning of clients are not anymore working in multi player.
To <strong>work around this problem</strong>, a much better solution has been made, using the <strong>slot blocker</strong> script designed
by Ciribob. </p>
<p>With the help of <strong>Ciribob</strong>, this script has been extended to also kick client players while in flight.
ATC_GROUND is communicating with this modified script to kick players!</p>
<p>Install the file <strong>SimpleSlotBlockGameGUI.lua</strong> on the server, following the installation instructions described by Ciribob.</p>
<p><a href="https://github.com/ciribob/DCS-SimpleSlotBlock">Simple Slot Blocker from Ciribob &amp; FlightControl</a></p>
<h1>Script it!</h1>
<h2>1. ATC<em>GROUND</em>NEVADA Constructor</h2>
<p>Creates a new ATC<em>GROUND</em>NEVADA object that will monitor pilots taxiing behaviour.</p>
<pre><code>-- This creates a new ATC_GROUND_NEVADA object.
-- Monitor all the airbases.
ATC_Ground = ATC_GROUND_NEVADA:New()
-- Monitor specific airbases.
ATC_Ground = ATC_GROUND_NEVADA:New(
{ AIRBASE.Nevada.Laughlin_Airport,
AIRBASE.Nevada.Mellan_Airstrip,
AIRBASE.Nevada.Lincoln_County,
AIRBASE.Nevada.North_Las_Vegas,
AIRBASE.Nevada.McCarran_International_Airport
}
)
</code></pre>
<h2>2. Set various options</h2>
<p>There are various methods that you can use to tweak the behaviour of the ATC_GROUND classes.</p>
<h3>2.1 Speed limit at an airbase.</h3>
<ul>
<li><a href="##(ATC_GROUND).SetKickSpeed">ATC_GROUND.SetKickSpeed</a>(): Set the speed limit allowed at an airbase in meters per second.</li>
<li><a href="##(ATC_GROUND).SetKickSpeedKmph">ATC_GROUND.SetKickSpeedKmph</a>(): Set the speed limit allowed at an airbase in kilometers per hour.</li>
<li><a href="##(ATC_GROUND).SetKickSpeedMiph">ATC_GROUND.SetKickSpeedMiph</a>(): Set the speed limit allowed at an airbase in miles per hour.</li>
</ul>
<h3>2.2 Prevent Takeoff at an airbase. Players will be kicked immediately.</h3>
<ul>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeed">ATC_GROUND.SetMaximumKickSpeed</a>(): Set the maximum speed allowed at an airbase in meters per second. </li>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeedKmph">ATC_GROUND.SetMaximumKickSpeedKmph</a>(): Set the maximum speed allowed at an airbase in kilometers per hour.</li>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeedMiph">ATC_GROUND.SetMaximumKickSpeedMiph</a>(): Set the maximum speed allowed at an airbase in miles per hour.</li>
</ul>
<p> </p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(ATC_GROUND_NORMANDY)">#ATC_GROUND_NORMANDY</a></em>
<a id="ATC_GROUND_NORMANDY" >
<strong>ATC_GROUND_NORMANDY</strong>
</a>
</dt>
<dd>
<h1>ATC_GROUND_NORMANDY, extends <a href="##(ATC_GROUND)">#ATC_GROUND</a></h1>
<p>The ATC_GROUND_NORMANDY class monitors the speed of the airplanes at the airbase during taxi.</p>
<p>The pilots may not drive faster than the maximum speed for the airbase, or they will be despawned.</p>
<hr/>
<p><img src="..\Presentations\ATC_GROUND\Dia1.JPG" alt="Banner Image"/></p>
<hr/>
<p>The default maximum speed for the airbases at Caucasus is <strong>40 km/h</strong>. Warnings are given if this speed limit is trespassed.
Players will be immediately kicked when driving faster than <strong>100 km/h</strong> on the taxi way.</p>
<p>The ATC_GROUND_NORMANDY class monitors the speed of the airplanes at the airbase during taxi.
The pilots may not drive faster than the maximum speed for the airbase, or they will be despawned.</p>
<p>The pilot will receive 3 times a warning during speeding. After the 3rd warning, if the pilot is still driving
faster than the maximum allowed speed, the pilot will be kicked.</p>
<p>Different airbases have different maximum speeds, according safety regulations.</p>
<h1>Airbases monitored</h1>
<p>The following airbases are monitored at the Normandy region.
Use the <a href="Airbase.html##(AIRBASE).Normandy">Airbase#AIRBASE.Normandy</a> enumeration to select the airbases to be monitored.</p>
<ul>
<li><code>AIRBASE.Normandy.Azeville</code></li>
<li><code>AIRBASE.Normandy.Bazenville</code></li>
<li><code>AIRBASE.Normandy.Beny_sur_Mer</code></li>
<li><code>AIRBASE.Normandy.Beuzeville</code></li>
<li><code>AIRBASE.Normandy.Biniville</code></li>
<li><code>AIRBASE.Normandy.Brucheville</code></li>
<li><code>AIRBASE.Normandy.Cardonville</code></li>
<li><code>AIRBASE.Normandy.Carpiquet</code></li>
<li><code>AIRBASE.Normandy.Chailey</code></li>
<li><code>AIRBASE.Normandy.Chippelle</code></li>
<li><code>AIRBASE.Normandy.Cretteville</code></li>
<li><code>AIRBASE.Normandy.Cricqueville_en_Bessin</code></li>
<li><code>AIRBASE.Normandy.Deux_Jumeaux</code></li>
<li><code>AIRBASE.Normandy.Evreux</code></li>
<li><code>AIRBASE.Normandy.Ford</code></li>
<li><code>AIRBASE.Normandy.Funtington</code></li>
<li><code>AIRBASE.Normandy.Lantheuil</code></li>
<li><code>AIRBASE.Normandy.Le_Molay</code></li>
<li><code>AIRBASE.Normandy.Lessay</code></li>
<li><code>AIRBASE.Normandy.Lignerolles</code></li>
<li><code>AIRBASE.Normandy.Longues_sur_Mer</code></li>
<li><code>AIRBASE.Normandy.Maupertus</code></li>
<li><code>AIRBASE.Normandy.Meautis</code></li>
<li><code>AIRBASE.Normandy.Needs_Oar_Point</code></li>
<li><code>AIRBASE.Normandy.Picauville</code></li>
<li><code>AIRBASE.Normandy.Rucqueville</code></li>
<li><code>AIRBASE.Normandy.Saint_Pierre_du_Mont</code></li>
<li><code>AIRBASE.Normandy.Sainte_Croix_sur_Mer</code></li>
<li><code>AIRBASE.Normandy.Sainte_Laurent_sur_Mer</code></li>
<li><code>AIRBASE.Normandy.Sommervieu</code></li>
<li><code>AIRBASE.Normandy.Tangmere</code></li>
</ul>
<h1>Installation</h1>
<h2>In Single Player Missions</h2>
<p>ATC_GROUND is fully functional in single player.</p>
<h2>In Multi Player Missions</h2>
<p>ATC_GROUND is functional in multi player, however ...</p>
<p>Due to a bug in DCS since release 1.5, the despawning of clients are not anymore working in multi player.
To <strong>work around this problem</strong>, a much better solution has been made, using the <strong>slot blocker</strong> script designed
by Ciribob. </p>
<p>With the help of <strong>Ciribob</strong>, this script has been extended to also kick client players while in flight.
ATC_GROUND is communicating with this modified script to kick players!</p>
<p>Install the file <strong>SimpleSlotBlockGameGUI.lua</strong> on the server, following the installation instructions described by Ciribob.</p>
<p><a href="https://github.com/ciribob/DCS-SimpleSlotBlock">Simple Slot Blocker from Ciribob &amp; FlightControl</a></p>
<h1>Script it!</h1>
<h2>1. ATC<em>GROUND</em>NORMANDY Constructor</h2>
<p>Creates a new ATC<em>GROUND</em>NORMANDY object that will monitor pilots taxiing behaviour.</p>
<pre><code>-- This creates a new ATC_GROUND_NORMANDY object.
-- Monitor for these clients the airbases.
AirbasePoliceCaucasus = ATC_GROUND_NORMANDY:New()
ATC_Ground = ATC_GROUND_NORMANDY:New(
{ AIRBASE.Normandy.Chippelle,
AIRBASE.Normandy.Beuzeville
}
)
</code></pre>
<h2>2. Set various options</h2>
<p>There are various methods that you can use to tweak the behaviour of the ATC_GROUND classes.</p>
<h3>2.1 Speed limit at an airbase.</h3>
<ul>
<li><a href="##(ATC_GROUND).SetKickSpeed">ATC_GROUND.SetKickSpeed</a>(): Set the speed limit allowed at an airbase in meters per second.</li>
<li><a href="##(ATC_GROUND).SetKickSpeedKmph">ATC_GROUND.SetKickSpeedKmph</a>(): Set the speed limit allowed at an airbase in kilometers per hour.</li>
<li><a href="##(ATC_GROUND).SetKickSpeedMiph">ATC_GROUND.SetKickSpeedMiph</a>(): Set the speed limit allowed at an airbase in miles per hour.</li>
</ul>
<h3>2.2 Prevent Takeoff at an airbase. Players will be kicked immediately.</h3>
<ul>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeed">ATC_GROUND.SetMaximumKickSpeed</a>(): Set the maximum speed allowed at an airbase in meters per second. </li>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeedKmph">ATC_GROUND.SetMaximumKickSpeedKmph</a>(): Set the maximum speed allowed at an airbase in kilometers per hour.</li>
<li><a href="##(ATC_GROUND).SetMaximumKickSpeedMiph">ATC_GROUND.SetMaximumKickSpeedMiph</a>(): Set the maximum speed allowed at an airbase in miles per hour.
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="SSB" >
<strong>SSB</strong>
</a>
</dt>
<dd>
<p> This is simple slot blocker is used on the server. </p>
</dd>
</dl>
<h2><a id="#(ATC_Ground)" >Type <code>ATC_Ground</code></a></h2>
<h2><a id="#(ATC_GROUND)" >Type <code>ATC_GROUND</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em></em>
<a id="#(ATC_GROUND).AirbaseList" >
<strong>ATC_GROUND.AirbaseList</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(ATC_GROUND).Airbases" >
<strong>ATC_GROUND.Airbases</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(ATC_GROUND).KickSpeed" >
<strong>ATC_GROUND.KickSpeed</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(ATC_GROUND).MaximumKickSpeed" >
<strong>ATC_GROUND.MaximumKickSpeed</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND).New" >
<strong>ATC_GROUND:New(Airbases, AirbaseList)</strong>
</a>
</dt>
<dd>
<p>Creates a new ATC_GROUND object.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> Airbases </em></code>:
A table of Airbase Names.</p>
</li>
<li>
<p><code><em> AirbaseList </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND)">#ATC_GROUND</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Core.Set.html##(SET_CLIENT)">Core.Set#SET_CLIENT</a></em>
<a id="#(ATC_GROUND).SetClient" >
<strong>ATC_GROUND.SetClient</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND).SetKickSpeed" >
<strong>ATC_GROUND:SetKickSpeed(KickSpeed, Airbase)</strong>
</a>
</dt>
<dd>
<p>Set the maximum speed in meters per second (Mps) until the player gets kicked.</p>
<p>An airbase can be specified to set the kick speed for.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number KickSpeed </em></code>:
The speed in Mps.</p>
</li>
<li>
<p><code><em><a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> Airbase </em></code>:
(optional) The airbase to set the kick speed for.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND)">#ATC_GROUND</a>:</em>
self</p>
<h3>Usage:</h3>
<pre class="example"><code>
-- Declare Atc_Ground using one of those, depending on the map.
Atc_Ground = ATC_GROUND_CAUCAUS:New()
Atc_Ground = ATC_GROUND_NEVADA:New()
Atc_Ground = ATC_GROUND_NORMANDY:New()
-- Then use one of these methods...
Atc_Ground:SetKickSpeed( UTILS.KmphToMps( 80 ) ) -- Kick the players at 80 kilometers per hour
Atc_Ground:SetKickSpeed( UTILS.MiphToMps( 100 ) ) -- Kick the players at 100 miles per hour
Atc_Ground:SetKickSpeed( 24 ) -- Kick the players at 24 meters per second ( 24 * 3.6 = 86.4 kilometers per hour )
</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND).SetKickSpeedKmph" >
<strong>ATC_GROUND:SetKickSpeedKmph(KickSpeed, Airbase)</strong>
</a>
</dt>
<dd>
<p>Set the maximum speed in Kmph until the player gets kicked.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number KickSpeed </em></code>:
Set the speed in Kmph.</p>
</li>
<li>
<p><code><em><a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> Airbase </em></code>:
(optional) The airbase to set the kick speed for.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND)">#ATC_GROUND</a>:</em>
self</p>
<p> Atc_Ground:SetKickSpeedKmph( 80 ) -- Kick the players at 80 kilometers per hour</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND).SetKickSpeedMiph" >
<strong>ATC_GROUND:SetKickSpeedMiph(KickSpeedMiph, Airbase)</strong>
</a>
</dt>
<dd>
<p>Set the maximum speed in Miph until the player gets kicked.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number KickSpeedMiph </em></code>:
Set the speed in Mph.</p>
</li>
<li>
<p><code><em><a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> Airbase </em></code>:
(optional) The airbase to set the kick speed for.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND)">#ATC_GROUND</a>:</em>
self</p>
<p> Atc_Ground:SetKickSpeedMiph( 100 ) -- Kick the players at 100 miles per hour</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND).SetMaximumKickSpeed" >
<strong>ATC_GROUND:SetMaximumKickSpeed(MaximumKickSpeed, Airbase)</strong>
</a>
</dt>
<dd>
<p>Set the maximum kick speed in meters per second (Mps) until the player gets kicked.</p>
<p>There are no warnings given if this speed is reached, and is to prevent players to take off from the airbase!
An airbase can be specified to set the maximum kick speed for.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number MaximumKickSpeed </em></code>:
The speed in Mps.</p>
</li>
<li>
<p><code><em><a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> Airbase </em></code>:
(optional) The airbase to set the kick speed for.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND)">#ATC_GROUND</a>:</em>
self</p>
<h3>Usage:</h3>
<pre class="example"><code>
-- Declare Atc_Ground using one of those, depending on the map.
Atc_Ground = ATC_GROUND_CAUCAUS:New()
Atc_Ground = ATC_GROUND_NEVADA:New()
Atc_Ground = ATC_GROUND_NORMANDY:New()
-- Then use one of these methods...
Atc_Ground:SetMaximumKickSpeed( UTILS.KmphToMps( 80 ) ) -- Kick the players at 80 kilometers per hour
Atc_Ground:SetMaximumKickSpeed( UTILS.MiphToMps( 100 ) ) -- Kick the players at 100 miles per hour
Atc_Ground:SetMaximumKickSpeed( 24 ) -- Kick the players at 24 meters per second ( 24 * 3.6 = 86.4 kilometers per hour )
</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND).SetMaximumKickSpeedKmph" >
<strong>ATC_GROUND:SetMaximumKickSpeedKmph(MaximumKickSpeed, Airbase)</strong>
</a>
</dt>
<dd>
<p>Set the maximum kick speed in kilometers per hour (Kmph) until the player gets kicked.</p>
<p>There are no warnings given if this speed is reached, and is to prevent players to take off from the airbase!
An airbase can be specified to set the maximum kick speed for.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number MaximumKickSpeed </em></code>:
Set the speed in Kmph.</p>
</li>
<li>
<p><code><em><a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> Airbase </em></code>:
(optional) The airbase to set the kick speed for.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND)">#ATC_GROUND</a>:</em>
self</p>
<p> Atc_Ground:SetMaximumKickSpeedKmph( 150 ) -- Kick the players at 150 kilometers per hour</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND).SetMaximumKickSpeedMiph" >
<strong>ATC_GROUND:SetMaximumKickSpeedMiph(MaximumKickSpeedMiph, Airbase)</strong>
</a>
</dt>
<dd>
<p>Set the maximum kick speed in miles per hour (Miph) until the player gets kicked.</p>
<p>There are no warnings given if this speed is reached, and is to prevent players to take off from the airbase!
An airbase can be specified to set the maximum kick speed for.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number MaximumKickSpeedMiph </em></code>:
Set the speed in Mph.</p>
</li>
<li>
<p><code><em><a href="Wrapper.Airbase.html##(AIRBASE)">Wrapper.Airbase#AIRBASE</a> Airbase </em></code>:
(optional) The airbase to set the kick speed for.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND)">#ATC_GROUND</a>:</em>
self</p>
<p> Atc_Ground:SetMaximumKickSpeedMiph( 100 ) -- Kick the players at 100 miles per hour</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND).SmokeRunways" >
<strong>ATC_GROUND:SmokeRunways(SmokeColor)</strong>
</a>
</dt>
<dd>
<p>Smoke the airbases runways.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Utilities.Utils.html##(SMOKECOLOR)">Utilities.Utils#SMOKECOLOR</a> SmokeColor </em></code>:
The color of the smoke around the runways.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND)">#ATC_GROUND</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND)._AirbaseMonitor" >
<strong>ATC_GROUND:_AirbaseMonitor()</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(ATC_GROUND.AirbaseNames)" >Type <code>ATC_GROUND.AirbaseNames</code></a></h2>
<h2><a id="#(ATC_GROUND_CAUCASUS)" >Type <code>ATC_GROUND_CAUCASUS</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<a id="#(ATC_GROUND_CAUCASUS).New" >
<strong>ATC_GROUND_CAUCASUS:New(AirbaseNames)</strong>
</a>
</dt>
<dd>
<p>Creates a new ATC<em>GROUND</em>CAUCASUS object.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> AirbaseNames </em></code>:
A list {} of airbase names (Use AIRBASE.Caucasus enumerator).</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND_CAUCASUS)">#ATC<em>GROUND</em>CAUCASUS</a>:</em>
self</p>
</dd>
</dl>
<h2><a id="#(ATC_GROUND_NEVADA)" >Type <code>ATC_GROUND_NEVADA</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<a id="#(ATC_GROUND_NEVADA).New" >
<strong>ATC_GROUND_NEVADA:New(AirbaseNames)</strong>
</a>
</dt>
<dd>
<p>Creates a new ATC<em>GROUND</em>NEVADA object.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> AirbaseNames </em></code>:
A list {} of airbase names (Use AIRBASE.Nevada enumerator).</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND_NEVADA)">#ATC<em>GROUND</em>NEVADA</a>:</em>
self</p>
</dd>
</dl>
<h2><a id="#(ATC_GROUND_NORMANDY)" >Type <code>ATC_GROUND_NORMANDY</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em></em>
<a id="#(ATC_GROUND_NORMANDY).AirbaseMonitor" >
<strong>ATC_GROUND_NORMANDY.AirbaseMonitor</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ATC_GROUND_NORMANDY).New" >
<strong>ATC_GROUND_NORMANDY:New(AirbaseNames)</strong>
</a>
</dt>
<dd>
<p>Creates a new ATC<em>GROUND</em>NORMANDY object.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> AirbaseNames </em></code>:
A list {} of airbase names (Use AIRBASE.Normandy enumerator).</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ATC_GROUND_NORMANDY)">#ATC<em>GROUND</em>NORMANDY</a>:</em>
self</p>
</dd>
</dl>
</div>
</div>
</body>
</html>