mirror of
https://github.com/FlightControl-Master/MOOSE_MISSIONS.git
synced 2026-08-25 23:15:08 +00:00
Updated Moose.lua
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,43 +1,43 @@
|
|||||||
-- Name: AIB-002 - Patrol AI.lua
|
-- Name: AIB-002 - Patrol AI.lua
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 7 December 2016
|
-- Date Created: 7 December 2016
|
||||||
--
|
--
|
||||||
-- # Situation:
|
-- # Situation:
|
||||||
--
|
--
|
||||||
-- For the red coalition, 2 client slots are foreseen.
|
-- For the red coalition, 2 client slots are foreseen.
|
||||||
-- For those players that have not joined the mission, red AI is spawned.
|
-- For those players that have not joined the mission, red AI is spawned.
|
||||||
-- The red AI should start patrolling an area until fuel is empty and return to the home base.
|
-- The red AI should start patrolling an area until fuel is empty and return to the home base.
|
||||||
--
|
--
|
||||||
-- # Test cases:
|
-- # Test cases:
|
||||||
--
|
--
|
||||||
-- 1. If no player is logging into the red slots, 2 red AI planes should be alive.
|
-- 1. If no player is logging into the red slots, 2 red AI planes should be alive.
|
||||||
-- 2. If a player joins one red slot, one red AI plane should return to the nearest home base.
|
-- 2. If a player joins one red slot, one red AI plane should return to the nearest home base.
|
||||||
-- 3. If two players join the red slots, no AI plane should be spawned, and all airborne AI planes should return to the nearest home base.
|
-- 3. If two players join the red slots, no AI plane should be spawned, and all airborne AI planes should return to the nearest home base.
|
||||||
-- 4. Spawned AI should take-off from the airbase, and start patrolling the area around Anapa.
|
-- 4. Spawned AI should take-off from the airbase, and start patrolling the area around Anapa.
|
||||||
-- 5. When the AI is out-of-fuel, it should report it is returning to the home base, and land at Anapa.
|
-- 5. When the AI is out-of-fuel, it should report it is returning to the home base, and land at Anapa.
|
||||||
|
|
||||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||||
|
|
||||||
-- Define the SPAWN object for the red AI plane template.
|
-- Define the SPAWN object for the red AI plane template.
|
||||||
-- We use InitCleanUp to check every 20 seconds, if there are no planes blocked at the airbase, waithing for take-off.
|
-- We use InitCleanUp to check every 20 seconds, if there are no planes blocked at the airbase, waithing for take-off.
|
||||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||||
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
||||||
|
|
||||||
-- Start the AI_BALANCER, using the SET of red CLIENTs, and the SPAWN object as a parameter.
|
-- Start the AI_BALANCER, using the SET of red CLIENTs, and the SPAWN object as a parameter.
|
||||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||||
|
|
||||||
local PatrolZones = {}
|
local PatrolZones = {}
|
||||||
|
|
||||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||||
|
|
||||||
local PatrolZoneGroup = GROUP:FindByName( "PatrolZone" )
|
local PatrolZoneGroup = GROUP:FindByName( "PatrolZone" )
|
||||||
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||||
|
|
||||||
|
|
||||||
PatrolZones[AIGroup] = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
|
PatrolZones[AIGroup] = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
|
||||||
PatrolZones[AIGroup]:ManageFuel( 0.2, 60 )
|
PatrolZones[AIGroup]:ManageFuel( 0.2, 60 )
|
||||||
PatrolZones[AIGroup]:SetControllable( AIGroup )
|
PatrolZones[AIGroup]:SetControllable( AIGroup )
|
||||||
PatrolZones[AIGroup]:__Start( 5 )
|
PatrolZones[AIGroup]:__Start( 5 )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Binary file not shown.
+24
-24
@@ -1,24 +1,24 @@
|
|||||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||||
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
||||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||||
|
|
||||||
RU_AirbasesSet = SET_AIRBASE:New():FilterCoalitions("red"):FilterStart()
|
RU_AirbasesSet = SET_AIRBASE:New():FilterCoalitions("red"):FilterStart()
|
||||||
RU_AirbasesSet:Flush()
|
RU_AirbasesSet:Flush()
|
||||||
RU_AI_Balancer:ReturnToNearestAirbases( 10000, RU_AirbasesSet )
|
RU_AI_Balancer:ReturnToNearestAirbases( 10000, RU_AirbasesSet )
|
||||||
|
|
||||||
|
|
||||||
US_PlanesClientSet = SET_CLIENT:New():FilterCountries( "USA" ):FilterCategories( "plane" )
|
US_PlanesClientSet = SET_CLIENT:New():FilterCountries( "USA" ):FilterCategories( "plane" )
|
||||||
US_PlanesSpawn = SPAWN:New( "AI US" ):InitCleanUp( 20 )
|
US_PlanesSpawn = SPAWN:New( "AI US" ):InitCleanUp( 20 )
|
||||||
US_AI_Balancer = AI_BALANCER:New( US_PlanesClientSet, US_PlanesSpawn )
|
US_AI_Balancer = AI_BALANCER:New( US_PlanesClientSet, US_PlanesSpawn )
|
||||||
|
|
||||||
--RU_AI_Balancer:ReturnToHomeAirbase( 10000 )
|
--RU_AI_Balancer:ReturnToHomeAirbase( 10000 )
|
||||||
|
|
||||||
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Blue" )
|
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Blue" )
|
||||||
--local PatrolZoneBlue = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
--local PatrolZoneBlue = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||||
--local PatrolZoneB = AI_PATROL_ZONE:New( PatrolZoneBlue, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
|
--local PatrolZoneB = AI_PATROL_ZONE:New( PatrolZoneBlue, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
|
||||||
--US_AI_Balancer:SetPatrolZone( PatrolZoneB )
|
--US_AI_Balancer:SetPatrolZone( PatrolZoneB )
|
||||||
--
|
--
|
||||||
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Red" )
|
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Red" )
|
||||||
--local PatrolZoneRed = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
--local PatrolZoneRed = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||||
--local PatrolZoneR = AI_PATROL_ZONE:New( PatrolZoneRed, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
|
--local PatrolZoneR = AI_PATROL_ZONE:New( PatrolZoneRed, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
|
||||||
--RU_AI_Balancer:SetPatrolZone( PatrolZoneR )
|
--RU_AI_Balancer:SetPatrolZone( PatrolZoneR )
|
||||||
|
|||||||
BIN
Binary file not shown.
+47
-47
@@ -1,47 +1,47 @@
|
|||||||
-- Name: AIB-004 - Respawn Test when Destroyed.lua
|
-- Name: AIB-004 - Respawn Test when Destroyed.lua
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 7 January 2017
|
-- Date Created: 7 January 2017
|
||||||
--
|
--
|
||||||
-- # Situation:
|
-- # Situation:
|
||||||
--
|
--
|
||||||
-- For the red coalition, 2 client slots are foreseen.
|
-- For the red coalition, 2 client slots are foreseen.
|
||||||
-- For those players that have not joined the mission, red AI is spawned.
|
-- For those players that have not joined the mission, red AI is spawned.
|
||||||
-- The red AI should start patrolling an area.
|
-- The red AI should start patrolling an area.
|
||||||
--
|
--
|
||||||
-- The blue side has SAMs nearby.
|
-- The blue side has SAMs nearby.
|
||||||
-- Once the red AI takes off, the red AI is attacked by the blue SAMs.
|
-- Once the red AI takes off, the red AI is attacked by the blue SAMs.
|
||||||
-- Red AI should be killed and once that happens, a Respawn of the group should happen!
|
-- Red AI should be killed and once that happens, a Respawn of the group should happen!
|
||||||
-- The Respawn happens through the InitCleanUp() API of SPAWN.
|
-- The Respawn happens through the InitCleanUp() API of SPAWN.
|
||||||
--
|
--
|
||||||
-- # Test cases:
|
-- # Test cases:
|
||||||
--
|
--
|
||||||
-- 1. If no player is logging into the red slots, 2 red AI planes should be alive.
|
-- 1. If no player is logging into the red slots, 2 red AI planes should be alive.
|
||||||
-- 2. If a player joins one red slot, one red AI plane should return to the nearest home base.
|
-- 2. If a player joins one red slot, one red AI plane should return to the nearest home base.
|
||||||
-- 3. If two players join the red slots, no AI plane should be spawned, and all airborne AI planes should return to the nearest home base.
|
-- 3. If two players join the red slots, no AI plane should be spawned, and all airborne AI planes should return to the nearest home base.
|
||||||
-- 4. Monitor that once a red AI is destroyed, that it ReSpawns...
|
-- 4. Monitor that once a red AI is destroyed, that it ReSpawns...
|
||||||
|
|
||||||
|
|
||||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||||
|
|
||||||
-- Define the SPAWN object for the red AI plane template.
|
-- Define the SPAWN object for the red AI plane template.
|
||||||
-- We use InitCleanUp to check every 20 seconds, if there are no planes blocked at the airbase, waithing for take-off.
|
-- We use InitCleanUp to check every 20 seconds, if there are no planes blocked at the airbase, waithing for take-off.
|
||||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||||
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
||||||
|
|
||||||
-- Start the AI_BALANCER, using the SET of red CLIENTs, and the SPAWN object as a parameter.
|
-- Start the AI_BALANCER, using the SET of red CLIENTs, and the SPAWN object as a parameter.
|
||||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||||
|
|
||||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||||
|
|
||||||
local PatrolZoneGroup = GROUP:FindByName( "PatrolZone" )
|
local PatrolZoneGroup = GROUP:FindByName( "PatrolZone" )
|
||||||
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||||
|
|
||||||
|
|
||||||
local Patrol = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
|
local Patrol = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
|
||||||
Patrol:ManageFuel( 0.2, 60 )
|
Patrol:ManageFuel( 0.2, 60 )
|
||||||
Patrol:SetControllable( AIGroup )
|
Patrol:SetControllable( AIGroup )
|
||||||
Patrol:__Start( 5 )
|
Patrol:__Start( 5 )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+51
-51
@@ -1,51 +1,51 @@
|
|||||||
-- Name: AIB-005 - Patrol AI and Randomize Zones
|
-- Name: AIB-005 - Patrol AI and Randomize Zones
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 10 Jan 2016
|
-- Date Created: 10 Jan 2016
|
||||||
--
|
--
|
||||||
-- # Situation:
|
-- # Situation:
|
||||||
--
|
--
|
||||||
-- For the red coalition, 2 client slots are foreseen.
|
-- For the red coalition, 2 client slots are foreseen.
|
||||||
-- For those players that have not joined the mission, red AI is spawned.
|
-- For those players that have not joined the mission, red AI is spawned.
|
||||||
-- The red AI should start patrolling an area until fuel is empty and return to the home base.
|
-- The red AI should start patrolling an area until fuel is empty and return to the home base.
|
||||||
-- For each AI being spawned, ensure that they fly to a random zone defined within the mission editor.
|
-- For each AI being spawned, ensure that they fly to a random zone defined within the mission editor.
|
||||||
-- Right now there are two patrol zones defined, so the AI should start patrolliing in one of these zones.
|
-- Right now there are two patrol zones defined, so the AI should start patrolliing in one of these zones.
|
||||||
--
|
--
|
||||||
-- # Test cases:
|
-- # Test cases:
|
||||||
--
|
--
|
||||||
-- 1. If no player is logging into the red slots, 2 red AI planes should be alive.
|
-- 1. If no player is logging into the red slots, 2 red AI planes should be alive.
|
||||||
-- 2. If a player joins one red slot, one red AI plane should return to the nearest home base.
|
-- 2. If a player joins one red slot, one red AI plane should return to the nearest home base.
|
||||||
-- 3. If two players join the red slots, no AI plane should be spawned, and all airborne AI planes should return to the nearest home base.
|
-- 3. If two players join the red slots, no AI plane should be spawned, and all airborne AI planes should return to the nearest home base.
|
||||||
-- 4. Spawned AI should take-off from the airbase, and start patrolling the area around Anapa.
|
-- 4. Spawned AI should take-off from the airbase, and start patrolling the area around Anapa.
|
||||||
-- 5. When the AI is out-of-fuel, it should report it is returning to the home base, and land at Anapa.
|
-- 5. When the AI is out-of-fuel, it should report it is returning to the home base, and land at Anapa.
|
||||||
-- 6. Ensure that you see the AI patrol in one of the two zones ...
|
-- 6. Ensure that you see the AI patrol in one of the two zones ...
|
||||||
|
|
||||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||||
|
|
||||||
-- Define the SPAWN object for the red AI plane template.
|
-- Define the SPAWN object for the red AI plane template.
|
||||||
-- We use InitCleanUp to check every 20 seconds, if there are no planes blocked at the airbase, waithing for take-off.
|
-- We use InitCleanUp to check every 20 seconds, if there are no planes blocked at the airbase, waithing for take-off.
|
||||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||||
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
||||||
|
|
||||||
-- Start the AI_BALANCER, using the SET of red CLIENTs, and the SPAWN object as a parameter.
|
-- Start the AI_BALANCER, using the SET of red CLIENTs, and the SPAWN object as a parameter.
|
||||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||||
|
|
||||||
-- Create the first polygon zone ...
|
-- Create the first polygon zone ...
|
||||||
PatrolZoneGroup1 = GROUP:FindByName( "PatrolZone1" )
|
PatrolZoneGroup1 = GROUP:FindByName( "PatrolZone1" )
|
||||||
PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
|
PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
|
||||||
|
|
||||||
-- Create the second polygon zone ...
|
-- Create the second polygon zone ...
|
||||||
PatrolZoneGroup2 = GROUP:FindByName( "PatrolZone2" )
|
PatrolZoneGroup2 = GROUP:FindByName( "PatrolZone2" )
|
||||||
PatrolZone2 = ZONE_POLYGON:New( "PatrolZone2", PatrolZoneGroup2 )
|
PatrolZone2 = ZONE_POLYGON:New( "PatrolZone2", PatrolZoneGroup2 )
|
||||||
|
|
||||||
-- Now, create an array of these zones ...
|
-- Now, create an array of these zones ...
|
||||||
PatrolZoneArray = { PatrolZone1, PatrolZone2 }
|
PatrolZoneArray = { PatrolZone1, PatrolZone2 }
|
||||||
|
|
||||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||||
|
|
||||||
local Patrol = AI_PATROL_ZONE:New( PatrolZoneArray[math.random( 1, 2 )], 3000, 6000, 400, 600 )
|
local Patrol = AI_PATROL_ZONE:New( PatrolZoneArray[math.random( 1, 2 )], 3000, 6000, 400, 600 )
|
||||||
Patrol:ManageFuel( 0.2, 60 )
|
Patrol:ManageFuel( 0.2, 60 )
|
||||||
Patrol:SetControllable( AIGroup )
|
Patrol:SetControllable( AIGroup )
|
||||||
Patrol:Start()
|
Patrol:Start()
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
BIN
Binary file not shown.
+43
-43
@@ -1,43 +1,43 @@
|
|||||||
-- Name: AIB-005 - Patrol AI and Randomize Zones
|
-- Name: AIB-005 - Patrol AI and Randomize Zones
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 10 Jan 2016
|
-- Date Created: 10 Jan 2016
|
||||||
--
|
--
|
||||||
-- # Situation:
|
-- # Situation:
|
||||||
--
|
--
|
||||||
-- For the red coalition, 2 client slots are foreseen.
|
-- For the red coalition, 2 client slots are foreseen.
|
||||||
-- For those players that have not joined the mission, red AI is spawned.
|
-- For those players that have not joined the mission, red AI is spawned.
|
||||||
-- You'll notice a lot of AI is being spawned, as there are a lot of slots...
|
-- You'll notice a lot of AI is being spawned, as there are a lot of slots...
|
||||||
-- If the SPAWN API :InitCleanUp( secs ) is NOT used, you'll notice that the planes block each other on the runway.
|
-- If the SPAWN API :InitCleanUp( secs ) is NOT used, you'll notice that the planes block each other on the runway.
|
||||||
-- After a short period of time, nothing will move anymore...
|
-- After a short period of time, nothing will move anymore...
|
||||||
-- The :InitCleanUp( seconds ) API of the SPAWN class ensure that any AI that is parked longer than the
|
-- The :InitCleanUp( seconds ) API of the SPAWN class ensure that any AI that is parked longer than the
|
||||||
-- specified amount of seconds, is respawned back at the parking position.
|
-- specified amount of seconds, is respawned back at the parking position.
|
||||||
-- This frees up the other planes departing, and the airbase is in this way decluttered...
|
-- This frees up the other planes departing, and the airbase is in this way decluttered...
|
||||||
--
|
--
|
||||||
-- # Test cases:
|
-- # Test cases:
|
||||||
--
|
--
|
||||||
-- 1. Observe the de-cluttering of planes at Krymsk.
|
-- 1. Observe the de-cluttering of planes at Krymsk.
|
||||||
-- 2. Play with the InitCleanUp API of the SPAWN class, extende the amount of seconds to find the optimal setting.
|
-- 2. Play with the InitCleanUp API of the SPAWN class, extende the amount of seconds to find the optimal setting.
|
||||||
|
|
||||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||||
|
|
||||||
-- Define the SPAWN object for the red AI plane template.
|
-- Define the SPAWN object for the red AI plane template.
|
||||||
-- We use InitCleanUp to check every 20 seconds, if there are no planes blocked at the airbase, waithing for take-off.
|
-- We use InitCleanUp to check every 20 seconds, if there are no planes blocked at the airbase, waithing for take-off.
|
||||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||||
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
||||||
|
|
||||||
-- Start the AI_BALANCER, using the SET of red CLIENTs, and the SPAWN object as a parameter.
|
-- Start the AI_BALANCER, using the SET of red CLIENTs, and the SPAWN object as a parameter.
|
||||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||||
|
|
||||||
-- Create the first polygon zone ...
|
-- Create the first polygon zone ...
|
||||||
PatrolZoneGroup1 = GROUP:FindByName( "PatrolZone1" )
|
PatrolZoneGroup1 = GROUP:FindByName( "PatrolZone1" )
|
||||||
PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
|
PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
|
||||||
|
|
||||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||||
|
|
||||||
local Patrol = AI_PATROL_ZONE:New( PatrolZone1, 3000, 6000, 400, 600 )
|
local Patrol = AI_PATROL_ZONE:New( PatrolZone1, 3000, 6000, 400, 600 )
|
||||||
Patrol:ManageFuel( 0.2, 60 )
|
Patrol:ManageFuel( 0.2, 60 )
|
||||||
Patrol:SetControllable( AIGroup )
|
Patrol:SetControllable( AIGroup )
|
||||||
Patrol:__Start( 5 )
|
Patrol:__Start( 5 )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
BIN
Binary file not shown.
Binary file not shown.
+18
-18
@@ -1,18 +1,18 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-APC-000 - APC
|
-- Name: AIC-APC-000 - APC
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 26 Mar 2018
|
-- Date Created: 26 Mar 2018
|
||||||
--
|
--
|
||||||
-- A demonstration of the AI_CARGO_APC class.
|
-- A demonstration of the AI_CARGO_APC class.
|
||||||
-- This simple example transports Infantry.
|
-- This simple example transports Infantry.
|
||||||
-- The CARGO_GROUP objects are declared within the mission script.
|
-- The CARGO_GROUP objects are declared within the mission script.
|
||||||
|
|
||||||
local Infantry1 = CARGO_GROUP:New( GROUP:FindByName( "Infantry1" ), "Infantry", "Infantry1", 500, 25 )
|
local Infantry1 = CARGO_GROUP:New( GROUP:FindByName( "Infantry1" ), "Infantry", "Infantry1", 500, 25 )
|
||||||
local Infantry2 = CARGO_GROUP:New( GROUP:FindByName( "Infantry2" ), "Infantry", "Infantry2", 500, 25 )
|
local Infantry2 = CARGO_GROUP:New( GROUP:FindByName( "Infantry2" ), "Infantry", "Infantry2", 500, 25 )
|
||||||
local Infantry3 = CARGO_GROUP:New( GROUP:FindByName( "Infantry3" ), "Infantry", "Infantry3", 500, 25 )
|
local Infantry3 = CARGO_GROUP:New( GROUP:FindByName( "Infantry3" ), "Infantry", "Infantry3", 500, 25 )
|
||||||
|
|
||||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||||
local APC = GROUP:FindByName( "APC" )
|
local APC = GROUP:FindByName( "APC" )
|
||||||
AICargoAPC = AI_CARGO_APC:New( APC, InfantryCargoSet, 500 )
|
AICargoAPC = AI_CARGO_APC:New( APC, InfantryCargoSet, 500 )
|
||||||
AICargoAPC:__Pickup( 5 )
|
AICargoAPC:__Pickup( 5 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+16
-16
@@ -1,16 +1,16 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-APC-001 - APC with Cargo declared in ME
|
-- Name: AIC-APC-001 - APC with Cargo declared in ME
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 26 Mar 2018
|
-- Date Created: 26 Mar 2018
|
||||||
--
|
--
|
||||||
-- A demonstration of the AI_CARGO_APC class.
|
-- A demonstration of the AI_CARGO_APC class.
|
||||||
-- This simple example transports Infantry.
|
-- This simple example transports Infantry.
|
||||||
-- The cargo is declared with the ~CARGO tag in the mission editor.
|
-- The cargo is declared with the ~CARGO tag in the mission editor.
|
||||||
-- So, within the mission, the infantry groups have the name:
|
-- So, within the mission, the infantry groups have the name:
|
||||||
--
|
--
|
||||||
|
|
||||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||||
local APC = GROUP:FindByName( "APC" )
|
local APC = GROUP:FindByName( "APC" )
|
||||||
AICargoAPC = AI_CARGO_APC:New( APC, InfantryCargoSet, 500 )
|
AICargoAPC = AI_CARGO_APC:New( APC, InfantryCargoSet, 500 )
|
||||||
AICargoAPC:__Pickup( 5 )
|
AICargoAPC:__Pickup( 5 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+12
-12
@@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-APC-002 - APC Move by Game Master
|
-- Name: AIC-APC-002 - APC Move by Game Master
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 26 Mar 2018
|
-- Date Created: 26 Mar 2018
|
||||||
--
|
--
|
||||||
|
|
||||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||||
|
|
||||||
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||||
|
|
||||||
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 500 )
|
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 500 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+14
-14
@@ -1,14 +1,14 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-APC-003 - APC Troops and Equipment
|
-- Name: AIC-APC-003 - APC Troops and Equipment
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 07 Apr 2018
|
-- Date Created: 07 Apr 2018
|
||||||
--
|
--
|
||||||
|
|
||||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||||
|
|
||||||
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||||
|
|
||||||
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 350 )
|
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 350 )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+26
-26
@@ -1,26 +1,26 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-APC-004 - APC Pickup
|
-- Name: AIC-APC-004 - APC Pickup
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 23 Apr 2018
|
-- Date Created: 23 Apr 2018
|
||||||
--
|
--
|
||||||
|
|
||||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||||
local APC = GROUP:FindByName( "APC" )
|
local APC = GROUP:FindByName( "APC" )
|
||||||
Cargo_APC = AI_CARGO_APC:New( APC, InfantryCargoSet, 350 )
|
Cargo_APC = AI_CARGO_APC:New( APC, InfantryCargoSet, 350 )
|
||||||
Cargo_APC:__Pickup( 1, ZONE:New( "Pickup" ):GetCoordinate() )
|
Cargo_APC:__Pickup( 1, ZONE:New( "Pickup" ):GetCoordinate() )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Loaded Handler OnAfter for Cargo_APC
|
--- Loaded Handler OnAfter for Cargo_APC
|
||||||
-- @function [parent=#Cargo_APC] OnAfterLoaded
|
-- @function [parent=#Cargo_APC] OnAfterLoaded
|
||||||
-- @param #Cargo_APC self
|
-- @param #Cargo_APC self
|
||||||
-- @param Wrapper.Group#GROUP APC
|
-- @param Wrapper.Group#GROUP APC
|
||||||
-- @param #string From
|
-- @param #string From
|
||||||
-- @param #string Event
|
-- @param #string Event
|
||||||
-- @param #string To
|
-- @param #string To
|
||||||
function Cargo_APC:OnAfterLoaded( APC, From, Event, To )
|
function Cargo_APC:OnAfterLoaded( APC, From, Event, To )
|
||||||
Cargo_APC:Deploy( ZONE:New( "Deploy" ):GetCoordinate() )
|
Cargo_APC:Deploy( ZONE:New( "Deploy" ):GetCoordinate() )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+13
-13
@@ -1,13 +1,13 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-APC-010 - Multiple APC
|
-- Name: AIC-APC-010 - Multiple APC
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 24 Apr 2018
|
-- Date Created: 24 Apr 2018
|
||||||
--
|
--
|
||||||
|
|
||||||
local InfantrySet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
local InfantrySet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||||
local APC = GROUP:FindByName( "APC" )
|
local APC = GROUP:FindByName( "APC" )
|
||||||
Cargo_APC = AI_CARGO_APC:New( APC, InfantrySet, 250 )
|
Cargo_APC = AI_CARGO_APC:New( APC, InfantrySet, 250 )
|
||||||
Cargo_APC:__Pickup( 2 )
|
Cargo_APC:__Pickup( 2 )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+44
-42
@@ -1,42 +1,44 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-APC-004 - APC Pickup
|
-- Name: AIC-APC-004 - APC Pickup
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 23 Apr 2018
|
-- Date Created: 23 Apr 2018
|
||||||
--
|
--
|
||||||
|
|
||||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||||
|
|
||||||
Cargo_APC = {}
|
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||||
|
|
||||||
for i = 1, 4 do
|
Cargo_APC = {}
|
||||||
Cargo_APC[i] = AI_CARGO_APC:New( GROUP:FindByName( "APC"..i ), InfantryCargoSet, 350 )
|
|
||||||
|
for i = 1, 4 do
|
||||||
--- Loaded Handler OnAfter for Cargo_APC
|
Cargo_APC[i] = AI_CARGO_APC:New( GROUP:FindByName( "APC"..i ), InfantryCargoSet, 350 )
|
||||||
-- @function [parent=#Cargo_APC] OnAfterLoaded
|
|
||||||
-- @param #Cargo_APC self
|
--- Loaded Handler OnAfter for Cargo_APC
|
||||||
-- @param Wrapper.Group#GROUP APC
|
-- @function [parent=#Cargo_APC] OnAfterLoaded
|
||||||
-- @param #string From
|
-- @param #Cargo_APC self
|
||||||
-- @param #string Event
|
-- @param Wrapper.Group#GROUP APC
|
||||||
-- @param #string To
|
-- @param #string From
|
||||||
Cargo_APC[i].OnAfterLoaded = function( self, APC, From, Event, To )
|
-- @param #string Event
|
||||||
self:Deploy( ZONE:New( "Deploy" ):GetRandomCoordinate( 300, 500 ), 70, "Line abreast" )
|
-- @param #string To
|
||||||
end
|
Cargo_APC[i].OnAfterLoaded = function( self, APC, From, Event, To )
|
||||||
|
self:Deploy( ZONE:New( "Deploy" ):GetRandomCoordinate( 300, 500 ), 70, "Line abreast" )
|
||||||
--- Unloaded Handler OnAfter for Cargo_APC
|
end
|
||||||
-- @function [parent=#Cargo_APC] OnAfterUnloaded
|
|
||||||
-- @param #Cargo_APC self
|
--- Unloaded Handler OnAfter for Cargo_APC
|
||||||
-- @param Wrapper.Group#GROUP APC
|
-- @function [parent=#Cargo_APC] OnAfterUnloaded
|
||||||
-- @param #string From
|
-- @param #Cargo_APC self
|
||||||
-- @param #string Event
|
-- @param Wrapper.Group#GROUP APC
|
||||||
-- @param #string To
|
-- @param #string From
|
||||||
Cargo_APC[i].OnAfterUnloaded = function( self, APC, From, Event, To )
|
-- @param #string Event
|
||||||
self:Pickup( ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ), 70, "Line abreast" )
|
-- @param #string To
|
||||||
end
|
Cargo_APC[i].OnAfterUnloaded = function( self, APC, From, Event, To )
|
||||||
|
self:Pickup( ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ), 70, "Line abreast" )
|
||||||
Cargo_APC[i]:__Pickup( i * 120, ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ), 70, "Line abreast" )
|
end
|
||||||
|
|
||||||
end
|
Cargo_APC[i]:__Pickup( i * 120, ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ), 70, "Line abreast" )
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+34
-34
@@ -1,34 +1,34 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-HEL-000 - Helicopter
|
-- Name: AIC-HEL-000 - Helicopter
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 13 Apr 2018
|
-- Date Created: 13 Apr 2018
|
||||||
--
|
--
|
||||||
|
|
||||||
WorkerCargoSet = SET_CARGO:New():FilterTypes( "Workers" ):FilterStart()
|
WorkerCargoSet = SET_CARGO:New():FilterTypes( "Workers" ):FilterStart()
|
||||||
|
|
||||||
|
|
||||||
for i = 1, 10 do
|
for i = 1, 10 do
|
||||||
local WorkerGroup = GROUP:FindByName( string.format( "Infantry#%03d", i ) )
|
local WorkerGroup = GROUP:FindByName( string.format( "Infantry#%03d", i ) )
|
||||||
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Workers", string.format( "Infantry %d", i ), 1000, 35 )
|
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Workers", string.format( "Infantry %d", i ), 1000, 35 )
|
||||||
end
|
end
|
||||||
|
|
||||||
local Helicopter = GROUP:FindByName( "Helicopter" )
|
local Helicopter = GROUP:FindByName( "Helicopter" )
|
||||||
|
|
||||||
CargoHelicopter = AI_CARGO_HELICOPTER:New( Helicopter, WorkerCargoSet )
|
CargoHelicopter = AI_CARGO_HELICOPTER:New( Helicopter, WorkerCargoSet )
|
||||||
|
|
||||||
|
|
||||||
PickupZone = ZONE:New( "PickupZone" )
|
PickupZone = ZONE:New( "PickupZone" )
|
||||||
DeployZones = { ZONE:New( "DeployZone Alpha" ), ZONE:New( "DeployZone Beta" ), ZONE:New( "DeployZone Gamma" ) }
|
DeployZones = { ZONE:New( "DeployZone Alpha" ), ZONE:New( "DeployZone Beta" ), ZONE:New( "DeployZone Gamma" ) }
|
||||||
|
|
||||||
CargoHelicopter:Pickup( PickupZone:GetRandomCoordinate( 500, 200 ) )
|
CargoHelicopter:Pickup( PickupZone:GetRandomCoordinate( 500, 200 ) )
|
||||||
|
|
||||||
function CargoHelicopter:onafterLoaded( Helicopter, From, Event, To, Cargo )
|
function CargoHelicopter:onafterLoaded( Helicopter, From, Event, To, Cargo )
|
||||||
CargoHelicopter:Deploy( DeployZones[math.random( 1, #DeployZones ) ]:GetRandomCoordinate( 500, 100 ), math.random( 50, 250 ) )
|
CargoHelicopter:Deploy( DeployZones[math.random( 1, #DeployZones ) ]:GetRandomCoordinate( 500, 100 ), math.random( 50, 250 ) )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function CargoHelicopter:onafterUnloaded( Helicopter, From, Event, To, Cargo )
|
function CargoHelicopter:onafterUnloaded( Helicopter, From, Event, To, Cargo )
|
||||||
CargoHelicopter:Pickup( PickupZone:GetRandomCoordinate( 500, 200 ), math.random( 50, 250 ) )
|
CargoHelicopter:Pickup( PickupZone:GetRandomCoordinate( 500, 200 ), math.random( 50, 250 ) )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
BIN
Binary file not shown.
@@ -1,37 +1,35 @@
|
|||||||
---
|
---
|
||||||
-- Name: AIC-PLN-000 - Airplane
|
-- Name: AIC-PLN-000 - Airplane
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 14 Apr 2018
|
-- Date Created: 14 Apr 2018
|
||||||
--
|
--
|
||||||
|
|
||||||
VehicleCargoSet = SET_CARGO:New():FilterTypes( "Vehicles" ):FilterStart()
|
VehicleCargoSet = SET_CARGO:New():FilterTypes( "Vehicles" ):FilterStart()
|
||||||
|
|
||||||
|
|
||||||
for i = 1, 10 do
|
for i = 1, 10 do
|
||||||
local WorkerGroup = GROUP:FindByName( string.format( "Vehicle #%03d", i ) )
|
local WorkerGroup = GROUP:FindByName( string.format( "Vehicle #%03d", i ) )
|
||||||
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Vehicles", string.format( "Vehicle %d", i ), 5000, 35 )
|
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Vehicles", string.format( "Vehicle %d", i ), 5000, 35 )
|
||||||
WorkersCargo:SetWeight(10000)
|
end
|
||||||
end
|
|
||||||
|
local Airplane = GROUP:FindByName( "Airplane" )
|
||||||
local Airplane = GROUP:FindByName( "Airplane" )
|
|
||||||
|
CargoAirplane = AI_CARGO_AIRPLANE:New( Airplane, VehicleCargoSet )
|
||||||
CargoAirplane = AI_CARGO_AIRPLANE:New( Airplane, VehicleCargoSet )
|
|
||||||
|
|
||||||
|
PickupAirbase = AIRBASE:FindByName( AIRBASE.Caucasus.Kobuleti )
|
||||||
PickupAirbase = AIRBASE:FindByName( AIRBASE.Caucasus.Kobuleti )
|
DeployAirbases = { AIRBASE:FindByName( AIRBASE.Caucasus.Batumi ), AIRBASE:FindByName( AIRBASE.Caucasus.Gudauta ) }
|
||||||
DeployAirbases = { AIRBASE:FindByName( AIRBASE.Caucasus.Batumi ), AIRBASE:FindByName( AIRBASE.Caucasus.Gudauta ) }
|
|
||||||
|
|
||||||
|
CargoAirplane:Pickup( PickupAirbase )
|
||||||
CargoAirplane:Pickup( PickupAirbase:GetCoordinate() )
|
|
||||||
|
function CargoAirplane:onafterLoaded( Airplane, From, Event, To, Cargo )
|
||||||
function CargoAirplane:OnAfterLoaded( Airplane, From, Event, To, Cargo )
|
CargoAirplane:Deploy( DeployAirbases[math.random( 1, #DeployAirbases ) ], math.random( 50, 250 ) )
|
||||||
CargoAirplane:__Deploy(0.2, DeployAirbases[math.random(#DeployAirbases)]:GetCoordinate(), math.random( 500, 750 ) )
|
end
|
||||||
end
|
|
||||||
|
|
||||||
|
function CargoAirplane:onafterUnloaded( Airplane, From, Event, To, Cargo )
|
||||||
--function CargoAirplane:OnAfterUnloaded( Airplane, From, Event, To, Cargo )
|
CargoAirplane:Pickup( PickupAirbase, math.random( 50, 250 ) )
|
||||||
function CargoAirplane:OnAfterDeployed(Airplane, From, Event, To, DeployZone)
|
end
|
||||||
CargoAirplane:__Pickup(0.2, PickupAirbase:GetCoordinate(), math.random( 500, 750 ) )
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
+142
-142
@@ -1,142 +1,142 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-100 - Demonstration
|
-- Name: AID-A2A-100 - Demonstration
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 30 May 2017
|
-- Date Created: 30 May 2017
|
||||||
|
|
||||||
local HQ_Group = GROUP:FindByName( "HQ" )
|
local HQ_Group = GROUP:FindByName( "HQ" )
|
||||||
local HQ_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
local HQ_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
||||||
local DetectionSetGroup = SET_GROUP:New()
|
local DetectionSetGroup = SET_GROUP:New()
|
||||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
A2ADispatcher:SetCommandCenter( HQ_CC )
|
A2ADispatcher:SetCommandCenter( HQ_CC )
|
||||||
|
|
||||||
-- Enable the tactical display panel.
|
-- Enable the tactical display panel.
|
||||||
A2ADispatcher:SetTacticalDisplay( false )
|
A2ADispatcher:SetTacticalDisplay( false )
|
||||||
A2ADispatcher:SetTacticalMenu( "Dispatchers", "A2A" )
|
A2ADispatcher:SetTacticalMenu( "Dispatchers", "A2A" )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
||||||
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
||||||
-- Any enemy crossing this border will be engaged.
|
-- Any enemy crossing this border will be engaged.
|
||||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
||||||
-- without an assignment within 100km radius from a detected target, will engage that target.
|
-- without an assignment within 100km radius from a detected target, will engage that target.
|
||||||
A2ADispatcher:SetEngageRadius( 120000 )
|
A2ADispatcher:SetEngageRadius( 120000 )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD" }, 16 )
|
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD" }, 16 )
|
||||||
A2ADispatcher:SetSquadron( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
A2ADispatcher:SetSquadron( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||||
A2ADispatcher:SetSquadron( "Mozdok", AIRBASE.Caucasus.Mozdok, { "SQ CCCP MIG-31" }, 16 )
|
A2ADispatcher:SetSquadron( "Mozdok", AIRBASE.Caucasus.Mozdok, { "SQ CCCP MIG-31" }, 16 )
|
||||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD", "SQ CCCP SU-34", "SQ CCCP MIG-31", "SQ CCCP MIG-29S" }, 40 )
|
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD", "SQ CCCP SU-34", "SQ CCCP MIG-31", "SQ CCCP MIG-29S" }, 40 )
|
||||||
A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||||
|
|
||||||
-- Setup the overhead
|
-- Setup the overhead
|
||||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||||
|
|
||||||
-- Setup the Grouping
|
-- Setup the Grouping
|
||||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||||
|
|
||||||
-- Setup the Takeoff methods
|
-- Setup the Takeoff methods
|
||||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||||
|
|
||||||
-- Setup the Landing methods
|
-- Setup the Landing methods
|
||||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||||
|
|
||||||
|
|
||||||
-- 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", 6, 30, 60, 1 )
|
--A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 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 )
|
||||||
|
|
||||||
-- GCI Squadron execution.
|
-- GCI Squadron execution.
|
||||||
A2ADispatcher:SetSquadronGci2( "Mozdok", 900, 1200, 100, 100, "RADIO" )
|
A2ADispatcher:SetSquadronGci2( "Mozdok", 900, 1200, 100, 100, "RADIO" )
|
||||||
A2ADispatcher:SetSquadronGci2( "Novo", 900, 2100, 100, 100, "RADIO" )
|
A2ADispatcher:SetSquadronGci2( "Novo", 900, 2100, 100, 100, "RADIO" )
|
||||||
A2ADispatcher:SetSquadronGci2( "Maykop", 900, 1200, 200, 200, "RADIO" )
|
A2ADispatcher:SetSquadronGci2( "Maykop", 900, 1200, 200, 200, "RADIO" )
|
||||||
|
|
||||||
-- Set the language of the squadrons to Russian.
|
-- Set the language of the squadrons to Russian.
|
||||||
A2ADispatcher:SetSquadronLanguage( "Mozdok", "RU" )
|
A2ADispatcher:SetSquadronLanguage( "Mozdok", "RU" )
|
||||||
A2ADispatcher:SetSquadronLanguage( "Novo", "RU" )
|
A2ADispatcher:SetSquadronLanguage( "Novo", "RU" )
|
||||||
A2ADispatcher:SetSquadronLanguage( "Maykop", "RU" )
|
A2ADispatcher:SetSquadronLanguage( "Maykop", "RU" )
|
||||||
|
|
||||||
A2ADispatcher:SetSquadronRadioFrequency( "Mozdok", 127.5 )
|
A2ADispatcher:SetSquadronRadioFrequency( "Mozdok", 127.5 )
|
||||||
A2ADispatcher:SetSquadronRadioFrequency( "Novo", 127.5 )
|
A2ADispatcher:SetSquadronRadioFrequency( "Novo", 127.5 )
|
||||||
A2ADispatcher:SetSquadronRadioFrequency( "Maykop", 127.5 )
|
A2ADispatcher:SetSquadronRadioFrequency( "Maykop", 127.5 )
|
||||||
|
|
||||||
|
|
||||||
-- Set the squadrons visible before startup.
|
-- Set the squadrons visible before startup.
|
||||||
--A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
--A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Sochi" )
|
--A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
--A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Maykop" )
|
--A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||||
|
|
||||||
|
|
||||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||||
|
|
||||||
|
|
||||||
-- Blue attack simulation
|
-- Blue attack simulation
|
||||||
local Frequency = 300
|
local Frequency = 300
|
||||||
|
|
||||||
BlueSpawn1 = SPAWN
|
BlueSpawn1 = SPAWN
|
||||||
:New( "RT NATO 1" )
|
:New( "RT NATO 1" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn2 = SPAWN
|
BlueSpawn2 = SPAWN
|
||||||
:New( "RT NATO 2" )
|
:New( "RT NATO 2" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn3 = SPAWN
|
BlueSpawn3 = SPAWN
|
||||||
:New( "RT NATO 3" )
|
:New( "RT NATO 3" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn4 = SPAWN
|
BlueSpawn4 = SPAWN
|
||||||
:New( "RT NATO 4" )
|
:New( "RT NATO 4" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+47
-47
@@ -1,47 +1,47 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-013 - Intercept Test
|
-- Name: AID-A2A-013 - Intercept Test
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 31 Jul 2017
|
-- Date Created: 31 Jul 2017
|
||||||
|
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and 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()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
||||||
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
||||||
-- Any enemy crossing this border will be engaged.
|
-- Any enemy crossing this border will be engaged.
|
||||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||||
--A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
--A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
||||||
-- without an assignment within 100km radius from a detected target, will engage that target.
|
-- without an assignment within 100km radius from a detected target, will engage that target.
|
||||||
A2ADispatcher:SetEngageRadius( 200000 )
|
A2ADispatcher:SetEngageRadius( 200000 )
|
||||||
|
|
||||||
|
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
-- Test intercept.
|
-- Test intercept.
|
||||||
A2ADispatcher:SetIntercept( 450 )
|
A2ADispatcher:SetIntercept( 450 )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP MIG-31" }, 20 )
|
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP MIG-31" }, 20 )
|
||||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Sochi" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Sochi" )
|
||||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Sochi" )
|
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Sochi" )
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-27" }, 20 )
|
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-27" }, 20 )
|
||||||
A2ADispatcher:SetSquadronGci( "Gelend", 800, 1200 )
|
A2ADispatcher:SetSquadronGci( "Gelend", 800, 1200 )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Gelend" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Gelend" )
|
||||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Gelend" )
|
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Gelend" )
|
||||||
|
|
||||||
A2ADispatcher:Start()
|
A2ADispatcher:Start()
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+60
-60
@@ -1,60 +1,60 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-020 - GCI RTB and ReEngage
|
-- Name: AID-A2A-020 - GCI RTB and ReEngage
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 30 May 2017
|
-- Date Created: 30 May 2017
|
||||||
|
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and 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()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
||||||
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
||||||
-- Any enemy crossing this border will be engaged.
|
-- Any enemy crossing this border will be engaged.
|
||||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||||
--A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
--A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
||||||
-- without an assignment within 100km radius from a detected target, will engage that target.
|
-- without an assignment within 100km radius from a detected target, will engage that target.
|
||||||
A2ADispatcher:SetEngageRadius( 200000 )
|
A2ADispatcher:SetEngageRadius( 200000 )
|
||||||
|
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Center, { "SQ CCCP SU-27" } )
|
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Center, { "SQ CCCP SU-27" } )
|
||||||
A2ADispatcher:SetSquadronGci( "Kras1", 900, 1200 )
|
A2ADispatcher:SetSquadronGci( "Kras1", 900, 1200 )
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "Kras2", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" } )
|
A2ADispatcher:SetSquadron( "Kras2", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" } )
|
||||||
A2ADispatcher:SetSquadronGci( "Kras2", 900, 1200 )
|
A2ADispatcher:SetSquadronGci( "Kras2", 900, 1200 )
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" } )
|
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" } )
|
||||||
A2ADispatcher:SetSquadronGci( "May", 900, 1200 )
|
A2ADispatcher:SetSquadronGci( "May", 900, 1200 )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||||
|
|
||||||
A2ADispatcher:Start()
|
A2ADispatcher:Start()
|
||||||
|
|
||||||
-- Blue attack simulation
|
-- Blue attack simulation
|
||||||
|
|
||||||
local Frequency = 300
|
local Frequency = 300
|
||||||
|
|
||||||
BlueSpawn2 = SPAWN
|
BlueSpawn2 = SPAWN
|
||||||
:New( "RT NATO 2" )
|
:New( "RT NATO 2" )
|
||||||
:InitLimit( 8, 40 )
|
:InitLimit( 8, 40 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
:InitDelayOn()
|
:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.5 )
|
:SpawnScheduled( Frequency, 0.5 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+54
-54
@@ -1,54 +1,54 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-030 - CAP RTB and ReEngage
|
-- Name: AID-A2A-030 - CAP RTB and ReEngage
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 30 May 2017
|
-- Date Created: 30 May 2017
|
||||||
|
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and 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()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
--Detection:BoundDetectedZones()
|
--Detection:BoundDetectedZones()
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
||||||
-- without an assignment within 100km radius from a detected target, will engage that target.
|
-- without an assignment within 100km radius from a detected target, will engage that target.
|
||||||
A2ADispatcher:SetEngageRadius( 200000 )
|
A2ADispatcher:SetEngageRadius( 200000 )
|
||||||
|
|
||||||
A2ADispatcher:SetDisengageRadius( 200000 )
|
A2ADispatcher:SetDisengageRadius( 200000 )
|
||||||
|
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" }, 20 )
|
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" }, 20 )
|
||||||
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( "Kras1", 800, 1200, 4000, 8000, CAPZoneWest, 600, 800, 4000, 8000, "BARO" )
|
A2ADispatcher:SetSquadronCap( "Kras1", 800, 1200, 4000, 8000, CAPZoneWest, 600, 800, 4000, 8000, "BARO" )
|
||||||
A2ADispatcher:SetSquadronCapInterval( "Kras1", 4, 30, 120, 1 )
|
A2ADispatcher:SetSquadronCapInterval( "Kras1", 4, 30, 120, 1 )
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" }, 20 )
|
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" }, 20 )
|
||||||
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:SetSquadronCapV2( "May", 800, 1200, 400, 500, "RADIO", CAPZoneWest, 600, 800, 4000, 8000, "BARO" )
|
A2ADispatcher:SetSquadronCapV2( "May", 800, 1200, 400, 500, "RADIO", CAPZoneWest, 600, 800, 4000, 8000, "BARO" )
|
||||||
A2ADispatcher:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
A2ADispatcher:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
||||||
|
|
||||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||||
|
|
||||||
-- Blue attack simulation
|
-- Blue attack simulation
|
||||||
|
|
||||||
local Frequency = 150
|
local Frequency = 150
|
||||||
|
|
||||||
BlueSpawn2 = SPAWN
|
BlueSpawn2 = SPAWN
|
||||||
:New( "RT NATO 2" )
|
:New( "RT NATO 2" )
|
||||||
:InitLimit( 6, 40 )
|
:InitLimit( 6, 40 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
:InitDelayOn()
|
:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.5 )
|
:SpawnScheduled( Frequency, 0.5 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+35
-35
@@ -1,35 +1,35 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-031 - CAP out of fuel
|
-- Name: AID-A2A-031 - CAP out of fuel
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 30 Aug 2017
|
-- Date Created: 30 Aug 2017
|
||||||
|
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and 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()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" }, 20 )
|
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" }, 20 )
|
||||||
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( "Kras1", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
A2ADispatcher:SetSquadronCap( "Kras1", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||||
A2ADispatcher:SetSquadronCapInterval( "Kras1", 1, 30, 120, 1 )
|
A2ADispatcher:SetSquadronCapInterval( "Kras1", 1, 30, 120, 1 )
|
||||||
|
|
||||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" }, 20 )
|
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" }, 20 )
|
||||||
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:SetSquadronCapV2( "May", 1000, 1200, 30, 30, "RADIO", CAPZoneWest, 600, 800, 4000, 8000, "BARO" )
|
A2ADispatcher:SetSquadronCapV2( "May", 1000, 1200, 30, 30, "RADIO", CAPZoneWest, 600, 800, 4000, 8000, "BARO" )
|
||||||
A2ADispatcher:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
A2ADispatcher:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
||||||
|
|
||||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+68
-68
@@ -1,68 +1,68 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-050 - Resources
|
-- Name: AID-A2A-050 - Resources
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 21 Sep 2017
|
-- Date Created: 21 Sep 2017
|
||||||
|
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and 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()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Enable the tactical display panel.
|
-- Enable the tactical display panel.
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
||||||
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
||||||
-- Any enemy crossing this border will be engaged.
|
-- Any enemy crossing this border will be engaged.
|
||||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
||||||
-- without an assignment within 100km radius from a detected target, will engage that target.
|
-- without an assignment within 100km radius from a detected target, will engage that target.
|
||||||
A2ADispatcher:SetEngageRadius( 250000 )
|
A2ADispatcher:SetEngageRadius( 250000 )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27" }, 6 )
|
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27" }, 6 )
|
||||||
|
|
||||||
-- Setup the overhead
|
-- Setup the overhead
|
||||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||||
|
|
||||||
-- Setup the Grouping
|
-- Setup the Grouping
|
||||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 1 )
|
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 1 )
|
||||||
|
|
||||||
-- Setup the Takeoff methods
|
-- Setup the Takeoff methods
|
||||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||||
|
|
||||||
-- Setup the Landing methods
|
-- Setup the Landing methods
|
||||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mineralnye" )
|
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mineralnye" )
|
||||||
|
|
||||||
|
|
||||||
-- Setup the visibility before start.
|
-- Setup the visibility before start.
|
||||||
A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||||
|
|
||||||
-- 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", 1, 30, 60, 1 )
|
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 1, 30, 60, 1 )
|
||||||
A2ADispatcher:SetSquadronFuelThreshold( "Mineralnye", 0.20 )
|
A2ADispatcher:SetSquadronFuelThreshold( "Mineralnye", 0.20 )
|
||||||
|
|
||||||
-- GCI Squadron execution.
|
-- GCI Squadron execution.
|
||||||
--A2ADispatcher:SetSquadronGci( "Mineralnye", 900, 1200 )
|
--A2ADispatcher:SetSquadronGci( "Mineralnye", 900, 1200 )
|
||||||
|
|
||||||
-- Blue attack simulation
|
-- Blue attack simulation
|
||||||
local Frequency = 60
|
local Frequency = 60
|
||||||
|
|
||||||
--BlueSpawn1 = SPAWN
|
--BlueSpawn1 = SPAWN
|
||||||
-- :New( "RT NATO 1" )
|
-- :New( "RT NATO 1" )
|
||||||
-- :InitLimit( 2, 10 )
|
-- :InitLimit( 2, 10 )
|
||||||
-- :InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
-- :InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
-- :InitRandomizeRoute( 0, 0, 30000 )
|
-- :InitRandomizeRoute( 0, 0, 30000 )
|
||||||
-- --:InitDelayOn()
|
-- --:InitDelayOn()
|
||||||
-- :SpawnScheduled( Frequency, 0.4 )
|
-- :SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|||||||
BIN
Binary file not shown.
+67
-67
@@ -1,67 +1,67 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-050 - Resources
|
-- Name: AID-A2A-050 - Resources
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 21 Sep 2017
|
-- Date Created: 21 Sep 2017
|
||||||
|
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and 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()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Enable the tactical display panel.
|
-- Enable the tactical display panel.
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
||||||
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
||||||
-- Any enemy crossing this border will be engaged.
|
-- Any enemy crossing this border will be engaged.
|
||||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
||||||
-- without an assignment within 100km radius from a detected target, will engage that target.
|
-- without an assignment within 100km radius from a detected target, will engage that target.
|
||||||
A2ADispatcher:SetEngageRadius( 250000 )
|
A2ADispatcher:SetEngageRadius( 250000 )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27" }, 30 )
|
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27" }, 30 )
|
||||||
|
|
||||||
-- Setup the overhead
|
-- Setup the overhead
|
||||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||||
|
|
||||||
-- Setup the Grouping
|
-- Setup the Grouping
|
||||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 1 )
|
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 1 )
|
||||||
|
|
||||||
-- Setup the Takeoff methods
|
-- Setup the Takeoff methods
|
||||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Air )
|
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Air )
|
||||||
|
|
||||||
-- Setup the Landing methods
|
-- Setup the Landing methods
|
||||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||||
|
|
||||||
|
|
||||||
-- 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 )
|
||||||
|
|
||||||
-- GCI Squadron execution.
|
-- GCI Squadron execution.
|
||||||
A2ADispatcher:SetSquadronGci( "Mineralnye", 900, 1200 )
|
A2ADispatcher:SetSquadronGci( "Mineralnye", 900, 1200 )
|
||||||
|
|
||||||
CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||||
|
|
||||||
|
|
||||||
-- Blue attack simulation
|
-- Blue attack simulation
|
||||||
local Frequency = 60
|
local Frequency = 60
|
||||||
|
|
||||||
BlueSpawn1 = SPAWN
|
BlueSpawn1 = SPAWN
|
||||||
:New( "RT NATO 1" )
|
:New( "RT NATO 1" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+128
-128
@@ -1,128 +1,128 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-100 - Demonstration
|
-- Name: AID-A2A-100 - Demonstration
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 30 May 2017
|
-- Date Created: 30 May 2017
|
||||||
|
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and 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()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Enable the tactical display panel.
|
-- Enable the tactical display panel.
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
||||||
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
||||||
-- Any enemy crossing this border will be engaged.
|
-- Any enemy crossing this border will be engaged.
|
||||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
||||||
-- without an assignment within 100km radius from a detected target, will engage that target.
|
-- without an assignment within 100km radius from a detected target, will engage that target.
|
||||||
A2ADispatcher:SetEngageRadius( 120000 )
|
A2ADispatcher:SetEngageRadius( 120000 )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD" }, 16 )
|
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD" }, 16 )
|
||||||
A2ADispatcher:SetSquadron( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
A2ADispatcher:SetSquadron( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||||
A2ADispatcher:SetSquadron( "Mozdok", AIRBASE.Caucasus.Mozdok, { "SQ CCCP MIG-31" }, 16 )
|
A2ADispatcher:SetSquadron( "Mozdok", AIRBASE.Caucasus.Mozdok, { "SQ CCCP MIG-31" }, 16 )
|
||||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD", "SQ CCCP SU-34", "SQ CCCP MIG-31", "SQ CCCP MIG-29S" }, 40 )
|
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD", "SQ CCCP SU-34", "SQ CCCP MIG-31", "SQ CCCP MIG-29S" }, 40 )
|
||||||
A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||||
|
|
||||||
-- Setup the overhead
|
-- Setup the overhead
|
||||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||||
|
|
||||||
-- Setup the Grouping
|
-- Setup the Grouping
|
||||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||||
|
|
||||||
-- Setup the Takeoff methods
|
-- Setup the Takeoff methods
|
||||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||||
|
|
||||||
-- Setup the Landing methods
|
-- Setup the Landing methods
|
||||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||||
|
|
||||||
|
|
||||||
-- 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", 6, 30, 60, 1 )
|
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 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 )
|
||||||
|
|
||||||
-- 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 )
|
||||||
|
|
||||||
-- Set the squadrons visible before startup.
|
-- Set the squadrons visible before startup.
|
||||||
A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||||
A2ADispatcher:SetSquadronVisible( "Sochi" )
|
A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||||
A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||||
A2ADispatcher:SetSquadronVisible( "Maykop" )
|
A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||||
|
|
||||||
|
|
||||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||||
|
|
||||||
|
|
||||||
-- Blue attack simulation
|
-- Blue attack simulation
|
||||||
local Frequency = 300
|
local Frequency = 300
|
||||||
|
|
||||||
BlueSpawn1 = SPAWN
|
BlueSpawn1 = SPAWN
|
||||||
:New( "RT NATO 1" )
|
:New( "RT NATO 1" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn2 = SPAWN
|
BlueSpawn2 = SPAWN
|
||||||
:New( "RT NATO 2" )
|
:New( "RT NATO 2" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn3 = SPAWN
|
BlueSpawn3 = SPAWN
|
||||||
:New( "RT NATO 3" )
|
:New( "RT NATO 3" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn4 = SPAWN
|
BlueSpawn4 = SPAWN
|
||||||
:New( "RT NATO 4" )
|
:New( "RT NATO 4" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+131
-131
@@ -1,131 +1,131 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-100 - Demonstration
|
-- Name: AID-A2A-100 - Demonstration
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 30 May 2017
|
-- Date Created: 30 May 2017
|
||||||
|
|
||||||
|
|
||||||
local CommandCenter = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "HQ" )
|
local CommandCenter = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "HQ" )
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the EWR network.
|
||||||
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and DF CCCP EWR.
|
-- Here we build the network with all the groups that have a name starting with DF CCCP AWACS and 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()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||||
A2ADispatcher:SetCommandCenter(CommandCenter)
|
A2ADispatcher:SetCommandCenter(CommandCenter)
|
||||||
|
|
||||||
-- Enable the tactical display panel.
|
-- Enable the tactical display panel.
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
||||||
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
||||||
-- Any enemy crossing this border will be engaged.
|
-- Any enemy crossing this border will be engaged.
|
||||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
-- Initialize the dispatcher, setting up a radius of 100km where any airborne friendly
|
||||||
-- without an assignment within 100km radius from a detected target, will engage that target.
|
-- without an assignment within 100km radius from a detected target, will engage that target.
|
||||||
A2ADispatcher:SetEngageRadius( 120000 )
|
A2ADispatcher:SetEngageRadius( 120000 )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD" }, 16 )
|
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD" }, 16 )
|
||||||
A2ADispatcher:SetSquadron( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
A2ADispatcher:SetSquadron( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||||
A2ADispatcher:SetSquadron( "Mozdok", AIRBASE.Caucasus.Mozdok, { "SQ CCCP MIG-31" }, 16 )
|
A2ADispatcher:SetSquadron( "Mozdok", AIRBASE.Caucasus.Mozdok, { "SQ CCCP MIG-31" }, 16 )
|
||||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD", "SQ CCCP SU-34", "SQ CCCP MIG-31", "SQ CCCP MIG-29S" }, 40 )
|
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27", "SQ CCCP SU-33", "SQ CCCP MIG-23MLD", "SQ CCCP MIG-25PD", "SQ CCCP SU-34", "SQ CCCP MIG-31", "SQ CCCP MIG-29S" }, 40 )
|
||||||
A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||||
|
|
||||||
-- Setup the overhead
|
-- Setup the overhead
|
||||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||||
|
|
||||||
-- Setup the Grouping
|
-- Setup the Grouping
|
||||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||||
|
|
||||||
-- Setup the Takeoff methods
|
-- Setup the Takeoff methods
|
||||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||||
|
|
||||||
-- Setup the Landing methods
|
-- Setup the Landing methods
|
||||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||||
|
|
||||||
|
|
||||||
-- 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", 6, 30, 60, 1 )
|
--A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 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 )
|
||||||
|
|
||||||
-- 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 )
|
||||||
|
|
||||||
-- Set the squadrons visible before startup.
|
-- Set the squadrons visible before startup.
|
||||||
--A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
--A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Sochi" )
|
--A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
--A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Maykop" )
|
--A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||||
|
|
||||||
|
|
||||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||||
|
|
||||||
|
|
||||||
-- Blue attack simulation
|
-- Blue attack simulation
|
||||||
local Frequency = 300
|
local Frequency = 300
|
||||||
|
|
||||||
BlueSpawn1 = SPAWN
|
BlueSpawn1 = SPAWN
|
||||||
:New( "RT NATO 1" )
|
:New( "RT NATO 1" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn2 = SPAWN
|
BlueSpawn2 = SPAWN
|
||||||
:New( "RT NATO 2" )
|
:New( "RT NATO 2" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn3 = SPAWN
|
BlueSpawn3 = SPAWN
|
||||||
:New( "RT NATO 3" )
|
:New( "RT NATO 3" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn4 = SPAWN
|
BlueSpawn4 = SPAWN
|
||||||
:New( "RT NATO 4" )
|
:New( "RT NATO 4" )
|
||||||
:InitLimit( 2, 10 )
|
:InitLimit( 2, 10 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+75
-75
@@ -1,75 +1,75 @@
|
|||||||
---
|
---
|
||||||
-- Name: AID-A2A-200 - GCICAP Demonstration
|
-- Name: AID-A2A-200 - GCICAP Demonstration
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 05 July 2017
|
-- Date Created: 05 July 2017
|
||||||
|
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2ADispatcher = AI_A2A_GCICAP:New( { "DF CCCP" }, { "SQ CCCP" }, { "CAP Zone" }, 2 )
|
A2ADispatcher = AI_A2A_GCICAP:New( { "DF CCCP" }, { "SQ CCCP" }, { "CAP Zone" }, 2 )
|
||||||
|
|
||||||
-- Enable the tactical display panel.
|
-- Enable the tactical display panel.
|
||||||
A2ADispatcher:SetTacticalDisplay( true )
|
A2ADispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
-- Initialize the dispatcher, setting up a border zone. This is a polygon,
|
||||||
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
-- which takes the waypoints of a late activated group with the name CCCP Border as the boundaries of the border area.
|
||||||
-- Any enemy crossing this border will be engaged.
|
-- Any enemy crossing this border will be engaged.
|
||||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
A2ADispatcher:SetDefaultTakeoffFromParkingCold()
|
A2ADispatcher:SetDefaultTakeoffFromParkingCold()
|
||||||
A2ADispatcher:SetDefaultLandingAtEngineShutdown()
|
A2ADispatcher:SetDefaultLandingAtEngineShutdown()
|
||||||
A2ADispatcher:SetDefaultFuelThreshold( 0.20 )
|
A2ADispatcher:SetDefaultFuelThreshold( 0.20 )
|
||||||
A2ADispatcher:SetIntercept( 100 )
|
A2ADispatcher:SetIntercept( 100 )
|
||||||
A2ADispatcher:SetDisengageRadius( 100000 )
|
A2ADispatcher:SetDisengageRadius( 100000 )
|
||||||
A2ADispatcher:SetEngageRadius( 50000 )
|
A2ADispatcher:SetEngageRadius( 50000 )
|
||||||
A2ADispatcher:SetGciRadius( 100000 )
|
A2ADispatcher:SetGciRadius( 100000 )
|
||||||
|
|
||||||
A2ADispatcher:Start()
|
A2ADispatcher:Start()
|
||||||
|
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Blue attack simulation
|
-- Blue attack simulation
|
||||||
local Frequency = 600
|
local Frequency = 600
|
||||||
|
|
||||||
BlueSpawn1 = SPAWN
|
BlueSpawn1 = SPAWN
|
||||||
:New( "RT NATO 1" )
|
:New( "RT NATO 1" )
|
||||||
:InitLimit( 2, 3 )
|
:InitLimit( 2, 3 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn2 = SPAWN
|
BlueSpawn2 = SPAWN
|
||||||
:New( "RT NATO 2" )
|
:New( "RT NATO 2" )
|
||||||
:InitLimit( 2, 3 )
|
:InitLimit( 2, 3 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn3 = SPAWN
|
BlueSpawn3 = SPAWN
|
||||||
:New( "RT NATO 3" )
|
:New( "RT NATO 3" )
|
||||||
:InitLimit( 2, 3 )
|
:InitLimit( 2, 3 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
BlueSpawn4 = SPAWN
|
BlueSpawn4 = SPAWN
|
||||||
:New( "RT NATO 4" )
|
:New( "RT NATO 4" )
|
||||||
:InitLimit( 2, 3 )
|
:InitLimit( 2, 3 )
|
||||||
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
:InitRandomizeTemplate( { "SQ NATO A-10C", "SQ NATO F-15C", "SQ NATO F-16A", "SQ NATO F/A-18", "SQ NATO F-16C" } )
|
||||||
:InitRandomizeRoute( 0, 0, 30000 )
|
:InitRandomizeRoute( 0, 0, 30000 )
|
||||||
--:InitDelayOn()
|
--:InitDelayOn()
|
||||||
:SpawnScheduled( Frequency, 0.4 )
|
:SpawnScheduled( Frequency, 0.4 )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+56
-56
@@ -1,56 +1,56 @@
|
|||||||
--- Detect and attack a set of enemy units.
|
--- Detect and attack a set of enemy units.
|
||||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 02 Nov 2018
|
-- Date Created: 02 Nov 2018
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
local DetectionSetGroup = SET_GROUP:New()
|
local DetectionSetGroup = SET_GROUP:New()
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 5000 )
|
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 5000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- The Command Center (HQ) is the defense point and will also handle the communication to the coalition.
|
-- The Command Center (HQ) is the defense point and will also handle the communication to the coalition.
|
||||||
local HQ_Group = GROUP:FindByName( "HQ" )
|
local HQ_Group = GROUP:FindByName( "HQ" )
|
||||||
local HQ_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
local HQ_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
||||||
|
|
||||||
-- The HQ is the defense point, so this point will be defended.
|
-- The HQ is the defense point, so this point will be defended.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", HQ_Group:GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", HQ_Group:GetCoordinate() )
|
||||||
A2GDispatcher:SetDefenseReactivityHigh() -- High defense reactivity. So far proximity of a threat will trigger a defense action.
|
A2GDispatcher:SetDefenseReactivityHigh() -- High defense reactivity. So far proximity of a threat will trigger a defense action.
|
||||||
A2GDispatcher:SetDefenseRadius( 200000 ) -- Defense radius wide enough to also trigger defenses far away.
|
A2GDispatcher:SetDefenseRadius( 200000 ) -- Defense radius wide enough to also trigger defenses far away.
|
||||||
|
|
||||||
-- Communication to the players within the coalition. The HQ services the communication of the defense actions.
|
-- Communication to the players within the coalition. The HQ services the communication of the defense actions.
|
||||||
A2GDispatcher:SetCommandCenter( HQ_CC )
|
A2GDispatcher:SetCommandCenter( HQ_CC )
|
||||||
|
|
||||||
-- Show a tactical display.
|
-- Show a tactical display.
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronCas2( "Maykop CAS", 200, 250, 300, 500, "RADIO" )
|
A2GDispatcher:SetSquadronCas2( "Maykop CAS", 200, 250, 300, 500, "RADIO" )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP MIL-8MTV" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronBai2( "Maykop BAI", 200, 250, 300, 500, "RADIO" )
|
A2GDispatcher:SetSquadronBai2( "Maykop BAI", 200, 250, 300, 500, "RADIO" )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Krasnodar", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "CCCP SU-25TM" }, 10 )
|
A2GDispatcher:SetSquadron( "Krasnodar", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "CCCP SU-25TM" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSead2( "Krasnodar", 600, 800, 2000, 2000, "RADIO" )
|
A2GDispatcher:SetSquadronSead2( "Krasnodar", 600, 800, 2000, 2000, "RADIO" )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Krasnodar" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Krasnodar" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Krasnodar", 0.2 )
|
A2GDispatcher:SetSquadronOverhead( "Krasnodar", 0.2 )
|
||||||
|
|
||||||
|
|
||||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||||
-- This to prevent helicopters to clutter.
|
-- This to prevent helicopters to clutter.
|
||||||
-- Each helicopter group is taking off the FARP in hot start.
|
-- Each helicopter group is taking off the FARP in hot start.
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Krasnodar", 10 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Krasnodar", 10 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||||
|
|||||||
BIN
Binary file not shown.
+66
-66
@@ -1,66 +1,66 @@
|
|||||||
--- Detect and attack a set of enemy units using helicopters.
|
--- Detect and attack a set of enemy units using helicopters.
|
||||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 02 Nov 2018
|
-- Date Created: 02 Nov 2018
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
local DetectionSetGroup = SET_GROUP:New()
|
local DetectionSetGroup = SET_GROUP:New()
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- The Command Center (HQ) is the defense point and will also handle the communication to the coalition.
|
-- The Command Center (HQ) is the defense point and will also handle the communication to the coalition.
|
||||||
local HQ_Group = GROUP:FindByName( "HQ" )
|
local HQ_Group = GROUP:FindByName( "HQ" )
|
||||||
local HQ_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
local HQ_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", HQ_Group:GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", HQ_Group:GetCoordinate() )
|
||||||
A2GDispatcher:SetDefenseReactivityHigh() -- High defense reactivity. So far proximity of a threat will trigger a defense action.
|
A2GDispatcher:SetDefenseReactivityHigh() -- High defense reactivity. So far proximity of a threat will trigger a defense action.
|
||||||
A2GDispatcher:SetDefenseRadius( 200000 ) -- Defense radius wide enough to also trigger defenses far away.
|
A2GDispatcher:SetDefenseRadius( 200000 ) -- Defense radius wide enough to also trigger defenses far away.
|
||||||
|
|
||||||
-- Communication to the players within the coalition. The HQ services the communication of the defense actions.
|
-- Communication to the players within the coalition. The HQ services the communication of the defense actions.
|
||||||
A2GDispatcher:SetCommandCenter( HQ_CC )
|
A2GDispatcher:SetCommandCenter( HQ_CC )
|
||||||
|
|
||||||
-- Show a tactical display.
|
-- Show a tactical display.
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
|
|
||||||
-- Setup the patrols.
|
-- Setup the patrols.
|
||||||
|
|
||||||
-- The patrol zone.
|
-- The patrol zone.
|
||||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||||
|
|
||||||
|
|
||||||
-- SEADing from Krasnodar.
|
-- SEADing from Krasnodar.
|
||||||
A2GDispatcher:SetSquadron( "Krasnodar", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "CCCP SU-25TM" }, 10 )
|
A2GDispatcher:SetSquadron( "Krasnodar", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "CCCP SU-25TM" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSeadPatrol2( "Krasnodar", PatrolZone, 500, 550, 2000, 2000, "BARO", 750, 800, 30, 30, "RADIO" ) -- New API
|
A2GDispatcher:SetSquadronSeadPatrol2( "Krasnodar", PatrolZone, 500, 550, 2000, 2000, "BARO", 750, 800, 30, 30, "RADIO" ) -- New API
|
||||||
A2GDispatcher:SetSquadronSeadPatrolInterval( "Krasnodar", 2, 30, 60, 1 )
|
A2GDispatcher:SetSquadronSeadPatrolInterval( "Krasnodar", 2, 30, 60, 1 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Krasnodar" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Krasnodar" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Krasnodar", 0.2 )
|
A2GDispatcher:SetSquadronOverhead( "Krasnodar", 0.2 )
|
||||||
|
|
||||||
|
|
||||||
-- Close Air Support from the CAS farp.
|
-- Close Air Support from the CAS farp.
|
||||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronCasPatrol2( "Maykop CAS", PatrolZone, 50, 80, 600, 700, "BARO", 200, 230, 30, 30, "RADIO" ) -- New API
|
A2GDispatcher:SetSquadronCasPatrol2( "Maykop CAS", PatrolZone, 50, 80, 600, 700, "BARO", 200, 230, 30, 30, "RADIO" ) -- New API
|
||||||
A2GDispatcher:SetSquadronCasPatrolInterval( "Maykop CAS", 2, 30, 60, 1 )
|
A2GDispatcher:SetSquadronCasPatrolInterval( "Maykop CAS", 2, 30, 60, 1 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||||
|
|
||||||
-- Battlefield Air Interdiction from the BAI farp.
|
-- Battlefield Air Interdiction from the BAI farp.
|
||||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP MIL-8MTV" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP MIL-8MTV" }, 10 )
|
||||||
A2GDispatcher:SetSquadronBaiPatrol2( "Maykop BAI", PatrolZone, 50, 80, 600, 700, "BARO", 200, 230, 800, 900, "RADIO" ) -- New API
|
A2GDispatcher:SetSquadronBaiPatrol2( "Maykop BAI", PatrolZone, 50, 80, 600, 700, "BARO", 200, 230, 800, 900, "RADIO" ) -- New API
|
||||||
A2GDispatcher:SetSquadronBaiPatrolInterval( "Maykop BAI", 5, 30, 60, 1 )
|
A2GDispatcher:SetSquadronBaiPatrolInterval( "Maykop BAI", 5, 30, 60, 1 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.75 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.75 )
|
||||||
|
|
||||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||||
-- This to prevent helicopters to clutter.
|
-- This to prevent helicopters to clutter.
|
||||||
-- Each helicopter group is taking off the FARP in hot start.
|
-- Each helicopter group is taking off the FARP in hot start.
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Krasnodar", 10 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Krasnodar", 10 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||||
|
|||||||
BIN
Binary file not shown.
+48
-48
@@ -1,48 +1,48 @@
|
|||||||
--- Detect and attack a set of enemy units using helicopters.
|
--- Detect and attack a set of enemy units using helicopters.
|
||||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 02 Nov 2018
|
-- Date Created: 02 Nov 2018
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New()
|
DetectionSetGroup = SET_GROUP:New()
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 5000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 5000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseReactivityHigh()
|
A2GDispatcher:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseRadius( 200000 )
|
A2GDispatcher:SetDefenseRadius( 200000 )
|
||||||
|
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 120, 250 )
|
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 120, 250 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronCas( "Maykop CAS", 120, 250 )
|
A2GDispatcher:SetSquadronCas( "Maykop CAS", 120, 250 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronBai( "Maykop BAI", 120, 250 )
|
A2GDispatcher:SetSquadronBai( "Maykop BAI", 120, 250 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||||
|
|
||||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||||
-- This to prevent helicopters to clutter.
|
-- This to prevent helicopters to clutter.
|
||||||
-- Each helicopter group is taking off the FARP in hot start.
|
-- Each helicopter group is taking off the FARP in hot start.
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||||
|
|||||||
BIN
Binary file not shown.
+51
-51
@@ -1,52 +1,52 @@
|
|||||||
--- Detect and attack a set of enemy units using helicopters.
|
--- Detect and attack a set of enemy units using helicopters.
|
||||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 02 Nov 2018
|
-- Date Created: 02 Nov 2018
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New()
|
DetectionSetGroup = SET_GROUP:New()
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseReactivityHigh()
|
A2GDispatcher:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||||
|
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2GDispatcher:SetSquadron( "Maykop SEAD", "SEAD", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop SEAD", "SEAD", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 300, 500, 50, 80, 250, 300 )
|
A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 300, 500, 50, 80, 250, 300 )
|
||||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop SEAD", 2, 30, 60, 1, "SEAD" )
|
A2GDispatcher:SetSquadronPatrolInterval( "Maykop SEAD", 2, 30, 60, 1, "SEAD" )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronCasPatrol( "Maykop CAS", PatrolZone, 600, 700, 50, 80, 250, 300 )
|
A2GDispatcher:SetSquadronCasPatrol( "Maykop CAS", PatrolZone, 600, 700, 50, 80, 250, 300 )
|
||||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop CAS", 2, 30, 60, 1, "CAS" )
|
A2GDispatcher:SetSquadronPatrolInterval( "Maykop CAS", 2, 30, 60, 1, "CAS" )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronBaiPatrol( "Maykop BAI", PatrolZone, 800, 900, 50, 80, 250, 300 )
|
A2GDispatcher:SetSquadronBaiPatrol( "Maykop BAI", PatrolZone, 800, 900, 50, 80, 250, 300 )
|
||||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop BAI", 2, 30, 60, 1, "BAI" )
|
A2GDispatcher:SetSquadronPatrolInterval( "Maykop BAI", 2, 30, 60, 1, "BAI" )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||||
|
|
||||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||||
-- This to prevent helicopters to clutter.
|
-- This to prevent helicopters to clutter.
|
||||||
-- Each helicopter group is taking off the FARP in hot start.
|
-- Each helicopter group is taking off the FARP in hot start.
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+52
-52
@@ -1,52 +1,52 @@
|
|||||||
--- Detect and attack a set of enemy units using helicopters.
|
--- Detect and attack a set of enemy units using helicopters.
|
||||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 02 Nov 2018
|
-- Date Created: 02 Nov 2018
|
||||||
|
|
||||||
|
|
||||||
CC = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "HQ" )
|
CC = COMMANDCENTER:New( GROUP:FindByName("HQ"),"HQ")
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New()
|
DetectionSetGroup = SET_GROUP:New()
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
A2GDispatcher:SetCommandCenter( CC )
|
A2GDispatcher:SetCommandCenter( CC )
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseReactivityHigh()
|
A2GDispatcher:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseRadius( 200000 )
|
A2GDispatcher:SetDefenseRadius( 200000 )
|
||||||
|
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 120, 250 )
|
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 120, 250 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronCas( "Maykop CAS", 120, 250 )
|
A2GDispatcher:SetSquadronCas( "Maykop CAS", 120, 250 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||||
|
|
||||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||||
A2GDispatcher:SetSquadronBai( "Maykop BAI", 120, 250 )
|
A2GDispatcher:SetSquadronBai( "Maykop BAI", 120, 250 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||||
|
|
||||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||||
-- This to prevent helicopters to clutter.
|
-- This to prevent helicopters to clutter.
|
||||||
-- Each helicopter group is taking off the FARP in hot start.
|
-- Each helicopter group is taking off the FARP in hot start.
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+50
-50
@@ -1,50 +1,50 @@
|
|||||||
--- Test the defense radius.
|
--- Test the defense radius.
|
||||||
-- Defenses should pickup targets within the defense radius, but not outside of it!
|
-- Defenses should pickup targets within the defense radius, but not outside of it!
|
||||||
-- Defenses should engage targets closer to the HQ with higher probability than targets at longer distance from the HQ.
|
-- Defenses should engage targets closer to the HQ with higher probability than targets at longer distance from the HQ.
|
||||||
-- The tests are with SEAD only.
|
-- The tests are with SEAD only.
|
||||||
-- Name: AID-A2G-003 - DefenseRadius
|
-- Name: AID-A2G-003 - DefenseRadius
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 11 Nov 2018
|
-- Date Created: 11 Nov 2018
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
||||||
|
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
||||||
|
|
||||||
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
||||||
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
-- This command defines the reconnaissance network.
|
-- This command defines the reconnaissance network.
|
||||||
-- It will group any detected ground enemy targets within a radius of 1km.
|
-- It will group any detected ground enemy targets within a radius of 1km.
|
||||||
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseReactivityHigh()
|
A2GDispatcher:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||||
|
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||||
|
|
||||||
-- Setup the SEAD squadrons.
|
-- Setup the SEAD squadrons.
|
||||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||||
A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 1, 30, 60, 1 )
|
A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 1, 30, 60, 1 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop SEAD" )
|
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop SEAD" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||||
|
|
||||||
-- Setup the CAS squadrons.
|
-- Setup the CAS squadrons.
|
||||||
A2GDispatcher:SetSquadron( "Maykop CAS", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T CAS" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop CAS", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T CAS" }, 10 )
|
||||||
A2GDispatcher:SetSquadronCasPatrol( "Maykop CAS", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
A2GDispatcher:SetSquadronCasPatrol( "Maykop CAS", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||||
A2GDispatcher:SetSquadronCasPatrolInterval( "Maykop CAS", 1, 30, 60, 1 )
|
A2GDispatcher:SetSquadronCasPatrolInterval( "Maykop CAS", 1, 30, 60, 1 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop CAS" )
|
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop CAS" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||||
|
|||||||
BIN
Binary file not shown.
+45
-45
@@ -1,45 +1,45 @@
|
|||||||
--- Test the default engage limit.
|
--- Test the default engage limit.
|
||||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 15 Nov 2018
|
-- Date Created: 15 Nov 2018
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
||||||
|
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
||||||
|
|
||||||
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
||||||
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
-- This command defines the reconnaissance network.
|
-- This command defines the reconnaissance network.
|
||||||
-- It will group any detected ground enemy targets within a radius of 1km.
|
-- It will group any detected ground enemy targets within a radius of 1km.
|
||||||
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseReactivityHigh()
|
A2GDispatcher:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||||
|
|
||||||
-- This is the test, not more than 4 defenses in total should engage!
|
-- This is the test, not more than 4 defenses in total should engage!
|
||||||
A2GDispatcher:SetDefaultEngageLimit( 6 )
|
A2GDispatcher:SetDefaultEngageLimit( 6 )
|
||||||
|
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop SEAD" )
|
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop SEAD" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||||
|
|||||||
BIN
Binary file not shown.
+80
-80
@@ -1,80 +1,80 @@
|
|||||||
--- Test the communication system to other players.
|
--- Test the communication system to other players.
|
||||||
-- A command center will facilitate the A2G defenses communication to the players, who reporting to the same command center.
|
-- A command center will facilitate the A2G defenses communication to the players, who reporting to the same command center.
|
||||||
-- The task system needs to be used to have this reporting facilitated.
|
-- The task system needs to be used to have this reporting facilitated.
|
||||||
-- Name: AID-A2G-190 - Communication
|
-- Name: AID-A2G-190 - Communication
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 11 Jan 2019
|
-- Date Created: 11 Jan 2019
|
||||||
|
|
||||||
-- Define a command center that will communicate with the players.
|
-- Define a command center that will communicate with the players.
|
||||||
CC_Red = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "Command" )
|
CC_Red = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "Command" )
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
||||||
|
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
||||||
|
|
||||||
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
||||||
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
-- This command defines the reconnaissance network.
|
-- This command defines the reconnaissance network.
|
||||||
-- It will group any detected ground enemy targets within a radius of 1km.
|
-- It will group any detected ground enemy targets within a radius of 1km.
|
||||||
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
||||||
Detection_Red = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
Detection_Red = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
AI_A2G_Dispatcher_Red = AI_A2G_DISPATCHER:New( Detection_Red )
|
AI_A2G_Dispatcher_Red = AI_A2G_DISPATCHER:New( Detection_Red )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
AI_A2G_Dispatcher_Red:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
AI_A2G_Dispatcher_Red:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
AI_A2G_Dispatcher_Red:SetDefenseReactivityHigh()
|
AI_A2G_Dispatcher_Red:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
AI_A2G_Dispatcher_Red:SetDefenseRadius( 100000 )
|
AI_A2G_Dispatcher_Red:SetDefenseRadius( 100000 )
|
||||||
|
|
||||||
-- This is the test, not more than 4 defenses in total should engage!
|
-- This is the test, not more than 4 defenses in total should engage!
|
||||||
AI_A2G_Dispatcher_Red:SetDefaultEngageLimit( 6 )
|
AI_A2G_Dispatcher_Red:SetDefaultEngageLimit( 6 )
|
||||||
|
|
||||||
AI_A2G_Dispatcher_Red:SetTacticalDisplay( true )
|
AI_A2G_Dispatcher_Red:SetTacticalDisplay( true )
|
||||||
|
|
||||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
-- SEAD
|
-- SEAD
|
||||||
AI_A2G_Dispatcher_Red:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP AI SU-25T SEAD #001", "CCCP AI SU-25T SEAD #002", "CCCP AI SU-25T SEAD #003" }, 10 )
|
AI_A2G_Dispatcher_Red:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP AI SU-25T SEAD #001", "CCCP AI SU-25T SEAD #002", "CCCP AI SU-25T SEAD #003" }, 10 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronSead( "Maykop SEAD", 600, 800 )
|
AI_A2G_Dispatcher_Red:SetSquadronSead( "Maykop SEAD", 600, 800 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
AI_A2G_Dispatcher_Red:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||||
|
|
||||||
-- CAS
|
-- CAS
|
||||||
AI_A2G_Dispatcher_Red:SetSquadron( "Maykop CAS", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP AI SU-25T CAS" }, 10 )
|
AI_A2G_Dispatcher_Red:SetSquadron( "Maykop CAS", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP AI SU-25T CAS" }, 10 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronCas( "Maykop CAS", 600, 800 )
|
AI_A2G_Dispatcher_Red:SetSquadronCas( "Maykop CAS", 600, 800 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
AI_A2G_Dispatcher_Red:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||||
|
|
||||||
-- BAI
|
-- BAI
|
||||||
AI_A2G_Dispatcher_Red:SetSquadron( "Maykop BAI", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP AI SU-25T BAI" }, 10 )
|
AI_A2G_Dispatcher_Red:SetSquadron( "Maykop BAI", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP AI SU-25T BAI" }, 10 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronBai( "Maykop BAI", 600, 800 )
|
AI_A2G_Dispatcher_Red:SetSquadronBai( "Maykop BAI", 600, 800 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
AI_A2G_Dispatcher_Red:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Now we setup the TASK A2G dispatcher, that will use the same detection system, as the AI A2G dispatcher!
|
-- Now we setup the TASK A2G dispatcher, that will use the same detection system, as the AI A2G dispatcher!
|
||||||
Mission_Red = MISSION:New( CC_Red, "Comms Demo", "Example", "This mission demonstrates the communications between the AI A2G dispatcher and the TASK A2G dispatcher to the involved players.", coalition.side.RED )
|
Mission_Red = MISSION:New( CC_Red, "Comms Demo", "Example", "This mission demonstrates the communications between the AI A2G dispatcher and the TASK A2G dispatcher to the involved players.", coalition.side.RED )
|
||||||
Players_Red = SET_GROUP:New():FilterPrefixes( "CCCP Player" ):FilterStart()
|
Players_Red = SET_GROUP:New():FilterPrefixes( "CCCP Player" ):FilterStart()
|
||||||
Task_A2G_Dispatcher_Red = TASK_A2G_DISPATCHER:New( Mission_Red, Players_Red, Detection_Red )
|
Task_A2G_Dispatcher_Red = TASK_A2G_DISPATCHER:New( Mission_Red, Players_Red, Detection_Red )
|
||||||
Task_A2G_Dispatcher_Red:Start()
|
Task_A2G_Dispatcher_Red:Start()
|
||||||
|
|
||||||
-- Here we set the command center, which will faciliate the communication to the Players_Red, using the same Detection_Red.
|
-- Here we set the command center, which will faciliate the communication to the Players_Red, using the same Detection_Red.
|
||||||
AI_A2G_Dispatcher_Red:SetCommandCenter( CC_Red )
|
AI_A2G_Dispatcher_Red:SetCommandCenter( CC_Red )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+63
-63
@@ -1,63 +1,63 @@
|
|||||||
--- Test the communication system to other players.
|
--- Test the communication system to other players.
|
||||||
-- A command center will facilitate the A2G defenses communication to the players, who reporting to the same command center.
|
-- A command center will facilitate the A2G defenses communication to the players, who reporting to the same command center.
|
||||||
-- The task system needs to be used to have this reporting facilitated.
|
-- The task system needs to be used to have this reporting facilitated.
|
||||||
--
|
--
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 20 Jan 2019
|
-- Date Created: 20 Jan 2019
|
||||||
|
|
||||||
-- Define a command center that will communicate with the players.
|
-- Define a command center that will communicate with the players.
|
||||||
CC_Red = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "Command" )
|
CC_Red = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "Command" )
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
||||||
|
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
||||||
|
|
||||||
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
||||||
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
-- This command defines the reconnaissance network.
|
-- This command defines the reconnaissance network.
|
||||||
-- It will group any detected ground enemy targets within a radius of 1km.
|
-- It will group any detected ground enemy targets within a radius of 1km.
|
||||||
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
||||||
Detection_Red = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
Detection_Red = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
AI_A2G_Dispatcher_Red = AI_A2G_DISPATCHER:New( Detection_Red )
|
AI_A2G_Dispatcher_Red = AI_A2G_DISPATCHER:New( Detection_Red )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
AI_A2G_Dispatcher_Red:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
AI_A2G_Dispatcher_Red:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
AI_A2G_Dispatcher_Red:SetDefenseReactivityHigh()
|
AI_A2G_Dispatcher_Red:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
AI_A2G_Dispatcher_Red:SetDefenseRadius( 100000 )
|
AI_A2G_Dispatcher_Red:SetDefenseRadius( 100000 )
|
||||||
|
|
||||||
-- This is the test, not more than 4 defenses in total should engage!
|
-- This is the test, not more than 4 defenses in total should engage!
|
||||||
AI_A2G_Dispatcher_Red:SetDefaultEngageLimit( 6 )
|
AI_A2G_Dispatcher_Red:SetDefaultEngageLimit( 6 )
|
||||||
|
|
||||||
AI_A2G_Dispatcher_Red:SetTacticalDisplay( true )
|
AI_A2G_Dispatcher_Red:SetTacticalDisplay( true )
|
||||||
|
|
||||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
|
|
||||||
-- SEAD
|
-- SEAD
|
||||||
AI_A2G_Dispatcher_Red:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP AI SU-25T SEAD #001", "CCCP AI SU-25T SEAD #002", "CCCP AI SU-25T SEAD #003" }, 10 )
|
AI_A2G_Dispatcher_Red:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP AI SU-25T SEAD #001", "CCCP AI SU-25T SEAD #002", "CCCP AI SU-25T SEAD #003" }, 10 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronSead( "Maykop SEAD", 600, 800 )
|
AI_A2G_Dispatcher_Red:SetSquadronSead( "Maykop SEAD", 600, 800 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||||
|
|
||||||
|
|
||||||
-- Now we setup the TASK A2G dispatcher, that will use the same detection system, as the AI A2G dispatcher!
|
-- Now we setup the TASK A2G dispatcher, that will use the same detection system, as the AI A2G dispatcher!
|
||||||
Mission_Red = MISSION:New( CC_Red, "Comms Demo", "Example", "This mission demonstrates the communications between the AI A2G dispatcher and the TASK A2G dispatcher to the involved players.", coalition.side.RED )
|
Mission_Red = MISSION:New( CC_Red, "Comms Demo", "Example", "This mission demonstrates the communications between the AI A2G dispatcher and the TASK A2G dispatcher to the involved players.", coalition.side.RED )
|
||||||
Players_Red = SET_GROUP:New():FilterPrefixes( "CCCP Player" ):FilterStart()
|
Players_Red = SET_GROUP:New():FilterPrefixes( "CCCP Player" ):FilterStart()
|
||||||
Task_A2G_Dispatcher_Red = TASK_A2G_DISPATCHER:New( Mission_Red, Players_Red, Detection_Red )
|
Task_A2G_Dispatcher_Red = TASK_A2G_DISPATCHER:New( Mission_Red, Players_Red, Detection_Red )
|
||||||
Task_A2G_Dispatcher_Red:Start()
|
Task_A2G_Dispatcher_Red:Start()
|
||||||
|
|
||||||
-- Here we set the command center, which will faciliate the communication to the Players_Red, using the same Detection_Red.
|
-- Here we set the command center, which will faciliate the communication to the Players_Red, using the same Detection_Red.
|
||||||
AI_A2G_Dispatcher_Red:SetCommandCenter( CC_Red )
|
AI_A2G_Dispatcher_Red:SetCommandCenter( CC_Red )
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+42
-42
@@ -1,42 +1,42 @@
|
|||||||
--- Test the default engage limit.
|
--- Test the default engage limit.
|
||||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 15 Nov 2018
|
-- Date Created: 15 Nov 2018
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
||||||
|
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
||||||
|
|
||||||
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
||||||
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
-- This command defines the reconnaissance network.
|
-- This command defines the reconnaissance network.
|
||||||
-- It will group any detected ground enemy targets within a radius of 1km.
|
-- It will group any detected ground enemy targets within a radius of 1km.
|
||||||
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseReactivityHigh()
|
A2GDispatcher:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||||
|
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingCold( "Maykop SEAD" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingCold( "Maykop SEAD" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||||
|
|||||||
BIN
Binary file not shown.
+42
-42
@@ -1,42 +1,42 @@
|
|||||||
--- Test the default engage limit.
|
--- Test the default engage limit.
|
||||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||||
-- Author: FlightControl
|
-- Author: FlightControl
|
||||||
-- Date Created: 15 Nov 2018
|
-- Date Created: 15 Nov 2018
|
||||||
|
|
||||||
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
-- Define a SET_GROUP object that builds a collection of groups that define the recce network.
|
||||||
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
-- Here we build the network with all the groups that have a name starting with CCCP Recce.
|
||||||
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
DetectionSetGroup = SET_GROUP:New() -- Defene a set of group objects, caled DetectionSetGroup.
|
||||||
|
|
||||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } ) -- The DetectionSetGroup will search for groups that start with the name "CCCP Recce".
|
||||||
|
|
||||||
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
-- This command will start the dynamic filtering, so when groups spawn in or are destroyed,
|
||||||
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
-- which have a group name starting with "CCCP Recce", then these will be automatically added or removed from the set.
|
||||||
DetectionSetGroup:FilterStart()
|
DetectionSetGroup:FilterStart()
|
||||||
|
|
||||||
-- This command defines the reconnaissance network.
|
-- This command defines the reconnaissance network.
|
||||||
-- It will group any detected ground enemy targets within a radius of 1km.
|
-- It will group any detected ground enemy targets within a radius of 1km.
|
||||||
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
-- It uses the DetectionSetGroup, which defines the set of reconnaissance groups to detect for enemy ground targets.
|
||||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||||
|
|
||||||
-- Setup the A2A dispatcher, and initialize it.
|
-- Setup the A2A dispatcher, and initialize it.
|
||||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||||
|
|
||||||
-- Add defense coordinates.
|
-- Add defense coordinates.
|
||||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseReactivityHigh()
|
A2GDispatcher:SetDefenseReactivityHigh()
|
||||||
|
|
||||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||||
|
|
||||||
A2GDispatcher:SetTacticalDisplay( true )
|
A2GDispatcher:SetTacticalDisplay( true )
|
||||||
|
|
||||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||||
|
|
||||||
-- Setup the squadrons.
|
-- Setup the squadrons.
|
||||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||||
|
|||||||
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user