API historique¶
Si vous avez déjà une mission construite sur CTLD v1, ses triggers DO SCRIPT et scripts
utilitaires continuent de fonctionner sous v2. CTLD fournit de fins wrappers de compatibilité
qui reproduisent les fonctions globales ctld.* de v1 et transmettent chaque appel au manager
v2 correspondant.
La promesse de compatibilité¶
- 22 fonctions v1 sont wrappées. Chacune délègue en interne à un manager v2, de sorte que vos appels existants se comportent comme en v1.
- Chaque appel journalise un avertissement de dépréciation dans
ctld.log(et DCS.log). Les wrappers sont pris en charge en v2 mais seront supprimés en v3 — prévoyez de migrer avant. ctld.addCallbackn'est pas wrappé. Les callbacks v1 n'ont pas de remplacement direct ; utilisez plutôt le système d'événements v2 (voir Callbacks ci-dessous).
Pour les nouvelles missions, préférez directement les managers v2. Le mapping complet et les étapes de migration se trouvent dans la documentation développeur — cette page ne couvre que ce dont un mission maker disposant d'un script v1 a besoin.
Consultez le guide Migration v1 → v2 pour le parcours de migration complet, fonction par fonction.
Troops et transport¶
| Fonction v1 | Délègue à |
|---|---|
ctld.spawnGroupAtTrigger(groupSide, number, triggerName, searchRadius) |
CTLDTroopManager:spawnGroupAtTrigger() |
ctld.spawnGroupAtPoint(groupSide, number, point, searchRadius) |
CTLDTroopManager:spawnGroupAtPoint() |
ctld.preLoadTransport(unitName, number, troops) |
CTLDTroopManager:preLoadTransport() |
ctld.loadTransport(unitName) |
CTLDTroopManager:loadTransport() |
ctld.unloadTransport(unitName) |
CTLDTroopManager:unloadTransport() |
ctld.unloadInProximityToEnemy(unitName, distance) |
CTLDTroopManager:unloadInProximityToEnemy() |
Exemple — spawn de troops depuis un DO SCRIPT :
ctld.spawnGroupAtTrigger(coalition.side.BLUE, 6, "LZ_NORTH", 1000)
Zones de pickup, de waypoint et d'extract¶
| Fonction v1 | Délègue à |
|---|---|
ctld.activatePickupZone(zoneName) |
CTLDZoneManager:setTroopZoneActive(name, true) |
ctld.deactivatePickupZone(zoneName) |
CTLDZoneManager:setTroopZoneActive(name, false) |
ctld.changeRemainingGroupsForPickupZone(zoneName, amount) |
CTLDZoneManager:changeRemainingGroups() |
ctld.activateWaypointZone(zoneName) |
CTLDZoneManager:activateWaypointZone() |
ctld.deactivateWaypointZone(zoneName) |
CTLDZoneManager:deactivateWaypointZone() |
ctld.createExtractZone(zone, flagNumber, smoke) |
CTLDZoneManager:createExtractZone() |
ctld.removeExtractZone(zone, flagNumber) |
CTLDZoneManager:removeExtractZone() |
ctld.countDroppedGroupsInZone(zone, blueFlag, redFlag) |
CTLDTroopManager:startGroupCountWatcher() |
ctld.countDroppedUnitsInZone(zone, blueFlag, redFlag) |
CTLDTroopManager:startUnitCountWatcher() |
Exemple — activer une zone de pickup au démarrage de la mission :
ctld.activatePickupZone("TRZ_ALPHA")
Voir Configuration des zones pour savoir comment ces zones sont définies dans l'éditeur de mission.
Crates¶
| Fonction v1 | Délègue à |
|---|---|
ctld.spawnCrateAtZone(side, weight, zone) |
CTLDCrateManager:spawnCrateAtZone() |
ctld.spawnCrateAtPoint(side, weight, point, hdg) |
CTLDCrateManager:spawnCrateAtPoint() |
ctld.cratesInZone(zone, flagNumber) |
CTLDCrateManager:startCrateCountWatcher() |
Exemple — spawn d'un crate sur une trigger zone :
ctld.spawnCrateAtZone(coalition.side.BLUE, 800, "FARP_BRAVO")
L'argument weight sélectionne le crate à spawner. Voir le
Catalogue des crates pour les définitions de crates disponibles.
Radio beacon¶
| Fonction v1 | Délègue à |
|---|---|
ctld.createRadioBeaconAtZone(zone, coalition, batteryLife, name) |
CTLDBeaconManager:createAtZone() |
JTAC¶
| Fonction v1 | Délègue à |
|---|---|
ctld.JTACAutoLase(jtacGroupName, laserCode, smoke, lock, colour, radio) |
CTLDJTACManager:autoLase() |
ctld.JTACStart(jtacGroupName, laserCode, smoke, lock, colour, radio) |
CTLDJTACManager:startLase() |
ctld.JTACAutoLaseStop(jtacGroupName) |
CTLDJTACManager:stopAutoLase() |
Exemple — auto-lase sur un groupe blindé ennemi, puis arrêt :
ctld.JTACAutoLase("ENEMY_ARMOUR_1", 1688, true)
-- ... une fois la frappe terminée :
ctld.JTACAutoLaseStop("ENEMY_ARMOUR_1")
Callbacks¶
En v1, les scripts externes enregistraient un callback avec ctld.addCallback(fn) pour réagir
aux événements CTLD. Cette fonction n'est pas fournie en v2 — il n'existe aucun wrapper de
compatibilité. Abonnez-vous plutôt au dispatcher d'événements v2 :
EventDispatcher.getInstance():subscribe("OnCrateSpawned", function(event)
-- réagir à l'événement
end)
Les événements disponibles incluent OnCrateSpawned, OnCrateLoaded, OnCrateUnloaded,
OnCrateUnpacked, OnVehiclePacked, OnTroopsBoarded, OnTroopsDeployed,
OnTroopsExtracted, OnJTACSpawned, OnLaseStart, OnLaseStop, OnBeaconDropped et
OnFOBDeployed. Le guide Migration v1 → v2 liste le
catalogue complet des événements ainsi que le mapping callback-vers-événement.