Configuration des zones¶
Les zones CTLD sont déclarées directement dans l'éditeur de mission de DCS en nommant vos
trigger zones selon une convention structurée. Pour la plupart des zones, aucun script n'est
nécessaire : CTLD lit le nom de chaque trigger zone au démarrage de la mission, analyse celles
qui correspondent à un préfixe connu, et les enregistre automatiquement. Les zones de transport
IA constituent la seule exception — elles sont déclarées dans CTLD_userConfig.lua (voir
Zones de transport IA ci-dessous).
Pour savoir comment les pilotes utilisent concrètement ces zones depuis le cockpit, consultez le Guide du pilote.
Convention de nommage¶
Le nom d'une zone encode son type et tous ses paramètres, séparés par _ :
TYPE_name_param1_param2_..._paramN
Règle :
_est le séparateur de champ. Il est interdit à l'intérieur de toute valeur de champ (nom de zone, nom de flag, etc.). Utilisezfarmmain, et nonfarp_main.
Vue d'ensemble des types de zones¶
Trois préfixes sont auto-découverts à partir des noms de trigger zones de DCS :
| Préfixe | Type de zone | Schéma |
|---|---|---|
TRZ |
Zone de troupes — objectif de pickup et/ou d'extract joueur | TRZ_<name>_<A\|R\|B\|N>_<stock>_<flag>_<target> — les 5 champs sont requis |
WPZ |
Zone de waypoint — les troupes déployées à l'intérieur marchent vers le centre de la zone | WPZ_<name>_[R\|B\|N] |
LGZ |
Zone logistique — services de crate et de véhicules | LGZ_<name>_[R\|B\|N] |
Un quatrième type — les zones de transport IA (AIZ) — n'est pas découvert par le nom. Il est déclaré entièrement en configuration ; voir Zones de transport IA.
Il n'existe pas de préfixe
EXZdistinct. Les objectifs d'extract sont une fonction d'une TRZ (une zone de troupes avecstock = 0et un flag d'objectif), décrite sous Zones de troupes.
Paramètre de coalition :
| Valeur | Coalition |
|---|---|
A |
Toutes les coalitions (TRZ uniquement) |
R |
RED uniquement |
B |
BLUE uniquement |
N |
Neutre |
| (omis) | Toutes les coalitions (WPZ / LGZ uniquement — une TRZ requiert un A explicite) |
Unicité : deux zones du même préfixe ne peuvent pas partager le même
name. Un nom de zone déjà enregistré n'est jamais écrasé par un suivant.
Zones de troupes (TRZ)¶
Une zone de troupes fournit un pickup joueur et/ou un objectif d'extract.
Schéma : TRZ_<name>_<A|R|B|N>_<stock>_<flag>_<target>
Les 5 champs sont requis. Le parser rejette tout nom de TRZ comportant un champ manquant ou
invalide — un avertissement est écrit dans CTLD.log et la zone est ignorée.
| Champ | Position | Valeurs | Signification |
|---|---|---|---|
name |
2 | quelconque (sans underscore, ni mot réservé) | Identifiant de zone utilisé dans les logs et les menus F10 |
coalition |
3 | A R B N |
Qui peut interagir : A=toutes, R=RED, B=BLUE, N=NEUTRAL |
stock |
4 | entier 0–999 | 0=pas de pickup · 1–998=limité · 999=illimité |
flag |
5 | nom de flag DCS ou nil |
Flag incrémenté du nombre de soldats à l'extract ; nil = pas d'objectif |
target |
6 | entier ≥0 | 0=pas de seuil · N≥1=objectif de nombre de soldats pour un trigger de victoire DCS |
Mots réservés — interdits comme
nameouflag:nil,A,R,B,N.
Valeurs de stock¶
stock |
Capacité de pickup | Ce que voit le pilote |
|---|---|---|
0 |
Aucune — pas de pickup | Pas d'entrée « Load from » dans le menu F10 |
1–998 |
Limité — décrémente à chaque chargement | « Load from <name> (N remaining) » |
999 |
Illimité — jamais épuisé | « Load from <name> » |
Utilisez
999pour un pickup illimité — pas0.0signifie aucune capacité de pickup.
Valeurs de flag et de target¶
flag |
target |
Comportement |
|---|---|---|
nil |
quelconque | La zone n'a pas d'objectif. Les troupes déployées ici apparaissent comme un ground group DCS. |
| un nom de flag | 0 |
Objectif actif, sans seuil. CTLD incrémente le flag du nombre de soldats à chaque déploiement de troupes à l'intérieur. |
| un nom de flag | N≥1 |
Objectif avec seuil. CTLD incrémente le flag ; c'est vous qui écrivez le trigger de victoire DCS flag >= N. CTLD initialise le flag à 0 au démarrage de la mission et ne termine jamais la mission de lui-même. |
Exemples¶
| Nom de zone | Coalition | Stock | Flag | Target | Comportement |
|---|---|---|---|---|---|
TRZ_base_B_50_nil_0 |
BLUE | 50 (limité) | — | — | Pickup — 50 soldats, réapprovisionnement au RTB |
TRZ_depot_A_999_nil_0 |
Toutes | illimité | — | — | Pickup — illimité, toutes coalitions |
TRZ_exfil_B_0_rescue_0 |
BLUE | pas de pickup | rescue |
aucun | Extract uniquement — déployer des troupes ici incrémente le flag rescue |
TRZ_lz_R_0_secure_100 |
RED | pas de pickup | secure |
100 | Extract avec condition de victoire — objectif RED à 100 soldats |
TRZ_fob_N_20_defend_50 |
Neutre | 20 (limité) | defend |
50 | Mixte — pickup (20) + objectif d'extract |
TRZ_marker_B_0_nil_0 |
BLUE | pas de pickup | — | — | Inerte — marqueur nommé, sans fonction |
Annoté :
TRZ _ fob _ N _ 20 _ defend _ 50
│ │ │ │ │ │
│ │ │ │ │ └─ target : 50 soldats complètent l'objectif
│ │ │ │ └──────────── flag : "defend" (nom de flag DCS)
│ │ │ └─────────────────────── stock : 20 troupes max (pickup limité)
│ │ └────────────────────────────── coalition: NEUTRAL
│ └────────────────────────────────────── name : "fob"
└───────────────────────────────────────────── préfixe TRZ
Zone extract uniquement (
stock = 0) : aucune entrée « Load from » n'apparaît dans le menu F10. La zone sert uniquement de trigger d'objectif quand des troupes y sont déployées.Zone mixte (
stock > 0etflag ≠ nil) : gère à la fois l'embarquement et le décompte d'objectif. Quand un pilote se pose à l'intérieur avec des troupes à bord, l'objectif est prioritaire — le flag est incrémenté et aucun groupe DCS n'est spawné. Le réapprovisionnement du stock au RTB n'a lieu que dans les zones de pickup uniquement.Fumigène : la couleur du fumigène des zones de troupes est définie globalement par coalition via le paramètre
troopZoneSmokeColor(voir Configuration), et non par nom de zone.
Voir Transport de troupes pour le workflow côté pilote (embarquement, déploiement, extraction).
Zones de waypoint (WPZ)¶
Quand des troupes sont déployées (fast-rope ou dépose au sol) en un point qui tombe à l'intérieur d'une WPZ active, elles marchent automatiquement vers le centre de cette zone au lieu de chercher l'ennemi le plus proche.
Schéma : WPZ_<name>_[R|B|N]
| Exemple de nom | Signification |
|---|---|
WPZ_hill47_B |
Zone de waypoint BLUE « hill47 » |
WPZ_bridge |
Zone de waypoint toutes coalitions |
Le rayon de la zone est repris de l'éditeur de trigger zone de DCS.
Les zones WPZ n'apparaissent pas dans le menu F10 — elles agissent silencieusement au moment du déploiement.
Zones logistiques (LGZ)¶
Une zone logistique définit une base où les pilotes peuvent spawner et packer des crates et des véhicules depuis le menu F10. Un pilote doit se trouver à l'intérieur d'une zone logistique pour utiliser ces services.
Schéma : LGZ_<name>_[R|B|N]
| Exemple de nom | Signification |
|---|---|
LGZ_depot1_B |
Zone logistique « depot1 », BLUE uniquement |
LGZ_farmmain_R |
Zone logistique « farmmain », RED uniquement |
LGZ_shared |
Zone logistique ouverte à toutes les coalitions |
Rayon : une zone
LGZ_est un cercle centré sur la trigger zone, avec un rayon repris du paramètredynamicZoneRadius(défaut 200 m). Le rayon propre de la trigger zone dans l'éditeur n'est pas utilisé pour les LGZ. RéglezdynamicZoneRadiusdans Configuration pour le modifier globalement.
Voir Catalogue des crates pour ce qui peut être spawné, et Crates pour le workflow du pilote.
Zones logistiques créées à l'exécution¶
La seule façon d'ajouter une nouvelle zone logistique pendant une mission en cours est de
déployer une FOB. Quand la construction de la FOB est terminée, CTLD enregistre
automatiquement une zone logistique circulaire centrée sur le site de la FOB (rayon =
fobLogisticZoneRadius, défaut 150 m, sous le nom de la FOB). Aucune trigger zone LGZ_ ni entrée
de config n'est requise. Voir Scenes & FOB pour le cycle de vie complet de la
FOB, y compris comment une FOB détruite retire sa zone logistique.
Désactivation et réactivation d'une zone logistique¶
Utilisez l'API CTLDZoneManager depuis un trigger DO SCRIPT pour simuler une capture de zone
ou une perte temporaire. Cela fonctionne à la fois pour les trigger zones LGZ_ et pour les zones
basées sur logisticUnits :
-- Deactivate — zone is ignored by all pilots until reactivated
CTLDZoneManager.getInstance():deactivateLogisticZone("depot1")
-- Reactivate — zone becomes available again
CTLDZoneManager.getInstance():activateLogisticZone("depot1")
La zone reste enregistrée et peut être basculée autant de fois que souhaité.
Zones de transport IA (AIZ)¶
Les zones AIZ contrôlent le comportement automatique des transports IA (unités listées dans
transportPilotNames). Les joueurs humains ne sont jamais affectés par elles.
Les zones AIZ n'ont pas de convention de nommage. N'importe quelle trigger zone de DCS peut être une zone AIZ — vous la référencez par son nom dans le tableau de config
aiZones. Le pickup comme le drop-off se déclenchent à l'atterrissage (S_EVENT_LAND) : l'unité IA doit physiquement se poser à l'intérieur du rayon de la zone.
Rôles¶
| Rôle | Déclencheur | Comportement |
|---|---|---|
| Pickup | Le transport IA se pose à l'intérieur de la zone | Charge des troupes et/ou un véhicule entier |
| Drop-off | Le transport IA se pose à l'intérieur de la zone | Déploie des troupes et/ou décharge un véhicule entier |
Une zone peut être pickup uniquement, drop-off uniquement, ou les deux.
Déclaration en config¶
Les zones sont déclarées dans _cfg.settings["aiZones"], un tableau d'entrées :
_cfg.settings["aiZones"] = {
-- Troops-only pickup: two templates with per-template stock
{ dcsZoneName = "my_base", coalition = "BLUE",
isPickup = true, cargoType = "T",
troopStock = { ["Standard Group"] = 5, ["Anti Tank"] = 2 } },
-- Troops-only pickup: every compatible template, unlimited
{ dcsZoneName = "depot_alpha", coalition = "BLUE",
isPickup = true, cargoType = "T",
troopStock = { All = -1 } },
-- Vehicle-only pickup (vehicles must be physically in the zone)
{ dcsZoneName = "armor_depot", coalition = "BLUE",
isPickup = true, cargoType = "V",
vehicleStock = { ["Hummer"] = 3, ["M1025 HMMWV Armament"] = -1 } },
-- Troops + vehicle pickup
{ dcsZoneName = "hub_tv", coalition = "BLUE",
isPickup = true, cargoType = "TV",
troopStock = { All = -1 }, vehicleStock = { ["Hummer"] = 5 } },
-- Ground-only drop-off
{ dcsZoneName = "lz_front", coalition = "BLUE",
isDropoff = true, aiDropMode = "G" },
-- Ground + parachute drop-off (default)
{ dcsZoneName = "lz_rear", coalition = "BLUE",
isDropoff = true },
}
Paramètres¶
| Paramètre | Type | Requis | Description |
|---|---|---|---|
dcsZoneName |
string | ✅ | Nom exact de la trigger zone DCS |
coalition |
"RED" / "BLUE" / "NEUTRAL" |
✅ | Quels transports IA utilisent cette zone |
isPickup |
true |
l'un des deux | Marque la zone comme zone de pickup |
isDropoff |
true |
l'un des deux | Marque la zone comme zone de drop-off |
cargoType |
"T" / "V" / "TV" |
pickup uniquement | Troupes, véhicule entier, ou les deux. Défaut "T" |
troopStock |
table { [name] = N } |
pickup + troupes | Stock par template. N = -1 illimité, N > 0 limité. Clé spéciale All = tous les templates compatibles. Doit être présent pour activer le pickup de troupes. |
vehicleStock |
table { [type] = N } |
pickup + véhicules | Stock par type, mêmes règles -1 / N / All. Doit être présent pour activer le pickup de véhicules. |
aiDropMode |
"G" / "P" / "GP" |
drop-off | G sol, P parachute, GP l'un ou l'autre. Défaut "GP" |
troopTemplates |
{ "Name1", ... } |
optionnel | Liste blanche des templates de troupes éligibles à cette zone |
vehicleTypes |
{ "TypeName", ... } |
optionnel | Liste blanche des noms de type de véhicule DCS éligibles au chargement |
troopStocketvehicleStocksont des tables, pas de simples entiers. Le stock par template / par type a remplacé l'ancienne forme à entier unique.
Configuration du transport IA¶
- Créez des trigger zones dans le ME (nom quelconque, rayon adapté à l'atterrissage).
- Déclarez-les dans
_cfg.settings["aiZones"](ci-dessus). - Ajoutez le nom d'unité DCS exact de chaque unité IA à
transportPilotNames:
_cfg.settings["transportPilotNames"] = {
["heliai_supply"] = true,
["heliai_medevac"] = true,
}
- Routez l'unité IA pour qu'elle se pose à l'intérieur des zones (waypoints avec une tâche « Landing »).
Un véhicule entier n'est chargé que si son poids n'excède pas le
maxVehicleWeightdu transport et qu'au moins un aéronef acanTransportWholeVehicle = true. Voir Configuration pour les poids et les capacités.
Rapport de validation¶
Au démarrage de la mission, CTLD valide chaque entrée aiZones et, s'il y a quoi que ce soit à
signaler, affiche à l'écran (30 s) et dans CTLD.log une liste groupée d'erreurs et
d'avertissements, dans la langue de la mission. Si tout est valide, une seule ligne INFO est
loggée et rien n'apparaît.
Une entrée est ignorée (erreur) quand elle n'a pas de dcsZoneName, un dcsZoneName en
double, une zone absente de l'éditeur de mission, une coalition manquante ou invalide (doit être
RED / BLUE / NEUTRAL), ni isPickup ni isDropoff, ou un cargo véhicule (V / TV) alors
qu'aucun aéronef ne peut transporter un véhicule entier. Les avertissements courants (la zone
est tout de même créée) : un cargoType invalide retombe sur "T", un aiDropMode invalide
retombe sur "GP", une zone de pickup à laquelle manque le troopStock / vehicleStock
correspondant a ce pickup désactivé, des noms de troopTemplates / vehicleTypes inconnus, et une
zone de pickup chevauchant une zone de drop-off de la même coalition (risque de boucle instantanée
pickup+drop-off).
Configuration de zone héritée (legacy)¶
Les missions construites à la manière classique de CTLD v1 — noms de zones listés dans des tables
de config plutôt qu'analysés depuis les noms de trigger — restent supportées. Le caractère _
est autorisé dans les noms ici, car il s'agit de simples noms de trigger (ou d'unité) DCS, et
non de schémas analysés. Déclarez-les dans CTLD_userConfig.lua :
-- Pickup zones: { "DCS zone name", "smoke color", limit, "active", side }
-- smoke color : "none"|"green"|"red"|"white"|"orange"|"blue"
-- limit : -1 = unlimited, or any integer >= 1
-- active : "yes" | "no"
-- side : 0 = both, 1 = RED, 2 = BLUE
ctld.pickupZones = {
{ "pickzone1", "blue", -1, "yes", 0 },
{ "pickzone2", "red", -1, "yes", 2 },
{ "USS Tarawa", "blue", 10, "yes", 2 }, -- a ship unit name is also accepted
}
-- Drop-off zones (AI auto-deploy points): { "DCS zone name", "smoke color", side }
ctld.dropOffZones = {
{ "dropzone1", "green", 2 },
{ "dropzone2", "none", 0 },
}
-- Waypoint zones (deployed troops march to the centre): { "DCS zone name", "smoke color", "active", side }
ctld.wpZones = {
{ "wpzone1", "green", "yes", 2 },
}
-- Logistic units: unit or static names placed in the ME.
-- If the named object is destroyed, its logistic zone is removed automatically.
ctld.logisticUnits = { "logistic1", "logistic2" }
Les zones héritées et les zones auto-découvertes (TRZ / WPZ / LGZ) coexistent sans conflit : une zone déjà enregistrée via la découverte par nom de trigger n'est jamais écrasée par la config héritée.
Pour la surface de compatibilité v1 ctld.* complète, voir API héritée.