From bb527e76d062b0d0b0ab2db5b3aa30195897f517 Mon Sep 17 00:00:00 2001 From: pickle Date: Sun, 29 Jan 2023 21:41:27 -0500 Subject: [PATCH 1/5] RSBN Landing Channel Selector Knob changed from integer to float so it can work --- Scripts/DCS-ExportScript/ExportsModules/L-39C.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/DCS-ExportScript/ExportsModules/L-39C.lua b/Scripts/DCS-ExportScript/ExportsModules/L-39C.lua index 47e58e9..8d19da9 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/L-39C.lua +++ b/Scripts/DCS-ExportScript/ExportsModules/L-39C.lua @@ -355,7 +355,7 @@ ExportScript.ConfigArguments = [187] = "%1d", -- Initial Azimuth {-1.0,0.0,1.0} [188] = "%1d", -- Initial Range {-1.0,0.0,1.0} [191] = "%.3f", -- RSBN Navigation Channel Selector Knob (Axis) {0.0, 1.0} in 0.025 Steps - [192] = "%1d", -- RSBN Landing Channel Selector Knob (Axis) {0.0, 1.0} in 0.025 Steps + [192] = "%.3f", -- RSBN Landing Channel Selector Knob (Axis) {0.0, 1.0} in 0.025 Steps [193] = "%1d", -- Set 0 Azimuth [201] = "%.2f", -- RSBN Field Elevation Knob (Axis) {0.0, 1.0} in 0.02 Steps [297] = "%1d", -- RSBN Listen Callsign Button - Push to listen From 50f272eb12575f2e222e60b268a21b402a302313 Mon Sep 17 00:00:00 2001 From: ExoLightFR <40464519+ExoLightFR@users.noreply.github.com> Date: Thu, 18 Jan 2024 17:49:58 +0100 Subject: [PATCH 2/5] style: reformat a little for readability & IDE compatibility --- .../ExportsModules/F-15ESE.lua | 76 ++++++++++++------- 1 file changed, 49 insertions(+), 27 deletions(-) diff --git a/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua b/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua index 2781075..2d393c4 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua +++ b/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua @@ -859,7 +859,7 @@ ExportScript.ConfigArguments = -- arguments for export in low tick interval base -- HIGH IMPORTANCE EXPORTS -- ----------------------------- function ExportScript.ProcessIkarusDCSConfigHighImportance(mainPanelDevice) -- Pointed to by ProcessIkarusDCSHighImportance - end +end ---------------------------- -- LOW IMPORTANCE EXPORTS -- ---------------------------- @@ -948,14 +948,15 @@ function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) -- Po - end +end -------------------------------------------------------------------------------------------------------------- ----------------------- -- GENERAL FUNCTIONS -- ----------------------- function ExportScript.CockpitParamsLogDump(mainPanelDevice) -- Get list of cockpit params ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params())) - end +end + function ExportScript.MetaTableLogDump(mainPanelDevice) -- getmetatable get function name from devices local ltmp1 = 0 for ltmp2 = 1, 70, 1 do @@ -963,14 +964,16 @@ function ExportScript.MetaTableLogDump(mainPanelDevice) -- getmetatable get func ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1))) end - end +end + function ExportScript.ListIndicationLogDump(mainPanelDevice) -- list_indication get the value of cockpit displays local ltmp1 = 0 for ltmp2 = 0, 20, 1 do ltmp1 = list_indication(ltmp2) ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1)) end - end +end + function Linearize(current_value, raw_tab, final_tab) -- Converts Guage value to readable format if current_value <= 0 then return 0 @@ -984,32 +987,38 @@ function Linearize(current_value, raw_tab, final_tab) -- Converts Guage value to end -- we shouldn't be here, so something went wrong - return arbitrary max. final value, maybe the user will notice the problem: return final_tab[#final_tab] - end +end + function RoundTo(num, numDecimalPlaces) --http://lua-users.org/wiki/SimpleRound local mult = 10^(numDecimalPlaces or 0) return math.floor(num * mult + 0.5) / mult - end +end + function Round(num) -- Rounds UP/Down to Nearest Whole Number return num % 1 >= 0.5 and math.ceil(num) or math.floor(num) - end +end + function RoundDP(num) -- Rounds UP/Down to Nearest Whole Number value = Round(num*10) return value/10 - end +end + function ZeroNine(num) -- Used with Round to roll a round up from 10 to 0. if num >= 9.9 then return 0 else return num end - end +end + function OneToZero(num) -- Used to roll a round up from 1.0 to 0.0 if num >= 1.0 then return 0.0 else return num end - end +end + function nilToEmpty(value) -- Converts a nil string to an empty string "" if value == nil then value = '' @@ -1017,7 +1026,7 @@ function nilToEmpty(value) -- Converts a nil string to an empty string "" else return value end - end +end ---------------------- -- CUSTOM FUNCTIONS -- ---------------------- @@ -1051,7 +1060,8 @@ function FORMAT_UFC(Input) -- Re-Formats Data For Clear UFC Display v1 else return Input -- or just retun the <5 char string end - end +end + function FORMAT_UFCRAD(Input) -- Re-Formats Data For Clear UFC RADIO Display v1 -- OFF if string.sub(Input,(string.len(Input)-2),(string.len(Input))) == "OFF" then return string.sub(Input,2,string.len(Input)):gsub(" ","\n") @@ -1061,7 +1071,8 @@ function FORMAT_UFCRAD(Input) -- Re-Formats Data For Clear UFC RADIO Display v1 elseif string.sub(Input,(string.len(Input)),(string.len(Input))) == " " then Input = " "..string.sub(Input,1,(string.len(Input)-1))end -- Spit Freq from Channel and return strings if string.len(Input) < 5 then return Input else return string.sub(Input,1,(string.len(Input)-3)).."\n."..string.sub(Input,(string.len(Input)-2),(string.len(Input))) end - end +end + function FORMAT_SCRATCH(Input) Input = Input:gsub(":",".") Len = string.len(Input) @@ -1074,7 +1085,8 @@ function FORMAT_SCRATCH(Input) else return string.sub(Input,1,4).."\n"..string.sub(Input,5,8).."\n"..string.sub(Input, 9,Len) end - end +end + function PILOT_UFC(UFC_PILOT) -- PILOT UFC export for Norsk-L if UFC_PILOT == nil then ExportScript.Tools.SendData(82001,"NO\nDATA") @@ -1103,7 +1115,8 @@ function PILOT_UFC(UFC_PILOT) -- PILOT UFC export for Norsk-L ExportScript.Tools.SendData(82025,FORMAT_UFCRAD(nilToEmpty(UFC_PILOT.UFC_SC_08))) -- Radio Freq ExportScript.Tools.SendData(82026,FORMAT_UFCRAD(nilToEmpty(UFC_PILOT.UFC_SC_07))) -- Radio Channel end - end +end + function PILOT_UFCa(UFC_PILOT) -- PILOT UFC export for Norsk-L if UFC_PILOT == nil then ExportScript.Tools.SendData(82001,"NO\nDATA") @@ -1132,7 +1145,8 @@ function PILOT_UFCa(UFC_PILOT) -- PILOT UFC export for Norsk-L ExportScript.Tools.SendData(82015,nilToEmpty(UFC_PILOT.UFC_CC_03:gsub(":","."))) ExportScript.Tools.SendData(82016,FORMAT_SCRATCH(nilToEmpty(UFC_PILOT.UFC_CC_04))) -- SCRATCHPAD end - end +end + function WSO_UFC(UFC_WSO) -- WSO UFC export for Norsk-L if UFC_WSO == nil then ExportScript.Tools.SendData(82000,"NO\nDATA\nWSO") @@ -1159,7 +1173,8 @@ function WSO_UFC(UFC_WSO) -- WSO UFC export for Norsk-L ExportScript.Tools.SendData(82055,FORMAT_UFCRAD(nilToEmpty(UFC_WSO.UFC_SC_08))) -- Radio Freq ExportScript.Tools.SendData(82056,FORMAT_UFCRAD(nilToEmpty(UFC_WSO.UFC_SC_07))) -- Radio Channel end - end +end + function FUEL_display(Data,Option) -- Combines/Converts FUEL guage to single string or pulls the seperate values -- Option 0 gives all data, use the seperale element names to pull single values (OFF,Dial,TOTAL,Left,RIGHT) -- Example ExportScript.Tools.SendData(88383,ExportScript.FUEL(mainPanelDevice,"TOTAL")) sends back just the TOTALizer @@ -1205,7 +1220,8 @@ function FUEL_display(Data,Option) -- Combines/Converts FUEL guage to single str else -- Just return the requested field return _G[Option] end - end +end + function EMD_display(Data,Option) -- Combines/Converts EMD to single string or pulls the seperate values -- Option 0 gives all data, use the seperale element names to pull single values (RPM_L,RPM_R,TMP_L,TMP_R,FF_L,FF_R,NOZ_L,NOZ_R,OIL_L,OIL_R) -- Example ExportScript.Tools.SendData(81101,ExportScript.EMD(mainPanelDevice,"RPM_L")) sends back just the Left RPM value @@ -1250,7 +1266,8 @@ function EMD_display(Data,Option) -- Combines/Converts EMD to single string or p else return _G[Option] end - end +end + function HUD_display(Data,Option) -- Extracts dat aelemnts from the HUD to provide as single exports or combined exports -- Check for data flowing into function if Data == nil then return "NO\nDATA" @@ -1315,7 +1332,8 @@ function HUD_display(Data,Option) -- Extracts dat aelemnts from the HUD to provi return _G[Option] end end - end +end + function RADIO_display(Option,Radio) -- Set Raw Data Into variables r1_chan = nilToEmpty(ExportScript.Tools.getListIndicatorValue(8).UFC_SC_06) @@ -1355,13 +1373,15 @@ function RADIO_display(Option,Radio) BOTH = CHAN end return _G[Option] - end +end + --[[function RadioFreqs(mainPanelDevice) -- TODO: can string this up to display both the channel and freq on the tile local radio1_freq = (GetDevice(7):get_frequency())/1000000 -- returns 243.000427 local radio2_freq = (GetDevice(8):get_frequency())/1000000 -- returns 121.500759 ExportScript.Tools.SendData(5020, ExportScript.Tools.RoundFreqeuncy(radio1_freq)) ExportScript.Tools.SendData(5021, ExportScript.Tools.RoundFreqeuncy(radio2_freq)) - end]] +end]] + function GearTile(mainPanelDevice) -- From Bailey's LUA: A grphical indication of Gear Status -- ⚪ white -- ⚫ black @@ -1408,7 +1428,8 @@ function GearTile(mainPanelDevice) -- From Bailey's LUA: A grphical indication o else return 'GEAR\n' .. noseCircle .. '\n' .. leftCircle .. rightCircle .. '\n' .. handleCircle end - end +end + function FlapTile(mainPanelDevice) -- From Bailey's LUA: A grphical indication of Flaps Status -- init as black because it represents the lights as off local flapOrange = '⚫' @@ -1427,14 +1448,15 @@ function FlapTile(mainPanelDevice) -- From Bailey's LUA: A grphical indication else return 'FLAP\n' .. flapOrange .. '\n' .. flapGreen end - end +end ---------------- -- NOT IN USE -- ---------------- function ExportScript.ProcessDACConfigHighImportance(mainPanelDevice) - end +end + function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice) - end +end -- ⚪ white -- ⚫ black -- 🟡 yellow From a20d8bbbeced8346b97fd452b94d8b47b0c1e217 Mon Sep 17 00:00:00 2001 From: ExoLightFR <40464519+ExoLightFR@users.noreply.github.com> Date: Thu, 18 Jan 2024 17:54:48 +0100 Subject: [PATCH 3/5] fix(F-15E): crash in UFC export functions The Pilot and WSO UFC functions crashed due to calling the gsub method on a nil object. Fixed parentheses placement to avoid this. Note that these functions never export anything meaningful because their UFC objects never contain the members they're looking for. This might be because of an F-15E update. --- .../ExportsModules/F-15ESE.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua b/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua index 2d393c4..e36d26a 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua +++ b/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua @@ -1101,9 +1101,9 @@ function PILOT_UFC(UFC_PILOT) -- PILOT UFC export for Norsk-L ExportScript.Tools.SendData(82006,FORMAT_UFCRAD(nilToEmpty(UFC_PILOT.UFC_SC_06))) -- Radio Channel -- CENTRE DESCENDING FROM THE TOP - ExportScript.Tools.SendData(82011,nilToEmpty(UFC_PILOT.UFC_CC_01:gsub(":","."))) - ExportScript.Tools.SendData(82012,nilToEmpty(UFC_PILOT.UFC_CC_02:gsub(":","."))) - ExportScript.Tools.SendData(82013,nilToEmpty(UFC_PILOT.UFC_CC_03:gsub(":","."))) + ExportScript.Tools.SendData(82011,nilToEmpty(UFC_PILOT.UFC_CC_01):gsub(":",".")) + ExportScript.Tools.SendData(82012,nilToEmpty(UFC_PILOT.UFC_CC_02):gsub(":",".")) + ExportScript.Tools.SendData(82013,nilToEmpty(UFC_PILOT.UFC_CC_03):gsub(":",".")) ExportScript.Tools.SendData(82014,FORMAT_SCRATCH(nilToEmpty(UFC_PILOT.UFC_CC_04))) -- SCRATCHPAD -- RIGHT SIDE SIDE DESCENDING FROM THE TOP @@ -1140,9 +1140,9 @@ function PILOT_UFCa(UFC_PILOT) -- PILOT UFC export for Norsk-L ExportScript.Tools.SendData(82007,FORMAT_UFCRAD(nilToEmpty(UFC_PILOT.UFC_SC_07))) -- Radio Channel --CENTRE DESCENDING FROM THE TOP - ExportScript.Tools.SendData(82013,nilToEmpty(UFC_PILOT.UFC_CC_01:gsub(":","."))) - ExportScript.Tools.SendData(82014,nilToEmpty(UFC_PILOT.UFC_CC_02:gsub(":","."))) - ExportScript.Tools.SendData(82015,nilToEmpty(UFC_PILOT.UFC_CC_03:gsub(":","."))) + ExportScript.Tools.SendData(82013,nilToEmpty(UFC_PILOT.UFC_CC_01):gsub(":",".")) + ExportScript.Tools.SendData(82014,nilToEmpty(UFC_PILOT.UFC_CC_02):gsub(":",".")) + ExportScript.Tools.SendData(82015,nilToEmpty(UFC_PILOT.UFC_CC_03):gsub(":",".")) ExportScript.Tools.SendData(82016,FORMAT_SCRATCH(nilToEmpty(UFC_PILOT.UFC_CC_04))) -- SCRATCHPAD end end @@ -1160,9 +1160,9 @@ function WSO_UFC(UFC_WSO) -- WSO UFC export for Norsk-L ExportScript.Tools.SendData(82035,FORMAT_UFCRAD(nilToEmpty(UFC_WSO.UFC_SC_05))) -- Radio Freq ExportScript.Tools.SendData(82036,FORMAT_UFCRAD(nilToEmpty(UFC_WSO.UFC_SC_06))) -- Radio Channel --CENTRE DESCENDING FROM THE TOP - ExportScript.Tools.SendData(82041,nilToEmpty(UFC_WSO.UFC_CC_01:gsub(":","."))) - ExportScript.Tools.SendData(82042,nilToEmpty(UFC_WSO.UFC_CC_02:gsub(":","."))) - ExportScript.Tools.SendData(82043,nilToEmpty(UFC_WSO.UFC_CC_03:gsub(":","."))) + ExportScript.Tools.SendData(82041,nilToEmpty(UFC_WSO.UFC_CC_01):gsub(":",".")) + ExportScript.Tools.SendData(82042,nilToEmpty(UFC_WSO.UFC_CC_02):gsub(":",".")) + ExportScript.Tools.SendData(82043,nilToEmpty(UFC_WSO.UFC_CC_03):gsub(":",".")) ExportScript.Tools.SendData(82044,FORMAT_SCRATCH(nilToEmpty(UFC_WSO.UFC_CC_04))) -- SCRATCHPAD -- RIGHT SIDE SIDE DESCENDING FROM THE TOP ExportScript.Tools.SendData(82051,FORMAT_UFC(nilToEmpty(UFC_WSO.UFC_SC_12))) From aaf1d130834d3bc79b4ed801d3d96b126ec767c8 Mon Sep 17 00:00:00 2001 From: ExoLightFR <40464519+ExoLightFR@users.noreply.github.com> Date: Fri, 19 Jan 2024 09:09:34 +0100 Subject: [PATCH 4/5] fix(F-15E): indicator index for UFCs --- Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua b/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua index e36d26a..7aeabbf 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua +++ b/Scripts/DCS-ExportScript/ExportsModules/F-15ESE.lua @@ -870,11 +870,11 @@ function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) -- Po ExportScript.Tools.SendData(757575,"⚪⚫\n🟡🔴\n🟢❌") -- ADVANCED UFC IMPLEMENTATION v1 if Norsk_UFC == "TRUE" then - PILOT_UFCa(ExportScript.Tools.getListIndicatorValue(8)) + PILOT_UFCa(ExportScript.Tools.getListIndicatorValue(9)) else - PILOT_UFC(ExportScript.Tools.getListIndicatorValue(8)) + PILOT_UFC(ExportScript.Tools.getListIndicatorValue(9)) end - WSO_UFC(ExportScript.Tools.getListIndicatorValue(20)) + WSO_UFC(ExportScript.Tools.getListIndicatorValue(21)) -- COMBINED FUEL DISPLAY ExportScript.Tools.SendData(83830,FUEL_display(mainPanelDevice,0)) -- NOTE EXPORT ID HAS CHANGED -- INDIVIDUAL FUEL DATA From 96fe3b871a2790f5e244afb8b7427b3e7760447f Mon Sep 17 00:00:00 2001 From: David Pierron Date: Fri, 19 Jan 2024 12:50:40 +0100 Subject: [PATCH 5/5] made the additional info export optional, that makes the Apache export way less costly in CPU resources --- .../ExportsModules/AH-64D_BLK_II.lua | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/Scripts/DCS-ExportScript/ExportsModules/AH-64D_BLK_II.lua b/Scripts/DCS-ExportScript/ExportsModules/AH-64D_BLK_II.lua index cf788e3..759c050 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/AH-64D_BLK_II.lua +++ b/Scripts/DCS-ExportScript/ExportsModules/AH-64D_BLK_II.lua @@ -8,6 +8,16 @@ local Terrain = require('terrain') -- map info ExportScript.FoundDCSModule = true ExportScript.Version.AH64D_BLK_II = "1.2.1" +ExportScript.exportAdditionalInfo = false +--[[ +If set to true, will add additional info on the low tick export: + - AirportInfo: Provides info on the two closest airports + - WindsAloft: Gets winds at the aircraft + - GroundRadar: Reports 2 closest friendlies and 2 enemies (Use in Single Player) + - AirRadar: Reports 2 closest friendlies and 2 enemies (Use in Single Player) + - IglaHunter: Locates closest Igla (Use in Single Player) +]] + ExportScript.ConfigEveryFrameArguments = { --[[ @@ -743,15 +753,16 @@ function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) if LoIsObjectExportAllowed() then -- returns true if world objects data is available if LoIsOwnshipExportAllowed() then -- returns true if ownship data is available - ExportScript.LoAircraftInfo(mainPanelDevice) -- Provides a lot of aircraft properties - ExportScript.AirportInfo(mainPanelDevice) -- Provides info on the two closest airports - ExportScript.WindsAloft(mainPanelDevice) -- Gets winds at the aircraft - ExportScript.GroundRadar(mainPanelDevice) -- Reports 2 closest friendlies and 2 enemies (Use in Single Player) - ExportScript.AirRadar(mainPanelDevice) -- Reports 2 closest friendlies and 2 enemies (Use in Single Player) - ExportScript.IglaHunter(mainPanelDevice) -- Locates closest Igla (Use in Single Player) + ExportScript.LoAircraftInfo(mainPanelDevice) -- Provides a lot of aircraft properties + if ExportScript.exportAdditionalInfo then + ExportScript.AirportInfo(mainPanelDevice) -- Provides info on the two closest airports + ExportScript.WindsAloft(mainPanelDevice) -- Gets winds at the aircraft + ExportScript.GroundRadar(mainPanelDevice) -- Reports 2 closest friendlies and 2 enemies (Use in Single Player) + ExportScript.AirRadar(mainPanelDevice) -- Reports 2 closest friendlies and 2 enemies (Use in Single Player) + ExportScript.IglaHunter(mainPanelDevice) -- Locates closest Igla (Use in Single Player) + end end - end - + end end function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice)