Compare commits

...

152 Commits

Author SHA1 Message Date
4c0467b21a Merge pull request 'Operation_Fractured_Bolt-Campaign_Updates' (#66) from Operation_Fractured_Bolt-Campaign_Updates into main
Reviewed-on: #66
2025-11-09 20:51:22 -06:00
eb3e08e14a Update defines/SupplyCrates.hpp
Change rhs_weap_m72a7 with JPSP_weap_m72ecmk1
2025-11-09 15:28:01 -06:00
8532ec5786 Update defines/BattalionInfo.hpp
Call Sign Updates for ACO / BCO
2025-11-09 13:28:42 -06:00
6b33680e77 Merge pull request '4.2.3 release' (#65) from develop into main
All checks were successful
Pack Release files / Dispatch MissionZGM build job (release) Successful in 1m33s
Pack Release files / Publish cleaned template (release) Successful in 1m47s
Reviewed-on: #65
2025-05-27 20:46:28 -05:00
hizumi
3db6191e0d Update script_version.hpp
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 2m17s
2025-05-27 20:33:29 -05:00
hizumi
fef05fa153 Update CHANGELOG.md 2025-05-27 20:33:23 -05:00
hizumi
2bd8a16079 Update fn_bindEventHandlers.sqf
correct logic for handling chat messages based on allowed channel cba settings
2025-05-25 22:48:53 -05:00
1fbda6ac95 Merge pull request 'aj-campaign-update-5-17-2025' (#64) from aj-campaign-update-5-17-2025 into develop
Some checks failed
Generate testing snapshot / Create testing release (push) Has been cancelled
Reviewed-on: #64
2025-05-19 16:32:08 -05:00
dbc380c6af Merge branch 'develop' into aj-campaign-update-5-17-2025 2025-05-19 16:31:58 -05:00
22c1f1a21a revert 05936d9213
revert Update defines/DisallowedEquipment.hpp

Added AJ's T-Shirts to the Tabbed Weapons
2025-05-19 16:31:42 -05:00
hizumi
3f4d4147a3 Warlord emblem addition
add new texture for warlord flag and add it to vehicle flag list
2025-05-19 16:31:24 -05:00
c9c15681ce Merge pull request 'Tabbed-Shirt-Update-3-25-2025' (#63) from Tabbed-Shirt-Update-3-25-2025 into develop
Some checks failed
Generate testing snapshot / Create testing release (push) Has been cancelled
Reviewed-on: #63
2025-05-19 16:18:17 -05:00
840652f853 Update defines/SupplyCrates.hpp
Added new resupply Mags for KAR and JCA
2025-05-18 19:12:45 -05:00
05936d9213 Update defines/DisallowedEquipment.hpp
Added AJ's T-Shirts to the Tabbed Weapons
2025-05-05 23:44:21 -05:00
84ab6a1ca7 Update defines/BattalionInfo.hpp
Updated Alpha Callsign
2025-05-04 15:11:46 -05:00
175988efe6 Removed PVS14 and PVS15 from Blacklist 2025-05-04 00:04:36 -05:00
b60f7922f3 Update defines/DisallowedEquipment.hpp
Added T-Shirt Items
2025-03-25 20:44:01 -05:00
hizumi
071a056dc8 Update script_version.hpp
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 2m58s
2024-12-23 00:21:25 -06:00
hizumi
c31e5cf9ac Update CHANGELOG.md 2024-12-23 00:21:21 -06:00
69aed97ce3 Merge pull request '4.2.2 release' (#62) from develop into main
Reviewed-on: #62
2024-12-23 00:21:15 -06:00
5cf3ea5c1f Merge pull request 'Campaign-Updates-Nov-13-2024' (#61) from Campaign-Updates-Nov-13-2024 into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 2m56s
Reviewed-on: #61
2024-12-23 00:09:37 -06:00
38d03353b3 Merge branch 'develop' into Campaign-Updates-Nov-13-2024 2024-12-23 00:09:22 -06:00
ca478ab08d Merge pull request 'ingame_chat_options' (#59) from ingame_chat_options into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 2m55s
Reviewed-on: #59
2024-12-23 00:07:53 -06:00
f6703e7dd4 Merge branch 'develop' into ingame_chat_options 2024-12-23 00:07:10 -06:00
hizumi
ea64f8e63c Update fn_logRespawnButtonUse.sqf
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 3m6s
add triagelevel status to respawn message
2024-12-23 00:01:43 -06:00
3308cdc5ba Update defines/DisallowedEquipment.hpp
Added Restricted Item Check for MRH Satcom / Satellite
2024-11-16 17:42:14 -06:00
a35c39721e Update defines/BattalionInfo.hpp
Commented out unused Units
Updated Command Callsigns
2024-11-13 19:53:11 -06:00
dba0a0e57c Update framework/client/functions/fn_bindEventHandlers.sqf
Added Chat Handler Mission Space Variable Checks
2024-08-11 12:01:01 -05:00
888a688f56 Update framework/common/functions/fn_addCBASettings.sqf
Added CBA Settings for Chat Handler as well as Defaults
2024-08-11 11:57:29 -05:00
c94f660682 Merge pull request '4.2.1 release' (#56) from develop into main
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 41s
Reviewed-on: #56
2024-06-23 23:35:59 -05:00
hizumi
7e93ebfbfd Update script_version.hpp
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 41s
prep 4.2.1 release
2024-06-23 23:33:23 -05:00
hizumi
e0c8f3c952 Update CHANGELOG.md
version 4.2.0 release notes
2024-06-23 23:33:07 -05:00
hizumi
d200f83375 Update DisallowedEquipment.hpp 2024-06-23 23:32:24 -05:00
51c5da44ce Merge pull request '4.2.0 release' (#55) from develop into main
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 36s
Reviewed-on: #55
2024-06-20 23:51:06 -05:00
0f5569c5ba Merge branch 'main' into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 36s
2024-06-20 23:49:29 -05:00
hizumi
448fad1ee0 Update script_version.hpp
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 41s
prep 4.2.0 release
2024-06-20 23:24:08 -05:00
hizumi
2210dc1a70 Update CHANGELOG.md
version 4.2.0 release notes
2024-06-20 23:23:50 -05:00
hizumi
7e5e7e26af Update SupplyCrates.hpp
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 40s
add ability to pull tires and tracks out of the arsenal boxes for loading into vehicles
2024-06-19 22:20:49 -05:00
hizumi
7c6130891a update custom remainsCollector event handlers
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 39s
add extra verbose debug logging to determine owner, time, and whether or not the custom garbage collector is who processed the body
2024-06-19 20:55:12 -05:00
hizumi
eee4ac1b83 Update fn_initClient.sqf
temporarily remove pilot ability to check re-insertion queue
2024-06-19 20:53:19 -05:00
faf84a0bf2 Merge pull request 'Campaign-Updates-6-9-2024' (#54) from Campaign-Updates-6-9-2024 into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 39s
Reviewed-on: #54
2024-06-19 19:55:03 -05:00
68d793a519 Merge branch 'develop' into Campaign-Updates-6-9-2024 2024-06-19 19:54:49 -05:00
2e67e0e932 Merge pull request 'flag_simpleshape_variety' (#53) from flag_simpleshape_variety into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 45s
Reviewed-on: #53
2024-06-19 19:53:39 -05:00
04546e49f7 Update defines/SupplyCrates.hpp
Increased White Smokes in Squad Ammo Crate
Added M84 tun Grenade to Squad Ammo Crate
2024-06-19 00:36:21 -05:00
8cfebeef10 Update defines/SupplyCrates.hpp
Added Pain Killers to Medical Resupply
2024-06-19 00:32:04 -05:00
8c6c1f6a62 Update defines/SupplyCrates.hpp
Added SIG MCX AMMO
Created a Squad Utility Box with Chems / Smokes / Breaching Items / Cable Ties / Radios
2024-06-19 00:30:56 -05:00
1fea46355a Merge remote-tracking branch 'origin/develop' into flag_simpleshape_variety 2024-06-18 19:07:56 -07:00
de91b61fcc some updates 2024-06-18 19:05:54 -07:00
fedc6f1432 Merge pull request 'wip' (#51) from flag_simpleshape_variety into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 37s
Reviewed-on: #51
2024-06-16 15:45:24 -05:00
b34928c0c3 wip 2024-06-16 15:45:12 -05:00
2d9e5aabef Merge pull request 'Campaign-Updates-6-9-2024' (#50) from Campaign-Updates-6-9-2024 into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 38s
Reviewed-on: #50
2024-06-16 15:41:23 -05:00
87ebbae31c Update defines/ApprovedAssets.hpp
Updated Approved assets.
2024-06-16 15:41:06 -05:00
408228f07b Added Black Hornet Restricted Item 2024-06-16 15:41:06 -05:00
736e90e305 Removed SMA Resupply Items
Removed the following Items from resupply
{"SMA_30Rnd_762x35_BLK_EPR",25}, 
{"SMA_20Rnd_762x51mm_M80A1_EPR",25},
{"SMA_20Rnd_762x51mm_M80A1_EPR_Tracer",25},
{"SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range",25},
{"SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range_Tracer",25},
2024-06-16 15:41:06 -05:00
f17fff8363 Asset Change
Removed Athena and Homer, Changed Armed VTOL callsign
2024-06-16 15:41:06 -05:00
64bc303893 Update defines/BattalionInfo.hpp
Updated ECO Callsign
2024-06-16 15:41:06 -05:00
80247a01d0 Update defines/BattalionInfo.hpp
Updated ACO and BCO Callsign
2024-06-16 15:41:06 -05:00
7c8cd6104b wip 2024-06-15 20:01:48 -07:00
7322799b78 add custom sounds support
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 42s
2024-06-15 16:43:56 -07:00
8f89283ceb Added Black Hornet Restricted Item 2024-06-12 00:13:04 -05:00
hizumi
db7bdf1ecd Update fn_createBox.sqf
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 37s
fix incorrect ace variable name. fixes #47.
2024-05-26 16:36:47 -05:00
hizumi
0f8783ffa9 add initial dead unit garbage collection
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 40s
2024-05-23 21:21:10 -05:00
af7600ac16 Merge pull request 'develop' (#46) from develop into main
Reviewed-on: #46
2024-04-25 21:41:04 -05:00
hizumi
fac86f18f0 Update CHANGELOG.md
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 42s
version 4.1.2 release notes
2024-04-25 21:36:48 -05:00
hizumi
87b6f359c1 Update fn_addEmptyGroupCleanupPFH.sqf
fix logic order and update logging output
2024-04-25 21:34:34 -05:00
hizumi
cbd8b5963e Update fn_addEmptyGroupCleanupPFH.sqf
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 37s
add more logging as to where the empty group is owned to track down deletion issues
2024-04-21 19:44:19 -05:00
hizumi
09ee014912 Merge branch 'develop' of https://gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/MissionTemplate into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 32s
2024-04-21 18:43:09 -05:00
hizumi
5b482b022f Update SupplyCrates.hpp
swap Tier1 5.56 mags to rhs 5.56 mags for mod compatability
2024-04-21 18:42:47 -05:00
hizumi
8afe420527 versioning update
4.1.2
2024-04-21 18:42:25 -05:00
ff98546907 Merge pull request 'main' (#45) from main into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 37s
Reviewed-on: #45
2024-04-21 18:34:12 -05:00
5a1e6dd1a1 Merge pull request '4.1.1 release' (#43) from develop into main
Reviewed-on: #43
2024-04-19 00:31:43 -05:00
hizumi
0524af05b9 Update CHANGELOG.md
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 33s
4.1.1 release
2024-04-19 00:28:31 -05:00
hizumi
023550743d Update BattalionInfo.hpp
alpha callsign change
2024-04-19 00:23:01 -05:00
hizumi
ab28ed4e50 Update fn_bindVehicleActions.sqf
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 38s
remove now unneeded custom tire patching ace interaction
2024-04-19 00:01:14 -05:00
hizumi
8794dc226d Update fn_calculateServerStats.sqf
remove unneeded publicVariable declaration to reduce network traffic
2024-04-18 23:59:27 -05:00
hizumi
2bfaaacfc6 Update fn_initServer.sqf
disable zeus lightning bolt functionality first pass
2024-04-18 23:58:42 -05:00
8a4f161df9 Merge pull request 'authorized_gear_april_update' (#42) from authorized_gear_april_update into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 6m1s
Reviewed-on: #42
2024-04-14 00:07:48 -05:00
cc5b8bbf45 Update defines/DisallowedEquipment.hpp
Updated Defines / Allowed Items for Tabbed Weapons to align with new announcement 

https://www.guilded.gg/Iceberg-gaming/groups/v3j2vAP3/channels/06d0c762-6a54-4657-9ed0-9d73763fcd1e/announcements/16nPOKxR
2024-04-14 00:07:48 -05:00
eb4959a2ba Merge branch 'develop' of https://gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/MissionTemplate into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 40s
2024-03-16 20:22:38 -07:00
643a7f212b log client performance to server RPT 2024-03-16 20:22:27 -07:00
6c4740dd1f Merge pull request 'develop' (#37) from develop into main
Reviewed-on: #37
2024-03-02 01:08:33 -06:00
hizumi
f128e0fec8 Update on-release.yaml 2024-03-02 01:08:33 -06:00
hizumi
32dda56f69 Update on-release.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 36s
2024-03-02 01:06:28 -06:00
hizumi
90f3caf1f9 Merge branch 'develop' of https://gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/MissionTemplate into develop 2024-03-02 01:06:17 -06:00
706794a114 Merge pull request 'Update on-release.yaml' (#36) from develop into main
Reviewed-on: #36
2024-03-02 00:49:54 -06:00
hizumi
ee43868a32 Update on-release.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 31s
2024-03-02 00:49:41 -06:00
hizumi
e7af2f115e Update on-release.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 31s
2024-03-02 00:48:47 -06:00
c1aeace994 Merge pull request 'Update on-release.yaml' (#35) from develop into main
Reviewed-on: #35
2024-03-02 00:23:31 -06:00
d9beb44c72 Merge branch 'main' into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 30s
2024-03-02 00:23:08 -06:00
hizumi
44b842ad33 Update on-release.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 30s
2024-03-02 00:18:05 -06:00
d9b5dd66a8 Merge pull request 'develop' (#34) from develop into main
Reviewed-on: #34
2024-03-01 23:59:30 -06:00
d6549fc040 Merge branch 'main' into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 30s
2024-03-01 23:56:55 -06:00
hizumi
073f5ffd63 Update CHANGELOG.md
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 36s
2024-03-01 23:49:35 -06:00
hizumi
53a8b782e6 Update README.md
newer file structure, release link, and new file purposes
2024-03-01 23:49:25 -06:00
737f1ef7ee skip respawn button log if no last uncon timer registered
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 37s
2024-02-24 19:45:55 -08:00
hizumi
3e4eda2843 Update on-push-devel.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 32s
2024-02-22 23:23:12 -06:00
hizumi
34c36f58e2 Delete create-testing-snapshot.yaml 2024-02-22 23:20:25 -06:00
1279503743 Delete .gitea/workflows/create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 28s
2024-02-22 23:19:28 -06:00
35dd63cbab Merge pull request 'main' (#33) from main into develop
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 28s
Reviewed-on: hizumi/MissionTemplate#33
2024-02-22 23:16:24 -06:00
3c0124070e Merge branch 'develop' into main 2024-02-22 23:15:09 -06:00
hizumi
77c3b0d67a update workflows with new formatting and urls 2024-02-22 23:12:27 -06:00
hizumi
2a776718c0 add issue templates
Some checks failed
Pack ZGM mission PBO files / Get ZGM mission list (push) Failing after 37s
Pack ZGM mission PBO files / Create PBO files (push) Failing after 13m41s
2024-02-22 22:17:40 -06:00
5d50375256 improve static line protection logic
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 37s
2024-02-22 08:28:18 -08:00
6917db3b7d add missionGroup op for mission type, supply crate updates
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 32s
2024-02-21 16:11:28 -08:00
d2b8e10baf fix uncon respawn button use, add static line protection
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 38s
2024-02-21 08:23:54 -08:00
496fd21830 adds static line jump 5s invincibility
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 39s
2024-02-20 19:51:51 -08:00
f3c95322e9 change respawn button use warning to use ace_killed CBA event
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 41s
2024-02-19 16:11:42 -08:00
7d10d2622d adds leaflet support and missionGroup param for missionProfileNamespace 2024-02-19 16:11:10 -08:00
a20f477ee0 add better custom script support
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 37s
2024-02-19 09:46:06 -08:00
c29e46d5f7 Merge branch 'develop' of https://gitea.iceberg-gaming.com/hizumi/MissionTemplate into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 40s
2024-02-16 19:05:27 -08:00
de074b62f2 make sure last time knocked unconscious variable is visible to all 2024-02-16 19:05:14 -08:00
hizumi
40ee46ea98 Update pack-zgm-pbo-files.yaml
Some checks failed
Pack ZGM mission PBO files / Get ZGM mission list (push) Failing after 5s
Pack ZGM mission PBO files / Create PBO files (push) Failing after 13s
2024-02-15 19:10:48 -06:00
hizumi
10ef37cb80 Update pack-zgm-pbo-files.yaml
Some checks failed
Pack ZGM mission PBO files / Get ZGM mission list (push) Failing after 5s
Pack ZGM mission PBO files / Create PBO files (push) Failing after 7s
2024-02-15 19:09:01 -06:00
hizumi
74b630bfaa Update pack-zgm-pbo-files.yaml
Some checks failed
Pack ZGM mission PBO files / GetMissionList (push) Failing after 4s
Pack ZGM mission PBO files / CreatePboFiles (push) Successful in 2m13s
2024-02-15 18:59:45 -06:00
hizumi
e64b29479d Update pack-zgm-pbo-files.yaml
Some checks failed
Pack ZGM mission PBO files / GetMissionList (push) Successful in 4s
Pack ZGM mission PBO files / CreatePboFiles (push) Failing after 11s
2024-02-15 18:56:15 -06:00
hizumi
d25e67182a Update pack-zgm-pbo-files.yaml
Some checks failed
Pack ZGM mission PBO files / GetMissionList (push) Failing after 3s
Pack ZGM mission PBO files / CreatePboFiles (push) Failing after 17s
2024-02-15 18:50:30 -06:00
hizumi
2218898ff7 Update pack-zgm-pbo-files.yaml
Some checks failed
Pack ZGM mission PBO files / GetMissionList (push) Failing after 1s
Pack ZGM mission PBO files / CreatePboFiles (push) Failing after 2s
2024-02-15 18:49:36 -06:00
hizumi
4976aa51b8 Update pack-zgm-pbo-files.yaml 2024-02-15 18:47:30 -06:00
hizumi
ddf0fe91d4 Update pack-zgm-pbo-files.yaml 2024-02-15 18:46:51 -06:00
hizumi
72bac32219 create release workflow 2024-02-15 18:40:28 -06:00
hizumi
21dbb725ac sync develop workflow 2024-02-15 18:40:13 -06:00
hizumi
57c012195a Update create-testing-snapshot.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 30s
2024-02-15 18:24:19 -06:00
hizumi
d71ba9e3bd Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 11s
2024-02-15 18:11:41 -06:00
hizumi
32491da46f Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 1s
2024-02-15 18:07:52 -06:00
hizumi
94814b6d07 Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 1s
2024-02-15 18:06:55 -06:00
hizumi
d2a557dda1 Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 1s
2024-02-15 18:04:15 -06:00
hizumi
81f4bb4d48 Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 36s
2024-02-15 17:52:16 -06:00
hizumi
6f5a0ca523 Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 29s
2024-02-15 17:49:13 -06:00
hizumi
4eae553c6d Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 29s
2024-02-15 17:45:05 -06:00
hizumi
3194409192 Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 30s
2024-02-15 17:43:54 -06:00
293a050027 Merge branch 'develop' of https://gitea.iceberg-gaming.com/hizumi/MissionTemplate into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 33s
2024-02-15 15:13:22 -08:00
d2758b7570 adds drawicon3d wrapper from Hizumi and status for vflag use 2024-02-15 15:13:04 -08:00
hizumi
1bdbdd1273 Update create-testing-snapshot.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 30s
2024-02-15 16:58:17 -06:00
hizumi
d4c01c6554 Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 28s
2024-02-15 16:51:06 -06:00
hizumi
2866153654 Update create-testing-snapshot.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 29s
2024-02-15 16:40:37 -06:00
hizumi
23dc0656a6 Update create-testing-snapshot.yaml
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 34s
2024-02-15 16:36:07 -06:00
4fb0ea9a15 rework PFH to client module, triageIcons and vehicleFlags point there 2024-02-15 13:54:10 -08:00
ef83d41a32 Merge pull request 'track-unconscious-duration-in-respawn-msg' (#30) from track-unconscious-duration-in-respawn-msg into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 30s
Reviewed-on: hizumi/MissionTemplate#30
Reviewed-by: hizumi <hizumi@noreply.iceberg-gaming.com>
2024-02-14 02:02:05 -06:00
e76da62b7f Merge branch 'develop' into track-unconscious-duration-in-respawn-msg 2024-02-14 01:58:47 -06:00
hizumi
aaad8675a6 Create create-testing-snapshot.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 33s
move testing workflow to develop branch
2024-02-14 01:56:04 -06:00
c00f1b0e17 Merge pull request 'adds default bases + allows mms to set custom waypoints for microdagr' (#26) from add-microdagr-waypoints into develop
Reviewed-on: hizumi/MissionTemplate#26
Reviewed-by: hizumi <hizumi@noreply.iceberg-gaming.com>
2024-02-14 01:53:08 -06:00
hizumi
8e10819b92 Update create-testing-snapshot.yaml 2024-02-14 01:51:52 -06:00
9f89ec12d5 moves empty group cleanup run on all machines to perf module 2024-02-13 23:13:23 -08:00
e55c9a0751 trial implementation 2024-02-13 20:50:09 -08:00
hizumi
68f35a9b44 Update create-testing-snapshot.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 31s
add environment diagnostics and update webrequest url to use built in environment variables
2024-02-13 22:46:39 -06:00
hizumi
f11cadbd06 Update create-testing-snapshot.yaml
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 31s
correct api url
2024-02-13 19:58:21 -06:00
hizumi
a00f6cb0da create testing release workflow
Some checks failed
Generate testing snapshot / Create testing release (push) Failing after 27s
2024-02-13 19:50:30 -06:00
5114ae334f add basic mission_settings check w notify in 3den preview 2024-02-13 11:02:42 -08:00
296f945ea3 adds default bases + allows mms to set custom waypoints for microdagr 2024-02-12 23:51:07 -08:00
fdcf70b713 revert CfgFunctions to nested include 2024-02-12 19:32:19 -08:00
hizumi
1e5d50828b Update CHANGELOG.md 2024-02-08 19:12:44 -06:00
f8af54aa06 Merge pull request 'develop' (#24) from develop into main
Reviewed-on: https://17th-gs.iceberg-gaming.com:5443/hizumi/MissionTemplate/pulls/24
2024-02-08 19:05:40 -06:00
85 changed files with 1995 additions and 612 deletions

View File

@@ -0,0 +1,37 @@
name: Bug Report
about: File a bug report to help us improve
title: ""
labels: "Kind/Bug"
ref: main
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: textarea
id: what-happened
attributes:
label: Describe the bug!
description: What did you see, and what did you expect to happen.
render: markdown
value: "A bug happened!"
validations:
required: true
- type: textarea
id: reproduce-steps
attributes:
label: How can we reproduce this?
description: "Steps to reproduce the behavior, and attach full log here if needed."
value: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant log output?
description: Please copy and paste any relevant log output. This will be automatically formatted into code.
render: shell

View File

@@ -0,0 +1 @@
blank_issues_enabled: true

View File

@@ -0,0 +1,34 @@
name: Feature Request
about: Suggest an idea for this project
title: ""
labels: "Kind/Feature"
ref: main
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to suggest an idea to us!
- type: textarea
id: feature-description
attributes:
label: Is your feature request related to a problem?
description: A clear and concise description of what the problem is.
render: markdown
value: " I'm always frustrated when [...]"
- type: textarea
id: feature-solution
attributes:
label: Describe the solution you would like.
description: "A clear and concise description of what you want to happen. Context and screenshots welcome!"
value: |
1. Go to '...'
2. Look at '....'
3. Change to '....'
validations:
required: true
- type: textarea
id: feature-references
attributes:
label: Describe the alternatives you have considered.
description: "A clear and concise description of any alternative solutions or features you've considered."
render: markdown

View File

@@ -0,0 +1,71 @@
name: Generate testing snapshot
on:
push:
branches: [develop]
jobs:
Clean:
name: Create testing release
runs-on: windows
steps:
- name: Diagnostics
run: |
echo "repository: ${{ gitea.repository }}"
echo "ref: ${{ gitea.ref }}"
echo "ref_name: ${{ gitea.ref_name }}"
echo "sha: ${{ gitea.sha }}"
echo "api_url: ${{ gitea.api_url }}"
echo "workflow: ${{ gitea.workflow }}"
- name: Checkout framework
uses: actions/checkout@v3
with:
path: MissionFramework
- name: Clean framework
run: |
Remove-Item -Recurse MissionFramework\aaFrameworkUtils
Remove-Item -Recurse MissionFramework\framework\x
Remove-Item -Recurse MissionFramework\.git*
- name: Backup artifacts from runner
uses: actions/upload-artifact@v3
with:
name: framework-test-snapshot
path: MissionFramework
- name: Create archive
run: Compress-Archive MissionFramework framework-test-snapshot.zip
- name: Delete old testing-release release
run: |
$headers = @{
"accept" = "application/json"
"Authorization" = "token ${{ gitea.token }}"
}
Invoke-WebRequest -Uri "${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases/tags/testing-release" -Method Delete -Headers $headers
- name: Delete old testing-release tag
run: |
$headers = @{
"accept" = "application/json"
"Authorization" = "token ${{ gitea.token }}"
}
Invoke-WebRequest -Uri "${{ gitea.api_url }}/repos/${{ gitea.repository }}/tags/testing-release" -Method Delete -Headers $headers
- name: Create new testing-release tag
run: |
$headers = @{
"accept" = "application/json"
"Authorization" = "token ${{ gitea.token }}"
}
Invoke-WebRequest -Uri "${{ gitea.api_url }}/repos/${{ gitea.repository }}/tags" -Method Post -Headers $headers -ContentType "application/json" -Body "{`"message`": `"testing-release`", `"tag_name`": `"testing-release`", `"target`": `"${{ gitea.sha }}`"}"
- name: Create new testing-release
uses: https://gitea.com/actions/gitea-release-action@v1.3.0
with:
tag_name: 'testing-release'
name: 'testing-release'
prerelease: true
files: |-
framework-test-snapshot.zip

View File

@@ -0,0 +1,70 @@
name: Pack Release files
on:
release:
types: [published]
jobs:
DispatchZGMBuild:
name: Dispatch MissionZGM build job
runs-on: windows
steps:
- name: Diagnostics
run: |
echo "repository: ${{ gitea.repository }}"
echo "ref: ${{ gitea.ref }}"
echo "ref_name: ${{ gitea.ref_name }}"
echo "sha: ${{ gitea.sha }}"
echo "api_url: ${{ gitea.api_url }}"
echo "workflow: ${{ gitea.workflow }}"
- name: Publish remote issue
run: |
$headers = @{
"accept" = "application/json"
"Authorization" = "token ${{ secrets.RUNNER_ISSUE_TOKEN }}"
}
$response = Invoke-RestMethod -Uri "${{ gitea.api_url }}/repos/17th-Ranger-Battalion-ORG/MissionsForZGM/issues" -Method Post -Headers $headers -ContentType "application/json" -Body "{`"title`": `"publish-release`"}"
CreateRelease:
name: Publish cleaned template
runs-on: windows
steps:
- name: Diagnostics
run: |
echo "repository: ${{ gitea.repository }}"
echo "ref: ${{ gitea.ref }}"
echo "ref_name: ${{ gitea.ref_name }}"
echo "sha: ${{ gitea.sha }}"
echo "api_url: ${{ gitea.api_url }}"
echo "workflow: ${{ gitea.workflow }}"
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: 'main'
path: release
- name: Prepare template
run: |
mkdir MissionTemplate
cd MissionTemplate
Get-ChildItem ..\release\ | Copy-Item -Recurse
Remove-Item -Recurse aaFrameworkUtils
Remove-Item -Recurse framework\x
Remove-Item -Recurse .git*
Get-ChildItem
- name: Create archive
run: |
cd release
$revision = git rev-parse --short=10 HEAD
$tag = git describe --abbrev=0 --tags
cd ..
Compress-Archive MissionTemplate mission-maker-template-v$tag-$revision.zip
- name: Add archive to release
uses: https://gitea.com/actions/gitea-release-action@v1.3.0
with:
files: |-
mission-maker-template*.zip

2
.gitignore vendored
View File

@@ -2,3 +2,5 @@
# Notepad++ backups #
*.bak
.vscode/

View File

@@ -4,6 +4,103 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project badly attempts [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [4.2.3] - 2025-05-24
### Added
- Warlord Vehicle Flag
### Changed
- Campaign Callsigns
- Equipment Changes
- Supply Crate contents
### Fixed
- Update chat logic handler for new cba settings
## [4.2.2] - 2024-12-23
### Added
- CBA settings to allow disabling of remaining text chat channels
### Changed
- Log triage level on player respawn
- Campaign Callsigns
### Fixed
- Equipment typos
## [4.2.1] - 2024-06-23
### Changed
- Allowed Equipment Definition typo
## [4.2.0] - 2024-06-20
### Added
- Custom remainsCollector script to replace and supplement the built in arma remainsCollector function
- New Resupply Boxes
- Ability to spawn spare tires and tracks at the arsenal and via Zeus module
### Changed
- Split vehicle flags into colors and shapes for additional options
- Battalion Callsigns
- Allowed Equipment Definitions
- Resupply Box Contents
- Fixed incorrect ace carry variable setting
### Removed
- SMA mod references
- Extraneous server performance calculation broadcast to all clients
- Ability for pilots to check re-insertion queue
## [4.1.2] - 2024-04-25
### Changed
- Fix internal versioning
- Swap resupply box 5.56 magazines due to mod conflict
- Group deletion handler now properly processes empty groups and logs errors
## [4.1.1] - 2024-04-19
### Added
- Function to remove lightning bolt from zeus
### Changed
- Alpha Callsign
- Allowed Equipment Definitions
### Removed
- Custom tire patch code
- Extraneous server performance calculation broadcast to all clients
## [4.1.0] - 2024-03-01
### Added
- Added ability for mission maker to use custom leaflets
- Added ability for mission maker to define points of interested to be automatically added as MicroDAGR waypoints
- Added `missionGroup` variable in `description.ext` for backend grouping of mission
- Added custom script support via `CfgFunctions`
- Added 5 second invulnerability on ejection of air vehicle when parachute equipped
### Changed
- Track unconsciousness time
## [4.0.0] - 2024-02-07
Version 4 marks a massive rewrite due in whole to @IndigoFox by updating the internals of the framework into CBA macros and functions.
@@ -14,6 +111,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Added various framework utitily functions
- Added ability for mission maker to allow spawning of resupply boxes from arsenal boxes
- Added CBA settings for resupply box spawning
- Added additional vehicle flags
- Addded Zeus module to fill vehicle ace cargo inventory with tracks/tires
### Changed

View File

@@ -2,11 +2,10 @@
The only file which should be pre-existing in your mission folder is `mission.sqm`, once freshly saved from Arma 3's EDEN Editor.
Download the latest mission template zip from the [latest release](https://17th-gs.iceberg-gaming.com:5443/hizumi/MissionTemplate/releases/latest) and copy its contents to the folder where your mission file lives.
Download the latest mission template zip from the [latest release](https://gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/MissionTemplate/releases/latest) and copy its contents to the folder where your mission file lives.
Once copied, the final structure should appear similar to the following:
```markdown
├── aaFrameworkUtils/
```
├── defines/
├── framework/
├── images/
@@ -14,13 +13,17 @@ Once copied, the final structure should appear similar to the following:
├── sounds/
├── textures/
├── CHANGELOG.md
├── custom_leaflets.hpp
├── custom_scripts.hpp
├── CHANGELOG.md
├── description.ext
├── mission_settings.hpp
├── mission.jpg
├── mission.sqm
├── mission_settings.hpp
├── README.md
```
> **Note:** If you're building a mission for use and not actively developing code, the `aaFrameworkUtils` and `framework\x` directories **should be deleted**. *These are for the purposes of development and add size bloat to the mission download when players connect to your mission.*
> **Note:** If you're building a mission for use and not actively developing code, you should download the `mission-maker-template` zip file which is a cleaned version of this framework. The `aaFrameworkUtils` and `framework\x` directories in the source tree are for the purposes of development and would only add size bloat to the mission download when players connect to your mission.
After the requisite configuration file edits have been made, your mission is ready to be packed into a pbo for deployment.
@@ -38,13 +41,21 @@ Almost none of the template files should be edited in anyway as they have been f
The contents of this file must be edited to reflect the naming of your mission for display purposes. All variables are self-documented inside the file to clearly identify the purpose of each piece of required text
The contents of the lower half of the file are where the mission maker is able to add/replace/modify the built in `#ace-fortify` preset
The contents of the lower half of the file contain templated declaration blocks where the mission maker can define custom waypoints to be automatically added to the ACE MicroDAGR, and define/edit the custom built in `#ace-fortify` preset.
## mission.jpg
This file will be displayed the client mission loading screen.
File should remain small *(under 300KiB)* and should optimally be `1024px by 512px` in resolution
## custom_leaflets.hpp
This file contains the temeplate block for declaring custom leaflets to be used within missions.
## custom_scripts.hpp
This file contains an accessbile `CfgFunctions` declaration block for custom functions which require setup in this manner.
## defines/
This directory contains the definition files use by the framework in various places. *Contents should not be edited*
@@ -124,3 +135,4 @@ This directory contains a number of hpp files used to define constants throughou
- Provides an ACE3 interaction menu that allows players to attach and remove flags from vehicles.
- Flags are defined in `defines/VehicleFlags.hpp`.
c

39
custom_leaflets.hpp Normal file
View File

@@ -0,0 +1,39 @@
// This contains custom definitions for leaflets. It is not required to set this up, but you're welcome to if you want to use them.
// To use this, configure one or more of the below. Then use the pylon editor of a drone in EDEN to add the appropriate magazine type (like 1Rnd_Leaflets_Custom_01_F) to the drone. Then, when the drone is flying, do `drone1 fire "1Rnd_Leaflets_Custom_01_F";` to drop the leaflets. The leaflet will then be shown in the world, and can be picked up by players to read the text and see the image.
class Custom_01 // configuration for 1Rnd_Leaflets_Custom_01_F
{
text = "Leaflet text"; // text shown when previewing the leaflet full-screen. Ideally should be localized, so even player who cannot read the image can get the information
texture = "images\leaflets\leaflet_custom_01.paa"; // leaflet texture shown when previewing the leaflet full-screen
};
class Custom_02 // configuration for 1Rnd_Leaflets_Custom_02_F
{
text = "Leaflet text"; // text shown when previewing the leaflet full-screen. Ideally should be localized, so even player who cannot read the image can get the information
texture = "images\leaflets\leaflet_custom_02.paa"; // leaflet texture shown when previewing the leaflet full-screen
};
class Custom_03 // configuration for 1Rnd_Leaflets_Custom_03_F
{
text = "Leaflet text"; // text shown when previewing the leaflet full-screen. Ideally should be localized, so even player who cannot read the image can get the information
texture = "images\leaflets\leaflet_custom_03.paa"; // leaflet texture shown when previewing the leaflet full-screen
};
class Custom_04 // configuration for 1Rnd_Leaflets_Custom_04_F
{
text = "Leaflet text"; // text shown when previewing the leaflet full-screen. Ideally should be localized, so even player who cannot read the image can get the information
texture = "images\leaflets\leaflet_custom_04.paa"; // leaflet texture shown when previewing the leaflet full-screen
};
class Custom_05 // configuration for 1Rnd_Leaflets_Custom_05_F
{
text = "Leaflet text"; // text shown when previewing the leaflet full-screen. Ideally should be localized, so even player who cannot read the image can get the information
texture = "images\leaflets\leaflet_custom_05.paa"; // leaflet texture shown when previewing the leaflet full-screen
};
class Custom_06 // configuration for 1Rnd_Leaflets_Custom_06_F
{
text = "Leaflet text"; // text shown when previewing the leaflet full-screen. Ideally should be localized, so even player who cannot read the image can get the information
texture = "images\leaflets\leaflet_custom_06.paa"; // leaflet texture shown when previewing the leaflet full-screen
};

11
custom_scripts.hpp Normal file
View File

@@ -0,0 +1,11 @@
// This file's contents will be included in the mission's CfgFunctions section, and serves to give you a place to define custom functions from files you've placed in /scripts.
class milsim_scripts {
class functions {
file = "scripts";
// Add your custom functions here, like so:
// class init {postInit = 1;}; // refers to scripts/fn_init.sqf. postInit=1 means it will be run on each machine when they're done loading the mission.
// class customFunction1 {}; // refers to the file scripts/fn_customFunction1.sqf, and is called as milsim_scripts_fnc_customFunction1
// class customFunction2 {}; // refers to the file scripts/fn_customFunction2.sqf, and is called as milsim_scripts_fnc_customFunction2
};
};

8
custom_sounds.hpp Normal file
View File

@@ -0,0 +1,8 @@
// EXAMPLE
// class uncon_alarm
// {
// name = "uncon_alarm";
// sound[] = {"AJ_CBRN_V2\sounds\AJ_warning_1.ogg", 0.9, 1, 5}; //directory, volume, pitch, range
// titles[]={};
// };

View File

@@ -1,22 +1,74 @@
// Lists approved fixed-wing and rotary vehicle types that mission makers can use in their missions.
class ApprovedAssets {
// Fixed-wing aircraft
class USAF_A10 {callsign = "Ares";};
class RHSGREF_A29B_HIDF {callsign = "Odyssey";};
class USAF_C130J {callsign = "Hercules";};
// Rotary aircraft
class RHS_MELB_MH6M {callsign = "Apollo";};
class RHS_MELB_AH6M {callsign = "Artemis";};
class RHS_MELB_H6M {callsign = "Icarus";};
class RHS_CH_47F {callsign = "Achilles";};
class ej_MH60MDAP4 {callsign = "Hades";};
class RHS_UH60M {callsign = "Griffin";};
class RHS_UH60M_MEV2 {callsign = "Dustoff";};
class B_T_VTOL_01_INFANTRY_F {callsign = "Pegasus";};
class B_T_VTOL_01_ARMED_F {callsign = "Spartan";};
class RHS_AH64D {callsign = "Orion";};
class RHS_AH1Z {callsign = "Athena";};
class RHS_UH1Y {callsign = "Homer";};
class rhsusf_CH53E_USMC {callsign = "Atlas";};
// APC
class rhsusf_stryker_m1126_m2_d {callsign = "Katana"; category = "APC";};
class rhsusf_stryker_m1126_mk19_d {callsign = "Katana"; category = "APC";};
class rhsusf_stryker_m1127_m2_wd {callsign = "Katana"; category = "APC";};
class rhsusf_stryker_m1132_m2_wd {callsign = "Katana"; category = "APC";};
class rhsusf_stryker_m1134_wd {callsign = "Katana"; category = "APC";};
class B_APC_Wheeled_01_cannon_F {callsign = "Rapier"; category = "APC";};
class B_APC_Tracked_01_CRV_F {callsign = "DuctTape"; category = "APC";};
// Rotary
class TF373_SOAR_MH47G_No_Rear_Guns {callsign = "Achilles"; category = "Rotary";};
class TF373_SOAR_MH47G_No_Rear_Guns_EasyActions {callsign = "Achilles"; category = "Rotary";};
class TF373_SOAR_MH47G {callsign = "Achilles"; category = "Rotary";};
class TF373_SOAR_MH47G_EasyActions {callsign = "Achilles"; category = "Rotary";};
class RHS_CH_47F_10 {callsign = "Achilles"; category = "Rotary";};
class RHS_MELB_AH6M {callsign = "Artemis"; category = "Rotary";};
class RHS_MELB_MH6M {callsign = "Apollo"; category = "Rotary";};
class RHS_MELB_H6M {callsign = "Icarus"; category = "Rotary";};
class RHS_UH60M {callsign = "Griffin"; category = "Rotary";};
class RHS_UH60M2 {callsign = "Griffin"; category = "Rotary";};
class RHS_UH60M_MEV {callsign = "Dustoff"; category = "Rotary";};
class ej_MH60MDAP {callsign = "Hades"; category = "Rotary";};
class ej_MH60MDAP16H {callsign = "Hades"; category = "Rotary";};
class ej_MH60MDAP8H {callsign = "Hades"; category = "Rotary";};
class ej_MH60MDAP4 {callsign = "Hades"; category = "Rotary";};
class RHS_AH64DGrey {callsign = "Orion"; category = "Rotary";};
// Air
// Truck
class rhsusf_M1078A1R_SOV_M2_D_fmtv_socom {callsign = "DuctTape"; category = "Truck";};
class rhsusf_M1084A1R_SOV_M2_D_fmtv_socom {callsign = "DuctTape"; category = "Truck";};
class rhsusf_M1078A1P2_B_WD_CP_fmtv_usarmy {callsign = ""; category = "Truck";};
// Boats
class rhsusf_mkvsoc {callsign = "Poseidon"; category = "Boats";};
class B_Boat_Armed_01_minigun_F {callsign = "Neptune"; category = "Boats";};
// MRAP
class rhsusf_M1238A1_M2_socom_d {callsign = "Tanto"; category = "MRAP";};
class rhsusf_M1238A1_Mk19_socom_d {callsign = "Tanto"; category = "MRAP";};
class rhsusf_M1239_M2_socom_d {callsign = "DuctTape"; category = "MRAP";};
class rhsusf_M1239_MK19_socom_d {callsign = "DuctTape"; category = "MRAP";};
class rhsusf_m1245_m2crows_socom_d {callsign = "Dagger"; category = "MRAP";};
class rhsusf_m1245_mk19crows_socom_d {callsign = "Dagger"; category = "MRAP";};
class rhsusf_M1239_M2_Deploy_socom_d {callsign = "DuctTape"; category = "MRAP";};
// TiltRotor
class B_T_VTOL_01_infantry_F {callsign = "Pegasus"; category = "TiltRotor";};
class B_T_VTOL_01_armed_F {callsign = "Chimera"; category = "TiltRotor";};
// Water
// Ground Vehicle
// Cars
class rhsusf_m1165a1_gmv_m134d_m240_socom_d {callsign = "Dagger"; category = "Cars";};
class rhsusf_m1165a1_gmv_m2_m240_socom_d {callsign = "Dagger"; category = "Cars";};
class rhsusf_m1165a1_gmv_mk19_m240_socom_d {callsign = "Dagger"; category = "Cars";};
class rhsusf_mrzr4_d {callsign = ""; category = "Cars";};
class UK3CB_B_M1030_NATO {callsign = ""; category = "Cars";};
class B_T_LSV_01_AT_F {callsign = ""; category = "Cars";};
class B_T_LSV_01_armed_F {callsign = ""; category = "Cars";};
class C_Quadbike_01_F {callsign = ""; category = "Cars";};
// Fixed-Wing
class B_Plane_CAS_01_dynamicLoadout_F {callsign = "Ares"; category = "Fixed-Wing";};
class RHS_A10 {callsign = "Ares"; category = "Fixed-Wing";};
class USAF_AC130U {callsign = "Odin"; category = "Fixed-Wing";};
class USAF_C130J {callsign = "Hercules"; category = "Fixed-Wing";};
class B_Plane_Fighter_01_F {callsign = "Xerxes"; category = "Fixed-Wing";};
// Artillery
class rhsusf_M142_usarmy_WD {callsign = "Halberd"; category = "Artillery";};
class UK3CB_B_M270_MLRS_HE_DES {callsign = "Halberd"; category = "Artillery";};
class rhsusf_m109d_usarmy {callsign = "Glaive"; category = "Artillery";};
class RHS_M119_D {callsign = "Mailman"; category = "Artillery";};
class B_Mortar_01_F {callsign = "Hammer"; category = "Artillery";};
// Armor
class B_AFV_Wheeled_01_cannon_F {callsign = "Gladius"; category = "Armor";};
class B_AFV_Wheeled_01_up_cannon_F {callsign = "Gladius"; category = "Armor";};
};

View File

@@ -4,11 +4,11 @@
// Define the callsigns for the Battalion
#define COMMAND_CALLSIGN SPARTAN
#define RRC_CALLSIGN TIGER
#define MEDIC_CALLSIGN LIFELINE
#define ALPHA_CALLSIGN BLACKJACK
#define ECHO_CALLSIGN FIREBRAND
#define COMMAND_CALLSIGN ONI
//#define RRC_CALLSIGN TIGER
//#define MEDIC_CALLSIGN LIFELINE
#define ALPHA_CALLSIGN GLACIER
#define ECHO_CALLSIGN WARLORD
#define WPN_CALLSIGN BLACKFOOT
// Define the frequencies for the Battalion
@@ -73,26 +73,26 @@ class BattalionInfo {
};
class RRC { // WIP
callsign = RRC_CALLSIGN;
shortDescription = "RRC";
textColor = LVL2_TEXT_COLOR;
frequencies[] = {
{"Contact", {}, {FREQ_BATTALION}},
{"Actual", {}, {FREQ_BATTALION, FREQ_ECHO_FLIGHT_CAS}}
};
};
// class RRC { // WIP
// callsign = RRC_CALLSIGN;
// shortDescription = "RRC";
// textColor = LVL2_TEXT_COLOR;
// frequencies[] = {
// {"Contact", {}, {FREQ_BATTALION}},
// {"Actual", {}, {FREQ_BATTALION, FREQ_ECHO_FLIGHT_CAS}}
// };
// };
class BattalionMedical { // WIP
callsign = MEDIC_CALLSIGN;
shortDescription = "Battalion Medical";
textColor = LVL2_TEXT_COLOR;
frequencies[] = {
{"Contact", {FREQ_ALL_MEDICAL_SR}, {FREQ_BATTALION}},
{"Actual", {FREQ_BATTALION_MEDICAL_INTERCOM, FREQ_ALL_MEDICAL_SR}, {FREQ_BATTALION, FREQ_ECHO_FLIGHT_LOGISTICS}},
{"General", {FREQ_BATTALION_MEDICAL_INTERCOM, FREQ_ALL_MEDICAL_SR}, {}}
};
};
// class BattalionMedical { // WIP
// callsign = MEDIC_CALLSIGN;
// shortDescription = "Battalion Medical";
// textColor = LVL2_TEXT_COLOR;
// frequencies[] = {
// {"Contact", {FREQ_ALL_MEDICAL_SR}, {FREQ_BATTALION}},
// {"Actual", {FREQ_BATTALION_MEDICAL_INTERCOM, FREQ_ALL_MEDICAL_SR}, {FREQ_BATTALION, FREQ_ECHO_FLIGHT_LOGISTICS}},
// {"General", {FREQ_BATTALION_MEDICAL_INTERCOM, FREQ_ALL_MEDICAL_SR}, {}}
// };
// };
class WeaponsSquad { // WIP
callsign = WPN_CALLSIGN;

View File

@@ -11,9 +11,9 @@ class DisallowedEquipment {
label = "BLACKLISTED WEAPON OR ITEM";
description = "Items that NO member is allowed to use.";
items[] = {
"17BN_ANPVS14", // NVG AN/PVS-14
"ej_PVS15D", // NVG AN/PVS-15
"ej_VPS15", // NVG AN/PVS-15
//"17BN_ANPVS14", // NVG AN/PVS-14
//"ej_PVS15D", // NVG AN/PVS-15
//"ej_PVS15", // NVG AN/PVS-15
"LMG_Mk200_black_F", //Mk200 Series
"LMG_Mk200_F", //Mk200 Series
"rhs_weap_g36c", // G36 Series
@@ -34,11 +34,6 @@ class DisallowedEquipment {
"rhs_weap_m14_wd", // M14 Series
"rhs_weap_m14_weap_m14ebrri", // M14 Series
"rhs_weap_m14", // M14 Series
"rhs_weap_m16a4_carryhandle_M203", // M16 Series
"rhs_weap_m16a4_carryhandle", // M16 Series
"rhs_weap_m16a4_imod_M203", // M16 Series
"rhs_weap_m16a4_imod", // M16 Series
"rhs_weap_m16a4", // M16 Series
"rhs_weap_m27iar_grip", // M27 Series
"rhs_weap_m27iar", // M27 Series
"rhsusf_ANPVS_14", // NVG AN/PVS-14
@@ -100,14 +95,8 @@ class DisallowedEquipment {
"UK3CB_M14DMR_Railed_BLK", // M14 Series
"UK3CB_M14DMR_Railed", // M14 Series
"UK3CB_M14DMR", // M14 Series
"UK3CB_M16_Carbine", // M16 Series
"UK3CB_M16A1_LSW", // M16 Series
"UK3CB_M16A1", // M16 Series
"UK3CB_M16A2_UGL", // M16 Series
"UK3CB_M16A2", // M16 Series
"UK3CB_M16A3", // M16 Series
"USP_PVS_14", // NVG AN/PVS-14
"USP_PVS_15" // NVG AN/PVS-15
//"USP_PVS_14", // NVG AN/PVS-14
//"USP_PVS_15" // NVG AN/PVS-15
};
};
@@ -132,10 +121,9 @@ class DisallowedEquipment {
"optic_lrps_tna_F", //Nightforce Series Optic
"optic_lrps", //Nightforce Series Optic
"optic_Nightstalker", // Thermal Optic
"optic_tws_mg", // Thermal Optic
"optic_tws", // Thermal Optic
"rhsusf_acc_anpas13gv1", // Thermal Optic
"rhsusf_acc_anpvs27", // Thermal Optic
"optic_tws_mg", // Thermal Optic
"Tier1_ANPVS10_Tan", // Thermal Optic
"Tier1_ATACR18_ADM_Black_Vanilla", //Nightforce Series Optic
"Tier1_ATACR18_ADM_Black", //Nightforce Series Optic
@@ -152,14 +140,18 @@ class DisallowedEquipment {
"Tier1_ATACR18_Geissele_Docter_Black_Vanilla", //Nightforce Series Optic
"Tier1_ATACR18_Geissele_Docter_Black", //Nightforce Series Optic
"Tier1_ATACR18_Geissele_Docter_Desert_Vanilla", //Nightforce Series Optic
"Tier1_ATACR18_Geissele_Docter_Desert" //Nightforce Series Optic
"Tier1_ATACR18_Geissele_Docter_Desert", //Nightforce Series Optic
"sps_black_hornet_01_Static_F", // Black Hornet Drone Mod
"MRH_TacticalDisplay", //MRH Satellite Display Tablet
"MRH_FoldedSatcomAntenna" //MRH Satellite Satcom
};
};
class tabbedItems { // Items that are allowed for individuals with Ranger Tab
label = "TABBED WEAPON";
label = "TABBED ITEM";
description = "Items that are allowed for individuals with Ranger Tab.";
items[] = {
"optic_tws", // Thermal Optic
"arifle_MX_black_F", // MX Series
"arifle_MX_F", // MX Series
"arifle_MX_GL_black_F", // MX 3GL Series
@@ -208,7 +200,105 @@ class DisallowedEquipment {
"Tier1_SR25_ec_tan", // SR-25 Series
"Tier1_SR25_ec", // SR-25 Series
"Tier1_SR25_tan", // SR-25 Series
"Tier1_SR25" // SR-25 Series
"Tier1_SR25", // SR-25 Series
"rhsusf_weap_MP7A2", //MP7 Series
"rhsusf_weap_MP7A2_aor1", //MP7 Series
"rhsusf_weap_MP7A2_desert", //MP7 Series
"rhsusf_weap_MP7A2_folded", //MP7 Series
"rhsusf_weap_MP7A2_folded_aor1", //MP7 Series
"rhsusf_weap_MP7A2_folded_winter", //MP7 Series
"rhsusf_weap_MP7A2_folded_desert", //MP7 Series
"rhsusf_weap_MP7A2_winter", //MP7 Series
"UK3CB_MP510", //MP5 Series
"UK3CB_MP5A2", //MP5 Series
"UK3CB_MP5A3", //MP5 Series
"UK3CB_MP5A4", //MP5 Series
"UK3CB_MP5K", //MP5 Series
"UK3CB_MP5K_PDW", //MP5 Series
"UK3CB_MP5N", //MP5 Series
"UK3CB_MP5N_UGL", //MP5 Series
"UK3CB_MP5SD5", //MP5 Series
"UK3CB_MP5SD6", //MP5 Series
"SMG_03C_black", //P90 Series
"SMG_03C_camo", //P90 Series
"SMG_03C_hex", //P90 Series
"SMG_03C_khaki", //P90 Series
"SMG_03C_TR_black", //P90 Series
"SMG_03C_TR_camo", //P90 Series
"SMG_03C_TR_hex", //P90 Series
"SMG_03C_TR_khaki", //P90 Series
"UK3CB_P90C_black", //P90 Series
"UK3CB_P90C_camo", //P90 Series
"UK3CB_P90C_hex", //P90 Series
"UK3CB_P90C_khaki", //P90 Series
"UK3CB_P90C_TR_black", //P90 Series
"UK3CB_P90C_TR_camo", //P90 Series
"UK3CB_P90C_TR_hex", //P90 Series
"UK3CB_P90C_TR_khaki", //P90 Series
"UK3CB_P90_black", //P90 Series
"UK3CB_P90_camo", //P90 Series
"UK3CB_P90_hex", //P90 Series
"UK3CB_P90_khaki", //P90 Series
"UK3CB_P90_TR_black", //P90 Series
"UK3CB_P90_TR_camo", //P90 Series
"UK3CB_P90_TR_hex", //P90 Series
"UK3CB_P90_TR_khaki", //P90 Series
"UK3CB_M16_Carbine", //M16 Series
"UK3CB_M16_Carbine_eotech_552", //M16 Series
"UK3CB_M16_Carbine_sup", //M16 Series
"UK3CB_M16A1", //M16 Series
"UK3CB_M16A1_LSW", //M16 Series
"UK3CB_M16A2", //M16 Series
"UK3CB_M16A2_sup", //M16 Series
"UK3CB_M16A2_UGL", //M16 Series
"UK3CB_M16A2_UGL_eotech_552", //M16 Series
"UK3CB_M16A2_UGL_sup", //M16 Series
"UK3CB_M16A3", //M16 Series
"UK3CB_M16A3_eotech_552", //M16 Series
"UK3CB_M16A3_eotech_552_sup", //M16 Series
"UK3CB_M16A3_sup", //M16 Series
"UK3CB_M16A3_UGL", //M16 Series
"rhs_weap_m16a4", //M16 Series
"rhs_weap_m16a4_grip", //M16 Series
"rhs_weap_m16a4_grip_acog", //M16 Series
"rhs_weap_m16a4_grip2", //M16 Series
"rhs_weap_m16a4_grip3", //M16 Series
"rhs_weap_m16a4_bipod", //M16 Series
"rhs_weap_m16a4_acog_usmc", //M16 Series
"rhs_weap_m16a4_carryhandle", //M16 Series
"rhs_weap_m16a4_carryhandle_bipod", //M16 Series
"rhs_weap_m16a4_carryhandle_grip", //M16 Series
"rhs_weap_m16a4_carryhandle_M203", //M16 Series
"rhs_weap_m16a4_carryhandle_M203_grip", //M16 Series
"rhs_weap_m16a4_m203_acog_usmc", //M16 Series
"uk3cb_weap_m16a4_m203s_eotech_552_anpeq15_sup", //M16 Series
"rhs_weap_m16a4_imod", //M16 Series
"rhs_weap_m16a4_imod_grip", //M16 Series
"rhs_weap_m16a4_imod_grip2", //M16 Series
"rhs_weap_m16a4_imod_grip3", //M16 Series
"rhs_weap_m16a4_imod_M203", //M16 Series
"rhs_weap_m16a4_imod_M203_grip", //M16 Series
"rhs_weap_m16a4_carryhandle_grip2", //M16 Series
"rhs_weap_m16a4_carryhandle_grip3", //M16 Series
"rhs_weap_m16a4_grip_acog_usmc", //M16 Series
"rhs_weap_m16a4_grip_acog2_usmc", //M16 Series
"rhs_weap_m32", //M32/MGL Series
"rhs_weap_m32_usmc", //M32/MGL Series
"G3_Multicam_Tee_WARLORD", //Tabbed T-Shirt
"G3_M81_Tee_WARLORD", //Tabbed T-Shirt
"G3_TGR_Tee_WARLORD", //Tabbed T-Shirt
"G3_Multicam_Tee_BLK", //Tabbed T-Shirt
"G3_M81_Tee_BLK", //Tabbed T-Shirt
"G3_TGR_Tee_BLK", //Tabbed T-Shirt
"G3_Multicam_Tee_Tan", //Tabbed T-Shirt
"G3_M81_Tee_Tan", //Tabbed T-Shirt
"G3_TGR_Tee_Tan", //Tabbed T-Shirt
"G3_Multicam_Tee_Gray", //Tabbed T-Shirt
"G3_M81_Tee_Gray", //Tabbed T-Shirt
"G3_TGR_Tee_Gray", //Tabbed T-Shirt
"G3_Multicam_Tee_Green", //Tabbed T-Shirt
"G3_M81_Tee_Green", //Tabbed T-Shirt
"G3_TGR_Tee_Green" //Tabbed T-Shirt
};
};

View File

@@ -9,7 +9,8 @@ class SupplyCrates {
weapons[] = {
{"rhs_weap_M136",4},
{"rhs_weap_M136_hp",4},
{"rhs_weap_m72a7",2}
//{"rhs_weap_m72a7",2}
{"JPSP_weap_m72ecmk1",2}
};
magazines[] = {
{"1Rnd_SmokePurple_Grenade_shell",12},
@@ -20,31 +21,25 @@ class SupplyCrates {
{"ACE_40mm_Flare_ir",12},
{"rhsusf_200Rnd_556x45_mixed_soft_pouch_coyote",25},
{"rhsusf_20Rnd_762x51_m993_Mag",25},
{"SmokeShell",12},
{"rhs_mag_m67",12},
{"SmokeShell",24},
{"ACE_M84",24},
{"rhs_mag_m67",24},
{"1Rnd_Smoke_Grenade_shell",24},
{"1Rnd_SmokeRed_Grenade_shell",24},
{"1Rnd_SmokeGreen_Grenade_shell",24},
{"1Rnd_SmokeYellow_Grenade_shell",12},
{"Tier1_30Rnd_556x45_M856A1_EMag",25},
{"Tier1_30Rnd_556x45_Mk318Mod0_EMag",75},
{"ACE_30Rnd_65_Creedmor_mag",25},
{"SMA_30Rnd_762x35_BLK_EPR",25},
{"Tier1_30Rnd_762x35_300BLK_SMK_PMAG",25},
{"SMA_30Rnd_68x43_SPC_FMJ",25},
{"SMA_30Rnd_68x43_SPC_FMJ_Tracer",25},
{"SMA_20Rnd_762x51mm_M80A1_EPR",25},
{"SMA_20Rnd_762x51mm_M80A1_EPR_Tracer",25},
{"SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range",25},
{"SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range_Tracer",25},
{"rhs_mag_30Rnd_556x45_M855A1_Stanag",25},
{"ACE_30Rnd_556x45_Stanag_M995_AP_mag",75},
{"Tier1_250Rnd_762x51_Belt_M993_AP",15},
{"ACE_20Rnd_762x51_Mag_Tracer",25},
{"ACE_20Rnd_762x51_M993_AP_Mag",25},
{"rhsusf_20Rnd_762x51_SR25_m993_Mag",25},
{"Tier1_20Rnd_762x51_M993_SR25_Mag",25},
{"Tier1_20Rnd_65x48_Creedmoor_SR25_Mag",25},
{"rhssaf_30rnd_556x45_EPR_G36", 25},
{"DemoCharge_Remote_Mag",16}
{"KAR_20Rnd_Fury_blk",25},
{"rhsusf_m112_mag",25},
{"JCA_20Rnd_762x51_PMAG",25},
{"JCA_20Rnd_762x51_Tracer_Red_PMAG",25},
{"KAR_100Rnd_Fury_blk",25},
};
items[] = {};
};
@@ -56,16 +51,19 @@ class SupplyCrates {
icon = "\A3\ui_f\data\map\vehicleicons\iconCrateWpns_ca.paa";
backpacks[] = {};
weapons[] = {};
weapons[] = {
{"launch_MRAWS_green_F",2}
};
magazines[] = {
{"MRAWS_HEAT_F",35},
{"MRAWS_HE_F",15},
{"Tier1_250Rnd_762x51_Belt_M993_AP",50},
{"Tier1_30Rnd_556x45_M856A1_EMag",25},
{"Tier1_30Rnd_556x45_Mk318Mod0_EMag",50},
{"rhs_mag_30Rnd_556x45_M855A1_Stanag",25},
{"ACE_30Rnd_556x45_Stanag_M995_AP_mag",50},
{"Titan_AA",10},
{"Titan_AT",10},
{"200Rnd_65x39_cased_Box_Tracer_Red",50}
{"200Rnd_65x39_cased_Box_Tracer_Red",50},
{"KAR_100Rnd_Fury_RT_blk",50}
};
items[] = {};
};
@@ -86,6 +84,7 @@ class SupplyCrates {
{"ACE_splint",48},
{"ACE_morphine",50},
{"ACE_epinephrine",50},
{"ACE_painkillers",20},
{"ACE_bloodIV",75},
{"ACE_bloodIV_500",50},
{"ACE_bloodIV_250",25},
@@ -136,6 +135,42 @@ class SupplyCrates {
items[] = {};
};
class SquadUtility {
boxClass = "Box_Syndicate_Ammo_F";
displayName = "Squad Utility Supply Crate";
tooltip = "A crate containing Flairs, Smokes, Breaching Charges";
icon = "\A3\ui_f\data\map\vehicleicons\iconCrateAmmo_ca.paa";
backpacks[] = {};
weapons[] = {};
magazines[] = {};
items[] = {
{"ACE_Chemlight_HiYellow",20},
{"ACE_Chemlight_HiBlue",20},
{"ACE_Chemlight_HiGreen",20},
{"ACE_Chemlight_HiRed",20},
{"ACE_Chemlight_UltraHiOrange",20},
{"ACE_HandFlare_Yellow",20},
{"ACE_HandFlare_White",20},
{"ACE_HandFlare_Red",20},
{"ACE_HandFlare_Green",20},
{"ACE_Chemlight_IR",20},
{"ACE_IR_Strobe_Item",20},
{"SmokeShellYellow",20},
{"SmokeShellBlue",20},
{"SmokeShellPurple",20},
{"SmokeShellOrange",20},
{"SmokeShellGreen",20},
{"SmokeShellRed",20},
{"tsp_popperCharge_auto_mag",10},
{"tsp_frameCharge_mag",20},
{"tsp_stickCharge_auto_mag",10},
{"ACE_CableTie",25},
{"DemoCharge_Remote_Mag",15},
{"TFAR_anprc152",3},
};
};
class MortarMk6Resupply {
boxClass = "Box_NATO_WpsSpecial_F";
displayName = "Mortar MK6 Supply Crate";
@@ -168,13 +203,40 @@ class SupplyCrates {
icon = "\A3\ui_f\data\igui\cfg\simpleTasks\types\scout_ca.paa";
backpacks[] = {};
weapons[] = {};
weapons[] = {
{"rhs_weap_M136",2},
{"twc_2inch_bag",3}
};
magazines[] = {
{"twc_2inch_he_1rnd",70},
{"twc_2inch_smoke_1rnd",15},
{"twc_2inch_illum_1rnd",15},
{"Tier1_30Rnd_556x45_Mk318Mod0_EMag",20}
{"ACE_30Rnd_556x45_Stanag_M995_AP_mag",20}
};
items[] = {};
};
class ResupplyTire {
boxClass = "ACE_Wheel";
displayName = "Vehicle Tire";
tooltip = "A single tire for replacement";
icon = "A3\ui_f\data\igui\cfg\simpletasks\types\repair_ca.paa";
backpacks[] = {};
weapons[] = {};
magazines[] = {};
items[] = {};
};
class ResupplyTrack {
boxClass = "ACE_Track";
displayName = "Vehicle Track";
tooltip = "A single track for replacement";
icon = "z\ace\addons\repair\ui\patch_ca.paa";
backpacks[] = {};
weapons[] = {};
magazines[] = {};
items[] = {};
};
};

View File

@@ -84,30 +84,159 @@ class VehicleFlags {
actionID = "flag_simpleshape";
actionTitle = "Simple Shapes";
class GreenOctagon {
actionID = "flag_simpleshape_greenoctagon";
actionTitle = "Green Octagon";
texture = "textures\simple_shape\flag_simpleshape_greenoctagon_co.paa";
class Blue {
actionID = "flags_simpleshape_blue";
actionTitle = "Blue";
class BlueCircle {
actionID = "flag_simpleshape_bluecircle";
actionTitle = "Blue Circle";
texture = "textures\simple_shape\flag_simpleshape_bluecircle_co.paa";
};
class BlueOctagon {
actionID = "flag_simpleshape_blueoctagon";
actionTitle = "Blue Octagon";
texture = "textures\simple_shape\flag_simpleshape_blueoctagon_co.paa";
};
class BluePentagon {
actionID = "flag_simpleshape_bluepentagon";
actionTitle = "Blue Pentagon";
texture = "textures\simple_shape\flag_simpleshape_bluepentagon_co.paa";
};
class BlueSquare {
actionID = "flag_simpleshape_bluesquare";
actionTitle = "Blue Square";
texture = "textures\simple_shape\flag_simpleshape_bluesquare_co.paa";
};
class BlueTriangle {
actionID = "flag_simpleshape_bluetriangle";
actionTitle = "Blue Triangle";
texture = "textures\simple_shape\flag_simpleshape_bluetriangle_co.paa";
};
};
class BlueCircle {
actionID = "flag_simpleshape_bluecircle";
actionTitle = "Blue Circle";
texture = "textures\simple_shape\flag_simpleshape_bluecircle_co.paa";
class Green {
actionID = "flags_simpleshape_green";
actionTitle = "Green";
class GreenCircle {
actionID = "flag_simpleshape_greencircle";
actionTitle = "Green Circle";
texture = "textures\simple_shape\flag_simpleshape_greencircle_co.paa";
};
class GreenOctagon {
actionID = "flag_simpleshape_greenoctagon";
actionTitle = "Green Octagon";
texture = "textures\simple_shape\flag_simpleshape_greenoctagon_co.paa";
};
class GreenPentagon {
actionID = "flag_simpleshape_greenpentagon";
actionTitle = "Green Pentagon";
texture = "textures\simple_shape\flag_simpleshape_greenpentagon_co.paa";
};
class GreenSquare {
actionID = "flag_simpleshape_greensquare";
actionTitle = "Green Square";
texture = "textures\simple_shape\flag_simpleshape_greensquare_co.paa";
};
class GreenTriangle {
actionID = "flag_simpleshape_greentriangle";
actionTitle = "Green Triangle";
texture = "textures\simple_shape\flag_simpleshape_greentriangle_co.paa";
};
};
class OrangeSquare {
actionID = "flag_simpleshape_orangesquare";
actionTitle = "Orange Square";
texture = "textures\simple_shape\flag_simpleshape_orangesquare_co.paa";
class Orange {
actionID = "flags_simpleshape_orange";
actionTitle = "Orange";
class OrangeCircle {
actionID = "flag_simpleshape_orangecircle";
actionTitle = "Orange Circle";
texture = "textures\simple_shape\flag_simpleshape_orangecircle_co.paa";
};
class OrangeOctagon {
actionID = "flag_simpleshape_orangeoctagon";
actionTitle = "Orange Octagon";
texture = "textures\simple_shape\flag_simpleshape_orangeoctagon_co.paa";
};
class OrangePentagon {
actionID = "flag_simpleshape_orangepentagon";
actionTitle = "Orange Pentagon";
texture = "textures\simple_shape\flag_simpleshape_orangepentagon_co.paa";
};
class OrangeSquare {
actionID = "flag_simpleshape_orangesquare";
actionTitle = "Orange Square";
texture = "textures\simple_shape\flag_simpleshape_orangesquare_co.paa";
};
class OrangeTriangle {
actionID = "flag_simpleshape_orangetriangle";
actionTitle = "Orange Triangle";
texture = "textures\simple_shape\flag_simpleshape_orangetriangle_co.paa";
};
};
class PinkTriangle {
actionID = "flag_simpleshape_pinktriangle";
actionTitle = "Pink Triangle";
texture = "textures\simple_shape\flag_simpleshape_pinktriangle_co.paa";
class Pink {
actionID = "flags_simpleshape_pink";
actionTitle = "Pink";
class PinkCircle {
actionID = "flag_simpleshape_pinkcircle";
actionTitle = "Pink Circle";
texture = "textures\simple_shape\flag_simpleshape_pinkcircle_co.paa";
};
class PinkOctagon {
actionID = "flag_simpleshape_pinkoctagon";
actionTitle = "Pink Octagon";
texture = "textures\simple_shape\flag_simpleshape_pinkoctagon_co.paa";
};
class PinkPentagon {
actionID = "flag_simpleshape_pinkpentagon";
actionTitle = "Pink Pentagon";
texture = "textures\simple_shape\flag_simpleshape_pinkpentagon_co.paa";
};
class PinkSquare {
actionID = "flag_simpleshape_pinksquare";
actionTitle = "Pink Square";
texture = "textures\simple_shape\flag_simpleshape_pinksquare_co.paa";
};
class PinkTriangle {
actionID = "flag_simpleshape_pinktriangle";
actionTitle = "Pink Triangle";
texture = "textures\simple_shape\flag_simpleshape_pinktriangle_co.paa";
};
};
class RedPentagon {
actionID = "flag_simpleshape_redpentagon";
actionTitle = "Red Pentagon";
texture = "textures\simple_shape\flag_simpleshape_redpentagon_co.paa";
class Red {
actionID = "flags_simpleshape_red";
actionTitle = "Red";
class RedCircle {
actionID = "flag_simpleshape_redcircle";
actionTitle = "Red Circle";
texture = "textures\simple_shape\flag_simpleshape_redcircle_co.paa";
};
class RedOctagon {
actionID = "flag_simpleshape_redoctagon";
actionTitle = "Red Octagon";
texture = "textures\simple_shape\flag_simpleshape_redoctagon_co.paa";
};
class RedPentagon {
actionID = "flag_simpleshape_redpentagon";
actionTitle = "Red Pentagon";
texture = "textures\simple_shape\flag_simpleshape_redpentagon_co.paa";
};
class RedSquare {
actionID = "flag_simpleshape_redsquare";
actionTitle = "Red Square";
texture = "textures\simple_shape\flag_simpleshape_redsquare_co.paa";
};
class RedTriangle {
actionID = "flag_simpleshape_redtriangle";
actionTitle = "Red Triangle";
texture = "textures\simple_shape\flag_simpleshape_redtriangle_co.paa";
};
};
};
@@ -119,6 +248,11 @@ class VehicleFlags {
actionTitle = "17th Emblem";
texture = "textures\flags_misc\flag_17th_emblem_co.paa";
};
class WarlordEmblem {
actionID = "flag_17th_warlord";
actionTitle = "Warlord Emblem";
texture = "textures\flags_misc\flag_17th_warlord_co.paa";
};
class RedCross {
actionID = "flag_redcross";
actionTitle = "Red Cross";

View File

@@ -89,15 +89,20 @@ minPlayerDistance = 500;
//-------------------------------------------BASE SETTINGS---------------------------------------------------------------//
class Params
{
class Params {};
class CfgFunctions {
#include "framework\CfgFunctions.hpp"
#include "custom_scripts.hpp"
};
class CfgSounds {
#include "custom_sounds.hpp"
};
// CfgFunctions
#include "framework\CfgFunctions.hpp"
class CfgLeaflets {
#include "custom_leaflets.hpp"
};
class CfgDebriefingSections {
class acex_killTracker {

View File

@@ -1,180 +1,191 @@
#include "script_mod.hpp"
class CfgFunctions {
class DOUBLES(PREFIX,init) {
class functions {
file = "framework\init\functions";
class initServer { postInit = 1;};
class initClient { postInit = 1;};
class setDefaults { postInit = 1; };
class addAARChatHandler { postInit = 1; };
class addRespawnChatHandler { postInit = 1; };
};
};
class PREFIX {
class ambience {
file = "framework\ambience";
class flakInitVehicle {};
class flakEH {};
};
};
class DOUBLES(PREFIX,client) {
class functions {
file = "framework\client\functions";
class bindEmptyGroupGarbageCleanup { postInit = 1; };
class bindEventHandlers { postInit = 1; };
class bindVehicleActions { postInit = 1; };
class addZenModules {postInit = 1;};
};
};
class DOUBLES(PREFIX,common) {
class functions {
file = "framework\common\functions";
class addCBASettings { preInit = 1; };
class logMissionInfo {};
class addPlayerInfoToArray {};
class createOrUpdateDiaryRecord {};
class getApprovedAssetsCfg {};
class getBattalionCfg {};
class getNameOfBase {};
class getNearestBase {};
class log {};
class checkPlayerInventory {};
class logSettingChanged {};
class padString {};
class recurseSubclasses {};
};
};
class DOUBLES(PREFIX,fbcb2_assets) {
class functions {
file = "framework\fbcb2_assets\functions";
class addCBASettings {preInit=1;};
class initServer {};
class initClient {};
class getCallsignFromClassname {};
class getCurrentAssetsByBase {};
class getInventory {};
class getMagsForWeapon {};
class getStartingAndCurrentAssets {};
class getStartingAssetsByBase {};
class getVehicleData {};
class getWeaponry {};
class hintAllApprovedAssets {};
class isAssetInRangeOfBase {};
class removeAssetDiaryRecords {};
class removeMarkersOnMap {};
class showMarkersOnMap {};
class updateAssetDiary {};
class updateAssetsByBase {};
};
};
class DOUBLES(PREFIX,fbcb2_main) {
class functions {
file = "framework\fbcb2_main\functions";
class initClient {};
class addEnvironmentRecord {};
class addFrequenciesRecord {};
class addSignalColorsRecord {};
};
class util {
file = "framework\fbcb2_main\util";
class formatRadioElementForDiary {};
class generateElementFrequencyRecordText {};
};
};
class DOUBLES(PREFIX,mapcopy) {
class functions {
file = "framework\mapcopy\functions";
class addCBASettings {preInit=1;};
class initClient {};
class getMapMarkers {};
class loadMapMarkers {};
class mapMarkerToString {};
class stringToMapMarker {};
};
};
class DOUBLES(PREFIX,performance) {
class functions {
file = "framework\performance\functions";
class addCBASettings {preInit=1;};
class addDNI_PlayerFPS { postInit = 1; };
// PFHs managed in addCBASettings onChange code
class addClientStatsPFH {};
class calculateClientStats {};
class addServerStatsPFH {};
class calculateServerStats {};
};
};
class DOUBLES(PREFIX,reinsert) {
class functions {
file = "framework\reinsert\functions";
class addCBASettings {preInit=1;};
};
class server {
file = "framework\reinsert\server";
class initServer {};
class addToQueue {};
class globalShowQueue {};
class removeFromQueue {};
class returnReinsertQueueNotification {};
class validateQueue {};
};
class client {
file = "framework\reinsert\client";
class initClient {};
class addAceSelfActions {};
class addCheckQueueSelfAction {};
class requestShowQueue {};
};
};
class DOUBLES(PREFIX,resupply) {
class functions {
file = "framework\resupply\functions";
class addCBASettings {preInit=1;};
class initClient {};
class createBox {};
class getSupplyCratesCfg {};
class addArsenalObjectSpawnBoxActions {};
};
};
class DOUBLES(PREFIX,triageIcons) {
class functions {
file = "framework\triageIcons\functions";
class addCBASettings {preInit=1;};
class initClient {};
class addDrawIconsPFH {};
class addGetEntitiesPFH {};
class updateColors {};
};
};
class DOUBLES(PREFIX,vehicleFlags) {
class functions {
file = "framework\vehicleFlags\functions";
class initClient {};
class getActionsFlagCategories {};
class getVehicleFlagsCfg {};
class isClassExcluded {};
};
};
class DOUBLES(PREFIX,zeus) {
class functions {
file = "framework\zeus\functions";
class initClient {};
class addZenModules {};
};
class DOUBLES(PREFIX,init) {
class functions {
file = "framework\init\functions";
class initServer { postInit = 1;};
class initClient { postInit = 1;};
class setDefaults {};
class addAARChatHandler {};
class addRespawnChatHandler {};
class checkMissionSettings {};
};
};
class PREFIX {
class ambience {
file = "framework\ambience";
class flakInitVehicle {};
class flakEH {};
};
};
class DOUBLES(PREFIX,client) {
class functions {
file = "framework\client\functions";
class initClient {};
class addDraw3DPFH {};
class addGetNearMenPFH {};
class addMicroDAGRWaypoints {};
class addZenModules {};
class bindEventHandlers {};
class bindVehicleActions {};
class clearPFHCode {};
class logRespawnButtonUse {};
class registerPFHCode {};
class staticLineProtection {};
};
};
class DOUBLES(PREFIX,common) {
class functions {
file = "framework\common\functions";
class addCBASettings { preInit = 1; };
class addPlayerInfoToArray {};
class checkPlayerInventory {};
class createOrUpdateDiaryRecord {};
class draw3DIconStatus {};
class getApprovedAssetsCfg {};
class getBattalionCfg {};
class getNameOfBase {};
class getNearestBase {};
class log {};
class logMissionInfo {};
class logSettingChanged {};
class padString {};
class recurseSubclasses {};
};
};
class DOUBLES(PREFIX,fbcb2_assets) {
class functions {
file = "framework\fbcb2_assets\functions";
class addCBASettings {preInit=1;};
class initServer {};
class initClient {};
class getCallsignFromClassname {};
class getCurrentAssetsByBase {};
class getInventory {};
class getMagsForWeapon {};
class getStartingAndCurrentAssets {};
class getStartingAssetsByBase {};
class getVehicleData {};
class getWeaponry {};
class hintAllApprovedAssets {};
class isAssetInRangeOfBase {};
class removeAssetDiaryRecords {};
class removeMarkersOnMap {};
class showMarkersOnMap {};
class updateAssetDiary {};
class updateAssetsByBase {};
};
};
class DOUBLES(PREFIX,fbcb2_main) {
class functions {
file = "framework\fbcb2_main\functions";
class initClient {};
class addEnvironmentRecord {};
class addFrequenciesRecord {};
class addSignalColorsRecord {};
};
class util {
file = "framework\fbcb2_main\util";
class formatRadioElementForDiary {};
class generateElementFrequencyRecordText {};
};
};
class DOUBLES(PREFIX,mapcopy) {
class functions {
file = "framework\mapcopy\functions";
class addCBASettings {preInit=1;};
class initClient {};
class getMapMarkers {};
class loadMapMarkers {};
class mapMarkerToString {};
class stringToMapMarker {};
};
};
class DOUBLES(PREFIX,performance) {
class functions {
file = "framework\performance\functions";
class addCBASettings {preInit=1;};
class addDNI_PlayerFPS {postInit = 1;};
// PFHs managed in addCBASettings onChange code
class addClientStatsPFH {};
class calculateClientStats {};
class addServerStatsPFH {};
class calculateServerStats {};
class addEmptyGroupCleanupPFH {};
class addDeadUnitCleanupPFH {};
};
};
class DOUBLES(PREFIX,reinsert) {
class functions {
file = "framework\reinsert\functions";
class addCBASettings {preInit=1;};
};
class server {
file = "framework\reinsert\server";
class initServer {};
class addToQueue {};
class globalShowQueue {};
class removeFromQueue {};
class returnReinsertQueueNotification {};
class validateQueue {};
};
class client {
file = "framework\reinsert\client";
class initClient {};
class addAceSelfActions {};
class addCheckQueueSelfAction {};
class requestShowQueue {};
};
};
class DOUBLES(PREFIX,resupply) {
class functions {
file = "framework\resupply\functions";
class addCBASettings {preInit=1;};
class initClient {};
class createBox {};
class getSupplyCratesCfg {};
class addArsenalObjectSpawnBoxActions {};
};
};
class DOUBLES(PREFIX,triageIcons) {
class functions {
file = "framework\triageIcons\functions";
class addCBASettings {preInit=1;};
class initClient {};
class draw3D {};
class updateColors {};
};
};
class DOUBLES(PREFIX,vehicleFlags) {
class functions {
file = "framework\vehicleFlags\functions";
class initClient {};
class addFlagActions {};
class draw3D {};
class getActionsFlagCategories {};
class compileFlagAction {};
class compileFlagCategoryAction {};
class getVehicleFlagsCfg {};
class isClassExcluded {};
};
};
class DOUBLES(PREFIX,zeus) {
class functions {
file = "framework\zeus\functions";
class initClient {};
class addZenModules {};
};
};

View File

@@ -0,0 +1,10 @@
#include "..\script_component.hpp"
if (!isNil QGVAR(draw3DPFH)) then {
[GVAR(draw3DPFH)] call CBA_fnc_removePerFrameHandler;
};
// add pfh that processes queued code
GVAR(draw3DPFH) = [{
{call _x; true;} count (localNamespace getVariable [QGVAR(pfhCode), []]);
}, 0] call CBA_fnc_addPerFrameHandler;

View File

@@ -0,0 +1,17 @@
#include "..\script_component.hpp"
// subroutine to gather nearest 50 units every 5 seconds and store in GVAR(nearMen)
// cleanup
if (!isNil QGVAR(getNearMenPFH)) then {
[GVAR(getNearMenPFH)] call CBA_fnc_removePerFrameHandler;
};
// add pfh
GVAR(getNearMenPFH) = [{
localNamespace setVariable [
QGVAR(nearMen),
(nearestObjects [player,["Man"],50,false]) select {
!isNull _x &&
player isNotEqualTo _x
}
];
}, 1] call CBA_fnc_addPerFrameHandler;

View File

@@ -0,0 +1,76 @@
#include "..\script_component.hpp"
// adds default base locations to players' microDAGR as waypoints
if (!hasInterface) exitWith {};
[{!isNull player}, {
// add base locations (respawn modules)
{
private _wpName = [_x] call EFUNC(common,getNameOfBase);
private _posASL = getPosASL _x;
[_wpName, _posASL] call ace_microdagr_fnc_deviceAddWaypoint;
} forEach GVARMAIN(baseObjects);
// add custom waypoints from mission_settings.hpp
private _customWaypoints = [missionConfigFile >> "custom_microdagr_waypoints", "ARRAY", []] call CBA_fnc_getConfigEntry;
{
_x params [
["_wpName", ""],
["_pos", [0, 0, 0], [[], ""]],
["_object", "", [""]]
];
private _realPos = nil;
// if pos was provided, process
if (count _pos >= 2) then {
switch (typeName _pos) do {
case "ARRAY": {
// pos is provided as an array
_realPos = _pos select [0, 2];
_realPos set [2, getTerrainHeightASL _realPos];
};
case "STRING": {
// pos is provided as a string
_realPos = [_pos, true] call ACE_common_fnc_getMapPosFromGrid;
_realPos set [2, getTerrainHeightASL _realPos];
};
default {
[
LEVEL_WARNING,
QUOTE(COMPONENT),
format["Invalid position for custom microDAGR waypoint: %1", _wpName],
[["name", _wpName], ["pos", _pos], ["object", _object]]] call EFUNC(common,log);
continue;
};
};
};
// if object was provided, process and override any pos
if (count _object > 0) then {
// object is provided as a string variable name
private _realObject = missionNamespace getVariable _object;
if (isNull _realObject) then {
[
LEVEL_WARNING,
QUOTE(COMPONENT),
format["Invalid object for custom microDAGR waypoint: %1", _wpName],
[["name", _wpName], ["pos", _pos], ["object", _object]]] call EFUNC(common,log);
continue;
};
_realPos = getPosASL (missionNamespace getVariable _object);
};
if (isNil "_realPos") then {
[
LEVEL_WARNING,
QUOTE(COMPONENT),
format["Invalid waypoint position for custom microDAGR waypoint: %1", _wpName],
[["name", _wpName], ["pos", _pos], ["object", _object]]] call EFUNC(common,log);
continue;
};
[_wpName, _realPos] call ace_microdagr_fnc_deviceAddWaypoint;
true;
} count _customWaypoints;
}] call CBA_fnc_waitUntilAndExecute;
nil;

View File

@@ -1,43 +0,0 @@
#include "..\script_component.hpp"
[
LEVEL_INFO,
QUOTE(COMPONENT),
"Initializing empty group deletion PFH",
[]
] call EFUNC(common,log);
_emptyGroupPFH = [
{
{
if (local _x) then {
if ((count units _x) == 0) then {
deleteGroup _x;
};
};
} forEach allGroups;
},
300,
[],
{
[
LEVEL_INFO,
QUOTE(COMPONENT),
"Empty group deletion PFH loaded",
[]
] call EFUNC(common,log);
},
{ [
LEVEL_INFO,
QUOTE(COMPONENT),
"Empty group deletion PFH unloaded",
[]
] call EFUNC(common,log);
},
{ true },
{ false },
[]
] call CBA_fnc_createPerFrameHandlerObject;

View File

@@ -2,23 +2,6 @@
if ( !hasInterface ) exitWith {};
player addEventHandler["Respawn",
{
params ["_unit", "_corpse"];
private _killer = _corpse getVariable ["ace_medical_causeOfDeath", "#scripted"];
if (_killer == "respawn_button") then {
[
LEVEL_INFO,
QUOTE(COMPONENT),
"RESPAWNED WHILE UNCONSCIOUS",
[_unit] call EFUNC(common,addPlayerInfoToArray)
] remoteExec [QEFUNC(common,log), 2];
// format["%1 was unconscious then clicked the respawn button", name _unit] remoteExec["systemChat", 0];
};
}
];
[
{
params ["_unit", "_object", "_cost"];
@@ -32,14 +15,17 @@ addMissionEventHandler ["HandleChatMessage",
{
params ["_channel", "_owner", "_from", "_text", "_person", "_name", "_strID", "_forcedDisplay", "_isPlayerMessage", "_sentenceType", "_chatMessageType"];
if ( missionNamespace getVariable ["milsim_sideChat", false] ) exitWith{ false };
if (_channel != 1) exitWith { false };
if ( ( admin _owner ) != 0 ) exitWith { false };
if ( !isNull ( getAssignedCuratorLogic _person ) ) exitWith { false };
if ( (missionNamespace getVariable ["milsim_globalChat", false] ) && ( _channel == 0 ) ) exitWith{ false };
if ( (missionNamespace getVariable ["milsim_sideChat", false] ) && ( _channel == 1 ) ) exitWith{ false };
if ( (missionNamespace getVariable ["milsim_commandChat", false] && ( _channel == 2 ) ) ) exitWith{ false };
if ( (missionNamespace getVariable ["milsim_groupChat", false] ) && ( _channel == 3 ) ) exitWith{ false };
if ( (missionNamespace getVariable ["milsim_vehicleChat", false] && ( _channel == 4 ) ) ) exitWith{ false };
if ( (missionNamespace getVariable ["milsim_directChat", false] ) && ( _channel == 5 ) ) exitWith{ false };
true;
}
];

View File

@@ -29,39 +29,6 @@ _unflip =
["LandVehicle", 0, ["ACE_MainActions"], _unflip, true] call ace_interact_menu_fnc_addActionToClass;
_patchTire =
[
"patchTire",
"Patch Tire",
"\a3\ui_f\data\IGUI\Cfg\Actions\repair_ca.paa",
{
[_player, "AinvPknlMstpSnonWnonDr_medic5", 0] call ace_common_fnc_doAnimation;
[
30,
[_player, _target],
{
params ["_args"];
_args params ["_player", "_target"];
hint "Tire Patched";
_target setDamage 0.2;
_target setVariable["milsim_ace_repair_wheel_canPatch", false];
},
{
params ["_args"];
_args params ["_player", "_target"];
hint "Stopped repair";
[_player, "", 0] call ace_common_fnc_doAnimation;
},
"Patching"
] call ace_common_fnc_progressBar
},
{ ( alive _target ) && ( [_player, "ToolKit"] call ace_common_fnc_hasItem ) && ( damage _target > 0.2 ) && ( _target getVariable["milsim_ace_repair_wheel_canPatch", true] ) }
] call ace_interact_menu_fnc_createAction;
["ACE_Wheel", 0, ["ACE_MainActions"], _patchTire, true] call ace_interact_menu_fnc_addActionToClass;
diag_log text "[MILSIM] (client) vehicle actions bound";
nil;

View File

@@ -0,0 +1,5 @@
#include "..\script_component.hpp"
localNamespace setVariable [QGVAR(pfhCode), []];
count [];

View File

@@ -0,0 +1,32 @@
#include "..\script_component.hpp"
if (!hasInterface) exitWith {};
call FUNC(addMicroDAGRWaypoints);
call FUNC(addZenModules);
call FUNC(bindEventHandlers);
call FUNC(bindVehicleActions);
// add core getNearMenPFH handler
localNamespace setVariable [QGVAR(nearMen), []];
call FUNC(addGetNearMenPFH);
// add core draw3dPFH handler
localNamespace setVariable [QGVAR(pfhCode), []];
call FUNC(addDraw3DPFH);
// add listener that tracks using the respawn button while unconscious
call FUNC(logRespawnButtonUse);
// add conditional eject-from-vehicle handler to apply temp invincibility when static line jumping
call FUNC(staticLineProtection);
[
LEVEL_DEBUG,
QUOTE(COMPONENT),
"initClient complete",
[]
] call EFUNC(common,log);
localNamespace setVariable [QGVAR(complete), true];
nil;

View File

@@ -0,0 +1,57 @@
#include "..\script_component.hpp"
if ( !hasInterface ) exitWith {};
["ace_killed", {
params ["_unit", "_causeOfDeath", "_killer", "_instigator"];
if (not (local _unit)) exitWith {};
private _causeOfDeath = _unit getVariable ["ace_medical_causeOfDeath", "#scripted"];
private _triageLevel = _unit call ace_medical_treatment_fnc_getTriageStatus;
if (_causeOfDeath != "respawn_button") exitWith {};
private _timeWentUnconscious = _unit getVariable [QGVARMAIN(lastTimeKnockedOut), -1];
private _durationSpentUnconscious = -1;
if (_timeWentUnconscious isEqualTo -1) exitWith {};
_durationSpentUnconscious = diag_tickTime - _timeWentUnconscious;
[
LEVEL_INFO,
QUOTE(COMPONENT),
"RESPAWNED WHILE UNCONSCIOUS",
[_unit, [
["durationSpentUnconscious", _durationSpentUnconscious],
["triageLevel", _triageLevel#1]
]] call EFUNC(common,addPlayerInfoToArray)
] remoteExec [QEFUNC(common,log), 2];
// format["%1 was unconscious then clicked the respawn button", name _unit] remoteExec["systemChat", 0];
}] call CBA_fnc_addEventHandler;
["ace_medical_knockOut", { // local event for module & epi event
// systemChat format["ace_medical_knockOut: %1", _this];
private _unit = _this;
if (not (local _unit)) exitWith {};
_this setVariable [QGVARMAIN(lastTimeKnockedOut), diag_tickTime];
}] call CBA_fnc_addEventHandler;
["ace_medical_WakeUp", { // local event for module & epi event
// systemChat format["ace_medical_WakeUp: %1", _this];
private _unit = _this;
if (not (local _unit)) exitWith {};
_this setVariable [QGVARMAIN(lastTimeKnockedOut), nil];
}] call CBA_fnc_addEventHandler;
["ace_unconscious", { // used when applying damage
params ["_unit", "_isUnconscious"];
if (not (local _unit)) exitWith {};
if (_isUnconscious && isNil {_unit getVariable QGVARMAIN(lastTimeKnockedOut)}) then {
// systemChat format["%1 is unconscious", _unit];
_unit setVariable [QGVARMAIN(lastTimeKnockedOut), diag_tickTime];
} else {
// systemChat format["%1 is conscious", _unit];
_unit setVariable [QGVARMAIN(lastTimeKnockedOut), nil];
};
}] call CBA_fnc_addEventHandler;

View File

@@ -0,0 +1,9 @@
#include "..\script_component.hpp"
params [["_code", {}, [{}]]];
private _pfhCode = localNamespace getVariable [QGVAR(pfhCode), []];
_pfhCode pushBack _code;
localNamespace setVariable [QGVAR(pfhCode), _pfhCode];
count _pfhCode;

View File

@@ -0,0 +1,40 @@
#include "..\script_component.hpp"
if ( !hasInterface ) exitWith {};
// Add GetOutMan event handler to grant temporary invincibility to players ejecting from vehicles
// Only for players who have "hooked up" using VS static line
// and are ejecting from a plane or helicopter above 100m
player addEventHandler ["GetOutMan", {
params ["_unit", "_role", "_vehicle", "_turret", "_isEject"];
if (!isEject) exitWith {};
if (isNil {_unit getVariable "VS_Jump"}) exitWith {};
if (
not (_vehicle isKindOf "Plane" || _vehicle isKindOf "Helicopter") ||
((getPosATL _vehicle)#2) < 100
) exitWith {};
// disable damage for the unit to avoid collision damage
_unit allowDamage false;
// tested - vehicle _unit is the _unit, as this EH runs when they have left the vehicle
[
{!isNull (objectParent _this)}, // condition - wait until player re-enters vehicle (chute)
{
// if they enter a chute within 5 seconds, disable chute damage
(vehicle _this) allowDamage false;
// then wait X seconds and re-enable damage for both
[{
_this allowDamage true;
(vehicle _this) allowDamage true;
}, _this, 5] call CBA_fnc_waitAndExecute;
},
_unit, // args
2, // timeout
{ // run on timeout, if for some reason they don't enter a chute
// re-enable damage for unit
_this allowDamage true;
}
] call CBA_fnc_waitUntilAndExecute;
}];

View File

@@ -1,15 +1,33 @@
#include "..\script_component.hpp"
//---------------------
// Global Chat
//---------------------
[
QGVARMAIN(globalChat),
"CHECKBOX",
"Global Chat Text Enabled",
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
true, // default value
true, // requires restart
{
params ["_value"];
[
QGVARMAIN(globalChat),
_value
] call EFUNC(common,logSettingChanged);
}
] call CBA_fnc_addSetting;
//---------------------
// Side Chat
//---------------------
[
QGVARMAIN(sideChat),
"CHECKBOX",
"Side Chat Text Enabled",
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
false, // default value
true, // default value
true, // requires restart
{
params ["_value"];
@@ -20,7 +38,92 @@
}
] call CBA_fnc_addSetting;
//---------------------
// Command Chat
//---------------------
[
QGVARMAIN(commandChat),
"CHECKBOX",
"Command Chat Text Enabled",
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
true, // default value
true, // requires restart
{
params ["_value"];
[
QGVARMAIN(commandChat),
_value
] call EFUNC(common,logSettingChanged);
}
] call CBA_fnc_addSetting;
//---------------------
// Group Chat
//---------------------
[
QGVARMAIN(groupChat),
"CHECKBOX",
"Group Chat Text Enabled",
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
true, // default value
true, // requires restart
{
params ["_value"];
[
QGVARMAIN(groupChat),
_value
] call EFUNC(common,logSettingChanged);
}
] call CBA_fnc_addSetting;
//---------------------
// Vehicle Chat
//---------------------
[
QGVARMAIN(vehicleChat),
"CHECKBOX",
"Vehicle Chat Text Enabled",
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
true, // default value
true, // requires restart
{
params ["_value"];
[
QGVARMAIN(vehicleChat),
_value
] call EFUNC(common,logSettingChanged);
}
] call CBA_fnc_addSetting;
//---------------------
// Vehicle Chat
//---------------------
[
QGVARMAIN(directChat),
"CHECKBOX",
"Direct Chat Text Enabled",
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
true, // default value
true, // requires restart
{
params ["_value"];
[
QGVARMAIN(directChat),
_value
] call EFUNC(common,logSettingChanged);
}
] call CBA_fnc_addSetting;
[QGVARMAIN(globalChat), false] call CBA_settings_fnc_set;
[QGVARMAIN(sideChat), false] call CBA_settings_fnc_set;
[QGVARMAIN(commandChat), false] call CBA_settings_fnc_set;
[QGVARMAIN(groupChat), false] call CBA_settings_fnc_set;
[QGVARMAIN(vehicleChat), false] call CBA_settings_fnc_set;
[QGVARMAIN(directChat), false] call CBA_settings_fnc_set;
diag_log text "[MILSIM] (settings) Custom CBA settings initialized";

View File

@@ -0,0 +1,54 @@
#include "..\script_component.hpp"
if (!hasInterface) exitWith {};
params [
["_drawTargets", [], [[]]],
["_icon", "", [""]],
["_text", "", [""]],
["_color", [], [[]]]
];
if (count _drawTargets isEqualTo 0) exitWith {};
_cameraPos = positionCameraToWorld [0,0,0];
_cameraPosASL = AGLToASL _cameraPos;
{
_target = _x;
_visible = [objNull, "VIEW"] checkVisibility [_cameraPosASL, eyePos _target];
if ( _visible isEqualTo 0 ) exitWith {};
_objectPos = (_target modelToWorldVisual (_target selectionPosition "pilot"));
_distance = (visiblePosition _target) vectorDiff _cameraPos;
_scale = 0;
_heightOffset = 0;
_heightScaling = 0.012;
if ( _icon isNotEqualTo "") then {
_heightOffset = 0.065;
_scale = 1;
_heightScaling = 0.075;
};
_drawPos = _objectPos vectorAdd [0, 0, (0.18 + _heightOffset) + (vectorMagnitude _distance * _heightScaling)];
drawIcon3D [
_icon,
_color,
_drawPos,
_scale,
_scale,
0,
_text,
2,
0.025
];
true;
} count _drawTargets;
nil

View File

@@ -24,10 +24,10 @@ if (_logLevel < DEBUG_MODE) exitWith {};
private _hash = createHashMapFromArray _data;
// Replace square brackets with round brackets to avoid parsing issues.
_message regexReplace ['(\[)', "("];
_message regexReplace ['(\])', ")"];
[_message, "]", ")"] call CBA_fnc_replace;
[_message, "[", "("] call CBA_fnc_replace;
private _json = [_hash] call CBA_fnc_encodeJSON;
_log = format ["[%1] [%2] [%3] [%4] :: %5", QUOTE(PREFIX), _component, _fnc_scriptNameParent, _message, _json];
private _log = format ["[%1] [%2] [%3] [%4] :: %5", QUOTE(PREFIX), _component, _fnc_scriptNameParent, _message, _json];
diag_log text _log;

View File

@@ -1,5 +1,7 @@
#include "..\script_component.hpp"
if (!hasInterface) exitWith {};
[
"saveaar",
{

View File

@@ -1,17 +1,27 @@
#include "..\script_component.hpp"
if (!hasInterface) exitWith {};
[
"respawn",
{
_clientID = _thisArgs select 0;
player setDamage 1;
private _timeWentUnconscious = player getVariable [QGVARMAIN(lastTimeKnockedOut), -1];
private _durationSpentUnconscious = -1;
if (_timeWentUnconscious > - 1) then {
_durationSpentUnconscious = diag_tickTime - _timeWentUnconscious;
};
// log to server RPT
[
LEVEL_INFO,
QUOTE(COMPONENT),
"CHAT COMMAND RESPAWN",
[player] call EFUNC(common,addPlayerInfoToArray)
[player, [
["durationSpentUnconscious", _durationSpentUnconscious]
]] call EFUNC(common,addPlayerInfoToArray)
] remoteExec [QEFUNC(common,log), 2];
// systemChat to all remote machines

View File

@@ -0,0 +1,41 @@
#include "..\script_component.hpp"
if (!hasInterface || !is3DENPreview) exitWith {};
private _warningText = [];
if (getText(missionConfigFile >> "author") in ["MISSION AUTHOR", ""]) then {
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\author</t> is blank or default!";
};
if (getText(missionConfigFile >> "onLoadName") in ["THIS APPEARS ON TOP OF THE LOADING SCREEN IMAGE", ""]) then {
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\onLoadName</t> is blank or default!";
};
if (getText(missionConfigFile >> "briefingName") in ["THIS IS THE NAME ON THE #MISSIONS LIST", ""]) then {
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\briefingName</t> is blank or default!";
};
if (getText(missionConfigFile >> "overviewText") in ["THIS IS WHERE YOU DESCRIBE THE MISSION IN THE #MISSION LIST", ""]) then {
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\overviewText</t> is blank or default!";
};
if (getText(missionConfigFile >> "missionSeries") in ["MY SERIES NAME", ""]) then {
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\missionSeries</t> is blank or default!";
};
if (count GVARMAIN(baseObjects) isEqualTo 0) then {
_warningText pushBack "No respawn points placed!";
};
if (count _warningText > 0) then {
[{
if (isNull (call BIS_fnc_displayMission)) exitWith {};
(_this#0) spawn {
[_this joinString "<br/>", "Issues found!", true, false] call BIS_fnc_guiMessage;
};
[_this#1] call CBA_fnc_removePerFrameHandler;
}, 1, _warningText] call CBA_fnc_addPerFrameHandler;
};
nil;

View File

@@ -1,19 +1,17 @@
#include "..\script_component.hpp"
if ( !hasInterface ) exitWith {};
["milsim_logText", {
params [["_strArray", [""], [[]]]];
{
diag_log text _x;
} forEach _strArray;
}] call CBA_fnc_addEventHandler;
if (!hasInterface) exitWith {};
// make sure the server has finished init
waitUntil {!isNil QGVARMAIN(complete)};
["InitializePlayer", [player, true]] call BIS_fnc_dynamicGroups;
// run primary init functions
call FUNC(addAARChatHandler);
call FUNC(addRespawnChatHandler);
call FUNC(setDefaults);
// Initialize a holder for managing local diary records
// store records in format:
// [subject, [
@@ -23,6 +21,7 @@ EGVAR(common,diaryRecords) = createHashMap;
// initialize other modules
call EFUNC(client,initClient);
call EFUNC(mapcopy,initClient);
call EFUNC(reinsert,initClient);
call EFUNC(resupply,initClient);
@@ -33,6 +32,8 @@ call EFUNC(fbcb2_main,initClient);
call EFUNC(fbcb2_assets,initClient);
call FUNC(checkMissionSettings);
[
LEVEL_DEBUG,
QUOTE(COMPONENT),

View File

@@ -9,21 +9,49 @@ publicVariable QGVARMAIN(baseObjects);
// Initializes the Dynamic Groups framework and groups
["Initialize", [true]] call BIS_fnc_dynamicGroups;
if (isDedicated) then {
["milsim_logText", {
params [["_strArray", [""], [[]]]];
{
diag_log text _x;
} forEach _strArray;
}] call CBA_fnc_addEventHandler;
};
// initialize other modules
call EFUNC(common,logMissionInfo);
call EFUNC(fbcb2_assets,initServer);
call EFUNC(reinsert,initServer);
// globally disable zeus lightning bolt functionality
_curators = allMissionObjects "ModuleCurator_F";
{
_x removeCuratorAddons ["CuratorOnly_Modules_F_Curator_Lightning"];
_x removeCuratorAddons ["A3_Modules_F_Curator_Lightning"];
} foreach _curators;
// add dead unit time marking for custom garbage cleanup function
addMissionEventHandler ["EntityKilled", {
params ["_unit", "_killer", "_instigator", "_useEffects"];
if not (_unit isKindOf "CAManBase") exitWith {};
_unit setVariable["milsim_death_time", time];
_unit addEventHandler ["Deleted", {
params ["_entity"];
_remainsCollector = _entity getVariable["milsim_garbage_collected", false];
_decayTime = time - (_entity getVariable ["milsim_death_time", time]);
_i = allUsers select { (getUserInfo _x)#1 isEqualTo _ownerId;};
_owner = if ( _i isEqualTo []) then [ { "server" }, { (getUserInfo (_i#0))#3 }];
diag_log format["isServer: %5, deleted object owned by: %1 via remainsCollector: %2 after %3 seconds of type: %4", _owner, str (not _remainsCollector), _decayTime, _entity, isServer];
}];
}];
// add zeus deletion logging to curator objects
{
_x addEventHandler ["CuratorObjectDeleted", {
params ["_curator", "_entity"];
_decayTime = time - (_entity getVariable ["milsim_death_time", time]);
diag_log format["deleted object: %1 via curator: %2 after %3 seconds", _entity, name _curator, _decayTime];
}];
} foreach _curators;
// declare init complete to other modules
missionNamespace setVariable [QGVARMAIN(complete), true, true];

View File

@@ -1,5 +1,7 @@
#include "..\script_component.hpp"
if (!hasInterface) exitWith {};
enableSaving[false, false];
enableRadio false;

View File

@@ -10,6 +10,9 @@ private _mapCopyAction =
"\a3\ui_f\data\igui\cfg\actions\talk_ca.paa",
{
params ["_target", "_player", "_params"];
if (!isPlayer _target) exitWith {
format["%1 is not a player", name _target] call CBA_fnc_notify;
};
format["Copying map markers from %1", name _target] call CBA_fnc_notify;
[QGVAR(mapCopyRequest), _this, _target] call CBA_fnc_targetEvent;
},

View File

@@ -1,5 +1,53 @@
#include "..\script_component.hpp"
//---------------------
// Garbage Collection
//---------------------
[
QGVAR(emptyGroupCleanup_enable),
"CHECKBOX",
"Empty Group Cleanup Enabled",
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
true,
true,
{
params ["_value"];
[
QGVAR(emptyGroupCleanup_enable),
_value
] call EFUNC(common,logSettingChanged);
if (!isNull (missionNamespace getVariable [QGVAR(emptyGroupCleanupPFH), locationNull])) then {
deleteLocation GVAR(emptyGroupCleanupPFH);
};
call FUNC(addEmptyGroupCleanupPFH);
}
] call CBA_fnc_addSetting;
[
QGVAR(deadUnitCleanup_enable),
"CHECKBOX",
"Dead Unit Cleanup Enabled",
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
true,
true,
{
params ["_value"];
[
QGVAR(deadUnitCleanup_enable),
_value
] call EFUNC(common,logSettingChanged);
if (!isNull (missionNamespace getVariable [QGVAR(deadUnitCleanupPFH), locationNull])) then {
deleteLocation GVAR(deadUnitCleanupPFH);
};
call FUNC(addDeadUnitCleanupPFH);
}
] call CBA_fnc_addSetting;
//---------------------
// Server CPS
//---------------------

View File

@@ -0,0 +1,55 @@
#include "..\script_component.hpp"
[
LEVEL_INFO,
QUOTE(COMPONENT),
"Initializing dead unit deletion PFH",
[]
] call EFUNC(common,log);
GVAR(deadUnitCleanupPFH) = [
{
_maxTime = getMissionConfigValue ["corpseRemovalMaxTime", 300] * 1.5;
_maxDead = getMissionConfigValue ["corpseLimit", 80];
// _dead = allDead select { (_x isKindOf "CAManBase") and ( ( (time - (_x getVariable ["milsim_death_time", time] ) ) > (_maxTime * 1.5) ) ) };
// _dead = _dead apply { [ (time - (_x getVariable ["milsim_death_time", time] ) ), _x ] };
_dead = [];
{
if not (_x isKindOf "CAManBase") then { continue };
if not (isInRemainsCollector _x) then { continue };
_dead pushBack [time - (_x getVariable ["milsim_death_time", time] ), _x];
} forEach allDead;
_dead sort false;
_toDelete = 0 max ( (count _dead ) - _maxDead );
_dead = _dead select [0, _toDelete];
{
_unit = _x#1;
_unit setVariable ["milsim_garbage_collected", true];
deleteVehicle (_unit);
} foreach _dead;
},
450,
[],
{ // on creation
[
LEVEL_INFO,
QUOTE(COMPONENT),
"dead unit deletion PFH loaded",
[]
] call EFUNC(common,log);
},
{ // on deletion
[
LEVEL_INFO,
QUOTE(COMPONENT),
"dead unit deletion PFH unloaded",
[]
] call EFUNC(common,log);
},
{ (missionNamespace getVariable [QGVAR(deadUnitCleanup_enable), false]) },
{ false },
[]
] call CBA_fnc_createPerFrameHandlerObject;

View File

@@ -0,0 +1,71 @@
#include "..\script_component.hpp"
[
LEVEL_INFO,
QUOTE(COMPONENT),
"Initializing empty group deletion PFH",
[]
] call EFUNC(common,log);
GVAR(emptyGroupCleanupPFH) = [
{
{
if ((count units _x) == 0) then {
if (local _x) then {
[
LEVEL_INFO,
QUOTE(COMPONENT),
"DELETING EMPTY GROUP",
[
["groupId", groupId _x],
["netId", netId _x]
]
] call EFUNC(common,log);
deleteGroup _x;
} else {
if (isServer) then {
[
LEVEL_INFO,
QUOTE(COMPONENT),
"NON LOCAL EMPTY GROUP",
[
["groupId", groupId _x],
["groupOwner", groupOwner _x]
]
] call EFUNC(common,log);
} else {
[
LEVEL_INFO,
QUOTE(COMPONENT),
"EMPTY REMOTE GROUP",
[
["groupId", groupId _x]
]
] call EFUNC(common,log);
};
};
};
} forEach allGroups;
},
300,
[],
{ // on creation
[
LEVEL_INFO,
QUOTE(COMPONENT),
"Empty group deletion PFH loaded",
[]
] call EFUNC(common,log);
},
{ // on deletion
[
LEVEL_INFO,
QUOTE(COMPONENT),
"Empty group deletion PFH unloaded",
[]
] call EFUNC(common,log);
},
{ (missionNamespace getVariable [QGVAR(emptyGroupCleanup_enable), false]) },
{ not (missionNamespace getVariable [QGVAR(emptyGroupCleanup_enable), false]) },
[]
] call CBA_fnc_createPerFrameHandlerObject;

View File

@@ -29,7 +29,7 @@
// log to RPT
[
{_this call EFUNC(common,log);},
{_this remoteExec [QEFUNC(common,log), 2]},
[
LEVEL_INFO,
QUOTE(COMPONENT),

View File

@@ -12,7 +12,6 @@
private _rawCPS = _counter / (diag_frameNo - _frameNo);
missionNamespace setVariable [QGVAR(server_raw_cps), _rawCPS];
publicVariable QGVAR(server_raw_cps);
// with suspension
private _counter = 0;
@@ -26,7 +25,6 @@
private _serverCPS = _counter / (diag_frameNo - _frameNo);
missionNamespace setVariable [QGVAR(server_cps), _counter / (diag_frameNo - _frameNo)];
publicVariable QGVAR(server_cps);
// log to RPT
[

View File

@@ -14,7 +14,7 @@ localNamespace setVariable [QGVAR(checkReinsertQueueClassesAdded), []];
localNamespace setVariable [QGVAR(lastReinsertQueueCheck), diag_tickTime];
// add actions to pilot classes, and don't apply to child classes
[["B_Helipilot_F", "B_helicrew_F"], false] call FUNC(addCheckQueueSelfAction);
// [["B_Helipilot_F", "B_helicrew_F"], false] call FUNC(addCheckQueueSelfAction);
/////////////////////////////////////////////////////

View File

@@ -162,7 +162,7 @@ if (isNil "_items") exitWith {
[_box,1] call ace_cargo_fnc_setSize;
// ignore weight restrictions for carry/drag
_box setVariable ["ace_ignoreWeightCarry", true, true];
_box setVariable ["ace_dragging_ignoreWeightCarry", true, true];
// Return the box
_box;

View File

@@ -1,4 +1,4 @@
#define MAJOR 4
#define MINOR 0
#define PATCHLVL 0
#define MINOR 2
#define PATCHLVL 3
#define BUILD 0

View File

@@ -1,18 +0,0 @@
#include "..\script_component.hpp"
// subroutine to gather nearest 50 units every 5 seconds and store in GVAR(drawTargets)
// cleanup
if (!isNil QGVAR(getEntitiesPFH)) then {
[GVAR(getEntitiesPFH)] call CBA_fnc_removePerFrameHandler;
};
// add pfh
GVAR(getEntitiesPFH) = [{
GVAR(drawTargets) = (
(allUnits + allDeadMen) select {
_x isKindOf "CAManBase" &&
player distance _x < 50 &&
!isNull _x &&
player isNotEqualTo _x
}
);
}, 10] call CBA_fnc_addPerFrameHandler;

View File

@@ -1,6 +1,6 @@
/*
milsim_fnc_addMedicalOverlayPFH
milsim_triageIcons_fnc_draw3D
Author: IndigoFox
@@ -14,29 +14,19 @@ Description:
#include "..\script_component.hpp"
if (!hasInterface) exitWith {};
// Per-frame handler to draw icons
// cleanup
if (!isNil QGVAR(drawIconsPfh)) then {
[GVAR(drawIconsPfh)] call CBA_fnc_removePerFrameHandler;
};
// add pfh
GVAR(drawIconsPfh) = [{
// adds codeblock to common array to be processed per frame
private _code = {
// if disabled, skip processing
if (!GVAR(setting_enabled)) exitWith {false};
// if no targets, skip processing
if (count GVAR(drawTargets) == 0) exitWith {false};
// if the player doesn't have medical perms, skip processing
if !([player] call ace_medical_treatment_fnc_isMedic) exitWith {false};
{
private _unit = _x;
// distance within X meters
if (player distance _unit > GVAR(setting_drawRange)) then {continue};
// check unit not null, not conscious, and not in a vehicle
if (
!(_unit getVariable ["ACE_isUnconscious", false]) ||
!isNull (objectParent _unit)
) then {continue};
// color based on triage level
private _triageLevel = _unit getVariable ["ace_medical_triageLevel", 4];
@@ -57,6 +47,17 @@ GVAR(drawIconsPfh) = [{
true // outline
// further params optional, omitted
];
} forEach GVAR(drawTargets);
}, 0, []] call CBA_fnc_addPerFrameHandler;
true;
} count (
(localNamespace getVariable [QEGVAR(client,nearMen), []]) select {
// is unconscious and is NOT in vehicle and is within draw range
(_x getVariable ["ACE_isUnconscious", false]) &&
isNull (objectParent _x) &&
player distance _x <= GVAR(setting_drawRange)
}
);
};
// add codeblock to common array
[_code] call EFUNC(client,registerPFHCode);

View File

@@ -1,7 +1,8 @@
#include "..\script_component.hpp"
// List of units to draw icons for
GVAR(drawTargets) = [];
if (!hasInterface) exitWith {};
call FUNC(draw3D);
[
LEVEL_DEBUG,

View File

@@ -0,0 +1,103 @@
#include "..\script_component.hpp"
private _vehicleFlagsCfg = call FUNC(getVehicleFlagsCfg);
if (!isClass _vehicleFlagsCfg) exitWith {
["WARNING: Vehicle Flags: Vehicle Flags config not found. Vehicle Flags will not be available."] call BIS_fnc_error;
};
private _baseClassesToApplyActionsFor =
(_vehicleFlagsCfg >> "baseClassesToApplyActionsFor") call BIS_fnc_getCfgDataArray;
private _flagCategoryCfgs = (_vehicleFlagsCfg >> "FlagCategories") call BIS_fnc_returnChildren;
{ // forEach _baseClassesToApplyActionsFor
private _parentClass = _x;
////////////////////////////////////////////////////////////////////////
// create the root action
////////////////////////////////////////////////////////////////////////
private _rootActionID = QGVAR(SetVehicleFlagAction);
private _flagRootAction = [
_rootActionID, // id
"Set Vehicle Flag", // displayed title
"\A3\ui_f\data\map\markers\flags\nato_ca.paa", // flag icon
{
params ["_target", "_player", "_params"];
// set broadcasted variable of self to indicate we're looking at flags
_player setVariable [QGVAR(inFlagMenu), true, true];
[{_this setVariable [QGVAR(inFlagMenu), false, true];}, _player, 3] call CBA_fnc_waitAndExecute;
true
}, // statement
{
params ["_target", "_player", "_params"];
// _params params ["_parentActionID", "_flagCategories"];
// check if vehicle is excluded
private _excluded = [typeOf _target] call FUNC(isClassExcluded);
if (_excluded || !alive _target) exitWith {false};
true;
}, // condition
{
////////////////////////////////////////////////////////////////////////
// create the flag category actions (with nested flag actions)
////////////////////////////////////////////////////////////////////////
params ["_target", "_player", "_params"];
_params params ["_rootActionID"];
private _vehicleFlagsCfg = call FUNC(getVehicleFlagsCfg);
if (isNull _vehicleFlagsCfg) exitWith {[]};
private _flagCategoryCfgs = (_vehicleFlagsCfg >> "FlagCategories") call BIS_fnc_returnChildren;
// return category child actions with individual flag actions nested as children
[_rootActionID, _flagCategoryCfgs] call FUNC(getActionsFlagCategories);
}, // child code
[_rootActionID], // params
nil, // position
4, // distance
[false, false, false, true, false], // other params - run on hover is true
nil // modifier function code
] call ace_interact_menu_fnc_createAction;
////////////////////////////////////////////////////////////////////////
// add root action to add flags
////////////////////////////////////////////////////////////////////////
[
_parentClass, // parent classname
0, // action 0 or self-action 1
["ACE_MainActions"], // parent
_flagRootAction, // action
true // apply to child classes
] call ace_interact_menu_fnc_addActionToClass;
////////////////////////////////////////////////////////////////////////
// add action to remove flag under the root action
////////////////////////////////////////////////////////////////////////
// create action
private _removeFlagAction = [
_rootActionID + "_removeflag", // id
"Remove Flag", // displayed title
"\A3\ui_f\data\map\markers\flags\nato_ca.paa", // flag icon
{
params ["_target", "_player", "_params"];
_target forceFlagTexture "";
}, // statement
{
params ["_target", "_player", "_params"];
alive _target && getForcedFlagTexture _target != "";
}, // condition
nil // child code
] call ace_interact_menu_fnc_createAction;
// add the action to the vehicle
// in this class event handler, this#0 will be the vehicle
[
_parentClass, // parent classname
0, // action 0 or self-action 1
["ACE_MainActions", _rootActionID], // parent
_removeFlagAction, // action
true // apply to child classes
] call ace_interact_menu_fnc_addActionToClass;
} forEach _baseClassesToApplyActionsFor;

View File

@@ -0,0 +1,40 @@
#include "..\script_component.hpp"
params ["_target", "_player", "_params", "_flagOptionCfg"];
_params params ["_rootActionID", "_flagCategoryActionID", "_flagSubclassesCfgs"];
private _flagOptionID = getText(_flagOptionCfg >> "actionID");
private _flagOptionTitle = getText(_flagOptionCfg >> "actionTitle");
private _flagOptionTexture = getText(_flagOptionCfg >> "texture");
// if the texture doesn't exist at the config path, skip this flag option
if (not (fileExists _flagOptionTexture)) then {
diag_log format ["WARN: Flag option texture not found: %1", _flagOptionTexture];
continue
};
// diag_log format ["NewFlagOption: %1 %2", _flagOptionID, _flagOptionData];
private _newFlagOption = [
_rootActionID + "_" + _flagCategoryActionID + "_" + _flagOptionID, // id
_flagOptionTitle, // displayed title
_flagOptionTexture, // flag icon
{
params ["_target", "_player", "_params"];
_params params ["_flagOptionTexture"];
_target forceFlagTexture _flagOptionTexture;
}, // statement
{
params ["_target", "_player", "_params"];
alive _target;
// true;
}, // condition
nil, // child code
[_flagOptionTexture], // params
nil, // position
4, // distance
[false, false, false, false, false] // other params
] call ace_interact_menu_fnc_createAction;
_newFlagOption;

View File

@@ -0,0 +1,54 @@
#include "..\script_component.hpp"
// diag_log format ["NewFlagCategory: %1 %2", _flagCategory, _flagOptions];
params ["_rootActionID", "_flagCategoryCfg"];
private _flagCategoryActionID = getText(_flagCategoryCfg >> "actionID");
private _flagCategoryTitle = getText(_flagCategoryCfg >> "actionTitle");
private _flagSubclassesCfgs = _flagCategoryCfg call BIS_fnc_returnChildren;
private _flagCategoryAction = [
_rootActionID + "_" + _flagCategoryActionID, // id
_flagCategoryTitle, // displayed title
getText((_flagSubclassesCfgs#0) >> "texture"), // flag icon for category - use first flag option
{true}, // statement
{
params ["_target", "_player", "_params"];
alive _target;
// true;
}, // condition
{
// generate child code under category
// this is the level where actual flag options will be displayed
params ["_target", "_player", "_params"];
// these params are passed from the parent action
_params params ["_rootActionID", "_flagCategoryActionID", "_flagSubclassesCfgs"];
private _individualFlagActions = [];
{ // forEach _flagSubclassesCfgs; // we'll generate flag options for each category
private _flagOptionCfg = _x;
// generate flag option for this flag option
private _newFlagOption = [
_target,
_player,
_params,
_flagOptionCfg
] call FUNC(compileFlagAction);
// add flag option to category subactions
_individualFlagActions pushBack [_newFlagOption, [], _target];
} forEach _flagSubclassesCfgs;
// return the generated flag options to the category as child actions
_individualFlagActions;
}, // child code
[_rootActionID, _flagCategoryActionID, _flagSubclassesCfgs], // params
nil, // position
4, // distance
[false, false, false, false, false], // other params
nil // modifier function code
] call ace_interact_menu_fnc_createAction;
_flagCategoryAction;

View File

@@ -0,0 +1,24 @@
#include "..\script_component.hpp"
// we'll use this to display status if nearby players are in the flag menu
// adds codeblock to common array to be processed per frame
private _code = {
private _unitsToDraw = (localNamespace getVariable [QEGVAR(client,nearMen), []]) select {
(_x getVariable [QGVAR(inFlagMenu), false]) && {
// distance within X meters
player distance _x <= 15 ||
// check unit not in a vehicle
isNull (objectParent _x)
}
};
[
_unitsToDraw,
"",
"Setting vehicle flag...",
[0.9, 0.9, 0.9, 1]
] call EFUNC(common,draw3dIconStatus);
};
// add codeblock to common array
[_code] call EFUNC(client,registerPFHCode);

View File

@@ -5,86 +5,25 @@
0: STRING - Parent action ID
1: ARRAY - Flag category configs
*/
#include "..\script_component.hpp"
params ["_rootActionID", "_flagCategoryCfgs"];
private _allCategoryActions = [];
{
// diag_log format ["NewFlagCategory: %1 %2", _flagCategory, _flagOptions];
private _flagCategoryCfg = _x;
private _flagCategoryActionID = getText(_flagCategoryCfg >> "actionID");
private _flagCategoryTitle = getText(_flagCategoryCfg >> "actionTitle");
private _flagSubclassesCfgs = _flagCategoryCfg call BIS_fnc_returnChildren;
private _flagCategoryAction = [
_rootActionID + "_" + _flagCategoryActionID, // id
_flagCategoryTitle, // displayed title
getText((_flagSubclassesCfgs#0) >> "texture"), // flag icon for category - use first flag option
{true}, // statement
_flagCategoryActions = [];
if (configName _x == "SimpleShapes") then {
{
params ["_target", "_player", "_params"];
alive _target;
// true;
}, // condition
{
// generate child code under category
// this is the level where actual flag options will be displayed
params ["_target", "_player", "_params"];
_params params ["_rootActionID", "_flagCategoryActionID", "_flagSubclassesCfgs"];
private _individualFlagActions = [];
{ // forEach _flagSubclassesCfgs;
private _flagOptionCfg = _x;
private _flagOptionID = getText(_flagOptionCfg >> "actionID");
private _flagOptionTitle = getText(_flagOptionCfg >> "actionTitle");
private _flagOptionTexture = getText(_flagOptionCfg >> "texture");
// if the texture doesn't exist at the config path, skip this flag option
if (not (fileExists _flagOptionTexture)) then {continue};
// diag_log format ["NewFlagOption: %1 %2", _flagOptionID, _flagOptionData];
private _newFlagOption = [
_rootActionID + "_" + _flagCategoryActionID + "_" + _flagOptionID, // id
_flagOptionTitle, // displayed title
_flagOptionTexture, // flag icon
{
params ["_target", "_player", "_params"];
_params params ["_flagOptionTexture"];
_target forceFlagTexture _flagOptionTexture;
}, // statement
{
params ["_target", "_player", "_params"];
alive _target;
// true;
}, // condition
nil, // child code
[_flagOptionTexture], // params
nil, // position
4, // distance
[false, false, false, false, false] // other params
] call ace_interact_menu_fnc_createAction;
// add flag option to category subactions
_individualFlagActions pushBack [_newFlagOption, [], _target];
} forEach _flagSubclassesCfgs;
// return the generated flag options to the category as child actions
_individualFlagActions;
}, // child code
[_rootActionID, _flagCategoryActionID, _flagSubclassesCfgs], // params
nil, // position
4, // distance
[false, false, false, false, false], // other params
nil // modifier function code
] call ace_interact_menu_fnc_createAction;
_flagCategoryActions pushBack ([_rootActionID, _x] call FUNC(compileFlagCategoryAction));
} forEach (_x call BIS_fnc_returnChildren);
} else {
_flagCategoryActions pushBack ([_rootActionID, _x] call FUNC(compileFlagCategoryAction));
};
// add category to all category actions array
_allCategoryActions pushBack [_flagCategoryAction, [], _target];
{
_allCategoryActions pushBack [_x, [], _target];
} forEach _flagCategoryActions;
} forEach _flagCategoryCfgs;
_allCategoryActions;

View File

@@ -2,101 +2,8 @@
if (!hasInterface) exitWith {};
private _vehicleFlagsCfg = call FUNC(getVehicleFlagsCfg);
if (!isClass _vehicleFlagsCfg) exitWith {
["WARNING: Vehicle Flags: Vehicle Flags config not found. Vehicle Flags will not be available."] call BIS_fnc_error;
};
private _baseClassesToApplyActionsFor =
(_vehicleFlagsCfg >> "baseClassesToApplyActionsFor") call BIS_fnc_getCfgDataArray;
private _flagCategoryCfgs = (_vehicleFlagsCfg >> "FlagCategories") call BIS_fnc_returnChildren;
{ // forEach _baseClassesToApplyActionsFor
private _parentClass = _x;
////////////////////////////////////////////////////////////////////////
// create the root action
////////////////////////////////////////////////////////////////////////
private _rootActionID = QGVAR(SetVehicleFlagAction);
private _flagRootAction = [
_rootActionID, // id
"Set Vehicle Flag", // displayed title
"\A3\ui_f\data\map\markers\flags\nato_ca.paa", // flag icon
{true}, // statement
{
params ["_target", "_player", "_params"];
// _params params ["_parentActionID", "_flagCategories"];
// check if vehicle is excluded
private _excluded = [typeOf _target] call FUNC(isClassExcluded);
if (_excluded || !alive _target) exitWith {false};
true;
}, // condition
{
////////////////////////////////////////////////////////////////////////
// create the flag category actions (with nested flag actions)
////////////////////////////////////////////////////////////////////////
params ["_target", "_player", "_params"];
_params params ["_rootActionID"];
private _vehicleFlagsCfg = call FUNC(getVehicleFlagsCfg);
if (isNull _vehicleFlagsCfg) exitWith {[]};
private _flagCategoryCfgs = (_vehicleFlagsCfg >> "FlagCategories") call BIS_fnc_returnChildren;
// return category child actions with individual flag actions nested as children
[_rootActionID, _flagCategoryCfgs] call FUNC(getActionsFlagCategories);
}, // child code
[_rootActionID], // params
nil, // position
4, // distance
[false, false, false, false, false], // other params
nil // modifier function code
] call ace_interact_menu_fnc_createAction;
////////////////////////////////////////////////////////////////////////
// add root action to add flags
////////////////////////////////////////////////////////////////////////
[
_parentClass, // parent classname
0, // action 0 or self-action 1
["ACE_MainActions"], // parent
_flagRootAction, // action
true // apply to child classes
] call ace_interact_menu_fnc_addActionToClass;
////////////////////////////////////////////////////////////////////////
// add action to remove flag under the root action
////////////////////////////////////////////////////////////////////////
// create action
private _removeFlagAction = [
_rootActionID + "_removeflag", // id
"Remove Flag", // displayed title
"\A3\ui_f\data\map\markers\flags\nato_ca.paa", // flag icon
{
params ["_target", "_player", "_params"];
_target forceFlagTexture "";
}, // statement
{
params ["_target", "_player", "_params"];
alive _target && getForcedFlagTexture _target != "";
}, // condition
nil // child code
] call ace_interact_menu_fnc_createAction;
// add the action to the vehicle
// in this class event handler, this#0 will be the vehicle
[
_parentClass, // parent classname
0, // action 0 or self-action 1
["ACE_MainActions", _rootActionID], // parent
_removeFlagAction, // action
true // apply to child classes
] call ace_interact_menu_fnc_addActionToClass;
} forEach _baseClassesToApplyActionsFor;
call FUNC(addFlagActions);
call FUNC(draw3D);
[
LEVEL_DEBUG,

2
images/leaflets/.gitkeep Normal file
View File

@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

View File

@@ -1,4 +1,4 @@
author = "MISSION AUTHOR";
author = "MISSION AUTHOR";
onLoadName = "THIS APPEARS ON TOP OF THE LOADING SCREEN IMAGE";
loadScreen = "mission.jpg";
onLoadMission = "THIS APPEARS BELOW THE LOADING SCREEN IMAGE";
@@ -9,8 +9,28 @@ overviewText = "THIS IS WHERE YOU DESCRIBE THE MISSION IN THE #MISSION LIST";
// The name for the series of missions of your campaign. Used for organizational and search purposes
missionSeries = "MY SERIES NAME";
// activate via #ace-fortify west base 2000
// What kind of mission is this? (Use only one)
missionGroup = "17thSaturdayOp";
// missionGroup = "17thFridayOp";
// missionGroup = "17thWednesdayOp";
// missionGroup = "17thFTX";
// missionGroup = "17thTraining";
// Add waypoints to players' MicroDAGR devices
// respawn locations (bases) are added by default, don't put them here
custom_microdagr_waypoints[] = {
// the first element is the waypoint name
// the second element is the position of the waypoint - you may use a string for map grid (up to 10 digit) or an array for {X, Y} coordinates
// the third element is optional - provide the variable name of an object if you want to use its initial position instead
// {"WAYPOINT NAME", {POSITION <[x,y]>}, OBJECT <objNull>},
// EXAMPLES:
// {"KAVALA HOSPITAL", {1234.56, 7890.12}, ""},
// {"CAMP TEMPEST", "03421460, ""},
// {"MY CUSTOM OBJECT", {}, "myCustomObject"}
};
// activate via #ace-fortify west base 2000
class ACEX_Fortify_Presets {
class base {
displayName = "Ken Custom";

Binary file not shown.