Jump to content

DCS-ExportScripts for Stream Deck Community Github Library


Recommended Posts

  • 2 weeks later...
On 1/9/2023 at 12:19 PM, Lange_666 said:

Yesterday i noticed a constant annoying stutter when running DCS. Before that it ran silky smooth.

Please try the fix I just posted here. 

Works perfect on my system so far.

 


Edited by wombat778
Link to comment
Share on other sites

  • 3 weeks later...

The F5E pitch trim indicator is hard to see under the sun shade. I found the DCS ID to be 52 and got it to display on the stream deck. However, this is a decimal value with 4 places. For example, a pitch trim of 5 degrees is shown by the value 0.05000. How can I get the display to read 10x the actual value?

4930K @ 4.5, 32g ram, TitanPascal

Link to comment
Share on other sites

6 hours ago, skypickle said:

The F5E pitch trim indicator is hard to see under the sun shade. I found the DCS ID to be 52 and got it to display on the stream deck. However, this is a decimal value with 4 places. For example, a pitch trim of 5 degrees is shown by the value 0.05000. How can I get the display to read 10x the actual value?

You can try to create your own readout. Something like this.
 

function ExportScript.Trim_ind(mainPanelDevice)
	--exports elevator trim value

    local indicator_value = ExportScript.Tools.round(mainPanelDevice:get_argurment_value(52) * 10 )

    ExportScript.Tools.SendData(5000, indicator_value)
end

Then look for the heading below and add the second line you see here below it.

function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice)
ExportScript.Trim_ind(mainPanelDevice)

Then on a button use the value 5000 for the x10 trim indicator value. I don't have any way to test it as I don't have the F5.

Link to comment
Share on other sites

@bones1014thank you. I guess instead of declaring a function I could just put these two lines in the F-5E-3.lua file:

 

local indicator_value = ExportScript.Tools.round(mainPanelDevice:get_argurment_value(52) * 10 )
ExportScript.Tools.SendData(5000, indicator_value)

Why did you choose to use a function definition in the main ExportScript.lua? Just asking so I can learn.

Also, why put it in this function:

function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice)
 

and not this function:

 

function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice)
 


Edited by skypickle

4930K @ 4.5, 32g ram, TitanPascal

Link to comment
Share on other sites

also cant get the uhf channels to change even tho the correct button IDs are used for tumblers. How would I get a clue to resolving that?

the F-5E-3.lua has this for the radio knobs:

in the function

function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice)
 

there is this line:

 ExportScript.UhfRadioKnobs(mainPanelDevice) -- AN/ARC-164 UHF 

and that function is defined thusly:
 

function ExportScript.UhfRadioKnobs(mainPanelDevice) --AN/ARC-164 UHF 
  
	local lTmp327 = tonumber(string.format("%0.1f", mainPanelDevice:get_argument_value(327)))
	local lTmp327_2 = lTmp327
        if lTmp327 == 0.0 then lTmp327_2 = 0.0
	elseif lTmp327 == 0.1 then lTmp327_2 = 0.3
	elseif lTmp327 == 0.2 then lTmp327_2 = 0.2
	elseif lTmp327 == 0.3 then lTmp327_2 = 0.1
	else                       lTmp327_2 = lTmp327 end
	
	local lTmp328_2 = 1 - mainPanelDevice:get_argument_value(328)
	local lTmp329_2 = 1 - mainPanelDevice:get_argument_value(329)
	local lTmp330_2 = 1 - mainPanelDevice:get_argument_value(330)
	
	local lTmp331 = mainPanelDevice:get_argument_value(331)
	local lTmp331_2 = 0
        if lTmp331 == 0.0  then lTmp331_2 = 0.0
	elseif lTmp331 == 0.25 then lTmp331_2 = 0.75
	elseif lTmp331 == 0.5  then lTmp331_2 = 0.5
	elseif lTmp331 == 0.75 then lTmp331_2 = 0.25
	else                       lTmp331_2 = lTmp331 end
	
	ExportScript.Tools.SendData(327, lTmp327_2)
	ExportScript.Tools.SendData(328, lTmp328_2)
	ExportScript.Tools.SendData(329, lTmp329_2)
	ExportScript.Tools.SendData(330, lTmp330_2)
	ExportScript.Tools.SendData(331, lTmp331_2)
end

but the DCS_IDs (327,328,329,330, and 331) do bizarre things when assigned to tumbler buttons. Streamdeck crashes.

The button IDs as assigned from the plugin are (3002,3003,3004,3005,3006). Where do these come from?


Edited by skypickle

4930K @ 4.5, 32g ram, TitanPascal

Link to comment
Share on other sites

On 3/13/2023 at 3:53 PM, skypickle said:

@bones1014thank you. I guess instead of declaring a function I could just put these two lines in the F-5E-3.lua file:

 

