mirror of
https://github.com/FlightControl-Master/MOOSE_MISSIONS.git
synced 2025-08-15 10:37:46 +00:00
MOOSE demonstration missions [skip ci]
This commit is contained in:
parent
9e9c42bf79
commit
5fa61b81cc
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
|
||||
local PlanesClientSet = SET_CLIENT:New():FilterCategories( "plane" ):FilterStart()
|
||||
local AirbasePolice = AIRBASEPOLICE_CAUCASUS:New( PlanesClientSet )
|
||||
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
|
||||
local PlanesClientSet = SET_CLIENT:New():FilterCategories( "plane" ):FilterStart()
|
||||
local AirbasePolice = AIRBASEPOLICE_NEVADA:New( PlanesClientSet )
|
||||
@ -1,3 +0,0 @@
|
||||
|
||||
local PlanesClientSet = SET_CLIENT:New():FilterCategories( "plane" ):FilterStart()
|
||||
local AirbasePolice = AIRBASEPOLICE_NEVADA:New( PlanesClientSet )
|
||||
Binary file not shown.
Binary file not shown.
@ -1,43 +0,0 @@
|
||||
-- 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 +0,0 @@
|
||||
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 +0,0 @@
|
||||
-- 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 +0,0 @@
|
||||
-- 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 +0,0 @@
|
||||
-- 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.
@ -1,163 +0,0 @@
|
||||
-- Name: AIB-007 - AI Balancers For all airports and both coalitions
|
||||
-- Author: Delta99
|
||||
-- Date Created: 11 Feb 2017
|
||||
--
|
||||
-- Originally created to solve issues jg7xman (from Moose Slack group) was having in creating
|
||||
-- AI_BALANCER across multiple airbases.
|
||||
|
||||
-- # Situation:
|
||||
--
|
||||
-- AI_BALANCERS created per airbase for both coalitions. Mutiple patrol zones are created
|
||||
-- for each side. Each flight that is created by AI_BALANCER will pick a random patrol zone
|
||||
-- to patrol.
|
||||
|
||||
-- # Test Cases
|
||||
--
|
||||
-- 1. Observe at least 1 flight spawning and taking off from each airbase.
|
||||
-- 2. Each flight patrols randomly in one of its sides zones.
|
||||
-- 3. AI will respawn after killed.
|
||||
-- 4. Additional client slots are available at Sochi. If players don't take a slot there
|
||||
-- will be more than one AI taking off from Sochi.
|
||||
-- 5. Batumi contains a flight of 3 units rather than just 1 like most of the rest of the airbases.
|
||||
-- 6. Watch the coalition AI clash and kill each other.
|
||||
|
||||
-- Create the Red Patrol Zone Array
|
||||
|
||||
-- This zone array will be used in the AI_BALANCER to randomize the patrol
|
||||
-- zone that each spawned group will patrol
|
||||
|
||||
RedPatrolZone = {}
|
||||
RedPatrolZone[1] = ZONE:New( "RedPatrolZone1" )
|
||||
RedPatrolZone[2] = ZONE:New( "RedPatrolZone2" )
|
||||
RedPatrolZone[3] = ZONE:New( "RedPatrolZone3" )
|
||||
RedPatrolZone[4] = ZONE:New( "RedPatrolZone4" )
|
||||
RedPatrolZone[5] = ZONE:New( "RedPatrolZone5" )
|
||||
RedPatrolZone[6] = ZONE:New( "RedPatrolZone6" )
|
||||
|
||||
-- Russian CAP Aircraft
|
||||
|
||||
-- These are the aircraft created in the mission editor that the AI will spawn
|
||||
-- with replacing any CLIENT created aircraft in the mission that a human
|
||||
-- player does not take.
|
||||
|
||||
RU_PlanesSpawn = {}
|
||||
RU_PlanesSpawn[1] = SPAWN:New( "RU CAP Anapa AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[2] = SPAWN:New( "RU CAP Beslan AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[3] = SPAWN:New( "RU CAP Gelendzhik AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[4] = SPAWN:New( "RU CAP Krasnodar Center AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[5] = SPAWN:New( "RU CAP Krasnodar Pashkovsky AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[6] = SPAWN:New( "RU CAP Krymsk AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[7] = SPAWN:New( "RU CAP Maykop AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[8] = SPAWN:New( "RU CAP Mineralnye Vody AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[9] = SPAWN:New( "RU CAP Mozdok AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[10] = SPAWN:New( "RU CAP Nalchik AB" ):InitCleanUp( 45 )
|
||||
RU_PlanesSpawn[11] = SPAWN:New( "RU CAP Novorossiysk AB" ):InitCleanUp( 45 )
|
||||
|
||||
-- Russian Client Aircraft (via AI_BALANCER, AI will replace these if no human players are in the slot)
|
||||
|
||||
-- If you want more client slots per airbase that you want AI to be able to take control of then
|
||||
-- name them with the prefixes below and they will be picked up automatically by FilterPrevixes.
|
||||
--
|
||||
-- For example, if you want another Client slot available at Anapa name it "RU CLIENT Anapa AB 2".
|
||||
-- The code here does not need to be changed. Only an addition in the mission editor. An example
|
||||
-- of this can be found on the USA side at Sochi AB.
|
||||
|
||||
RU_PlanesClientSet = {}
|
||||
RU_PlanesClientSet[1] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Anapa AB")
|
||||
RU_PlanesClientSet[2] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Beslan AB")
|
||||
RU_PlanesClientSet[3] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Gelendzhik AB")
|
||||
RU_PlanesClientSet[4] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Krasnodar Center AB")
|
||||
RU_PlanesClientSet[5] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Krasnodar Pashkovsky AB")
|
||||
RU_PlanesClientSet[6] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Krymsk AB")
|
||||
RU_PlanesClientSet[7] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Maykop AB")
|
||||
RU_PlanesClientSet[8] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Mineralnye Vody AB")
|
||||
RU_PlanesClientSet[9] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Mozdok AB")
|
||||
RU_PlanesClientSet[10] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Nalchik AB")
|
||||
RU_PlanesClientSet[11] = SET_CLIENT:New():FilterPrefixes("RU CLIENT Novorossiysk AB")
|
||||
|
||||
-- We setup an array to store all the AI_BALANCERS that are going to be created. Basically one
|
||||
-- per airbase. We loop through and create an AI_BALANCER as well as a separate OnAfterSpawned
|
||||
-- function for each. The Patrol Zone is randomized in the first parameter to AI_PATROL_ZONE:New()
|
||||
-- call. This is done for each of the AI_BALANCERS. To add more patrol zones, just define them in
|
||||
-- the mission editor and add into the array above. Code here does not need to be changed. The
|
||||
-- table.getn(RedPatrolZone) gets the number of elements in the RedPatrolZone array so that all
|
||||
-- of them are included to pick randomly.
|
||||
|
||||
|
||||
RU_AI_Balancer = {}
|
||||
for i=1, 11 do
|
||||
RU_AI_Balancer[i] = AI_BALANCER:New(RU_PlanesClientSet[i], RU_PlanesSpawn[i])
|
||||
|
||||
-- We set a local variable within the for loop to the AI_BALANCER that was just created.
|
||||
-- I couldn't get RU_AI_BALANCER[i]:OnAfterSpawn to be recognized so this is just pointing
|
||||
-- curAIBalancer to the relevant RU_AI_BALANCER array item for each loop.
|
||||
|
||||
-- So in this case there are essentially 11 OnAfterSpawned functions defined and handled.
|
||||
|
||||
local curAIBalancer = RU_AI_Balancer[i]
|
||||
function curAIBalancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||
local Patrol = AI_PATROL_ZONE:New( RedPatrolZone[math.random( 1, table.getn(RedPatrolZone))], 1500, 5500, 700, 1400 )
|
||||
Patrol:ManageFuel( 0.2, 60 )
|
||||
Patrol:SetControllable( AIGroup )
|
||||
Patrol:Start()
|
||||
end
|
||||
end
|
||||
|
||||
-- US / Blue side is setup pretty much identically to the RU side above. Same detailed comments
|
||||
-- above apply here. The main difference here is 10 airbases instead of 11.
|
||||
|
||||
-- Another difference is additional client slots at Sochi and a group defined at Batumi with
|
||||
-- more than 1 unit per group (flight of 3 units). This is just to show that you can have more
|
||||
-- client slots per airbase and more units in a single group that the AI will control. I think
|
||||
-- this will also allow you to fly lead with AI on your wing or you can fly wing with an AI
|
||||
-- leader.
|
||||
|
||||
-- Create the Blue Patrol Zone Array
|
||||
BluePatrolZone = {}
|
||||
BluePatrolZone[1] = ZONE:New( "BluePatrolZone1")
|
||||
BluePatrolZone[2] = ZONE:New( "BluePatrolZone2")
|
||||
BluePatrolZone[3] = ZONE:New( "BluePatrolZone3")
|
||||
BluePatrolZone[4] = ZONE:New( "BluePatrolZone4")
|
||||
BluePatrolZone[5] = ZONE:New( "BluePatrolZone5")
|
||||
BluePatrolZone[6] = ZONE:New( "BluePatrolZone6")
|
||||
|
||||
--United States CAP Aircraft (these are used as templates for AI)
|
||||
|
||||
US_PlanesSpawn = {}
|
||||
US_PlanesSpawn[1] = SPAWN:New( "US CAP Batumi AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[2] = SPAWN:New( "US CAP Gudauta AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[3] = SPAWN:New( "US CAP Kobuleti AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[4] = SPAWN:New( "US CAP Kutaisi AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[5] = SPAWN:New( "US CAP Senaki AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[6] = SPAWN:New( "US CAP Sochi AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[7] = SPAWN:New( "US CAP Soganlug AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[8] = SPAWN:New( "US CAP Sukhumi AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[9] = SPAWN:New( "US CAP Vaziani AB" ):InitCleanUp( 45 )
|
||||
US_PlanesSpawn[10] = SPAWN:New( "US CAP Tbilisi AB" ):InitCleanUp( 45 )
|
||||
|
||||
--United States Client Aircraft (via AI_BALANCER, AI will replace these if no human players are in the slot)
|
||||
|
||||
US_PlanesClientSet = {}
|
||||
US_PlanesClientSet[1] = SET_CLIENT:New():FilterPrefixes("US CLIENT Batumi AB")
|
||||
US_PlanesClientSet[2] = SET_CLIENT:New():FilterPrefixes("US CLIENT Gudauta AB")
|
||||
US_PlanesClientSet[3] = SET_CLIENT:New():FilterPrefixes("US CLIENT Kobuleti AB")
|
||||
US_PlanesClientSet[4] = SET_CLIENT:New():FilterPrefixes("US CLIENT Kutaisi AB")
|
||||
US_PlanesClientSet[5] = SET_CLIENT:New():FilterPrefixes("US CLIENT Senaki AB")
|
||||
US_PlanesClientSet[6] = SET_CLIENT:New():FilterPrefixes("US CLIENT Sochi AB")
|
||||
US_PlanesClientSet[7] = SET_CLIENT:New():FilterPrefixes("US CLIENT Soganlug AB")
|
||||
US_PlanesClientSet[8] = SET_CLIENT:New():FilterPrefixes("US CLIENT Sukhumi AB")
|
||||
US_PlanesClientSet[9] = SET_CLIENT:New():FilterPrefixes("US CLIENT Vaziani AB")
|
||||
US_PlanesClientSet[10] = SET_CLIENT:New():FilterPrefixes("US CLIENT Tbilisi AB")
|
||||
|
||||
US_AI_Balancer = {}
|
||||
for i=1, 10 do
|
||||
US_AI_Balancer[i] = AI_BALANCER:New( US_PlanesClientSet[i], US_PlanesSpawn[i] )
|
||||
|
||||
local curAIBalancer = US_AI_Balancer[i]
|
||||
function curAIBalancer:OnAfterSpawned( SetGroup, From, Event, To, AIGroup )
|
||||
local Patrol = AI_PATROL_ZONE:New( BluePatrolZone[math.random( 1, table.getn(BluePatrolZone))], 1500, 5500, 700, 1400 )
|
||||
Patrol:ManageFuel( 0.2, 60 )
|
||||
Patrol:SetControllable( AIGroup )
|
||||
Patrol:Start()
|
||||
end
|
||||
end
|
||||
Binary file not shown.
@ -1,20 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-APC-000 - APC
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
-- Date Checked: 01 Jan 2021
|
||||
-- Working example
|
||||
--
|
||||
-- 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,18 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-APC-001 - APC with Cargo declared in ME
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
-- Date Checked: 01 Dec 2021
|
||||
-- Changed Cargo auto tag from ~ to #, working example
|
||||
--
|
||||
-- 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:
|
||||
-- e.g. Infantry1#CARGO(T=Infantry,RR=2000,NR=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,12 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-APC-002 - APC Move by Game Master
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 26 Mar 2018
|
||||
-- Date Checked: 01 Jan 2021. Changed ~ to # in ME Group Names. Not sure how this is supposed to work for the Game Master
|
||||
|
||||
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 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-APC-003 - APC Troops and Equipment
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 07 Apr 2018
|
||||
-- Date Checked: 01 Jan 2021
|
||||
|
||||
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,29 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-APC-004 - APC Pickup
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 23 Apr 2018
|
||||
-- Date Checked: 01 Jan 2021, working example, changed Deploy to async call
|
||||
|
||||
BASE:TraceClass("AI_CARGO_APC")
|
||||
BASE:TraceOn()
|
||||
|
||||
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( 1, ZONE:New( "Deploy" ):GetCoordinate() )
|
||||
end
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,29 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-APC-001 - Troops Relocate APC
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 07 Apr 2018
|
||||
-- Date Checked: 01 Jan 2021
|
||||
--
|
||||
-- Demonstration of troops relocation when carrier is destroyed...
|
||||
-- Carrier will relocate to the rescue carrier.
|
||||
--
|
||||
|
||||
BASE:TraceClass("AI_CARGO_APC")
|
||||
|
||||
local InfantryCargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||
|
||||
local CargoCarrier = GROUP:FindByName( "Carrier" )
|
||||
|
||||
CargoTroops = AI_CARGO_APC:New( CargoCarrier, InfantryCargoSet, 500 )
|
||||
|
||||
|
||||
function CargoTroops:OnAfterDestroyed( CargoCarrier )
|
||||
CargoTroops:F( { Destroyed = CargoCarrier } )
|
||||
-- The coordinate is passed where the carrier is destroyed.
|
||||
local NewCarrierGroup = self:FindCarrier( CargoCarrier:GetCoordinate(), 1000 ) -- which returns one Carrier GROUP object or nil.
|
||||
if NewCarrierGroup then
|
||||
self:SetCarrier( NewCarrierGroup )
|
||||
self:__Pickup(1,ZONE:New("Pickup Zone"):GetCoordinate(),30)
|
||||
end
|
||||
end
|
||||
|
||||
Binary file not shown.
@ -1,13 +0,0 @@
|
||||
---
|
||||
-- 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 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-APC-004 - APC Pickup
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 23 Apr 2018
|
||||
-- Date Checked: 01 Jan 2021
|
||||
|
||||
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( 5, ZONE:New( "Deploy" ):GetRandomCoordinate( 300, 500 ) )
|
||||
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 ) )
|
||||
end
|
||||
|
||||
Cargo_APC[i]:__Pickup( i * 30, ZONE:New( "Pickup" ):GetRandomCoordinate( 50, 70 ) )
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,583 +0,0 @@
|
||||
--- **AI** -- (R2.4) - Models the intelligent transportation of infantry and other cargo.
|
||||
--
|
||||
-- ===
|
||||
--
|
||||
-- ### Author: **FlightControl**
|
||||
--
|
||||
-- ===
|
||||
--
|
||||
-- @module AI.AI_Cargo
|
||||
-- @image Cargo.JPG
|
||||
|
||||
--- @type AI_CARGO
|
||||
-- @extends Core.Fsm#FSM_CONTROLLABLE
|
||||
|
||||
|
||||
--- Base class for the dynamic cargo handling capability for AI groups.
|
||||
--
|
||||
-- Carriers can be mobilized to intelligently transport infantry and other cargo within the simulation.
|
||||
-- The AI_CARGO module uses the @{Cargo.Cargo} capabilities within the MOOSE framework.
|
||||
-- CARGO derived objects must be declared within the mission to make the AI_CARGO object recognize the cargo.
|
||||
-- Please consult the @{Cargo.Cargo} module for more information.
|
||||
--
|
||||
-- The derived classes from this module are:
|
||||
--
|
||||
-- * @{AI.AI_Cargo_APC} - Cargo transportation using APCs and other vehicles between zones.
|
||||
-- * @{AI.AI_Cargo_Helicopter} - Cargo transportation using helicopters between zones.
|
||||
-- * @{AI.AI_Cargo_Airplane} - Cargo transportation using airplanes to and from airbases.
|
||||
--
|
||||
-- @field #AI_CARGO
|
||||
AI_CARGO = {
|
||||
ClassName = "AI_CARGO",
|
||||
Coordinate = nil, -- Core.Point#COORDINATE,
|
||||
Carrier_Cargo = {},
|
||||
}
|
||||
|
||||
--- Creates a new AI_CARGO object.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param Core.Set#SET_CARGO CargoSet
|
||||
-- @param #number CombatRadius
|
||||
-- @return #AI_CARGO
|
||||
function AI_CARGO:New( Carrier, CargoSet )
|
||||
|
||||
local self = BASE:Inherit( self, FSM_CONTROLLABLE:New( Carrier ) ) -- #AI_CARGO
|
||||
|
||||
self.CargoSet = CargoSet -- Core.Set#SET_CARGO
|
||||
self.CargoCarrier = Carrier -- Wrapper.Group#GROUP
|
||||
|
||||
self:SetStartState( "Unloaded" )
|
||||
|
||||
self:AddTransition( "Unloaded", "Pickup", "*" )
|
||||
self:AddTransition( "Loaded", "Deploy", "*" )
|
||||
|
||||
self:AddTransition( "*", "Load", "Boarding" )
|
||||
self:AddTransition( { "Boarding", "Loaded" }, "Board", "Boarding" )
|
||||
self:AddTransition( "Boarding", "Loaded", "Boarding" )
|
||||
self:AddTransition( "Boarding", "PickedUp", "Loaded" )
|
||||
|
||||
self:AddTransition( "Loaded", "Unload", "Unboarding" )
|
||||
self:AddTransition( "Unboarding", "Unboard", "Unboarding" )
|
||||
self:AddTransition( "Unboarding", "Unloaded", "Unboarding" )
|
||||
self:AddTransition( "Unboarding", "Deployed", "Unloaded" )
|
||||
|
||||
--- Pickup Handler OnBefore for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] OnBeforePickup
|
||||
-- @param #AI_CARGO self
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
-- @param Core.Point#COORDINATE Coordinate
|
||||
-- @param #number Speed Speed in km/h. Default is 50% of max possible speed the group can do.
|
||||
-- @return #boolean
|
||||
|
||||
--- Pickup Handler OnAfter for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] OnAfterPickup
|
||||
-- @param #AI_CARGO self
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
-- @param Core.Point#COORDINATE Coordinate
|
||||
-- @param #number Speed Speed in km/h. Default is 50% of max possible speed the group can do.
|
||||
|
||||
--- Pickup Trigger for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] Pickup
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Core.Point#COORDINATE Coordinate
|
||||
-- @param #number Speed Speed in km/h. Default is 50% of max possible speed the group can do.
|
||||
|
||||
--- Pickup Asynchronous Trigger for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] __Pickup
|
||||
-- @param #AI_CARGO self
|
||||
-- @param #number Delay
|
||||
-- @param Core.Point#COORDINATE Coordinate Pickup place. If not given, loading starts at the current location.
|
||||
-- @param #number Speed Speed in km/h. Default is 50% of max possible speed the group can do.
|
||||
|
||||
--- Deploy Handler OnBefore for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] OnBeforeDeploy
|
||||
-- @param #AI_CARGO self
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
-- @param Core.Point#COORDINATE Coordinate
|
||||
-- @param #number Speed Speed in km/h. Default is 50% of max possible speed the group can do.
|
||||
-- @return #boolean
|
||||
|
||||
--- Deploy Handler OnAfter for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] OnAfterDeploy
|
||||
-- @param #AI_CARGO self
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
-- @param Core.Point#COORDINATE Coordinate
|
||||
-- @param #number Speed Speed in km/h. Default is 50% of max possible speed the group can do.
|
||||
|
||||
--- Deploy Trigger for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] Deploy
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Core.Point#COORDINATE Coordinate
|
||||
-- @param #number Speed Speed in km/h. Default is 50% of max possible speed the group can do.
|
||||
|
||||
--- Deploy Asynchronous Trigger for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] __Deploy
|
||||
-- @param #AI_CARGO self
|
||||
-- @param #number Delay
|
||||
-- @param Core.Point#COORDINATE Coordinate
|
||||
-- @param #number Speed Speed in km/h. Default is 50% of max possible speed the group can do.
|
||||
|
||||
|
||||
--- Loaded Handler OnAfter for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] OnAfterLoaded
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
|
||||
--- Unloaded Handler OnAfter for AI_CARGO
|
||||
-- @function [parent=#AI_CARGO] OnAfterUnloaded
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From
|
||||
-- @param #string Event
|
||||
-- @param #string To
|
||||
|
||||
--- On after Deployed event.
|
||||
-- @function [parent=#AI_CARGO] OnAfterDeployed
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE.
|
||||
-- @param #boolean Defend Defend for APCs.
|
||||
|
||||
|
||||
for _, CarrierUnit in pairs( Carrier:GetUnits() ) do
|
||||
local CarrierUnit = CarrierUnit -- Wrapper.Unit#UNIT
|
||||
CarrierUnit:SetCargoBayWeightLimit()
|
||||
end
|
||||
|
||||
self.Transporting = false
|
||||
self.Relocating = false
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
|
||||
|
||||
function AI_CARGO:IsTransporting()
|
||||
|
||||
return self.Transporting == true
|
||||
end
|
||||
|
||||
function AI_CARGO:IsRelocating()
|
||||
|
||||
return self.Relocating == true
|
||||
end
|
||||
|
||||
|
||||
--- On after Pickup event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP APC
|
||||
-- @param From
|
||||
-- @param Event
|
||||
-- @param To
|
||||
-- @param Core.Point#COORDINATE Coordinate of the pickup point.
|
||||
-- @param #number Speed Speed in km/h to drive to the pickup coordinate. Default is 50% of max possible speed the unit can go.
|
||||
-- @param #number Height Height in meters to move to the home coordinate.
|
||||
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
||||
function AI_CARGO:onafterPickup( APC, From, Event, To, Coordinate, Speed, Height, PickupZone )
|
||||
|
||||
self.Transporting = false
|
||||
self.Relocating = true
|
||||
|
||||
end
|
||||
|
||||
|
||||
--- On after Deploy event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP APC
|
||||
-- @param From
|
||||
-- @param Event
|
||||
-- @param To
|
||||
-- @param Core.Point#COORDINATE Coordinate Deploy place.
|
||||
-- @param #number Speed Speed in km/h to drive to the depoly coordinate. Default is 50% of max possible speed the unit can go.
|
||||
-- @param #number Height Height in meters to move to the deploy coordinate.
|
||||
-- @param Core.Zone#ZONE DeployZone The zone where the cargo will be deployed.
|
||||
function AI_CARGO:onafterDeploy( APC, From, Event, To, Coordinate, Speed, Height, DeployZone )
|
||||
|
||||
self.Relocating = false
|
||||
self.Transporting = true
|
||||
|
||||
end
|
||||
|
||||
--- On before Load event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
||||
function AI_CARGO:onbeforeLoad( Carrier, From, Event, To, PickupZone )
|
||||
self:F( { Carrier, From, Event, To } )
|
||||
|
||||
local Boarding = false
|
||||
|
||||
local LoadInterval = 2
|
||||
local LoadDelay = 1
|
||||
local Carrier_List = {}
|
||||
local Carrier_Weight = {}
|
||||
|
||||
if Carrier and Carrier:IsAlive() then
|
||||
self.Carrier_Cargo = {}
|
||||
for _, CarrierUnit in pairs( Carrier:GetUnits() ) do
|
||||
local CarrierUnit = CarrierUnit -- Wrapper.Unit#UNIT
|
||||
|
||||
local CargoBayFreeWeight = CarrierUnit:GetCargoBayFreeWeight()
|
||||
self:F({CargoBayFreeWeight=CargoBayFreeWeight})
|
||||
|
||||
Carrier_List[#Carrier_List+1] = CarrierUnit
|
||||
Carrier_Weight[CarrierUnit] = CargoBayFreeWeight
|
||||
end
|
||||
|
||||
local Carrier_Count = #Carrier_List
|
||||
local Carrier_Index = 1
|
||||
|
||||
local Loaded = false
|
||||
|
||||
for _, Cargo in UTILS.spairs( self.CargoSet:GetSet(), function( t, a, b ) return t[a]:GetWeight() > t[b]:GetWeight() end ) do
|
||||
local Cargo = Cargo -- Cargo.Cargo#CARGO
|
||||
|
||||
self:F( { IsUnLoaded = Cargo:IsUnLoaded(), IsDeployed = Cargo:IsDeployed(), Cargo:GetName(), Carrier:GetName() } )
|
||||
|
||||
-- Try all Carriers, but start from the one according the Carrier_Index
|
||||
for Carrier_Loop = 1, #Carrier_List do
|
||||
|
||||
local CarrierUnit = Carrier_List[Carrier_Index] -- Wrapper.Unit#UNIT
|
||||
|
||||
-- This counters loop through the available Carriers.
|
||||
Carrier_Index = Carrier_Index + 1
|
||||
if Carrier_Index > Carrier_Count then
|
||||
Carrier_Index = 1
|
||||
end
|
||||
|
||||
if Cargo:IsUnLoaded() and not Cargo:IsDeployed() then
|
||||
if Cargo:IsInLoadRadius( CarrierUnit:GetCoordinate() ) then
|
||||
self:F( { "In radius", CarrierUnit:GetName() } )
|
||||
|
||||
local CargoWeight = Cargo:GetWeight()
|
||||
local CarrierSpace=Carrier_Weight[CarrierUnit]
|
||||
|
||||
-- Only when there is space within the bay to load the next cargo item!
|
||||
if CarrierSpace > CargoWeight then
|
||||
Carrier:RouteStop()
|
||||
--Cargo:Ungroup()
|
||||
Cargo:__Board( -LoadDelay, CarrierUnit )
|
||||
self:__Board( LoadDelay, Cargo, CarrierUnit, PickupZone )
|
||||
|
||||
LoadDelay = LoadDelay + Cargo:GetCount() * LoadInterval
|
||||
|
||||
-- So now this CarrierUnit has Cargo that is being loaded.
|
||||
-- This will be used further in the logic to follow and to check cargo status.
|
||||
self.Carrier_Cargo[Cargo] = CarrierUnit
|
||||
Boarding = true
|
||||
Carrier_Weight[CarrierUnit] = Carrier_Weight[CarrierUnit] - CargoWeight
|
||||
Loaded = true
|
||||
|
||||
-- Ok, we loaded a cargo, now we can stop the loop.
|
||||
break
|
||||
else
|
||||
self:T(string.format("WARNING: Cargo too heavy for carrier %s. Cargo=%.1f > %.1f free space", tostring(CarrierUnit:GetName()), CargoWeight, CarrierSpace))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if not Loaded == true then
|
||||
-- No loading happened, so we need to pickup something else.
|
||||
self.Relocating = false
|
||||
end
|
||||
end
|
||||
|
||||
return Boarding
|
||||
|
||||
end
|
||||
|
||||
|
||||
--- On before Reload event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
||||
function AI_CARGO:onbeforeReload( Carrier, From, Event, To )
|
||||
self:F( { Carrier, From, Event, To } )
|
||||
|
||||
local Boarding = false
|
||||
|
||||
local LoadInterval = 2
|
||||
local LoadDelay = 1
|
||||
local Carrier_List = {}
|
||||
local Carrier_Weight = {}
|
||||
|
||||
if Carrier and Carrier:IsAlive() then
|
||||
for _, CarrierUnit in pairs( Carrier:GetUnits() ) do
|
||||
local CarrierUnit = CarrierUnit -- Wrapper.Unit#UNIT
|
||||
|
||||
Carrier_List[#Carrier_List+1] = CarrierUnit
|
||||
end
|
||||
|
||||
local Carrier_Count = #Carrier_List
|
||||
local Carrier_Index = 1
|
||||
|
||||
local Loaded = false
|
||||
|
||||
for Cargo, CarrierUnit in pairs( self.Carrier_Cargo ) do
|
||||
local Cargo = Cargo -- Cargo.Cargo#CARGO
|
||||
|
||||
self:F( { IsUnLoaded = Cargo:IsUnLoaded(), IsDeployed = Cargo:IsDeployed(), Cargo:GetName(), Carrier:GetName() } )
|
||||
|
||||
-- Try all Carriers, but start from the one according the Carrier_Index
|
||||
for Carrier_Loop = 1, #Carrier_List do
|
||||
|
||||
local CarrierUnit = Carrier_List[Carrier_Index] -- Wrapper.Unit#UNIT
|
||||
|
||||
-- This counters loop through the available Carriers.
|
||||
Carrier_Index = Carrier_Index + 1
|
||||
if Carrier_Index > Carrier_Count then
|
||||
Carrier_Index = 1
|
||||
end
|
||||
|
||||
if Cargo:IsUnLoaded() and not Cargo:IsDeployed() then
|
||||
Carrier:RouteStop()
|
||||
Cargo:__Board( -LoadDelay, CarrierUnit )
|
||||
self:__Board( LoadDelay, Cargo, CarrierUnit )
|
||||
|
||||
LoadDelay = LoadDelay + Cargo:GetCount() * LoadInterval
|
||||
|
||||
-- So now this CarrierUnit has Cargo that is being loaded.
|
||||
-- This will be used further in the logic to follow and to check cargo status.
|
||||
self.Carrier_Cargo[Cargo] = CarrierUnit
|
||||
Boarding = true
|
||||
Loaded = true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if not Loaded == true then
|
||||
-- No loading happened, so we need to pickup something else.
|
||||
self.Relocating = false
|
||||
end
|
||||
end
|
||||
|
||||
return Boarding
|
||||
|
||||
end
|
||||
|
||||
--- On after Board event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param Cargo.Cargo#CARGO Cargo Cargo object.
|
||||
-- @param Wrapper.Unit#UNIT CarrierUnit
|
||||
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
||||
function AI_CARGO:onafterBoard( Carrier, From, Event, To, Cargo, CarrierUnit, PickupZone )
|
||||
self:F( { Carrier, From, Event, To, Cargo, CarrierUnit:GetName() } )
|
||||
|
||||
if Carrier and Carrier:IsAlive() and From == "Boarding" then
|
||||
self:F({ IsLoaded = Cargo:IsLoaded(), Cargo:GetName(), Carrier:GetName() } )
|
||||
if not Cargo:IsLoaded() and not Cargo:IsDestroyed() then
|
||||
self:__Board( -10, Cargo, CarrierUnit, PickupZone )
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
self:__Loaded( 0.1, Cargo, CarrierUnit, PickupZone )
|
||||
|
||||
end
|
||||
|
||||
--- On after Loaded event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @return #boolean Cargo loaded.
|
||||
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
||||
function AI_CARGO:onafterLoaded( Carrier, From, Event, To, Cargo, PickupZone )
|
||||
self:F( { Carrier, From, Event, To } )
|
||||
|
||||
local Loaded = true
|
||||
|
||||
if Carrier and Carrier:IsAlive() then
|
||||
for Cargo, CarrierUnit in pairs( self.Carrier_Cargo ) do
|
||||
local Cargo = Cargo -- Cargo.Cargo#CARGO
|
||||
self:F( { IsLoaded = Cargo:IsLoaded(), IsDestroyed = Cargo:IsDestroyed(), Cargo:GetName(), Carrier:GetName() } )
|
||||
if not Cargo:IsLoaded() and not Cargo:IsDestroyed() then
|
||||
Loaded = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if Loaded then
|
||||
self:__PickedUp( 0.1, PickupZone )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--- On after PickedUp event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
||||
function AI_CARGO:onafterPickedUp( Carrier, From, Event, To, PickupZone )
|
||||
self:F( { Carrier, From, Event, To } )
|
||||
|
||||
Carrier:RouteResume()
|
||||
|
||||
local HasCargo = false
|
||||
if Carrier and Carrier:IsAlive() then
|
||||
for Cargo, CarrierUnit in pairs( self.Carrier_Cargo ) do
|
||||
HasCargo = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
self.Relocating = false
|
||||
if HasCargo then
|
||||
self:F( "Transporting" )
|
||||
self.Transporting = true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
--- On after Unload event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE.
|
||||
function AI_CARGO:onafterUnload( Carrier, From, Event, To, DeployZone, Defend )
|
||||
self:F( { Carrier, From, Event, To, DeployZone, Defend = Defend } )
|
||||
|
||||
local UnboardInterval = 5
|
||||
local UnboardDelay = 5
|
||||
|
||||
if Carrier and Carrier:IsAlive() then
|
||||
for _, CarrierUnit in pairs( Carrier:GetUnits() ) do
|
||||
local CarrierUnit = CarrierUnit -- Wrapper.Unit#UNIT
|
||||
Carrier:RouteStop()
|
||||
for _, Cargo in pairs( CarrierUnit:GetCargo() ) do
|
||||
self:F( { Cargo = Cargo:GetName(), Isloaded = Cargo:IsLoaded() } )
|
||||
if Cargo:IsLoaded() then
|
||||
Cargo:__UnBoard( UnboardDelay )
|
||||
UnboardDelay = UnboardDelay + Cargo:GetCount() * UnboardInterval
|
||||
self:__Unboard( UnboardDelay, Cargo, CarrierUnit, DeployZone, Defend )
|
||||
if not Defend == true then
|
||||
Cargo:SetDeployed( true )
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--- On after Unboard event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param #string Cargo.Cargo#CARGO Cargo Cargo object.
|
||||
-- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE.
|
||||
function AI_CARGO:onafterUnboard( Carrier, From, Event, To, Cargo, CarrierUnit, DeployZone, Defend )
|
||||
self:F( { Carrier, From, Event, To, Cargo:GetName(), DeployZone = DeployZone, Defend = Defend } )
|
||||
|
||||
if Carrier and Carrier:IsAlive() and From == "Unboarding" then
|
||||
if not Cargo:IsUnLoaded() then
|
||||
self:__Unboard( 10, Cargo, CarrierUnit, DeployZone, Defend )
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
self:Unloaded( Cargo, CarrierUnit, DeployZone, Defend )
|
||||
|
||||
end
|
||||
|
||||
--- On after Unloaded event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param #string Cargo.Cargo#CARGO Cargo Cargo object.
|
||||
-- @param #boolean Deployed Cargo is deployed.
|
||||
-- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE.
|
||||
function AI_CARGO:onafterUnloaded( Carrier, From, Event, To, Cargo, CarrierUnit, DeployZone, Defend )
|
||||
self:F( { Carrier, From, Event, To, Cargo:GetName(), DeployZone = DeployZone, Defend = Defend } )
|
||||
|
||||
local AllUnloaded = true
|
||||
|
||||
--Cargo:Regroup()
|
||||
|
||||
if Carrier and Carrier:IsAlive() then
|
||||
for _, CarrierUnit in pairs( Carrier:GetUnits() ) do
|
||||
local CarrierUnit = CarrierUnit -- Wrapper.Unit#UNIT
|
||||
local IsEmpty = CarrierUnit:IsCargoEmpty()
|
||||
self:I({ IsEmpty = IsEmpty })
|
||||
if not IsEmpty then
|
||||
AllUnloaded = false
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if AllUnloaded == true then
|
||||
if DeployZone == true then
|
||||
self.Carrier_Cargo = {}
|
||||
end
|
||||
self.CargoCarrier = Carrier
|
||||
end
|
||||
end
|
||||
|
||||
if AllUnloaded == true then
|
||||
self:__Deployed( 5, DeployZone, Defend )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--- On after Deployed event.
|
||||
-- @param #AI_CARGO self
|
||||
-- @param Wrapper.Group#GROUP Carrier
|
||||
-- @param #string From From state.
|
||||
-- @param #string Event Event.
|
||||
-- @param #string To To state.
|
||||
-- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE.
|
||||
-- @param #boolean Defend Defend for APCs.
|
||||
function AI_CARGO:onafterDeployed( Carrier, From, Event, To, DeployZone, Defend )
|
||||
self:F( { Carrier, From, Event, To, DeployZone = DeployZone, Defend = Defend } )
|
||||
|
||||
if not Defend == true then
|
||||
self.Transporting = false
|
||||
else
|
||||
self:F( "Defending" )
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Binary file not shown.
@ -1,38 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-HEL-000 - Helicopter
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 13 Apr 2018
|
||||
-- Date Checked: 01 Jan 2021
|
||||
-- Updated Moose, needs fix #1417 to work
|
||||
--
|
||||
BASE:TraceClass("AI_CARGO")
|
||||
BASE:TraceClass("AI_CARGO_HELICOPTER")
|
||||
BASE:TraceOn()
|
||||
|
||||
WorkerCargoSet = SET_CARGO:New():FilterTypes( "Workers" ):FilterStart()
|
||||
|
||||
|
||||
for i = 1, 5 do
|
||||
local WorkerGroup = GROUP:FindByName( string.format( "Infantry %03d", i ) )
|
||||
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Workers", string.format( "Infantry %d", i ), 750, 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( 400, 100 ) )
|
||||
|
||||
function CargoHelicopter:OnAfterLoaded( Helicopter, From, Event, To, Cargo )
|
||||
CargoHelicopter:__Deploy(5,DeployZones[math.random( 1, #DeployZones ) ]:GetRandomCoordinate( 500, 100 ), math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
|
||||
function CargoHelicopter:OnAfterUnloaded( Helicopter, From, Event, To, Cargo )
|
||||
CargoHelicopter:__Pickup( 5,PickupZone:GetRandomCoordinate( 500, 200 ), math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,38 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-HEL-000 - Helicopter
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 13 Apr 2018
|
||||
-- Date Checked: 01 Jan 2021
|
||||
-- Updated Moose, needs fix #1417 to work
|
||||
--
|
||||
BASE:TraceClass("AI_CARGO")
|
||||
BASE:TraceClass("AI_CARGO_HELICOPTER")
|
||||
BASE:TraceOn()
|
||||
|
||||
WorkerCargoSet = SET_CARGO:New():FilterTypes( "Workers" ):FilterStart()
|
||||
|
||||
|
||||
for i = 1, 5 do
|
||||
local WorkerGroup = GROUP:FindByName( string.format( "Infantry %03d", i ) )
|
||||
local WorkersCargo = CARGO_GROUP:New( WorkerGroup, "Workers", string.format( "Infantry %d", i ), 750, 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( 400, 100 ) )
|
||||
|
||||
function CargoHelicopter:OnAfterLoaded( Helicopter, From, Event, To, Cargo )
|
||||
CargoHelicopter:__Deploy(5,DeployZones[math.random( 1, #DeployZones ) ]:GetRandomCoordinate( 500, 100 ), math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
|
||||
function CargoHelicopter:OnAfterUnloaded( Helicopter, From, Event, To, Cargo )
|
||||
CargoHelicopter:__Pickup( 5,PickupZone:GetRandomCoordinate( 500, 200 ), math.random( 50, 250 ) )
|
||||
end
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,37 +0,0 @@
|
||||
---
|
||||
-- Name: AIC-PLN-000 - Airplane
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 14 Apr 2018
|
||||
-- Date Checked: 01 Jan 2021
|
||||
-- Update to latest Moose, working
|
||||
--
|
||||
|
||||
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
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,142 +0,0 @@
|
||||
---
|
||||
-- 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.
@ -1,27 +0,0 @@
|
||||
---
|
||||
-- Name: AID-008 - AI_A2A - CAP Grouping Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 06 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( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27" } )
|
||||
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200 )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 10, 30, 1 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
Binary file not shown.
@ -1,30 +0,0 @@
|
||||
---
|
||||
-- Name: AID-009 - AI_A2A - Border Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 06 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 )
|
||||
|
||||
-- Setup the border zone.
|
||||
-- In this case the border 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:SetTacticalDisplay( true )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 1000, 1500 )
|
||||
Binary file not shown.
@ -1,50 +0,0 @@
|
||||
---
|
||||
-- Name: AID-010 - AI_A2A - 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( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffFromParkingCold()
|
||||
A2ADispatcher:SetDefaultLandingAtEngineShutdown()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 180
|
||||
|
||||
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.
@ -1,51 +0,0 @@
|
||||
---
|
||||
-- Name: AID-011 - AI_A2A - RTB Fuel Threshold test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 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 )
|
||||
|
||||
-- Set the fuel treshold to 40%. Airplanes will return when only 40% of fuel left in the tank.
|
||||
A2ADispatcher:SetDefaultFuelThreshold( 0.4 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 1 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
|
||||
-- CAP Squadron execution.
|
||||
|
||||
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 )
|
||||
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot("Sochi")
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown("Sochi")
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,51 +0,0 @@
|
||||
---
|
||||
-- Name: AID-012 - AI_A2A - CAP Time Interval Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 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 )
|
||||
|
||||
A2ADispatcher:SetDefaultCapLimit( 2 )
|
||||
A2ADispatcher:SetDefaultCapTimeInterval( 300, 300 ) -- Spawn each 5 minutes.
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Sochi", 1 )
|
||||
A2ADispatcher:SetSquadronGrouping( "Sochi", 2 )
|
||||
|
||||
-- CAP Squadron execution.
|
||||
|
||||
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
|
||||
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot("Sochi")
|
||||
A2ADispatcher:SetSquadronLandingAtEngineShutdown("Sochi")
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,47 +0,0 @@
|
||||
---
|
||||
-- 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.
@ -1,48 +0,0 @@
|
||||
---
|
||||
-- Name: AID-014 - AI_A2A - DisengageRange 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 )
|
||||
|
||||
-- Test an other disengage radius.
|
||||
A2ADispatcher:SetDisengageRadius( 150000 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP MIG-31" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Sochi" )
|
||||
|
||||
|
||||
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Gelend", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Gelend" )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,53 +0,0 @@
|
||||
---
|
||||
-- Name: AID-015 - AI_A2A - Takeoff Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 01 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 )
|
||||
|
||||
-- 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 )
|
||||
|
||||
-- Test an other disengage radius.
|
||||
A2ADispatcher:SetDisengageRadius( 20000 )
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP MIG-31" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Sochi" )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Gelend", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Gelend" )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Anapa", AIRBASE.Caucasus.Anapa_Vityazevo, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Anapa", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffInAir( "Anapa" )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" }, 20 )
|
||||
A2ADispatcher:SetSquadronGci( "Novo", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingHot( "Novo" )
|
||||
Binary file not shown.
@ -1,50 +0,0 @@
|
||||
---
|
||||
-- Name: AID-016 - AI_A2A - Refuel Tanker Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 01 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 )
|
||||
|
||||
|
||||
-- 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 SU-34" }, 20 )
|
||||
A2ADispatcher:SetSquadronCap( "Sochi", ZONE:New( "PatrolZone" ), 4000, 8000, 600, 800, 1000, 1300 )
|
||||
A2ADispatcher:SetSquadronCapInterval("Sochi", 2, 30, 600, 1 )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
|
||||
|
||||
A2ADispatcher:SetDefaultFuelThreshold( 0.9 )
|
||||
A2ADispatcher:SetDefaultTanker( "Tanker" )
|
||||
|
||||
|
||||
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-30" }, 20 )
|
||||
A2ADispatcher:SetSquadronCap( "Gelend", ZONE:New( "PatrolZoneGelend" ), 4000, 8000, 600, 800, 1000, 1300 )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Gelend", 2, 30, 600, 1 )
|
||||
A2ADispatcher:SetSquadronGci( "Gelend", 900, 1200 )
|
||||
|
||||
A2ADispatcher:SetSquadronFuelThreshold( "Gelend", 0.8 )
|
||||
A2ADispatcher:SetSquadronTanker( "Gelend", "TankerGelend" )
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,44 +0,0 @@
|
||||
---
|
||||
-- Name: AID-017 - AI_A2A - Spawn Altitude Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 05 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 )
|
||||
|
||||
-- Set the default takeoff method in the air.
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
|
||||
-- Set the default takeoff altitude at 2000 meters.
|
||||
A2ADispatcher:SetDefaultTakeoffInAirAltitude( 2000 ) -- Takeoff by default at 2000 meters.
|
||||
|
||||
|
||||
-- Spawn for Sochi airbase.
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-34" }, 20 )
|
||||
A2ADispatcher:SetSquadronCap( "Sochi", ZONE:New( "PatrolZone" ), 4000, 8000, 600, 800, 1000, 1300 )
|
||||
A2ADispatcher:SetSquadronCapInterval("Sochi", 2, 30, 600, 1 )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
|
||||
|
||||
-- Spawn for Gelend airbase.
|
||||
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-30" }, 20 )
|
||||
A2ADispatcher:SetSquadronCap( "Gelend", ZONE:New( "PatrolZoneGelend" ), 4000, 8000, 600, 800, 1000, 1300 )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Gelend", 2, 30, 600, 1 )
|
||||
A2ADispatcher:SetSquadronGci( "Gelend", 900, 1200 )
|
||||
|
||||
-- Let Gelend squadron take off in the air at 4000 meters.
|
||||
A2ADispatcher:SetSquadronTakeoffInAir( "Gelend", 4000 ) -- Takeoff in Gelend at 4000 meters.
|
||||
|
||||
|
||||
-- Run the mission and observe the spawning altitudes.
|
||||
Binary file not shown.
@ -1,45 +0,0 @@
|
||||
---
|
||||
-- Name: AID-018 - AI_A2A - Unlimited Resources Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 05 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 )
|
||||
|
||||
-- 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:SetTacticalDisplay( true )
|
||||
|
||||
-- Setup the squadrons.
|
||||
-- Unlimited resources, as the Resources parameter of the :SetSquadron method is not given.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP MIG-31" } )
|
||||
A2ADispatcher:SetSquadronGci( "Sochi", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromParkingCold( "Sochi" )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Gelend", AIRBASE.Caucasus.Gelendzhik, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Gelend", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Gelend" )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Anapa", AIRBASE.Caucasus.Anapa_Vityazevo, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Anapa", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Anapa" )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Novo", AIRBASE.Caucasus.Novorossiysk, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Novo", 800, 1200 )
|
||||
A2ADispatcher:SetSquadronTakeoffFromRunway( "Novo" )
|
||||
|
||||
Binary file not shown.
@ -1,31 +0,0 @@
|
||||
---
|
||||
-- Name: AID-019 - AI_A2A - Engage Range Test
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 06 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 )
|
||||
|
||||
-- Initialize the dispatcher, setting up a radius of 50km where any airborne friendly
|
||||
-- without an assignment within 50km radius from a detected target, will engage that target.
|
||||
A2ADispatcher:SetEngageRadius( 50000 )
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
|
||||
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Sochi", AIRBASE.Caucasus.Sochi_Adler, { "SQ CCCP SU-27" } )
|
||||
CAPZoneWest = ZONE_POLYGON:New( "CAP Zone West", GROUP:FindByName( "CAP Zone West" ) )
|
||||
A2ADispatcher:SetSquadronCap( "Sochi", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200 )
|
||||
A2ADispatcher:SetSquadronCapInterval( "Sochi", 2, 10, 30, 1 )
|
||||
|
||||
Binary file not shown.
@ -1,60 +0,0 @@
|
||||
---
|
||||
-- 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.
@ -1,42 +0,0 @@
|
||||
---
|
||||
-- Name: AID-021 - AI_A2A - GCI Radius Test
|
||||
-- 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 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:SetGciRadius( 100000 )
|
||||
|
||||
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()
|
||||
|
||||
Binary file not shown.
@ -1,49 +0,0 @@
|
||||
---
|
||||
-- Name: AID-022 - AI_A2A - GCI Overhead
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 05 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 )
|
||||
|
||||
-- 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( "May", AIRBASE.Caucasus.Maykop_Khanskaya, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "May", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronOverhead( "May", 0.25 )
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras", AIRBASE.Caucasus.Krasnodar_Center, { "SQ CCCP SU-27" } )
|
||||
A2ADispatcher:SetSquadronGci( "Kras", 900, 1200 )
|
||||
A2ADispatcher:SetSquadronOverhead( "Kras", 1.5 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 30
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO" )
|
||||
:InitLimit( 1, 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,54 +0,0 @@
|
||||
---
|
||||
-- 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 +0,0 @@
|
||||
---
|
||||
-- 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.
@ -1,46 +0,0 @@
|
||||
---
|
||||
-- Name: AID-032 - AI_A2A - CAP Damage
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 29 Oct 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 MIG-31" }, 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", 2, 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:SetSquadronCap( "May", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "May", 1, 30, 120, 1 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingAtEngineShutdown()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 300
|
||||
|
||||
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,47 +0,0 @@
|
||||
---
|
||||
-- Name: AID-040 - AI_A2A - CAP Independent Detection in EWR
|
||||
-- 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 )
|
||||
|
||||
|
||||
A2ADispatcher:SetEngageRadius( 90000 )
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" } )
|
||||
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", 4, 30, 120 )
|
||||
|
||||
--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:SetSquadronCap( "May", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "May", 1, 30, 120 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 180
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO" )
|
||||
:InitLimit( 2, 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,47 +0,0 @@
|
||||
---
|
||||
-- Name: AID-040 - AI_A2A - CAP Independent Detection in EWR
|
||||
-- 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 )
|
||||
|
||||
|
||||
A2ADispatcher:SetEngageRadius( 90000 )
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" } )
|
||||
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", 4, 30, 120 )
|
||||
|
||||
--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:SetSquadronCap( "May", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
--A2ADispatcher:SetSquadronCapInterval( "May", 1, 30, 120 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
local Frequency = 180
|
||||
|
||||
BlueSpawn2 = SPAWN
|
||||
:New( "RT NATO" )
|
||||
:InitLimit( 2, 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 )
|
||||
@ -1,49 +0,0 @@
|
||||
---
|
||||
-- Name: AID-041 - AI_A2A - CAP Independent Detection in EWR with Clients
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 01 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 )
|
||||
Detection:SetRefreshTimeInterval( 10 )
|
||||
|
||||
-- Setup the A2A dispatcher, and initialize it.
|
||||
A2ADispatcher = AI_A2A_DISPATCHER:New( Detection )
|
||||
|
||||
A2ADispatcher:SetTacticalDisplay( true )
|
||||
A2ADispatcher:SetRefreshTimeInterval( 10 )
|
||||
|
||||
|
||||
A2ADispatcher:SetEngageRadius( 90000 )
|
||||
-- Setup the squadrons.
|
||||
|
||||
A2ADispatcher:SetSquadron( "Kras1", AIRBASE.Caucasus.Krasnodar_Pashkovsky, { "SQ CCCP SU-27" } )
|
||||
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", 2, 30, 120 )
|
||||
|
||||
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:SetSquadronCap( "May", CAPZoneWest, 4000, 8000, 600, 800, 800, 1200, "BARO" )
|
||||
A2ADispatcher:SetSquadronCapInterval( "May", 2, 30, 120 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
-- Blue attack simulation
|
||||
|
||||
--local Frequency = 600
|
||||
--
|
||||
--BlueSpawn2 = SPAWN
|
||||
-- :New( "RT NATO" )
|
||||
-- :InitLimit( 2, 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,68 +0,0 @@
|
||||
---
|
||||
-- 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 +0,0 @@
|
||||
---
|
||||
-- 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.
@ -1,67 +0,0 @@
|
||||
---
|
||||
-- Name: AID-060 - AI_A2A - Takeoff From Runway Test
|
||||
-- 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" }, 20 )
|
||||
|
||||
-- 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.Runway )
|
||||
|
||||
-- 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.
@ -1,61 +0,0 @@
|
||||
---
|
||||
-- Name: AID-061 - AI_A2A - Takeoff From Ship Runway Test
|
||||
-- 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 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( "Kuznetsov", "Kuznetsov", { "SQ CCCP SU-33" }, 20 )
|
||||
|
||||
-- Setup the overhead
|
||||
A2ADispatcher:SetSquadronOverhead( "Kuznetsov", 1.2 )
|
||||
|
||||
-- Setup the Grouping
|
||||
A2ADispatcher:SetSquadronGrouping( "Kuznetsov", 1 )
|
||||
|
||||
-- Setup the Takeoff methods
|
||||
A2ADispatcher:SetSquadronTakeoff( "Kuznetsov", AI_A2A_DISPATCHER.Takeoff.Runway )
|
||||
|
||||
-- Setup the Landing methods
|
||||
A2ADispatcher:SetSquadronLandingAtRunway( "Kuznetsov" )
|
||||
|
||||
|
||||
-- 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( "Kuznetsov", 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.
@ -1,39 +0,0 @@
|
||||
---
|
||||
-- Name: AID-070 - AI_A2A - CAP - Player Exit
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 Oct 2017
|
||||
--
|
||||
-- Test Scenario(s):
|
||||
--
|
||||
-- Now take a seat in the client plane as a player.
|
||||
-- Do the following tests after the plane has been spawned.
|
||||
-- 1. Immediately exit the plane.
|
||||
-- 2. Only exit the plane once the defender is engaged.
|
||||
-- 3. Let the defender shoot you.
|
||||
-- In all these scenarios, observe if the defender is continuing its patrol.
|
||||
|
||||
|
||||
-- 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:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
Binary file not shown.
@ -1,37 +0,0 @@
|
||||
---
|
||||
-- Name: AID-071 - AI_A2A - GCI - Player Exit
|
||||
-- Author: FlightControl
|
||||
-- Date Created: 30 Oct 2017
|
||||
--
|
||||
-- Test Scenario(s):
|
||||
--
|
||||
-- Now take a seat in the client plane as a player.
|
||||
-- Do the following tests after the plane has been spawned.
|
||||
-- 1. Immediately exit the plane.
|
||||
-- 2. Only exit the plane once the defender is engaged.
|
||||
-- 3. Let the defender shoot you.
|
||||
-- In all these scenarios, observe if the defender is returning to base.
|
||||
|
||||
|
||||
-- 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 )
|
||||
A2ADispatcher:SetSquadronGci( "Kras1", 800, 1200 )
|
||||
|
||||
A2ADispatcher:SetDefaultTakeoffInAir()
|
||||
A2ADispatcher:SetDefaultLandingNearAirbase()
|
||||
|
||||
Binary file not shown.
@ -1,128 +0,0 @@
|
||||
---
|
||||
-- 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 )
|
||||
|
||||
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