Jump to content

Need help for testing


FlightControl

Recommended Posts

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

The server is live now.

 

Server: MOOSE TASKING TESTS

Teamspeak: 85.236.100.27:16317 ;

Search for the channel where FlightControl has joined.

 

So, the more people there, the more interesting the tests become.

 

Sven

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

The mission was an whole bunch of fun, thank you very much FlightControl !

 

Moose is a truly amazing addition to DCS, with endless possibilities and an outstanding reliability, it's a god-send for mission designers.

 

Let me know whenever you need more testing, I had a blast =)

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Sorry, FlightControl. Was there yesterday in the TS channel with you guys and had to leave. Took me longer than I've though it would.

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Link to comment
Share on other sites

The Gori Valley iteration 7 can be downloaded here:

 

https://github.com/FlightControl-Master/DCS-World-Missions/tree/release/GOV%20-%20Gori%20Valley%20-%20Iteration%207%20-%20Cargo%20Handling

 

You can host it on your server if you want...

 

This is the script:

 


--- Gori Valley designed with the MOOSE framework for DCS World.
-- Author: FlightControl



-- Define the headquarters.

NATO_HQ = COMMANDCENTER:New( GROUP:FindByName( "HQ NATO Gori" ), "Gori" )
CCCP_HQ = COMMANDCENTER:New( GROUP:FindByName( "HQ CCCP Tskinvali" ), "Tskinvali" )


-- Define the scoring object.

Score = SCORING:New( "Gori Valley" )

Score:SetScaleDestroyScore( 40 )
Score:SetScaleDestroyPenalty( 80 )
Score:SetFratricide( 80 )
Score:SetMessagesHit( false )

-- CCCP COALITION UNITS

-- Russian helicopters engaging the battle field in Gori Valley
Spawn_RU_KA50 = SPAWN
 :New( "RU KA-50@HOT-Patriot Attack" )
 :InitLimit( 1, 24 ) 
 :InitRandomizeRoute( 1, 1, 8000 )
 :InitCleanUp( 180 )
 :SpawnScheduled( 1200, 0.2 )

-- Russian ground troops attacking Gori Valley
Spawn_RU_Troops =
 { 'RU Attack Gori 1',
   'RU Attack Gori 2',
   'RU Attack Gori 3',
   'RU Attack Gori 4',
   'RU Attack Gori 5',
   'RU Attack Gori 6',
   'RU Attack Gori 7',
   'RU Attack Gori 8',
   'RU Attack Gori 9',
   'RU Attack Gori 10'
 }

Spawn_RU_Troops_Left = SPAWN
 :New( "RU Attack Gori Left" )
 :InitLimit( 15, 40 )
 :InitRandomizeTemplate( Spawn_RU_Troops )
 :InitRandomizeRoute( 1, 1, 2000 )
 --:InitArray( 349, 30, 20, 6 * 20 )
 :SpawnScheduled( 120, 1 )

Spawn_RU_Troops_Middle = SPAWN
 :New( "RU Attack Gori Middle" )
 :InitLimit( 15, 40 )
 :InitRandomizeTemplate( Spawn_RU_Troops )
 :InitRandomizeRoute( 1, 1, 2000 )
 --:InitArray( 260, 50, 20, 6 * 20 )
 :SpawnScheduled( 120, 1 )

Spawn_RU_Troops_Right = SPAWN
 :New( "RU Attack Gori Right" )
 :InitLimit( 15, 40 )
 :InitRandomizeTemplate( Spawn_RU_Troops )
 :InitRandomizeRoute( 1, 1, 2000 )
 --:InitArray( 238, 50, 20, 6 * 20 )
 :SpawnScheduled( 120, 1 )
 

-- NATO Tank Platoons invading Tskinvali

Spawn_US_Platoon =
 { 'US Tank Platoon 1',
   'US Tank Platoon 2',
   'US Tank Platoon 3',
   'US Tank Platoon 4',
   'US Tank Platoon 5',
   'US Tank Platoon 6',
   'US Tank Platoon 7',
   'US Tank Platoon 8',
   'US Tank Platoon 9',
   'US Tank Platoon 10',
   'US Tank Platoon 11',
   'US Tank Platoon 12',
   'US Tank Platoon 13'
 }

Spawn_US_Platoon_Left = SPAWN
 :New( 'US Tank Platoon Left' )
 :InitLimit( 15, 40 )
 :InitRandomizeTemplate( Spawn_US_Platoon )
 :InitRandomizeRoute( 3, 1, 2000 )
 --:InitArray( 76, 20, 15, 15*6  )
 :SpawnScheduled( 120, 1 )

Spawn_US_Platoon_Middle = SPAWN
 :New( 'US Tank Platoon Middle' )
 :InitLimit( 15, 40 )
 :InitRandomizeTemplate( Spawn_US_Platoon )
 :InitRandomizeRoute( 3, 1, 2000 )
 --:InitArray( 160, 20, 15, 15*6  )
 :SpawnScheduled( 120, 1 )

Spawn_US_Platoon_Right = SPAWN
 :New( 'US Tank Platoon Right' )
 :InitLimit( 15, 40 )
 :InitRandomizeTemplate( Spawn_US_Platoon )
 :InitRandomizeRoute( 1, 1, 2000 )
 --:InitArray( 90, 20, 15, 15*6 )
 :SpawnScheduled( 120, 1 )
 




