151 Commits

Author SHA1 Message Date
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
David Pierron
7edb23f555 Release 2024-01
Many changes:
- Added framework/menu for JTAC special options (toggle on/off or requests)
- Added 9 Line, Smoke on TGT. Toggle lasing, Toggle speed/wind corrections special options
- Reworked the JTAC pagination system to fully utilize F1-F9 entries
- Reworked refresh for JTAC radio menus, any action triggers a refresh for a JTAC and otherwise it stays for 2min (Mitigation of the radio menu overlap when refreshing while the player is already in the radio menu)
- Bug fixes here and there regarding the criterias to display or not the target list of a JTAC and it's special options
- Updated documentation for the JTAC automatic lasing feature
- Added the ability to load dynamically the ctld.lua file in the test mission
- Bug fixes to the ctld.getGroup function
- Added a one-second delay when a JTAC is spawned, before starting auto-lase
2024-01-04 16:47:27 +01:00
David Pierron
ea762d4701 Many changes:
- Added framework/menu for JTAC special options (toggle on/off or requests)
- Added 9 Line, Smoke on TGT. Toggle lasing, Toggle speed/wind corrections special options
- Reworked the JTAC pagination system to fully utilize F1-F9 entries
- Reworked refresh for JTAC radio menus, any action triggers a refresh for a JTAC and otherwise it stays for 2min (Mitigation of the radio menu overlap when refreshing while the player is already in the radio menu)
- Bug fixes here and there regarding the criterias to display or not the target list of a JTAC and it's special options
- Updated documentation for the JTAC automatic lasing feature
- Added the ability to load dynamically the ctld.lua file in the test mission
- Bug fixes to the ctld.getGroup function
- Added a one-second delay when a JTAC is spawned, before starting auto-lase
2024-01-04 15:55:06 +01:00
David Pierron
2fba4dba03 Merge pull request #99 from ciribob/release-2023-10
Released v202310.01
2023-10-21 16:26:17 +02:00
David Pierron
5831d1ab2d releasing v202310.01 2023-10-12 13:28:34 +02:00
David Pierron
e33b78806b added the frequency in the beacon units names 2023-10-12 13:24:08 +02:00
David Pierron
7f341df588 Small updates:
- indentation
- comments
- documentation
- default values
2023-10-12 10:40:28 +02:00
David Pierron
3b4da129fd Merge pull request #92 from Proxy404/feature/jtac-smoke-offset-settings
JTAC Smoke Offset Config Options
Added JTAC configuration settings for the X, Y, and Z offsets of smoke markers for lased targets. This will enable the smoke to be configured to be off the target so as to not block the target from being visible in a TGP.
(by https://github.com/Proxy404)
2023-10-12 10:02:45 +02:00
David Pierron
09efd47acd Merge pull request #97 from Queton1-1/loadCrateMenu
Add option to show load crate in menu
If set to true, you can load crates with the F10 menu OR hovering, in case of using choppers and planes for example.
(by https://github.com/Queton1-1)
2023-10-12 10:02:06 +02:00
David Pierron
8f9eba4801 Merge pull request #93 from VEAF/change-radio-beacon-transmissions
Changed the beacons radio transmissions to follow DCS evolutions - no need to restart transmissions every 30 seconds
2023-10-12 09:57:26 +02:00
Quéton 1-1
6400becdfc Add option to show load crate in menu
Add option to show load crate in menu,
if set to true, you can load crates with the F10 menu OR hovering, in case of using choppers and planes for example.
2023-10-07 15:42:36 +02: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
David Pierron
c1891a1a52 stop transmission if ctld.removeRadioBeacon is called 2023-08-29 17:57:21 +02:00
David Pierron
c4c8e15a32 Changed the beacons radio transmissions
There is no more a need to restart transmissions every 30 seconds, as the bug has been corrected (see https://forum.dcs.world/topic/276106-arc-frequencies/page/2/).
Instead, I made changes to create the transmissions once, with a unique name (now mandatory, see https://forum.dcs.world/topic/316378-placed-adf-beacons-only-transmit-briefly/) and the "loop" parameter activated.
Then, every minute, the updateRadioBeacon function checks if the beacons' batteries are still up, and stops them if they are not. If all is ok, the transmissions are stopped and immediately restarted.
2023-08-25 17:26:30 +02:00
Austin Markiewicz
ea30456493 Added JTAC configuration settings for the X, Y, and Z offsets of smoke markers for lased targets to enable better visibility through a TGP 2023-07-21 21:42:25 -04:00
Ciaran Fisher
a3c9d369d5 Version bump 2023-04-14 16:29:18 +01:00
Ciaran Fisher
9b1cf75420 Merge pull request #85 from RafaPolit/JTAC-smoke-on-default-enemy
Fixed always-nil _enemyUnit variable passed to createSmokeMarker
2023-04-14 16:27:07 +01:00
RafaPolit
9517dabb0d Same changes without spaces removal 2023-01-09 12:59:26 -05:00
RafaPolit
b264bc2df0 Fixed always-nil variable 2023-01-09 12:54:10 -05:00
Ciaran Fisher
2632845fd3 Merge pull request #78 from VEAF/JTAC-target-selection-and-retention
JTAC target selection and retention
2022-09-28 16:57:53 +02:00
Ciaran Fisher
74526597e0 Merge pull request #79 from VEAF/JTAC-Active-Laser-Spot-Correction
JTAC active laser spot correction
2022-08-25 16:42:41 +01:00
RexAttaque
a961b7aaea Added option to enable wind and speed laser spot corrections 2022-08-24 16:22:28 +02:00
RexAttaque
240d2b6cbb Check if unit exists before trying to get it's position etc. 2022-08-23 02:01:17 +02:00
RexAttaque
65ab11aae1 Added wind correction for laseUnit(), Added target speed correction for laseUnit(), Added system to update the laser spot position for moving vehicles 2022-08-23 01:30:53 +02:00
RexAttaque
c0f9115f41 Separated both coalitions for the new JTAC indicator 2022-08-21 19:25:39 +02:00
RexAttaque
14066646e0 Fixed new groups not getting the target lists quickly after spawn 2022-08-21 19:10:18 +02:00
RexAttaque
f71649f4f0 Switched to a timer for general target list refresh, Made it so that new groups get target lists on spawn, fixed newJtac not forcing a target list refresh for more than one group, fixed indentation after rebase 2022-08-21 17:51:43 +02:00
RexAttaque
046d51d86b Added a marker when a new JTAC is added to force refresh the target lists 2022-08-20 18:34:53 +02:00
RexAttaque
166efc6160 Separated target lists for both coalitions, optimized target list build, lowered refresh rate of the target lists, removed ambiguity with target selection reset option 2022-08-19 03:30:37 +02:00
RexAttaque
17426bf487 Added CTLD JTAC target selection menu and target retention on selected unit 2022-07-24 16:07:06 +02:00
Ciaran Fisher
b801853ef2 Merge pull request #76 from fhoekstra/patch-1
Make laser code start from 1512
2022-05-17 08:22:44 +01:00
fhoekstra
4b39a322a0 Make laser code start from 1512
for DCS F-14 compatibility: codes below 1511 are not allowed
2022-05-16 23:55:29 +02:00
Ciaran Fisher
77b5f6008e Merge pull request #75 from RndName/ai-troop-limits
Use transportLimit for unknown numberOrTemplate
2022-05-10 12:25:48 +01:00
RndName
ae0d68f5ef Use transportLimit for unknown numberOrTemplate
Instead of directly using the numberOfTroops it should first check for the actual transport limit (if defined) for the given helo type. Otherwise the unitLoadLimits would be ignored for all AI flights automatically loading troops in pickup zones.
2022-05-08 11:23:07 +02:00
Ciaran Fisher
f70c6a7131 Fixed HAWK
Increased default number of launchers
2021-11-13 22:23:45 +00:00
Ciaran Fisher
3717f0f11b Updated version and mission 2021-11-13 21:32:15 +00:00
Ciaran Fisher
1911c608bb Fixed HAWK not firing
Thanks to Grimes!
2021-11-13 21:18:41 +00:00
Ciaran Fisher
1ddaabcfbb Added HAWK CWAR
Added Hawk CWAR - thanks to PaulBrockbank
2021-08-27 08:17:18 +01:00
Ciaran Fisher
381a124a86 Tidy Up Mission 2021-06-27 17:55:17 +01:00
Ciaran Fisher
1a55b1d52e Tidy up Repo 2021-06-27 17:54:37 +01:00
Ciaran Fisher
c48ab69e20 Merge pull request #64 from VEAF/jtac-stop-resume
reproduced edits by guimcdo
2021-06-24 08:33:45 +01:00
David Pierron
ec0cee3671 reproduced edits by guimcdo 2021-06-23 15:41:50 +02:00
Ciaran Fisher
627b8323d4 Merge pull request #62 from VEAF/JTAC-talk-over-SRS
Jtac talk over srs
2021-06-22 08:15:38 +01:00
David Pierron
853ae0e727 Made a reference to DCS-SimpleTextToSpeech instead of including it 2021-06-22 09:05:26 +02:00
David Pierron
4ce0c1f656 rebase from Origin/master (Ciribob) and edited 2021-06-21 18:30:29 +02:00
David Pierron
821dc1e13c Merge branch 'master' into JTAC-talk-over-SRS 2021-06-21 18:24:02 +02:00
Ciaran Fisher
4b25289eb5 Merge pull request #63 from ciribob/pr-61-local
Pr 61 local
2021-06-19 14:11:39 +01:00
Ciaran Fisher
a9e52e07ea Merge branch 'master' into pr/61
# Conflicts:
#	CTLD.lua
2021-06-19 14:02:46 +01:00
Ciaran Fisher
522b835985 removed ctld.allowAiTeamPickups - not used
re-arranged code slightly
added contributor
2021-06-19 13:50:33 +01:00
David Pierron
0668e12c39 JTAC now talks over SRS 2021-06-17 18:37:44 +02:00
David Pierron
7837211c65 Multiple changes :
- bug corrections
- modifications to help other scripts configure/mod CTLD before using it
- when dropping JTAC groups, and extracting them, they remain JTAC
2021-06-17 16:54:25 +02:00
Ciaran Fisher
b5784811db Merge pull request #57 from Knapsak/patch-1
Update CTLD.lua
2021-06-17 08:36:20 +01:00
Ciaran Fisher
a25abb32ef Merge pull request #60 from basman/SAM-patriot
add Patriot SAM
2021-06-17 08:35:59 +01:00
David Pierron
07291e3e89 multiple changes :
- added logging code
- corrected calls to veaf.p
- added weight to extracted troops
- added weight to vehicles
- tested and corrected a few errors
2021-06-15 17:44:41 +02:00
David Pierron
a661fc5951 updated readme to explain the troops weight 2021-06-13 20:38:29 +02:00
David Pierron
23fbba14f7 typo 2021-06-13 10:33:26 +02:00
David Pierron
7101295603 added a bit of documentation 2021-06-13 10:32:25 +02:00
David Pierron
9643e7b82b Multiple changes in CTLD :
- updated to latest origin version
- added simulated weight to CTLD cargo
- added JTAC soldiers (nice for Yak-52)
- moved and factorized cargo status menu
- corrected a few bugs and problems
2021-06-12 17:03:23 +02:00
basman
e50b7fd078 add Patriot SAM 2021-03-05 09:46:00 +01:00
Knapsak
1ac63ffe53 Update CTLD.lua
ctld.vehicleTransportEnabled = {
    "76MD", -- the il-76 mod doesnt use a normal - sign so il-76md wont match... !!!! GRR
    "Hercules",
}
2020-12-07 06:57:13 +02:00
Ciaran Fisher
9fe7020d6d Merge pull request #56 from mrSkortch/master
Fixed stinger unit typeName
2020-06-27 08:51:47 +01:00
mrSkortch
3a36008990 Fixed stinger unit typename
It appears that with DCS 2.5.6 ED remamed the unit Stinger manpad and removed the alternate versions that were assocaited with different countries.

There is just now one unit named Soldier stringer
2020-06-26 19:19:49 -06:00
Ciaran Fisher
c2fc64fd77 Merge pull request #43 from jusola/patch-1
Added option to use DMS instead of DM in location messages
2019-05-06 21:46:42 +01:00
jusola
f603146472 Added option to use DMS instead of DM in location messages 2019-03-28 10:22:31 +02:00
Ciaran Fisher
1db8004f3e Merge pull request #39 from ciribob/minimum-distance
Minimum distance
2018-04-16 22:17:50 +01:00
Ciaran Fisher
58731f3d84 Bug Fix 2018-04-16 22:16:27 +01:00
Ciaran Fisher
ce2cb5fad0 Merge pull request #38 from ciribob/minimum-distance
Minimum distance
2018-04-15 18:30:07 +01:00
Ciaran Fisher
71b54491fc Release 1.73 2018-04-15 18:28:38 +01:00
Ciaran Fisher
7ca6af38fc Version bump 2018-04-15 18:23:24 +01:00
Ciaran Fisher
844144f695 Added minimum distance from friendly logistics option 2018-04-15 15:51:44 +01:00
Ciaran Fisher
f12c67c5e0 Bug Fix
Bug fix for crate timing out
2018-02-18 17:16:40 +00:00
Ciaran Fisher
b5436bd6d2 Update 1.71 2018-01-18 21:54:27 +00:00
Ciaran Fisher
a10de260c7 Merge pull request #36 from ciribob/crateMove
Merge pull request #35 from ciribob/master
2018-01-18 21:50:48 +00:00
Ciaran Fisher
4d3ae4b5ee Update missions 2018-01-18 21:49:40 +00:00
Ciaran Fisher
f6efa0ec58 Merge pull request #34 from ciribob/jtac-optimisation
JTAC Target Optimisation
2018-01-18 21:47:12 +00:00
Ciaran Fisher
5452bc7539 Merge pull request #35 from ciribob/master
Merge pull request #33 from ciribob/crateMove
2018-01-18 21:47:03 +00:00
Ciaran Fisher
58acfbc152 JTAC Target Optimisation
Possible Fixes for JTAC priority
JTAC search optimised for high unit missions
Added JTAC "visual on" report
2018-01-18 21:45:13 +00:00
Ciaran Fisher
2a4c9ed91a Merge pull request #33 from ciribob/crateMove
Added force crate to be moved
2018-01-18 20:42:16 +00:00
Ciaran Fisher
a78dd40688 Added force crate to be moved
Added Wait time for requesting crates

Added per unit type optional group limits

Added per unit type allowable actions
2017-07-24 21:06:53 +01:00
Ciaran Fisher
44ff4d61da Version 2017-06-25 21:06:51 +01:00
Ciaran Fisher
196efb7bcb Added ability to set maximum group size
You can now set the maximum group size that'll fit in a helicopter.
Larger groups cant be picked up
2017-06-25 21:03:33 +01:00
Ciaran Fisher
38128b65c0 Release 1.64
Fixed bug where count in zone wouldn't work for Mission editor added
crates
Delayed config by a second so you can easily override options without
editing the file
2016-12-11 09:09:20 +00:00
Ciaran Fisher
ee6977aa96 Version bump 2016-12-07 22:26:01 +00:00
Ciaran Fisher
dc214da0d6 Added New Cargos
Added new cargos
Fixed bug where units / groups would disappear
Updating MIST
Updated all missions
2016-12-07 22:20:41 +00:00
Ciaran Fisher
ee41e86628 Merge pull request #24 from emilianomolina/master
List radio beacons when enabledRadioBeaconDrop is false.
2016-12-03 10:57:25 +00:00
Ciaran Fisher
fdc24a32c5 Merge pull request #25 from mvee/patch-1
Cargo objects were updated
2016-12-03 10:56:18 +00:00
mvee
cb63b37494 Cargo objects were updated
Quickfix for the cargo container hence the catergory and type was changed after Mi8 release
2016-12-02 18:58:49 +02:00
Emiliano Molina
cefd92f720 List radio beacons when enabledRadioBeaconDrop is false.
When radio beacons are programmatically generated, if option to allow
the player to create beacons is not set then there was no way for the
player to get the operating frequency of the programmatically generated
beacons.

This patch modifies addF10MenuOptions to give the user to list radio
beacons when enabledRadioBaconDrop is false.  If enabledRadioBeaconDrop
is true then there is no change to the behaviour of the program.

However if it is false then a check is made to see if
deployedRadioBeacons is empty.  If it is not the the user is given the
option to list radio beacons but not modify them.
2016-12-03 00:16:32 +11:00
15 changed files with 16883 additions and 10823 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
*.iml
.idea/encodings.xml
*.xml

Binary file not shown.

14046
CTLD.lua

File diff suppressed because it is too large Load Diff

Binary file not shown.

BIN
Il-76.zip

Binary file not shown.

Binary file not shown.

301
README.md
View File

@@ -3,6 +3,14 @@
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
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)
* [Script Setup](#script-setup)
* [Script Configuration](#script-configuration)
* [Internationalization (multiple languages for text)](#internationalization)
* [Pickup and Dropoff Zones Setup](#pickup-and-dropoff-zones-setup)
* [Waypoint Zones Setup](#waypoint-zones-setup)
* [Transport Unit Setup](#transport-unit-setup)
@@ -101,6 +110,20 @@ You can also edit the CTLD.lua file to change some configuration options. Make s
## Setup in Mission Editor
### Test mission
You can use the `test-mission.miz` mission as a demonstration on how to use the CTLD script in a DCS mission.
This mission includes the CTLD script, a proper configuration, demonstration for some of the main features (including the "JTAC talk over the radio via SRS" functionality).
**Note to developers**: it's quite easy to set the loading of the CTLD script to dynamic, so you can make changes to the script, save it and simply reload the mission (left-shift + R) in the game to test the edits you made.
To do this, simply change the "Define loading mode" trigger (1) so that the condition reads "FLAG IS FALSE" (2), and edit the "DO SCRIPT" action (3) to replace the path with the path to the `CTLD.lua` file on your PC.
Optionaly, you can disable the STTS (text to speech over SRS) feature (4).
![dynamic_loading]
### Script Setup
**This script requires MIST version 4.0.57 or above: https://github.com/mrSkortch/MissionScriptingTools**
@@ -120,7 +143,7 @@ An example is shown below:
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**
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
@@ -130,10 +153,12 @@ To use the real cargo sling behaviour, set the ```ctld.slingLoad``` option to ``
-- ************************************************************************
ctld.staticBugFix = true -- When statics are destroyed, DCS Crashes. Set this to FALSE when this bug is fixed or if you want to use REAL sling loads :)
ctld.disableAllSmoke = false -- if true, all smoke is diabled at pickup and drop off zones regardless of settings below. Leave false to respect settings below
ctld.disableAllSmoke = false -- if true, all smoke is disabled at pickup and drop off zones regardless of settings below. Leave false to respect settings below
ctld.hoverPickup = true -- if set to false you can load crates with the F10 menu instead of hovering...!
ctld.loadCrateFromMenu = false -- if set to true, you can load crates with the F10 menu OR hovering, in case of using choppers and planes for example.
ctld.enableCrates = true -- if false, Helis will not be able to spawn or unpack crates so will be normal CTTS
ctld.slingLoad = false -- if false, crates can be used WITHOUT slingloading, by hovering above the crate, simulating slingloading but not the weight...
-- There are some bug with Sling-loading that can cause crashes, if these occur set slingLoad to false
@@ -206,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 :)
@@ -277,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. **
### 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 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.
@@ -319,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.
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 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
- The rest will be standard soldiers
Example:
![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.
@@ -357,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.
Available colours are:
* ```"green"```
* ```"red"```
* ```"white"```
* ```"orange"```
* ```"blue"```
* ```"none"```
* `"green"`
* `"red"`
* `"white"`
* `"orange"`
* `"blue"`
* `"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
@@ -392,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.
The available colours are:
* ```"green"```
* ```"red"```
* ```"white"```
* ```"orange"```
* ```"blue"```
* ```"none"```
* `"green"`
* `"red"`
* `"white"`
* `"orange"`
* `"blue"`
* `"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
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.
@@ -419,7 +477,7 @@ ctld.transportPilotNames = {
"helicargo9",
"helicargo10",
}
```
`
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")
@@ -432,7 +490,7 @@ Example for AI APC:
### 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
ctld.logisticUnits = {
@@ -462,12 +520,13 @@ You can also preload troops into AI transports once the CTLD script has been loa
* number of troops / vehicles to load
* 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
ctld.preLoadTransport("helicargo1", 10,true)
```
#### 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
You can also spawn extractable infantry groups at a specified trigger zone using the code below.
@@ -481,38 +540,44 @@ The parameters are:
```lua
ctld.spawnGroupAtTrigger("red", 10, "spawnTrigger", 1000)
```
or
```lua
ctld.spawnGroupAtTrigger("blue", 5, "spawnTrigger2", 2000)
```
or
```lua
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
```
#### 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:
* group side (red or blue)
* 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
```lua
ctld.spawnGroupAtPoint("red", 10, {x=1,y=2,z=3}, 1000)
```
or
```lua
ctld.spawnGroupAtPoint("blue", 5, {x=1,y=2,z=3}, 2000)
```
or
```lua
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
```
#### Activate / Deactivate Pickup Zone
@@ -521,7 +586,9 @@ You can activate and deactivate a pickup zone as shown below. When a zone is act
```lua
ctld.activatePickupZone("pickzone3")
```
or
```lua
ctld.deactivatePickupZone("pickzone3")
```
@@ -532,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.
```lua
ctld.changeRemainingGroupsForPickupZone("pickup1", 5) -- adds 5 groups for zone or ship pickup1
ctld.changeRemainingGroupsForPickupZone("pickup1", -3) -- remove 3 groups for zone or ship pickup1
```
#### Activate / Deactivate Waypoint Zone
@@ -545,7 +609,9 @@ You can activate and deactivate a waypoint zone as shown below. When a waypoint
```lua
ctld.activateWaypointZone("wpzone1")
```
or
```lua
ctld.deactivateWaypointZone("wpzone1")
```
@@ -572,11 +638,11 @@ ctld.unloadInProximityToEnemy("helicargo1",500) --distance is 500
```
#### 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.
@@ -587,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.
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.
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.
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.
#### 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
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
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.
@@ -615,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!**
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
You can spawn a sling loadable crate at a specified trigger zone using the code below:
@@ -629,10 +695,13 @@ The parameters are:
```lua
ctld.spawnCrateAtZone("blue", 500, "crateSpawnTrigger") -- spawns a BLUE coalition HMMWV at the trigger zone "crateSpawnTrigger"
```
or
```lua
ctld.spawnCrateAtZone("red", 500, "crateSpawnTrigger") -- spawns a RED coalition HMMWV at the trigger zone "crateSpawnTrigger"
```
#### Spawn Sling loadable crate at a Point
You can spawn a sling loadable crate at a specified point using the code below:
@@ -650,7 +719,7 @@ ctld.spawnCrateAtPoint("blue",500, {x=20, y=10,z=20}) -- spawns a RED coalition
#### 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.
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
-- ***************** JTAC CONFIGURATION *****************
@@ -659,39 +728,68 @@ ctld.JTAC_LIMIT_BLUE = 10 -- max number of JTAC Crates for the BLUE Side
ctld.JTAC_dropEnabled = true -- allow JTAC Crate spawn from F10 menu
ctld.JTAC_maxDistance = 4000 -- How far a JTAC can "see" in meters (with Line of Sight)
ctld.JTAC_maxDistance = 10000 -- How far a JTAC can "see" in meters (with Line of Sight)
ctld.JTAC_smokeOn_RED = true -- enables marking of target with smoke for RED forces
ctld.JTAC_smokeOn_BLUE = true -- enables marking of target with smoke for BLUE forces
ctld.JTAC_smokeOn_RED = true -- enables automatic marking of target with smoke for RED forces
ctld.JTAC_smokeOn_BLUE = true -- enables automatic marking of target with smoke for BLUE forces
ctld.JTAC_smokeColour_RED = 4 -- RED side smoke colour -- Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4
ctld.JTAC_smokeColour_BLUE = 1 -- BLUE side smoke colour -- Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4
ctld.JTAC_jtacStatusF10 = false -- enables F10 JTAC Status menu
ctld.JTAC_smokeOffset_x = 0.0 -- distance in the X direction from target to smoke (meters)
ctld.JTAC_smokeOffset_y = 2.0 -- distance in the Y direction from target to smoke (meters)
ctld.JTAC_smokeOffset_z = 0.0 -- distance in the z direction from target to smoke (meters)
ctld.JTAC_location = false -- shows location of target in JTAC message
ctld.JTAC_jtacStatusF10 = true -- enables F10 JTAC Status menu
ctld.JTAC_lock = "all" -- "vehicle" OR "troop" OR "all" forces JTAC to only lock vehicles or troops or all ground units
ctld.JTAC_location = true -- shows location of target in JTAC message
ctld.location_DMS = false -- shows coordinates as Degrees Minutes Seconds instead of Degrees Decimal minutes
ctld.JTAC_lock = "all" -- "vehicle" OR "troop" OR "all" forces JTAC to only lock vehicles or troops or all ground units
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_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
```
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 JTAC will automatically switch targets when a target is destroyed or goes out of Line of Sight.
The JTAC will automatically switch targets when a target is destroyed or goes out of Line of Sight. Alternatively, a target list is available to chose from for each JTAC.
The JTACs can be configured globally to target only vehicles or troops or all ground targets.
JTACs can also be asked to put smoke on target, give out 9-Lines, to toggle lasing on/off and compensate the laser spot position for target movement and local wind.
*** NOTE: LOS doesn't include buildings or tree's... Sorry! ***
The script can also be useful in daylight by enabling the JTAC to mark enemy positions with Smoke. The JTAC will only move the smoke to the target every 5 minutes (to stop a huge trail of smoke markers) unless the target is destroyed, in which case the new target will be marked straight away with smoke. There is also an F10 menu option for units allowing the JTAC(s) to report their current status but if a JTAC is down it won't report in.
The script can also be useful in daylight by enabling the JTAC to automatically mark enemy positions with Smoke. The JTAC will only move the smoke to the target every 5 minutes (to stop a huge trail of smoke markers) unless the target is destroyed, in which case the new target will be marked straight away with smoke. There is also an F10 menu to get the status of all JTACs, access the target lists and options for each JTAC (such as toggling lasing on/off or requesting a smoke manually). Do note that if a JTAC is down it won't report in or have it's own menu for targets and options. JTACs also do not overlap each other so the target lists do not include already lased targets.
To add JTACS to the mission using the editor place a JTAC unit on the map putting each JTAC in it's own group containing only itself and no
The automatic smokes will be offset from the target by the distances declared in the `ctld.JTAC_smokeOffset_*` constants. Requested smokes will be put close but not on target.
In practice, this is what the F10 radio menu for JTACs looks like :
![alt text](https://imgur.com/pfVldQ1.png "JTAC F10 Radio Menu")
You can see the "JTAC Status" command and the Selection Lists for each JTAC. Those look like :
![alt text](https://imgur.com/oDtajwv.png "Selection List for a JTAC")
Each target type within LOS of the JTAC and not already being lased (by any JTAC) is listed. Quantity is indicated. There is also the Action menu which looks like :
![alt text](https://imgur.com/nYWODLj.png "Action List for a JTAC")
This will allow you to act on the behavior of the JTAC or make requests. These items get updated every minute or so to reflect current configuration, same for the target list.
*** NOTE: Please be patient with the JTAC menu, wait at least 10 seconds between commands. If a spurious command is triggered, wait the same 10 seconds and try again. Sorry for this inconvenience. ***
To add JTACs or AFACs to the mission using the editor place a JTAC/AFAC unit on the map putting each JTAC/AFAC in it's own group containing only itself and no
other units. Name the group something easy to remember e.g. JTAC1 and make sure the JTAC units have a unique name which must
not be the same as the group name. The editor should do this for you but be careful if you copy and paste.
Run the code below as a DO SCRIPT at the start of the mission, or after a delay if you prefer to activate a mission JTAC.
Run the code below as a DO SCRIPT at the start of the mission, or after a delay if you prefer to activate a mission JTAC or AFAC.
**JTAC units deployed by unpacking a crate will automatically activate and begin searching for targets immediately.**
@@ -706,31 +804,37 @@ You can also override global settings set in the script like so:
```lua
ctld.JTACAutoLase('JTAC1', 1688, false,"all")
```
This means no smoke marks for this JTAC and it will target all ground troops
```lua
ctld.JTACAutoLase('JTAC1', 1688, true,"vehicle")
```
This smoke marks for this JTAC and it will target ONLY ground vehicles
```lua
ctld.JTACAutoLase('JTAC1', 1688, true,"troop")
```
This means smoke marks are enabled for this JTAC and it will target ONLY ground troops
```lua
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
```lua
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
```lua
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
Smoke colours are: Green = 0 , Red = 1, White = 2, Orange = 3, Blue = 4
@@ -740,6 +844,19 @@ the mission but there can be a delay of up to 30 seconds after activation for th
You can also change the **name of a unit*** (unit, not group) to include "**hpriority**" to make it high priority for the JTAC, or "**priority**" to set it to be medium priority. JTAC's will prioritize targets within view by first marking hpriority targets, then priority targets, and finally all others. This works seemlessly with the all/vehicle/troop functionality as well. In this way you can have them lase SAMS, then AAA, then armor, or any other order you decide is preferable.
If the `DCS-SimpleTextToSpeech.lua` script is loaded (you'll find it [here](https://github.com/ciribob/DCS-SimpleTextToSpeech)), and configured (i.e. the `STTS.DIRECTORY`, `STTS.SRS_PORT` and optionaly the `STTS.GOOGLE_CREDENTIALS` variables are set), the JTAC can talk over SRS.
To do this, you can specify the _radio parameter when calling ctld.JTACAutoLase like in this example :
```lua
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.
For example, if the laser code is *1688*, the frequency will be *40.40Mhz*.
JTAC frequency is available through the "JTAC Status" radio menu
# In Game
## Troop Loading and Unloading
@@ -747,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.
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.
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
@@ -762,6 +879,7 @@ Different Troop Groups can be loaded from a pickup zone. The ```ctld.loadableGro
-- at is RPG-16
-- aa is Stinger or Igla
-- mortar is a 2B11 mortar unit
-- jtac is a JTAC soldier, which will use JTACAutoLase
-- You must add a name to the group for it to work
-- You can also add an optional coalition side to limit the group to one side
-- for the side - 2 is BLUE and 1 is RED
@@ -772,7 +890,26 @@ ctld.loadableGroups = {
{name = "Mortar Squad", mortar = 6 },
-- {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
- Every soldier weights between 90% and 120% of ctld.SOLDIER_WEIGHT, and they all carry a backpack and their helmet (ctld.KIT_WEIGHT)
- Standard grunts have a rifle and ammo (ctld.RIFLE_WEIGHT)
- AA soldiers have a MANPAD tube (ctld.MANPAD_WEIGHT)
- Anti-tank soldiers have a RPG and a rocket (ctld.RPG_WEIGHT)
- Machine gunners have the squad MG and 200 bullets (ctld.MG_WEIGHT)
- JTAC have the laser sight, radio and binoculars (ctld.JTAC_WEIGHT)
- Mortar servants carry their tube and a few rounds (ctld.MORTAR_WEIGHT)
```lua
ctld.SOLDIER_WEIGHT = 80 -- kg, will be randomized between 90% and 120%
ctld.KIT_WEIGHT = 20 -- kg
ctld.RIFLE_WEIGHT = 5 -- kg
ctld.MANPAD_WEIGHT = 18 -- kg
ctld.RPG_WEIGHT = 7.6 -- kg
ctld.MG_WEIGHT = 10 -- kg
ctld.MORTAR_WEIGHT = 26 -- kg
ctld.JTAC_WEIGHT = 15 -- kg
```
@@ -780,8 +917,14 @@ ctld.loadableGroups = {
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
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.
@@ -806,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
**Note: You can also set ```ctld.hoverPickup = false``` so you can load crates using the F10 menu instead of Hovering. **
**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
@@ -828,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.*
**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 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.
### 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
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.
@@ -880,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 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.
@@ -969,15 +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.
* ```{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 = "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 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", 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",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 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", 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 = "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 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", 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",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 spawned by crate", action = "unpack"}`
* `{unit = "Unit that did the action",crate = "Crate Details", spawnedGroup = "Group repaired by crate", action = "repair"}`
[dynamic_loading]: trigger-dynamic-loading.png

BIN
demo-mission.miz Normal file

Binary file not shown.

13356
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.

Binary file not shown.

Binary file not shown.

BIN
trigger-dynamic-loading.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB