diff --git a/Documentation/AI.AI_Air.html b/Documentation/AI.AI_Air.html index 9c0432b48..76ec477bd 100644 --- a/Documentation/AI.AI_Air.html +++ b/Documentation/AI.AI_Air.html @@ -2935,17 +2935,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau - - - -
No loading happened, so we need to pickup something else.
- @@ -4705,9 +4702,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau - -No loading happened, so we need to pickup something else.
- @@ -5320,9 +5314,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau - -No loading happened, so we need to pickup something else.
- @@ -6827,9 +6818,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau - -No loading happened, so we need to pickup something else.
- diff --git a/Documentation/AI.AI_Cargo_Airplane.html b/Documentation/AI.AI_Cargo_Airplane.html index 88571f4de..8ce186ace 100644 --- a/Documentation/AI.AI_Cargo_Airplane.html +++ b/Documentation/AI.AI_Cargo_Airplane.html @@ -2621,17 +2621,6 @@ When Moose is loaded statically, (as one file), tracing is switched off by defauAircraft is on a depoly mission.
+Aircraft is on a depoly mission.
+Aircraft is on a depoly mission.
+Aircraft is on a depoly mission.
+meter
+kph
+meter
+kph
+meter
+kph
+meter
+kph
+Then we register the new group in the database
+ @@ -1835,20 +1838,6 @@ Controls a network of short range air/missile defense groups. - - - -Now we spawn the new group based on the template created.
-Then we register the new group in the database
+ @@ -3153,20 +3145,6 @@ This works for ground only groups. - - - -Now we spawn the new group based on the template created.
-SPAWN:_TranslateRotate(SpawnIndex, SpawnRootX, SpawnRootY, SpawnX, SpawnY, SpawnAngle)
Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.
+The internal counter of the amount of spawning the has happened since SpawnStart.
-Overwrite unit names by default with group name.
-When working in UnControlled mode, all planes are Spawned in UnControlled mode before the scheduler starts.
+The internal counter of the amount of spawning the has happened since SpawnStart.
-Overwrite unit names by default with group name.
-Contains the counter how many units are currently alive
- -Contains the counter how many units are currently alive
- -Don't only practice your art, but force your way into its secrets; art deserves that, for it and knowledge can raise man to the Divine. - Ludwig van Beethoven
+
The RANGE class enables a mission designer to easily set up practice ranges in DCS.
Don't only practice your art, but force your way into its secrets; art deserves that, for it and knowledge can raise man to the Divine. - Ludwig van Beethoven
+
The RANGE class enables a mission designer to easily set up practice ranges in DCS.
-LuaFormatter on
+A new RANGE object can be created with the RANGE.New(rangename) contructor. +The parameter rangename defines the name of the range. It has to be unique since this is also the name displayed in the radio menu.
+ +Generally, a range consists of strafe pits and bombing targets. For strafe pits the number of hits for each pass is counted and tabulated. +For bombing targets, the distance from the impact point of the bomb, rocket or missile to the closest range target is measured and tabulated. +Each player can display his best results via a function in the radio menu or see the best best results from all players.
+ +When all targets have been defined in the script, the range is started by the RANGE.Start() command.
+ +IMPORTANT
+ +Due to a DCS bug, it is not possible to directly monitor when a player enters a plane. So in a mission with client slots, it is vital that +a player first enters as spectator or hits ESC twice and after that jumps into the slot of his aircraft! +If that is not done, the script is not started correctly. This can be checked by looking at the radio menus. If the mission was entered correctly, +there should be an "On the Range" menu items in the "F10. Other..." menu.
+ +Each strafe pit can consist of multiple targets. Often one finds two or three strafe targets next to each other.
+ +A strafe pit can be added to the range by the RANGE.AddStrafePit(targetnames, boxlength, boxwidth, heading, inverseheading, goodpass, foulline) function.
+ +Another function to add a strafe pit is RANGE.AddStrafePitGroup(group, boxlength, boxwidth, heading, inverseheading, goodpass, foulline). Here, +the first parameter group is a MOOSE Wrapper.Group object and all units in this group define one strafe pit.
+ +Finally, a valid approach has to be performed below a certain maximum altitude. The default is 914 meters (3000 ft) AGL. This is a parameter valid for all +strafing pits of the range and can be adjusted by the RANGE.SetMaxStrafeAlt(maxalt) function.
+ +One ore multiple bombing targets can be added to the range by the RANGE.AddBombingTargets(targetnames, goodhitrange, randommove) function.
+ +Another possibility to add bombing targets is the RANGE.AddBombingTargetGroup(group, goodhitrange, randommove) function. Here the parameter group is a MOOSE Wrapper.Group object +and all units in this group are defined as bombing targets.
+ +It is also possible to specify coordinates rather than unit or static objects as bombing target locations. This has the advantage, that even when the unit/static object is dead, the specified +coordinate will still be a valid impact point. This can be done via the RANGE.AddBombingTargetCoordinate(coord, name, goodhitrange) function.
+ +Many range parameters have good default values. However, the mission designer can change these settings easily with the supplied user functions:
+ +Each range gets a radio menu with various submenus where each player can adjust his individual settings or request information about the range or his scores.
+ +The main range menu can be found at "F10. Other..." --> "FX . On the Range..." --> "F1.
The range menu contains the following submenus:
+ +




