Standalone training scripts for DCS World, built on the native scripting engine only (no MOOSE / MIST / CTLD). Five independent feature scripts, load any or all of them, in any order.
| Script | What it does |
|---|---|
TrainingRange.lua |
F10 range: bombing, dogfight (immortal + scoring), SEAD (radar + IR/AAA presets), carrier ops, air-to-air refuelling |
TRAINING_Intercept.lua |
Scramble-intercept trainer with a radio menu, random target launch and boundary despawn |
TRAINING_GCA.lua |
Text Ground Controlled Approach, auto-detects the runway under the zone |
TRAINING_AirCombat.lua |
Air-to-air arenas vs RED: dogfight, BVR, and a mixed group that scales to player count |
JTAC.lua |
Menu-spawned invisible spotter (MQ-9 UAV or ground JTAC) that lases RED targets; laser code and radio frequency changeable from the menu |
In-game text and code comments are in English.
- Copy the
.luafiles you want into your mission folder (or keep them on disk). - In the Mission Editor create the Circle zones listed below, using the exact names.
- Add one trigger per script: MISSION START, DO SCRIPT FILE,
<file>.lua. The scripts are independent, so the load order does not matter.
Almost everything keys off zones, so there is very little to type by hand. The only manual values are the GCA runway (heading and threshold). Each script checks its zones at load and shows a visible message if any are missing.
Zones (type: Circle, radius is a suggestion):
Zones are Circle, except the two tanker zones which may also be Quad.
| Zone name | Module | Suggested radius |
|---|---|---|
TR_BOMBING |
Unarmoured targets (Ural) spawn inside | ~3000 m |
TR_ARMOR_LIGHT |
Light armour (BTR-80) spawns inside | ~3000 m |
TR_ARMOR_HEAVY |
Heavy armour (T-90) spawns inside | ~3000 m |
TR_DOGFIGHT |
Dogfight arena | ~15000 m |
TR_SEAD_RADAR |
Radar SAM (spawns at a random point inside) | ~8000 m |
TR_SEAD_IR |
IR / AAA (spawns at a random point inside) | ~5000 m |
TR_CARRIER |
Carrier strike group spawns here at mission start | ~2000 m |
TR_REFUEL_BASKET |
Basket tanker racetrack (fits inside, circle or quad) | ~10000 m |
TR_REFUEL_BOOM |
Boom tanker racetrack (fits inside, circle or quad) | ~10000 m |
The carrier is on station from mission start as a full group (carrier plus a cruiser, two destroyers
and a plane-guard frigate) in formation. From the Carrier Ops menu you set the group speed and its
ROE (Engage, or Defend only so it does not fire on ground units it passes). Tanker speed is selectable
(Mach 0.3 to 0.6) from the Refueling menu. Bombing targets are weapon-hold. Escorts are configurable
in TR_Config.carrier.escorts. No coordinates to fill in for any of these.
Zones (type: Circle):
| Zone name | Purpose |
|---|---|
INTERCEPT_PLAYER_ZONE |
Arming area, the F10 menu appears only while a player is inside |
INTERCEPT_LIMIT_ZONE |
Play box: targets spawn here and despawn if they leave it |
INTERCEPT_OBJ_1 |
Objective waypoint (target flies toward the zone centre) |
INTERCEPT_OBJ_2 |
Objective waypoint |
INTERCEPT_OBJ_3 |
Objective waypoint |
No coordinates to fill in. Tunables (scramble delay, spawn geometry, grace period, target-size
presets) live in the script's CFG.
Zone (type: Circle):
| Zone name | Purpose |
|---|---|
GCA_ACTIVE_ZONE |
Coverage area, placed over the airfield. The talkdown runs while a player is inside |
By default (CFG.auto = true) the script finds the airfield under the zone, reads its runways and
picks the active one (most into the wind, longest as a tiebreaker), deriving the heading and threshold
automatically when you start the approach. To set the runway by hand instead, use CFG.auto = false
and fill in runway_heading and threshold_point. glideslope_angle (default 3.0) is used in both
modes.
Zones (type: Circle):
| Zone name | Purpose |
|---|---|
TR_DOGFIGHT_RED |
Dogfight arena, the menu and the bandit appear while a player is inside |
TR_BVR_RED |
BVR arena, same engine with a radar-missile loadout |
TR_BVR_MIXED |
Mixed group arena, a package scaled to the number of players inside |
In the dogfight and BVR arenas you pick a type (L-39ZA, MiG-21, MiG-23, MiG-29, Su-27, F-16, F-18) and one
bandit spawns ahead of you at the far edge of the zone, same altitude. Only one is up at a time, extra
requests queue, and Auto brings up a fresh one a few seconds after each kill. The mixed arena spawns a
package whose threat budget is players x difficulty (Easy/Even/Hard). Leaving a zone despawns its bandits.
Loadouts are guns only by default so the dogfight works out of the box. To arm the bandits with missiles,
fill the LOADOUTS table at the top of the script with the weapon CLSIDs from your DCS version (they are
version-specific, so they are not hardcoded). A bad CLSID falls back to guns automatically.
Standalone (usable in any mission). Zones (type: Circle, create whichever you use):
| Zone name | Purpose |
|---|---|
JTAC_GROUND_ZONE |
The ground JTAC sits at its centre (give it line of sight to the targets) |
JTAC_UAV_ZONE |
The UAV orbits its centre |
From the F10 menu you spawn a UAV spotter (MQ-9 Reaper orbiting the zone, best line of sight) or a
ground JTAC (a vehicle at the zone centre). The spotter is friendly (BLUE) and made invisible to enemy
AI so it is not engaged, and it lases the nearest visible RED target. The lasing is driven by the script
(Spot.createLaser), so the laser code and the radio frequency are both changeable live from the menu
(default 1688 and 251.0 AM). Change the frequency to deconflict with other assets; set your pod/bomb to
the laser code. One spotter is up at a time.
- The five scripts share no state and can be used à la carte.
- Dogfight and SEAD zones in
TrainingRange.luamake players immortal while inside (training, no real losses). - Requires a reasonably recent DCS build. A couple of unit type strings and the TACAN beacon parameters can vary by version, so check the in-game messages if a spawn fails.