Configuration¶
CTLD est livré avec des valeurs par défaut sensées pour chaque paramètre. Vous n'éditez jamais
les fichiers source : toute la personnalisation vit dans un unique fichier,
CTLD_userConfig.lua, que votre mission charge via un trigger DO SCRIPT FILE.
Ce fichier porte un instantané de configuration complet — toute la configuration de CTLD, et non
une liste de modifications — et il remplace intégralement les valeurs par défaut intégrées. Vous
partez donc toujours des valeurs par défaut courantes pour les ajuster, ce que ctld-tools fait
précisément pour vous.
Recommandé : utiliser l'application ctld-tools
Plutôt que d'écrire l'instantané à la main, le flux recommandé est l'application ctld-tools :
double-cliquez-la, éditez la configuration complète de CTLD dans votre navigateur via des
formulaires, et injectez-la dans votre mission. Elle part des valeurs par défaut courantes, valide
vos changements contre le vrai catalogue et la liste des types DCS, et détecte les erreurs avant
DCS. ctld-tools.exe est attaché à chaque Release GitHub (pas besoin de Python) — voir
Configurer CTLD avec ctld-tools. L'écriture manuelle de l'instantané reste
entièrement possible pour les utilisateurs avancés, et cette page documente chaque réglage qu'il
contient.
Cette page couvre les réglages globaux et les capacités par appareil
(capabilitiesByType). Les listes de zones, les définitions de crate, les scènes FOB, le
minefield et les traductions ont chacun leur propre page — voir Où le reste se configure.
Comment fonctionne la configuration¶
Au démarrage, CTLD analyse un seul document de configuration : ctld.configUser si votre mission
en fournit un, sinon les valeurs par défaut embarquées dans CTLD.lua. Les deux ne sont jamais
fusionnés. Un ctld.configUser qui ne s'analyse pas est une erreur fatale plutôt qu'un retour
silencieux aux défauts — une raison de plus de le produire avec ctld-tools, qui valide avant export.
Tout au long de la mission en cours, chaque paramètre est lu via un unique accesseur :
ctld.gs("parameterName") -- the only authorised read form
Ordre de chargement dans le Mission Editor¶
CTLD.lua démarre automatiquement avec les valeurs par défaut — aucun fichier de config
n'est requis. Si vous souhaitez personnaliser, ajoutez CTLD_userConfig.lua comme premier
trigger, avant CTLD.lua :
| Ordre | Action | Fichier | Requis ? |
|---|---|---|---|
| 1 | DO SCRIPT FILE | CTLD_userConfig.lua |
Optionnel — uniquement si personnalisation |
| 2 | DO SCRIPT FILE | CTLD.lua |
Toujours |
CTLD_userConfig.lua pose ctld.configUser dans l'environnement global ; CTLD.lua l'analyse
au démarrage et initialise CTLD automatiquement. L'action Injecter dans la mission… de
ctld-tools écrit exactement ce trigger, à cette position, pour vous. (Si vous devez exécuter une
configuration supplémentaire entre le chargement et le démarrage, positionnez
ctld.dontInitialize = true avant le chargement de CTLD.lua et appelez ctld.initialize()
vous-même.)
À quoi ressemble l'instantané¶
L'instantané est du YAML dans une chaîne longue Lua, au même format que le
src/CTLD_config.yaml de CTLD : une balise configVersion, puis les sections mm_facing et
advanced qui portent chaque réglage et chaque table du catalogue. mm_facing regroupe ce qu'un
concepteur de mission touche habituellement, advanced le reste ; le moteur fusionne les deux, la
séparation n'existe que pour la lisibilité. Si vous écrivez un instantané à la main, recopiez la
structure de src/CTLD_config.yaml (ou exportez-en un depuis ctld-tools) plutôt que d'inventer le
placement.
-- CTLD_userConfig.lua — a COMPLETE configuration snapshot, not a list of overrides.
ctld = ctld or {}
ctld.configUser = [[
configVersion: "2.0.0"
mm_facing:
numberOfTroops: 8
maximumDistanceLogistic: 300
slingLoad: true
spawnableCrates:
# ... every crate section ...
# ... every other mm_facing setting and table ...
advanced:
maximumDistancePackableUnitsSearch: 350
# ... every advanced setting ...
]]
configVersion enregistre la version de configuration contre laquelle votre instantané a été écrit.
Lors d'une mise à jour de CTLD, ctld-tools la lit et vous dit ce qui a changé — réglages apparus,
réglages devenus inutiles, valeurs par défaut déplacées — sans jamais rien fusionner à votre insu.
Ce que signifie une omission
Les deux natures de valeur ne se comportent pas pareil, et c'est volontaire :
- un réglage (une valeur unique — booléen, nombre, chaîne) que vous omettez retombe sur la valeur par défaut de CTLD, car le moteur a besoin d'une valeur pour calculer. Chaque réglage résolu de cette façon est nommé une fois dans le rapport de démarrage à l'écran : un instantané écrit à la main qui a dérivé fonctionne quand même, et vous le dit.
- une liste (une section de caisses, un groupe de troupes, une entrée de zone, un nom de pilote) que vous omettez est réellement absente. C'est ainsi qu'on en retire une — et c'est pourquoi rien n'est fusionné.
La validation de ctld-tools signale un réglage manquant comme une erreur et refuse d'injecter :
un instantané produit par l'outil est donc toujours complet.
Passez à un niveau de crochets supérieur si nécessaire
L'instantané se place entre [[ et ]]. Si votre texte contient un jour ]], utilisez
[==[ ... ]==].
Réglages globaux¶
Système¶
| Paramètre | Défaut | Description |
|---|---|---|
debug |
false |
Journalisation verbeuse vers CTLD.log (nécessite une installation DCS non sanitized) |
i18n_lang |
"en" |
Langue de l'interface CTLD : en, fr, es ou ko |
ctldLogPath |
"" |
Surcharge le chemin du fichier de log ; vide = dossier Saved Games DCS par défaut |
debugScreenLog |
false |
Répète aussi les messages de log à l'écran DCS via outText |
location_DMS |
false |
Affiche les coordonnées en Degrés-Minutes-Secondes au lieu de Degrés-Minutes-Décimales |
disableAllSmoke |
false |
Désactive globalement toute la smoke aux zones de pickup et de drop-off |
modTypes |
{} |
Noms de types DCS hors-stock (mod) utilisés par votre config custom (crates, parts AA, rôles de troupes). Consulté uniquement par le compagnon asset-check dev-time pour ne pas les signaler — voir cette page |
Crates & slingload¶
| Paramètre | Défaut | Description |
|---|---|---|
enableCrates |
true |
Interrupteur maître pour le spawn et le déballage des crate |
enableAllCrates |
true |
Affiche les entrées raccourci « All crates » dans les menus Request Equipment. Mettre à false pour ne conserver que les entrées de crate individuelles |
slingLoad |
false |
Utilise la physique sling-load de DCS au lieu du système virtuel de hover |
enableHoverSlingload |
true |
Autorise le chargement de crate en hover au-dessus. Si false, les crate ne se chargent que via le menu F10 (loadCrateFromMenu) |
loadCrateFromMenu |
true |
Autorise le chargement de crate via le menu F10 (utile pour les fixed-wing incapables de hover) |
enableSmokeDrop |
true |
Active l'entrée F10 « Drop Smoke » |
Distances (mètres)¶
| Paramètre | Défaut | Description |
|---|---|---|
maximumDistanceLogistic |
200 |
Distance max depuis une zone logistique pour charger ou spawn une crate |
maxExtractDistance |
125 |
Distance max entre le véhicule et les troops pour l'extraction |
maximumSearchDistance |
3000 |
Distance max pour que les troops IA déployées cherchent des ennemis |
maximumDistancePackableUnitsSearch |
200 |
Distance max pour chercher des véhicules pack-ables |
Troops¶
| Paramètre | Défaut | Description |
|---|---|---|
numberOfTroops |
10 |
Taille de groupe de troops par défaut / max par transport (surchargée par appareil via maxTroopsOnboard) |
enableFastRopeInsertion |
true |
Autorise le déploiement en fast-rope |
fastRopeMaximumHeight |
18.28 |
Hauteur max (m) pour l'insertion fast-rope (≈ 60 ft) |
allowRandomAiTeamPickups |
false |
Autorise les transports IA à choisir aléatoirement un template de troop aux zones de pickup. Si false, l'IA prend toujours le premier template disponible pour sa coalition |
nbLimitSpawnedTroops |
{0, 0} |
Plafond cumulé de troops par coalition {RED, BLUE} — 0 = illimité (table Lua) |
Simulation du poids de l'infanterie¶
CTLD estime le poids de chaque groupe de troops pour vérifier s'il tient dans un transport (voir
capabilitiesByType[type].maxTroopsOnboard et les poids de véhicules). Chaque soldat pèse un
aléatoire de 90–120 % de SOLDIER_WEIGHT, plus l'équipement et le matériel propre au rôle.
| Paramètre | Défaut | Description |
|---|---|---|
SOLDIER_WEIGHT |
80 |
Poids corporel de base par soldat (kg) |
KIT_WEIGHT |
20 |
Casque + sac à dos par soldat (kg) |
RIFLE_WEIGHT |
5 |
Équipement standard de fusilier (kg) |
MANPAD_WEIGHT |
18 |
Tube MANPAD du soldat AA (kg) |
RPG_WEIGHT |
7.6 |
RPG + roquette du soldat AT (kg) |
MG_WEIGHT |
10 |
Arme du mitrailleur + bande de 200 cartouches (kg) |
MORTAR_WEIGHT |
26 |
Tube + obus de l'équipe de mortier (kg) |
JTAC_WEIGHT |
15 |
Laser + radio + jumelles du JTAC (kg) |
CIV_WEIGHT |
2 |
Effets personnels légers pour le rôle civil (kg) |
FOB¶
| Paramètre | Défaut | Description |
|---|---|---|
enabledFOBBuilding |
true |
Autorise la construction de FOB depuis des crate |
troopPickupAtFOB |
true |
Autorise le pickup de troops aux FOB construits |
fobMinDistanceFromZones |
500 |
Distance minimale (m) de toute zone logistique à laquelle un FOB peut être déployé |
fobLogisticZoneRadius |
150 |
Rayon (m) de la zone logistique créée autour d'un FOB déployé |
fobTroopPickupRadius |
150 |
Rayon (m) dans lequel les troops peuvent embarquer à un FOB |
fobDestructionThreshold |
0.5 |
Fraction d'objets de scène détruits avant qu'un FOB soit considéré perdu (0.0–1.0) |
enableFARPRepack |
true |
Autorise les joueurs à pack une scène FARP déployée de nouveau en crate pour redéploiement |
Note
Le nombre de crate nécessaires pour construire un FOB n'est pas un réglage global — il
provient du modèle de scène FOB (cratesRequired, défaut 3), collectées dans un rayon de
750 m. Voir Scenes & FOB.
Véhicules & packing¶
| Paramètre | Défaut | Description |
|---|---|---|
enablePackingVehicles |
true |
Autorise le pack des véhicules de nouveau en crate |
groundVehicleWeights |
{...} |
Poids (kg) par type DCS de véhicule, comparé au maxVehicleWeight de chaque appareil pour le transport de véhicule entier (table Lua) |
capabilitiesByType |
{...} |
Table unifiée des capacités par appareil — voir Capacités par appareil ci-dessous |
Beacons¶
| Paramètre | Défaut | Description |
|---|---|---|
enabledRadioBeaconDrop |
true |
Autorise le déploiement de beacon |
deployedBeaconBattery |
30 |
Durée de vie de la batterie du beacon (minutes) |
radioSound |
"beacon.ogg" |
Fichier son du beacon — l'outil le place dans le .miz ; si vous installez à la main, ajoutez-le vous-même, sinon les balises resteront muettes. CTLD_beacon_custom.ogg désigne un son que vous avez choisi |
radioSoundFC3 |
"beaconsilent.ogg" |
Fichier de beacon silencieux pour les appareils FC3, même règle (personnalisé : CTLD_beaconsilent_custom.ogg) |
Systèmes AA¶
| Paramètre | Défaut | Description |
|---|---|---|
AASystemLimitBLUE |
20 |
Nombre max de systèmes AA actifs pour BLUE |
AASystemLimitRED |
20 |
Nombre max de systèmes AA actifs pour RED |
AASystemCrateStacking |
false |
Autorise plusieurs jeux de crate à ajouter des launchers supplémentaires (N×crates → N×launchers) |
aaLaunchers |
3 |
Nombre par défaut de launchers par système AA quand le template n'en précise pas |
JTAC¶
| Paramètre | Défaut | Description |
|---|---|---|
JTAC_LIMIT_BLUE |
10 |
Nombre max d'objets JTAC que BLUE peut spawn (quota fixe — non réapprovisionné lorsqu'un JTAC est tué) |
JTAC_LIMIT_RED |
10 |
Nombre max d'objets JTAC que RED peut spawn (idem) |
JTAC_dropEnabled |
true |
Autorise le spawn de crate JTAC depuis F10 |
JTAC_maxDistance |
10000 |
Portée en ligne de vue du JTAC (mètres) |
JTAC_lock |
"all" |
Filtre de cible : "vehicle" | "troop" | "all" |
JTAC_allowStandbyMode |
true |
Autorise l'activation/désactivation du lasing |
JTAC_laseSpotCorrections |
true |
Anticipe les cibles mobiles, en tenant compte du vent et de la vitesse de la cible |
JTAC_allow9Line |
true |
Autorise les requêtes 9-line |
JTAC_allowSmokeRequest |
true |
Autorise les requêtes de smoke-on-target |
JTAC_smokeOn_RED |
false |
Active le marquage smoke pour les JTAC RED |
JTAC_smokeOn_BLUE |
false |
Active le marquage smoke pour les JTAC BLUE |
JTAC_smokeColour_RED |
4 |
Couleur de smoke du JTAC RED — 0=Green 1=Red 2=White 3=Orange 4=Blue |
JTAC_smokeColour_BLUE |
1 |
Couleur de smoke du JTAC BLUE — 0=Green 1=Red 2=White 3=Orange 4=Blue |
JTAC_smokeMarginOfError |
50 |
Rayon max d'erreur de placement aléatoire (m) pour la smoke |
JTAC_smokeOffset_x |
0.0 |
Offset Est/Ouest fixe (m) ajouté avant l'erreur aléatoire |
JTAC_smokeOffset_y |
2.0 |
Offset vertical fixe (m) — garde la smoke visible au-dessus du terrain |
JTAC_smokeOffset_z |
0.0 |
Offset Nord/Sud fixe (m) ajouté avant l'erreur aléatoire |
JTAC_droneRadiusNoLase |
2000 |
Rayon d'orbite (m) tant qu'un JTAC drone cherche sans laser |
JTAC_droneRadiusOnLase |
1000 |
Rayon d'orbite (m) une fois qu'un JTAC drone illumine une cible — plus serré, pour rester près de ce qu'il désigne |
JTAC_droneAltitude |
3000 |
Altitude d'orbite AGL (m) des JTAC drones, utilisée aussi pour l'altitude d'apparition |
JTAC_droneSpeed |
150 |
Vitesse d'orbite (km/h) des JTAC drones, utilisée aussi pour la vitesse d'apparition |
Groupes JTAC pré-placés (auto-détection)¶
CTLD détecte au démarrage les groupes JTAC placés dans le Mission Editor. Un groupe est reconnu
comme JTAC lorsque son nom de groupe contient jtac (insensible à la casse) — par exemple
jtac_blue_1, JTAC_Red_Forward, blue_jtac_drone.
Naming rule (mandatory)
Tout groupe JTAC placé dans le Mission Editor doit inclure jtac dans son nom de groupe.
CTLD utilise le nom de groupe — pas le type d'unité — pour identifier les JTAC pré-placés. Un
groupe contenant un Hummer ou un SKP-11 ne sera pas détecté à moins que son nom contienne
jtac. Les groupes JTAC en late-activation sont supportés et enregistrés automatiquement
lors de leur activation.
RECON¶
| Paramètre | Défaut | Description |
|---|---|---|
reconF10Menu |
true |
Active le sous-menu F10 RECON |
reconEnabled |
false |
Interrupteur maître — doit être true pour que les commandes de scan fonctionnent |
reconSearchRadius |
5000 |
Rayon de scan en ligne de vue (mètres) |
reconMinAltitude |
50 |
Altitude AGL minimale (m) requise pour effectuer un scan |
reconRefreshInterval |
10 |
Intervalle de rafraîchissement automatique (secondes) |
reconIconScale |
1.0 |
Multiplicateur de taille d'icône (1.0 = défaut, 2.0 = double) |
Minefield¶
| Paramètre | Défaut | Description |
|---|---|---|
showMinefieldOnF10Map |
true |
Dessine un quadrilatère englobant sur la carte F10 lorsqu'un minefield est déployé |
demineRadius |
150 |
Distance max (m) du joueur au centre du minefield pour que l'entrée « Clear Mine Field » apparaisse |
Voir Minefield pour le déploiement.
Capacités par appareil¶
capabilitiesByType est l'unique table qui définit chaque capacité par appareil. Un appareil
listé ici est un transport ; un appareil absent conserve les parties de CTLD qui ne transportent
rien. Chaque clé est le nom de type DCS exact de l'appareil (mods inclus, ex. "Hercules",
"76MD", "UH-60L").
| Avec une entrée | Sans entrée |
|---|---|
| caisses, troupes, beacons, fumigènes | — |
menu CTLD, Check Cargo, RECON, statut JTAC |
identiques, inchangés |
Un pilote aux commandes d'un appareil que vous avez oublié de lister a donc bien un menu CTLD — il ne transporte simplement rien. C'est le symptôme à chercher quand quelqu'un signale « le menu est là mais il est vide ».
Dans ctld-tools, c'est la famille Appareils : choisissez un type dans la liste DCS et
remplissez le formulaire. Dans un instantané écrit à la main, cette table vit sous mm_facing :
mm_facing:
capabilitiesByType:
UH-1H:
cratesEnabled: true # can load/unpack crates
troopsEnabled: true # can load/deploy infantry
canParachuteDrop: true # enables Parachute F10 entries
canSlingload: true # enables hover-pickup + Slingload menus
canTransportWholeVehicle: true # whole-vehicle transport
useNativeDcsCargoSystem: true # use the DCS native cargo system for crates
convertNativeLoadToCTLD: true # convert DCS-native cargo loads to CTLD-managed
maxTroopsOnboard: 8 # max soldiers (overrides numberOfTroops)
maxCratesOnboard: 1 # max crates carried at once
maxWholeVehiclesOnboard: 1 # max whole vehicles carried at once
maxVehicleWeight: 1360 # max whole-vehicle weight (kg) this aircraft can lift
loadableVehiclesRED:
- BRDM-2
- BTR_D
loadableVehiclesBLUE:
- M1045 HMMWV TOW
- M1043 HMMWV Armament
- Hummer
C-130J-30:
cratesEnabled: true
troopsEnabled: true
canParachuteDrop: true
canSlingload: false
canTransportWholeVehicle: true
useNativeDcsCargoSystem: true
convertNativeLoadToCTLD: false
maxTroopsOnboard: 80
maxCratesOnboard: 22
maxWholeVehiclesOnboard: 2
maxVehicleWeight: 20000
loadableVehiclesRED:
- BRDM-2
- BTR_D
loadableVehiclesBLUE:
- M1045 HMMWV TOW
- M1043 HMMWV Armament
- Hummer
# ... one entry per aircraft type
Référence des champs :
| Champ | Type | Description |
|---|---|---|
cratesEnabled |
bool | Peut charger / spawn / déballer des crate |
troopsEnabled |
bool | Peut charger / déployer des groupes d'infanterie |
canParachuteDrop |
bool | Active les entrées F10 « Parachute » |
canSlingload |
bool | Active le hover-pickup et les menus « Release/Cut Slingload » |
canTransportWholeVehicle |
bool | Peut charger et redéployer des véhicules entiers |
useNativeDcsCargoSystem |
bool | Si true, CTLD fait spawn les crate comme objets cargo DCS (intégration cargo native). Si false, les crate sont créées directement comme objets statiques |
convertNativeLoadToCTLD |
bool | Si true, toute crate chargée via l'UI cargo DCS est immédiatement convertie en crate gérée par CTLD (détruit le slot DCS, empêche les crate fantômes). Mettre à true pour les hélicoptères où l'UI cargo DCS est exposée mais où le parachute CTLD est nécessaire (UH-1H, CH-47Fbl1) ; laisser à false pour les appareils qui s'appuient sur le cargo natif DCS pour les opérations au sol (C-130J-30, 76MD, Hercules) |
maxTroopsOnboard |
number | Nombre max de soldats que cet appareil peut transporter (surcharge numberOfTroops) |
maxCratesOnboard |
number | Nombre max de crate chargées à la fois (repli : 1 pour les types non listés) |
maxWholeVehiclesOnboard |
number | Nombre max de véhicules entiers transportés à la fois (0 = désactivé) |
maxVehicleWeight |
number | Poids max de véhicule entier (kg) que cet appareil peut soulever ; les véhicules plus lourds sont ignorés par l'auto-pickup de l'IA. Omettre ou mettre à nil pour illimité |
loadableVehiclesRED |
string[] | Noms de type DCS des véhicules de coalition RED que cet appareil peut transporter entiers |
loadableVehiclesBLUE |
string[] | Noms de type DCS des véhicules de coalition BLUE que cet appareil peut transporter entiers |
Note
Quand canTransportWholeVehicle = true et que loadableVehiclesRED/BLUE liste un type de
véhicule, ce type apparaît dans le menu F10 Request Equipment. Le sélectionner fait spawn
le véhicule comme unité en attente près du transport (au lieu d'une crate) ; le pilote le
charge ensuite depuis le cockpit. Voir le guide Pilote pour le
déroulement en cockpit.
Les appareils non listés dans capabilitiesByType ne reçoivent aucun menu CTLD. L'instantané
étant complet, la table que vous livrez est la table utilisée par CTLD : incluez chaque appareil que
vous voulez rendre CTLD-capable. Pour changer un seul champ sur un seul appareil — disons
maxTroopsOnboard sur le Mi-8MT — partez de la table par défaut et modifiez ce champ sur place ;
n'écrivez pas une table ne contenant que votre appareil, sinon tous les autres types perdent leurs
menus. ctld-tools s'en charge : il part toujours de la table par défaut complète et marque les
champs que vous avez modifiés.
Contrôle d'accès¶
Deux paramètres décident quelles unités joueur reçoivent les menus F10 de CTLD.
| Paramètre | Défaut | Description |
|---|---|---|
addPlayerAircraftByType |
true |
Comment CTLD sélectionne les unités joueur qui reçoivent les menus |
transportPilotNames |
{...} |
Liste blanche de noms d'unité DCS — active quand addPlayerAircraftByType = false, et toujours utilisée pour les transports IA |
addPlayerAircraftByType = true (défaut) — tout joueur dont le type d'appareil est listé
dans capabilitiesByType obtient automatiquement les menus CTLD en entrant dans un slot.
Recommandé pour les serveurs multijoueurs ouverts.
addPlayerAircraftByType = false — seuls les noms d'unité explicitement listés dans
transportPilotNames obtiennent les menus CTLD. Utilisez ceci pour restreindre CTLD à un
ensemble fixe de slots nommés (ex. une escadrille de transport dédiée). Les appareils
CTLD-capables non listés rejoignent la mission normalement mais n'ont aucun accès CTLD.
mm_facing:
addPlayerAircraftByType: false
transportPilotNames:
- transport_slot_1
- transport_slot_2
- transport_slot_3
AI transports
Les transports IA utilisent toujours transportPilotNames, indépendamment de
addPlayerAircraftByType. Ajoutez-y les noms d'unité IA pour activer le comportement
d'auto-pickup / drop-off.
Où le reste se configure¶
La configuration qui n'est pas globale vit sur des pages dédiées :
| Sujet | Page |
|---|---|
Zones de troop / logistique / extract / waypoint (troopZones, aiZones, wpZones…) |
Zone setup |
| Construction de FOB et déploiement de scène | Scenes & FOB |
spawnableCrates, descripteurs de crate et templates AA |
Crate catalogue |
| Déploiement de minefield | Minefield |
| Localisation et surcharges de traduction | Translations |
Compatibilité v1 ctld.* pour les scripts existants |
Legacy API |
Pour opérer CTLD depuis le cockpit (le menu F10), voir le guide Pilote.