Voice over sound files can be downloaded from the Moose Discord. Check the pinned messages in the #func-range channel.
+ +Instructor radio will inform players when they enter or exit the range zone and provide the radio frequency of the range control for hit assessment. +This can be enabled via the RANGE.SetInstructorRadio(frequency) functions, where frequency is the AM frequency in MHz.
+ +The range control can be enabled via the RANGE.SetRangeControl(frequency) functions, where frequency is the AM frequency in MHz.
+ +By default, the sound files are placed in the "Range Soundfiles/" folder inside the mission (.miz) file. Another folder can be specified via the RANGE.SetSoundfilesPath(path) function.
+ +To automatically save bombing results to disk, use the RANGE.SetAutosave() function. Bombing results will be saved as csv file in your "Saved Games\DCS.openbeta\Logs" directory. +Each range has a separate file, which is named "RANGE-<RangeName>_BombingResults.csv".
+ +The next time you start the mission, these results are also automatically loaded.
+ +Strafing results are currently not saved.
+ +This example shows hot to set up the Barry M. Goldwater range. +It consists of two strafe pits each has two targets plus three bombing targets.
+ + -- Strafe pits. Each pit can consist of multiple targets. Here we have two pits and each of the pits has two targets.
+ -- These are names of the corresponding units defined in the ME.
+ local strafepit_left={"GWR Strafe Pit Left 1", "GWR Strafe Pit Left 2"}
+ local strafepit_right={"GWR Strafe Pit Right 1", "GWR Strafe Pit Right 2"}
+
+ -- Table of bombing target names. Again these are the names of the corresponding units as defined in the ME.
+ local bombtargets={"GWR Bomb Target Circle Left", "GWR Bomb Target Circle Right", "GWR Bomb Target Hard"}
+
+ -- Create a range object.
+ GoldwaterRange=RANGE:New("Goldwater Range")
+
+ -- Distance between strafe target and foul line. You have to specify the names of the unit or static objects.
+ -- Note that this could also be done manually by simply measuring the distance between the target and the foul line in the ME.
+ GoldwaterRange:GetFoullineDistance("GWR Strafe Pit Left 1", "GWR Foul Line Left")
+
+ -- Add strafe pits. Each pit (left and right) consists of two targets. Where "nil" is used as input, the default value is used.
+ GoldwaterRange:AddStrafePit(strafepit_left, 3000, 300, nil, true, 30, 500)
+ GoldwaterRange:AddStrafePit(strafepit_right, nil, nil, nil, true, nil, 500)
+
+ -- Add bombing targets. A good hit is if the bomb falls less then 50 m from the target.
+ GoldwaterRange:AddBombingTargets(bombtargets, 50)
+
+ -- Start range.
+ GoldwaterRange:Start()
+
+
+The 476th - Air Weapons Range Objects mod is (implicitly) used in this example.
+ +In case you have problems, it is always a good idea to have a look at your DCS log file. You find it in your "Saved Games" folder, so for example in
+ C:\Users\<yourname>\Saved Games\DCS\Logs\dcs.log
+
+All output concerning the RANGE class should have the string "RANGE" in the corresponding line.
+ +The verbosity of the output can be increased by adding the following lines to your script:
+ + BASE:TraceOnOff(true)
+ BASE:TraceLevel(1)
+ BASE:TraceClass("RANGE")
+
+
+To get even more output you can increase the trace level to 2 or even 3, c.f. BASE for more details.
+ +The function RANGE.DebugON() can be used to send messages on screen. It also smokes all defined strafe and bombing targets, the strafe pit approach boxes and the range zone.
+ +Note that it can happen that the RANGE radio menu is not shown. Check that the range object is defined as a global variable rather than a local one. +The could avoid the lua garbage collection to accidentally/falsely deallocate the RANGE objects.
+| Fields and Methods inherited from FSM | +Description | +
|---|---|
| + |
+ Adds an End state. + |
+
| + |
+ Set the default Process template with key ProcessName providing the ProcessClass and the process object when it is assigned to a Wrapper.Controllable by the task. + |
+
| + |
+ Adds a score for the FSM to be achieved. + |
+
| + |
+ Adds a score for the FSM_PROCESS to be achieved. + |
+
| + |
+ Add a new transition rule to the FSM. + |
+
| + |
+ Call scheduler. + |
+
| + |
+ Name of the class. + |
+
| + | + + | +
| + |
+ Get current state. + |
+
| + |
+ Returns the End states. + |
+
| + | + + | +
| + |
+ Returns a table of the SubFSM rules defined within the FSM. + |
+
| + |
+ Returns a table with the scores defined. + |
+
| + |
+ Returns the start state of the FSM. + |
+
| + |
+ Get current state. + |
+
| + |
+ Returns a table with the Subs defined. + |
+
| + |
+ Returns a table of the transition rules defined within the FSM. + |
+
| + |
+ Check if FSM is in state. + |
+
| + |
+ Load call backs. + |
+
| + |
+ Creates a new FSM object. + |
+
| + |
+ Scores. + |
+
| + | + + | +
| + |
+ Sets the start state of the FSM. + |
+
| + | + + | +
| + | + + | +
| + | + + | +
| + | + + | +
| + | + + | +
| + | + + | +
| + |
+ Add to map. + |
+
| + |
+ Call handler. + |
+
| + |
+ Create transition. + |
+
| + |
+ Delayed transition. + |
+
| + |
+ Event map. + |
+
| + |
+ Go sub. + |
+
| + |
+ Handler. + |
+
| + |
+ Is end state. + |
+
| + |
+ Sub maps. + |
+
| + |
+ Check if can do an event. + |
+
| + |
+ Check if cannot do an event. + |
+
| + |
+ Current state name. + |
+
| + | + + | +
| + |
+ Check if FSM is in state. + |
+
| + |
+ Options. + |
+
| + |
+ Subs. + |
+
Set case to that of lead.
+Set case of f
Set time stamp.
-table of CSAR unit names
-table of CSAR unit names
-table of CSAR unit names
-Name of the class.
+use as counter
+ +holds #CTLD_ENGINEERING objects
+Beacons
+tables
+noob catch
+time to repair a unit/group
Name of the class.
+use as counter
+ +holds #CTLD_ENGINEERING objects
+Beacons
+tables
+noob catch
+time to repair a unit/group
Name of the class.
+use as counter
+ +holds #CTLD_ENGINEERING objects
+Beacons
+tables
+noob catch
+time to repair a unit/group
set to false to suppress flash messages
+set to false to suppress flash messages
+set to false to suppress flash messages
+set to false to suppress flash messages
+Alive2.
+Alive.
Alive2.
+Alive.
Alive2.
+Alive.
Alive2.
+Alive.
Alive2.
+Alive.
Alive2.
+Alive.
Alive2.
+Alive.
Coordinate of the mark.
+Text displayed in the mark panel.
-Coordinate of the mark.
+Text displayed in the mark panel.
-Coordinate of the mark.
+Text displayed in the mark panel.
-