@jtff/miztemplate-lib 3.7.5 → 3.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -434,12 +434,24 @@ function deleteSubRangeUnits(param)
|
|
|
434
434
|
local subRangeConfig = param[3]
|
|
435
435
|
local radioCommandSubRange = param[4]
|
|
436
436
|
local blnMute = param[5]
|
|
437
|
-
for i = 1, #groupsToSpawn do
|
|
438
|
-
destroyGroup(groupsToSpawn[i])
|
|
439
|
-
end
|
|
440
|
-
|
|
441
437
|
local subRangeName = subRangeConfig.name
|
|
442
438
|
local staticsToDelete = subRangeConfig.staticsToSpawn
|
|
439
|
+
if (subRangeConfig.groupsToSpawn ~= nil) then
|
|
440
|
+
for i = 1, #groupsToSpawn do
|
|
441
|
+
destroyGroup(groupsToSpawn[i])
|
|
442
|
+
end
|
|
443
|
+
else
|
|
444
|
+
jtff_log.warn(string.format("No Groups in %s", subRangeName), "RANGE")
|
|
445
|
+
end
|
|
446
|
+
if (subRangeConfig.randomGroupsToSpawn ~= nil) then
|
|
447
|
+
local groupsToDestroy = subRangeConfig.randomGroupsToSpawn
|
|
448
|
+
for i = 1, #groupsToDestroy do
|
|
449
|
+
destroyGroup(subRangeConfig.randomGroupsToSpawn[i])
|
|
450
|
+
end
|
|
451
|
+
else
|
|
452
|
+
jtff_log.warn(string.format("No random*W Groups in %s", subRangeName), "RANGE")
|
|
453
|
+
end
|
|
454
|
+
|
|
443
455
|
if (staticsToDelete ~= nil)then
|
|
444
456
|
destroyStatics(staticsToDelete, subRangeName)
|
|
445
457
|
else
|
|
@@ -715,8 +727,8 @@ end
|
|
|
715
727
|
function markGroupOnMap(param)
|
|
716
728
|
local groupsToSpawn = param[1]
|
|
717
729
|
local side = param[2]
|
|
718
|
-
for
|
|
719
|
-
local group_name = string.format("%s", groupsToSpawn[
|
|
730
|
+
for index = 1, #groupsToSpawn do
|
|
731
|
+
local group_name = string.format("%s", groupsToSpawn[index])
|
|
720
732
|
jtff_log.info(string.format("Mark on map all groups with name prefix %s", group_name),"MARK")
|
|
721
733
|
local dcs_groups = SET_GROUP:New():FilterPrefixes(group_name):FilterOnce()
|
|
722
734
|
dcs_groups:ForEachGroupAlive(function(group_alive)
|
|
@@ -844,6 +856,8 @@ function SpawnRanges(param)
|
|
|
844
856
|
local subRangeConfig = param[3]
|
|
845
857
|
local subRangeName = subRangeConfig.name
|
|
846
858
|
local groupsToSpawn = subRangeConfig.groupsToSpawn
|
|
859
|
+
local randomGroupsToSpawn = subRangeConfig.randomGroupsToSpawn
|
|
860
|
+
local nbRandomGroupsToSpawn = subRangeConfig.nbRandomGroupsToSpawn or 1
|
|
847
861
|
local staticsToSpawn = subRangeConfig.staticsToSpawn
|
|
848
862
|
local holdFire = subRangeConfig.holdFire
|
|
849
863
|
local engageAirWeapons = subRangeConfig.engageAirWeapons
|
|
@@ -851,7 +865,7 @@ function SpawnRanges(param)
|
|
|
851
865
|
local redAlert = subRangeConfig.redAlert
|
|
852
866
|
|
|
853
867
|
jtff_log.info(string.format("SpawnRanges : Range %s - Targets %s", rangeName, subRangeName),"RANGE")
|
|
854
|
-
if (staticsToSpawn ~= nil)then
|
|
868
|
+
if (staticsToSpawn ~= nil) then
|
|
855
869
|
for index, staticToSpawn in ipairs(staticsToSpawn) do
|
|
856
870
|
local spawnStatic = nil
|
|
857
871
|
if (staticToSpawn.name ~= nil) then
|
|
@@ -910,46 +924,107 @@ function SpawnRanges(param)
|
|
|
910
924
|
jtff_log.warn(string.format("No static in %s", subRangeName),"RANGE")
|
|
911
925
|
end
|
|
912
926
|
|
|
913
|
-
|
|
914
|
-
local
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
local
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
927
|
+
if (randomGroupsToSpawn ~= nil) then
|
|
928
|
+
local availableRandomGroupsList = randomGroupsToSpawn
|
|
929
|
+
nbRandomGroupsToSpawn = math.min(nbRandomGroupsToSpawn,#availableRandomGroupsList)
|
|
930
|
+
--math.randomseed(os.time())
|
|
931
|
+
for i = 1, nbRandomGroupsToSpawn do
|
|
932
|
+
local randomIndex = math.random(1, #availableRandomGroupsList)
|
|
933
|
+
local groupNameToSpawn = string.format("%s", availableRandomGroupsList[randomIndex])
|
|
934
|
+
local finalList = {}
|
|
935
|
+
for index, value in ipairs(availableRandomGroupsList) do
|
|
936
|
+
if index ~= randomIndex then
|
|
937
|
+
table.insert(finalList, value)
|
|
938
|
+
end
|
|
923
939
|
end
|
|
924
|
-
|
|
925
|
-
|
|
940
|
+
availableRandomGroupsList = finalList
|
|
941
|
+
|
|
942
|
+
if (GROUP:FindByName(groupNameToSpawn) ~= nil) then
|
|
943
|
+
local spawnGroup = SPAWN:New(groupNameToSpawn)
|
|
944
|
+
jtff_log.info(string.format("SPAWN %s", groupNameToSpawn), "RANGE")
|
|
945
|
+
local groupSpawning
|
|
946
|
+
if (subRangeConfig.spawnZone) then
|
|
947
|
+
groupSpawning = spawnGroup:SpawnInZone(ZONE:New(subRangeConfig.spawnZone),true)
|
|
948
|
+
else
|
|
949
|
+
groupSpawning = spawnGroup:Spawn()
|
|
950
|
+
end
|
|
951
|
+
markGroupOnMap({{groupNameToSpawn}, rangeConfig.benefit_coalition})
|
|
952
|
+
if (holdFire) then
|
|
953
|
+
groupSpawning:OptionROEHoldFire()
|
|
954
|
+
else
|
|
955
|
+
groupSpawning:OptionROEOpenFire()
|
|
956
|
+
end
|
|
957
|
+
if (engageAirWeapons) then
|
|
958
|
+
groupSpawning:SetOption(AI.Option.Ground.id.ENGAGE_AIR_WEAPONS, true)
|
|
959
|
+
end
|
|
960
|
+
if (activateAI == true or activateAI == false) then
|
|
961
|
+
groupSpawning:SetAIOnOff(activateAI)
|
|
962
|
+
end
|
|
963
|
+
if (redAlert == true or redAlert == false) then
|
|
964
|
+
if (redAlert == true) then
|
|
965
|
+
groupSpawning:OptionAlarmStateRed()
|
|
966
|
+
else
|
|
967
|
+
groupSpawning:OptionAlarmStateGreen()
|
|
968
|
+
end
|
|
969
|
+
else
|
|
970
|
+
groupSpawning:OptionAlarmStateAuto()
|
|
971
|
+
end
|
|
972
|
+
if (string.find(groupNameToSpawn, "SAM") ~= nil) then
|
|
973
|
+
sead:UpdateSet(groupNameToSpawn)
|
|
974
|
+
jtff_log.info(string.format("SEAD for %s", groupNameToSpawn),"RANGE")
|
|
975
|
+
end
|
|
926
976
|
else
|
|
927
|
-
|
|
977
|
+
jtff_log.error(string.format("GROUP to spawn %s not found in mission", groupNameToSpawn),"RANGE")
|
|
928
978
|
end
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
if (
|
|
936
|
-
|
|
937
|
-
|
|
979
|
+
end
|
|
980
|
+
end
|
|
981
|
+
|
|
982
|
+
if (groupsToSpawn ~= nil) then
|
|
983
|
+
for i = 1, #groupsToSpawn do
|
|
984
|
+
local groupNameToSpawn = string.format("%s", groupsToSpawn[i])
|
|
985
|
+
if (GROUP:FindByName(groupNameToSpawn) ~= nil) then
|
|
986
|
+
local spawnGroup = SPAWN:New(groupNameToSpawn)
|
|
987
|
+
jtff_log.info(string.format("SPAWN %s", groupNameToSpawn), "RANGE")
|
|
988
|
+
local groupSpawning
|
|
989
|
+
if (subRangeConfig.spawnZone) then
|
|
990
|
+
groupSpawning = spawnGroup:SpawnInZone(ZONE:New(subRangeConfig.spawnZone),true)
|
|
991
|
+
else
|
|
992
|
+
groupSpawning = spawnGroup:Spawn()
|
|
993
|
+
end
|
|
994
|
+
if (holdFire) then
|
|
995
|
+
groupSpawning:OptionROEHoldFire()
|
|
996
|
+
else
|
|
997
|
+
groupSpawning:OptionROEOpenFire()
|
|
998
|
+
end
|
|
999
|
+
if (engageAirWeapons) then
|
|
1000
|
+
groupSpawning:SetOption(AI.Option.Ground.id.ENGAGE_AIR_WEAPONS, true)
|
|
1001
|
+
end
|
|
1002
|
+
if (activateAI == true or activateAI == false) then
|
|
1003
|
+
groupSpawning:SetAIOnOff(activateAI)
|
|
1004
|
+
end
|
|
1005
|
+
if (redAlert == true or redAlert == false) then
|
|
1006
|
+
if (redAlert == true) then
|
|
1007
|
+
groupSpawning:OptionAlarmStateRed()
|
|
1008
|
+
else
|
|
1009
|
+
groupSpawning:OptionAlarmStateGreen()
|
|
1010
|
+
end
|
|
938
1011
|
else
|
|
939
|
-
groupSpawning:
|
|
1012
|
+
groupSpawning:OptionAlarmStateAuto()
|
|
1013
|
+
end
|
|
1014
|
+
if (string.find(groupNameToSpawn, "SAM") ~= nil) then
|
|
1015
|
+
sead:UpdateSet(groupNameToSpawn)
|
|
1016
|
+
jtff_log.info(string.format("SEAD for %s", groupNameToSpawn),"RANGE")
|
|
940
1017
|
end
|
|
941
1018
|
else
|
|
942
|
-
|
|
943
|
-
end
|
|
944
|
-
if (string.find(groupNameToSpawn, "SAM") ~= nil) then
|
|
945
|
-
sead:UpdateSet(groupNameToSpawn)
|
|
946
|
-
jtff_log.info(string.format("SEAD for %s", groupNameToSpawn),"RANGE")
|
|
1019
|
+
jtff_log.error(string.format("GROUP to spawn %s not found in mission", groupNameToSpawn),"RANGE")
|
|
947
1020
|
end
|
|
948
|
-
else
|
|
949
|
-
jtff_log.error(string.format("GROUP to spawn %s not found in mission", groupNameToSpawn),"RANGE")
|
|
950
1021
|
end
|
|
1022
|
+
markGroupOnMap({groupsToSpawn, rangeConfig.benefit_coalition})
|
|
1023
|
+
else
|
|
1024
|
+
jtff_log.warn(string.format("No GROUP to spawn in subRange %s settings !",subRangeName),"RANGE")
|
|
951
1025
|
end
|
|
952
1026
|
|
|
1027
|
+
|
|
953
1028
|
radioCommandSubRange:RemoveSubMenus()
|
|
954
1029
|
local CommandZoneDetroy = MENU_COALITION_COMMAND:New(rangeConfig.benefit_coalition, "Delete", radioCommandSubRange,
|
|
955
1030
|
deleteSubRangeUnits, {groupsToSpawn, rangeConfig, subRangeConfig, radioCommandSubRange, true})
|
|
@@ -982,7 +1057,6 @@ function SpawnRanges(param)
|
|
|
982
1057
|
radioCommandSubRange, giveListOfUnitsAliveInGroup, {groupsToSpawn, rangeConfig.benefit_coalition, 5})
|
|
983
1058
|
MESSAGE:NewType(string.format("Units in range %s(%s) in place", rangeName, subRangeName), MESSAGE.Type.Information)
|
|
984
1059
|
:ToCoalition(rangeConfig.benefit_coalition)
|
|
985
|
-
markGroupOnMap({groupsToSpawn, rangeConfig.benefit_coalition})
|
|
986
1060
|
end
|
|
987
1061
|
|
|
988
1062
|
function SpawnFacRangesDelay(param)
|
|
@@ -87,7 +87,7 @@ for index, capzoneconfig in ipairs(TrainingCAPConfig) do
|
|
|
87
87
|
end
|
|
88
88
|
end
|
|
89
89
|
if capzoneconfig.coalitionCAP == coalition.side.RED then
|
|
90
|
-
if capzoneconfig.drawzone then
|
|
90
|
+
if ((capzoneconfig.drawzone == true) or false) then
|
|
91
91
|
objCapZone.objEngageZone:DrawZone(
|
|
92
92
|
coalition.side.BLUE,
|
|
93
93
|
{1,0,0},
|
|
@@ -98,19 +98,19 @@ for index, capzoneconfig in ipairs(TrainingCAPConfig) do
|
|
|
98
98
|
true,
|
|
99
99
|
nil
|
|
100
100
|
)
|
|
101
|
+
objCapZone.objEngageZone:GetCoordinate():TextToAll(
|
|
102
|
+
"CAP Training " .. capzoneconfig.name,
|
|
103
|
+
coalition.side.BLUE,
|
|
104
|
+
{1,0,0},
|
|
105
|
+
1,
|
|
106
|
+
{1,0,0},
|
|
107
|
+
0,
|
|
108
|
+
20,
|
|
109
|
+
true
|
|
110
|
+
)
|
|
101
111
|
end
|
|
102
|
-
objCapZone.objEngageZone:GetCoordinate():TextToAll(
|
|
103
|
-
"CAP Training " .. capzoneconfig.name,
|
|
104
|
-
coalition.side.BLUE,
|
|
105
|
-
{1,0,0},
|
|
106
|
-
1,
|
|
107
|
-
{1,0,0},
|
|
108
|
-
0,
|
|
109
|
-
20,
|
|
110
|
-
true
|
|
111
|
-
)
|
|
112
112
|
else
|
|
113
|
-
if capzoneconfig.drawzone then
|
|
113
|
+
if ((capzoneconfig.drawzone == true) or false) then
|
|
114
114
|
objCapZone.objEngageZone:DrawZone(
|
|
115
115
|
coalition.side.RED,
|
|
116
116
|
{1,0,0},
|
|
@@ -121,17 +121,17 @@ for index, capzoneconfig in ipairs(TrainingCAPConfig) do
|
|
|
121
121
|
true,
|
|
122
122
|
nil
|
|
123
123
|
)
|
|
124
|
+
objCapZone.objEngageZone:GetCoordinate():TextToAll(
|
|
125
|
+
"CAP Training " .. capzoneconfig.name,
|
|
126
|
+
coalition.side.RED,
|
|
127
|
+
{1,0,0},
|
|
128
|
+
1,
|
|
129
|
+
{1,0,0},
|
|
130
|
+
0,
|
|
131
|
+
20,
|
|
132
|
+
true
|
|
133
|
+
)
|
|
124
134
|
end
|
|
125
|
-
objCapZone.objEngageZone:GetCoordinate():TextToAll(
|
|
126
|
-
"CAP Training " .. capzoneconfig.name,
|
|
127
|
-
coalition.side.RED,
|
|
128
|
-
{1,0,0},
|
|
129
|
-
1,
|
|
130
|
-
{1,0,0},
|
|
131
|
-
0,
|
|
132
|
-
20,
|
|
133
|
-
true
|
|
134
|
-
)
|
|
135
135
|
end
|
|
136
136
|
objCapZone.customconfig = capzoneconfig
|
|
137
137
|
CAPZoneArray[compteur] = objCapZone
|
|
@@ -115,7 +115,7 @@ function startCapWarZone(objCapWarZone)
|
|
|
115
115
|
end
|
|
116
116
|
end
|
|
117
117
|
if objCapWarZone.customconfig.coalitionCAP == coalition.side.RED then
|
|
118
|
-
if objCapWarZone.customconfig.drawzone then
|
|
118
|
+
if ((objCapWarZone.customconfig.drawzone == true) or false) then
|
|
119
119
|
CapZone:DrawZone(
|
|
120
120
|
coalition.side.BLUE,
|
|
121
121
|
{1,0,1},
|
|
@@ -126,19 +126,19 @@ function startCapWarZone(objCapWarZone)
|
|
|
126
126
|
true,
|
|
127
127
|
nil
|
|
128
128
|
)
|
|
129
|
+
CapZone:GetCoordinate():TextToAll(
|
|
130
|
+
"CAP Warzone " .. objCapWarZone.customconfig.name,
|
|
131
|
+
coalition.side.BLUE,
|
|
132
|
+
{1,0,0},
|
|
133
|
+
1,
|
|
134
|
+
{1,0,0},
|
|
135
|
+
0,
|
|
136
|
+
20,
|
|
137
|
+
true
|
|
138
|
+
)
|
|
129
139
|
end
|
|
130
|
-
CapZone:GetCoordinate():TextToAll(
|
|
131
|
-
"CAP Warzone " .. objCapWarZone.customconfig.name,
|
|
132
|
-
coalition.side.BLUE,
|
|
133
|
-
{1,0,0},
|
|
134
|
-
1,
|
|
135
|
-
{1,0,0},
|
|
136
|
-
0,
|
|
137
|
-
20,
|
|
138
|
-
true
|
|
139
|
-
)
|
|
140
140
|
else
|
|
141
|
-
if objCapWarZone.customconfig.drawzone then
|
|
141
|
+
if ((objCapWarZone.customconfig.drawzone == true) or false) then
|
|
142
142
|
CapZone:DrawZone(
|
|
143
143
|
coalition.side.RED,
|
|
144
144
|
{1,0,1},
|
|
@@ -149,17 +149,17 @@ function startCapWarZone(objCapWarZone)
|
|
|
149
149
|
true,
|
|
150
150
|
nil
|
|
151
151
|
)
|
|
152
|
+
CapZone:GetCoordinate():TextToAll(
|
|
153
|
+
"CAP Warzone " .. objCapWarZone.customconfig.name,
|
|
154
|
+
coalition.side.RED,
|
|
155
|
+
{1,0,0},
|
|
156
|
+
1,
|
|
157
|
+
{1,0,0},
|
|
158
|
+
0,
|
|
159
|
+
20,
|
|
160
|
+
true
|
|
161
|
+
)
|
|
152
162
|
end
|
|
153
|
-
CapZone:GetCoordinate():TextToAll(
|
|
154
|
-
"CAP Warzone " .. objCapWarZone.customconfig.name,
|
|
155
|
-
coalition.side.RED,
|
|
156
|
-
{1,0,0},
|
|
157
|
-
1,
|
|
158
|
-
{1,0,0},
|
|
159
|
-
0,
|
|
160
|
-
20,
|
|
161
|
-
true
|
|
162
|
-
)
|
|
163
163
|
end
|
|
164
164
|
jtff_log.info(string.format("Assigned Squadron %s to %s patrol Zone...", CAPSquadronName, CapZoneName),"CAP_WAR_ZONE")
|
|
165
165
|
objCapWarZone.objDispatcher:SetSquadronCap(
|
|
@@ -26,7 +26,7 @@ for index, foxzoneconfig in ipairs(FoxRangesConfig) do
|
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
jtff_log.info('Launch zone Polygon created : '.. objFoxZone.objLaunchZone:GetName() ..'...',"FOX_ZONE")
|
|
29
|
-
if foxzoneconfig.drawzone then
|
|
29
|
+
if ((foxzoneconfig.drawzone == true) or false) then
|
|
30
30
|
objFoxZone.objLaunchZone:DrawZone(
|
|
31
31
|
-1,
|
|
32
32
|
{1,0,0},
|
|
@@ -37,17 +37,17 @@ for index, foxzoneconfig in ipairs(FoxRangesConfig) do
|
|
|
37
37
|
true,
|
|
38
38
|
nil
|
|
39
39
|
)
|
|
40
|
+
objFoxZone.objLaunchZone:GetCoordinate():TextToAll(
|
|
41
|
+
"Missile trainer " .. foxzoneconfig.name,
|
|
42
|
+
-1,
|
|
43
|
+
{1,0,0},
|
|
44
|
+
1,
|
|
45
|
+
{1,0,0},
|
|
46
|
+
0,
|
|
47
|
+
20,
|
|
48
|
+
true
|
|
49
|
+
)
|
|
40
50
|
end
|
|
41
|
-
objFoxZone.objLaunchZone:GetCoordinate():TextToAll(
|
|
42
|
-
"Missile trainer " .. foxzoneconfig.name,
|
|
43
|
-
-1,
|
|
44
|
-
{1,0,0},
|
|
45
|
-
1,
|
|
46
|
-
{1,0,0},
|
|
47
|
-
0,
|
|
48
|
-
20,
|
|
49
|
-
true
|
|
50
|
-
)
|
|
51
51
|
if foxzoneconfig.safeZoneGroupName then
|
|
52
52
|
objFoxZone.objSafeZone = ZONE_POLYGON:New(
|
|
53
53
|
'FOX_SAFE_ZONE_'..foxzoneconfig.name,
|