do -- NATO Air Patrol Support Mission


 local NATO_S1 = MISSION
   :New( NATO_HQ, "Intercept Intruders","Support","Intercept any intruders invading airspace from the North!", coalition.side.BLUE )
   :AddScoring( Score )

 -- Define the Recce groups that will detect the upcoming ground forces.
 local NATO_S1_EWR = SET_GROUP:New():FilterCoalitions("blue"):FilterPrefixes( "AI NATO EWR A2A" ):FilterStart()
 
 -- Define the detection method, we'll use here AREA detection.
 local NATO_S1_EWR_Areas = DETECTION_AREAS:New( NATO_S1_EWR, 20000 )
 NATO_S1_EWR_Areas:SetFriendliesRange( 80000 )
 NATO_S1_EWR_Areas:SetDetectionInterval( 30 )
 
 local NATO_S1_Task = SET_GROUP:New():FilterCoalitions( "blue" ):FilterPrefixes( "S1 NATO Air Patrol" ):FilterStart()
 
 -- Define the Task dispatcher that will define the tasks based on the detected targets.
 NATO_S1_A2A = TASK_A2A_DISPATCHER:New( NATO_S1, NATO_S1_Task, NATO_S1_EWR_Areas )


 local NATO_AI_A2A_Support_East = { 
   "AI NATO Air Support East F-16A A",
   "AI NATO Air Support East F-16A B",
   } 

 local NATO_AI_A2A_Support_West = { 
   "AI NATO Air Support West F-16A A",
   "AI NATO Air Support West F-16A B",
   }

 NATO_AI_A2A = AI_A2A_DISPATCHER:New( NATO_S1_EWR_Areas )
 
 NATO_AI_A2A:SetTacticalDisplay( false )
 
 NATO_AI_A2A:SetEngageRadius( 80000 )
 NATO_AI_A2A:SetGciRadius( 140000 )
 
 NATO_AI_A2A:SetSquadron( "Kutaisi", AIRBASE.Caucasus.Kutaisi, NATO_AI_A2A_Support_West, 20 )
 NATO_AI_A2A:SetSquadronCap( "Kutaisi", ZONE_POLYGON:New( "NATO CAP EAST", GROUP:FindByName( "NATO CAP EAST") ), 4000, 8000, 450, 600, 800, 1200, "BARO" )
 NATO_AI_A2A:SetSquadronCapInterval( "Kutaisi", 2, 180, 300 )
 
 NATO_AI_A2A:SetSquadronGci( "Kutaisi", 800, 1200 )

 NATO_AI_A2A:SetSquadron( "Vaziani", AIRBASE.Caucasus.Vaziani, NATO_AI_A2A_Support_East, 20 )
 NATO_AI_A2A:SetSquadronCap( "Vaziani", ZONE_POLYGON:New( "NATO CAP WEST", GROUP:FindByName( "NATO CAP WEST" ) ), 4000, 8000, 500, 700, 800, 1200, "BARO" )
 NATO_AI_A2A:SetSquadronCapInterval( "Vaziani", 2, 180, 300 )
 
 NATO_AI_A2A:SetSquadronGci( "Vaziani", 800, 1200 )

end

