L39Tom Posted November 18, 2018 Share Posted November 18, 2018 I got stucked and need some help. Try to make a scipt to get heading and distance from a target plane. That works nice an smooth....but if I let the plane spawn randomly with the following code TargetTemplates = { "Target1","Target2","Target3","Target4","Target5","Target6","Target7" } InterceptSpawnZone = ZONE:New ( "InterceptSpawn" ) ZoneTable = { InterceptSpawnZone } Target = SPAWN :New("target") :InitLimit ( 1, 10 ) :InitRandomizeTemplate( TargetTemplates ) :InitRandomizeZones( ZoneTable ) :InitRandomizeRoute( 1, 2, 2000,20000) --:InitDelayOn() :SpawnScheduled( 2, 0.5 ) ...I m not able to find the name of the plane. I know it is not "target" but something like "target#001". Is there a nice methode to get the name/names from an late activated or randomly spawned object in order to deal with them ( : GetHeading(), :GetFuel()). I that script above just one plane spawn. How to test multiple planes for heading/fuel/what ever? Thanks for some supply Link to comment Share on other sites More sharing options...
Hardcard Posted November 19, 2018 Share Posted November 19, 2018 (edited) Is there a nice methode to get the name/names from an late activated or randomly spawned object in order to deal with them ( : GetHeading(), :GetFuel()). In order to work with late activated groups in MOOSE, you can use either: 1- SET_GROUP:New() + a filter to target specific groups --> SET_GROUP:FilterPrefixes(Prefixes) & SET_GROUP:FilterStart() + some iterator like -->SET_GROUP:ForEachGroup(IteratorFunction, ...) Example: --Create a SET_GROUP with a filter in order to target specific late activated groups in the mission-- local GroupSET = SET_GROUP:New() :FilterPrefixes( "Group prefix in ME" ) --In this case, we're using a prefix filter-- :FilterStart() --Create an iterator function that will check both fuel percentage and heading for alive groups within the SET_GROUP. Notice how GroupSET is being passed as parameter in the iterator function-- local function FuelAndHeading() GroupSET:ForEachGroup( function( GroupSET ) local NameCheck = GroupSET:GetName() local FuelCheck = GroupSET:GetFuel() local HeadingCheck = GroupSET:GetHeading() MESSAGE:New(NameCheck "Fuel:".. FuelCheck.."\n"..NameCheck "Heading:"..HeadingCheck,10):ToRed() end ) end --Create an F10 coalition menu structure, which will be used to call the function above (this is optional, of course, the function can be called any other way you like)-- MainMenu = MENU_COALITION:New(coalition.side.RED,"Name of the main menu") MenuCommand = MENU_COALITION_COMMAND:New(coalition.side.RED,"Get Fuel and Heading!", MainMenu , FuelAndHeading) 2- SPAWN:OnSpawnGroup(SpawnCallBackFunction, SpawnFunctionArguments,...) Example: --Create the same kind of fuel / heading checking function to be called, like we did before. This time SpawnGroup is being passed as parameter, though-- local function FuelAndHeading(SpawnGroup) local NameCheck = SpawnGroup:GetName() local FuelCheck = SpawnGroup:GetFuel() local HeadingCheck = SpawnGroup:GetHeading() MESSAGE:New(NameCheck "Fuel:".. FuelCheck.."\n"..NameCheck "Heading:"..HeadingCheck,10):ToRed() end --Create the SpawnObject and include :OnSpawnGroup in it. We use an "injected" function to create an F10 coalition menu structure (which we'll use to call the function above).-- --Notice how SpawnGroup is being passed as parameter by the coalition menu command responsible for calling the function above-- --(We can call the function in other ways, of course, don't need to use F10 menu commands if we don't want to)-- local SpawnObject = SPAWN :New( "Name of the late activated group in ME" ) :OnSpawnGroup( function( SpawnGroup ) MainMenu = MENU_COALITION:New(coalition.side.RED,"Name of the main menu") MenuCommand = MENU_COALITION_COMMAND:New(coalition.side.RED,"Get Fuel and Heading!", MainMenu ,FuelAndHeading, SpawnGroup) end ) --After SpawnObject has been defined, we actually spawn it using this-- SpawnObject:Spawn() --I haven't tested this, though! I'm not convinced SpawnGroup parameter will be enough for this to work properly... in any case, this shows how :OnSpawnGroup works-- Hope this helps. Edited November 19, 2018 by Hardcard [sIGPIC][/sIGPIC] Link to comment Share on other sites More sharing options...
Z4ng3tsu Posted November 19, 2018 Share Posted November 19, 2018 Hi everyone ! Quick question : I have a GROUP of two choppers I want to patrol an area around an island. I used this method to do it : BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol") BlueHeliSirriPatrolGrp1 = BlueHeliSirriPatrolGrpSpawner:SpawnInZone(SirriAirbaseZone, true) BlueHeliSirriPatrolGrp1:PatrolZones({SirriAirbaseZone}, 100) It works but I met to issues : 1 - In about 5 to 10 minutes, my chopper land on the island's airbase 2 - In lot of attempts, sometimes they make a turn above the water and (maybe because of too much bugs on the windshield), one of the chopper just crash into the water... For the first issue, could it be because of fuel ? They should have full tank at start... For the second one, is it because of the natural behavior of the chopper ? Thanks for your help :thumbup: I'm french (nobody's perfect :smilewink:) so don't be too hard with my english :thumbup: FC3 | A-10C | Mirage 2000C | F/A-18 | KA-50 | UH-1H | Mi-8 | Combined Arms Link to comment Share on other sites More sharing options...
L39Tom Posted November 19, 2018 Share Posted November 19, 2018 Thanks Hardcard, that is exactly I was looking for!:thumbup: Link to comment Share on other sites More sharing options...
Hardcard Posted November 19, 2018 Share Posted November 19, 2018 (edited) @Z4ng3tsu Don't know about AI helicopter behaviour, but I believe you can make your code shorter. [color="Blue"]--Your code--[/color] BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol") BlueHeliSirriPatrolGrp1 = BlueHeliSirriPatrolGrpSpawner:SpawnInZone(SirriAirbaseZone, true) BlueHeliSirriPatrolGrp1:PatrolZones({SirriAirbaseZone}, 100) [color="Blue"]--Shorter version A (single line format)--[/color] BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol"):SpawnInZone(SirriAirbaseZone, true):PatrolZones({SirriAirbaseZone}, 100) [color="blue"]--Shorter version B (multiple line format)--[/color] BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol") :SpawnInZone(SirriAirbaseZone, true) :PatrolZones({SirriAirbaseZone}, 100) [color="Blue"]--I don't think those extra variables are needed (unless you mean to use them in separate functions)--[/color] Edited November 19, 2018 by Hardcard [sIGPIC][/sIGPIC] Link to comment Share on other sites More sharing options...
Z4ng3tsu Posted November 19, 2018 Share Posted November 19, 2018 @Z4ng3tsu Don't know about AI helicopter behaviour, but I believe you can make your code shorter. [color="Blue"]--Your code--[/color] BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol") BlueHeliSirriPatrolGrp1 = BlueHeliSirriPatrolGrpSpawner:SpawnInZone(SirriAirbaseZone, true) BlueHeliSirriPatrolGrp1:PatrolZones({SirriAirbaseZone}, 100) [color="Blue"]--Shorter version A (single line format)--[/color] BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol"):SpawnInZone(SirriAirbaseZone, true):PatrolZones({SirriAirbaseZone}, 100) [color="blue"]--Shorter version B (multiple line format)--[/color] BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol") :SpawnInZone(SirriAirbaseZone, true) :PatrolZones({SirriAirbaseZone}, 100) Thanks Hardcard, Yes, as I begin with Moose I split my calls just to make sure everything work step by step. I will optimize it later :thumbup: I'm french (nobody's perfect :smilewink:) so don't be too hard with my english :thumbup: FC3 | A-10C | Mirage 2000C | F/A-18 | KA-50 | UH-1H | Mi-8 | Combined Arms Link to comment Share on other sites More sharing options...
Delta99 Posted November 19, 2018 Share Posted November 19, 2018 1. Sounds like a fuel issue. Double check they are starting with full fuel. If so, could be a bug with either DCS (most likely) or Moose. There have been DCS fuel bugs lately. 2. Lousy DCS AI. Not sure there is anything you can do there. Hi everyone ! Quick question : I have a GROUP of two choppers I want to patrol an area around an island. I used this method to do it : BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol") BlueHeliSirriPatrolGrp1 = BlueHeliSirriPatrolGrpSpawner:SpawnInZone(SirriAirbaseZone, true) BlueHeliSirriPatrolGrp1:PatrolZones({SirriAirbaseZone}, 100) It works but I met to issues : 1 - In about 5 to 10 minutes, my chopper land on the island's airbase 2 - In lot of attempts, sometimes they make a turn above the water and (maybe because of too much bugs on the windshield), one of the chopper just crash into the water... For the first issue, could it be because of fuel ? They should have full tank at start... For the second one, is it because of the natural behavior of the chopper ? Thanks for your help :thumbup: My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
Habu_69 Posted November 19, 2018 Share Posted November 19, 2018 I have found instances where AI helo pilots demonstrate remarkable incompetence. One mission I tried to get them to fly at 200' AGL over level terrain. Had to raise FP to 500' to prevent flying into terrain. Link to comment Share on other sites More sharing options...
Skippa Posted November 20, 2018 Share Posted November 20, 2018 @Skippa I had a similar issue with LDT some months back. If I remember correctly, I solved it by doing this: -Uninstall Java using this tool -Remove all traces of any previous LDT installations from your system -Download/Install Java 8 from here -Use this LDT build -Then simply follow the rest of instructions from PS. I'm assuming you have a 64bit version of Windows, btw. Thank you a ton man...got it working. :thumbup: Link to comment Share on other sites More sharing options...
Z4ng3tsu Posted November 20, 2018 Share Posted November 20, 2018 1. Sounds like a fuel issue. Double check they are starting with full fuel. If so, could be a bug with either DCS (most likely) or Moose. There have been DCS fuel bugs lately. 2. Lousy DCS AI. Not sure there is anything you can do there. Thanks for your feedback. 1-I think it is moose a bug. My helos start with full fuel tank and I observed the same behaviour with my infantry troops stopping patrol at a moment. I'll try to trace the event in the log to see what's going on and if I can find a bug in Moose (if it is in Moose). 2-Yeap definitely DCS behaviour... Sometimes it's ok, sometimes it's not... I'm french (nobody's perfect :smilewink:) so don't be too hard with my english :thumbup: FC3 | A-10C | Mirage 2000C | F/A-18 | KA-50 | UH-1H | Mi-8 | Combined Arms Link to comment Share on other sites More sharing options...
Z4ng3tsu Posted November 21, 2018 Share Posted November 21, 2018 Hi everyone ! Quick question : I have a GROUP of two choppers I want to patrol an area around an island. I used this method to do it : BlueHeliSirriPatrolGrpSpawner = SPAWN:New("BlueHeliSirriAirbasePatrol") BlueHeliSirriPatrolGrp1 = BlueHeliSirriPatrolGrpSpawner:SpawnInZone(SirriAirbaseZone, true) BlueHeliSirriPatrolGrp1:PatrolZones({SirriAirbaseZone}, 100) It works but I met to issues : 1 - In about 5 to 10 minutes, my chopper land on the island's airbase 2 - In lot of attempts, sometimes they make a turn above the water and (maybe because of too much bugs on the windshield), one of the chopper just crash into the water... For the first issue, could it be because of fuel ? They should have full tank at start... For the second one, is it because of the natural behavior of the chopper ? Thanks for your help :thumbup: So in order to give some feedback if one day someday is just like and does not read carefully the documentation of Moose's framework : The PatrolZones method is restricted to ground units only ! This is why my chopper were landing after what it seems to be one default waypoint. To have a chopper patroling a zone, an AI_CAS_ZONE should be used (or generation of waypoints inside the patrol zone but that's less efficient I think) For the second issue, it's just DCS behavior. I'm french (nobody's perfect :smilewink:) so don't be too hard with my english :thumbup: FC3 | A-10C | Mirage 2000C | F/A-18 | KA-50 | UH-1H | Mi-8 | Combined Arms Link to comment Share on other sites More sharing options...
Hardcard Posted December 1, 2018 Share Posted December 1, 2018 (edited) Lately, I've been playing around with SEAD evasion mechanics for AA groups. In the process, I've noticed that the MOOSE SEAD functionality for this doesn't seem to work: https://flightcontrol-master.github.io/MOOSE_DOCS/Documentation/Functional.Sead.html##(SEAD).New According to the MOOSE documentation, this should be enough: SEAD:New({ 'name of an AA group in ME', 'name of another AA group in ME', etc... }) However, this doesn't seem to disable AA group radars when anti-radiation missiles are fired at them. Also, AA units only seem to move the first time there's an explosion nearby, they seem to stop moving after that. Out of curiosity, I opened the declaration for the MOOSE script example above and found something odd (possible bug?): local SEADWeaponName = EventData.WeaponName -- return weapon type -- Start of the 2nd loop self:T( "Missile Launched = " .. SEADWeaponName ) if SEADWeaponName == "KH-58" or SEADWeaponName == "KH-25MPU" or SEADWeaponName == "AGM-88" or SEADWeaponName == "KH-31A" or SEADWeaponName == "KH-31P" then -- Check if the missile is a SEAD As far as I know, EventData.WeaponName doesn't actually return the string values specified in the last line, it returns different ones. For instance, for Kh-58U missiles, EventData.WeaponName will return the string "weapons.missiles.X_58" instead of "KH-58". Same thing applies to the rest of missiles listed. If this is indeed an error, then that last line should look like this: if SEADWeaponName == "weapons.missiles.X_58" or SEADWeaponName == "weapons.missiles.X_25MP" or SEADWeaponName == "weapons.missiles.AGM_88" or SEADWeaponName == "weapons.missiles.X_31P" then --I removed the KH-31A missile since it's an anti-ship version, not anti-radiation like the KH-31P Am I missing something here? Is Functional.SEAD still WIP? PS. Btw, this is the MOOSE SEAD evasion script I've been working on. Plenty of room for improvement, but the results look promising so far. Edited December 1, 2018 by Hardcard [sIGPIC][/sIGPIC] Link to comment Share on other sites More sharing options...
S D Posted December 2, 2018 Share Posted December 2, 2018 Might be worth posting about the SEAD problems on discord or github. It is alot more active with the MOOSE devs. Link to comment Share on other sites More sharing options...
Tiramisu Posted December 2, 2018 Share Posted December 2, 2018 Is it possible to change the AI doctrine in MOOSE? E.g. the minimum distance for launching a certain type of missile or the tactics for approaching the enemy or disengaging? Link to comment Share on other sites More sharing options...
Delta99 Posted December 3, 2018 Share Posted December 3, 2018 Is it possible to change the AI doctrine in MOOSE? E.g. the minimum distance for launching a certain type of missile or the tactics for approaching the enemy or disengaging? Not really. This isn't possible in any scripting for DCS as far as I know (Moose or otherwise). Except maybe for creating a very complicated script that would continuously create waypoints along the way and moving zones etc and setting various ROE options continuously. Even then you wouldn't be able to control certain missile types etc. So it would basically be a massively complicated script that could potentially bring DCS to its knees and only accomplish 1/10th of you really want. And it probably wouldn't work well. You are basically stuck with the lousy DCS AI for this kind of thing. My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
Delta99 Posted December 3, 2018 Share Posted December 3, 2018 Might be worth posting about the SEAD problems on discord or github. It is alot more active with the MOOSE devs. Correct. Probably best to post directly to github issues here My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
Tiramisu Posted December 3, 2018 Share Posted December 3, 2018 Not really. This isn't possible in any scripting for DCS as far as I know (Moose or otherwise). Except maybe for creating a very complicated script that would continuously create waypoints along the way and moving zones etc and setting various ROE options continuously. Even then you wouldn't be able to control certain missile types etc. It would still be worth a try to implement simple AI improvements. Are there any code templates or examples for this purpose? I have seen lots of Lua codes for MOOSE, but I was not able to pinpoint the right code snippets for my own purpose. Link to comment Share on other sites More sharing options...
Tiramisu Posted December 4, 2018 Share Posted December 4, 2018 (edited) Maybe someone could help me to understand the CONTROLLABLE class to set AI-waypoints and AI-tasks. Edit: I tried the following code to spawn Mig-21s attacking my player group, but they just ignore me and go back to base: local spawn = SPAWN:New( "Iranian Mig 21s" ) local rho = math.random(UTILS.NMToMeters(20), UTILS.NMToMeters(40)) local theta = UTILS.RandomGaussian(0, 70, 225, 495) local zone = ZONE_UNIT:New("Randomly Spawned Unit", UNIT:FindByName("Pilot Pilot"), 100, {rho=rho, theta=theta, relative_to_unit=true}) spawn:SpawnInZone(zone) Mig21Group = Group.getByName( "Iranian Mig 21s#001" ) Mig21Controller = Mig21Group:getController() PlayerGroup = Group.getByName( "Player Group" ) env.info( "Player ID: " .. PlayerGroup:getID() ) env.info( "Mig21 ID: " .. Mig21Group:getID() ) TaskAttackGroup = { id = 'AttackGroup', params = { groupId = PlayerGroup:getID(), --[[ weaponType = number, expend = enum AI.Task.WeaponExpend, directionEnabled = boolean, direction = Azimuth, altitudeEnabled = boolean, altitude = Distance, attackQtyLimit = boolean, attackQty = number, ]]-- } } Mig21Controller:setTask( TaskAttackGroup ) --Controller.setTask( Mig21Controller, TaskAttackGroup )Edit: Ok, the solution is that I have used the wrong group name and I should have delayed the task assignment after spawning. So it worked after using "Iranian Mig 21s#001" instead of "Iranian Mig 21s #001" and putting the task assignment in a separate delayed trigger. :) Edited December 4, 2018 by Tiramisu Link to comment Share on other sites More sharing options...
Delta99 Posted December 5, 2018 Share Posted December 5, 2018 Looks like you are mixing a lot of different stuff together. Some of this looks like MIST or straight DCS API syntax so not sure whats going on here. That is fine BTW but more difficult to understand. You'll want to checkout the CONTROLLABLE class here https://flightcontrol-master.github.io/MOOSE_DOCS/Documentation/Wrapper.Controllable.html There may or may not be demos available showing how to setup something like this. Check all the demos here: https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/master/GRP%20-%20Group%20Commands What you'll probably also want to do is use OnSpawnGroup() method so that you don't care what your units are called. You can easily just grab the Group that was just spawned. In fact you need to do this in a lot of cases because there will be a delay sometimes with spawning and therefor the object will not be available as of yet. Although perhaps you just discovered that as well. Maybe someone could help me to understand the CONTROLLABLE class to set AI-waypoints and AI-tasks. Edit: I tried the following code to spawn Mig-21s attacking my player group, but they just ignore me and go back to base: local spawn = SPAWN:New( "Iranian Mig 21s" ) local rho = math.random(UTILS.NMToMeters(20), UTILS.NMToMeters(40)) local theta = UTILS.RandomGaussian(0, 70, 225, 495) local zone = ZONE_UNIT:New("Randomly Spawned Unit", UNIT:FindByName("Pilot Pilot"), 100, {rho=rho, theta=theta, relative_to_unit=true}) spawn:SpawnInZone(zone) Mig21Group = Group.getByName( "Iranian Mig 21s#001" ) Mig21Controller = Mig21Group:getController() PlayerGroup = Group.getByName( "Player Group" ) env.info( "Player ID: " .. PlayerGroup:getID() ) env.info( "Mig21 ID: " .. Mig21Group:getID() ) TaskAttackGroup = { id = 'AttackGroup', params = { groupId = PlayerGroup:getID(), --[[ weaponType = number, expend = enum AI.Task.WeaponExpend, directionEnabled = boolean, direction = Azimuth, altitudeEnabled = boolean, altitude = Distance, attackQtyLimit = boolean, attackQty = number, ]]-- } } Mig21Controller:setTask( TaskAttackGroup ) --Controller.setTask( Mig21Controller, TaskAttackGroup )Edit: Ok, the solution is that I have used the wrong group name and I should have delayed the task assignment after spawning. So it worked after using "Iranian Mig 21s#001" instead of "Iranian Mig 21s #001" and putting the task assignment in a separate delayed trigger. :) My Missions: Valley Patrol Mission :: Valley Escort Mission :: A2A Engagements Link to comment Share on other sites More sharing options...
Silvern Posted December 6, 2018 Share Posted December 6, 2018 Lately, I've been playing around with SEAD evasion mechanics for AA groups. In the process, I've noticed that the MOOSE SEAD functionality for this doesn't seem to work: https://flightcontrol-master.github.io/MOOSE_DOCS/Documentation/Functional.Sead.html##(SEAD).New According to the MOOSE documentation, this should be enough: SEAD:New({ 'name of an AA group in ME', 'name of another AA group in ME', etc... }) However, this doesn't seem to disable AA group radars when anti-radiation missiles are fired at them. Also, AA units only seem to move the first time there's an explosion nearby, they seem to stop moving after that. Out of curiosity, I opened the declaration for the MOOSE script example above and found something odd (possible bug?): local SEADWeaponName = EventData.WeaponName -- return weapon type -- Start of the 2nd loop self:T( "Missile Launched = " .. SEADWeaponName ) if SEADWeaponName == "KH-58" or SEADWeaponName == "KH-25MPU" or SEADWeaponName == "AGM-88" or SEADWeaponName == "KH-31A" or SEADWeaponName == "KH-31P" then -- Check if the missile is a SEAD As far as I know, EventData.WeaponName doesn't actually return the string values specified in the last line, it returns different ones. For instance, for Kh-58U missiles, EventData.WeaponName will return the string "weapons.missiles.X_58" instead of "KH-58". Same thing applies to the rest of missiles listed. If this is indeed an error, then that last line should look like this: if SEADWeaponName == "weapons.missiles.X_58" or SEADWeaponName == "weapons.missiles.X_25MP" or SEADWeaponName == "weapons.missiles.AGM_88" or SEADWeaponName == "weapons.missiles.X_31P" then --I removed the KH-31A missile since it's an anti-ship version, not anti-radiation like the KH-31P Am I missing something here? Is Functional.SEAD still WIP? PS. Btw, this is the MOOSE SEAD evasion script I've been working on. Plenty of room for improvement, but the results look promising so far. I was also unable to get the SEAD evasion to work. The groups did not turn off their radar and only moved after one of them was destroyed, which is a default DCS behavior. Link to comment Share on other sites More sharing options...
Hardcard Posted December 6, 2018 Share Posted December 6, 2018 @Silvern I already reported the issue over MOOSE github. I'll use my script in the meantime, it works pretty well :thumbup: [sIGPIC][/sIGPIC] Link to comment Share on other sites More sharing options...
Silvern Posted December 6, 2018 Share Posted December 6, 2018 @Silvern I already reported the issue over MOOSE github. I'll use my script in the meantime, it works pretty well :thumbup: Can you please post a link to your script? :) Link to comment Share on other sites More sharing options...
Pikey Posted December 6, 2018 Share Posted December 6, 2018 What you are trying to do is partially possible and unfortunately gets complex quick. The general approach to this is putting aircraft on weapons hold until you want to let them loose to DCS AI tasks. This is one way you see scripts like GCICAP and such work with borders and so on. Setting tasks as per what you see in the ME GUI is a lot harder, the CONTROLLABLE docs is pretty advanced stuff and the nuances you already saw like not giving a task to AI makes it RTB and become uncontrollable, are things that will haunt you. CAS, SEAD actions in advanced action waypoints are limited. You can only do what the API lets you. However, MOOSE clones this into spawnable AI templates, so you can setup things like not dropping bombs, vertical evasion, using chaff in SAM Wez and so on in the ME then spawn that group as you like, retaining those settings. For engagment ranges, as I said, you can't increase ranges but you can stop AI from engaging by turning off his ROE. Most of this is achievable, but some i've not had good luck with in years of trying, YMMV. ___________________________________________________________________________ SIMPLE SCENERY SAVING * SIMPLE GROUP SAVING * SIMPLE STATIC SAVING * Link to comment Share on other sites More sharing options...
Hardcard Posted December 6, 2018 Share Posted December 6, 2018 (edited) @Silvern It's linked at the bottom of the post you quoted earlier. Anyway, I'm attaching a newer (and more complicated) version of the script + test mission, which includes respawn mechanics and AI aircraft removal after landing. In a nutshell, the script allows for randomized SEAD evasion mechanics (as long as there are no SEAD bandits within 15Km of the AA groups.) If there are SEAD bandits inside the 15Km killzones, the AA groups will stay active until the area is cleared (this can be changed, of course). SEAD bandit groups are allowed to spawn 6 times, AA groups are allowed to spawn twice (blue) and thrice (red). They'll do so when they're completely destroyed. Perhaps you'll find some useful bits for your own missions :thumbup: PS. Comment out the event messages if they get annoying!SAM_PARADISE_MOOSE v3.mizSEAD Test (Ad Infinitum).lua Edited March 28, 2019 by Hardcard [sIGPIC][/sIGPIC] Link to comment Share on other sites More sharing options...
Tiramisu Posted December 6, 2018 Share Posted December 6, 2018 There may or may not be demos available showing how to setup something like this. Check all the demos here: https://github.com/FlightControl-Master/MOOSE_MISSIONS/tree/master/GRP%20-%20Group%20Commands Thanks for this link! I have found a very helpful example there called GRP-100 - TaskAttackUnit.lua. Based on that example I changed my code and it seems like it also works, so I do not have to use the basic API from DCS any more: local Mig21Group = GROUP:FindByName( "Iranian Mig 21s#001" ) local PlayerGroup = GROUP:FindByName( "Player Group" ) local AttackUnits = PlayerGroup:GetUnits() local Tasks = {} for i = 1, #AttackUnits do local AttackUnit = PlayerGroup:GetUnit( i ) Tasks[#Tasks+1] = Mig21Group:TaskAttackUnit( AttackUnit ) end Tasks[#Tasks+1] = Mig21Group:TaskFunction( "_Resume", { "''" } ) --- @param Wrapper.Group#GROUP HeliGroup function _Resume( HeliGroup ) env.info( '_Resume' ) Mig21Group:MessageToAll( "Resuming",10,"Info") end Mig21Group:PushTask( Mig21Group:TaskCombo(Tasks), 30 ) You'll want to checkout the CONTROLLABLE class here https://flightcontrol-master.github.io/MOOSE_DOCS/Documentation/Wrapper.Controllable.html I have found that site already, but for some reason I am not able to understand this kind of documentation. So I am learning from actual examples instead. 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