Delta99 Posted September 16, 2017 Share Posted September 16, 2017 Will moose allow respawning of player groups in single player? I'm trying to create a dogfight module similar to BMS where player and target both respawn after one is killed. I think using a group:destroy and going through the crash recovery menu will work, but I'm looking for a way to autospawn the player to make it less clunky. A twist that may complicate this: Id like to be able to make multiple playable clients and have it automatically respawn you in the client you chose at the start. This is very unlikely to work and will most likely be a DCS limitation. My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
Delta99 Posted September 16, 2017 Share Posted September 16, 2017 What is the error in the DCS.log file? Spawns could take a second or two before they are available so you can try moving the spawn of the plane before you define the zones. That might give it enough time to the be able to set controllable on it. If this is in fact the issue. I'm trying to get one aircraft to patrol shifting zones (as in Patrol mission example) but I want the aircraft to be Su-27 and it should engage enemy withing distance. Can't seem to get a spawned aircraft out of this, I'm blind :( I'm editing your example Sven: PatrolZoneGroup1 = GROUP:FindByName( "Patrol Zone 1" ) PatrolZone1 = ZONE_POLYGON:New( "Patrol Zone 1", PatrolZoneGroup1 ) PatrolZone1:SetEngageRange( 20000 ) -- Set the Engage Range to 20.000 meters. The AI won't engage when the enemy is beyond 20.000 meters. PatrolZoneGroup2 = GROUP:FindByName( "Patrol Zone 2" ) PatrolZone2 = ZONE_POLYGON:New( "Patrol Zone 2", PatrolZoneGroup2 ) PatrolZone2:SetEngageRange( 20000 ) -- Set the Engage Range to 20.000 meters. The AI won't engage when the enemy is beyond 20.000 meters. --PatrolGroup = GROUP:FindByName( "Patrol Group" ) PatrolSpawn = SPAWN:New( "Patrol Group" ) PatrolGroup = PatrolSpawn:Spawn() Patrol1 = AI_PATROL_ZONE:New( PatrolZone1, 3000, 6000, 400, 600 ) Patrol1:ManageFuel( 0.2, 60 ) Patrol1:SetControllable( PatrolGroup ) Patrol1:__Start( 5 ) Patrol2 = AI_PATROL_ZONE:New( PatrolZone2, 600, 1000, 300, 400 ) Patrol2:ManageFuel( 0.2, 0 ) function Patrol1:OnLeaveRTB( AIGroup ) AIGroup:MessageToRed( "Returning to base", 20 ) end function Patrol1:OnAfterRTB( AIGroup ) local NewGroup = PatrolSpawn:Spawn() Patrol2:SetControllable( NewGroup ) Patrol2:__Start( 1 ) end function Patrol1:OnEnterPatrol( AIGroup ) AIGroup:MessageToRed( "Patrolling in zone " .. PatrolZone1:GetName() , 20 ) end function Patrol2:OnBeforeRTB( AIGroup ) AIGroup:MessageToRed( "Returning to base", 20 ) end function Patrol2:OnEnterRTB( AIGroup ) local NewGroup = PatrolSpawn:Spawn() Patrol1:SetControllable( NewGroup ) Patrol1:__Start( 1 ) end function Patrol2:OnEnterPatrol( AIGroup ) AIGroup:MessageToRed( "Patrolling in zone " .. PatrolZone2:GetName() , 20 ) end My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
ViperSix Posted September 16, 2017 Share Posted September 16, 2017 (edited) Hi @ all. I am trying to handle an event of a group being dead, and activating a "SpawnScheduleStop" when this happens. I was trying to modify the "UNIT:FindByName" Class, by changing it as follows: (GROUP:FindByName) Obviously, this wasn't right... haha :megalol: What would be the right way to do this? I added the fraction of the code blow. :helpsmilie: _1st_OpFor_LMLRS_Base = [color="Red"]GROUP[/color]:FindByName( "1st OpFor LMLRS Group Base" ) _1st_OpFor_LMLRS_Base:HandleEvent( EVENTS.Dead ) function _1st_OpFor_LMLRS_Base:OnEventDead( EventData ) Respawn_1st_OpFor_LMLRS:SpawnScheduleStop() end Thanks!!!! :-D EDIT: Of course, above is more code, just for completion: -- Spawner Respawn_1st_OpFor_LMLRS = SPAWN :New("1st Grad Platoon (OpFor)") :InitLimit(8,0) :SpawnScheduled(6,0) -- Initialisation Spawns Respawn_1st_OpFor_LMLRS:Spawn() -- next Edited September 16, 2017 by ViperSix Link to comment Share on other sites More sharing options...
Pikey Posted September 16, 2017 Share Posted September 16, 2017 (edited) I've done this, it's not too hard. Firstly you have to grab the event for the airbase switching sides. If you need it on mission load, like I did you have to actually check the coalition in lua, but an event should be ok for you. (my mission woudl re-run and reload so I never knew the starting position. Second, the SPAWNS don't care on airbase ownership (but the warehouse will, interestingly). So you need to react to the event above and stop the spawns. 1. Create the SPAWN objects for both sides. I then used :SpawnScheduleStop() and they will stop, so initially you have red and blue created but doing nothing. eg KU1 = SPAWN :New("KU1") :InitLimit(1,0) :InitCleanUp(60) :SpawnScheduled(500,.5) KU1:SpawnScheduleStop() Then based on your EVENT, start and stop the Spawns eg KU1:SpawnScheduleStart() I did it less elegantly than using EVENT, I set up a scheduler and checked the airbase ownership with a function CraigOwen helped me write a few months back: function checkblue(ABname) local tmp = coalition.getAirbases(2) for i=1,#tmp do if tmp:getName() == ABname then return true end end end So...the begining of the SCHEDULER goes like this: SCHEDULER:New( nil, function() do if checkblue("Kobuleti") then REDSpawn:SpawnScheduleStop() BlueSpawn:SpawnScheduleStart() ... You see where this is going? It's more specific as this was Player versus AI, I allowed Neutral to also spawn RED, but that's a design decicion I wanted. Bonus points I also toggled a bunch of flags that set the opening of client slots. trigger.action.setUserFlag("client-KOB1",1) which is part of Ciribobs slot blocking. End result is: The SCHEDULER runs and every 15 seconds checks the ownership of an airfield. If it is captured (by the ground troops you were supporting) then it disables all the red spawns, enables the blue ones, enables you to take a slot on the airfield too. Works great. You get occasions with blue and red clashing and all sorts of shooting and mess at the airfield, but that's super exciting if I'm honest. Remember only ground units can capture an airfield. I had many airbases monitored and as they were captured, I stopped their sides activity and started the others. Was probably the single coolest thing I ever did with MOOSE. Trying to create a mission where you need to take over an airfield. My thought was that when the base switches sides the enemy cap will no longer spawn and the friendly cap will start spawn instead. But it seems like the blue cap will spawn, even if the base belongs to red. Is the side not controlled by the script? Im sure you can script it, but i dont know how. red cap RED_A2A_GCICAP:SetSquadron("Kobuleti_cap", "Kobuleti", "mig29cap", 16) RED_A2A_GCICAP:SetSquadronGci( "Kobuleti_cap", 900, 1200 ) RED_A2A_GCICAP:SetSquadronCap( "Kobuleti_cap", ZONE:New( "Kobuleti_cap_zone" ), 4000, 10000, 700, 900, 800, 1100 ) RED_A2A_GCICAP:SetSquadronCapInterval( "Kobuleti_cap", 2, 30, 60, 1 ) RED_A2A_GCICAP:SetSquadronOverhead( "Kobuleti_cap", 1.5 ) RED_A2A_GCICAP:SetSquadronGrouping( "Kobuleti_cap", 2 ) RED_A2A_GCICAP:SetSquadronTakeoffFromRunway( "Kobuleti_cap" ) RED_A2A_GCICAP:SetSquadronLandingAtRunway("Kobuleti_cap") blue cap BLUE_A2A_GCICAP:SetSquadron("Kobuleti_cap_blue", "Kobuleti", "f16cap", 40) BLUE_A2A_GCICAP:SetSquadronGci( "Kobuleti_cap_blue", 900, 1200 ) BLUE_A2A_GCICAP:SetSquadronCap( "Kobuleti_cap_blue", ZONE:New( "Kobuleti_cap_zone" ), 4000, 10000, 700, 900, 800, 1100 ) BLUE_A2A_GCICAP:SetSquadronCapInterval( "Kobuleti_cap_blue", 2, 30, 60, 1 ) BLUE_A2A_GCICAP:SetSquadronOverhead( "Kobuleti_cap_blue", 1.5 ) BLUE_A2A_GCICAP:SetSquadronGrouping( "Kobuleti_cap_blue", 2 ) BLUE_A2A_GCICAP:SetSquadronTakeoffFromRunway( "Kobuleti_cap_blue" ) BLUE_A2A_GCICAP:SetSquadronLandingAtRunway("Kobuleti_cap_blue") Edited September 16, 2017 by Pikey lots a bloody typos as it's late ___________________________________________________________________________ SIMPLE SCENERY SAVING * SIMPLE GROUP SAVING * SIMPLE STATIC SAVING * Link to comment Share on other sites More sharing options...
HiJack Posted September 16, 2017 Share Posted September 16, 2017 What is the error in the DCS.log file? Spawns could take a second or two before they are available so you can try moving the spawn of the plane before you define the zones. That might give it enough time to the be able to set controllable on it. If this is in fact the issue. Good tip! As I said, I'm blind and did not even think about the log :P I'm sure there is something logged. Thanks. Link to comment Share on other sites More sharing options...
Pikey Posted September 16, 2017 Share Posted September 16, 2017 Just remember, EVENTS.Dead tied to a group is checking for any group member that died. Also remember the findbyname isn't ideal here, you want an OnSpawn function to pick up and track the spawn object. You might need to spell out your entire requirement because on the face of it, you could simply just not use SpawnScheduled and use a normal Spawn, in which case, once dead, it's done for anyway. If you are using SpawnScheduled to continuously spawn a group and for the first one of any of the groups to get killed to then stop the spawn, then I'd need to get my thinking cap on. Hi @ all. I am trying to handle an event of a group being dead, and activating a "SpawnScheduleStop" when this happens. I was trying to modify the "UNIT:FindByName" Class, by changing it as follows: (GROUP:FindByName) Obviously, this wasn't right... haha :megalol: What would be the right way to do this? I added the fraction of the code blow. :helpsmilie: _1st_OpFor_LMLRS_Base = [color=Red]GROUP[/color]:FindByName( "1st OpFor LMLRS Group Base" ) _1st_OpFor_LMLRS_Base:HandleEvent( EVENTS.Dead ) function _1st_OpFor_LMLRS_Base:OnEventDead( EventData ) Respawn_1st_OpFor_LMLRS:SpawnScheduleStop() end Thanks!!!! :-D EDIT: Of course, above is more code, just for completion: -- Spawner Respawn_1st_OpFor_LMLRS = SPAWN :New("1st Grad Platoon (OpFor)") :InitLimit(8,0) :SpawnScheduled(6,0) -- Initialisation Spawns Respawn_1st_OpFor_LMLRS:Spawn() -- next ___________________________________________________________________________ SIMPLE SCENERY SAVING * SIMPLE GROUP SAVING * SIMPLE STATIC SAVING * Link to comment Share on other sites More sharing options...
ViperSix Posted September 16, 2017 Share Posted September 16, 2017 Just remember, EVENTS.Dead tied to a group is checking for any group member that died. Also remember the findbyname isn't ideal here, you want an OnSpawn function to pick up and track the spawn object. You might need to spell out your entire requirement because on the face of it, you could simply just not use SpawnScheduled and use a normal Spawn, in which case, once dead, it's done for anyway. If you are using SpawnScheduled to continuously spawn a group and for the first one of any of the groups to get killed to then stop the spawn, then I'd need to get my thinking cap on. Thanks for the answer an first of all, thank you for this awesome framework you provided!!!! Now the whole story: What I want to archive is a group of vehicles that stops its spawning cycle (with a "max-unit-alive" limit of x) if another designated group is not alive. So a vehicle group that spawns as long as another group is alive. Basically just like the code you provided on gitHub, but instead for a single unit, for a group: local Tank1 = UNIT:FindByName( "Tank A" ) local Tank2 = UNIT:FindByName( "Tank B" ) -- Here we subscribe to the Dead events. So, if one of these tanks dies, the Tank1 or Tank2 objects will be notified. Tank1:HandleEvent( EVENTS.Dead ) Tank2:HandleEvent( EVENTS.Dead ) --- This function is an Event Handling function that will be called when Tank1 is Dead. -- @param Wrapper.Unit#UNIT self -- @param Core.Event#EVENTDATA EventData function Tank1:OnEventDead( EventData ) self:SmokeGreen() end --- This function is an Event Handling function that will be called when Tank2 is Dead. -- @param Wrapper.Unit#UNIT self -- @param Core.Event#EVENTDATA EventData function Tank2:OnEventDead( EventData ) self:SmokeBlue() end So something like: group1 (alive) = group 2 spawning -> on group1 (dead) = group 2 spawning -> off Thank You!!! :-) Im so exited about Moose.... Its just what DCS needs! Link to comment Share on other sites More sharing options...
Subferro Posted September 17, 2017 Share Posted September 17, 2017 This is very unlikely to work and will most likely be a DCS limitation. Ok, gave up on the auto respawn and have it working reliably, now I'm running into the issue of trying to respawn an AI wingman when I respawn. I had read that when the player respawn into a client with a wingman then the wingman would respawn too, but this is not the case. Any ideas on how to spawn a plane into my group? Link to comment Share on other sites More sharing options...
Delta99 Posted September 17, 2017 Share Posted September 17, 2017 Ok, gave up on the auto respawn and have it working reliably, now I'm running into the issue of trying to respawn an AI wingman when I respawn. I had read that when the player respawn into a client with a wingman then the wingman would respawn too, but this is not the case. Any ideas on how to spawn a plane into my group? If the wingman is dead then yes they will respawn with you. If not they just act as your wingman after you spawn back in unless you spawn back into a different slot. My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
Subferro Posted September 17, 2017 Share Posted September 17, 2017 See I've tried using a Unit.destroy on the wingman that essentially "kills" them but they still don't respawn. Does the destroy action not work for this purpose? Link to comment Share on other sites More sharing options...
Delta99 Posted September 17, 2017 Share Posted September 17, 2017 See I've tried using a Unit.destroy on the wingman that essentially "kills" them but they still don't respawn. Does the destroy action not work for this purpose? Do you mean they don't instantly respawn while you (human group leader) are still flying? Then no, they probably don't respawn until you die and restart in the same slot. All of this will be standard DCS behaviour that Moose cannot help with. However, you might be able to kind of do what you want in the form of using Escort type tasks. But then you won't have a real wingman (ie. you won't be the group leader and have menu actions to command them) but rather just a unit that will fly escort with you. Then you can respawn that unit as you like with Moose. All depends what you are really trying to accomplish and how much scripting you want to do. My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
Pikey Posted September 17, 2017 Share Posted September 17, 2017 Thank FlightControl of course. Also joining Slack would help you get a faster answer I think. Bookmark this page: http://flightcontrol-master.github.io/MOOSE/Documentation/Spawn.html There's always a few ways of doing these things. One way could be: 1) A way to monitor the alive/dead of the critical group or units (is it some or all of the group?) 2) :SpawnScheduleOff (if you are using SpawnSchedule() to create the endless spawns.) You could also just destroy the SPAWN object if you are spawning another way. MySpawnObject = nil. And then create another Spawn object with the use of the InitLimit(maxnumber) which will automatically spawn whenever the number is beneath the limit. Thanks for the answer an first of all, thank you for this awesome framework you provided!!!! Now the whole story: What I want to archive is a group of vehicles that stops its spawning cycle (with a "max-unit-alive" limit of x) if another designated group is not alive. So a vehicle group that spawns as long as another group is alive. Basically just like the code you provided on gitHub, but instead for a single unit, for a group: local Tank1 = UNIT:FindByName( "Tank A" ) local Tank2 = UNIT:FindByName( "Tank B" ) -- Here we subscribe to the Dead events. So, if one of these tanks dies, the Tank1 or Tank2 objects will be notified. Tank1:HandleEvent( EVENTS.Dead ) Tank2:HandleEvent( EVENTS.Dead ) --- This function is an Event Handling function that will be called when Tank1 is Dead. -- @param Wrapper.Unit#UNIT self -- @param Core.Event#EVENTDATA EventData function Tank1:OnEventDead( EventData ) self:SmokeGreen() end --- This function is an Event Handling function that will be called when Tank2 is Dead. -- @param Wrapper.Unit#UNIT self -- @param Core.Event#EVENTDATA EventData function Tank2:OnEventDead( EventData ) self:SmokeBlue() endSo something like: group1 (alive) = group 2 spawning -> on group1 (dead) = group 2 spawning -> off Thank You!!! :-) Im so exited about Moose.... Its just what DCS needs! ___________________________________________________________________________ SIMPLE SCENERY SAVING * SIMPLE GROUP SAVING * SIMPLE STATIC SAVING * Link to comment Share on other sites More sharing options...
Subferro Posted September 17, 2017 Share Posted September 17, 2017 Do you mean they don't instantly respawn while you (human group leader) are still flying? Then no, they probably don't respawn until you die and restart in the same slot. All of this will be standard DCS behaviour that Moose cannot help with. However, you might be able to kind of do what you want in the form of using Escort type tasks. But then you won't have a real wingman (ie. you won't be the group leader and have menu actions to command them) but rather just a unit that will fly escort with you. Then you can respawn that unit as you like with Moose. All depends what you are really trying to accomplish and how much scripting you want to do. No, I'm trying to get them to do the second option, where when I respawn into the same slot, they also respawn. It sounds like they should be doing that, but right now they definitely aren't. Link to comment Share on other sites More sharing options...
FlightControl Posted September 18, 2017 Author Share Posted September 18, 2017 Ok, gave up on the auto respawn and have it working reliably, now I'm running into the issue of trying to respawn an AI wingman when I respawn. I had read that when the player respawn into a client with a wingman then the wingman would respawn too, but this is not the case. Any ideas on how to spawn a plane into my group? I am sure that what you wanted to do has a chance for success. My reply rate is low. The trick will be to build a template dynamically based on parameters. And add planes where wanted. SPAWN has all the ingredients to do these things. But now we need to look into a "player" skill setting a bit. Can you give this about a week? Fx [TABLE][sIGPIC][/sIGPIC]| Join MOOSE community on: DISCORD :thumbup: Website of the MOOSE LUA Framework. MOOSE framework Downloads. Check out Example Missions to try out and learn. MOOSE YouTube Channel for live demonstrations and tutorials. [/TABLE] Link to comment Share on other sites More sharing options...
FlightControl Posted September 18, 2017 Author Share Posted September 18, 2017 A couple of urgent fixes: DESIGNATE: Messages not appearing correctly and crashing the logic is fixed. (due to a stupid typo). TASK_A2G: Tasking is fixed. Status menus are now displayed properly, also when the task is planned. MENU_COMMAND: I found now why DCS is displayer "error in error handler" sometimes when a menu was selected. The error handler is DCS is bugged, so made my own one. This one is to help FubarBundy. Thanks Mechanist and Ramsay for the error reports on github. Ensure you download and include the latest moose.lua from the MOOSE release page: https://github.com/FlightControl-Master/MOOSE/releases [TABLE][sIGPIC][/sIGPIC]| Join MOOSE community on: DISCORD :thumbup: Website of the MOOSE LUA Framework. MOOSE framework Downloads. Check out Example Missions to try out and learn. MOOSE YouTube Channel for live demonstrations and tutorials. [/TABLE] Link to comment Share on other sites More sharing options...
FlightControl Posted September 18, 2017 Author Share Posted September 18, 2017 Some more fixes... AI_CAP_ZONE: Fixed issues with CAP engaging (independent CAP so not related to GCICAP). AI_CAS_ZONE: Fixed issues with CAS engaging. This to help Hijack. Ensure you download and include the latest moose.lua from the MOOSE release page: https://github.com/FlightControl-Master/MOOSE/releases FC [TABLE][sIGPIC][/sIGPIC]| Join MOOSE community on: DISCORD :thumbup: Website of the MOOSE LUA Framework. MOOSE framework Downloads. Check out Example Missions to try out and learn. MOOSE YouTube Channel for live demonstrations and tutorials. [/TABLE] Link to comment Share on other sites More sharing options...
Rivvern Posted September 18, 2017 Share Posted September 18, 2017 (edited) FC. Thank you for all your hard work! :) I wonder if you could spare a few minutes checking whats wrong with my F/A-18 squadron based off a carrier. Some flights seems to do ok, going to the capzone but mostly they just land immediately. Mission attached. This is a section from the DCS.log Cant see any problems. EDIT: Might have fixed it by setting a waypoint... Tactical Overview - Target AREA.1 ( 1 ): ( #2 ) vfa94_template#005-02, Pilot #010, - Target AREA.3 ( 3 ): ( #1 ) Pilot #004, - ru132_template#003 ( CAP - Engaging ): ( #2 ) F: 70, D:100 - Executing - Target AREA.4 ( 4 ): ( #2 ) Pilot #005, Pilot #006, - Target AREA.9 ( 6 ): ( #2 ) vfa94_template#006-02, vfa94_template#006-01, - Target AREA.10 ( 7 ): ( #1 ) vfa94_template#002-02, - No Targets: - ru132_template#004 ( CAP - Patrolling ): ( #2 ) F: 96, D:100 - Executing - 2 Tasks) 04971.622 INFO SCRIPTING: 33324( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="Detect",[3]="Detecting",}) 04971.630 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04971.630 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04971.691 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04971.691 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04971.758 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04971.759 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04971.823 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04971.833 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04972.033 WARNING LOG: 2 duplicate message(s) skipped. 04972.033 INFO SCRIPTING: 43651( 44592)/E: AI_A2A_GCICAP00328.CanCAP({["CapCount"]=2,}) 04972.660 INFO DCS: AWACSDBG: added id - 16823296, whois - MiG-23MLD ru132_template#003-01 04973.331 INFO DCS: AWACSDBG: added id - 16838912, whois - MiG-23MLD ru132_template#004-01 04973.331 INFO DCS: AWACSDBG: added id - 16839168, whois - MiG-23MLD ru132_template#004-02 04973.367 INFO SCRIPTING: 43651( 44592)/E: AI_A2A_GCICAP00303.CanCAP({["CapCount"]=2,}) 04973.605 INFO SCRIPTING: 54107( -1)/E: AI_A2A_GCICAP00303.function(onafterReport) 04973.605 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04973.605 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04973.605 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04973.605 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04973.605 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04973.605 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04973.605 INFO SCRIPTING: 45012( 54111)/E: AI_A2A_GCICAP00303.ProcessDetected( Tactical Overview - Target AREA.5 ( 3 ): ( #2 ) ru132_template#003-02, ru132_template#003-01, - Target AREA.6 ( 4 ): ( #2 ) ru132_template#004-02, ru132_template#004-01, - No Targets: - vfa94_template#005 ( CAP - Patrolling ): ( #1 ) F: 152, D:100 - Executing - vfa94_template#006 ( CAP - Patrolling ): ( #2 ) F: 150, D:100 - Executing - vfa94_template#002 ( CAP - Holding ): ( #1 ) F: 36, D:100 - Executing - 3 Tasks) 04973.605 INFO SCRIPTING: 54107( -1)/E: AI_A2A_GCICAP00328.function(onafterReport) 04973.605 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04973.605 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04973.605 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04973.605 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04973.605 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04973.605 INFO SCRIPTING: 44530( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Defender Group Name: ru132_template#003, Size: 2) 04973.605 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04973.605 INFO SCRIPTING: 44530( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Defender Group Name: ru132_template#003, Size: 2) 04973.605 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04973.605 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.605 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04973.606 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.606 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04973.606 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04973.606 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.606 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04973.606 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.606 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04973.606 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04973.606 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.606 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04973.606 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04973.606 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04973.606 INFO SCRIPTING: 45012( 54111)/E: AI_A2A_GCICAP00328.ProcessDetected( Tactical Overview - Target AREA.1 ( 1 ): ( #2 ) vfa94_template#005-02, Pilot #010, - Target AREA.3 ( 3 ): ( #1 ) Pilot #004, - ru132_template#003 ( CAP - Engaging ): ( #2 ) F: 68, D:100 - Executing - Target AREA.4 ( 4 ): ( #2 ) Pilot #005, Pilot #006, - Target AREA.9 ( 6 ): ( #2 ) vfa94_template#006-02, vfa94_template#006-01, - Target AREA.10 ( 7 ): ( #1 ) vfa94_template#002-02, - No Targets: - ru132_template#004 ( CAP - Patrolling ): ( #2 ) F: 96, D:100 - Executing - 2 Tasks) 04973.832 INFO SCRIPTING: 33324( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="Detect",[3]="Detecting",}) 04973.843 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04973.966 WARNING LOG: 1 duplicate message(s) skipped. 04973.966 INFO SCRIPTING: 33324( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="Detect",[3]="Detecting",}) 04973.978 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04973.978 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.043 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.043 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.111 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.111 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.177 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.177 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.244 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.245 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.312 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.315 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04974.702 INFO SCRIPTING: 43651( 44592)/E: AI_A2A_GCICAP00328.CanCAP({["CapCount"]=2,}) 04974.713 INFO DCS: AWACSDBG: added id - 16823552, whois - MiG-23MLD ru132_template#003-02 04974.917 INFO DCS: AWACSDBG: removed id - 16846592, whois - F/A-18C vfa94_template#005-02 04975.023 INFO DCS: AWACSDBG: added id - 16846848, whois - F/A-18C vfa94_template#006-01 04975.023 INFO DCS: AWACSDBG: added id - 16847104, whois - F/A-18C vfa94_template#006-02 04975.612 INFO SCRIPTING: 54107( -1)/E: AI_A2A_GCICAP00303.function(onafterReport) 04975.612 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04975.612 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.612 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04975.612 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.612 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04975.612 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04975.612 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.612 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04975.612 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.612 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04975.612 INFO SCRIPTING: 45012( 54111)/E: AI_A2A_GCICAP00303.ProcessDetected( Tactical Overview - Target AREA.5 ( 3 ): ( #2 ) ru132_template#003-02, ru132_template#003-01, - Target AREA.6 ( 4 ): ( #2 ) ru132_template#004-02, ru132_template#004-01, - No Targets: - vfa94_template#005 ( CAP - Patrolling ): ( #1 ) F: 152, D:100 - Executing - vfa94_template#006 ( CAP - Patrolling ): ( #2 ) F: 150, D:100 - Executing - vfa94_template#002 ( CAP - Holding ): ( #1 ) F: 31, D:100 - Executing - 3 Tasks) 04975.612 INFO SCRIPTING: 54107( -1)/E: AI_A2A_GCICAP00328.function(onafterReport) 04975.612 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04975.612 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.612 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04975.612 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.612 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04975.613 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04975.613 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.613 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04975.613 INFO SCRIPTING: 44530( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Defender Group Name: ru132_template#003, Size: 2) 04975.613 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.613 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04975.613 INFO SCRIPTING: 44530( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Defender Group Name: ru132_template#003, Size: 2) 04975.613 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04975.613 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.613 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04975.613 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.613 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04975.613 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04975.613 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.613 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04975.613 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.613 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04975.613 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04975.613 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.613 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04975.613 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04975.614 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04975.614 INFO SCRIPTING: 45012( 54111)/E: AI_A2A_GCICAP00328.ProcessDetected( Tactical Overview - Target AREA.1 ( 1 ): ( #2 ) vfa94_template#005-02, Pilot #010, - Target AREA.3 ( 3 ): ( #1 ) Pilot #004, - ru132_template#003 ( CAP - Engaging ): ( #2 ) F: 64, D:100 - Executing - Target AREA.4 ( 4 ): ( #2 ) Pilot #005, Pilot #006, - Target AREA.9 ( 6 ): ( #2 ) vfa94_template#006-02, vfa94_template#006-01, - Target AREA.10 ( 7 ): ( #1 ) vfa94_template#002-02, - No Targets: - ru132_template#004 ( CAP - Patrolling ): ( #2 ) F: 95, D:100 - Executing - 2 Tasks) 04975.973 INFO SCRIPTING: 43651( 44592)/E: AI_A2A_GCICAP00303.CanCAP({["CapCount"]=2,}) 04976.320 INFO SCRIPTING: 33324( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="Detect",[3]="Detecting",}) 04976.320 INFO SCRIPTING: 33324( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="Detect",[3]="Detecting",}) 04976.334 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.334 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.398 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.398 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.464 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.464 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.533 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.533 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.597 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.597 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.665 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.665 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00326.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04976.731 INFO SCRIPTING: 33347( -1)/E: DETECTION_AREAS00301.function({[1]="Detecting",[2]="DetectionGroup",[3]="Detecting",}) 04977.618 WARNING LOG: 1 duplicate message(s) skipped. 04977.618 INFO SCRIPTING: 54107( -1)/E: AI_A2A_GCICAP00303.function(onafterReport) 04977.618 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04977.618 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.618 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04977.618 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.618 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT15927.Flush({[1]="Objects in Set:",[2]="ru132_template#003-02, ru132_template#003-01, ",}) 04977.618 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04977.618 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.618 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04977.618 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00303.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.618 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT16217.Flush({[1]="Objects in Set:",[2]="ru132_template#004-02, ru132_template#004-01, ",}) 04977.618 INFO SCRIPTING: 45012( 54111)/E: AI_A2A_GCICAP00303.ProcessDetected( Tactical Overview - Target AREA.5 ( 3 ): ( #2 ) ru132_template#003-02, ru132_template#003-01, - Target AREA.6 ( 4 ): ( #2 ) ru132_template#004-02, ru132_template#004-01, - No Targets: - vfa94_template#005 ( CAP - Patrolling ): ( #1 ) F: 152, D:100 - Executing - vfa94_template#006 ( CAP - Patrolling ): ( #2 ) F: 149, D:100 - Executing - vfa94_template#002 ( CAP - Holding ): ( #1 ) F: 27, D:100 - Executing - 3 Tasks) 04977.618 INFO SCRIPTING: 54107( -1)/E: AI_A2A_GCICAP00328.function(onafterReport) 04977.618 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04977.618 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.618 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04977.618 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.618 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT00552.Flush({[1]="Objects in Set:",[2]="vfa94_template#005-02, Pilot #010, ",}) 04977.618 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04977.618 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.618 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04977.618 INFO SCRIPTING: 44530( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Defender Group Name: ru132_template#003, Size: 2) 04977.618 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.618 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03018.Flush({[1]="Objects in Set:",[2]="Pilot #004, ",}) 04977.618 INFO SCRIPTING: 44530( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Defender Group Name: ru132_template#003, Size: 2) 04977.619 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04977.619 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.619 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04977.619 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.619 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT03500.Flush({[1]="Objects in Set:",[2]="Pilot #005, Pilot #006, ",}) 04977.619 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04977.619 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.619 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04977.619 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.619 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT17880.Flush({[1]="Objects in Set:",[2]="vfa94_template#006-02, vfa94_template#006-01, ",}) 04977.619 INFO SCRIPTING: 9972( 44947)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04977.619 INFO SCRIPTING: 44517( 44855)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.619 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04977.619 INFO SCRIPTING: 44517( 44885)/E: AI_A2A_GCICAP00328.CountDefendersEngaged(Counting Defenders Engaged for Attacker:) 04977.619 INFO SCRIPTING: 9972( 44519)/E: SET_UNIT18110.Flush({[1]="Objects in Set:",[2]="vfa94_template#002-02, ",}) 04977.619 INFO SCRIPTING: 45012( 54111)/E: AI_A2A_GCICAP00328.ProcessDetected( Edit: And even if i set a squadron limit like: RED_A2A_GCICAP:SetSquadron( "ru145", "Batumi", { "ru145_template" }, 8 ) The enemy keeps on spawning planes. Edit2: Or is it 4 groups and not units?? When setting it to 4 i had 8 planes spawning. Aww i cant get my head around this.counterstrike_v3.miz Edited September 18, 2017 by Rivvern [sIGPIC][/sIGPIC] We are looking for Swedish members! http://www.masterarms.se Link to comment Share on other sites More sharing options...
Delta99 Posted September 18, 2017 Share Posted September 18, 2017 Some more fixes... AI_CAP_ZONE: Fixed issues with CAP engaging (independent CAP so not related to GCICAP). AI_CAS_ZONE: Fixed issues with CAS engaging. This to help Hijack. Ensure you download and include the latest moose.lua from the MOOSE release page: https://github.com/FlightControl-Master/MOOSE/releases FC FC, what exactly was the fix? I looked at the code but didn't really understand what the differences were. For me AI_CAP has worked for a long while without issues especially with regarding to engagement. At least as far as I can tell. My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
FlightControl Posted September 19, 2017 Author Share Posted September 19, 2017 FC, what exactly was the fix? I looked at the code but didn't really understand what the differences were. For me AI_CAP has worked for a long while without issues especially with regarding to engagement. At least as far as I can tell. The fix aligned also in AI_CAP_ZONE and AI_CAS_ZONE the method how the "next engagement step" is calculated. This fix has nothing to do with GCICAP or AI_A2A_DISPATCHER... Or actually it has ... For a slick GCICAP implementation, I changed the method how waypoints are triggering script calls, as part of the AI_A2A_DISPATCHER and CONTROLLABLE:Route is implemented. AI_A2A_CAS and AI_A2A_CAP were developed to be used in AI_A2A_DISPATCHER, where these classes have an optimized method to jump from waypoint to waypoint executed by a script. AI_CAP_ZONE and AI_CAS_ZONE weren't touched for months and implemented the old logic. Running a test mission together with @dexa, we saw that the logic was crashing when the engagement was started by the main demo script. So I fixed this crash, aligning the waypoint hopping method of AI_CAP_ZONE and AI_CAS_ZONE in alignment with AI_A2A_CAP and AI_A2A_CAS. For those who don't know, AI_A2A_CAP and AI_A2A_CAS are executing CAP and CASusing commanded by AI_A2A_DISPATCHER. AI_CAS_ZONE and AI_CAP_ZONE are classes that perform CAS or CAP independently, having its own detection logic. Maybe I am wrong. [TABLE][sIGPIC][/sIGPIC]| Join MOOSE community on: DISCORD :thumbup: Website of the MOOSE LUA Framework. MOOSE framework Downloads. Check out Example Missions to try out and learn. MOOSE YouTube Channel for live demonstrations and tutorials. [/TABLE] Link to comment Share on other sites More sharing options...
Subferro Posted September 20, 2017 Share Posted September 20, 2017 I hate to keep harassing with questions, but I'm trying to get my head around scripting and using Moose gives so many options. How am I supposed to use the SETTINGS feature? Included this code at the start but it's returning an error for attempting to index a nil value. I'm assuming I got PlayerName right, since this is the name that always pops up in logs when it indexes my default settings. Anyway the code: ViperSettings = SETTINGS:Set( "Viper" ):SetA2G_MGRS():SetMGRS_Accuracy( 3 ) Is that the wrong usage? Link to comment Share on other sites More sharing options...
FlightControl Posted September 20, 2017 Author Share Posted September 20, 2017 I hate to keep harassing with questions, but I'm trying to get my head around scripting and using Moose gives so many options. How am I supposed to use the SETTINGS feature? Included this code at the start but it's returning an error for attempting to index a nil value. I'm assuming I got PlayerName right, since this is the name that always pops up in logs when it indexes my default settings. Anyway the code: ViperSettings = SETTINGS:Set( "Viper" ):SetA2G_MGRS():SetMGRS_Accuracy( 3 ) Is that the wrong usage? SETTINGS is not meant to be used as an instance. It is being managed in the background by the MOOSE system. A settings menu is automatically created when you design a mission using MOOSE. This settings menu can be used by players to tweak how A2G coordinates, A2A coordinates, measurement system and message timing is being displayed. When you use certain classes (and these will grow), the settings choosen by the player will automatically tweak the message formats and timings. Check the class TASK_A2G_DISPATCHER if you wanna try this out a bit... [TABLE][sIGPIC][/sIGPIC]| Join MOOSE community on: DISCORD :thumbup: Website of the MOOSE LUA Framework. MOOSE framework Downloads. Check out Example Missions to try out and learn. MOOSE YouTube Channel for live demonstrations and tutorials. [/TABLE] Link to comment Share on other sites More sharing options...
FubarBundy Posted September 20, 2017 Share Posted September 20, 2017 Thanks FC... much appreciated :) Link to comment Share on other sites More sharing options...
Subferro Posted September 20, 2017 Share Posted September 20, 2017 Gotcha, so really no way to change the defaults when loading a specific mission. I'll stick to using the menu. Thanks FC for your ongoing support and responsiveness! Link to comment Share on other sites More sharing options...
FlightControl Posted September 20, 2017 Author Share Posted September 20, 2017 Gotcha, so really no way to change the defaults when loading a specific mission. I'll stick to using the menu. Thanks FC for your ongoing support and responsiveness! HOLD! That is another questions and i do have an answer for you there!!! MOOSE creates automatically a _SETTINGS object, that is globally known. You can use this to tweak the settings, for example: _SETTINGS:SetMetric() -- Defaults _SETTINGS:SetA2G_BR() -- Defaults _SETTINGS:SetA2A_BRAA() -- Defaults _SETTINGS:SetLL_Accuracy( 3 ) -- Defaults _SETTINGS:SetMGRS_Accuracy( 5 ) -- Defaults _SETTINGS:SetMessageTime( MESSAGE.Type.Briefing, 180 ) _SETTINGS:SetMessageTime( MESSAGE.Type.Detailed, 60 ) _SETTINGS:SetMessageTime( MESSAGE.Type.Information, 30 ) _SETTINGS:SetMessageTime( MESSAGE.Type.Overview, 60 ) _SETTINGS:SetMessageTime( MESSAGE.Type.Update, 15 ) Use the IntelliSense in LDT to find the methods attached to _SETTINGS. I am sure you'll find your way with this! When asking a question, don't just ask about the technicalities on what you try to do, but also provide a bit of context. That will allow for a broader response too! cheers FC [TABLE][sIGPIC][/sIGPIC]| Join MOOSE community on: DISCORD :thumbup: Website of the MOOSE LUA Framework. MOOSE framework Downloads. Check out Example Missions to try out and learn. MOOSE YouTube Channel for live demonstrations and tutorials. [/TABLE] Link to comment Share on other sites More sharing options...
Subferro Posted September 20, 2017 Share Posted September 20, 2017 (edited) Do you mean edit the main Moose.lua? Or call the _SETTINGS global in my mission script? Edited September 20, 2017 by Subferro Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now