do -- NATO Mission 1


 local NATO_M1 = MISSION
   :New( NATO_HQ, "Destroy SAM-6","Primary","Destroy SAM-6 batteries", coalition.side.BLUE )
   :AddScoring( Score )

 -- Define the Recce groups that will detect the upcoming ground forces.
 local NATO_M1_RecceSet = SET_GROUP:New():FilterCoalitions("blue"):FilterPrefixes( "M1 NATO Recce" ):FilterStart()
 
 NATO_M1_Spawn_Reaper = SPAWN
   :New( "M1 NATO Recce Reaper" )
   :InitLimit( 1, 5 )
   :SpawnScheduled( 300, 0 )

 
 NATO_M1_ReccePatrolArray = {}
 NATO_M1_RecceSpawn_US = SPAWN
   :New( "M1 NATO Recce AH-64" )
   :InitLimit( 2, 10 )
   :SpawnScheduled( 60, 0.4 )
   :InitCleanUp( 300 )
   :OnSpawnGroup(
     function( SpawnGroup )
       local M1_ReccePatrolZoneWP = GROUP:FindByName( "M1 US Patrol Zone@ZONE" )
       local M1_ReccePatrolZone = ZONE_POLYGON:New( "PatrolZone", M1_ReccePatrolZoneWP )
       local M1_ReccePatrol = AI_PATROL_ZONE:New( M1_ReccePatrolZone, 30, 50, 50, 100 )
       NATO_M1_ReccePatrolArray[#NATO_M1_ReccePatrolArray+1] = M1_ReccePatrol
       
       M1_ReccePatrol:SetControllable( SpawnGroup )
       M1_ReccePatrol:__Start( 10 ) -- It takes a bit of time for the Recce to start
     end
    )
 
 
 -- Define the detection method, we'll use here AREA detection.
 local NATO_M1_DetectionAreas = DETECTION_AREAS:New( NATO_M1_RecceSet, 4500 )
 --M1_DetectionAreas:BoundDetectedZones()
 
 local NATO_M1_Attack = SET_GROUP:New():FilterCoalitions( "blue" ):FilterPrefixes( "M1 NATO Attack" ):FilterStart()
 
 -- Define the Task dispatcher that will define the tasks based on the detected targets.
 NATO_M1_TaskA2GDispatcher = TASK_A2G_DISPATCHER:New( NATO_M1, NATO_M1_Attack, NATO_M1_DetectionAreas )

end

do -- NATO Transport Task Engineers

 NATO_M4_Patriots = MISSION
   :New( NATO_HQ, 
         "Engineers Patriots", 
         "Operational", 
         "Transport 3 engineering teams to three strategical Patriot launch sites. " ..
           "The launch sites are not yet complete and need some special launch codes to be delivered. " ..
           "The engineers have the knowledge to install these launch codes. " ..
           "Pickup Engineers Alpha, Beta and Gamma from their current location, and drop them near the Patriot launchers. " ..
           "Deployment zones have been defined at each Patriot location.", 
         coalition.side.BLUE )

 local NATO_M4_HeloSetGroup = SET_GROUP:New():FilterPrefixes( "M4 NATO Patriot Transport" ):FilterStart()

 local NATO_M4_SetCargo = SET_CARGO:New():FilterTypes( { "Patriot Engineers" } ):FilterStart()

 local EngineersCargo1 = CARGO_GROUP:New( GROUP:FindByName( "M4 NATO Engineers Bear" ), "Patriot Engineers", "Team Bear", 500 ):RespawnOnDestroyed(true)
 local EngineersCargo2 = CARGO_GROUP:New( GROUP:FindByName( "M4 NATO Engineers Moose" ), "Patriot Engineers", "Team Moose", 500 ):RespawnOnDestroyed(true)
 local EngineersCargo3 = CARGO_GROUP:New( GROUP:FindByName( "M4 NATO Engineers Falcon" ), "Patriot Engineers", "Team Falcon", 500 ):RespawnOnDestroyed(true)


 CargoTransportTask = TASK_CARGO_TRANSPORT:New( NATO_M4_Patriots, NATO_M4_HeloSetGroup, "Transport SA-6 Engineers", NATO_M4_SetCargo )
 
 -- These are the groups of the SA-6 batteries.
 local Patriots1 = GROUP:FindByName( "M4 NATO Patriot North" ):SetAIOff()
 local Patriots2 = GROUP:FindByName( "M4 NATO Patriot West" ):SetAIOff()
 local Patriots3 = GROUP:FindByName( "M4 NATO Patriot East" ):SetAIOff()
 
 -- Each SA-6 battery has a zone of type ZONE_GROUP. That makes these zone moveable as they drive around the battle field!
 local Zone_Patriots1 = ZONE_GROUP:New( "Patriots North", Patriots1, 500 )
 local Zone_Patriots2 = ZONE_GROUP:New( "Patriots West", Patriots2, 500 )
 local Zone_Patriots3 = ZONE_GROUP:New( "Patriots East", Patriots3, 500 ) 
 
 -- Add to the CargoTransportTask these SA-6 battery zones.
 CargoTransportTask:AddDeployZone( Zone_Patriots1 )
 CargoTransportTask:AddDeployZone( Zone_Patriots2 )
 CargoTransportTask:AddDeployZone( Zone_Patriots3 )


 --- OnAfter Transition Handler for Event CargoDeployed.
 -- This event will handle after deployment the activation of the SA-6 site.
 -- @function [parent=#TASK_CARGO_TRANSPORT] OnAfterCargoDeployed
 -- @param Tasking.Task_CARGO#TASK_CARGO_TRANSPORT self
 -- @param #string From The From State string.
 -- @param #string Event The Event string.
 -- @param #string To The To State string.
 -- @param Wrapper.Unit#UNIT TaskUnit The Unit (Client) that Deployed the cargo. You can use this to retrieve the PlayerName etc.
 -- @param Core.Cargo#CARGO Cargo The Cargo that got PickedUp by the TaskUnit. You can use this to check Cargo Status.
 -- @param Core.Zone#ZONE DeployZone The zone where the Cargo got Deployed or UnBoarded.
 function CargoTransportTask:OnAfterCargoDeployed( From, Event, To, TaskUnit, Cargo, DeployZone )
   self:E( { From, Event, To, TaskUnit, Cargo, DeployZone } )
 
   local DeployZoneName = DeployZone:GetName()
   local CargoName = Cargo:GetName()
 
 
   NATO_HQ:MessageToCoalition( 
     string.format( "Engineers %s are successfully transported to patriot site %s.", 
                    CargoName, 
                    DeployZoneName 
                  ) 
   )
   
   if DeployZoneName == Zone_Patriots1:GetName() then
     if Patriots1 and not Patriots1:IsAlive() then
       local Template = Patriots1:GetTemplate()
       Template.lateActivation = false
       Template.Visible = false
       Patriots1:Respawn(Template)
       --Patriots1:SetAIOn()
     end
   end

   if DeployZoneName == Zone_Patriots2:GetName() then
     if Patriots2 and not Patriots2:IsAlive() then
       local Template = Patriots2:GetTemplate()
       Template.lateActivation = false
       Template.Visible = false
       Patriots2:Respawn(Template)
       --Patriots2:SetAIOn()
     end
   end

   if DeployZoneName == Zone_Patriots3:GetName() then
     if Patriots3 and not Patriots3:IsAlive() then
       local Template = Patriots3:GetTemplate()
       Template.lateActivation = false
       Template.Visible = false
       Patriots3:Respawn(Template)
       --Patriots3:SetAIOn()
     end
   end
   
   if self:IsAllCargoTransported() then
     self:Success()
     NATO_M4_Patriots:Complete()
   end
 end

end






do -- CCCP Air Patrol Support Functions


 CCCP_S1 = MISSION
   :New( CCCP_HQ, "Provide Air Support","Support","Intercept any bogeys invading airspace from the South or East!", coalition.side.RED )
   :AddScoring( Score )

 -- Define the Recce groups that will detect the upcoming A2A intruders.
 local CCCP_S1_EWRGroups = SET_GROUP:New():FilterCoalitions("red"):FilterPrefixes( "AI CCCP EWR" ):FilterStart()
 
 -- Define the detection method, we'll use here AREA detection.
 local CCCP_S1_EWR = DETECTION_AREAS:New( CCCP_S1_EWRGroups, 30000 )
 CCCP_S1_EWR:SetFriendliesRange( 80000 )
 --M1_DetectionAreas_US:BoundDetectedZones()
 
 local CCCP_S1_SupportGroups = SET_GROUP:New():FilterCoalitions("red"):FilterPrefixes( "S1 CCCP Air Defense" ):FilterStart()
 
 -- Define the Task dispatcher that will define the tasks based on the detected targets.
 CCCP_S1_A2A_Support = TASK_A2A_DISPATCHER:New( CCCP_S1, CCCP_S1_SupportGroups, CCCP_S1_EWR )


 CCCP_AI_A2A_Support_SU_27 = { 
   "AI CCCP Air Support SU-27 A", 
   "AI CCCP Air Support SU-27 B", 
   "AI CCCP Air Support SU-27 C", 
   "AI CCCP Air Support SU-27 D" 
   } 

 CCCP_AI_A2A_Support_MIG_29S = { 
   "AI CCCP Air Support MIG-29S A",
   "AI CCCP Air Support MIG-29S B",
   "AI CCCP Air Support MIG-29S C",
   "AI CCCP Air Support MIG-29S D"
   }
 

 CCCP_AI_A2A_Support = AI_A2A_DISPATCHER:New( CCCP_S1_EWR )
 
 CCCP_AI_A2A_Support:SetTacticalDisplay( false )
 
 CCCP_AI_A2A_Support:SetEngageRadius( 80000 )
 CCCP_AI_A2A_Support:SetGciRadius( 100000 )
 
 -- Beslan
 CCCP_AI_A2A_Support:SetSquadron( "Beslan", AIRBASE.Caucasus.Beslan, CCCP_AI_A2A_Support_SU_27, 20 )
 CCCP_AI_A2A_Support:SetSquadronCap( "Beslan", ZONE_POLYGON:New( "CCCP CAP EAST", GROUP:FindByName( "CCCP CAP EAST") ), 4000, 8000, 450, 600, 800, 1200, "BARO" )
 CCCP_AI_A2A_Support:SetSquadronCapInterval( "Beslan", 2, 180, 300 )
 CCCP_AI_A2A_Support:SetSquadronTakeoffInAir( "Beslan" )
 
 -- Mozdok
 CCCP_AI_A2A_Support:SetSquadron( "Mozdok", AIRBASE.Caucasus.Mozdok, CCCP_AI_A2A_Support_SU_27, 20 )
 CCCP_AI_A2A_Support:SetSquadronGci( "Mozdok", 800, 1200 )

 CCCP_AI_A2A_Support:SetSquadron( "Nalchik", AIRBASE.Caucasus.Nalchik, CCCP_AI_A2A_Support_MIG_29S, 20 )
 CCCP_AI_A2A_Support:SetSquadronCap( "Nalchik", ZONE_POLYGON:New( "CCCP CAP WEST", GROUP:FindByName( "CCCP CAP WEST" ) ), 4000, 8000, 500, 700, 800, 1200, "BARO" )
 CCCP_AI_A2A_Support:SetSquadronCapInterval( "Nalchik", 2, 180, 300 )
 CCCP_AI_A2A_Support:SetSquadronGci( "Nalchik", 800, 1200 )

end

do -- CCCP Destroy Patriots

 CCCP_M1 = MISSION
   :New( CCCP_HQ, 
         "Destroy Patriots",
         "Primary",
         "Destroy Patriot batteries.", 
         coalition.side.RED
       )
   :AddScoring( Score )

 -- Define the Recce groups that will detect the upcoming ground forces.
 local CCCP_M1_RecceSet = SET_GROUP:New():FilterCoalitions( "red" ):FilterPrefixes( "M1 CCCP Recce" ):FilterStart()

 CCCP_M1_Spawn_SU25MR = SPAWN
   :New( "M1 CCCP Recce SU-25MR" )
   :InitLimit( 1, 5 )
   :SpawnScheduled( 300, 0.5 )

 
 CCCP_M1_ReccePatrolArray = {}
 CCCP_M1_RecceSpawn = SPAWN
   :New( "M1 CCCP Recce MI-28N" )
   :InitLimit( 2, 10 )
   :SpawnScheduled( 60, 0.4 )
   :OnSpawnGroup(
     function( SpawnGroup )
       local M1_ReccePatrolZoneWP = GROUP:FindByName( "M1 RU Patrol Zone@ZONE" )
       local M1_ReccePatrolZone = ZONE_POLYGON:New( "PatrolZone", M1_ReccePatrolZoneWP )
       local M1_ReccePatrol = AI_PATROL_ZONE:New( M1_ReccePatrolZone, 30, 50, 50, 100 )
       CCCP_M1_ReccePatrolArray[#CCCP_M1_ReccePatrolArray+1] = M1_ReccePatrol
       
       M1_ReccePatrol:SetControllable( SpawnGroup )
       M1_ReccePatrol:__Start( 20 ) -- It takes a bit of time for the Recce to start
     end
    )
 
 
 -- Define the detection method, we'll use here AREA detection.
 local CCCP_M1_DetectionAreas = DETECTION_AREAS:New( CCCP_M1_RecceSet, 4500 )
 --M1_DetectionAreas_US:BoundDetectedZones()
 
 local CCCP_M1_Attack = SET_GROUP:New():FilterCoalitions( "red" ):FilterPrefixes( "M1 CCCP Attack" ):FilterStart()
 CCCP_M1_Attack:Flush()
 
 
 -- Define the Task dispatcher that will define the tasks based on the detected targets.
 CCCP_M1_Task_A2G_Dispatcher = TASK_A2G_DISPATCHER:New( CCCP_M1, CCCP_M1_Attack, CCCP_M1_DetectionAreas )

end

do -- CCCP Transport Task Engineers

 CCCP_M4_SA6 = MISSION
   :New( CCCP_HQ, 
         "Engineers SA-6", 
         "Operational", 
         "Transport 3 engineering teams to three strategical SA-6 launch sites. " ..
           "The launch sites are not yet complete and need some special launch codes to be delivered. " ..
           "The engineers have the knowledge to install these launch codes. " ..
           "Pickup Engineers Alpha, Beta and Gamma from their current location, and drop them near the SA-6 launchers. " ..
           "Deployment zones have been defined at each SA-6 location.", 
         coalition.side.RED )
   :AddScoring( Score ) 

 local CCCP_M4_HeloSetGroup = SET_GROUP:New():FilterPrefixes( "M4 CCCP SA6 Transport" ):FilterStart()

 local CCCP_M4_SA6_SetCargo = SET_CARGO:New():FilterTypes( { "SA6 Engineers" } ):FilterStart()

 local EngineersCargoAlpha = CARGO_GROUP:New( GROUP:FindByName( "M4 CCCP Engineers Alpha" ), "SA6 Engineers", "Team Alpha", 500 )
 local EngineersCargoBeta = CARGO_GROUP:New( GROUP:FindByName( "M4 CCCP Engineers Beta" ), "SA6 Engineers", "Team Beta", 500 )
 local EngineersCargoGamma = CARGO_GROUP:New( GROUP:FindByName( "M4 CCCP Engineers Gamma" ), "SA6 Engineers", "Team Gamma", 500 )

 CargoTransportTask = TASK_CARGO_TRANSPORT:New( CCCP_M4_SA6, CCCP_M4_HeloSetGroup, "Transport SA-6 Engineers", CCCP_M4_SA6_SetCargo )
 
 -- These are the groups of the SA-6 batteries.
 local SA6_1 = GROUP:FindByName( "M4 CCCP SA6 Kub Moskva" ):SetAIOff()
 local SA6_2 = GROUP:FindByName( "M4 CCCP SA6 Kub Niznij" ):SetAIOff()
 local SA6_3 = GROUP:FindByName( "M4 CCCP SA6 Kub Yaroslavl" ):SetAIOff()
 
 -- Each SA-6 battery has a zone of type ZONE_GROUP. That makes these zone moveable as they drive around the battle field!
 local Zone_SA6_1 = ZONE_GROUP:New( "SA6 Moskva", SA6_1, 500 )
 local Zone_SA6_2 = ZONE_GROUP:New( "SA6 Niznij", SA6_2, 500 )
 local Zone_SA6_3 = ZONE_GROUP:New( "SA6 Yaroslavl", SA6_3, 500 ) 
 
 -- Add to the CargoTransportTask these SA-6 battery zones.
 CargoTransportTask:AddDeployZone( Zone_SA6_1 )
 CargoTransportTask:AddDeployZone( Zone_SA6_2 )
 CargoTransportTask:AddDeployZone( Zone_SA6_3 )


 --- OnAfter Transition Handler for Event CargoDeployed.
 -- This event will handle after deployment the activation of the SA-6 site.
 -- @function [parent=#TASK_CARGO_TRANSPORT] OnAfterCargoDeployed
 -- @param Tasking.Task_CARGO#TASK_CARGO_TRANSPORT self
 -- @param #string From The From State string.
 -- @param #string Event The Event string.
 -- @param #string To The To State string.
 -- @param Wrapper.Unit#UNIT TaskUnit The Unit (Client) that Deployed the cargo. You can use this to retrieve the PlayerName etc.
 -- @param Core.Cargo#CARGO Cargo The Cargo that got PickedUp by the TaskUnit. You can use this to check Cargo Status.
 -- @param Core.Zone#ZONE DeployZone The zone where the Cargo got Deployed or UnBoarded.
 function CargoTransportTask:OnAfterCargoDeployed( From, Event, To, TaskUnit, Cargo, DeployZone )
   self:E( { From, Event, To, TaskUnit:GetName(), Cargo:GetName(), DeployZone:GetName() } )
 
   local DeployZoneName = DeployZone:GetName()
   local CargoName = Cargo:GetName()
 
 
   CCCP_HQ:MessageToCoalition( 
     string.format( "Engineers %s are successfully transported to SA-6 site %s.", 
                    CargoName, 
                    DeployZoneName 
                  ) 
   )
   
   if DeployZoneName == Zone_SA6_1:GetName() then
     if SA6_1 and not SA6_1:IsAlive() then
       self:E( { GroupActivated = SA6_1:GetName() } )
         local Template = SA6_1:GetTemplate()
         Template.lateActivation = false
         Template.Visible = false
         SA6_1:Respawn(Template)
       --SA6_1:SetAIOn()
     end
   end

   if DeployZoneName == Zone_SA6_2:GetName() then
     if SA6_2 and not SA6_2:IsAlive() then
       self:E( { GroupActivated = SA6_2:GetName() } )
         local Template = SA6_2:GetTemplate()
         Template.lateActivation = false
         Template.Visible = false
         SA6_2:Respawn(Template)
       --SA6_2:SetAIOn()
     end
   end

   if DeployZoneName == Zone_SA6_3:GetName() then
     if SA6_3 and not SA6_3:IsAlive() then
       self:E( { GroupActivated = SA6_3:GetName() } )
         local Template = SA6_3:GetTemplate()
         Template.lateActivation = false
         Template.Visible = false
         SA6_3:Respawn(Template)
       --SA6_3:SetAIOn()
     end
   end
   
   if self:IsAllCargoTransported() then
     self:Success()
     CCCP_M4_SA6:Complete()
   end
 end

end

MissileTrainer = MISSILETRAINER:New( 100, "Helps with missile tracking" )



[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

How's it going with the script? Do you need some testing any time soon maybe?

 

I've done a couple of fixes that you can follow on the MOOSE GitHub site.

My availability will be lower the coming weeks.

Of course we need multi player further tested.

So suggest you download the mission and test.

 

Suggest you download the slack app also,

so i can better follow if you are online or not on my mobile.

Interactive is much better.

 

 

@Viff, if you like please setup a test with IAF.

 

@All, Mission is here for download:

 

https://github.com/FlightControl-Master/DCS-World-Missions/tree/release/GOV%20-%20Gori%20Valley%20-%20Iteration%207%20-%20Cargo%20Handling

 

A lot has been fixed, but not all.

But the most important bugs found are fixed.

Please do you tests and report back here.

I releases the pre release to the larger community.

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

I've done a couple of fixes that you can follow on the MOOSE GitHub site.

My availability will be lower the coming weeks.

Of course we need multi player further tested.

So suggest you download the mission and test.

 

Suggest you download the slack app also,

so i can better follow if you are online or not on my mobile.

Interactive is much better.

 

 

@Viff, if you like please setup a test with IAF.

 

@All, Mission is here for download:

 

https://github.com/FlightControl-Master/DCS-World-Missions/tree/release/GOV%20-%20Gori%20Valley%20-%20Iteration%207%20-%20Cargo%20Handling

 

A lot has been fixed, but not all.

But the most important bugs found are fixed.

Please do you tests and report back here.

I releases the pre release to the larger community.

Roger that. Good work, sir!

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Link to comment
Share on other sites

  • 2 weeks later...

Hey, buddy, how's it going?

 

The radio main menu looks better now and the troops' transportation works just fine. Any plans on changing that into endless troops' transportation or do you prefer to leave it up to the user to configure as he wishes?

 

If you want anything in particular to be tested, let me know.

 

I've tested some CAS missions too and they seem to be fine.

 

S!

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Link to comment
Share on other sites

Hey, buddy, how's it going?

 

The radio main menu looks better now and the troops' transportation works just fine. Any plans on changing that into endless troops' transportation or do you prefer to leave it up to the user to configure as he wishes?

 

If you want anything in particular to be tested, let me know.

 

I've tested some CAS missions too and they seem to be fine.

 

S!

 

Hi!

 

Thanks for the feedback.

 

The A2G tasking has a lot of complexity.

 

Like when a CAS task is assigned. And while it is assigned, the RECCE detects radar installations that form part of the group. The result is, that the tasking will now consider the task to transition from a CAS task to a SEAD task. And for SEAD you need a different payload, so the task is cancelled at this point.

 

Same for CAS and BAI. CAS requires precision weapons, BAI not so much. Carpet bombing is possible.

 

The AI_A2A_DISPATCHER and AI_A2A_GCICAP have some new issues I found in 2.1.1. Planes spawning from airbases on the runway or at a parking hotspot, are returning immediately back to the airbase. This is wrong. I need to find out why. It worked perfectly in 1.5.6.

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Hey, buddy, how's it going?

 

The radio main menu looks better now and the troops' transportation works just fine. Any plans on changing that into endless troops' transportation or do you prefer to leave it up to the user to configure as he wishes?

 

If you want anything in particular to be tested, let me know.

 

I've tested some CAS missions too and they seem to be fine.

 

S!

 

What you mean with endless troop transportation?

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

What you mean with endless troop transportation?

That after you pick up a group it can respawn either immediately so that another helicopter pilot can go a troop insertion mission simultaneously or after the group has been dropped somewhere or killed.

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Link to comment
Share on other sites

That after you pick up a group it can respawn either immediately so that another helicopter pilot can go a troop insertion mission simultaneously or after the group has been dropped somewhere or killed.

 

 

Automatic respawning has been implemented already on the CARGO objects.

But only under the condition that the CARGO is destroyed! Not when it has been dropped at location correctly.

 

local Mission = MISSION

:New( CommandCenter, "Transport", "High", "Transport 3 engineering teams to each deployment zone.", coalition.side.BLUE )

:AddScoring( Scoring )

 

local Helicopter = SET_GROUP:New():FilterPrefixes( "Transport" ):FilterStart()

 

local SetCargo = SET_CARGO:New():FilterTypes( { "Engineers" } ):FilterStart()

 

local EngineersCargoAlpha = CARGO_GROUP:New( GROUP:FindByName( "Engineers Alpha" ), "Engineers", "Team Alpha", 500 ):RespawnOnDestroyed(true)

local EngineersCargoBeta = CARGO_GROUP:New( GROUP:FindByName( "Engineers Beta" ), "Engineers", "Team Beta", 500 ):RespawnOnDestroyed(true)

local EngineersCargoGamma = CARGO_GROUP:New( GROUP:FindByName( "Engineers Gamma" ), "Engineers", "Team Gamma", 500 ):RespawnOnDestroyed(true)

 

The "RespawnOnDestroyed( true ) method handles the automatic respawing when the CARGO is destroyed... So that a new try can be done and cargo is refreshed automatically.

 

There is a difference in physical errors and logical goal achievement.

For the latter, I consider the MD to handle this situation.

 

For this, one needs to "grab" the OnDeployed event of the cargo and do some logic actions (like respawn the cargo?)...

 

  local RepairZone1 = ZONE_POLYGON:New( "Repair Zone 1", GROUP:FindByName("Repair Zone 1") )
 local RepairZone2 = ZONE_POLYGON:New( "Repair Zone 2", GROUP:FindByName("Repair Zone 2") )
 local DeliveryZone = ZONE:New( "Delivery Zone" ) 
 
 CargoTransportTask:AddDeployZone( RepairZone1 )
 CargoTransportTask:AddDeployZone( RepairZone2 )
 CargoTransportTask:AddDeployZone( DeliveryZone )

 --- OnAfter Transition Handler for Event CargoDeployed.
 -- @function [parent=#TASK_CARGO_TRANSPORT] OnAfterCargoDeployed
 -- @param #TASK_CARGO_TRANSPORT self
 -- @param #string From The From State string.
 -- @param #string Event The Event string.
 -- @param #string To The To State string.
 -- @param Wrapper.Unit#UNIT TaskUnit The Unit (Client) that Deployed the cargo. You can use this to retrieve the PlayerName etc.
 -- @param Core.Cargo#CARGO Cargo The Cargo that got PickedUp by the TaskUnit. You can use this to check Cargo Status.
 -- @param Core.Zone#ZONE DeployZone The zone where the Cargo got Deployed or UnBoarded.
 function CargoTransportTask:OnAfterCargoDeployed( From, Event, To, TaskUnit, Cargo, DeployZone )
   self:F({From, Event, To, TaskUnit, Cargo, DeployZone})
 
   CommandCenter:MessageToCoalition( "Cargo " .. Cargo:GetName() .. " got successfully transported." )
   
   if DeployZone:GetName() == RepairZone1:GetName() then
     local Convoy = GROUP:FindByName( "Convoy" )
     if Convoy and not Convoy:IsAlive() then
       Convoy:Activate()
     end
   end

   if DeployZone:GetName() == RepairZone2:GetName() then
     local Sam = GROUP:FindByName( "RepairSam" )
     if Sam and not Sam:IsAlive() then
       Sam:Activate()
     end
   end
   
   if self:IsAllCargoTransported() then
     self:Success()
   end
 
 end

 

In this example the OnCargoDeployed event of the CargoTransportTask object is handled at the OnAfter time.

In this function you can do whatever you want, even respawn the cargo...

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Automatic respawning has been implemented already on the CARGO objects.

But only under the condition that the CARGO is destroyed! Not when it has been dropped at location correctly.

 

 

 

The "RespawnOnDestroyed( true ) method handles the automatic respawing when the CARGO is destroyed... So that a new try can be done and cargo is refreshed automatically.

 

There is a difference in physical errors and logical goal achievement.

For the latter, I consider the MD to handle this situation.

 

For this, one needs to "grab" the OnDeployed event of the cargo and do some logic actions (like respawn the cargo?)...

 

  local RepairZone1 = ZONE_POLYGON:New( "Repair Zone 1", GROUP:FindByName("Repair Zone 1") )
 local RepairZone2 = ZONE_POLYGON:New( "Repair Zone 2", GROUP:FindByName("Repair Zone 2") )
 local DeliveryZone = ZONE:New( "Delivery Zone" ) 
 
 CargoTransportTask:AddDeployZone( RepairZone1 )
 CargoTransportTask:AddDeployZone( RepairZone2 )
 CargoTransportTask:AddDeployZone( DeliveryZone )

 --- OnAfter Transition Handler for Event CargoDeployed.
 -- @function [parent=#TASK_CARGO_TRANSPORT] OnAfterCargoDeployed
 -- @param #TASK_CARGO_TRANSPORT self
 -- @param #string From The From State string.
 -- @param #string Event The Event string.
 -- @param #string To The To State string.
 -- @param Wrapper.Unit#UNIT TaskUnit The Unit (Client) that Deployed the cargo. You can use this to retrieve the PlayerName etc.
 -- @param Core.Cargo#CARGO Cargo The Cargo that got PickedUp by the TaskUnit. You can use this to check Cargo Status.
 -- @param Core.Zone#ZONE DeployZone The zone where the Cargo got Deployed or UnBoarded.
 function CargoTransportTask:OnAfterCargoDeployed( From, Event, To, TaskUnit, Cargo, DeployZone )
   self:F({From, Event, To, TaskUnit, Cargo, DeployZone})
 
   CommandCenter:MessageToCoalition( "Cargo " .. Cargo:GetName() .. " got successfully transported." )
   
   if DeployZone:GetName() == RepairZone1:GetName() then
     local Convoy = GROUP:FindByName( "Convoy" )
     if Convoy and not Convoy:IsAlive() then
       Convoy:Activate()
     end
   end

   if DeployZone:GetName() == RepairZone2:GetName() then
     local Sam = GROUP:FindByName( "RepairSam" )
     if Sam and not Sam:IsAlive() then
       Sam:Activate()
     end
   end
   
   if self:IsAllCargoTransported() then
     self:Success()
   end
 
 end

In this example the OnCargoDeployed event of the CargoTransportTask object is handled at the OnAfter time.

In this function you can do whatever you want, even respawn the cargo...

Cool, I gotchya... More logical actually than having an operating group spawning again for another heli to pick up while still in the middle of action.

 

So once again, anything else you want tested in particular? Maybe something regarding combined arms missions if that is implemented?

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Link to comment
Share on other sites

Use AI_A2A_GCICAP

 

and pls test a full A2G tasking mission if that is possible using TASK_A2G_DISPATCHER.

 

That is the core of release 2.2.

 

If those are stable, we can then move on to release 2.3

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Use AI_A2A_GCICAP

 

and pls test a full A2G tasking mission if that is possible using TASK_A2G_DISPATCHER.

 

That is the core of release 2.2.

 

If those are stable, we can then move on to release 2.3

Roger that... Will do in the upcoming days and keep you informed.

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Link to comment
Share on other sites

Hey FlightControl me and my unit have been looking for a dynamic system like what your building. We have already gone through the Through the Inferno normal and are currently using the ATC Operation allied strike because it lets up actually use the Georgia area. Mind if we test your script on our server?

Link to comment
Share on other sites

Hey FlightControl me and my unit have been looking for a dynamic system like what your building. We have already gone through the Through the Inferno normal and are currently using the ATC Operation allied strike because it lets up actually use the Georgia area. Mind if we test your script on our server?

I'm sure you can, buddy! This is the whole idea behind MOOSE. FlightControl wants to create something that operates as a standard script for mission editing and as simple and comprehensible as possible for everyone to use. Sure you can "usetest" it. Also make sure you report any bugs or malfunctions in the script right here for him to fix. I do the same with my missions.

 

S!

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Link to comment
Share on other sites

Guys, I don't know if anybody would have time to help me with some testing of the dynamic tasking engine?

 

It needs some more testing.

 

I have a simple but fun test mission here.

It concerns dynamic tasking and is something you've not have flown yet.

If you would have time, could you let me know?

 

We'll setup a conference call using skype. Skype is my preference because i can also share screens and people from multiple squadrons can join.

 

FC

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

It is about testing this is a multi player environment, with dynamic A2G tasking.

 

If you wanna join, please tell my what machine you would like to fly, and your name on skype. (in a private message to me).

 

Screen_170806_115948.jpg

 

We're going to do a test on the NTTR, because DCS 1.5.7 is unplayable in MP.


Edited by FlightControl

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

  • 1 month later...

Hey, FC!

 

Been quite busy lately and was on vacation and whenever I had time for DCS I was tending to my missions in the cold war server so I only managed to test your mission one time. If you can host tonight I will have plenty of time to do some testing for you. I'll try and get some people along with me.

 

S!

cold war 1947 - 1991.jpg

Cold War 1947 - 1991                                       Discord
Helicopters Tournaments
Combined Arms Tournaments

You can help me with keeping up the server via PayPal donations: hokumyounis@yahoo.com

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...