mirror of
https://github.com/FlightControl-Master/MOOSE_MISSIONS.git
synced 2025-08-15 10:37:46 +00:00
Updated Moose.lua
This commit is contained in:
parent
192d4710a2
commit
9f91de26ca
Binary file not shown.
Binary file not shown.
@ -1,43 +1,43 @@
|
||||
-- Name: AIB-002 - Patrol AI.lua
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 7 December 2016
|
||||
--
|
||||
-- # Situation:
|
||||
--
|
||||
-- For the red coalition, 2 client slots are foreseen.
|
||||
-- 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.
|
||||
--
|
||||
-- # Test cases:
|
||||
--
|
||||
-- 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.
|
||||
-- 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.
|
||||
-- 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.
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
|
||||
-- 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.
|
||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||
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.
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
local PatrolZones = {}
|
||||
|
||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||
|
||||
local PatrolZoneGroup = GROUP:FindByName( "PatrolZone" )
|
||||
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||
|
||||
|
||||
PatrolZones[AIGroup] = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
|
||||
PatrolZones[AIGroup]:ManageFuel( 0.2, 60 )
|
||||
PatrolZones[AIGroup]:SetControllable( AIGroup )
|
||||
PatrolZones[AIGroup]:__Start( 5 )
|
||||
|
||||
end
|
||||
-- Name: AIB-002 - Patrol AI.lua
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 7 December 2016
|
||||
--
|
||||
-- # Situation:
|
||||
--
|
||||
-- For the red coalition, 2 client slots are foreseen.
|
||||
-- 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.
|
||||
--
|
||||
-- # Test cases:
|
||||
--
|
||||
-- 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.
|
||||
-- 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.
|
||||
-- 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.
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
|
||||
-- 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.
|
||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||
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.
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
local PatrolZones = {}
|
||||
|
||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||
|
||||
local PatrolZoneGroup = GROUP:FindByName( "PatrolZone" )
|
||||
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||
|
||||
|
||||
PatrolZones[AIGroup] = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
|
||||
PatrolZones[AIGroup]:ManageFuel( 0.2, 60 )
|
||||
PatrolZones[AIGroup]:SetControllable( AIGroup )
|
||||
PatrolZones[AIGroup]:__Start( 5 )
|
||||
|
||||
end
|
||||
|
||||
Binary file not shown.
@ -1,24 +1,24 @@
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
RU_AirbasesSet = SET_AIRBASE:New():FilterCoalitions("red"):FilterStart()
|
||||
RU_AirbasesSet:Flush()
|
||||
RU_AI_Balancer:ReturnToNearestAirbases( 10000, RU_AirbasesSet )
|
||||
|
||||
|
||||
US_PlanesClientSet = SET_CLIENT:New():FilterCountries( "USA" ):FilterCategories( "plane" )
|
||||
US_PlanesSpawn = SPAWN:New( "AI US" ):InitCleanUp( 20 )
|
||||
US_AI_Balancer = AI_BALANCER:New( US_PlanesClientSet, US_PlanesSpawn )
|
||||
|
||||
--RU_AI_Balancer:ReturnToHomeAirbase( 10000 )
|
||||
|
||||
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Blue" )
|
||||
--local PatrolZoneBlue = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||
--local PatrolZoneB = AI_PATROL_ZONE:New( PatrolZoneBlue, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
|
||||
--US_AI_Balancer:SetPatrolZone( PatrolZoneB )
|
||||
--
|
||||
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Red" )
|
||||
--local PatrolZoneRed = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||
--local PatrolZoneR = AI_PATROL_ZONE:New( PatrolZoneRed, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
|
||||
--RU_AI_Balancer:SetPatrolZone( PatrolZoneR )
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
RU_PlanesSpawn = SPAWN:New( "AI RU" ):InitCleanUp( 20 )
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
RU_AirbasesSet = SET_AIRBASE:New():FilterCoalitions("red"):FilterStart()
|
||||
RU_AirbasesSet:Flush()
|
||||
RU_AI_Balancer:ReturnToNearestAirbases( 10000, RU_AirbasesSet )
|
||||
|
||||
|
||||
US_PlanesClientSet = SET_CLIENT:New():FilterCountries( "USA" ):FilterCategories( "plane" )
|
||||
US_PlanesSpawn = SPAWN:New( "AI US" ):InitCleanUp( 20 )
|
||||
US_AI_Balancer = AI_BALANCER:New( US_PlanesClientSet, US_PlanesSpawn )
|
||||
|
||||
--RU_AI_Balancer:ReturnToHomeAirbase( 10000 )
|
||||
|
||||
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Blue" )
|
||||
--local PatrolZoneBlue = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||
--local PatrolZoneB = AI_PATROL_ZONE:New( PatrolZoneBlue, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
|
||||
--US_AI_Balancer:SetPatrolZone( PatrolZoneB )
|
||||
--
|
||||
--local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone Red" )
|
||||
--local PatrolZoneRed = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||
--local PatrolZoneR = AI_PATROL_ZONE:New( PatrolZoneRed, 3000, 6000, 900, 1100 ):ManageFuel( 0.2, 180 )
|
||||
--RU_AI_Balancer:SetPatrolZone( PatrolZoneR )
|
||||
|
||||
Binary file not shown.
@ -1,47 +1,47 @@
|
||||
-- Name: AIB-004 - Respawn Test when Destroyed.lua
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 7 January 2017
|
||||
--
|
||||
-- # Situation:
|
||||
--
|
||||
-- For the red coalition, 2 client slots are foreseen.
|
||||
-- For those players that have not joined the mission, red AI is spawned.
|
||||
-- The red AI should start patrolling an area.
|
||||
--
|
||||
-- The blue side has SAMs nearby.
|
||||
-- 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!
|
||||
-- The Respawn happens through the InitCleanUp() API of SPAWN.
|
||||
--
|
||||
-- # Test cases:
|
||||
--
|
||||
-- 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.
|
||||
-- 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...
|
||||
|
||||
|
||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
|
||||
-- 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.
|
||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||
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.
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||
|
||||
local PatrolZoneGroup = GROUP:FindByName( "PatrolZone" )
|
||||
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||
|
||||
|
||||
local Patrol = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
|
||||
Patrol:ManageFuel( 0.2, 60 )
|
||||
Patrol:SetControllable( AIGroup )
|
||||
Patrol:__Start( 5 )
|
||||
|
||||
end
|
||||
|
||||
-- Name: AIB-004 - Respawn Test when Destroyed.lua
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 7 January 2017
|
||||
--
|
||||
-- # Situation:
|
||||
--
|
||||
-- For the red coalition, 2 client slots are foreseen.
|
||||
-- For those players that have not joined the mission, red AI is spawned.
|
||||
-- The red AI should start patrolling an area.
|
||||
--
|
||||
-- The blue side has SAMs nearby.
|
||||
-- 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!
|
||||
-- The Respawn happens through the InitCleanUp() API of SPAWN.
|
||||
--
|
||||
-- # Test cases:
|
||||
--
|
||||
-- 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.
|
||||
-- 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...
|
||||
|
||||
|
||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
|
||||
-- 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.
|
||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||
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.
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||
|
||||
local PatrolZoneGroup = GROUP:FindByName( "PatrolZone" )
|
||||
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
|
||||
|
||||
|
||||
local Patrol = AI_PATROL_ZONE:New( PatrolZone, 3000, 6000, 400, 600 )
|
||||
Patrol:ManageFuel( 0.2, 60 )
|
||||
Patrol:SetControllable( AIGroup )
|
||||
Patrol:__Start( 5 )
|
||||
|
||||
end
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,51 +1,51 @@
|
||||
-- Name: AIB-005 - Patrol AI and Randomize Zones
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 10 Jan 2016
|
||||
--
|
||||
-- # Situation:
|
||||
--
|
||||
-- For the red coalition, 2 client slots are foreseen.
|
||||
-- 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.
|
||||
-- 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.
|
||||
--
|
||||
-- # Test cases:
|
||||
--
|
||||
-- 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.
|
||||
-- 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.
|
||||
-- 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 ...
|
||||
|
||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
|
||||
-- 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.
|
||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||
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.
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
-- Create the first polygon zone ...
|
||||
PatrolZoneGroup1 = GROUP:FindByName( "PatrolZone1" )
|
||||
PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
|
||||
|
||||
-- Create the second polygon zone ...
|
||||
PatrolZoneGroup2 = GROUP:FindByName( "PatrolZone2" )
|
||||
PatrolZone2 = ZONE_POLYGON:New( "PatrolZone2", PatrolZoneGroup2 )
|
||||
|
||||
-- Now, create an array of these zones ...
|
||||
PatrolZoneArray = { PatrolZone1, PatrolZone2 }
|
||||
|
||||
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 )
|
||||
Patrol:ManageFuel( 0.2, 60 )
|
||||
Patrol:SetControllable( AIGroup )
|
||||
Patrol:Start()
|
||||
|
||||
end
|
||||
-- Name: AIB-005 - Patrol AI and Randomize Zones
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 10 Jan 2016
|
||||
--
|
||||
-- # Situation:
|
||||
--
|
||||
-- For the red coalition, 2 client slots are foreseen.
|
||||
-- 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.
|
||||
-- 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.
|
||||
--
|
||||
-- # Test cases:
|
||||
--
|
||||
-- 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.
|
||||
-- 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.
|
||||
-- 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 ...
|
||||
|
||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
|
||||
-- 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.
|
||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||
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.
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
-- Create the first polygon zone ...
|
||||
PatrolZoneGroup1 = GROUP:FindByName( "PatrolZone1" )
|
||||
PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
|
||||
|
||||
-- Create the second polygon zone ...
|
||||
PatrolZoneGroup2 = GROUP:FindByName( "PatrolZone2" )
|
||||
PatrolZone2 = ZONE_POLYGON:New( "PatrolZone2", PatrolZoneGroup2 )
|
||||
|
||||
-- Now, create an array of these zones ...
|
||||
PatrolZoneArray = { PatrolZone1, PatrolZone2 }
|
||||
|
||||
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 )
|
||||
Patrol:ManageFuel( 0.2, 60 )
|
||||
Patrol:SetControllable( AIGroup )
|
||||
Patrol:Start()
|
||||
|
||||
end
|
||||
|
||||
Binary file not shown.
@ -1,43 +1,43 @@
|
||||
-- Name: AIB-005 - Patrol AI and Randomize Zones
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 10 Jan 2016
|
||||
--
|
||||
-- # Situation:
|
||||
--
|
||||
-- For the red coalition, 2 client slots are foreseen.
|
||||
-- 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...
|
||||
-- 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...
|
||||
-- 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.
|
||||
-- This frees up the other planes departing, and the airbase is in this way decluttered...
|
||||
--
|
||||
-- # Test cases:
|
||||
--
|
||||
-- 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.
|
||||
|
||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
|
||||
-- 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.
|
||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||
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.
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
-- Create the first polygon zone ...
|
||||
PatrolZoneGroup1 = GROUP:FindByName( "PatrolZone1" )
|
||||
PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
|
||||
|
||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||
|
||||
local Patrol = AI_PATROL_ZONE:New( PatrolZone1, 3000, 6000, 400, 600 )
|
||||
Patrol:ManageFuel( 0.2, 60 )
|
||||
Patrol:SetControllable( AIGroup )
|
||||
Patrol:__Start( 5 )
|
||||
|
||||
end
|
||||
-- Name: AIB-005 - Patrol AI and Randomize Zones
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 10 Jan 2016
|
||||
--
|
||||
-- # Situation:
|
||||
--
|
||||
-- For the red coalition, 2 client slots are foreseen.
|
||||
-- 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...
|
||||
-- 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...
|
||||
-- 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.
|
||||
-- This frees up the other planes departing, and the airbase is in this way decluttered...
|
||||
--
|
||||
-- # Test cases:
|
||||
--
|
||||
-- 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.
|
||||
|
||||
-- Define the SET of CLIENTs from the red coalition. This SET is filled during startup.
|
||||
RU_PlanesClientSet = SET_CLIENT:New():FilterCountries( "RUSSIA" ):FilterCategories( "plane" )
|
||||
|
||||
-- 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.
|
||||
-- If a blocked plane exists, this red plane will be ReSpawned.
|
||||
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.
|
||||
RU_AI_Balancer = AI_BALANCER:New( RU_PlanesClientSet, RU_PlanesSpawn )
|
||||
|
||||
-- Create the first polygon zone ...
|
||||
PatrolZoneGroup1 = GROUP:FindByName( "PatrolZone1" )
|
||||
PatrolZone1 = ZONE_POLYGON:New( "PatrolZone1", PatrolZoneGroup1 )
|
||||
|
||||
function RU_AI_Balancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||
|
||||
local Patrol = AI_PATROL_ZONE:New( PatrolZone1, 3000, 6000, 400, 600 )
|
||||
Patrol:ManageFuel( 0.2, 60 )
|
||||
Patrol:SetControllable( AIGroup )
|
||||
Patrol:__Start( 5 )
|
||||
|
||||
end
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1,18 +1,18 @@
|
||||
---
|
||||
-- Name: AIC-APC-000 - APC
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
--
|
||||
-- A demonstration of the AI_CARGO_APC class.
|
||||
-- This simple example transports Infantry.
|
||||
-- The CARGO_GROUP objects are declared within the mission script.
|
||||
|
||||
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 Infantry3 = CARGO_GROUP:New( GROUP:FindByName( "Infantry3" ), "Infantry", "Infantry3", 500, 25 )
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
local APC = GROUP:FindByName( "APC" )
|
||||
AICargoAPC = AI_CARGO_APC:New( APC, InfantryCargoSet, 500 )
|
||||
AICargoAPC:__Pickup( 5 )
|
||||
|
||||
---
|
||||
-- Name: AIC-APC-000 - APC
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
--
|
||||
-- A demonstration of the AI_CARGO_APC class.
|
||||
-- This simple example transports Infantry.
|
||||
-- The CARGO_GROUP objects are declared within the mission script.
|
||||
|
||||
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 Infantry3 = CARGO_GROUP:New( GROUP:FindByName( "Infantry3" ), "Infantry", "Infantry3", 500, 25 )
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
local APC = GROUP:FindByName( "APC" )
|
||||
AICargoAPC = AI_CARGO_APC:New( APC, InfantryCargoSet, 500 )
|
||||
AICargoAPC:__Pickup( 5 )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,16 +1,16 @@
|
||||
---
|
||||
-- Name: AIC-APC-001 - APC with Cargo declared in ME
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
--
|
||||
-- A demonstration of the AI_CARGO_APC class.
|
||||
-- This simple example transports Infantry.
|
||||
-- The cargo is declared with the ~CARGO tag in the mission editor.
|
||||
-- So, within the mission, the infantry groups have the name:
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
local APC = GROUP:FindByName( "APC" )
|
||||
AICargoAPC = AI_CARGO_APC:New( APC, InfantryCargoSet, 500 )
|
||||
AICargoAPC:__Pickup( 5 )
|
||||
|
||||
---
|
||||
-- Name: AIC-APC-001 - APC with Cargo declared in ME
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
--
|
||||
-- A demonstration of the AI_CARGO_APC class.
|
||||
-- This simple example transports Infantry.
|
||||
-- The cargo is declared with the ~CARGO tag in the mission editor.
|
||||
-- So, within the mission, the infantry groups have the name:
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
local APC = GROUP:FindByName( "APC" )
|
||||
AICargoAPC = AI_CARGO_APC:New( APC, InfantryCargoSet, 500 )
|
||||
AICargoAPC:__Pickup( 5 )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,12 +1,12 @@
|
||||
---
|
||||
-- Name: AIC-APC-002 - APC Move by Game Master
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
|
||||
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||
|
||||
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 500 )
|
||||
|
||||
---
|
||||
-- Name: AIC-APC-002 - APC Move by Game Master
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
|
||||
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||
|
||||
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 500 )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,14 +1,14 @@
|
||||
---
|
||||
-- Name: AIC-APC-003 - APC Troops and Equipment
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 07 Apr 2018
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
|
||||
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||
|
||||
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 350 )
|
||||
|
||||
|
||||
|
||||
---
|
||||
-- Name: AIC-APC-003 - APC Troops and Equipment
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 07 Apr 2018
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
|
||||
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||
|
||||
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 350 )
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,26 +1,26 @@
|
||||
---
|
||||
-- Name: AIC-APC-004 - APC Pickup
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 23 Apr 2018
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
local APC = GROUP:FindByName( "APC" )
|
||||
Cargo_APC = AI_CARGO_APC:New( APC, InfantryCargoSet, 350 )
|
||||
Cargo_APC:__Pickup( 1, ZONE:New( "Pickup" ):GetCoordinate() )
|
||||
|
||||
|
||||
|
||||
--- Loaded Handler OnAfter for Cargo_APC
|
||||
-- @function [parent=#Cargo_APC] OnAfterLoaded
|
||||
-- @param #Cargo_APC self
|
||||
-- @param Wrapper.Group#GROUP APC
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
function Cargo_APC:OnAfterLoaded( APC, From, Event, To )
|
||||
Cargo_APC:Deploy( ZONE:New( "Deploy" ):GetCoordinate() )
|
||||
end
|
||||
|
||||
|
||||
|
||||
---
|
||||
-- Name: AIC-APC-004 - APC Pickup
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 23 Apr 2018
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
local APC = GROUP:FindByName( "APC" )
|
||||
Cargo_APC = AI_CARGO_APC:New( APC, InfantryCargoSet, 350 )
|
||||
Cargo_APC:__Pickup( 1, ZONE:New( "Pickup" ):GetCoordinate() )
|
||||
|
||||
|
||||
|
||||
--- Loaded Handler OnAfter for Cargo_APC
|
||||
-- @function [parent=#Cargo_APC] OnAfterLoaded
|
||||
-- @param #Cargo_APC self
|
||||
-- @param Wrapper.Group#GROUP APC
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
function Cargo_APC:OnAfterLoaded( APC, From, Event, To )
|
||||
Cargo_APC:Deploy( ZONE:New( "Deploy" ):GetCoordinate() )
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1,13 +1,13 @@
|
||||
---
|
||||
-- Name: AIC-APC-010 - Multiple APC
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 24 Apr 2018
|
||||
--
|
||||
|
||||
local InfantrySet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
local APC = GROUP:FindByName( "APC" )
|
||||
Cargo_APC = AI_CARGO_APC:New( APC, InfantrySet, 250 )
|
||||
Cargo_APC:__Pickup( 2 )
|
||||
|
||||
|
||||
|
||||
---
|
||||
-- Name: AIC-APC-010 - Multiple APC
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 24 Apr 2018
|
||||
--
|
||||
|
||||
local InfantrySet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
local APC = GROUP:FindByName( "APC" )
|
||||
Cargo_APC = AI_CARGO_APC:New( APC, InfantrySet, 250 )
|
||||
Cargo_APC:__Pickup( 2 )
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,42 +1,44 @@
|
||||
---
|
||||
-- Name: AIC-APC-004 - APC Pickup
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 23 Apr 2018
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
|
||||
Cargo_APC = {}
|
||||
|
||||
for i = 1, 4 do
|
||||
Cargo_APC[i] = AI_CARGO_APC:New( GROUP:FindByName( "APC"..i ), InfantryCargoSet, 350 )
|
||||
|
||||
--- Loaded Handler OnAfter for Cargo_APC
|
||||
-- @function [parent=#Cargo_APC] OnAfterLoaded
|
||||
-- @param #Cargo_APC self
|
||||
-- @param Wrapper.Group#GROUP APC
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
Cargo_APC[i].OnAfterLoaded = function( self, APC, From, Event, To )
|
||||
self:Deploy( ZONE:New( "Deploy" ):GetRandomCoordinate( 300, 500 ), 70, "Line abreast" )
|
||||
end
|
||||
|
||||
--- Unloaded Handler OnAfter for Cargo_APC
|
||||
-- @function [parent=#Cargo_APC] OnAfterUnloaded
|
||||
-- @param #Cargo_APC self
|
||||
-- @param Wrapper.Group#GROUP APC
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
Cargo_APC[i].OnAfterUnloaded = function( self, APC, From, Event, To )
|
||||
self:Pickup( ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ), 70, "Line abreast" )
|
||||
end
|
||||
|
||||
Cargo_APC[i]:__Pickup( i * 120, ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ), 70, "Line abreast" )
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
-- Name: AIC-APC-004 - APC Pickup
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 23 Apr 2018
|
||||
--
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
|
||||
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||
|
||||
Cargo_APC = {}
|
||||
|
||||
for i = 1, 4 do
|
||||
Cargo_APC[i] = AI_CARGO_APC:New( GROUP:FindByName( "APC"..i ), InfantryCargoSet, 350 )
|
||||
|
||||
--- Loaded Handler OnAfter for Cargo_APC
|
||||
-- @function [parent=#Cargo_APC] OnAfterLoaded
|
||||
-- @param #Cargo_APC self
|
||||
-- @param Wrapper.Group#GROUP APC
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
Cargo_APC[i].OnAfterLoaded = function( self, APC, From, Event, To )
|
||||
self:Deploy( ZONE:New( "Deploy" ):GetRandomCoordinate( 300, 500 ), 70, "Line abreast" )
|
||||
end
|
||||
|
||||
--- Unloaded Handler OnAfter for Cargo_APC
|
||||
-- @function [parent=#Cargo_APC] OnAfterUnloaded
|
||||
-- @param #Cargo_APC self
|
||||
-- @param Wrapper.Group#GROUP APC
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
Cargo_APC[i].OnAfterUnloaded = function( self, APC, From, Event, To )
|
||||
self:Pickup( ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ), 70, "Line abreast" )
|
||||
end
|
||||
|
||||
Cargo_APC[i]:__Pickup( i * 120, ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ), 70, "Line abreast" )
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,34 +1,34 @@
|
||||
---
|
||||
-- Name: AIC-HEL-000 - Helicopter
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 13 Apr 2018
|
||||
--
|
||||
|
||||
WorkerCargoSet = SET_CARGO:New():FilterTypes( "Workers" ):FilterStart()
|
||||
|
||||
|
||||
for i = 1, 10 do
|
||||
local WorkerGroup = GROUP:FindByName( string.format( "Infantry#%03d", i ) )
|
||||
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Workers", string.format( "Infantry %d", i ), 1000, 35 )
|
||||
end
|
||||
|
||||
local Helicopter = GROUP:FindByName( "Helicopter" )
|
||||
|
||||
CargoHelicopter = AI_CARGO_HELICOPTER:New( Helicopter, WorkerCargoSet )
|
||||
|
||||
|
||||
PickupZone = ZONE:New( "PickupZone" )
|
||||
DeployZones = { ZONE:New( "DeployZone Alpha" ), ZONE:New( "DeployZone Beta" ), ZONE:New( "DeployZone Gamma" ) }
|
||||
|
||||
CargoHelicopter:Pickup( PickupZone:GetRandomCoordinate( 500, 200 ) )
|
||||
|
||||
function CargoHelicopter:onafterLoaded( Helicopter, From, Event, To, Cargo )
|
||||
CargoHelicopter:Deploy( DeployZones[math.random( 1, #DeployZones ) ]:GetRandomCoordinate( 500, 100 ), math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
|
||||
function CargoHelicopter:onafterUnloaded( Helicopter, From, Event, To, Cargo )
|
||||
CargoHelicopter:Pickup( PickupZone:GetRandomCoordinate( 500, 200 ), math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Name: AIC-HEL-000 - Helicopter
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 13 Apr 2018
|
||||
--
|
||||
|
||||
WorkerCargoSet = SET_CARGO:New():FilterTypes( "Workers" ):FilterStart()
|
||||
|
||||
|
||||
for i = 1, 10 do
|
||||
local WorkerGroup = GROUP:FindByName( string.format( "Infantry#%03d", i ) )
|
||||
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Workers", string.format( "Infantry %d", i ), 1000, 35 )
|
||||
end
|
||||
|
||||
local Helicopter = GROUP:FindByName( "Helicopter" )
|
||||
|
||||
CargoHelicopter = AI_CARGO_HELICOPTER:New( Helicopter, WorkerCargoSet )
|
||||
|
||||
|
||||
PickupZone = ZONE:New( "PickupZone" )
|
||||
DeployZones = { ZONE:New( "DeployZone Alpha" ), ZONE:New( "DeployZone Beta" ), ZONE:New( "DeployZone Gamma" ) }
|
||||
|
||||
CargoHelicopter:Pickup( PickupZone:GetRandomCoordinate( 500, 200 ) )
|
||||
|
||||
function CargoHelicopter:onafterLoaded( Helicopter, From, Event, To, Cargo )
|
||||
CargoHelicopter:Deploy( DeployZones[math.random( 1, #DeployZones ) ]:GetRandomCoordinate( 500, 100 ), math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
|
||||
function CargoHelicopter:onafterUnloaded( Helicopter, From, Event, To, Cargo )
|
||||
CargoHelicopter:Pickup( PickupZone:GetRandomCoordinate( 500, 200 ), math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1,37 +1,35 @@
|
||||
---
|
||||
-- Name: AIC-PLN-000 - Airplane
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 14 Apr 2018
|
||||
--
|
||||
|
||||
VehicleCargoSet = SET_CARGO:New():FilterTypes( "Vehicles" ):FilterStart()
|
||||
|
||||
|
||||
for i = 1, 10 do
|
||||
local WorkerGroup = GROUP:FindByName( string.format( "Vehicle #%03d", i ) )
|
||||
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Vehicles", string.format( "Vehicle %d", i ), 5000, 35 )
|
||||
WorkersCargo:SetWeight(10000)
|
||||
end
|
||||
|
||||
local Airplane = GROUP:FindByName( "Airplane" )
|
||||
|
||||
CargoAirplane = AI_CARGO_AIRPLANE:New( Airplane, VehicleCargoSet )
|
||||
|
||||
|
||||
PickupAirbase = AIRBASE:FindByName( AIRBASE.Caucasus.Kobuleti )
|
||||
DeployAirbases = { AIRBASE:FindByName( AIRBASE.Caucasus.Batumi ), AIRBASE:FindByName( AIRBASE.Caucasus.Gudauta ) }
|
||||
|
||||
|
||||
CargoAirplane:Pickup( PickupAirbase:GetCoordinate() )
|
||||
|
||||
function CargoAirplane:OnAfterLoaded( Airplane, From, Event, To, Cargo )
|
||||
CargoAirplane:__Deploy(0.2, DeployAirbases[math.random(#DeployAirbases)]:GetCoordinate(), math.random( 500, 750 ) )
|
||||
end
|
||||
|
||||
|
||||
--function CargoAirplane:OnAfterUnloaded( Airplane, From, Event, To, Cargo )
|
||||
function CargoAirplane:OnAfterDeployed(Airplane, From, Event, To, DeployZone)
|
||||
CargoAirplane:__Pickup(0.2, PickupAirbase:GetCoordinate(), math.random( 500, 750 ) )
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Name: AIC-PLN-000 - Airplane
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 14 Apr 2018
|
||||
--
|
||||
|
||||
VehicleCargoSet = SET_CARGO:New():FilterTypes( "Vehicles" ):FilterStart()
|
||||
|
||||
|
||||
for i = 1, 10 do
|
||||
local WorkerGroup = GROUP:FindByName( string.format( "Vehicle #%03d", i ) )
|
||||
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Vehicles", string.format( "Vehicle %d", i ), 5000, 35 )
|
||||
end
|
||||
|
||||
local Airplane = GROUP:FindByName( "Airplane" )
|
||||
|
||||
CargoAirplane = AI_CARGO_AIRPLANE:New( Airplane, VehicleCargoSet )
|
||||
|
||||
|
||||
PickupAirbase = AIRBASE:FindByName( AIRBASE.Caucasus.Kobuleti )
|
||||
DeployAirbases = { AIRBASE:FindByName( AIRBASE.Caucasus.Batumi ), AIRBASE:FindByName( AIRBASE.Caucasus.Gudauta ) }
|
||||
|
||||
|
||||
CargoAirplane:Pickup( PickupAirbase )
|
||||
|
||||
function CargoAirplane:onafterLoaded( Airplane, From, Event, To, Cargo )
|
||||
CargoAirplane:Deploy( DeployAirbases[math.random( 1, #DeployAirbases ) ], math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
|
||||
function CargoAirplane:onafterUnloaded( Airplane, From, Event, To, Cargo )
|
||||
CargoAirplane:Pickup( PickupAirbase, math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,142 +1,142 @@
|
||||
---
|
||||
-- Name: AID-A2A-100 - Demonstration
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
local HQ_Group = GROUP:FindByName( "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.
|
||||
-- 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()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
A2ADispatcher:SetCommandCenter( HQ_CC )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( false )
|
||||
A2ADispatcher:SetTacticalMenu( "Dispatchers", "A2A" )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 120000 )
|
||||
|
||||
-- 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( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||
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( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||
|
||||
|
||||
-- CAP Squadron execution.
|
||||
--CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 30, 60, 1 )
|
||||
|
||||
--CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
--CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
|
||||
--A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
A2ADispatcher:SetSquadronGci2( "Mozdok", 900, 1200, 100, 100, "RADIO" )
|
||||
A2ADispatcher:SetSquadronGci2( "Novo", 900, 2100, 100, 100, "RADIO" )
|
||||
A2ADispatcher:SetSquadronGci2( "Maykop", 900, 1200, 200, 200, "RADIO" )
|
||||
|
||||
-- Set the language of the squadrons to Russian.
|
||||
A2ADispatcher:SetSquadronLanguage( "Mozdok", "RU" )
|
||||
A2ADispatcher:SetSquadronLanguage( "Novo", "RU" )
|
||||
A2ADispatcher:SetSquadronLanguage( "Maykop", "RU" )
|
||||
|
||||
A2ADispatcher:SetSquadronRadioFrequency( "Mozdok", 127.5 )
|
||||
A2ADispatcher:SetSquadronRadioFrequency( "Novo", 127.5 )
|
||||
A2ADispatcher:SetSquadronRadioFrequency( "Maykop", 127.5 )
|
||||
|
||||
|
||||
-- Set the squadrons visible before startup.
|
||||
--A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||
|
||||
|
||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 300
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn3 = SPAWN
|
||||
:New( "RT NATO 3" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn4 = SPAWN
|
||||
:New( "RT NATO 4" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
---
|
||||
-- Name: AID-A2A-100 - Demonstration
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
local HQ_Group = GROUP:FindByName( "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.
|
||||
-- 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()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
A2ADispatcher:SetCommandCenter( HQ_CC )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( false )
|
||||
A2ADispatcher:SetTacticalMenu( "Dispatchers", "A2A" )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 120000 )
|
||||
|
||||
-- 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( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||
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( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||
|
||||
|
||||
-- CAP Squadron execution.
|
||||
--CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 30, 60, 1 )
|
||||
|
||||
--CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
--CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
|
||||
--A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
A2ADispatcher:SetSquadronGci2( "Mozdok", 900, 1200, 100, 100, "RADIO" )
|
||||
A2ADispatcher:SetSquadronGci2( "Novo", 900, 2100, 100, 100, "RADIO" )
|
||||
A2ADispatcher:SetSquadronGci2( "Maykop", 900, 1200, 200, 200, "RADIO" )
|
||||
|
||||
-- Set the language of the squadrons to Russian.
|
||||
A2ADispatcher:SetSquadronLanguage( "Mozdok", "RU" )
|
||||
A2ADispatcher:SetSquadronLanguage( "Novo", "RU" )
|
||||
A2ADispatcher:SetSquadronLanguage( "Maykop", "RU" )
|
||||
|
||||
A2ADispatcher:SetSquadronRadioFrequency( "Mozdok", 127.5 )
|
||||
A2ADispatcher:SetSquadronRadioFrequency( "Novo", 127.5 )
|
||||
A2ADispatcher:SetSquadronRadioFrequency( "Maykop", 127.5 )
|
||||
|
||||
|
||||
-- Set the squadrons visible before startup.
|
||||
--A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||
|
||||
|
||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 300
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn3 = SPAWN
|
||||
:New( "RT NATO 3" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn4 = SPAWN
|
||||
:New( "RT NATO 4" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,47 +1,47 @@
|
||||
---
|
||||
-- Name: AID-A2A-013 - Intercept Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 31 Jul 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
--A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 200000 )
|
||||
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- Test intercept.
|
||||
A2ADispatcher:SetIntercept( 450 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP MIG-31" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Sochi" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Sochi" )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Gelend", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Gelend" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Gelend" )
|
||||
|
||||
A2ADispatcher:Start()
|
||||
|
||||
---
|
||||
-- Name: AID-A2A-013 - Intercept Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 31 Jul 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
--A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 200000 )
|
||||
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- Test intercept.
|
||||
A2ADispatcher:SetIntercept( 450 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP MIG-31" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Sochi" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Sochi" )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Gelend", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Gelend" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Gelend" )
|
||||
|
||||
A2ADispatcher:Start()
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,60 +1,60 @@
|
||||
---
|
||||
-- Name: AID-A2A-020 - GCI RTB and ReEngage
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
--A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 200000 )
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Center, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Kras1", 900, 1200 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras2", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Kras2", 900, 1200 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "May", 900, 1200 )
|
||||
|
||||
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
A2ADispatcher:Start()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 300
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.5 )
|
||||
|
||||
---
|
||||
-- Name: AID-A2A-020 - GCI RTB and ReEngage
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
--A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 200000 )
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Center, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Kras1", 900, 1200 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras2", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Kras2", 900, 1200 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "May", 900, 1200 )
|
||||
|
||||
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
A2ADispatcher:Start()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 300
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.5 )
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,54 +1,54 @@
|
||||
---
|
||||
-- Name: AID-A2A-030 - CAP RTB and ReEngage
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
--Detection:BoundDetectedZones()
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 200000 )
|
||||
|
||||
A2ADispatcher:SetDisengageRadius( 200000 )
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" }, 20 )
|
||||
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:SetSquadronCapInterval( "Kras1", 4, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" }, 20 )
|
||||
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:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 150
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.5 )
|
||||
|
||||
---
|
||||
-- Name: AID-A2A-030 - CAP RTB and ReEngage
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
--Detection:BoundDetectedZones()
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 200000 )
|
||||
|
||||
A2ADispatcher:SetDisengageRadius( 200000 )
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" }, 20 )
|
||||
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:SetSquadronCapInterval( "Kras1", 4, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" }, 20 )
|
||||
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:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 150
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.5 )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,35 +1,35 @@
|
||||
---
|
||||
-- Name: AID-A2A-031 - CAP out of fuel
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 Aug 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" }, 20 )
|
||||
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Kras1", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Kras1", 1, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" }, 20 )
|
||||
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:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
---
|
||||
-- Name: AID-A2A-031 - CAP out of fuel
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 Aug 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" }, 20 )
|
||||
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Kras1", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Kras1", 1, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" }, 20 )
|
||||
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:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,68 +1,68 @@
|
||||
---
|
||||
-- Name: AID-A2A-050 - Resources
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 21 Sep 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 250000 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27" }, 6 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 1 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mineralnye" )
|
||||
|
||||
|
||||
-- Setup the visibility before start.
|
||||
A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||
|
||||
-- CAP Squadron execution.
|
||||
CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 1, 30, 60, 1 )
|
||||
A2ADispatcher:SetSquadronFuelThreshold( "Mineralnye", 0.20 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
--A2ADispatcher:SetSquadronGci( "Mineralnye", 900, 1200 )
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 60
|
||||
|
||||
--BlueSpawn1 = SPAWN
|
||||
-- :New( "RT NATO 1" )
|
||||
-- :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" } )
|
||||
-- :InitRandomizeRoute( 0, 0, 30000 )
|
||||
-- --:InitDelayOn()
|
||||
-- :SpawnScheduled( Frequency, 0.4 )
|
||||
---
|
||||
-- Name: AID-A2A-050 - Resources
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 21 Sep 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 250000 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27" }, 6 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 1 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mineralnye" )
|
||||
|
||||
|
||||
-- Setup the visibility before start.
|
||||
A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||
|
||||
-- CAP Squadron execution.
|
||||
CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 1, 30, 60, 1 )
|
||||
A2ADispatcher:SetSquadronFuelThreshold( "Mineralnye", 0.20 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
--A2ADispatcher:SetSquadronGci( "Mineralnye", 900, 1200 )
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 60
|
||||
|
||||
--BlueSpawn1 = SPAWN
|
||||
-- :New( "RT NATO 1" )
|
||||
-- :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" } )
|
||||
-- :InitRandomizeRoute( 0, 0, 30000 )
|
||||
-- --:InitDelayOn()
|
||||
-- :SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
Binary file not shown.
@ -1,67 +1,67 @@
|
||||
---
|
||||
-- Name: AID-A2A-050 - Resources
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 21 Sep 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 250000 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27" }, 30 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 1 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Air )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||
|
||||
|
||||
-- CAP Squadron execution.
|
||||
--CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
A2ADispatcher:SetSquadronGci( "Mineralnye", 900, 1200 )
|
||||
|
||||
CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 60
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
---
|
||||
-- Name: AID-A2A-050 - Resources
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 21 Sep 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 250000 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2ADispatcher:SetSquadron( "Mineralnye", AIRBASE.Caucasus.Mineralnye_Vody, { "SQ CCCP SU-27" }, 30 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 1 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Air )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||
|
||||
|
||||
-- CAP Squadron execution.
|
||||
--CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 2, 30, 60, 1 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
A2ADispatcher:SetSquadronGci( "Mineralnye", 900, 1200 )
|
||||
|
||||
CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 60
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,128 +1,128 @@
|
||||
---
|
||||
-- Name: AID-A2A-100 - Demonstration
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 120000 )
|
||||
|
||||
-- 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( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||
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( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||
|
||||
|
||||
-- CAP Squadron execution.
|
||||
CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 30, 60, 1 )
|
||||
|
||||
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
|
||||
A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronGci( "Novo", 900, 2100 )
|
||||
A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 )
|
||||
|
||||
-- Set the squadrons visible before startup.
|
||||
A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||
A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||
A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||
|
||||
|
||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 300
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn3 = SPAWN
|
||||
:New( "RT NATO 3" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn4 = SPAWN
|
||||
:New( "RT NATO 4" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
---
|
||||
-- Name: AID-A2A-100 - Demonstration
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 120000 )
|
||||
|
||||
-- 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( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||
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( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||
|
||||
|
||||
-- CAP Squadron execution.
|
||||
CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 30, 60, 1 )
|
||||
|
||||
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
|
||||
A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronGci( "Novo", 900, 2100 )
|
||||
A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 )
|
||||
|
||||
-- Set the squadrons visible before startup.
|
||||
A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||
A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||
A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||
|
||||
|
||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 300
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn3 = SPAWN
|
||||
:New( "RT NATO 3" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn4 = SPAWN
|
||||
:New( "RT NATO 4" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,131 +1,131 @@
|
||||
---
|
||||
-- Name: AID-A2A-100 - Demonstration
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
|
||||
local CommandCenter = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "HQ" )
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
A2ADispatcher:SetCommandCenter(CommandCenter)
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 120000 )
|
||||
|
||||
-- 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( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||
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( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||
|
||||
|
||||
-- CAP Squadron execution.
|
||||
--CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 30, 60, 1 )
|
||||
|
||||
--CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
--CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
|
||||
--A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronGci( "Novo", 900, 2100 )
|
||||
A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 )
|
||||
|
||||
-- Set the squadrons visible before startup.
|
||||
--A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||
|
||||
|
||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 300
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn3 = SPAWN
|
||||
:New( "RT NATO 3" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn4 = SPAWN
|
||||
:New( "RT NATO 4" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
---
|
||||
-- Name: AID-A2A-100 - Demonstration
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 May 2017
|
||||
|
||||
|
||||
local CommandCenter = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "HQ" )
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "DF CCCP AWACS", "DF CCCP EWR" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 30000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
A2ADispatcher:SetCommandCenter(CommandCenter)
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
-- 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.
|
||||
A2ADispatcher:SetEngageRadius( 120000 )
|
||||
|
||||
-- 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( "Maykop", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP MIG-31" }, 20 )
|
||||
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( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 16 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Mineralnye", 1.2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Maykop", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Mozdok", 1 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Novo", 1.5 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Mineralnye", 4 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Novo", 3 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Mineralnye", AI_A2A_DISPATCHER.Takeoff.Hot )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Sochi" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Maykop" )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Mineralnye" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Sochi" )
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown( "Mozdok" )
|
||||
A2ADispatcher:SetSquadronLandingNearAirbase( "Maykop" )
|
||||
A2ADispatcher:SetSquadronLanding( "Novo", AI_A2A_DISPATCHER.Landing.AtRunway )
|
||||
|
||||
|
||||
-- CAP Squadron execution.
|
||||
--CAPZoneEast = ZONE_POLYGON:New( "CAP Zone East", GROUP:FindByName( "CAP Zone East" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Mineralnye", CAPZoneEast, 4000, 10000, 500, 600, 800, 900 )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Mineralnye", 6, 30, 60, 1 )
|
||||
|
||||
--CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
--A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
--CAPZoneMiddle = ZONE:New( "CAP Zone Middle")
|
||||
--A2ADispatcher:SetSquadronCap( "Maykop", CAPZoneMiddle, 4000, 8000, 600, 800, 800, 1200, "RADIO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 30, 120, 1 )
|
||||
|
||||
-- GCI Squadron execution.
|
||||
A2ADispatcher:SetSquadronGci( "Mozdok", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronGci( "Novo", 900, 2100 )
|
||||
A2ADispatcher:SetSquadronGci( "Maykop", 900, 1200 )
|
||||
|
||||
-- Set the squadrons visible before startup.
|
||||
--A2ADispatcher:SetSquadronVisible( "Mineralnye" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Sochi" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Mozdok" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Maykop" )
|
||||
--A2ADispatcher:SetSquadronVisible( "Novo" )
|
||||
|
||||
|
||||
--CleanUp = CLEANUP_AIRBASE:New( { AIRBASE.Caucasus.Novorossiysk } )
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 300
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn3 = SPAWN
|
||||
:New( "RT NATO 3" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn4 = SPAWN
|
||||
:New( "RT NATO 4" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,75 +1,75 @@
|
||||
---
|
||||
-- Name: AID-A2A-200 - GCICAP Demonstration
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 05 July 2017
|
||||
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_GCICAP:New( { "DF CCCP" }, { "SQ CCCP" }, { "CAP Zone" }, 2 )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffFromParkingCold()
|
||||
A2ADispatcher:SetDefaultLandingAtEngineShutdown()
|
||||
A2ADispatcher:SetDefaultFuelThreshold( 0.20 )
|
||||
A2ADispatcher:SetIntercept( 100 )
|
||||
A2ADispatcher:SetDisengageRadius( 100000 )
|
||||
A2ADispatcher:SetEngageRadius( 50000 )
|
||||
A2ADispatcher:SetGciRadius( 100000 )
|
||||
|
||||
A2ADispatcher:Start()
|
||||
|
||||
-------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 600
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn3 = SPAWN
|
||||
:New( "RT NATO 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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn4 = SPAWN
|
||||
:New( "RT NATO 4" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
---
|
||||
-- Name: AID-A2A-200 - GCICAP Demonstration
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 05 July 2017
|
||||
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_GCICAP:New( { "DF CCCP" }, { "SQ CCCP" }, { "CAP Zone" }, 2 )
|
||||
|
||||
-- Enable the tactical display panel.
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- 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.
|
||||
-- Any enemy crossing this border will be engaged.
|
||||
CCCPBorderZone = ZONE_POLYGON:New( "CCCP Border", GROUP:FindByName( "CCCP Border" ) )
|
||||
A2ADispatcher:SetBorderZone( CCCPBorderZone )
|
||||
|
||||
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffFromParkingCold()
|
||||
A2ADispatcher:SetDefaultLandingAtEngineShutdown()
|
||||
A2ADispatcher:SetDefaultFuelThreshold( 0.20 )
|
||||
A2ADispatcher:SetIntercept( 100 )
|
||||
A2ADispatcher:SetDisengageRadius( 100000 )
|
||||
A2ADispatcher:SetEngageRadius( 50000 )
|
||||
A2ADispatcher:SetGciRadius( 100000 )
|
||||
|
||||
A2ADispatcher:Start()
|
||||
|
||||
-------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Blue attack simulation
|
||||
local Frequency = 600
|
||||
|
||||
BlueSpawn1 = SPAWN
|
||||
:New( "RT NATO 1" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO 2" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn3 = SPAWN
|
||||
:New( "RT NATO 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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
BlueSpawn4 = SPAWN
|
||||
:New( "RT NATO 4" )
|
||||
: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" } )
|
||||
:InitRandomizeRoute( 0, 0, 30000 )
|
||||
--:InitDelayOn()
|
||||
:SpawnScheduled( Frequency, 0.4 )
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,56 +1,56 @@
|
||||
--- Detect and attack a set of enemy units.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
-- 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.
|
||||
local DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 5000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
||||
|
||||
-- The HQ is the defense point, so this point will be defended.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", HQ_Group:GetCoordinate() )
|
||||
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.
|
||||
|
||||
-- Communication to the players within the coalition. The HQ services the communication of the defense actions.
|
||||
A2GDispatcher:SetCommandCenter( HQ_CC )
|
||||
|
||||
-- Show a tactical display.
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronCas2( "Maykop CAS", 200, 250, 300, 500, "RADIO" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP MIL-8MTV" }, 10 )
|
||||
A2GDispatcher:SetSquadronBai2( "Maykop BAI", 200, 250, 300, 500, "RADIO" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Krasnodar", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "CCCP SU-25TM" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead2( "Krasnodar", 600, 800, 2000, 2000, "RADIO" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Krasnodar" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Krasnodar", 0.2 )
|
||||
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Krasnodar", 10 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
--- Detect and attack a set of enemy units.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
-- 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.
|
||||
local DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 5000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
||||
|
||||
-- The HQ is the defense point, so this point will be defended.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", HQ_Group:GetCoordinate() )
|
||||
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.
|
||||
|
||||
-- Communication to the players within the coalition. The HQ services the communication of the defense actions.
|
||||
A2GDispatcher:SetCommandCenter( HQ_CC )
|
||||
|
||||
-- Show a tactical display.
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronCas2( "Maykop CAS", 200, 250, 300, 500, "RADIO" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronBai2( "Maykop BAI", 200, 250, 300, 500, "RADIO" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Krasnodar", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "CCCP SU-25TM" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead2( "Krasnodar", 600, 800, 2000, 2000, "RADIO" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Krasnodar" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Krasnodar", 0.2 )
|
||||
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Krasnodar", 10 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
|
||||
Binary file not shown.
@ -1,66 +1,66 @@
|
||||
--- Detect and attack a set of enemy units using helicopters.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
-- 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.
|
||||
local DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", HQ_Group:GetCoordinate() )
|
||||
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.
|
||||
|
||||
-- Communication to the players within the coalition. The HQ services the communication of the defense actions.
|
||||
A2GDispatcher:SetCommandCenter( HQ_CC )
|
||||
|
||||
-- Show a tactical display.
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the patrols.
|
||||
|
||||
-- The patrol zone.
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
|
||||
-- SEADing from Krasnodar.
|
||||
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:SetSquadronSeadPatrolInterval( "Krasnodar", 2, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Krasnodar" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Krasnodar", 0.2 )
|
||||
|
||||
|
||||
-- Close Air Support from the CAS farp.
|
||||
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:SetSquadronCasPatrolInterval( "Maykop CAS", 2, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
-- Battlefield Air Interdiction from the BAI farp.
|
||||
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:SetSquadronBaiPatrolInterval( "Maykop BAI", 5, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.75 )
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Krasnodar", 10 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
--- Detect and attack a set of enemy units using helicopters.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
-- 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.
|
||||
local DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
local Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- 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_CC = COMMANDCENTER:New( HQ_Group, "HQ" )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", HQ_Group:GetCoordinate() )
|
||||
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.
|
||||
|
||||
-- Communication to the players within the coalition. The HQ services the communication of the defense actions.
|
||||
A2GDispatcher:SetCommandCenter( HQ_CC )
|
||||
|
||||
-- Show a tactical display.
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the patrols.
|
||||
|
||||
-- The patrol zone.
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
|
||||
-- SEADing from Krasnodar.
|
||||
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:SetSquadronSeadPatrolInterval( "Krasnodar", 2, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Krasnodar" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Krasnodar", 0.2 )
|
||||
|
||||
|
||||
-- Close Air Support from the CAS farp.
|
||||
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:SetSquadronCasPatrolInterval( "Maykop CAS", 2, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
-- Battlefield Air Interdiction from the BAI farp.
|
||||
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:SetSquadronBaiPatrolInterval( "Maykop BAI", 5, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.75 )
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Krasnodar", 10 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
|
||||
Binary file not shown.
@ -1,48 +1,48 @@
|
||||
--- Detect and attack a set of enemy units using helicopters.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 5000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 200000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronCas( "Maykop CAS", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronBai( "Maykop BAI", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
--- Detect and attack a set of enemy units using helicopters.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 5000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 200000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronCas( "Maykop CAS", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronBai( "Maykop BAI", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
|
||||
Binary file not shown.
@ -1,52 +1,52 @@
|
||||
--- Detect and attack a set of enemy units using helicopters.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", "SEAD", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 300, 500, 50, 80, 250, 300 )
|
||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop SEAD", 2, 30, 60, 1, "SEAD" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronCasPatrol( "Maykop CAS", PatrolZone, 600, 700, 50, 80, 250, 300 )
|
||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop CAS", 2, 30, 60, 1, "CAS" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronBaiPatrol( "Maykop BAI", PatrolZone, 800, 900, 50, 80, 250, 300 )
|
||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop BAI", 2, 30, 60, 1, "BAI" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
--- Detect and attack a set of enemy units using helicopters.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", "SEAD", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 300, 500, 50, 80, 250, 300 )
|
||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop SEAD", 2, 30, 60, 1, "SEAD" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronCasPatrol( "Maykop CAS", PatrolZone, 600, 700, 50, 80, 250, 300 )
|
||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop CAS", 2, 30, 60, 1, "CAS" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronBaiPatrol( "Maykop BAI", PatrolZone, 800, 900, 50, 80, 250, 300 )
|
||||
A2GDispatcher:SetSquadronPatrolInterval( "Maykop BAI", 2, 30, 60, 1, "BAI" )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
Binary file not shown.
Binary file not shown.
@ -1,52 +1,52 @@
|
||||
--- Detect and attack a set of enemy units using helicopters.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
|
||||
CC = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "HQ" )
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
A2GDispatcher:SetCommandCenter( CC )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 200000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronCas( "Maykop CAS", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronBai( "Maykop BAI", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
--- Detect and attack a set of enemy units using helicopters.
|
||||
-- Name: AID-A2G-001 - Detection and Attack Helicopters
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 02 Nov 2018
|
||||
|
||||
|
||||
CC = COMMANDCENTER:New( GROUP:FindByName("HQ"),"HQ")
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup = SET_GROUP:New()
|
||||
DetectionSetGroup:FilterPrefixes( { "CCCP Recce" } )
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
A2GDispatcher:SetCommandCenter( CC )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 200000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop CAS", "CAS", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronCas( "Maykop CAS", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
A2GDispatcher:SetSquadron( "Maykop BAI", "BAI", { "CCCP KA-50" }, 10 )
|
||||
A2GDispatcher:SetSquadronBai( "Maykop BAI", 120, 250 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
|
||||
-- We set for each squadron a takeoff interval, as each helicopter will launch from a FARP.
|
||||
-- This to prevent helicopters to clutter.
|
||||
-- Each helicopter group is taking off the FARP in hot start.
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
A2GDispatcher:SetSquadronTakeoffInterval( "Maykop BAI", 60 )
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -1,50 +1,50 @@
|
||||
--- Test the defense radius.
|
||||
-- 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.
|
||||
-- The tests are with SEAD only.
|
||||
-- Name: AID-A2G-003 - DefenseRadius
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 11 Nov 2018
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the SEAD squadrons.
|
||||
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:SetSquadronSeadPatrolInterval( "Maykop SEAD", 1, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
|
||||
-- Setup the CAS squadrons.
|
||||
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:SetSquadronCasPatrolInterval( "Maykop CAS", 1, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
--- Test the defense radius.
|
||||
-- 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.
|
||||
-- The tests are with SEAD only.
|
||||
-- Name: AID-A2G-003 - DefenseRadius
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 11 Nov 2018
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the SEAD squadrons.
|
||||
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:SetSquadronSeadPatrolInterval( "Maykop SEAD", 1, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
|
||||
-- Setup the CAS squadrons.
|
||||
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:SetSquadronCasPatrolInterval( "Maykop CAS", 1, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop CAS" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
|
||||
Binary file not shown.
@ -1,45 +1,45 @@
|
||||
--- Test the default engage limit.
|
||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 15 Nov 2018
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
-- This is the test, not more than 4 defenses in total should engage!
|
||||
A2GDispatcher:SetDefaultEngageLimit( 6 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
--- Test the default engage limit.
|
||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 15 Nov 2018
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
-- This is the test, not more than 4 defenses in total should engage!
|
||||
A2GDispatcher:SetDefaultEngageLimit( 6 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffInAir( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
|
||||
Binary file not shown.
@ -1,80 +1,80 @@
|
||||
--- 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.
|
||||
-- The task system needs to be used to have this reporting facilitated.
|
||||
-- Name: AID-A2G-190 - Communication
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 11 Jan 2019
|
||||
|
||||
-- Define a command center that will communicate with the players.
|
||||
CC_Red = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "Command" )
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection_Red = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
AI_A2G_Dispatcher_Red = AI_A2G_DISPATCHER:New( Detection_Red )
|
||||
|
||||
|
||||
|
||||
|
||||
-- Add defense coordinates.
|
||||
AI_A2G_Dispatcher_Red:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetDefenseReactivityHigh()
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetDefenseRadius( 100000 )
|
||||
|
||||
-- This is the test, not more than 4 defenses in total should engage!
|
||||
AI_A2G_Dispatcher_Red:SetDefaultEngageLimit( 6 )
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
-- 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:SetSquadronSead( "Maykop SEAD", 600, 800 )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||
|
||||
-- CAS
|
||||
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:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
|
||||
-- BAI
|
||||
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:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
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!
|
||||
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()
|
||||
Task_A2G_Dispatcher_Red = TASK_A2G_DISPATCHER:New( Mission_Red, Players_Red, Detection_Red )
|
||||
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.
|
||||
AI_A2G_Dispatcher_Red:SetCommandCenter( CC_Red )
|
||||
|
||||
--- 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.
|
||||
-- The task system needs to be used to have this reporting facilitated.
|
||||
-- Name: AID-A2G-190 - Communication
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 11 Jan 2019
|
||||
|
||||
-- Define a command center that will communicate with the players.
|
||||
CC_Red = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "Command" )
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection_Red = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
AI_A2G_Dispatcher_Red = AI_A2G_DISPATCHER:New( Detection_Red )
|
||||
|
||||
|
||||
|
||||
|
||||
-- Add defense coordinates.
|
||||
AI_A2G_Dispatcher_Red:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetDefenseReactivityHigh()
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetDefenseRadius( 100000 )
|
||||
|
||||
-- This is the test, not more than 4 defenses in total should engage!
|
||||
AI_A2G_Dispatcher_Red:SetDefaultEngageLimit( 6 )
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
-- 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:SetSquadronSead( "Maykop SEAD", 600, 800 )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop SEAD", 60 )
|
||||
|
||||
-- CAS
|
||||
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:SetSquadronTakeoffFromParkingHot( "Maykop CAS" )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop CAS", 0.25 )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronTakeoffInterval( "Maykop CAS", 60 )
|
||||
|
||||
-- BAI
|
||||
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:SetSquadronTakeoffFromParkingHot( "Maykop BAI" )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop BAI", 0.25 )
|
||||
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!
|
||||
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()
|
||||
Task_A2G_Dispatcher_Red = TASK_A2G_DISPATCHER:New( Mission_Red, Players_Red, Detection_Red )
|
||||
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.
|
||||
AI_A2G_Dispatcher_Red:SetCommandCenter( CC_Red )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,63 +1,63 @@
|
||||
--- 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.
|
||||
-- The task system needs to be used to have this reporting facilitated.
|
||||
--
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 20 Jan 2019
|
||||
|
||||
-- Define a command center that will communicate with the players.
|
||||
CC_Red = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "Command" )
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection_Red = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
AI_A2G_Dispatcher_Red = AI_A2G_DISPATCHER:New( Detection_Red )
|
||||
|
||||
|
||||
|
||||
|
||||
-- Add defense coordinates.
|
||||
AI_A2G_Dispatcher_Red:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetDefenseReactivityHigh()
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetDefenseRadius( 100000 )
|
||||
|
||||
-- This is the test, not more than 4 defenses in total should engage!
|
||||
AI_A2G_Dispatcher_Red:SetDefaultEngageLimit( 6 )
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
-- 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:SetSquadronSead( "Maykop SEAD", 600, 800 )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||
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!
|
||||
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()
|
||||
Task_A2G_Dispatcher_Red = TASK_A2G_DISPATCHER:New( Mission_Red, Players_Red, Detection_Red )
|
||||
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.
|
||||
AI_A2G_Dispatcher_Red:SetCommandCenter( CC_Red )
|
||||
|
||||
--- 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.
|
||||
-- The task system needs to be used to have this reporting facilitated.
|
||||
--
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 20 Jan 2019
|
||||
|
||||
-- Define a command center that will communicate with the players.
|
||||
CC_Red = COMMANDCENTER:New( GROUP:FindByName( "HQ" ), "Command" )
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection_Red = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
AI_A2G_Dispatcher_Red = AI_A2G_DISPATCHER:New( Detection_Red )
|
||||
|
||||
|
||||
|
||||
|
||||
-- Add defense coordinates.
|
||||
AI_A2G_Dispatcher_Red:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetDefenseReactivityHigh()
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetDefenseRadius( 100000 )
|
||||
|
||||
-- This is the test, not more than 4 defenses in total should engage!
|
||||
AI_A2G_Dispatcher_Red:SetDefaultEngageLimit( 6 )
|
||||
|
||||
AI_A2G_Dispatcher_Red:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
-- 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:SetSquadronSead( "Maykop SEAD", 600, 800 )
|
||||
AI_A2G_Dispatcher_Red:SetSquadronOverhead( "Maykop SEAD", 0.2 )
|
||||
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!
|
||||
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()
|
||||
Task_A2G_Dispatcher_Red = TASK_A2G_DISPATCHER:New( Mission_Red, Players_Red, Detection_Red )
|
||||
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.
|
||||
AI_A2G_Dispatcher_Red:SetCommandCenter( CC_Red )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,42 +1,42 @@
|
||||
--- Test the default engage limit.
|
||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 15 Nov 2018
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingCold( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
--- Test the default engage limit.
|
||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 15 Nov 2018
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingCold( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
|
||||
Binary file not shown.
@ -1,42 +1,42 @@
|
||||
--- Test the default engage limit.
|
||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 15 Nov 2018
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
--- Test the default engage limit.
|
||||
-- Defenses should engage enemy units, but not more defenses than the defense limit!
|
||||
-- Name: AID-A2G-110 - Default DefenseLimit
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 15 Nov 2018
|
||||
|
||||
-- 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.
|
||||
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".
|
||||
|
||||
-- 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.
|
||||
DetectionSetGroup:FilterStart()
|
||||
|
||||
-- This command defines the reconnaissance network.
|
||||
-- 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.
|
||||
Detection = DETECTION_AREAS:New( DetectionSetGroup, 1000 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2GDispatcher = AI_A2G_DISPATCHER:New( Detection )
|
||||
|
||||
-- Add defense coordinates.
|
||||
A2GDispatcher:AddDefenseCoordinate( "HQ", GROUP:FindByName( "HQ" ):GetCoordinate() )
|
||||
|
||||
A2GDispatcher:SetDefenseReactivityHigh()
|
||||
|
||||
A2GDispatcher:SetDefenseRadius( 100000 )
|
||||
|
||||
A2GDispatcher:SetTacticalDisplay( true )
|
||||
|
||||
local PatrolZone = ZONE:New( "PatrolZone" )
|
||||
|
||||
-- Setup the squadrons.
|
||||
A2GDispatcher:SetSquadron( "Maykop SEAD", AIRBASE.Caucasus.Maykop_Khanskaya, { "CCCP SU-25T SEAD" }, 10 )
|
||||
A2GDispatcher:SetSquadronSead( "Maykop SEAD", 250, 350 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrol( "Maykop SEAD", PatrolZone, 1000, 2500, 400, 600, 1100, 1500 )
|
||||
--A2GDispatcher:SetSquadronSeadPatrolInterval( "Maykop SEAD", 4, 30, 60, 1 )
|
||||
A2GDispatcher:SetSquadronTakeoffFromParkingHot( "Maykop SEAD" )
|
||||
A2GDispatcher:SetSquadronOverhead( "Maykop SEAD", 0.25 )
|
||||
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user