Jump to content

FlightControl

Members
  • Posts

    2070
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by FlightControl

  1. Does somebody know how to create a group menu (so a menu with command menus below), that when you select that group menu, that automatically the sub menu is displayed with the menu commands, but also, that script is called ??? For example: I have the following menu structure: F1 : Assign Task F1 TASK.001 F2: TASK.002 Now, when the player would select "Assign Task", the sub TASK menu structure would be displayed (TASK.001 and TASK.002), and also a lua function would be called that would list a message with the available task IDS and what each task id means.... For example the message (report) could look like; - TASK.001 - BRA, 125° for 100 at 3000 - TASK.002 - BRA, 324° for 24 at 1000 Anybody have an idea how to do this?
  2. 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" )
  3. I'll check it too...
  4. 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
  5. The following issues have been fixed: https://github.com/FlightControl-Master/MOOSE/issues?q=is%3Aissue+milestone%3AMoose-2.2+is%3Aclosed The following are still open: https://github.com/FlightControl-Master/MOOSE/issues?q=is%3Aissue+milestone%3AMoose-2.2+is%3Aopen FC
  6. If you want, i can bring the server up earlier today too!
  7. Tomorrow at 7 July 2017 I suggest to run another test together at 20h CET. So, as agreed, I will do these fixes and then we can do a second session this evening at 9pm CET. More people are kindly invited. 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. Like run a coop task. I still need to do some fixes, but it is good to already test. I've been focusing on the CARGO handling, like avoid unnecessary menus and respawn cargo when it is destroyed automatically, and limit already some of the message overload. Sven
  8. Guys, there is also an alternative way ... Apparently there are people who are unaware of the MOOSE framework, and who are using triggers, which is way too complicated. You can do this using the MOOSE framework with one single command. MOOSE hides the complexity of mission design, and lets you focus better on the functionality of your mission. The only predicate is that you need to learn a bit of lua ... Have a look at the following mission: https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/master-release/SPA%20-%20Spawning/SPA-121%20-%20Air%20Ops%20-%20Scheduled%20Spawns%20with%20Repeat%20on%20Landing%20with%20Limit This mission will spawn 8 air units, of different types. Airplanes and Helicopters. After spawning, they immediately will return for landing at Batumi. The KA50 and the 101EB will respawn immediate after they land on the runway. The MI8 and the A10C will respawn after they have taxied to the parking spot and have shut down their engines. This mission has the following code: do -- Declare SPAWN objects Spawn_KA_50 = SPAWN:New("KA-50"):InitLimit( 2, 10 ) Spawn_MI_8MTV2 = SPAWN:New("MI-8MTV2"):InitLimit( 2, 10 ) Spawn_C_101EB = SPAWN:New("C-101EB"):InitLimit( 2, 10 ) Spawn_A_10C = SPAWN:New("A-10C"):InitLimit( 2, 10 ) -- Choose repeat functionality -- Repeat on landing Spawn_KA_50:InitRepeatOnLanding() Spawn_C_101EB:InitRepeatOnLanding() -- Repeat on enging shutdown (when landed on the airport) Spawn_MI_8MTV2:InitRepeatOnEngineShutDown() Spawn_A_10C:InitRepeatOnEngineShutDown() -- Now SPAWN the GROUPs Spawn_KA_50:SpawnScheduled(180,0) Spawn_C_101EB:SpawnScheduled(180,0) Spawn_MI_8MTV2:SpawnScheduled(180,0) Spawn_A_10C:SpawnScheduled(180,0) -- Now run the mission and observe the behaviour. end The SPAWN class in the MOOSE framework takes care of all of the respawning after landing for you. Respawning can be done in a couple of ways. The easiest is to respawn right after landing, but respawning can also happen after engine shutdown when the planes parks at the parking spot and shuts down its engines. Please follow carefully the following instructions if you wanna use this framework. Watch the videos and invest about an hour to set this up. WARNING: This is a complete new way of modelling missions. You'll need to invest time and the reward will be more fun and design greater missions and do things you never thought were possible. If you don't have this time, or don't want to do this effort, then suggest you try a few things out. If you like it, use, it. You can forget triggers and all of that. There are many people now who have learned and don't want to go back to the ME stuff once they learned the framework and learned a bit of lua. FC
  9. Let me guarantee you that the performance impact may be there, but it is minimal. The MOOSE framework uses the late activation heavily. Spawning groups has a performance impact and has all sorts of unwanted side effects (like when a group is spawned dynamically, the group object only becomes "alive" after a few seconds, which is a problem in your logic if you need to object immediately after the spawn). MOOSE has a SPAWN class. This class hides the complexity of spawning groups and provides a lot of additional features. SPAWN prepares ALL the objects in advance, that is, it tries to spawn every object, but late activated, so that when the spawn happens, it is already in the mission and it will be just an activation. This heavily improves the smoothness and the performance of your missions. FC
  10. OK. thank you Rik. I will attack demo missions next time at the first post to avoid future confusion. Sven
  11. What i don't get is ... How to merge static campaigns using DAWS from session to session with dynamic mission and task creation in MOOSE? I mean, MOOSE does a dynamic task creation and task governance, and all this is initialized at mission start. It will create new objects dynamically, create new tasks dynamically, create new missions dynamically while the mission is running in a true multi-player environment. How to bring DAWS into this process? It is apples and pears, no? When the mission would be brought up again using DAWS, it would load the units last known positions. But the whole process and governance is lost of the tasking and mission creation. The only way I see such possible, is to implement a DAWS-like function within MOOSE itself. But that is a whole other exercise. Or link MOOSE with DAWS. It would be nice though to have, I agree, but that is for next year. Let us first get MOOSE tasking stable and working correctly. Step by step buys, really. Instead of having wishlists, it would be more beneficial if you would contribute and help to test out what is currently in development. And provide feedback from an end-user perspective. Chromium and myself will get into contact with each other when time is ripe. It is a promise from my part. Sven
  12. I only have one life.
  13. Thanks guys. I've summarize the issues and actions on the MOOSE site @GITHUB this morning. Please make a user id and review the issues when you have time. You can leave notes or make corrections, or add new one if any. https://github.com/FlightControl-Master/MOOSE/issues?q=is%3Aopen+is%3Aissue+milestone%3AMoose-2.2 The server will be up from time to time as I am developing and testing stuff. Ping me on skype if you wanna join testing too. Sven
  14. Sorry for being a pain :pain:, but let me post this bug demonstration mission. There IS a problem with late activation, in multi player. Please download the attached test mission, and follow the following test procedure. The test mission contains an infantry to observe tanks in external view. 4 SA-6 combinations are deployed, each having an SA-6 STR and a SA-6 LN. The SA-6 STR should start turning when it is alive. This is the test mission setup: - SA-6 TANK A: Not late activated. - SA-6 TANK B: Late activated, and activated using Controller:setOnOff( true ) - SA-6 TANK C: Late activated, activated using trigger.action.activateGroup( ... ) - SA-6 TANK D: Late activated and with a route point, activated using trigger.action.activateGroup( ... ) The test results should be that ALL 4 tanks should have running radars and should be operational after the scripts have run. The script runs after 30 seconds. TANK_B = Group.getByName( "TANK B" ) TANK_B_CONTROLLER = TANK_B:getController() TANK_B_CONTROLLER:setOnOff( true ) TANK_C = Group.getByName( "TANK C" ) trigger.action.activateGroup( TANK_C ) TANK_D = Group.getByName( "TANK D" ) trigger.action.activateGroup( TANK_D ) trigger.action.outText( "Now TANK B, C and D should also start turning their RADAR", 30 ) A/ In a SINGLE PLAYER setup: - Run the mission. - Select Game Master slot on red coalition. - Select on the map the INFANTRY and go EXTERNAL VIEW (F7). - Observe the SA-6. All the radars of the 4 SA-6 STR should turn. Only 3 do! B/ In a MULTI PLAYER setup: - Run the mission on a server DCS, ensure the mission will only run when a client logs into the server. - Open the client DCS, and select the server DCS in multi player. - Select Game Master slot on red coalition. - Select on the map the INFANTRY and go EXTERNAL VIEW (F7). - Observe the SA-6. All the radars of the 4 SA-6 STR should turn. BUT! there is an issue: 1. Only TANK A radar is turning. 2. TANK B, C and D have no turning radars. 3. TANK D is not moving. Now do the following: - Exit the client DCS. - Open the client DCS, and select the server DCS in multi player. - You'll see TANK A, B and TANK D radars turning - TANK D is moving. Please have the ED team check this out too. Thanks Sven Bug 004 - Late Activated Unit Problems - DCS 1.5.6.5199.miz
  15. I'll be there. Currently making a demo mission for the ED team to illustrate the introduced bug in DCS on 1.5.6. Sven
  16. Okay. Thanks. My regards to the team. Can they also check that the method Controller:setAIOnOff( true ) is working on a late activated group, visible at start in version 1.5.7? No client server is required. Only server. The group does not get active... Anyway, let's await 1.5.7. Sven
  17. To be more specific, this is not synching over the network for a group: Controller:setOnOff( true ) And trigger.action.activateGroup( Group )
  18. There seems to be a bug with late activated units that get activated in a MP server. Anybody experiencing the same??? https://forums.eagle.ru/showthread.php?p=3185816#post3185816
  19. Any progress on this please??? I can now also confirm that NO group that gets late activated starts working on the client, it does on the server though... What do to here? Can somebody PLEASE have a look at this? @Grimes told this may be an old bug that has been reintroduced :-) Sven
  20. A little summary of the required optimizations: - Too many levels in the settings menu, simplification is required. (Settings is a menu to set coordinate formats like MGRS, LL, BRA for A2G and A2A and also configure the measurement system like metric or imperial). The problem is that for players there are too many levels and the terminology can be made more clear. => MOOSE will split the settings menu. The default systems settings menu will be placed under the commandcenter group menu. You will need to jump into the CC using the CA module as a game master. The player settings will be placed on group level. Only the first player who joins the group is considered the leader of the group, and will be able to change the settings for himself and for the group. => MOOSE will make the terminology in the settings menu more clear: - Bearing Range (BR) - Lattitude Longitude (LL) - Military Grid Reference System (MGRS) - Bearing Range Altitude Attitude (BRAA) - Bullseys (BULLS) - Problem with the activation of the SA-6 after the transport of the engineers from the pickup location to the launch sites. The transportation worked. => The mission script will be validated to check whether the event handler (OnAfterDeploy) of the CARGO object is captured correctly. The event handler should activate the SA-6 once the engineers are deployed at one of the 3 deployment zones. - We also noticed a problem with the location of the smoke. The smoke should come from the engineers location or reference site, not just smoke popping in the air... => MOOSE will be checked how and where the smoke is generated when the player comes close to the pickup location. Also, It should be optional to smoke or not smoke. Maybe with a menu option smoke could be "requested". => MOOSE will be checked how and where smoke is generated at the deployment zone, when the player comes close. The smoke generation should also be optional here. - Cargo (the engineers) should be "refreshed" in the mission. So, on a continuous basis players can retry to transport the engineers until mission success... => Using the SPAWN class, the engineers will be respawned. However, it is not so easy :-) CARGO has processes influencing the cargo group state and composition. When cargo is loaded into the carrier, the cargo group ceases to exist. So, what i will do is in the mission, i will create an event handler that will respawn a cargo group object once the cargo is deployed or dead. A cargo can go dead in two ways: when the cargo was loaded into the helicopter but the helicopter crashed or the player exits the helicopter, or, when the cargo is shot or has an accident. - The scoring. The level of fratricide should be modified. A player should not shoot its own friendlies. => The SCORING class provides methods to tweak the setting. The mission will be adjusted to a less permissive level using the method: http://flightcontrol-master.github.io/MOOSE/Documentation/Scoring.html##(SCORING).SetFratricide - The hit messages. Hits to targets generate a score, but also a message by default. Switch the hit messages off. => The SCORING class provides a method to disable messages to be displayed when targets are hit. http://flightcontrol-master.github.io/MOOSE/Documentation/Scoring.html##(SCORING).SetMessagesHit - Check why for certain mi-8 helicopters there wasn't a possibility to use the cargo menus. No messages were generated. FC saw an error appearing in the logging. Something with the callisign wasn't working! => FC will check that piece of logic in the MOOSE script. I think it is a simple fix that will be required for this. (I saw a nil value of callsign). So, as agreed, I will do these fixes and then we can do a second session this evening at 9pm CET. More people are kindly invited. Server: MOOSE TASKING TESTS Teamspeak: 85.236.100.27:16317 ; Search for the channel where FlightControl has joined. Thanks for this session yesterday, it was very useful for all of us! FC
  21. Thanks guys.
  22. Fluent in English... the server name is MOOSE A2A Playground. Thanks for trying to join. There is a teamspeak server also. But i need to ask VIFF if it is okay you join, because it is you mine.
  23. Hi VIFF, Which airplane types or helicopter types would you like to see? And is there anything special i need to do? Sven
  24. I'll be online at 8pm
  25. coool are you now available?
×
×
  • Create New...