From b1b7163c548b82a01f2ca3b989bd52c446189f1a Mon Sep 17 00:00:00 2001 From: David Pierron Date: Sat, 1 Feb 2025 11:34:49 +0100 Subject: [PATCH] corrected the ctld.unpackAASystem function (issue #140) --- CTLD.lua | 65 +++++++++++++++++++++++++++---------------- test-dev-dynamic.miz | Bin 552784 -> 552748 bytes 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/CTLD.lua b/CTLD.lua index bd3a352..4180705 100644 --- a/CTLD.lua +++ b/CTLD.lua @@ -401,6 +401,7 @@ ctld.hoverPickup = true -- if set to false you can load crates with the F10 men ctld.loadCrateFromMenu = true -- if set to true, you can load crates with the F10 menu OR hovering, in case of using choppers and planes for example. ctld.enableCrates = true -- if false, Helis will not be able to spawn or unpack crates so will be normal CTTS +ctld.enableAllCrates = true -- if false, the "all crates" menu items will not be displayed ctld.slingLoad = false -- if false, crates can be used WITHOUT slingloading, by hovering above the crate, simulating slingloading but not the weight... -- There are some bug with Sling-loading that can cause crashes, if these occur set slingLoad to false -- to use the other method. @@ -1094,7 +1095,7 @@ ctld.spawnableCrates = { { weight = 1004.04, desc = ctld.i18n_translate("HAWK PCP"), unit = "Hawk pcp" , side = 2 }, { weight = 1004.05, desc = ctld.i18n_translate("HAWK CWAR"), unit = "Hawk cwar" , side = 2 }, { weight = 1004.06, desc = ctld.i18n_translate("HAWK Repair"), unit = "HAWK Repair" , side = 2 }, - { multiple = {1004.01, 1004.02, 1004.03, 1004.04, 1004.05, 1004.06}, desc = ctld.i18n_translate("HAWK - All crates"), side = 2 }, + { multiple = {1004.01, 1004.02, 1004.03}, desc = ctld.i18n_translate("HAWK - All crates"), side = 2 }, -- End of HAWK -- NASAMS Sysyem @@ -1102,7 +1103,7 @@ ctld.spawnableCrates = { { weight = 1004.12, desc = ctld.i18n_translate("NASAMS Search/Track Radar"), unit = "NASAMS_Radar_MPQ64F1", side = 2 }, { weight = 1004.13, desc = ctld.i18n_translate("NASAMS Command Post"), unit = "NASAMS_Command_Post", side = 2 }, { weight = 1004.14, desc = ctld.i18n_translate("NASAMS Repair"), unit = "NASAMS Repair", side = 2 }, - { multiple = {1004.11, 1004.12, 1004.13, 1004.14}, desc = ctld.i18n_translate("NASAMS - All crates"), side = 2 }, + { multiple = {1004.11, 1004.12, 1004.13}, desc = ctld.i18n_translate("NASAMS - All crates"), side = 2 }, -- End of NASAMS --- RED @@ -1110,7 +1111,7 @@ ctld.spawnableCrates = { { weight = 1004.21, desc = ctld.i18n_translate("KUB Launcher"), unit = "Kub 2P25 ln", side = 1}, { weight = 1004.22, desc = ctld.i18n_translate("KUB Radar"), unit = "Kub 1S91 str", side = 1 }, { weight = 1004.23, desc = ctld.i18n_translate("KUB Repair"), unit = "KUB Repair", side = 1}, - { multiple = {1004.21, 1004.22, 1004.23}, desc = ctld.i18n_translate("KUB - All crates"), side = 1 }, + { multiple = {1004.21, 1004.22}, desc = ctld.i18n_translate("KUB - All crates"), side = 1 }, -- End of KUB -- BUK System @@ -1118,7 +1119,7 @@ ctld.spawnableCrates = { { weight = 1004.32, desc = ctld.i18n_translate("BUK Search Radar"), unit = "SA-11 Buk SR 9S18M1", side = 1}, { weight = 1004.33, desc = ctld.i18n_translate("BUK CC Radar"), unit = "SA-11 Buk CC 9S470M1", side = 1}, { weight = 1004.34, desc = ctld.i18n_translate("BUK Repair"), unit = "BUK Repair", side = 1}, - { multiple = {1004.31, 1004.32, 1004.33, 1004.34}, desc = ctld.i18n_translate("BUK - All crates"), side = 1 }, + { multiple = {1004.31, 1004.32, 1004.33}, desc = ctld.i18n_translate("BUK - All crates"), side = 1 }, -- END of BUK }, ["SAM long range"] = { @@ -1131,7 +1132,7 @@ ctld.spawnableCrates = { -- { weight = 1005.05, desc = ctld.i18n_translate("Patriot EPP"), unit = "Patriot EPP", side = 2 }, { weight = 1005.06, desc = ctld.i18n_translate("Patriot AMG (optional)"), unit = "Patriot AMG" , side = 2 }, { weight = 1005.07, desc = ctld.i18n_translate("Patriot Repair"), unit = "Patriot Repair" , side = 2 }, - { multiple = {1005.01, 1005.02, 1005.03, 1005.06, 1005.07}, desc = ctld.i18n_translate("Patriot - All crates"), side = 2 }, + { multiple = {1005.01, 1005.02, 1005.03}, desc = ctld.i18n_translate("Patriot - All crates"), side = 2 }, -- End of Patriot -- S-300 SYSTEM @@ -1141,7 +1142,7 @@ ctld.spawnableCrates = { { weight = 1005.14, desc = ctld.i18n_translate("S-300 Grumble Big Bird SR"), unit = "S-300PS 64H6E sr", side = 1 }, { weight = 1005.15, desc = ctld.i18n_translate("S-300 Grumble C2"), unit = "S-300PS 54K6 cp", side = 1 }, { weight = 1005.16, desc = ctld.i18n_translate("S-300 Repair"), unit = "S-300 Repair", side = 1 }, - { multiple = {1005.11, 1005.12, 1005.13, 1005.14, 1005.15, 1005.16}, desc = ctld.i18n_translate("Patriot - All crates"), side = 1 }, + { multiple = {1005.11, 1005.12, 1005.13, 1005.14, 1005.15}, desc = ctld.i18n_translate("Patriot - All crates"), side = 1 }, -- End of S-300 }, ["Drone"] = { @@ -4471,6 +4472,9 @@ function ctld.countTableEntries(_table) end function ctld.unpackAASystem(_heli, _nearestCrate, _nearbyCrates,_aaSystemTemplate) + ctld.logTrace("_nearestCrate = %s", ctld.p(_nearestCrate)) + ctld.logTrace("_nearbyCrates = %s", ctld.p(_nearbyCrates)) + ctld.logTrace("_aaSystemTemplate = %s", ctld.p(_aaSystemTemplate)) if ctld.rearmAASystem(_heli, _nearestCrate, _nearbyCrates,_aaSystemTemplate) then -- rearmed system @@ -4496,30 +4500,38 @@ function ctld.unpackAASystem(_heli, _nearestCrate, _nearbyCrates,_aaSystemTempla -- find all crates close enough and add them to the list if they're part of the AA System for _, _nearbyCrate in pairs(_nearbyCrates) do + ctld.logTrace("_nearbyCrate = %s", ctld.p(_nearbyCrate)) if _nearbyCrate.dist < crateDistance then local _name = _nearbyCrate.details.unit + ctld.logTrace("_name = %s", ctld.p(_name)) if _systemParts[_name] ~= nil then local foundCount = _systemParts[_name].found + ctld.logTrace("foundCount = %s", ctld.p(foundCount)) + + if not _cratePositions[_name] then + _cratePositions[_name] = {} + end + if not _crateHdg[_name] then + _crateHdg[_name] = {} + end -- if this is our first time encountering this part of the system if foundCount == 0 then local _foundPart = _systemParts[_name] _foundPart.found = 1 - _foundPart.crates = {} -- store the number of crates required to compute how many crates will have to be removed later and to see if the system can be deployed local cratesRequired = _nearbyCrate.details.cratesRequired + ctld.logTrace("cratesRequired = %s", ctld.p(cratesRequired)) if cratesRequired ~= nil then _foundPart.required = cratesRequired end _systemParts[_name] = _foundPart - _cratePositions[_name] = {} - _crateHdg[_name] = {} else -- otherwise, we found another crate for the same part _systemParts[_name].found = foundCount + 1 @@ -4527,6 +4539,9 @@ function ctld.unpackAASystem(_heli, _nearestCrate, _nearbyCrates,_aaSystemTempla -- add the crate to the part info along with it's position and heading local crateUnit = _nearbyCrate.crateUnit + if not _systemParts[_name].crates then + _systemParts[_name].crates = {} + end table.insert(_systemParts[_name].crates, _nearbyCrate) table.insert(_cratePositions[_name], crateUnit:getPoint()) table.insert(_crateHdg[_name], mist.getHeading(crateUnit, true)) @@ -5815,21 +5830,23 @@ function ctld.addTransportF10MenuOptions(_unitName) local _subMenuPath = missionCommands.addSubMenuForGroup(_groupId, _subMenuName, _cratesMenuPath) for _, _crate in pairs(_crates) do ctld.logTrace("_crate = [%s]", ctld.p(_crate)) - local isJTAC = ctld.isJTACUnitType(_crate.unit) - ctld.logTrace("isJTAC = [%s]", ctld.p(isJTAC)) - if not isJTAC or (isJTAC and ctld.JTAC_dropEnabled) then - if _crate.side == nil or (_crate.side == _unit:getCoalition()) then - local _crateRadioMsg = _crate.desc - --add in the number of crates required to build something - if _crate.cratesRequired ~= nil and _crate.cratesRequired > 1 then - _crateRadioMsg = _crateRadioMsg.." (".._crate.cratesRequired..")" + if not(_crate.multiple) or ctld.enableAllCrates then + local isJTAC = ctld.isJTACUnitType(_crate.unit) + ctld.logTrace("isJTAC = [%s]", ctld.p(isJTAC)) + if not isJTAC or (isJTAC and ctld.JTAC_dropEnabled) then + if _crate.side == nil or (_crate.side == _unit:getCoalition()) then + local _crateRadioMsg = _crate.desc + --add in the number of crates required to build something + if _crate.cratesRequired ~= nil and _crate.cratesRequired > 1 then + _crateRadioMsg = _crateRadioMsg.." (".._crate.cratesRequired..")" + end + if _crate.multiple then + _crateRadioMsg = "* " .. _crateRadioMsg + end + local _menuEntry = { text = _crateRadioMsg, crate = _crate } + ctld.logTrace("_menuEntry = [%s]", ctld.p(_menuEntry)) + table.insert(menuEntries, _menuEntry) end - if _crate.multiple then - _crateRadioMsg = "* " .. _crateRadioMsg - end - local _menuEntry = { text = _crateRadioMsg, crate = _crate } - ctld.logTrace("_menuEntry = [%s]", ctld.p(_menuEntry)) - table.insert(menuEntries, _menuEntry) end end end @@ -8104,7 +8121,7 @@ function ctld.i18n_check(language, verbose) end -- example of usage: -ctld.i18n_check("fr") +--ctld.i18n_check("fr") -- initialize the random number generator to make it almost random diff --git a/test-dev-dynamic.miz b/test-dev-dynamic.miz index 35069a57857d0419366005d02781d80c589a6026..725dbdf169867980bffbb3539d38d728ecc651e1 100644 GIT binary patch delta 14459 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 C7GQ7y delta 14446 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