local indicator_value = ExportScript.Tools.round(mainPanelDevice:get_argurment_value(52) * 10 )
ExportScript.Tools.SendData(5000, indicator_value)

Why did you choose to use a function definition in the main ExportScript.lua? Just asking so I can learn.

Also, why put it in this function:

function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice)
 

and not this function:

 

function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice)
 

 

I don't know other than that's how it's been done in the past. I've just emulated the work of others to get what I want somethings to display. I don't even know what Ikarus vs DACC is. Did it work? I can't test it because I don't have the F5.

Link to comment
Share on other sites

4 hours ago, bones1014 said:

I don't know other than that's how it's been done in the past. I've just emulated the work of others to get what I want somethings to display. I don't even know what Ikarus vs DACC is. Did it work? I can't test it because I don't have the F5.

No it did not. I simply put the correct values in the third option of the streamdeck button and unchecked’display default values’

4930K @ 4.5, 32g ram, TitanPascal

Link to comment
Share on other sites

9 hours ago, skypickle said:

No it did not. I simply put the correct values in the third option of the streamdeck button and unchecked’display default values’

In this case you DO want to display default values. That's what the function will be doing. I wish I could test it out.

Link to comment
Share on other sites

  • 2 weeks later...
On 3/14/2023 at 5:53 AM, skypickle said:

@bones1014thank you. I guess instead of declaring a function I could just put these two lines in the F-5E-3.lua file:

 

local indicator_value = ExportScript.Tools.round(mainPanelDevice:get_argurment_value(52) * 10 )
ExportScript.Tools.SendData(5000, indicator_value)

Why did you choose to use a function definition in the main ExportScript.lua? Just asking so I can learn.

Also, why put it in this function:

function ExportScript.ProcessIkarusDCSConfigLowImportance(mainPanelDevice)
 

and not this function:

 

function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice)
 

 

I personally like using functions because when you start to get a lot of features and exports (dozens, maybe hundreds), the functions can act as a sort of "container".
- Looks cleaner, easier to follow
- Less likely to break other features with errors
- Can easily cut and paste features into other modules
- Easy to disable a function with a comment out for a single line instead of many lines of code

As for Ikarus vs DAC, long before my time, they were two different services doing different things. Ikarus is the one to use because that is the one that DCS-Interfaces leans on.

LowImportace vs HighImportance. These are simply defined as the refresh rates of the contents within. High is faster than Low. I personally prefer to put all things in Low, as I assume that it uses fewer PC resources. If I see that the refresh rate is unacceptable, I will copy and paste the one-liner function (another advantage) into the HighImportance function.

Link to comment
Share on other sites

@Bailey Thank you. BTW, I am trying to find which argument DCS uses for the ARC210 freq. How do I find that so I can put it into the A10c_2 lua in the DCSExportScripts folder?

 

As per the DCSExport Scripts Wiki, I added the following codein the A10c_2 lua to the function:

function ExportScript.ProcessDACConfigLowImportance(mainPanelDevice)

--log
    ExportScript.Tools.WriteToLog('list_cockpit_params(): '..ExportScript.Tools.dump(list_cockpit_params()))
	ExportScript.Tools.WriteToLog('CMSP: '..ExportScript.Tools.dump(list_indication(7)))
	
	local ltmp1 = 0
	for ltmp2 = 0, 13, 1 do
		ltmp1 = list_indication(ltmp2)
		ExportScript.Tools.WriteToLog(ltmp2..': '..ExportScript.Tools.dump(ltmp1))
		--ExportScript.Tools.WriteToLog(ltmp2..' (metatable): '..ExportScript.Tools.dump(getmetatable(ltmp1)))
	end

I then loaded up an A-10C_2 on the runway, played with the radio, quit.

but the Export.log in the saved games folder was no different than usual.


Edited by skypickle

4930K @ 4.5, 32g ram, TitanPascal

Link to comment
Share on other sites

On 3/27/2023 at 9:23 PM, Bailey said:

As for Ikarus vs DAC, long before my time, they were two different services doing different things. Ikarus is the one to use because that is the one that DCS-Interfaces leans on.

If memory serves, DAC leans on the same DCS-ExportScript backend that Ikarus and DCS-Interface use.  DAC is meant to interface with an old (and no longer supported) hardware solution called Arcaze (DAC stands for DCS Arcaze Connector) which were used to automate MSFS cockpits i.e. same basic concept to using DCS-BIOS and Arduino to automate lights, gauges, etc. etc.    Pretty sure Arcaze was produced by a German company but as I stated they are no longer supported or produced.

IMG_20170611_173332_resized_20170612_100

^ Arcaze modules being used to drive LEDs in a cockpit.

