Merge pull request #12 from ExoLightFR/master

Fix crash in F-15E export script
This commit is contained in:
Bailey 2024-01-19 22:21:06 +09:00 committed by GitHub
commit 361822997e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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 --
----------------------------
@ -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
@ -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")
@ -1089,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
@ -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")
@ -1127,12 +1140,13 @@ 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
end
function WSO_UFC(UFC_WSO) -- WSO UFC export for Norsk-L
if UFC_WSO == nil then
ExportScript.Tools.SendData(82000,"NO\nDATA\nWSO")
@ -1146,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)))
@ -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