66 Commits

Author SHA1 Message Date
David Pierron
adc9aa110b Merge pull request #129 from ciribob/bugfix/BF-2025.01.04
## Bugfix/BF-2025.01.04
- removed unneeded tracing in ctld.i18n_translate() 
- bug: corrected listNearbyCrates() method not returning anything 
- bug: corrected ctld.dropSlingCrate() method crashing before unloading a crate
- bug: corrected the way we handle dynamic slots; it used to cause random CTDs
2025-01-07 13:47:00 +01:00
David Pierron
9d101faf20 updated the test and demo missions 2025-01-07 13:42:05 +01:00
David Pierron
af7e5c5eb4 bug: corrected the way we handle dynamic slots; it used to cause random CTDs 2025-01-07 13:41:56 +01:00
David Pierron
e6e89e2290 bug: corrected ctld.dropSlingCrate() method crashing before unloading a crate 2025-01-04 22:01:50 +01:00
David Pierron
c84b937e99 bug: corrected listNearbyCrates() method not returning anything 2025-01-04 22:01:19 +01:00
David Pierron
a5eb3b2609 removed unneeded tracing in ctld.i18n_translate() 2025-01-04 22:00:53 +01:00
David Pierron
c615ffb644 Merge pull request #128 from ciribob:bugfix/BF-2025.01.04
v1.2.1 - corrected the behavior of the `ctld.dontInitialize` parameter
2025-01-04 11:28:03 +01:00
David Pierron
2b734e61d2 v1.2.1 - corrected the behavior of the ctld.dontInitialize parameter 2025-01-04 11:26:42 +01:00
David Pierron
c16fb56b5c Merge branch 'FEAT-i18n' into develop 2025-01-03 18:37:01 +01:00
David Pierron
725773ffcd Merge pull request #123 from FullGas1/FEAT-i18n
Update dictionaries + translation F10 menu
2025-01-03 18:34:22 +01:00
David Pierron
55eebb921a Merge pull request #127 from ciribob:FEAT-new-initialization
FEAT-new-initialization
2025-01-03 18:21:32 +01:00
David Pierron
22029da35f Merge branch 'develop' into FEAT-new-initialization 2025-01-03 18:21:20 +01:00
David Pierron
efde6f9507 changed version 2025-01-03 18:17:54 +01:00
David Pierron
5acb8e02db Merge branch 'FEAT-i18n' into develop 2025-01-03 18:16:54 +01:00
David Pierron
b9f0712fdf initialization is now immediate (instead of waiting 2 seconds). Caution: this breaks the way the forward configuration worked before, you'll have to change your code and set ctld.dontInitialize to TRUE in your copy of CTLD. 2025-01-01 18:51:11 +01:00
David Pierron
7f63d017ec Merge pull request #125 from ciribob:FEAT-dynamic-slots
Dynamic slots support
2025-01-01 14:38:22 +01:00
David Pierron
c69314b5f0 - added dynamic slots support in MiST v4.5.128-DYNSLOTS-01 (forked from the official MiST 4.5.128)
- added dynamic slots support in CTLD
- added dyn slots in the test mission
2025-01-01 14:37:45 +01:00
David Pierron
eede0809e3 - reset the non-translated parts (in French and Spanish) to nil for clarity
- renamed the Spanish language using the correct ISO-2 code ("sp" -> "es")
2024-12-29 20:37:43 +01:00
David Pierron
b3acdda651 added documentation 2024-12-29 20:27:09 +01:00
FullGas1
2e7b963b98 Update dictionaries + translation F10 menu 2024-12-29 19:44:30 +01:00
David Pierron
74f706115e i18n: first finished version, letting translators work now 2024-12-29 11:02:45 +01:00
David Pierron
a26c0f6a5d Release 202412.01
**Release 202412.01**

Pulled some code from @atcz, @marcos2221, and @Queton1-1.

Added some features developped internally by the Virtual European Air Force (VEAF) team.

Changelog:
- VEAF: multipart AA Systems / AA crates stacking features
- VEAF: hardened legacy code to make it more resilient (less errors)
- Queton1-1: Allow units to CTLD by aircraft type and not by pilot name
- atcz: Use crate headings to spawn units
- marcos2221: multiple crate capability for mi8 and ch-47
- atcz: added pagination to the radio menus
- atcz: smartly used decimals to facilitate having a lot of units to load in our crates
- atcz: added lots of vehicles to transport
- VEAF: use DCS events to register pilots with CTLD
- VEAF: it's now possible to allow both sling, conventional (DCS, CH-47 only for now) and simulated sling (CTLD) loading at the same time, letting players choose
- VEAF: units capable of conventional loading (CH-47) now have the crates spawned at their 6-o'clock
- moved smoke marker randomly away from the JTAC target
- atcz: updated the soldier type for troops transport
- updated the cargo + troops load report (details the weight)
2024-12-17 17:55:18 +01:00
David Pierron
76a6dca72a updated test mission 2024-12-17 17:54:36 +01:00
David Pierron
55846e3109 hardened the code to avoid a nil value in ctld.setGrpROE 2024-12-17 09:02:41 +01:00
David Pierron
ebf72aaa44 updated test mission 2024-12-10 11:30:48 +01:00
David Pierron
9ff68f6db5 202412.01 RC 2024-12-10 10:35:33 +01:00
David Pierron
416c69b410 updated the documentation (basic changes for december 2024 release) 2024-12-10 10:32:39 +01:00
David Pierron
8e4c2ea4f9 hardened ctld.setGrpROE 2024-12-10 10:11:04 +01:00
David Pierron
4979c7ab1e Merge pull request #118 from atcz:2024-11-review
Cleaned up spaces and formatting, added new crate units and a few fixes
2024-12-10 09:20:14 +01:00
atcz
db40326c11 Add NASAMS to AASystemTemplate 2024-11-18 15:51:29 -08:00
atcz
62e4566cfd Add "Next page" when exceeding the limit for any sub 2024-11-18 07:41:31 -08:00
atcz
5b6d3c3f6c Additions to units, several fixes
- Overhauled crate number/weight system to make it easier to add new units
- Added short range SAM for red and blue
- Added NASAMS and BUK SAM mid range
- Added S-300 SAM long range
- Fixed Hawk component count for rearming
- Use true heading for unpackAASystem
- Only create sub-menus if there are more than 10 items.
2024-11-17 20:36:43 -08:00
atcz
a1f7663a4a Fixed spacing in addTransportF10MenuOptions 2024-11-17 09:01:40 -08:00
atcz
4ede8063f5 Cleaned up extraneous spaces and some formatting 2024-11-17 08:50:41 -08:00
David Pierron
42fd8e5889 paginate crates load submenus, and sort the categories 2024-11-16 20:11:05 +01:00
David Pierron
77ec1f6d18 added bigger troops groups 2024-11-16 20:10:37 +01:00
David Pierron
22f2efdce9 Small corrections 2024-11-15 13:04:35 +01:00
David Pierron
f3b35f2949 Integrate features from RotorOps 2024-11-15 11:11:14 +01:00
David Pierron
90e3432fd4 integrated changes from RotorOps CTLD.lua 2024-11-15 11:00:02 +01:00
David Pierron
e266acaa95 corrected a bug: the units listed in the ctld.transportPilotNames didn't have a F10 menu 2024-11-14 16:17:51 +01:00
David Pierron
504c1bb5f2 Add unit at BIRTH - should fix issue #111
An event handler is now used to trigger the addition of the new unit to the list of transport pilots and the setup of the CTLD radio menu
2024-11-13 23:36:56 +01:00
David Pierron
bc8d4d2cb9 Merge branch 'release-2024-11' of https://github.com/ciribob/DCS-CTLD into release-2024-11 2024-11-13 21:12:24 +01:00
David Pierron
07d37fb7d5 added a margin of error (default 50m) for JTAC smoke. See issue #73 2024-11-13 21:12:11 +01:00
David Pierron
0520c824d8 Logistic units can now be DCS StaticUnits or DCS Units. When their life is at zero (destroyed but not removed from the battlefield), no crate can be spawned anymore.
See issue #50
2024-11-13 21:11:55 +01:00
David Pierron
08af1aff18 Logistic units can now be DCS StaticUnits or DCS Units. When their life is at zero (destroyed but not removed from the battlefield), no crate can be spawned anymore.
See issue Logistics units and fob are still able to spawn crates even though they are destroyed #50
2024-11-13 21:03:22 +01:00
David Pierron
299af17841 allowed all types of crate loading (sling, simulated sling, from menu) at the same time (Issue #69) 2024-11-13 19:01:24 +01:00
David Pierron
f3797a1286 grouped the available crates spawn commands in a single radio menu 2024-11-13 19:00:10 +01:00
David Pierron
8406a743bc Merge pull request #116 from atcz/2024-11-review
Fixes and cleanup for multi-crate
2024-11-11 18:17:19 +01:00
atcz
f96aa3424e Change back to _crateUnitName 2024-11-11 07:13:20 -08:00
atcz
fef17930b9 Fixes and cleanup for multi-crate 2024-11-10 19:02:05 -08:00
David Pierron
1e5a627d63 reset spread values for crates spawning to the default, as suggested by @atcz (thanks) 2024-11-10 18:38:36 +01:00
David Pierron
b1a50daa0b small corrections and release prep (version naming) 2024-11-09 20:56:21 +01:00
David Pierron
a3debfe000 VEAF - AA crates stacking feature:
Allows players to create systems using as many crates as they like
Example : an amount X of patriot launcher crates allows for Y launchers to be deployed, if a player brings 2*X+Z crates (Z being lower then X), then deploys the patriot site, 2*Y launchers will be in the group and Z launcher crate will be left over
2024-11-09 20:13:16 +01:00
David Pierron
4f15513fc8 VEAF - added pagination to the troops load menu when there are too much items to display 2024-11-09 19:43:51 +01:00
David Pierron
5ed1511185 Merge PR #113 2024-11-09 18:55:20 +01:00
David Pierron
2828df2a10 Merge pull request #113 from marcos2221:master
Added multiple crate capability for mi8 and ch-47
2024-11-09 18:51:46 +01:00
David Pierron
b2448048b9 adapted and corrected code 2024-11-09 18:43:46 +01:00
David Pierron
ce69af2843 Merge pull request #95 from Queton1-1:aircraftByType
Allow units to CTLD by aircraft type and not only by pilot name
2024-11-09 11:51:02 +01:00
David Pierron
419dae35fa reset default values to more realistic ones 2024-11-09 11:50:44 +01:00
David Pierron
ff76fddb1f Merge pull request #109 from atcz:crate-headings
Use crate headings to spawn units
2024-11-09 11:33:08 +01:00
Marcos "Tupper" Romero
d041a5cd19 Added multiple crate capability for mi8 and ch-47 2024-08-23 17:17:36 -06:00
atcz
1d1cd3bcae Use crate headings to spawn units
- Set the crate heading to the helo heading when dropped or unloaded
- Use the crate heading when spawning units
- Set the crate heading to 0 if not specified
- Default heading for spawnCrateGroup was 120, but this is radians which is 35.49 degrees.  Changed this to 120 degrees.
2024-05-25 17:41:37 -07:00
Quéton 1-1
9dea93f96a Merge pull request #1 from RexAttaque/aircraftByType
Cleaned up code
2024-01-20 15:57:12 +01:00
RexAttaque
e5a1871673 Transitionned to using the MIST database to add transport pilots at CTLD init 2024-01-19 23:40:53 +01:00
RexAttaque
b9fa2f937e Cleaned up code (local variables, fixed typos, used pairs for loops to have something more compact and modular, added logging) 2024-01-07 00:56:49 +01:00
Quéton 1-1
518224a437 Add ctld.addPlayerAircraftByType
If option true, allow units to CTLD by aircraft type and not by pilot name
2023-10-07 12:36:01 +02:00
7 changed files with 4880 additions and 1207 deletions

2480
CTLD.lua

File diff suppressed because it is too large Load Diff

202
README.md
View File

@@ -3,6 +3,14 @@
Complete Troops and Logistics Deployment for DCS World Complete Troops and Logistics Deployment for DCS World
## License
This script has been created by Ciribob ([contact him on Discord](https://discordapp.com/users/204712384747536384)) and is now maintained by Zip ([contact him on Discord](https://discordapp.com/users/421317390807203850)) and the [VEAF Team](https://www.veaf.org).
It's open-source and free as in free beer (you don't have to pay to use it), and as in free of use (you can use it, modify it and publish a fork if you want, even make a commercial profit). Credit is appreciated where it's due.
We're always looking for help, please reach out to [Zip on Discord](https://discordapp.com/users/421317390807203850) if you want to participate in maintenance or development.
## Contents ## Contents
This script is a rewrite of some of the functionality of the original Complete Combat Troop Transport Script (CTTS) by Geloxo (http://forums.eagle.ru/showthread.php?t=108523), as well as adding new features. This script is a rewrite of some of the functionality of the original Complete Combat Troop Transport Script (CTTS) by Geloxo (http://forums.eagle.ru/showthread.php?t=108523), as well as adding new features.
@@ -12,6 +20,7 @@ This script is a rewrite of some of the functionality of the original Complete C
* [Setup in Mission Editor](#setup-in-mission-editor) * [Setup in Mission Editor](#setup-in-mission-editor)
* [Script Setup](#script-setup) * [Script Setup](#script-setup)
* [Script Configuration](#script-configuration) * [Script Configuration](#script-configuration)
* [Internationalization (multiple languages for text)](#internationalization)
* [Pickup and Dropoff Zones Setup](#pickup-and-dropoff-zones-setup) * [Pickup and Dropoff Zones Setup](#pickup-and-dropoff-zones-setup)
* [Waypoint Zones Setup](#waypoint-zones-setup) * [Waypoint Zones Setup](#waypoint-zones-setup)
* [Transport Unit Setup](#transport-unit-setup) * [Transport Unit Setup](#transport-unit-setup)
@@ -134,7 +143,7 @@ An example is shown below:
The script has lots of configuration options that can be used to further customise the behaviour. The script has lots of configuration options that can be used to further customise the behaviour.
**I have now changed the default behaviour of the script to use Simulated Cargo Sling instead of the Real Cargo Sling due to DCS Bugs causing crashing** **I have now changed the default behaviour of the script to use Simulated Cargo Sling instead of the Real Cargo Sling due to DCS Bugs causing crashing**
To use the real cargo sling behaviour, set the ```ctld.slingLoad``` option to ```true```. To use the real cargo sling behaviour, set the `ctld.slingLoad` option to `true`.
```lua ```lua
@@ -222,7 +231,7 @@ ctld.AASystemLimitBLUE = 20 -- Blue side limit
``` ```
To change what units can be dropped from crates modify the spawnable crates section. An extra parameter, ```cratesRequired = NUMBER``` can be added so you need more than one crate to build a unit. This parameter cannot be used for the HAWK, BUK or KUB system as that is already broken into 3 crates. You can also specify the coalition side so RED and BLUE have different crates to drop. If the parameter is missing the crate will appear for both sides. To change what units can be dropped from crates modify the spawnable crates section. An extra parameter, `cratesRequired = NUMBER` can be added so you need more than one crate to build a unit. This parameter cannot be used for the HAWK, BUK or KUB system as that is already broken into 3 crates. You can also specify the coalition side so RED and BLUE have different crates to drop. If the parameter is missing the crate will appear for both sides.
```--``` in lua means ignore this line :) ```--``` in lua means ignore this line :)
@@ -293,10 +302,36 @@ Example showing what happens if you dont have enough crates:
**Make sure that after making any changes to the script you remove and re-add the script to the mission. ** **Make sure that after making any changes to the script you remove and re-add the script to the mission. **
### Internationalization
CTLD supports multiple languages (English being the base and the reference).
This is done via the `ctld.i18n` table that can be found at the beginning of the script.
#### Changing the language
You can easily switch the language you want CTLD to display its messages and name its radio menus, by changing the `ctld.i18n_lang` parameter to a supported language.
Supported languages are all listed near the parameter in the code, so it's easy to uncomment the line you wish to use.
Example, to set it to French: `ctld.i18n_lang = "fr"`
#### Adding or editing a translation
Translations are referenced by the english text, and can contain numbered parameters that will be replaced (in the calling code) by values.
This allows for different languages placing words at different places in a sentence.
To add a translation, simply copy the complete `ctld.i18n["en"]` table to a new one, and replace the language (`"en"`) with the one you want to add (`"de"` for example).
Then, replace all the `= nil` statements with the translation; for example, `ctld.i18n["de"]["Standard Group"] = "Standard-Kampfgruppe"`.
Finally, switch the CTLD language to the new one you defined (example: `ctld.i18n_lang = "de"`) and test.
Please share your work with the community, contact Zip [on Github](https://github.com/davidp57) or [on Discord](https://discordapp.com/users/421317390807203850).
### Pickup and Dropoff Zones Setup ### Pickup and Dropoff Zones Setup
Pickup zones are used by transport aircraft and helicopters to load troops and vehicles. A transport unit must be inside of the radius of the trigger and the right side (RED or BLUE or BOTH) in order to load troops and vehicles. Pickup zones are used by transport aircraft and helicopters to load troops and vehicles. A transport unit must be inside of the radius of the trigger and the right side (RED or BLUE or BOTH) in order to load troops and vehicles.
The pickup zone needs to be named the same as one of the pickup zones in the ```ctld.pickupZones``` list or the list can be edited to match the name in the mission editor. The pickup zone needs to be named the same as one of the pickup zones in the `ctld.pickupZones` list or the list can be edited to match the name in the mission editor.
Pickup Zones can be configured to limit the number of vehicle or troop groups that can be loaded. To add a limit, edit the 3rd parameter to be any number greater than 0 as shown below. Pickup Zones can be configured to limit the number of vehicle or troop groups that can be loaded. To add a limit, edit the 3rd parameter to be any number greater than 0 as shown below.
@@ -335,19 +370,19 @@ ctld.pickupZones = {
AI transport units will automatically load troops and vehicles when entering a pickup zone as long as they stay in the zone for a few seconds. They do not need to stop to load troops but Aircraft will need to be on the ground in order to load troops. AI transport units will automatically load troops and vehicles when entering a pickup zone as long as they stay in the zone for a few seconds. They do not need to stop to load troops but Aircraft will need to be on the ground in order to load troops.
The number of troops that can be loaded from a pickup zone can be configured by changing ```ctld.numberOfTroops``` which by default is 10. You can also enable troop groups to have RPGs and Stingers / Iglas by ```ctld.spawnRPGWithCoalition``` and ```ctld.spawnStinger```. The number of troops that can be loaded from a pickup zone can be configured by changing `ctld.numberOfTroops` which by default is 10. You can also enable troop groups to have RPGs and Stingers / Iglas by `ctld.spawnRPGWithCoalition` and `ctld.spawnStinger`.
If ```ctld.numberOfTroops``` is 6 or more than the soldier group will consist of: If `ctld.numberOfTroops` is 6 or more than the soldier group will consist of:
- 2 MG Soldiers with M249s or Paratroopers with AKS-74 - 2 MG Soldiers with M249s or Paratroopers with AKS-74
- 2 RPG Soldiers (only on the RED side if ```ctld.spawnRPGWithCoalition``` is ```false``` - 2 RPG Soldiers (only on the RED side if `ctld.spawnRPGWithCoalition` is `false`
- 1 Igla / Stinger - 1 Igla / Stinger
- The rest will be standard soldiers - The rest will be standard soldiers
Example: Example:
![alt text](http://i1056.photobucket.com/albums/t379/cfisher881/Launcher%202015-05-10%2015-22-48-57_zpsc5u7bymy.png~original "Pickup zone") ![alt text](http://i1056.photobucket.com/albums/t379/cfisher881/Launcher%202015-05-10%2015-22-48-57_zpsc5u7bymy.png~original "Pickup zone")
Dropoff zones are used by AI units to automatically unload any loaded troops or vehicles. This will occur as long as the AI unit has some units onboard and stays in the radius of the zone for a few seconds and the zone is named in the ```ctld.dropoffZones``` list. Again units do not need to stop but aircraft need to be on the ground in order to unload the troops. Dropoff zones are used by AI units to automatically unload any loaded troops or vehicles. This will occur as long as the AI unit has some units onboard and stays in the radius of the zone for a few seconds and the zone is named in the `ctld.dropoffZones` list. Again units do not need to stop but aircraft need to be on the ground in order to unload the troops.
If your dropoff zone isn't working, make sure the 3rd parameter, the coalition side, is set correctly. If your dropoff zone isn't working, make sure the 3rd parameter, the coalition side, is set correctly.
@@ -373,14 +408,14 @@ ctld.dropOffZones = {
Smoke can be enabled or disabled individually for pickup or dropoff zones by editing the second column in the list. Smoke can be enabled or disabled individually for pickup or dropoff zones by editing the second column in the list.
Available colours are: Available colours are:
* ```"green"``` * `"green"`
* ```"red"``` * `"red"`
* ```"white"``` * `"white"`
* ```"orange"``` * `"orange"`
* ```"blue"``` * `"blue"`
* ```"none"``` * `"none"`
Smoke can be disabled for all zones regardless of the settings above using the option ```ctld.disableAllSmoke = true``` in the User Configuration part of the script. Smoke can be disabled for all zones regardless of the settings above using the option `ctld.disableAllSmoke = true` in the User Configuration part of the script.
### Waypoint Zones Setup ### Waypoint Zones Setup
@@ -408,17 +443,24 @@ ctld.wpZones = {
Smoke can be enabled or disabled individually for waypoiny zones exactly the same as Pickup and Dropoff zones by editing the second column in the list. Smoke can be enabled or disabled individually for waypoiny zones exactly the same as Pickup and Dropoff zones by editing the second column in the list.
The available colours are: The available colours are:
* ```"green"``` * `"green"`
* ```"red"``` * `"red"`
* ```"white"``` * `"white"`
* ```"orange"``` * `"orange"`
* ```"blue"``` * `"blue"`
* ```"none"``` * `"none"`
Smoke can be disabled for all zones regardless of the settings above using the option ```ctld.disableAllSmoke = true``` in the User Configuration part of the script. Smoke can be disabled for all zones regardless of the settings above using the option `ctld.disableAllSmoke = true` in the User Configuration part of the script.
### Transport Unit Setup ### Transport Unit Setup
Any unit that you want to be able to transport troops needs to have the **"Pilot Name"** in the ```ctld.transportPilotNames``` list. **Player controlled transport units should be in a group of their own and be the only unit in the group, otherwise other players may have radio commands they shouldn't**. The group name isn't important and can be set to whatever you like. A snippet of the list is shown below.
Since the December 2024 release, it's now possible to have transport pilots automatically registered with CTLD (no need to use `ctld.transportPilotNames` anymore). We use the DCS events to dynamically add the CTLD features and radio menu to human players embarking in a CTLD-enabled aircraft.
If you want to use this feature, there are two steps:
- enable `ctld.addPlayerAircraftByType` (set it to `true`)
- (optional) edit the aircraft types list `ctld.aircraftTypeTable` to add the DCS aircrafts you want to auto-register
Any unit that you want to be able to transport troops needs to have the **"Pilot Name"** in the `ctld.transportPilotNames` list. **Player controlled transport units should be in a group of their own and be the only unit in the group, otherwise other players may have radio commands they shouldn't**. The group name isn't important and can be set to whatever you like. A snippet of the list is shown below.
If the unit is player controlled, troops have to be manually loaded when in a pickup zone, AI units will auto load troops in a pickup zone. If the unit is player controlled, troops have to be manually loaded when in a pickup zone, AI units will auto load troops in a pickup zone.
@@ -435,7 +477,7 @@ ctld.transportPilotNames = {
"helicargo9", "helicargo9",
"helicargo10", "helicargo10",
} }
``` `
Example for C-130: Example for C-130:
![alt text](http://i1056.photobucket.com/albums/t379/cfisher881/Launcher%202015-05-10%2015-26-26-40_zpswy4s4p7p.png~original "C-130FR") ![alt text](http://i1056.photobucket.com/albums/t379/cfisher881/Launcher%202015-05-10%2015-26-26-40_zpswy4s4p7p.png~original "C-130FR")
@@ -448,7 +490,7 @@ Example for AI APC:
### Logistic Setup ### Logistic Setup
Logistic crates can also be spawned by Player-controlled Transport Helicopters, as long as they are near a friendly logistic unit listed in ```ctld.logisticUnits```. The distance that the heli's can spawn crates at can be configured at the top of the script. Any static object can be used for Logistics. Logistic crates can also be spawned by Player-controlled Transport Helicopters, as long as they are near a friendly logistic unit listed in `ctld.logisticUnits`. The distance that the heli's can spawn crates at can be configured at the top of the script. Any static object can be used for Logistics.
```lua ```lua
ctld.logisticUnits = { ctld.logisticUnits = {
@@ -478,12 +520,13 @@ You can also preload troops into AI transports once the CTLD script has been loa
* number of troops / vehicles to load * number of troops / vehicles to load
* true means load with troops, false means load with vehicles * true means load with troops, false means load with vehicles
If you try to load vehicles into anything other than a unit listed in ```ctld.vehicleTransportEnabled```, they won't be able to deploy them. If you try to load vehicles into anything other than a unit listed in `ctld.vehicleTransportEnabled`, they won't be able to deploy them.
```lua ```lua
ctld.preLoadTransport("helicargo1", 10,true) ctld.preLoadTransport("helicargo1", 10,true)
``` ```
#### Create Extractable Groups without Pickup Zone #### Create Extractable Groups without Pickup Zone
You can also make existing mission editor groups extractable by adding their group name to the ```ctld.extractableGroups``` list You can also make existing mission editor groups extractable by adding their group name to the `ctld.extractableGroups` list
#### Spawn Extractable Groups without Pickup Zone at a Trigger Zone #### Spawn Extractable Groups without Pickup Zone at a Trigger Zone
You can also spawn extractable infantry groups at a specified trigger zone using the code below. You can also spawn extractable infantry groups at a specified trigger zone using the code below.
@@ -497,38 +540,44 @@ The parameters are:
```lua ```lua
ctld.spawnGroupAtTrigger("red", 10, "spawnTrigger", 1000) ctld.spawnGroupAtTrigger("red", 10, "spawnTrigger", 1000)
``` ```
or or
```lua ```lua
ctld.spawnGroupAtTrigger("blue", 5, "spawnTrigger2", 2000) ctld.spawnGroupAtTrigger("blue", 5, "spawnTrigger2", 2000)
``` ```
or or
```lua ```lua
ctld.spawnGroupAtTrigger("blue", {mg=1,at=2,aa=3,inf=4,mortar=5}, "spawnTrigger2", 2000) ctld.spawnGroupAtTrigger("blue", {mg=1,at=2,aa=3,inf=4,mortar=5}, "spawnTrigger2", 2000)
-- Spawns 1 machine gun, 2 anti tank, 3 anti air, 4 standard soldiers and 5 mortars -- Spawns 1 machine gun, 2 anti tank, 3 anti air, 4 standard soldiers and 5 mortars
``` ```
#### Spawn Extractable Groups without Pickup Zone at a Point #### Spawn Extractable Groups without Pickup Zone at a Point
You spawn extractable infantry groups at a specified Vec3 point ```{x=1,y=2,z=3}``` using the code below. You spawn extractable infantry groups at a specified Vec3 point `{x=1,y=2,z=3}` using the code below.
The parameters are: The parameters are:
* group side (red or blue) * group side (red or blue)
* number of troops to spawn OR Group Description * number of troops to spawn OR Group Description
* Vec3 point ```{x=1,y=2,z=3}``` * Vec3 point `{x=1,y=2,z=3}`
* the distance the troops should search for enemies on spawning in meters * the distance the troops should search for enemies on spawning in meters
```lua ```lua
ctld.spawnGroupAtPoint("red", 10, {x=1,y=2,z=3}, 1000) ctld.spawnGroupAtPoint("red", 10, {x=1,y=2,z=3}, 1000)
``` ```
or or
```lua ```lua
ctld.spawnGroupAtPoint("blue", 5, {x=1,y=2,z=3}, 2000) ctld.spawnGroupAtPoint("blue", 5, {x=1,y=2,z=3}, 2000)
``` ```
or or
```lua ```lua
ctld.spawnGroupAtPoint("blue", {mg=1,at=2,aa=3,inf=4,mortar=5}, {x=1,y=2,z=3}, 2000) ctld.spawnGroupAtPoint("blue", {mg=1,at=2,aa=3,inf=4,mortar=5}, {x=1,y=2,z=3}, 2000)
-- Spawns 1 machine gun, 2 anti tank, 3 anti air, 4 standard soldiers and 5 mortars -- Spawns 1 machine gun, 2 anti tank, 3 anti air, 4 standard soldiers and 5 mortars
``` ```
#### Activate / Deactivate Pickup Zone #### Activate / Deactivate Pickup Zone
@@ -537,7 +586,9 @@ You can activate and deactivate a pickup zone as shown below. When a zone is act
```lua ```lua
ctld.activatePickupZone("pickzone3") ctld.activatePickupZone("pickzone3")
``` ```
or or
```lua ```lua
ctld.deactivatePickupZone("pickzone3") ctld.deactivatePickupZone("pickzone3")
``` ```
@@ -548,11 +599,8 @@ In the configuration of a pickup zone / pickup ship you can limit the number of
Call the function below to add or remove groups from the remaining groups at a zone. Call the function below to add or remove groups from the remaining groups at a zone.
```lua ```lua
ctld.changeRemainingGroupsForPickupZone("pickup1", 5) -- adds 5 groups for zone or ship pickup1 ctld.changeRemainingGroupsForPickupZone("pickup1", 5) -- adds 5 groups for zone or ship pickup1
ctld.changeRemainingGroupsForPickupZone("pickup1", -3) -- remove 3 groups for zone or ship pickup1 ctld.changeRemainingGroupsForPickupZone("pickup1", -3) -- remove 3 groups for zone or ship pickup1
``` ```
#### Activate / Deactivate Waypoint Zone #### Activate / Deactivate Waypoint Zone
@@ -561,7 +609,9 @@ You can activate and deactivate a waypoint zone as shown below. When a waypoint
```lua ```lua
ctld.activateWaypointZone("wpzone1") ctld.activateWaypointZone("wpzone1")
``` ```
or or
```lua ```lua
ctld.deactivateWaypointZone("wpzone1") ctld.deactivateWaypointZone("wpzone1")
``` ```
@@ -588,11 +638,11 @@ ctld.unloadInProximityToEnemy("helicargo1",500) --distance is 500
``` ```
#### Create Radio Beacon at Zone #### Create Radio Beacon at Zone
A radio beacon can be spawned at any zone by adding a Trigger Once with a Time More set to any time after the CTLD script has been loaded and a DO SCRIPT action of ```ctld.createRadioBeaconAtZone("beaconZone","red", 1440,"Waypoint 1")``` A radio beacon can be spawned at any zone by adding a Trigger Once with a Time More set to any time after the CTLD script has been loaded and a DO SCRIPT action of `ctld.createRadioBeaconAtZone("beaconZone","red", 1440,"Waypoint 1")`
Where ```"beaconZone"``` is the name of a Trigger Zone added using the mission editor, ```"red"``` is the side to add the beacon for and ```1440``` the time in minutes for the beacon to broadcast for. An optional parameter can be added at the end which can be used to name the beacon and the name will appear in the beacon list. Where `"beaconZone"` is the name of a Trigger Zone added using the mission editor, `"red"` is the side to add the beacon for and `1440` the time in minutes for the beacon to broadcast for. An optional parameter can be added at the end which can be used to name the beacon and the name will appear in the beacon list.
```ctld.createRadioBeaconAtZone("beaconZoneBlue","blue", 20)``` will create a beacon at trigger zone named ```"beaconZoneBlue"``` for the Blue coalition that will last 20 minutes and have an auto generated name. `ctld.createRadioBeaconAtZone("beaconZoneBlue","blue", 20)` will create a beacon at trigger zone named `"beaconZoneBlue"` for the Blue coalition that will last 20 minutes and have an auto generated name.
Spawned beacons will broadcast on HF/FM, UHF and VHF until their battery runs out and can be used by most aircraft for ADF. The frequencies used on each frequency will be random. Spawned beacons will broadcast on HF/FM, UHF and VHF until their battery runs out and can be used by most aircraft for ADF. The frequencies used on each frequency will be random.
@@ -603,24 +653,24 @@ An extact zone is a zone where troops (not vehicles) can be dropped by transport
When troops are dropped, the troops disappear and the number of troops dropped added to the flag number configured by the function. This means you can make a trigger such that 10 troops have to be rescued and dropped at the extract zone, and when this happens you can trigger another action. When troops are dropped, the troops disappear and the number of troops dropped added to the flag number configured by the function. This means you can make a trigger such that 10 troops have to be rescued and dropped at the extract zone, and when this happens you can trigger another action.
An Extraction zone can be created by adding a Trigger Once with a Time More set to any time after the CTLD script has been loaded and a DO SCRIPT action of ```ctld.createExtractZone("extractzone1", 2, -1)``` An Extraction zone can be created by adding a Trigger Once with a Time More set to any time after the CTLD script has been loaded and a DO SCRIPT action of `ctld.createExtractZone("extractzone1", 2, -1)`
Where ```"extractzone1"``` is the name of a Trigger Zone added using the mission editor, ```2``` is the flag where we want the total number of troops dropped in a zone added and ```-1``` the smoke colour. Where `"extractzone1"` is the name of a Trigger Zone added using the mission editor, `2` is the flag where we want the total number of troops dropped in a zone added and `-1` the smoke colour.
The settings for smoke are: Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4, NO SMOKE = -1 The settings for smoke are: Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4, NO SMOKE = -1
An extract zone can be removed by using DO SCRIPT action of ```ctld.removeExtractZone("extractzone1", 2)```. Where again ```"extractzone1"``` is the name of a Trigger Zone added using the mission editor, ```2``` is the flag An extract zone can be removed by using DO SCRIPT action of `ctld.removeExtractZone("extractzone1", 2)`. Where again `"extractzone1"` is the name of a Trigger Zone added using the mission editor, `2` is the flag
The smoke for the extract zone will take up to 5 minutes to disappate. The smoke for the extract zone will take up to 5 minutes to disappate.
#### Count Extractable UNITS in zone #### Count Extractable UNITS in zone
You can count the number of extractable UNITS in a zone using: ```ctld.countDroppedUnitsInZone(_zone, _blueFlag, _redFlag)``` as a DO SCRIPT of a CONTINUOUS TRIGGER. You can count the number of extractable UNITS in a zone using: `ctld.countDroppedUnitsInZone(_zone, _blueFlag, _redFlag)` as a DO SCRIPT of a CONTINUOUS TRIGGER.
Where ```_zone``` is the zone name, ```_blueFlag``` is the flag to store the count of Blue units in and ```_redFlag``` is the flag to store the count of red units in Where `_zone` is the zone name, `_blueFlag` is the flag to store the count of Blue units in and `_redFlag` is the flag to store the count of red units in
#### Count Extractable GROUPS in zone #### Count Extractable GROUPS in zone
You can count the number of extractable GROUPS in a zone using: ```ctld.countDroppedGroupsInZone(_zone, _blueFlag, _redFlag)``` as a DO SCRIPT of a CONTINUOUS TRIGGER. You can count the number of extractable GROUPS in a zone using: `ctld.countDroppedGroupsInZone(_zone, _blueFlag, _redFlag)` as a DO SCRIPT of a CONTINUOUS TRIGGER.
Where ```_zone``` is the zone name, ```_blueFlag``` is the flag to store the count of Blue groups in and ```_redFlag``` is the flag to store the count of red groups in Where `_zone` is the zone name, `_blueFlag` is the flag to store the count of Blue groups in and `_redFlag` is the flag to store the count of red groups in
#### Create Crate Drop Zone #### Create Crate Drop Zone
A crate drop zone is a zone where the number of crates in a zone in counted every 5 seconds and the current amount stored in a flag specified by the script. A crate drop zone is a zone where the number of crates in a zone in counted every 5 seconds and the current amount stored in a flag specified by the script.
@@ -631,9 +681,9 @@ The flag number can be used to trigger other actions added using the mission edi
**Crates added by the Mission Editor can now be used as well!** **Crates added by the Mission Editor can now be used as well!**
A crate drop zone can be added to any zone by adding a Trigger Once with a Time More set to any time after the CTLD script has been loaded and a DO SCRIPT action of ```ctld.cratesInZone("crateZone",1)``` A crate drop zone can be added to any zone by adding a Trigger Once with a Time More set to any time after the CTLD script has been loaded and a DO SCRIPT action of `ctld.cratesInZone("crateZone",1)`
Where ```"crateZone"``` is the name of a Trigger Zone added using the mission editor, and ```1``` is the number of the flag where the current number of crates in the zone will be stored. Where `"crateZone"` is the name of a Trigger Zone added using the mission editor, and `1` is the number of the flag where the current number of crates in the zone will be stored.
#### Spawn Sling loadable crate at a Zone #### Spawn Sling loadable crate at a Zone
You can spawn a sling loadable crate at a specified trigger zone using the code below: You can spawn a sling loadable crate at a specified trigger zone using the code below:
@@ -645,10 +695,13 @@ The parameters are:
```lua ```lua
ctld.spawnCrateAtZone("blue", 500, "crateSpawnTrigger") -- spawns a BLUE coalition HMMWV at the trigger zone "crateSpawnTrigger" ctld.spawnCrateAtZone("blue", 500, "crateSpawnTrigger") -- spawns a BLUE coalition HMMWV at the trigger zone "crateSpawnTrigger"
``` ```
or or
```lua ```lua
ctld.spawnCrateAtZone("red", 500, "crateSpawnTrigger") -- spawns a RED coalition HMMWV at the trigger zone "crateSpawnTrigger" ctld.spawnCrateAtZone("red", 500, "crateSpawnTrigger") -- spawns a RED coalition HMMWV at the trigger zone "crateSpawnTrigger"
``` ```
#### Spawn Sling loadable crate at a Point #### Spawn Sling loadable crate at a Point
You can spawn a sling loadable crate at a specified point using the code below: You can spawn a sling loadable crate at a specified point using the code below:
@@ -666,7 +719,7 @@ ctld.spawnCrateAtPoint("blue",500, {x=20, y=10,z=20}) -- spawns a RED coalition
#### JTAC Automatic Targeting and Laser #### JTAC Automatic Targeting and Laser
This script has been merged with https://github.com/ciribob/DCS-JTACAutoLaze . JTACs can either be deployed by Helicopters and configured with the options in the script or pre added to the mission. By default each side can drop 5 JTACs. This script has been merged with https://github.com/ciribob/DCS-JTACAutoLaze . JTACs can either be deployed by Helicopters and configured with the options in the script or pre added to the mission. By default each side can drop 5 JTACs.
The JTAC Script configuration is shown below and can easily be disabled using the ```ctld.JTAC_dropEnabled``` option. The JTAC Script configuration is shown below and can easily be disabled using the `ctld.JTAC_dropEnabled` option.
```lua ```lua
-- ***************** JTAC CONFIGURATION ***************** -- ***************** JTAC CONFIGURATION *****************
@@ -698,10 +751,9 @@ ctld.JTAC_allowStandbyMode = true -- Allow players to toggle lasing on/off
ctld.JTAC_laseSpotCorrections = true -- Allow players to toggle on/off the JTAC leading it's target, taking into account current wind conditions and the speed of the target (particularily useful against moving heavy armor) ctld.JTAC_laseSpotCorrections = true -- Allow players to toggle on/off the JTAC leading it's target, taking into account current wind conditions and the speed of the target (particularily useful against moving heavy armor)
ctld.JTAC_allowSmokeRequest = true -- Allow players to request a smoke on target (temporary) ctld.JTAC_allowSmokeRequest = true -- Allow players to request a smoke on target (temporary)
ctld.JTAC_allow9Line = true -- Allow players to ask for a 9Line (individual) for a specific JTAC's target ctld.JTAC_allow9Line = true -- Allow players to ask for a 9Line (individual) for a specific JTAC's target
``` ```
To make a unit deployed from a crate into a JTAC unit, add the type to the ```ctld.jtacUnitTypes``` list. To make a unit deployed from a crate into a JTAC unit, add the type to the `ctld.jtacUnitTypes` list.
The script allows a JTAC to mark and hold an IR and Laser point on a target allowing TGP's to lock onto the lase and ease of target location using NV Goggles. The script allows a JTAC to mark and hold an IR and Laser point on a target allowing TGP's to lock onto the lase and ease of target location using NV Goggles.
@@ -752,31 +804,37 @@ You can also override global settings set in the script like so:
```lua ```lua
ctld.JTACAutoLase('JTAC1', 1688, false,"all") ctld.JTACAutoLase('JTAC1', 1688, false,"all")
``` ```
This means no smoke marks for this JTAC and it will target all ground troops This means no smoke marks for this JTAC and it will target all ground troops
```lua ```lua
ctld.JTACAutoLase('JTAC1', 1688, true,"vehicle") ctld.JTACAutoLase('JTAC1', 1688, true,"vehicle")
``` ```
This smoke marks for this JTAC and it will target ONLY ground vehicles This smoke marks for this JTAC and it will target ONLY ground vehicles
```lua ```lua
ctld.JTACAutoLase('JTAC1', 1688, true,"troop") ctld.JTACAutoLase('JTAC1', 1688, true,"troop")
``` ```
This means smoke marks are enabled for this JTAC and it will target ONLY ground troops This means smoke marks are enabled for this JTAC and it will target ONLY ground troops
```lua ```lua
ctld.JTACAutoLase('JTAC1', 1688, true,"troop",1) ctld.JTACAutoLase('JTAC1', 1688, true,"troop",1)
``` ```
This means smoke marks are enabled for this JTAC and it will target ONLY ground troops AND smoke colour will be Red This means smoke marks are enabled for this JTAC and it will target ONLY ground troops AND smoke colour will be Red
```lua ```lua
ctld.JTACAutoLase('JTAC1', 1688, true,"troop",0) ctld.JTACAutoLase('JTAC1', 1688, true,"troop",0)
``` ```
This means smoke marks are enabled for this JTAC and it will target ONLY ground troops AND smoke colour will be Green This means smoke marks are enabled for this JTAC and it will target ONLY ground troops AND smoke colour will be Green
```lua ```lua
ctld.JTACAutoLase('JTAC1', 1688, true,"all", 4) ctld.JTACAutoLase('JTAC1', 1688, true,"all", 4)
``` ```
This means no smoke marks for this JTAC and it will target all ground troops AND mark with Blue smoke This means no smoke marks for this JTAC and it will target all ground troops AND mark with Blue smoke
Smoke colours are: Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4 Smoke colours are: Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4
@@ -793,6 +851,7 @@ To do this, you can specify the _radio parameter when calling ctld.JTACAutoLase
```lua ```lua
ctld.JTACAutoLase('JTAC1', 1688, true,"all", 4, { freq = "251.50", mod = "AM", name = "JTAC one" }) ctld.JTACAutoLase('JTAC1', 1688, true,"all", 4, { freq = "251.50", mod = "AM", name = "JTAC one" })
``` ```
If you don't use the _radio parameter, CTLD will compute a FM frequency based on the laser designator code : 30Mhz + [second figure of the code] + [last two figures of the code] * 0.05. If you don't use the _radio parameter, CTLD will compute a FM frequency based on the laser designator code : 30Mhz + [second figure of the code] + [last two figures of the code] * 0.05.
For example, if the laser code is *1688*, the frequency will be *40.40Mhz*. For example, if the laser code is *1688*, the frequency will be *40.40Mhz*.
@@ -805,11 +864,11 @@ Troops can be loaded and unloaded using the F10 Menu. Troops can only be loaded
AI transports will display a message when they Auto load and deploy troops in the field. AI units won't pickup already deployed troops so as not to interfere with players. AI transports will display a message when they Auto load and deploy troops in the field. AI units won't pickup already deployed troops so as not to interfere with players.
The C130 / IL-76 gets an extra radio option for loading and deploying vehicles. By default the C-130 can pickup and deploy a HMMWV TOW and HMMWV MG. This can be changed by editing ```ctld.vehiclesForTransportBLUE``` for BLUE coalition forces or ```ctld.vehiclesForTransportRED``` for RED coalition forces. The C130 / IL-76 gets an extra radio option for loading and deploying vehicles. By default the C-130 can pickup and deploy a HMMWV TOW and HMMWV MG. This can be changed by editing `ctld.vehiclesForTransportBLUE` for BLUE coalition forces or `ctld.vehiclesForTransportRED` for RED coalition forces.
The C-130 / IL-76 can also load and unload FOB crates from a Logistics area, see FOB Construction for more details. The C-130 / IL-76 can also load and unload FOB crates from a Logistics area, see FOB Construction for more details.
Different Troop Groups can be loaded from a pickup zone. The ```ctld.loadableGroups``` list can be modified if you want to change the loadable groups. Different Troop Groups can be loaded from a pickup zone. The `ctld.loadableGroups` list can be modified if you want to change the loadable groups.
```lua ```lua
@@ -831,7 +890,6 @@ ctld.loadableGroups = {
{name = "Mortar Squad", mortar = 6 }, {name = "Mortar Squad", mortar = 6 },
-- {name = "Mortar Squad Red", inf = 2, mortar = 5, side =1 }, --would make a group loadable by RED only -- {name = "Mortar Squad Red", inf = 2, mortar = 5, side =1 }, --would make a group loadable by RED only
} }
``` ```
The infantry groups have a weight, too. It is calculated based on the soldiers' roles, and the weight of their kit The infantry groups have a weight, too. It is calculated based on the soldiers' roles, and the weight of their kit
@@ -859,8 +917,14 @@ ctld.JTAC_WEIGHT = 15 -- kg
Cargo can be spawned by transport helicopters if they are close enough to a friendly logistics unit using the F10 menu. Crates are always spawned off the nose of the unit that requested them. Cargo can be spawned by transport helicopters if they are close enough to a friendly logistics unit using the F10 menu. Crates are always spawned off the nose of the unit that requested them.
Since the December 2024 release, it's now possible to configure CTLD to allow *all* the loading modes simultaneously:
- conventional (DCS) if using an aircraft listed in `ctld.dynamicCargoUnits`,
- sling loading (DCS) if `ctld.slingLoad` is set to `true`,
- simulated sling loading (CTLD) if `ctld.hoverPickup` is set to `true`,
- simplified loading (CTLD) if `ctld.loadCrateFromMenu` is set to `true`
### Simulated Sling Loading ### Simulated Sling Loading
If ```ctld.slingLoad = false``` then Simulated Sling Loading will be used. This option is now the default due to DCS crashes caused by Sling Loading on multiplayer. Simulated sling loads will not add and weight to your helicopter when loaded. If `ctld.slingLoad = false` then Simulated Sling Loading will be used. This option is now the default due to DCS crashes caused by Sling Loading on multiplayer. Simulated sling loads will not add and weight to your helicopter when loaded.
To pickup a Sling Load, spawn the cargo you want and hover above the crate for 10 seconds. There is no need to select which crate you want to pickup. Status messages will tell you if you are too high or too low. If the countdown stops, it means you are no longer hovering in the correct position and the timer will reset. To pickup a Sling Load, spawn the cargo you want and hover above the crate for 10 seconds. There is no need to select which crate you want to pickup. Status messages will tell you if you are too high or too low. If the countdown stops, it means you are no longer hovering in the correct position and the timer will reset.
@@ -885,7 +949,7 @@ Once you've loaded the crate, fly to where you want to drop it and drop using th
Once on the ground unpack as normal using the CTLD Commands Menu - CTLD->CTLD Commands->Unpack Crate Once on the ground unpack as normal using the CTLD Commands Menu - CTLD->CTLD Commands->Unpack Crate
**Note: You can also set ```ctld.hoverPickup = false``` so you can load crates using the F10 menu instead of Hovering; or keep ```ctld.hoverPickup = true``` and set ```ctld.loadCrateFromMenu = true``` so you can load the crates by hovering OR from the F10 menu** **Note: You can also set `ctld.hoverPickup = false` so you can load crates using the F10 menu instead of Hovering; or keep `ctld.hoverPickup = true` and set `ctld.loadCrateFromMenu = true` so you can load the crates by hovering OR from the F10 menu**
### Real Sling Loading ### Real Sling Loading
@@ -907,13 +971,17 @@ You can also list nearby crates that have yet to be unpacked using the F10 CTLD
*Crate damage in the script is currently not implemented so as long as the crate isn't destroyed, you should always be able to unpack.* *Crate damage in the script is currently not implemented so as long as the crate isn't destroyed, you should always be able to unpack.*
**If you experience crashes with Sling-loading, such as a game crash when shotdown, you can use the simulated sling-load behaviour instead to work around the DCS Bugs.** **If you experience crashes with Sling-loading, such as a game crash when shotdown, you can use the simulated sling-load behaviour instead to work around the DCS Bugs.**
To use the simulated behaviour, set the ```ctld.slingLoad``` option to ```false```. To use the simulated behaviour, set the `ctld.slingLoad` option to `false`.
The simulated Sling Loading will use a Generator static object instead of a crate and you just hover above it for 10 seconds to load it. No Need to use the F6 menu to first select the crate. The simulated Sling Loading will use a Generator static object instead of a crate and you just hover above it for 10 seconds to load it. No Need to use the F6 menu to first select the crate.
The crate can then be dropped using the CTLD Commands section of the Radio menu. Make sure you're not too high when the crate is dropped or it will be destroyed! The crate can then be dropped using the CTLD Commands section of the Radio menu. Make sure you're not too high when the crate is dropped or it will be destroyed!
Unfortunately there is no way to simulate the added weight of the Simulated Sling Load. Unfortunately there is no way to simulate the added weight of the Simulated Sling Load.
### DCS conventional loading
For aircrafts capable of this feature (CH-47 only for now, see `ctld.dynamicCargoUnits`), pilots can load and unload crates in their hold via the conventional DCS "rearm and refuel" dialog.
## Crate Unpacking ## Crate Unpacking
Once you have sling loaded and successfully dropped your crate, you can land and list nearby crates that have yet to be unpacked using the F10 Crate Commands Menu, as well as unpack nearby crates using the same menu. Crates cannot be unpacked near a logistics unit. Once you have sling loaded and successfully dropped your crate, you can land and list nearby crates that have yet to be unpacked using the F10 Crate Commands Menu, as well as unpack nearby crates using the same menu. Crates cannot be unpacked near a logistics unit.
@@ -959,7 +1027,7 @@ You will get a position as well as a UHF / VHF frequency that the Huey / Mi-8 (V
## Radio Beacon Deployment ## Radio Beacon Deployment
Radio beacons can be dropped by any transport unit and there is no enforced limit on the number of beacons that can be dropped. There is however a finite limit of available frequencies so don't drop too many or you won't be able to distinguise the beacons from one another. Radio beacons can be dropped by any transport unit and there is no enforced limit on the number of beacons that can be dropped. There is however a finite limit of available frequencies so don't drop too many or you won't be able to distinguise the beacons from one another.
By default a beacon will disappear after 15 minutes, when it's battery runs out. FOB beacons will never run out power. You can give the beacon more time by editing the ```ctld.deployedBeaconBattery``` setting. By default a beacon will disappear after 15 minutes, when it's battery runs out. FOB beacons will never run out power. You can give the beacon more time by editing the `ctld.deployedBeaconBattery` setting.
To deploy a beacon you must be on the ground and then use the F10 radio menu. The beacons are under the Radio Beacons section in CTLD. Once a beacon has been dropped, the frequencies can also be listed using the CTLD - > Radio Beacons -> List Radio Beacons command. To deploy a beacon you must be on the ground and then use the F10 radio menu. The beacons are under the Radio Beacons section in CTLD. Once a beacon has been dropped, the frequencies can also be listed using the CTLD - > Radio Beacons -> List Radio Beacons command.
@@ -1048,17 +1116,17 @@ end)
Below is a complete list of all the "actions" plus the data that is sent through. For more information its best to check the CTLD Code to see more details of the arguments. Below is a complete list of all the "actions" plus the data that is sent through. For more information its best to check the CTLD Code to see more details of the arguments.
* ```{unit = "Unit that did the action", unloaded = "DCS Troops Group", action = "dropped_troops"}``` * `{unit = "Unit that did the action", unloaded = "DCS Troops Group", action = "dropped_troops"}`
* ```{unit = "Unit that did the action", unloaded = "DCS Vehicles Group", action = "dropped_vehicles"}``` * `{unit = "Unit that did the action", unloaded = "DCS Vehicles Group", action = "dropped_vehicles"}`
* ```{unit = "Unit that did the action", unloaded = "List of picked up vehicles", action = "load_vehicles"}``` * `{unit = "Unit that did the action", unloaded = "List of picked up vehicles", action = "load_vehicles"}`
* ```{unit = "Unit that did the action", unloaded = "List of picked up troops", action = "load_troops"}``` * `{unit = "Unit that did the action", unloaded = "List of picked up troops", action = "load_troops"}`
* ```{unit = "Unit that did the action", unloaded = "List of dropped troops", action = "unload_troops_zone"}``` * `{unit = "Unit that did the action", unloaded = "List of dropped troops", action = "unload_troops_zone"}`
* ```{unit = "Unit that did the action", unloaded = "List of dropped vehicles", action = "unload_vehicles_zone"}``` * `{unit = "Unit that did the action", unloaded = "List of dropped vehicles", action = "unload_vehicles_zone"}`
* ```{unit = "Unit that did the action", extracted = "DCS Troops Group", action = "extract_troops"}``` * `{unit = "Unit that did the action", extracted = "DCS Troops Group", action = "extract_troops"}`
* ```{unit = "Unit that did the action", extracted = "DCS Vehicles Group", action = "extract_vehicles"}``` * `{unit = "Unit that did the action", extracted = "DCS Vehicles Group", action = "extract_vehicles"}`
* ```{unit = "Unit that did the action",position = "Point of FOB", action = "fob" }``` * `{unit = "Unit that did the action",position = "Point of FOB", action = "fob" }`
* ```{unit = "Unit that did the action",crate = "Crate Details", spawnedGroup = "Group rearmed by crate", action = "rearm"}``` * `{unit = "Unit that did the action",crate = "Crate Details", spawnedGroup = "Group rearmed by crate", action = "rearm"}`
* ```{unit = "Unit that did the action",crate = "Crate Details", spawnedGroup = "Group spawned by crate", action = "unpack"}``` * `{unit = "Unit that did the action",crate = "Crate Details", spawnedGroup = "Group spawned by crate", action = "unpack"}`
* ```{unit = "Unit that did the action",crate = "Crate Details", spawnedGroup = "Group repaired by crate", action = "repair"}``` * `{unit = "Unit that did the action",crate = "Crate Details", spawnedGroup = "Group repaired by crate", action = "repair"}`
[dynamic_loading]: trigger-dynamic-loading.png [dynamic_loading]: trigger-dynamic-loading.png

BIN
demo-mission.miz Normal file

Binary file not shown.

3405
mist.lua

File diff suppressed because it is too large Load Diff

BIN
test-dev-dynamic.miz Normal file

Binary file not shown.

BIN
test-dev-static.miz Normal file

Binary file not shown.

Binary file not shown.