jonny415 Posted October 5, 2021 Share Posted October 5, 2021 Got the JF-17 manual radio display working, but the second row won't display some of the text like arrows or Am. I just added the strings next to UFCP idk how to make them separate section when ever I do it crashes. Probably not the correct way of doing it 1st time trying it. function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) -- UFCP Text Display Windows 1-4 local ufcp_1 = ExportScript.Tools.split(list_indication(3), "%c")[6] local ufcp_2 = ExportScript.Tools.split(list_indication(4), "%c")[6] local ufcp_3 = ExportScript.Tools.split(list_indication(5), "%c")[6] local ufcp_4 = ExportScript.Tools.split(list_indication(6), "%c")[6] local radio1 = ExportScript.Tools.split(list_indication(7), "%c")[3] local radio2 = ExportScript.Tools.split(list_indication(7), "%c")[8] -- Temporary fix: DCS-ExportScript uses colons (:) as separation between uplink messages. -- Replace all colons with semicolons for TOT view, TODO: add escape char parsing in streamdeck plugin (ctytler). ufcp_1 = ufcp_1:gsub(":",";") ufcp_2 = ufcp_2:gsub(":",";") ufcp_3 = ufcp_3:gsub(":",";") ufcp_4 = ufcp_4:gsub(":",";") radio1 = radio1:gsub(":",";") radio1 = radio1:gsub(":",";") -- The below logic handles the case where a UFCP display has been selected for entry and -- has blinking "--". -- Additional logic could be added to handle the blinking itself and show the other side -- with the e.g. win1fill value, however this logic seemed sufficient for now. if ufcp_1 == nil then ufcp_1 = "" elseif list_indication(3):match("txt_win1r") then ufcp_1 = string.format("%8s", ufcp_1) end if ufcp_2 == nil then ufcp_2 = "" elseif list_indication(3):match("txt_win2r") then ufcp_2 = string.format("%8s", ufcp_2) end if ufcp_3 == nil then ufcp_3 = "" elseif list_indication(3):match("txt_win3r") then ufcp_3 = string.format("%8s", ufcp_3) end if ufcp_4 == nil then ufcp_4 = "" elseif list_indication(3):match("txt_win4r") then ufcp_4 = string.format("%8s", ufcp_4) end if radio1 == nil then radio1 = "" elseif list_indication(7):match("txt_win4r") then radio1 = string.format("%8s", radio1) end if radio2 == nil then radio2 = "" elseif list_indication(7):match("txt_win4r") then radio2 = string.format("%8s", radio2) end -- Full 8 character strings. ExportScript.Tools.SendData(2001, string.format("%-8s", ufcp_1)) ExportScript.Tools.SendData(2002, string.format("%-8s", ufcp_2)) ExportScript.Tools.SendData(2003, string.format("%-8s", ufcp_3)) ExportScript.Tools.SendData(2004, string.format("%-8s", ufcp_4)) ExportScript.Tools.SendData(2013, string.format("%-8s", radio1)) ExportScript.Tools.SendData(2016, string.format("%-8s", radio2)) -- Left-Hand 4 character strings. ExportScript.Tools.SendData(2005, string.format("%-4s", ufcp_1:sub(1,4))) ExportScript.Tools.SendData(2006, string.format("%-4s", ufcp_2:sub(1,4))) ExportScript.Tools.SendData(2007, string.format("%-4s", ufcp_3:sub(1,4))) ExportScript.Tools.SendData(2008, string.format("%-4s", ufcp_4:sub(1,4))) ExportScript.Tools.SendData(2014, string.format("%-4s", radio1:sub(1,4))) ExportScript.Tools.SendData(2017, string.format("%-4s", radio2:sub(1,4))) -- Right Hand 4 character strings. ExportScript.Tools.SendData(2009, string.format("%-4s", ufcp_1:sub(5,8))) ExportScript.Tools.SendData(2010, string.format("%-4s", ufcp_2:sub(5,8))) ExportScript.Tools.SendData(2011, string.format("%-4s", ufcp_3:sub(5,8))) ExportScript.Tools.SendData(2012, string.format("%-4s", ufcp_4:sub(5,8))) ExportScript.Tools.SendData(2015, string.format("%-4s", radio1:sub(5,8))) ExportScript.Tools.SendData(2018, string.format("%-4s", radio2:sub(5,8))) end Link to comment Share on other sites More sharing options...
Bailey Posted October 8, 2021 Share Posted October 8, 2021 (edited) On 10/5/2021 at 2:49 PM, jonny415 said: Got the JF-17 manual radio display working, but the second row won't display some of the text like arrows or Am. I just added the strings next to UFCP idk how to make them separate section when ever I do it crashes. Probably not the correct way of doing it 1st time trying it. function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) -- UFCP Text Display Windows 1-4 local ufcp_1 = ExportScript.Tools.split(list_indication(3), "%c")[6] local ufcp_2 = ExportScript.Tools.split(list_indication(4), "%c")[6] local ufcp_3 = ExportScript.Tools.split(list_indication(5), "%c")[6] local ufcp_4 = ExportScript.Tools.split(list_indication(6), "%c")[6] local radio1 = ExportScript.Tools.split(list_indication(7), "%c")[3] local radio2 = ExportScript.Tools.split(list_indication(7), "%c")[8] -- Temporary fix: DCS-ExportScript uses colons (:) as separation between uplink messages. -- Replace all colons with semicolons for TOT view, TODO: add escape char parsing in streamdeck plugin (ctytler). ufcp_1 = ufcp_1:gsub(":",";") ufcp_2 = ufcp_2:gsub(":",";") ufcp_3 = ufcp_3:gsub(":",";") ufcp_4 = ufcp_4:gsub(":",";") radio1 = radio1:gsub(":",";") radio1 = radio1:gsub(":",";") -- The below logic handles the case where a UFCP display has been selected for entry and -- has blinking "--". -- Additional logic could be added to handle the blinking itself and show the other side -- with the e.g. win1fill value, however this logic seemed sufficient for now. if ufcp_1 == nil then ufcp_1 = "" elseif list_indication(3):match("txt_win1r") then ufcp_1 = string.format("%8s", ufcp_1) end if ufcp_2 == nil then ufcp_2 = "" elseif list_indication(3):match("txt_win2r") then ufcp_2 = string.format("%8s", ufcp_2) end if ufcp_3 == nil then ufcp_3 = "" elseif list_indication(3):match("txt_win3r") then ufcp_3 = string.format("%8s", ufcp_3) end if ufcp_4 == nil then ufcp_4 = "" elseif list_indication(3):match("txt_win4r") then ufcp_4 = string.format("%8s", ufcp_4) end if radio1 == nil then radio1 = "" elseif list_indication(7):match("txt_win4r") then radio1 = string.format("%8s", radio1) end if radio2 == nil then radio2 = "" elseif list_indication(7):match("txt_win4r") then radio2 = string.format("%8s", radio2) end -- Full 8 character strings. ExportScript.Tools.SendData(2001, string.format("%-8s", ufcp_1)) ExportScript.Tools.SendData(2002, string.format("%-8s", ufcp_2)) ExportScript.Tools.SendData(2003, string.format("%-8s", ufcp_3)) ExportScript.Tools.SendData(2004, string.format("%-8s", ufcp_4)) ExportScript.Tools.SendData(2013, string.format("%-8s", radio1)) ExportScript.Tools.SendData(2016, string.format("%-8s", radio2)) -- Left-Hand 4 character strings. ExportScript.Tools.SendData(2005, string.format("%-4s", ufcp_1:sub(1,4))) ExportScript.Tools.SendData(2006, string.format("%-4s", ufcp_2:sub(1,4))) ExportScript.Tools.SendData(2007, string.format("%-4s", ufcp_3:sub(1,4))) ExportScript.Tools.SendData(2008, string.format("%-4s", ufcp_4:sub(1,4))) ExportScript.Tools.SendData(2014, string.format("%-4s", radio1:sub(1,4))) ExportScript.Tools.SendData(2017, string.format("%-4s", radio2:sub(1,4))) -- Right Hand 4 character strings. ExportScript.Tools.SendData(2009, string.format("%-4s", ufcp_1:sub(5,8))) ExportScript.Tools.SendData(2010, string.format("%-4s", ufcp_2:sub(5,8))) ExportScript.Tools.SendData(2011, string.format("%-4s", ufcp_3:sub(5,8))) ExportScript.Tools.SendData(2012, string.format("%-4s", ufcp_4:sub(5,8))) ExportScript.Tools.SendData(2015, string.format("%-4s", radio1:sub(5,8))) ExportScript.Tools.SendData(2018, string.format("%-4s", radio2:sub(5,8))) end There are two ways to get the character you want: 1)Go to this site (https://unicode-table.com/), then scroll down to the arrows (https://unicode-table.com/en/blocks/arrows/). Click the one you want and then click "copy". Then paste it directly into the lua file. 2) Open Windows Character map by pressing the start/windows key and type "character map". Scroll down to find the character you want. Click the character and then click select. You should see it populate in the lower box. Then click copy and paste it into your lua. After completing option 1 or 2 you will still have to parse the list_indication output in order to put the arrow in the correct location. I made the following code as an example. Tested and working for the JF17. It gets the status of the flight stick (argument 970) and determines which string should be used. This code is only an example and may not be applicable to every situation. Click the bottom of the stick ingame to toggle it and therefore the resulting exported string. function ExportScript.arrowTest(mainPanelDevice) local stickShowHide = mainPanelDevice:get_argument_value(970) local stickStatus if stickShowHide >= 0.5 then stickStatus = "↑Up" else stickStatus = "↓Down" end ExportScript.Tools.SendData(2001, stickStatus) end Remember to put ExportScript.arrowTest(mainPanelDevice) into the function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) function. Having this knowledge I'll be going back to the Mossie lua to put in the special characters for the air temp degrees and No10 and No12 tanks. Thanks! Update (sry for small pic): Another Update (what hath i unleashed?!?! xD): Edited October 8, 2021 by Bailey DCS VoiceAttack Profiles | My Mods and Utilities on ED User Files | DiCE: DCS Integrated Countermeasure Editor DCS Update Witching Utility | DCS-ExportScripts for Stream Deck Community Github Library | Kiowa Integrated Overlays Link to comment Share on other sites More sharing options...
Bailey Posted October 9, 2021 Share Posted October 9, 2021 On 10/5/2021 at 2:49 PM, jonny415 said: Got the JF-17 manual radio display working, but the second row won't display some of the text like arrows or Am. I just added the strings next to UFCP idk how to make them separate section when ever I do it crashes. Probably not the correct way of doing it 1st time trying it. function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice) -- UFCP Text Display Windows 1-4 local ufcp_1 = ExportScript.Tools.split(list_indication(3), "%c")[6] local ufcp_2 = ExportScript.Tools.split(list_indication(4), "%c")[6] local ufcp_3 = ExportScript.Tools.split(list_indication(5), "%c")[6] local ufcp_4 = ExportScript.Tools.split(list_indication(6), "%c")[6] local radio1 = ExportScript.Tools.split(list_indication(7), "%c")[3] local radio2 = ExportScript.Tools.split(list_indication(7), "%c")[8] -- Temporary fix: DCS-ExportScript uses colons (:) as separation between uplink messages. -- Replace all colons with semicolons for TOT view, TODO: add escape char parsing in streamdeck plugin (ctytler). ufcp_1 = ufcp_1:gsub(":",";") ufcp_2 = ufcp_2:gsub(":",";") ufcp_3 = ufcp_3:gsub(":",";") ufcp_4 = ufcp_4:gsub(":",";") radio1 = radio1:gsub(":",";") radio1 = radio1:gsub(":",";") -- The below logic handles the case where a UFCP display has been selected for entry and -- has blinking "--". -- Additional logic could be added to handle the blinking itself and show the other side -- with the e.g. win1fill value, however this logic seemed sufficient for now. if ufcp_1 == nil then ufcp_1 = "" elseif list_indication(3):match("txt_win1r") then ufcp_1 = string.format("%8s", ufcp_1) end if ufcp_2 == nil then ufcp_2 = "" elseif list_indication(3):match("txt_win2r") then ufcp_2 = string.format("%8s", ufcp_2) end if ufcp_3 == nil then ufcp_3 = "" elseif list_indication(3):match("txt_win3r") then ufcp_3 = string.format("%8s", ufcp_3) end if ufcp_4 == nil then ufcp_4 = "" elseif list_indication(3):match("txt_win4r") then ufcp_4 = string.format("%8s", ufcp_4) end if radio1 == nil then radio1 = "" elseif list_indication(7):match("txt_win4r") then radio1 = string.format("%8s", radio1) end if radio2 == nil then radio2 = "" elseif list_indication(7):match("txt_win4r") then radio2 = string.format("%8s", radio2) end -- Full 8 character strings. ExportScript.Tools.SendData(2001, string.format("%-8s", ufcp_1)) ExportScript.Tools.SendData(2002, string.format("%-8s", ufcp_2)) ExportScript.Tools.SendData(2003, string.format("%-8s", ufcp_3)) ExportScript.Tools.SendData(2004, string.format("%-8s", ufcp_4)) ExportScript.Tools.SendData(2013, string.format("%-8s", radio1)) ExportScript.Tools.SendData(2016, string.format("%-8s", radio2)) -- Left-Hand 4 character strings. ExportScript.Tools.SendData(2005, string.format("%-4s", ufcp_1:sub(1,4))) ExportScript.Tools.SendData(2006, string.format("%-4s", ufcp_2:sub(1,4))) ExportScript.Tools.SendData(2007, string.format("%-4s", ufcp_3:sub(1,4))) ExportScript.Tools.SendData(2008, string.format("%-4s", ufcp_4:sub(1,4))) ExportScript.Tools.SendData(2014, string.format("%-4s", radio1:sub(1,4))) ExportScript.Tools.SendData(2017, string.format("%-4s", radio2:sub(1,4))) -- Right Hand 4 character strings. ExportScript.Tools.SendData(2009, string.format("%-4s", ufcp_1:sub(5,8))) ExportScript.Tools.SendData(2010, string.format("%-4s", ufcp_2:sub(5,8))) ExportScript.Tools.SendData(2011, string.format("%-4s", ufcp_3:sub(5,8))) ExportScript.Tools.SendData(2012, string.format("%-4s", ufcp_4:sub(5,8))) ExportScript.Tools.SendData(2015, string.format("%-4s", radio1:sub(5,8))) ExportScript.Tools.SendData(2018, string.format("%-4s", radio2:sub(5,8))) end I took a look at chucks guide and it seems that the arrow is a power indicator. I couldn't see what represented it in the list_indication, so I would have linked it to the mode switch position of the radio itself. Just FYI. Also, good luck parsing the list_indication with the blinking cursor. It's tricky. DCS VoiceAttack Profiles | My Mods and Utilities on ED User Files | DiCE: DCS Integrated Countermeasure Editor DCS Update Witching Utility | DCS-ExportScripts for Stream Deck Community Github Library | Kiowa Integrated Overlays Link to comment Share on other sites More sharing options...
jonny415 Posted October 9, 2021 Share Posted October 9, 2021 1 hour ago, Bailey said: I took a look at chucks guide and it seems that the arrow is a power indicator. I couldn't see what represented it in the list_indication, so I would have linked it to the mode switch position of the radio itself. Just FYI. Also, good luck parsing the list_indication with the blinking cursor. It's tricky. yeah I could not get it to work, i will keep testing it from time to time the 1st row is working that was the main one I need. The arrow and Am won't show either for me. Mean while I am just updating all my profiles. Thanks for looking in to it. Link to comment Share on other sites More sharing options...
hasole Posted October 22, 2021 Share Posted October 22, 2021 The latest openbeta update has broken my stream deck plug in I think. It can read the state of the switches but if I push them on the stream deck they don't flick the switch. This is in the Tomcat Anyone else getting this with the 2.7.7 update yesterday? Link to comment Share on other sites More sharing options...
Chacal_IX Posted October 22, 2021 Share Posted October 22, 2021 52 minutes ago, hasole said: La dernière mise à jour openbeta a cassé mon plug-in de plate-forme de flux, je pense. Il peut lire l'état des commutateurs, mais si je les pousse sur la plate-forme de flux, ils n'actionnent pas le commutateur. C'est dans le Tomcat Quelqu'un d'autre a-t-il obtenu cela avec la mise à jour 2.7.7 hier ? You have to increase the Device ID number by +1 on the buttons that no longer work. At least, this is what corrected the same problem for me. 2 Link to comment Share on other sites More sharing options...
bones1014 Posted October 23, 2021 Share Posted October 23, 2021 6 hours ago, hasole said: The latest openbeta update has broken my stream deck plug in I think. It can read the state of the switches but if I push them on the stream deck they don't flick the switch. This is in the Tomcat Anyone else getting this with the 2.7.7 update yesterday? My Radio channel/freq readout no longer works properly either. This is what I have local UHF_ARC159_infoBase = ExportScript.Tools.split(list_indication(8), "%c")--this contains the formated table of the base radio local UHF_ARC159_readoutBase = UHF_ARC159_infoBase[10] -- so far it has always been 10 in both channel and freq modes local UHF_ARC159_FreqMode = string.format("%0.1f", mainPanelDevice:get_argument_value(2033)) if UHF_ARC159_FreqMode == "1.0" or UHF_ARC159_FreqMode == "0.5" then ExportScript.Tools.SendData(60000, string.format("ARC-159\n" .. UHF_ARC159_readoutBase:sub(1,3) .. "." .. UHF_ARC159_readoutBase:sub(4,6))) ExportScript.Tools.SendData(60001, string.format(UHF_ARC159_readoutBase:sub(1,3) .. "." .. UHF_ARC159_readoutBase:sub(4,6))) elseif UHF_ARC159_FreqMode == "0.0" then ExportScript.Tools.SendData(60000, string.format("ARC-159\n" .. "CH " .. UHF_ARC159_readoutBase:sub(4,6))) ExportScript.Tools.SendData(60001, string.format("CH " .. UHF_ARC159_readoutBase:sub(4,6))) end Link to comment Share on other sites More sharing options...
Martin1454 Posted October 28, 2021 Share Posted October 28, 2021 Question - I'm running some of the profiles I find here on the page on my streamdeck XL. I want to add a few features, but I don't know how to go about it. First, I would like an fuel indicator added (for instance in the hungry F-16). How can this be added? If I use the lookup ID, I cannot find it, since its not a button, but only a "display/indicator" - how will I find the ID's for that? Secondly, I would love to use is as a MFD keyboard - Right now I have made diffrent "sets" of MFD keys - 1 set is for SMS page, 1 set for MAV page, 1 set for TGP etc..... This is because on each page the MFD key have a different function. Is there a way to "extract" what action the button will do? (eg what label is on the MFD next to the button) Link to comment Share on other sites More sharing options...
Bailey Posted October 28, 2021 Share Posted October 28, 2021 (edited) 4 hours ago, Martin1454 said: Question - I'm running some of the profiles I find here on the page on my streamdeck XL. I want to add a few features, but I don't know how to go about it. First, I would like an fuel indicator added (for instance in the hungry F-16). How can this be added? If I use the lookup ID, I cannot find it, since its not a button, but only a "display/indicator" - how will I find the ID's for that? Secondly, I would love to use is as a MFD keyboard - Right now I have made diffrent "sets" of MFD keys - 1 set is for SMS page, 1 set for MAV page, 1 set for TGP etc..... This is because on each page the MFD key have a different function. Is there a way to "extract" what action the button will do? (eg what label is on the MFD next to the button) 1. In the F16 you will have to find the IDs for the fuel totalizer (730, 731, and 732) and then make a function that extracts that data into numerical values for the button. The other way to get the fuel value is to call list_indication(6). In the lua code "if" you can read "["TOTAL value"]", "then" export the fuel value. Unfortunately this method will only work when the DED is on the BINGO page. 2. Kinda/yes/maybe, but it would be pretty complicated (imo). The best video that would expose you to how its done is this one. You will need to find the correct list_indication, the associate the MFD readout to the export text per button. P.S. I have found some errors in my F16 lua file. I'll update it and try to incorporate your first concern. Edited October 28, 2021 by Bailey 1 DCS VoiceAttack Profiles | My Mods and Utilities on ED User Files | DiCE: DCS Integrated Countermeasure Editor DCS Update Witching Utility | DCS-ExportScripts for Stream Deck Community Github Library | Kiowa Integrated Overlays Link to comment Share on other sites More sharing options...
Bailey Posted October 28, 2021 Share Posted October 28, 2021 4 hours ago, Martin1454 said: Question - I'm running some of the profiles I find here on the page on my streamdeck XL. I want to add a few features, but I don't know how to go about it. First, I would like an fuel indicator added (for instance in the hungry F-16). How can this be added? If I use the lookup ID, I cannot find it, since its not a button, but only a "display/indicator" - how will I find the ID's for that? Secondly, I would love to use is as a MFD keyboard - Right now I have made diffrent "sets" of MFD keys - 1 set is for SMS page, 1 set for MAV page, 1 set for TGP etc..... This is because on each page the MFD key have a different function. Is there a way to "extract" what action the button will do? (eg what label is on the MFD next to the button) Concerning your first question: https://github.com/asherao/DCS-ExportScripts/blob/master/Scripts/DCS-ExportScript/ExportsModules/F-16C_50.lua https://github.com/asherao/DCS-ExportScripts/wiki/F-16C You can tinker with the rounding if you like by changing "totalFuelFlowCounter = round(totalFuelFlowCounter, -1)" to "totalFuelFlowCounter = round(totalFuelFlowCounter, -2)", if you like. 1 DCS VoiceAttack Profiles | My Mods and Utilities on ED User Files | DiCE: DCS Integrated Countermeasure Editor DCS Update Witching Utility | DCS-ExportScripts for Stream Deck Community Github Library | Kiowa Integrated Overlays Link to comment Share on other sites More sharing options...
Martin1454 Posted October 28, 2021 Share Posted October 28, 2021 (edited) @BaileyYou're the man! I will have a look at that profile - Does the F-16 lua you linked have the fix for the TGP crashing DCS? I will have a look, and see if I can implement the MFD my self, but I can see its a bigger project. EDIT: I just tested, TGP did not crash, so all is good Also got the fuel thing to work! Edited October 28, 2021 by Martin1454 1 Link to comment Share on other sites More sharing options...
Martin1454 Posted October 28, 2021 Share Posted October 28, 2021 (edited) After the intro (Thanks @Bailey) I found the correct table for the MFD's for the F-16 I want to export to my stream deck - But I cannot isolate the button text!. Running local txt_RMFD = ExportScript.Tools.split(list_indication(5), "%c") return txt_RMFD Will return me the following data in the SMS page: Spoiler { [1] = "-----------------------------------------", [2] = "Background_Mask", [3] = "", [4] = "-----------------------------------------", [5] = "BOMB_ROOT", [6] = "", [7] = "children are {", [8] = "-----------------------------------------", [9] = "BOMB_PAGE", [10] = "", [11] = "children are {", [12] = "-----------------------------------------", [13] = " Table. Root. Unic ID: _id:211", [14] = "", [15] = "children are {", [16] = "-----------------------------------------", [17] = " Table. Root. Unic ID: _id:211. Text", [18] = "PROF1", [19] = "children are {", [20] = "-----------------------------------------", [21] = " Table. Root. Unic ID: _id:211. Text_Mask", [22] = "", [23] = "}", [24] = "}", [25] = "-----------------------------------------", [26] = " Table. Root. Unic ID: _id:212", [27] = "", [28] = "children are {", [29] = "-----------------------------------------", [30] = " Table. Root. Unic ID: _id:212. Text", [31] = "1 SGL", [32] = "children are {", [33] = "-----------------------------------------", [34] = " Table. Root. Unic ID: _id:212. Text_Mask", [35] = "", [36] = "}", [37] = "}", [38] = "-----------------------------------------", [39] = " Table. Root. Unic ID: _id:213", [40] = "", [41] = "children are {", [42] = "-----------------------------------------", [43] = " Table. Root. Unic ID: _id:213. Text", [44] = "10FT", [45] = "children are {", [46] = "-----------------------------------------", [47] = " Table. Root. Unic ID: _id:213. Text_Mask", [48] = "", [49] = "}", [50] = "}", [51] = "-----------------------------------------", [52] = " Table. Root. Unic ID: _id:214", [53] = "", [54] = "children are {", [55] = "-----------------------------------------", [56] = " Table. Root. Unic ID: _id:214. Text", [57] = "RP", [58] = "1", [59] = "children are {", [60] = "-----------------------------------------", [61] = " Table. Root. Unic ID: _id:214. Text_Mask", [62] = "", [63] = "}", [64] = "}", [65] = "-----------------------------------------", [66] = " Table. Root. Unic ID: _id:215", [67] = "", [68] = "children are {", [69] = "-----------------------------------------", [70] = " Table. Root. Unic ID: _id:215. Text", [71] = "NSTL", [72] = "children are {", [73] = "-----------------------------------------", [74] = " Table. Root. Unic ID: _id:215. Text_Mask", [75] = "", [76] = "}", [77] = "}", [78] = "}", [79] = "}", [80] = "-----------------------------------------", [81] = "A-G Table. Root. Unic ID: _id:422", [82] = "", [83] = "children are {", [84] = "-----------------------------------------", [85] = "A-G Table. Root. Unic ID: _id:422. Text", [86] = "A-G", [87] = "children are {", [88] = "-----------------------------------------", [89] = "A-G Table. Root. Unic ID: _id:422. Text_Mask", [90] = "", [91] = "}", [92] = "}", [93] = "-----------------------------------------", [94] = " Table. Root. Unic ID: _id:423", [95] = "", [96] = "children are {", [97] = "-----------------------------------------", [98] = " Table. Root. Unic ID: _id:423. Text", [99] = "CCIP", [100] = "children are {", [101] = "-----------------------------------------", [102] = " Table. Root. Unic ID: _id:423. Text_Mask", [103] = "", [104] = "}", [105] = "}", [106] = "-----------------------------------------", [107] = "INV Table. Root. Unic ID: _id:424", [108] = "", [109] = "children are {", [110] = "-----------------------------------------", [111] = "INV Table. Root. Unic ID: _id:424. Text", [112] = "INV", [113] = "children are {", [114] = "-----------------------------------------", [115] = "INV Table. Root. Unic ID: _id:424. Text_Mask", [116] = "", [117] = "}", [118] = "}", [119] = "-----------------------------------------", [120] = " Table. Root. Unic ID: _id:425", [121] = "", [122] = "children are {", [123] = "-----------------------------------------", [124] = " Table. Root. Unic ID: _id:425. Text", [125] = "6BD33T", [126] = "children are {", [127] = "-----------------------------------------", [128] = " Table. Root. Unic ID: _id:425. Text_Mask", [129] = "", [130] = "}", [131] = "}", [132] = "-----------------------------------------", [133] = "Weapon_Status_Ready", [134] = "", [135] = "children are {", [136] = "-----------------------------------------", [137] = "Weapon_Status_Ready_Top", [138] = "RDY", [139] = "-----------------------------------------", [140] = "Weapon_Status_Ready_Bottom", [141] = "RDY", [142] = "}", [143] = "-----------------------------------------", [144] = "DCLT Table. Root. Unic ID: _id:1", [145] = "", [146] = "children are {", [147] = "}", [148] = "-----------------------------------------", [149] = "S-J Table. Root. Unic ID: _id:43", [150] = "", [151] = "children are {", [152] = "-----------------------------------------", [153] = "S-J Table. Root. Unic ID: _id:43. Text", [154] = "S-J", [155] = "children are {", [156] = "-----------------------------------------", [157] = "S-J Table. Root. Unic ID: _id:43. Text_Mask", [158] = "", [159] = "}", [160] = "}", [161] = "-----------------------------------------", [162] = "TCN Table. Root. Unic ID: _id:44", [163] = "", [164] = "children are {", [165] = "}", [166] = "-----------------------------------------", [167] = "PB_Menu_Label_ROOT_12", [168] = "", [169] = "children are {", [170] = "-----------------------------------------", [171] = "PB_Menu_Label_12", [172] = " ", [173] = "}", [174] = "-----------------------------------------", [175] = "PB_Menu_Label_ROOT_13", [176] = "", [177] = "children are {", [178] = "-----------------------------------------", [179] = "PB_Menu_Label_13", [180] = "HSD", [181] = "}", [182] = "-----------------------------------------", [183] = "PB_Menu_Label_3Sym_13_Mask", [184] = "", [185] = "-----------------------------------------", [186] = "PB_Menu_Label_ROOT_14", [187] = "", [188] = "children are {", [189] = "-----------------------------------------", [190] = "PB_Menu_Label_ROOT_Selected14", [191] = "", [192] = "children are {", [193] = "-----------------------------------------", [194] = "PB_Menu_Label_rootFiller_3Sym_14", [195] = "", [196] = "children are {", [197] = "-----------------------------------------", [198] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:225", [199] = "", [200] = "-----------------------------------------", [201] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:226", [202] = "", [203] = "-----------------------------------------", [204] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:227", [205] = "", [206] = "-----------------------------------------", [207] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:228", [208] = "", [209] = "-----------------------------------------", [210] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:229", [211] = "", [212] = "-----------------------------------------", [213] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:230", [214] = "", [215] = "-----------------------------------------", [216] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:231", [217] = "", [218] = "-----------------------------------------", [219] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:232", [220] = "", [221] = "-----------------------------------------", [222] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:233", [223] = "", [224] = "-----------------------------------------", [225] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:234", [226] = "", [227] = "-----------------------------------------", [228] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:235", [229] = "", [230] = "-----------------------------------------", [231] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:236", [232] = "", [233] = "-----------------------------------------", [234] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:237", [235] = "", [236] = "-----------------------------------------", [237] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:238", [238] = "", [239] = "-----------------------------------------", [240] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:239", [241] = "", [242] = "-----------------------------------------", [243] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:240", [244] = "", [245] = "-----------------------------------------", [246] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:241", [247] = "", [248] = "-----------------------------------------", [249] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:242", [250] = "", [251] = "-----------------------------------------", [252] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:243", [253] = "", [254] = "-----------------------------------------", [255] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:244", [256] = "", [257] = "-----------------------------------------", [258] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:245", [259] = "", [260] = "-----------------------------------------", [261] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:246", [262] = "", [263] = "-----------------------------------------", [264] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:247", [265] = "", [266] = "-----------------------------------------", [267] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:248", [268] = "", [269] = "-----------------------------------------", [270] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:249", [271] = "", [272] = "-----------------------------------------", [273] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:250", [274] = "", [275] = "-----------------------------------------", [276] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:251", [277] = "", [278] = "-----------------------------------------", [279] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:252", [280] = "", [281] = "-----------------------------------------", [282] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:253", [283] = "", [284] = "-----------------------------------------", [285] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:254", [286] = "", [287] = "-----------------------------------------", [288] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:255", [289] = "", [290] = "-----------------------------------------", [291] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:256", [292] = "", [293] = "-----------------------------------------", [294] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:257", [295] = "", [296] = "-----------------------------------------", [297] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:258", [298] = "", [299] = "-----------------------------------------", [300] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:259", [301] = "", [302] = "-----------------------------------------", [303] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:260", [304] = "", [305] = "-----------------------------------------", [306] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:261", [307] = "", [308] = "-----------------------------------------", [309] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:262", [310] = "", [311] = "-----------------------------------------", [312] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:263", [313] = "", [314] = "-----------------------------------------", [315] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:264", [316] = "", [317] = "-----------------------------------------", [318] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:265", [319] = "", [320] = "-----------------------------------------", [321] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:266", [322] = "", [323] = "-----------------------------------------", [324] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:267", [325] = "", [326] = "-----------------------------------------", [327] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:268", [328] = "", [329] = "-----------------------------------------", [330] = "PB_Menu_Label_rootFiller_3Sym_14_Line__id:269", [331] = "", [332] = "}", [333] = "-----------------------------------------", [334] = "PB_Menu_Label_Black_PB_14", [335] = "SMS", [336] = "}", [337] = "}", [338] = "-----------------------------------------", [339] = "PB_Menu_Label_3Sym_14_Mask", [340] = "", [341] = "-----------------------------------------", [342] = "SWAP Table. Root. Unic ID: _id:315", [343] = "", [344] = "children are {", [345] = "-----------------------------------------", [346] = "SWAP Table. Root. Unic ID: _id:315. Text", [347] = "SWAP", [348] = "children are {", [349] = "-----------------------------------------", [350] = "SWAP Table. Root. Unic ID: _id:315. Text_Mask", [351] = "", [352] = "}", [353] = "}", } And in the HSD page I will get: Spoiler { [1] = "-----------------------------------------", [2] = "Background_Mask", [3] = "", [4] = "-----------------------------------------", [5] = "HSDCenter", [6] = "", [7] = "children are {", [8] = "-----------------------------------------", [9] = "Aircraft_Symbol", [10] = "", [11] = "-----------------------------------------", [12] = "RingsPH", [13] = "", [14] = "children are {", [15] = "-----------------------------------------", [16] = "Range_Ring_1", [17] = "", [18] = "-----------------------------------------", [19] = "Range_Ring_2", [20] = "", [21] = "-----------------------------------------", [22] = "Range_Ring_3", [23] = "", [24] = "}", [25] = "-----------------------------------------", [26] = "FcrConePH", [27] = "", [28] = "children are {", [29] = "-----------------------------------------", [30] = "Azimuth_Scan_Limits_Left", [31] = "", [32] = "-----------------------------------------", [33] = "Azimuth_Scan_Limits_Right", [34] = "", [35] = "-----------------------------------------", [36] = "Azimuth_Scan_Limits_Circle", [37] = "", [38] = "}", [39] = "-----------------------------------------", [40] = "HSD_Heading_PH", [41] = "", [42] = "children are {", [43] = "-----------------------------------------", [44] = "Bullseye_Root", [45] = "", [46] = "children are {", [47] = "-----------------------------------------", [48] = "Bullseye_Cirle_First", [49] = "", [50] = "-----------------------------------------", [51] = "Bullseye_Cirle_Second", [52] = "", [53] = "-----------------------------------------", [54] = "Bullseye_Cirle_Third", [55] = "", [56] = "}", [57] = "-----------------------------------------", [58] = "HSD ghost AG cursor", [59] = "", [60] = "-----------------------------------------", [61] = "NavRoute_1_WYPT_Root_1", [62] = "", [63] = "children are {", [64] = "-----------------------------------------", [65] = "NavRoute_1_Selected_STPT_circle_1_1", [66] = "", [67] = "-----------------------------------------", [68] = "NavRoute_1_Selected_STPT_circle_1_2", [69] = "", [70] = "-----------------------------------------", [71] = "NavRoute_1_Selected_STPT_circle_1_3", [72] = "", [73] = "-----------------------------------------", [74] = "NavRoute_1_Selected_STPT_circle_1_4", [75] = "", [76] = "}", [77] = "-----------------------------------------", [78] = "NavRoute_1_WYPT_Root_2", [79] = "", [80] = "children are {", [81] = "-----------------------------------------", [82] = "NavRoute_1_WYPT_circle_2", [83] = "", [84] = "}", [85] = "-----------------------------------------", [86] = "NavRoute_1_WYPT_Root_3", [87] = "", [88] = "children are {", [89] = "-----------------------------------------", [90] = "NavRoute_1_WYPT_circle_3", [91] = "", [92] = "}", [93] = "-----------------------------------------", [94] = "NavRoute_1_WYPT_Root_4", [95] = "", [96] = "children are {", [97] = "-----------------------------------------", [98] = "NavRoute_1_WYPT_circle_4", [99] = "", [100] = "}", [101] = "-----------------------------------------", [102] = "NavRoute_1_Line_1", [103] = "", [104] = "-----------------------------------------", [105] = "NavRoute_1_Line_2", [106] = "", [107] = "-----------------------------------------", [108] = "NavRoute_1_Line_3", [109] = "", [110] = "}", [111] = "}", [112] = "-----------------------------------------", [113] = "Aircraft_reference_symbol_Root", [114] = "", [115] = "children are {", [116] = "-----------------------------------------", [117] = "AC_Reference_root", [118] = "", [119] = "children are {", [120] = "-----------------------------------------", [121] = "Aircraft_reference_Reference_Symbol", [122] = "", [123] = "-----------------------------------------", [124] = "Azimuth_Steering_Bar", [125] = "", [126] = "}", [127] = "}", [128] = "-----------------------------------------", [129] = "HSD_Cursor_Root", [130] = "", [131] = "children are {", [132] = "-----------------------------------------", [133] = "HSD_Cursor_Line_Left", [134] = "", [135] = "-----------------------------------------", [136] = "HSD_Cursor_Line_Right", [137] = "", [138] = "}", [139] = "-----------------------------------------", [140] = "HSD_Bearing_range", [141] = "146 02", [142] = "-----------------------------------------", [143] = "HSD_Main_Menu_PH", [144] = "", [145] = "children are {", [146] = "-----------------------------------------", [147] = " Table. Root. Unic ID: _id:1", [148] = "", [149] = "children are {", [150] = "-----------------------------------------", [151] = " Table. Root. Unic ID: _id:1. Text", [152] = "DEP", [153] = "children are {", [154] = "-----------------------------------------", [155] = " Table. Root. Unic ID: _id:1. Text_Mask", [156] = "", [157] = "}", [158] = "}", [159] = "-----------------------------------------", [160] = "DCPL Table. Root. Unic ID: _id:2", [161] = "", [162] = "children are {", [163] = "-----------------------------------------", [164] = "DCPL Table. Root. Unic ID: _id:2. Text", [165] = "DCPL", [166] = "children are {", [167] = "-----------------------------------------", [168] = "DCPL Table. Root. Unic ID: _id:2. Text_Mask", [169] = "", [170] = "}", [171] = "}", [172] = "-----------------------------------------", [173] = "NORM Table. Root. Unic ID: _id:3", [174] = "", [175] = "children are {", [176] = "-----------------------------------------", [177] = "NORM Table. Root. Unic ID: _id:3. Text", [178] = "NORM", [179] = "children are {", [180] = "-----------------------------------------", [181] = "NORM Table. Root. Unic ID: _id:3. Text_Mask", [182] = "", [183] = "}", [184] = "}", [185] = "-----------------------------------------", [186] = "MSG Table. Root. Unic ID: _id:4", [187] = "", [188] = "children are {", [189] = "-----------------------------------------", [190] = "MSG Table. Root. Unic ID: _id:4. Text", [191] = "MSG", [192] = "children are {", [193] = "-----------------------------------------", [194] = "MSG Table. Root. Unic ID: _id:4. Text_Mask", [195] = "", [196] = "}", [197] = "}", [198] = "-----------------------------------------", [199] = "CNTL Table. Root. Unic ID: _id:5", [200] = "", [201] = "children are {", [202] = "-----------------------------------------", [203] = "CNTL Table. Root. Unic ID: _id:5. Text", [204] = "CNTL", [205] = "children are {", [206] = "-----------------------------------------", [207] = "CNTL Table. Root. Unic ID: _id:5. Text_Mask", [208] = "", [209] = "}", [210] = "}", [211] = "-----------------------------------------", [212] = "XMT", [213] = "OFF Table. Root. Unic ID: _id:6", [214] = "", [215] = "children are {", [216] = "-----------------------------------------", [217] = "XMT", [218] = "OFF Table. Root. Unic ID: _id:6. Text", [219] = "XMT", [220] = "OFF", [221] = "children are {", [222] = "-----------------------------------------", [223] = "XMT", [224] = "OFF Table. Root. Unic ID: _id:6. Text_Mask", [225] = "", [226] = "}", [227] = "}", [228] = "-----------------------------------------", [229] = "F", [230] = "Z Table. Root. Unic ID: _id:7", [231] = "", [232] = "children are {", [233] = "-----------------------------------------", [234] = "F", [235] = "Z Table. Root. Unic ID: _id:7. Text", [236] = "F", [237] = "Z", [238] = "children are {", [239] = "-----------------------------------------", [240] = "F", [241] = "Z Table. Root. Unic ID: _id:7. Text_Mask", [242] = "", [243] = "}", [244] = "}", [245] = "-----------------------------------------", [246] = "FR", [247] = "ON Table. Root. Unic ID: _id:8", [248] = "", [249] = "children are {", [250] = "-----------------------------------------", [251] = "FR", [252] = "ON Table. Root. Unic ID: _id:8. Text", [253] = "FR", [254] = "ON", [255] = "children are {", [256] = "-----------------------------------------", [257] = "FR", [258] = "ON Table. Root. Unic ID: _id:8. Text_Mask", [259] = "", [260] = "}", [261] = "}", [262] = "-----------------------------------------", [263] = "Range_Scale_Root", [264] = "", [265] = "children are {", [266] = "-----------------------------------------", [267] = "Range_Scale_Value", [268] = "60", [269] = "-----------------------------------------", [270] = "Decrement_Range_Scale_Symbol", [271] = "", [272] = "-----------------------------------------", [273] = "Increment_Range_Scale_Symbol", [274] = "", [275] = "}", [276] = "}", [277] = "-----------------------------------------", [278] = "Range_Scale_Root_Mask", [279] = "", [280] = "-----------------------------------------", [281] = "Bullseye_LOS_Mask_PH", [282] = "", [283] = "-----------------------------------------", [284] = "Bullseye_LOS_Mask_PH_Mask", [285] = "", [286] = "-----------------------------------------", [287] = "HSD_AircraftPosValid_PH", [288] = "", [289] = "children are {", [290] = "-----------------------------------------", [291] = "Link16_DefenseZones_Keeper", [292] = "", [293] = "-----------------------------------------", [294] = "System_AirTracks_Keeper", [295] = "", [296] = "}", [297] = "-----------------------------------------", [298] = "DCLT Table. Root. Unic ID: _id:1", [299] = "", [300] = "children are {", [301] = "-----------------------------------------", [302] = "DCLT Table. Root. Unic ID: _id:1. Text", [303] = "DCLT", [304] = "children are {", [305] = "-----------------------------------------", [306] = "DCLT Table. Root. Unic ID: _id:1. Text_Mask", [307] = "", [308] = "}", [309] = "}", [310] = "-----------------------------------------", [311] = "S-J Table. Root. Unic ID: _id:43", [312] = "", [313] = "children are {", [314] = "}", [315] = "-----------------------------------------", [316] = "TCN Table. Root. Unic ID: _id:44", [317] = "", [318] = "children are {", [319] = "}", [320] = "-----------------------------------------", [321] = "PB_Menu_Label_ROOT_12", [322] = "", [323] = "children are {", [324] = "-----------------------------------------", [325] = "PB_Menu_Label_12", [326] = " ", [327] = "}", [328] = "-----------------------------------------", [329] = "PB_Menu_Label_ROOT_13", [330] = "", [331] = "children are {", [332] = "-----------------------------------------", [333] = "PB_Menu_Label_ROOT_Selected13", [334] = "", [335] = "children are {", [336] = "-----------------------------------------", [337] = "PB_Menu_Label_rootFiller_3Sym_13", [338] = "", [339] = "children are {", [340] = "-----------------------------------------", [341] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:135", [342] = "", [343] = "-----------------------------------------", [344] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:136", [345] = "", [346] = "-----------------------------------------", [347] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:137", [348] = "", [349] = "-----------------------------------------", [350] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:138", [351] = "", [352] = "-----------------------------------------", [353] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:139", [354] = "", [355] = "-----------------------------------------", [356] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:140", [357] = "", [358] = "-----------------------------------------", [359] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:141", [360] = "", [361] = "-----------------------------------------", [362] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:142", [363] = "", [364] = "-----------------------------------------", [365] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:143", [366] = "", [367] = "-----------------------------------------", [368] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:144", [369] = "", [370] = "-----------------------------------------", [371] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:145", [372] = "", [373] = "-----------------------------------------", [374] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:146", [375] = "", [376] = "-----------------------------------------", [377] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:147", [378] = "", [379] = "-----------------------------------------", [380] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:148", [381] = "", [382] = "-----------------------------------------", [383] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:149", [384] = "", [385] = "-----------------------------------------", [386] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:150", [387] = "", [388] = "-----------------------------------------", [389] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:151", [390] = "", [391] = "-----------------------------------------", [392] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:152", [393] = "", [394] = "-----------------------------------------", [395] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:153", [396] = "", [397] = "-----------------------------------------", [398] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:154", [399] = "", [400] = "-----------------------------------------", [401] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:155", [402] = "", [403] = "-----------------------------------------", [404] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:156", [405] = "", [406] = "-----------------------------------------", [407] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:157", [408] = "", [409] = "-----------------------------------------", [410] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:158", [411] = "", [412] = "-----------------------------------------", [413] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:159", [414] = "", [415] = "-----------------------------------------", [416] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:160", [417] = "", [418] = "-----------------------------------------", [419] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:161", [420] = "", [421] = "-----------------------------------------", [422] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:162", [423] = "", [424] = "-----------------------------------------", [425] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:163", [426] = "", [427] = "-----------------------------------------", [428] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:164", [429] = "", [430] = "-----------------------------------------", [431] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:165", [432] = "", [433] = "-----------------------------------------", [434] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:166", [435] = "", [436] = "-----------------------------------------", [437] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:167", [438] = "", [439] = "-----------------------------------------", [440] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:168", [441] = "", [442] = "-----------------------------------------", [443] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:169", [444] = "", [445] = "-----------------------------------------", [446] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:170", [447] = "", [448] = "-----------------------------------------", [449] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:171", [450] = "", [451] = "-----------------------------------------", [452] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:172", [453] = "", [454] = "-----------------------------------------", [455] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:173", [456] = "", [457] = "-----------------------------------------", [458] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:174", [459] = "", [460] = "-----------------------------------------", [461] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:175", [462] = "", [463] = "-----------------------------------------", [464] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:176", [465] = "", [466] = "-----------------------------------------", [467] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:177", [468] = "", [469] = "-----------------------------------------", [470] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:178", [471] = "", [472] = "-----------------------------------------", [473] = "PB_Menu_Label_rootFiller_3Sym_13_Line__id:179", [474] = "", [475] = "}", [476] = "-----------------------------------------", [477] = "PB_Menu_Label_Black_PB_13", [478] = "HSD", [479] = "}", [480] = "}", [481] = "-----------------------------------------", [482] = "PB_Menu_Label_3Sym_13_Mask", [483] = "", [484] = "-----------------------------------------", [485] = "PB_Menu_Label_ROOT_14", [486] = "", [487] = "children are {", [488] = "-----------------------------------------", [489] = "PB_Menu_Label_14", [490] = "SMS", [491] = "}", [492] = "-----------------------------------------", [493] = "PB_Menu_Label_3Sym_14_Mask", [494] = "", [495] = "-----------------------------------------", [496] = "SWAP Table. Root. Unic ID: _id:315", [497] = "", [498] = "children are {", [499] = "-----------------------------------------", [500] = "SWAP Table. Root. Unic ID: _id:315. Text", [501] = "SWAP", [502] = "children are {", [503] = "-----------------------------------------", [504] = "SWAP Table. Root. Unic ID: _id:315. Text_Mask", [505] = "", [506] = "}", [507] = "}", } So looking at these 2, the "DEP" is line 152 in one page, where "A-G" on the other page is line 86 - These 2 labels go on the same MFD button / location - So how do I ID this value since it moves all over the table? A very crude solution would be a long table of "If [86] = "A-G" then text = "A-G" elseif [152] = DED then text = "DED" and so on for all cases, but that will be a large if line! Edited October 28, 2021 by Martin1454 Link to comment Share on other sites More sharing options...
Toni Carrera Posted October 29, 2021 Share Posted October 29, 2021 Hi Bailey, How would I manage to get say the Chaff and Flare values on one button as you have in your post a couple up from this post; I would love to be able to do this for a lot of the values for my F/A-18C, Chaff and Flare being one combined set, and perhaps Fuel. I have the value for the value of Fuel Remaining, but not sure how you have done it with say the 'Fuel LBS and then the comma'd value underneath. Obviously there is significant amount of data I could display in combined formats as you have done Again, I do not mean to sound stupid, but I just need to understand it once, and then I will have it Thank you Toni Toni Carrera (Ice Rhino) ThrustMaster HOTAS Warthog Throttle & A10C Stick, ThrustMaster F/A-18C Stick, ThrustMaster TFRP Pedals, ThrustMaster Cougars x 2, fitted to CubeSim USB Screens, TrackIR 4 Active LED & Cap Reflector, Stream Deck XL Intel® Core™ i7-5820K 12 Core Processor, 32GB RAM, 1 x 500GB SSD, 2 x 256GB SSD, 1 x 1TB SSD 4 x 4TB Western Digital Mechanical. 2 x ASUS GTX 1080's SLI, ASUS 29" Ultrawide flanked by 2 x 22" IPS Monitors Link to comment Share on other sites More sharing options...
Bailey Posted October 29, 2021 Share Posted October 29, 2021 8 hours ago, Toni Carrera said: Hi Bailey, How would I manage to get say the Chaff and Flare values on one button as you have in your post a couple up from this post; I would love to be able to do this for a lot of the values for my F/A-18C, Chaff and Flare being one combined set, and perhaps Fuel. I have the value for the value of Fuel Remaining, but not sure how you have done it with say the 'Fuel LBS and then the comma'd value underneath. Obviously there is significant amount of data I could display in combined formats as you have done Again, I do not mean to sound stupid, but I just need to understand it once, and then I will have it Thank you Toni Np. All you need is a little more lua knowledge. Let's take the F16 lua for example (https://github.com/asherao/DCS-ExportScripts/blob/master/Scripts/DCS-ExportScript/ExportsModules/F-16C_50.lua). Starting on line 1076 you can see: ExportScript.Tools.SendData(3004, "CH " .. CMDS_CH_Amount .. "\nFL " .. CMDS_FL_Amount) ExportScript.Tools.SendData is the way that ExportScript uses its library to format the data to be sent to the streamdeck. 3004, is the ID that ExportScript assigns the following data "CH " .. CMDS_CH_Amount .. "\nFL " .. CMDS_FL_Amount is the data that will be sent to the SD. Let's break it down a bit more. It is "normal lua" so you can google all of these concepts. Anything in quotes can be considered a string. What you write is what you get. Anything not in quotes is a variable that was defined earlier in the code. The double dots are what combine the strings and the variables. Consider them as the tape that holds the two together. The "\n" is the way you tell lua that you want a NewLine. It essentially simulates the EnterKey. That's all there is to it! For practice, try making something like this in one of your export luas. I haven't tried this ingame, but it will get you used to the concepts. Take a look at some of the other luas like the hind and mossie to see these kinds of tiles in action. Keep the questions coming! local testNumber testNumber = 12345 ExportScript.Tools.SendData(9999, "TEST\n" .. testNumber) 2 DCS VoiceAttack Profiles | My Mods and Utilities on ED User Files | DiCE: DCS Integrated Countermeasure Editor DCS Update Witching Utility | DCS-ExportScripts for Stream Deck Community Github Library | Kiowa Integrated Overlays Link to comment Share on other sites More sharing options...
CrashAlot Posted October 31, 2021 Share Posted October 31, 2021 I recently bought a Stream Deck (SD) XL to use with DCS. I programmed a bunch of different profiles and folders of SD buttons using the Stream Deck DCS Interface and DCS Exports shared by Charles Tyler, but the DCS Interface and Exports don't work for controlling simulation controls like shortcuts to exterior and cockpit views, show/hide flight controls, show/hide Pilot, show/hide flight stick, auto-start, active pause, view briefing, view rearm/refuel window, and communication shortcuts like calling the ball, salute, RTB, rejoin, cover me, etc. I am terrible about remembering the dozens of keyboard shortcuts for all of the DCS Control Settings, so I programmed all of these sim controls and a lot more as Stream Deck hot keys mirrored to the keyboard shortcuts in DCS Control Settings, but none of them are working in DCS. However all of the Stream Deck buttons that I programmed with the much more complex DCS Interface plug-in using DCS Exports scripts are working beautifully, so it's clear that my Stream Deck is being recognized by DCS, however whenever I use my Stream Deck buttons as simple hot keys aka keyboard shortcuts, which is basically just a keyboard emulator, DCS doesn't recognize any of them. I know that the hot keys are set up correctly because I opened up MS Word and pressed all the SD hot keys and they typed the characters that I had set up for each hot key. The hot keys also work perfectly as keyboard shortcuts in other apps like MSFS 2020. At first I thought the issue might have been due to modifiers like left shift and right shift, etc., so I programmed my SD hot keys as single characters like single letters and numbers without any modifiers and I changed the corresponding keyboard shortcuts in DCS Control Settings to match the single characters that I had programmed as hot keys in the Stream Deck app, but still none of the hot keys worked in DCS. I would just use the Stream Deck DCS Interface/DCS Exports scripts for programming all of the DCS functions that I want on my Stream Deck, but DCS doesn't have the necessary device ID's and DCS ID's for all the sim controls that I listed above, which are needed to use Stream Deck DCS Interface/DCS Exports scripts. Stream Deck Interface/DCS Exports scripts are only good for programming Stream Deck buttons to control things in the aircraft that have a physical input like a button, switch, lever, or flight control. So far I've tried every fix that I could find on this message board and elsewhere for the issue I'm having with SD hot keys not working in DCS. I've tried using my Stream Deck hot keys when I was running DCS as administrator and I've tried running DCS not as admin. I've tried running the Stream Deck application as admin and not as admin. I'm not sure if it matters, but I do have Voice Attack, VAICOM, SRS, DCS Bios, and TacView installed on my PC, as well the Stream Deck DCS Interface and DCS Exports plug-ins. Everything else is working fine, except for Stream Deck Hot Keys only in DCS. Does anyone have any suggested fixes that I haven't tried yet? Link to comment Share on other sites More sharing options...
frostycab Posted October 31, 2021 Share Posted October 31, 2021 (edited) 9 hours ago, CrashAlot said: I recently bought a Stream Deck (SD) XL to use with DCS. I programmed a bunch of different profiles and folders of SD buttons using the Stream Deck DCS Interface and DCS Exports shared by Charles Tyler, but the DCS Interface and Exports don't work for controlling simulation controls like shortcuts to exterior and cockpit views, show/hide flight controls, show/hide Pilot, show/hide flight stick, auto-start, active pause, view briefing, view rearm/refuel window, and communication shortcuts like calling the ball, salute, RTB, rejoin, cover me, etc. I am terrible about remembering the dozens of keyboard shortcuts for all of the DCS Control Settings, so I programmed all of these sim controls and a lot more as Stream Deck hot keys mirrored to the keyboard shortcuts in DCS Control Settings, but none of them are working in DCS. However all of the Stream Deck buttons that I programmed with the much more complex DCS Interface plug-in using DCS Exports scripts are working beautifully, so it's clear that my Stream Deck is being recognized by DCS, however whenever I use my Stream Deck buttons as simple hot keys aka keyboard shortcuts, which is basically just a keyboard emulator, DCS doesn't recognize any of them. I know that the hot keys are set up correctly because I opened up MS Word and pressed all the SD hot keys and they typed the characters that I had set up for each hot key. The hot keys also work perfectly as keyboard shortcuts in other apps like MSFS 2020. At first I thought the issue might have been due to modifiers like left shift and right shift, etc., so I programmed my SD hot keys as single characters like single letters and numbers without any modifiers and I changed the corresponding keyboard shortcuts in DCS Control Settings to match the single characters that I had programmed as hot keys in the Stream Deck app, but still none of the hot keys worked in DCS. I would just use the Stream Deck DCS Interface/DCS Exports scripts for programming all of the DCS functions that I want on my Stream Deck, but DCS doesn't have the necessary device ID's and DCS ID's for all the sim controls that I listed above, which are needed to use Stream Deck DCS Interface/DCS Exports scripts. Stream Deck Interface/DCS Exports scripts are only good for programming Stream Deck buttons to control things in the aircraft that have a physical input like a button, switch, lever, or flight control. So far I've tried every fix that I could find on this message board and elsewhere for the issue I'm having with SD hot keys not working in DCS. I've tried using my Stream Deck hot keys when I was running DCS as administrator and I've tried running DCS not as admin. I've tried running the Stream Deck application as admin and not as admin. I'm not sure if it matters, but I do have Voice Attack, VAICOM, SRS, DCS Bios, and TacView installed on my PC, as well the Stream Deck DCS Interface and DCS Exports plug-ins. Everything else is working fine, except for Stream Deck Hot Keys only in DCS. Does anyone have any suggested fixes that I haven't tried yet? If you're just trying to send keystrokes via HOTKEY buttons on the SD then this sounds like a common issue that I fell foul of when I got my SD. Check that the Streamdeck software and DCS are both running in Administrator Mode. If one is and the other isn't then that seems to stop the keystrokes making their way through. Edited October 31, 2021 by frostycab Link to comment Share on other sites More sharing options...
lassekongo Posted November 1, 2021 Share Posted November 1, 2021 How do I make my f14b profile work with f14A ? Link to comment Share on other sites More sharing options...
Bailey Posted November 1, 2021 Share Posted November 1, 2021 On 10/31/2021 at 9:41 AM, CrashAlot said: I recently bought a Stream Deck (SD) XL to use with DCS. I programmed a bunch of different profiles and folders of SD buttons using the Stream Deck DCS Interface and DCS Exports shared by Charles Tyler, but the DCS Interface and Exports don't work for controlling simulation controls like shortcuts to exterior and cockpit views, show/hide flight controls, show/hide Pilot, show/hide flight stick, auto-start, active pause, view briefing, view rearm/refuel window, and communication shortcuts like calling the ball, salute, RTB, rejoin, cover me, etc. I am terrible about remembering the dozens of keyboard shortcuts for all of the DCS Control Settings, so I programmed all of these sim controls and a lot more as Stream Deck hot keys mirrored to the keyboard shortcuts in DCS Control Settings, but none of them are working in DCS. However all of the Stream Deck buttons that I programmed with the much more complex DCS Interface plug-in using DCS Exports scripts are working beautifully, so it's clear that my Stream Deck is being recognized by DCS, however whenever I use my Stream Deck buttons as simple hot keys aka keyboard shortcuts, which is basically just a keyboard emulator, DCS doesn't recognize any of them. I know that the hot keys are set up correctly because I opened up MS Word and pressed all the SD hot keys and they typed the characters that I had set up for each hot key. The hot keys also work perfectly as keyboard shortcuts in other apps like MSFS 2020. At first I thought the issue might have been due to modifiers like left shift and right shift, etc., so I programmed my SD hot keys as single characters like single letters and numbers without any modifiers and I changed the corresponding keyboard shortcuts in DCS Control Settings to match the single characters that I had programmed as hot keys in the Stream Deck app, but still none of the hot keys worked in DCS. I would just use the Stream Deck DCS Interface/DCS Exports scripts for programming all of the DCS functions that I want on my Stream Deck, but DCS doesn't have the necessary device ID's and DCS ID's for all the sim controls that I listed above, which are needed to use Stream Deck DCS Interface/DCS Exports scripts. Stream Deck Interface/DCS Exports scripts are only good for programming Stream Deck buttons to control things in the aircraft that have a physical input like a button, switch, lever, or flight control. So far I've tried every fix that I could find on this message board and elsewhere for the issue I'm having with SD hot keys not working in DCS. I've tried using my Stream Deck hot keys when I was running DCS as administrator and I've tried running DCS not as admin. I've tried running the Stream Deck application as admin and not as admin. I'm not sure if it matters, but I do have Voice Attack, VAICOM, SRS, DCS Bios, and TacView installed on my PC, as well the Stream Deck DCS Interface and DCS Exports plug-ins. Everything else is working fine, except for Stream Deck Hot Keys only in DCS. Does anyone have any suggested fixes that I haven't tried yet? Try this. https://forums.eagle.ru/topic/266840-cant-get-stream-deck-hotkeys-to-be-recognized-in-dcs/?do=findComment&comment=4813510 DCS VoiceAttack Profiles | My Mods and Utilities on ED User Files | DiCE: DCS Integrated Countermeasure Editor DCS Update Witching Utility | DCS-ExportScripts for Stream Deck Community Github Library | Kiowa Integrated Overlays Link to comment Share on other sites More sharing options...
Durkin Posted November 2, 2021 Share Posted November 2, 2021 Hi, I'm new to all this. I tried to follow the thread but there is a lot of info there. I have downloaded the latest plug in but not sure how to install it. I have downloaded the A10 and F16 profiles I found but I did not see any for the P-51, P47 or FW190. I did see the Mosquito profile and got that. Would love to get these working on my StreamDeck XL. Link to comment Share on other sites More sharing options...
Toni Carrera Posted November 2, 2021 Share Posted November 2, 2021 (edited) Hi Durkin, Did you follow Charles' excellent tutorial guides? -------------------------------------------------- Installation and Configuration - DCS Interface for StreamDeck Switches - DCS Interface for StreamDeck Momentary Push-Buttons - DCS Interface for StreamDeck Image State Change (Lamp Illumination) - DCS Interface for StreamDeck Increment (Rotary Dials) - DCS Interface for StreamDeck Increment (pt 2 - switches) - DCS Interface for StreamDeck Title Text Change Settings - DCS Interface for StreamDeck Button vs Lamp IDs (Common Mistakes) - DCS Interface for StreamDeck DCS Interface for StreamDeck: Display Strings (JF-17 UFCP) DCS Interface for StreamDeck (Advanced): Identifying Module Exports If you have any particular issues, I will do my best to help. I am by no means an expert in any way shape or form, but I do have mental issues that make things like this difficult for me, but I will help you where I can Toni Edited November 2, 2021 by Toni Carrera Removed Images Toni Carrera (Ice Rhino) ThrustMaster HOTAS Warthog Throttle & A10C Stick, ThrustMaster F/A-18C Stick, ThrustMaster TFRP Pedals, ThrustMaster Cougars x 2, fitted to CubeSim USB Screens, TrackIR 4 Active LED & Cap Reflector, Stream Deck XL Intel® Core™ i7-5820K 12 Core Processor, 32GB RAM, 1 x 500GB SSD, 2 x 256GB SSD, 1 x 1TB SSD 4 x 4TB Western Digital Mechanical. 2 x ASUS GTX 1080's SLI, ASUS 29" Ultrawide flanked by 2 x 22" IPS Monitors Link to comment Share on other sites More sharing options...
Bailey Posted November 3, 2021 Share Posted November 3, 2021 6 hours ago, Durkin said: Hi, I'm new to all this. I tried to follow the thread but there is a lot of info there. I have downloaded the latest plug in but not sure how to install it. I have downloaded the A10 and F16 profiles I found but I did not see any for the P-51, P47 or FW190. I did see the Mosquito profile and got that. Would love to get these working on my StreamDeck XL. Here are the install instructions for the SD app. https://github.com/charlestytler/streamdeck-dcs-interface#installation you will notice that they also point to DCS-ExportScripts install instructions within. DCS VoiceAttack Profiles | My Mods and Utilities on ED User Files | DiCE: DCS Integrated Countermeasure Editor DCS Update Witching Utility | DCS-ExportScripts for Stream Deck Community Github Library | Kiowa Integrated Overlays Link to comment Share on other sites More sharing options...
harvesthunt Posted November 5, 2021 Share Posted November 5, 2021 Is there a way to create profiles for user aircraft? I'd love to create one for the Hercules. I use it so little, just when logistics ops are needed, and would love to have all the main controls on my SDXL. Basically I'm asking if users can create profile.lua's on their own, and if so where might I find some info? Thanks! Link to comment Share on other sites More sharing options...
Bailey Posted November 6, 2021 Share Posted November 6, 2021 3 hours ago, harvesthunt said: Is there a way to create profiles for user aircraft? I'd love to create one for the Hercules. I use it so little, just when logistics ops are needed, and would love to have all the main controls on my SDXL. Basically I'm asking if users can create profile.lua's on their own, and if so where might I find some info? Thanks! Try this I know that people have trouble making profiles for the A4, so mileage may vary. 1 DCS VoiceAttack Profiles | My Mods and Utilities on ED User Files | DiCE: DCS Integrated Countermeasure Editor DCS Update Witching Utility | DCS-ExportScripts for Stream Deck Community Github Library | Kiowa Integrated Overlays Link to comment Share on other sites More sharing options...
harvesthunt Posted November 6, 2021 Share Posted November 6, 2021 Thanks Baily. I'll have a look at that this weekend. I'll be sure to share whatever I come up with...... Hopefully a working Herc Profile! 1 Link to comment Share on other sites More sharing options...
hasole Posted November 27, 2021 Share Posted November 27, 2021 Is anyone out there having issues with ExportScripts not talking to DCS even though the log file can find the airframe when you jump into sim. My DCS comms in the stream deck checks out and can read from the game. The only thing that fixes it is a reboot of Windows 10. Happens intermittently. Link to comment Share on other sites More sharing options...
Recommended Posts