Ikarus is a DCS glass cockpit solution similar to Helios which utilizes the DCS-ExportScript backend.  The developers dropped support a few years back, but you can still download it off GitHub.  It is sad it is no longer supported because in my opinion it is in someways easier to use than Helios.  It also doesn't introduce the export script complications that arise when you try to run DCS-Interface and Helios at the same time.  I use Ikarus and DCS-Interface in my cockpit and it works fine and has very little impact to FPS/performance.

On a side note - the DAC entries in the DCS-ExportScript config.lua file can be used to drive other instances of Ikarus and/or DCS-Interface either running locally on the same machine and/or on different machines.  If you are running both on the same machine you need to define different ports for each solution.  Here is a snippet of my config.lua file to get an idea how to do it:


-- Ikarus a Glass Cockpit Software
ExportScript.Config.IkarusExport    = true         -- false for not use 
ExportScript.Config.IkarusHost      = "127.0.0.1"  -- IP for Ikarus
ExportScript.Config.IkarusPort      = 1725         -- Port Ikarus (1625)
ExportScript.Config.IkarusSeparator = ":"

-- D.A.C. (DCS Arcaze Connector) NOTE:  This is used for DCS-Interface / Streamdeck solution
ExportScript.Config.DACExport        = true       -- true for use
ExportScript.Config.DAC              = {}

-- first hardware
ExportScript.Config.DAC[1]           = {}
ExportScript.Config.DAC[1].Host      = "127.0.0.1" -- IP for hardware 1
ExportScript.Config.DAC[1].SendPort  = 1625       -- Port for hardware 1  NOTE: port changed to 1625 here and in DCS-Interface
ExportScript.Config.DAC[1].Separator = ":"

-- second to n hardware
--ExportScript.Config.DAC[2]           = {}
--ExportScript.Config.DAC[2].Host      = "192.168.100.2"  -- IP for Ikarus instance on second cockpit PC
--ExportScript.Config.DAC[2].SendPort  = 9092        -- Port for hardware 2
--ExportScript.Config.DAC[2].Separator = ":"

-- Ikarus and D.A.C. can data send
ExportScript.Config.Listener         = true         -- false for not use
ExportScript.Config.ListenerPort     = 26027        -- Listener Port for D.A.C.

 

Just be sure to also change the listener port in DCS-Interface (or Ikarus) to match those in the config.lua.  For example, in my config.lua I changed the listener point for the second 127.0.0.1 entry (used for DCS-Interface) to 1625 and changed the port config within the DCS-Interface DCS Comms option dialog:

image.png

Hope this helps someone.  🙂

 


Edited by Invictus84
  • Like 1

 


 
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

Did anyone do or know of a F-15E profile and export script?

Zip - VEAF :pilotfly:

 

If you want to learn, talk and fly with french-speaking friends, the Virtual European Air Force is here for you ! Meet us on our Discord and our forum

If you're a mission creator, you may want to check the VEAF Mission Creation Tools (and its GitHub repository) a set of open-source scripts and tools that make creating a dynamic mission a breeze !

Link to comment
Share on other sites

1 hour ago, bones1014 said:

I'm gonna try to work on it tonight after work. 


Love you man! 😉

Zip - VEAF :pilotfly:

 

If you want to learn, talk and fly with french-speaking friends, the Virtual European Air Force is here for you ! Meet us on our Discord and our forum

If you're a mission creator, you may want to check the VEAF Mission Creation Tools (and its GitHub repository) a set of open-source scripts and tools that make creating a dynamic mission a breeze !

Link to comment
Share on other sites

1 hour ago, Trigati said:

Here is my first cut of the ExportScript file. I've just taken the Clickable Data items so far. If no one beats me to it I'll look into the lights/lamps/gauges etc. early next week.

F-15ESE.lua 29.47 kB · 2 downloads

I was just about to work on this, thank you 

I am going to create a full cockpit F15E, can work together if you want

  • Like 2
Link to comment
Share on other sites

1 hour ago, Norsk-L said:

I was just about to work on this, thank you 

I am going to create a full cockpit F15E, can work together if you want

Not sur ehow much time I'll have over the weekend but always happy to collaborate.

One thing I did just notice, some of the rotary controls should be 2 decimal places to work correctly, so .2f not .1f but I've no time to test them all right now.

 

  • Like 1
Link to comment
Share on other sites

28 minutes ago, Trigati said:

Not sur ehow much time I'll have over the weekend but always happy to collaborate.

One thing I did just notice, some of the rotary controls should be 2 decimal places to work correctly, so .2f not .1f but I've no time to test them all right now.

 

Don't worry about that one, I will fix the Lua file as I go through the cockpit. Thank God there aren't many switches to be put there. 

 

For the life of me I can't remember where to look for the lamps gages, could you give me a hint? 

 

I have already created the engine startup panel for f15E. I can get the entire cockpit done this weekend including the backseat. 

 

BTW any ideas on multimonitor setup for f15 E? 

Doesn't seem to be working as others do 

  • Like 1
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...