Jump to content

Recommended Posts

Posted

Hi all, just wanted to share something random that I figured out in the beta that could possibly help others get Export.lua to work.

 

normally when you would use the io library to output to a file, you'd use the "simple" model (not my term for it) which looks something like this

 

local file = io.open("./Temp/Export.log", "w")

if file then
   io.output(file)
   io.write("---Log: Start-----", "\n")
   io.flush()
end
io.close()

 

so what you're doing here with the io.output(file) line is telling the standard output stream to redirect its output into the file that you just created. Then, io.output(), io.flush(), io.close() etc. works on the standard output stream.

 

This is completely valid Lua, and it should work, and it DID work in FC2 and BS, but for some reason it does not work in A-10C and it can either stop your script from running completely, or halt it at the first troublesome line.

 

To fix, we can switch to using the "complete" io model (also not my term). The equivalent to the lines above is as follows:

 

 

file = io.open("./Temp/Export.log", "w")

if file then
   file:write("---Log: Start-----", "\n")
   file:flush()
end
file:close()

 

Notice I made the "file" variable global, and removed the io.output(file) line completely.

 

This fixed my problems getting Export.lua to work, and if anyone is using Oakes' script to connect to SIOC, this should help you out too.

  • Like 1
Posted (edited)

Thanks for posting that up I’m sure that will come in very handy. In the meantime I will some how have to find a way of finding the info again when needed.

Edited by Rockeyes

[sIGPIC][/sIGPIC]

HTC Vive

Windows 10 Maximus VIII Hero i7-6700k CPU @ 4.2GHz 16GB Nvida GeForce GTX 1080. Ram Duel SSD's

Posted

socket:send() / socket:receive()

 

last night i created a small program in c# that can communicate with the DCS-Sims via the export-script. reading data works for BS and WH but writing data seems to be a bit of a problem. triggering commands from my program works fine for BS but WH refuses to read the command from the socket.

 

i have tested it with BS 1.0.2 and WH beta1. same c#-binary and same export-script except the above mentioned changes to the file-writer in WH.

 

to test this, i simply sent a single byte over to DCS to change the view (cockpit=7, aircraft=8, flyby=9). in BS i can read the byte using the lua c:receive() method and change the view with the LoSetCommand() method, but in WH i only get back a nil-value from the receive()-method.

 

is this a WIP-issue (what i don't believe because to this point the sim itself isn't involved),

or are there any changes in the syntax because of a newer lua-version?

 

i have a quite good understanding for programming in java and c# since i do this for a living but i am a total newbie to lua. :helpsmilie:

AH-64D | AV-8B | A-10C II | A-4E | F-4E | F-5E | F-14B | F-15E | F-16C | F/A-18C | M-2000C | UH-1H | Mig-21bis | L-39 | F-86F | P-47D | P-51D | BF 109 | Spitfire | BS3 | FC3 | SC | CA

Intel® Core™ i7-13700K | NVIDIA RTX 4090 | 64 GB DDR5 RAM | Aorus Elite Z790 | 50“ UHD LG Monitor | Windows 11 Pro

VPC Rotor TCS Plus Base | VPC Apache-64 Collective Grip | VPC Hawk-60 Collective Grip | VPC MongoosT-50CM3 Base | TM F-16/A-10 Stick  | TM F/A-18 Stick

TM HOTAS Warthog (DSE Slew Upgrade) | TM Hotas Cougar (FSSB) | TM Pendular Rudder | HP Reverb G2 | TrackIR 5

Posted

Too bad to hear about the socket issue, I hope it will work in the beta, haven't tried that myself yet.

 

Quick test I did, switching the EMER FLOOD switch on and off every 3 seconds, worked when I used the device.performClickableAction function but did not work when I used the SetCommand function. Not really sure why, I found them to be pretty much equivalent in BS.

 

My feeling is they have not touched much of this export stuff since BS, and it still has a lot of legacy Lock-On stuff in the global scope that needs to be cleaned up. I think it just needs some attention from one of the ED programmers, hopefully before the product is launched, but I can see why they might delay that for a patch after launch.

 

What I'd really like to see, if they could, is to expand the metatable of userdata returned from the GetDevice function. Right now all I see is performClickableAction and SetCommand (and I think some output stuff is missing right now that was available in BS). It would make life very easy if they also had a GetIndicator() function for each device, and a list of indicator id's as well, of course. I see a GetIndicator() function in global scope, but I have no idea if it works or how to use it.

Posted
Any chance you will share the files when your done? Ive been procrastinating trying to write my own files since I heard Export.lua wasnt working.

 

Yes. I'll post it when I've tested it.

Posted
Too bad to hear about the socket issue, I hope it will work in the beta, haven't tried that myself yet.

 

Quick test I did, switching the EMER FLOOD switch on and off every 3 seconds, worked when I used the device.performClickableAction function but did not work when I used the SetCommand function. Not really sure why, I found them to be pretty much equivalent in BS.

 

My feeling is they have not touched much of this export stuff since BS, and it still has a lot of legacy Lock-On stuff in the global scope that needs to be cleaned up. I think it just needs some attention from one of the ED programmers, hopefully before the product is launched, but I can see why they might delay that for a patch after launch.

 

What I'd really like to see, if they could, is to expand the metatable of userdata returned from the GetDevice function. Right now all I see is performClickableAction and SetCommand (and I think some output stuff is missing right now that was available in BS). It would make life very easy if they also had a GetIndicator() function for each device, and a list of indicator id's as well, of course. I see a GetIndicator() function in global scope, but I have no idea if it works or how to use it.

 

I had problems with setcommand in Black Shark as well and ended up using device.performClickableAction for everything. What do you want GetIndicator for? All of the indicators should be available via the GetDevice(0):get_argument_value(argid) setup. You just need to dig through the main_panel_init file and get the right argument id which triggers them to light up.

Posted

That's exactly what I found missing in WH, no update_arguments and no get_argument_value for the WH devices (at least, the few devices I've tried). Works for you?

Posted

I was ripping out the Black Shark specific code last night and didn't get a chance to test with WH before wife quality time box kicked in. That sucks if those are missing!! I'll let you know what I find.

Posted (edited)
Quick test I did, switching the EMER FLOOD switch on and off every 3 seconds, worked when I used the device.performClickableAction function but did not work when I used the SetCommand function.

 

how to you trigger the device.performClickableAction-command? do you have some kind of input-device or do you just execute the command in some kind of loop in the LuaExportBeforeNextFrame()?

 

are there any other options to connect to / get input from external devices besides socket?

Edited by gofrm76

AH-64D | AV-8B | A-10C II | A-4E | F-4E | F-5E | F-14B | F-15E | F-16C | F/A-18C | M-2000C | UH-1H | Mig-21bis | L-39 | F-86F | P-47D | P-51D | BF 109 | Spitfire | BS3 | FC3 | SC | CA

Intel® Core™ i7-13700K | NVIDIA RTX 4090 | 64 GB DDR5 RAM | Aorus Elite Z790 | 50“ UHD LG Monitor | Windows 11 Pro

VPC Rotor TCS Plus Base | VPC Apache-64 Collective Grip | VPC Hawk-60 Collective Grip | VPC MongoosT-50CM3 Base | TM F-16/A-10 Stick  | TM F/A-18 Stick

TM HOTAS Warthog (DSE Slew Upgrade) | TM Hotas Cougar (FSSB) | TM Pendular Rudder | HP Reverb G2 | TrackIR 5

Posted
I was ripping out the Black Shark specific code last night and didn't get a chance to test with WH before wife quality time box kicked in. That sucks if those are missing!! I'll let you know what I find.

 

Well nevermind they are not missing everything seems to be under the main panel device id 0. Some other device ids also have unique functions like UHF_RADIO has set_frequency(), get_frequency(), and is_on(). Strange that they would group indicators for TACAN, ILS, and VHF under the main panel, but UHF under its own device id. Confusing, but workable. I'll just need to make an inventory of available functions, will post it shortly.

Posted

Here is a dump of the metatable for all devices, shows some interesting functions we can use on many of them. The majority of indicator lamps and some other stuff is grouped under the main panel (device 0).

MAIN_PANEL = {
__index = {
	get_argument_value = function: 46349110
	performClickableAction = function: 454E9628
	update_arguments = function: 46349038
	set_argument_value = function: 46349160
	SetCommand = function: 454E95B0
}
}
devices.FM_PROXY = {
__index = {
	performClickableAction = function: 46313F80
	SetCommand = function: 46313F38
}
}
devices.CDU = {
__index = {
	performClickableAction = function: 46314360
	SetCommand = function: 46314318
}
}
devices.ADI = {
__index = {
	get_sideslip = function: 46314830
	performClickableAction = function: 46314738
	get_bank = function: 463147E8
	get_pitch = function: 463147A0
	SetCommand = function: 463146F0
}
}
devices.PULSE_TIMER = {
__index = {
	performClickableAction = function: 46314E18
	SetCommand = function: 46314DD0
}
}
devices.OXYGEN_SYSTEM = {
__index = {
	performClickableAction = function: 463151B0
	SetCommand = function: 46315168
}
}
devices.HOTAS = {
__index = {
	performClickableAction = function: 46315560
	SetCommand = function: 46315518
}
}
devices.MAVERICK_INTERFACE = {
__index = {
	performClickableAction = function: 46315940
	SetCommand = function: 463158F8
}
}
devices.ENGINE_SYSTEM = {
__index = {
	performClickableAction = function: 46315CF0
	SetCommand = function: 46315CA8
}
}
devices.AN_ALR69V = {
__index = {
	performClickableAction = function: 463160A0
	SetCommand = function: 46316058
}
}
devices.STANDBY_COMPASS = {
__index = {
	performClickableAction = function: 46316480
	SetCommand = function: 46316438
}
}
devices.ENVIRONMENT_SYSTEM = {
__index = {
	performClickableAction = function: 46316830
	SetCommand = function: 463167E8
}
}
devices.SIDEWINDER_INTERFACE = {
__index = {
	performClickableAction = function: 46316BE0
	SetCommand = function: 46316B98
}
}
devices.FIRE_SYSTEM = {
__index = {
	performClickableAction = function: 3132CA58
	SetCommand = function: 3132CA10
}
}
devices.MFCD_RIGHT = {
__index = {
	performClickableAction = function: 3132CE38
	SetCommand = function: 3132CDF0
}
}
devices.HUD = {
__index = {
	performClickableAction = function: 3132D218
	SetCommand = function: 3132D1D0
}
}
devices.HELMET_DEVICE = {
__index = {
	performClickableAction = function: 3132D5F0
	SetCommand = function: 3132D5A8
}
}
devices.IFFCC = {
__index = {
	performClickableAction = function: 46318F50
	SetCommand = function: 46318F08
}
}
devices.NMSP = {
__index = {
	performClickableAction = function: 46319330
	SetCommand = function: 463192E8
}
}
devices.CPT_MECH = {
__index = {
	performClickableAction = function: 46319708
	SetCommand = function: 463196C0
}
}
devices.STALL = {
__index = {
	performClickableAction = function: 46319AE8
	SetCommand = function: 46319AA0
}
}
devices.REMOTE_COMPASS = {
__index = {
	performClickableAction = function: 46319EC8
	SetCommand = function: 46319E80
}
}
devices.NAVIGATION_COMPUTER = {
__index = {
	performClickableAction = function: 4631A2B0
	SetCommand = function: 4631A268
}
}
devices.FUEL_SYSTEM = {
__index = {
	performClickableAction = function: 4631A698
	SetCommand = function: 4631A650
}
}
devices.ILS = {
__index = {
	performClickableAction = function: 4631AA78
	SetCommand = function: 4631AA30
}
}
devices.VMU = {
__index = {
	performClickableAction = function: 4631AE50
	SetCommand = function: 4631AE08
}
}
devices.CMSP = {
__index = {
	performClickableAction = function: 4631B228
	SetCommand = function: 4631B1E0
}
}
devices.LIGHT_SYSTEM = {
__index = {
	performClickableAction = function: 4631B600
	SetCommand = function: 4631B5B8
}
}
devices.CMSC = {
__index = {
	performClickableAction = function: 4631B9E0
	SetCommand = function: 4631B998
}
}
devices.JAMMERS_INTERFACE = {
__index = {
	performClickableAction = function: 4631BDB8
	SetCommand = function: 4631BD70
}
}
devices.CADC = {
__index = {
	performClickableAction = function: 4631C1A0
	SetCommand = function: 4631C158
}
}
devices.LITENING_INTERFACE = {
__index = {
	performClickableAction = function: 357C2880
	set_laser_designation_code = function: 357C2970
	get_station = function: 357C29E8
	set_laser_spot_search_code = function: 357C29C8
	add_masked_region = function: 357C2918
	SetCommand = function: 4631C3B8
}
}
devices.AN_ALE40V = {
__index = {
	performClickableAction = function: 357C3310
	SetCommand = function: 357C32C8
}
}
devices.DTSAS = {
__index = {
	performClickableAction = function: 357C36A8
	SetCommand = function: 357C3660
}
}
devices.AHCP = {
__index = {
	performClickableAction = function: 357C3A88
	SetCommand = function: 357C3A40
}
}
devices.DSMS_INTERFACE = {
__index = {
	performClickableAction = function: 357C3E60
	SetCommand = function: 357C3E18
}
}
devices.DIGITAL_CLOCK = {
__index = {
	performClickableAction = function: 357C4248
	SetCommand = function: 357C4200
}
}
devices.TACAN = {
__index = {
	performClickableAction = function: 357C4630
	SetCommand = function: 357C45E8
}
}
devices.IFF = {
__index = {
	performClickableAction = function: 357C4A10
	SetCommand = function: 357C49C8
}
}
devices.SADL = {
__index = {
	get_datalink = function: 357C4E50
	performClickableAction = function: 357C4DE8
	SetCommand = function: 357C4DA0
}
}
devices.HYDRAULIC_SYSTEM = {
__index = {
	performClickableAction = function: 357C5278
	SetCommand = function: 357C5230
}
}
devices.AAP = {
__index = {
	performClickableAction = function: 357C5618
	SetCommand = function: 357C55D0
}
}
devices.IAM_INTERFACE = {
__index = {
	performClickableAction = function: 357C59F0
	SetCommand = function: 357C59A8
}
}
devices.VHF_FM_RADIO = {
__index = {
	get_frequency = function: 357C5F10
	performClickableAction = function: 357C5DD8
	set_frequency = function: 357C5E40
	is_on = function: 357C5F50
	SetCommand = function: 357C5D90
}
}
devices.DATA_TRANSFER_SYSTEM = {
__index = {
	performClickableAction = function: 357C66E8
	SetCommand = function: 357C66A0
}
}
devices.AIRSPEED_INDICATOR = {
__index = {
	performClickableAction = function: 357C6A88
	SetCommand = function: 357C6A40
}
}
devices.AN_APN_194 = {
__index = {
	performClickableAction = function: 357C6E70
	SetCommand = function: 357C6E28
}
}
devices.PADLOCK = nil
devices.SAI = {
__index = {
	get_sideslip = function: 357C7388
	performClickableAction = function: 357C72E0
	get_bank = function: 357C7368
	get_pitch = function: 357C7348
	SetCommand = function: 357C7298
}
}
devices.SYS_CONTROLLER = {
__index = {
	performClickableAction = function: 357C7AF0
	SetCommand = function: 357C7AA8
}
}
devices.TONE_GENERATOR = {
__index = {
	performClickableAction = function: 357C7E90
	SetCommand = function: 357C7E48
}
}
devices.TISL = {
__index = {
	performClickableAction = function: 357C8278
	SetCommand = function: 357C8230
}
}
devices.TAD = {
__index = {
	performClickableAction = function: 357C8650
	SetCommand = function: 357C8608
}
}
devices.EGI = {
__index = {
	performClickableAction = function: 357C8A28
	SetCommand = function: 357C89E0
}
}
devices.MFCD_LEFT = {
__index = {
	performClickableAction = function: 357C8E00
	SetCommand = function: 357C8DB8
}
}
devices.ELEC_INTERFACE = {
__index = {
	performClickableAction = function: 357C91E0
	SetCommand = function: 357C9198
}
}
devices.UHF_RADIO = {
__index = {
	get_frequency = function: 357C9650
	performClickableAction = function: 357C95C8
	set_frequency = function: 357C9630
	is_on = function: 357C9670
	SetCommand = function: 357C9580
}
}
devices.AAU34 = {
__index = {
	performClickableAction = function: 357C9EC8
	SetCommand = function: 357C9E80
}
}
devices.UFC = {
__index = {
	performClickableAction = function: 357CA260
	SetCommand = function: 357CA218
}
}
devices.RT1720 = {
__index = {
	performClickableAction = function: 357CA638
	SetCommand = function: 357CA5F0
}
}
devices.AAR47 = {
__index = {
	performClickableAction = function: 357CAA18
	SetCommand = function: 357CA9D0
}
}
devices.DBG = nil
devices.INTERCOM = {
__index = {
	performClickableAction = function: 357CAE80
	SetCommand = function: 357CAE38
}
}
devices.HSI = {
__index = {
	get_heading = function: 357CB2C8
	performClickableAction = function: 357CB260
	SetCommand = function: 357CB218
}
}
devices.CICU = {
__index = {
	performClickableAction = function: 357CB6E8
	SetCommand = function: 357CB6A0
}
}
devices.AUTOPILOT = {
__index = {
	performClickableAction = function: 357CBA78
	SetCommand = function: 357CBA30
}
}
devices.VHF_AM_RADIO = {
__index = {
	get_frequency = function: 357CBF68
	performClickableAction = function: 357CBE58
	set_frequency = function: 357CBEC0
	is_on = function: 357CBF88
	SetCommand = function: 357CBE10
}
}
devices.ARCADE = nil
devices.HARS = {
__index = {
	performClickableAction = function: 357CC870
	SetCommand = function: 357CC828
}
}

  • Like 1
Posted
Here is a dump of the metatable for all devices, shows some interesting functions we can use on many of them. The majority of indicator lamps and some other stuff is grouped under the main panel (device 0).

 

That looks pretty much the same as Black Shark. Anything that is pulled as an "argument" in any of the other lua files (clickabledata and main_panel_init) is pulled off device 0.

Posted

Here is my export.lua which I've now tested and it works with A-10C beta 3.

 

To configure it modify the top these lines:

 

// Host and port which we will broadcast and listen on
host = "127.0.0.1"
port = 9089

// Arguments to watch and send updates
gArguments = {[76]="%.4f", [77]="%.4f", [300]="%.1f"}

 

The scripts sends out UDP packets of the format

argid=value

argid=value

...

argid=value

 

The first value pair is a simulation id which is a unique id generated at the start of the mission. The script only sends out data when it has changed and uses the format specified in the gArguments table.

 

It listens for response UDP packets with one of two command structures:

R

Cdeviceid,buttonid,value

 

If it receives R it will reset the cache and send all current argument values. Any new client listening for the UDP outputs should send an R to ensure they have accurate data.

 

C executes a performClickableAction on the associated device and button.

Export.lua.zip

Posted

interesting choice in UDP. Do you keep pumping out the same packet until an R is received for it? Just wondering how you handle the reliability issue for switch inputs and such.

Posted

It sends a packet when ever it has data that's changed. If that argument doesn't change it doesn't send that argument again until it get's a reset command ®. This technique allows you to start and stop your client at any time. With TCP you have to start in the right order and it becomes messy to keep track of connects and disconnects all the time. In addition UDP allows us to broadcast and have several different clients listen to the same stream of data.

Posted
It sends a packet when ever it has data that's changed. If that argument doesn't change it doesn't send that argument again until it get's a reset command ®. This technique allows you to start and stop your client at any time. With TCP you have to start in the right order and it becomes messy to keep track of connects and disconnects all the time. In addition UDP allows us to broadcast and have several different clients listen to the same stream of data.

 

oh I see, R is for "reset" and not "received" (like an ack)

so you basically don't handle for lost packets? Probably doesn't happen much if ever on a LAN anyway...

 

Seems it didn't work, did you test it y2kiah?

 

Not sure what you mean, what was I supposed to test?

Posted
oh I see, R is for "reset" and not "received" (like an ack)

so you basically don't handle for lost packets? Probably doesn't happen much if ever on a LAN anyway...

Yes this is correct. The majority of the data sent across the wire is replaced with new data in the next packet (compass heading, altitude, air speed, etc) as the value is always changing so there is no point in error checking for lost data. Lost switch flips could be problematic, but since there are no real lives at stake and like you said most people will be using the loopback or lan there is small chance of actually loosing the packet. So adding connection semantics would be wasted CPU and development time.

Posted
...

i have tested it with BS 1.0.2 and WH beta1. same c#-binary and same export-script except the above mentioned changes to the file-writer in WH.

 

to test this, i simply sent a single byte over to DCS to change the view (cockpit=7, aircraft=8, flyby=9). in BS i can read the byte using the lua c:receive() method and change the view with the LoSetCommand() method, but in WH i only get back a nil-value from the receive()-method.

...

 

Using TCP? My apps always had to suffix onto any 'message' I wanted to send and be received in blackshark with a linefeed (ascii 10), otherwise it just queued up in some buffer. Then receive() calls would contain data in them.

[ i7 2600k 4.6GHz :: 16GB Mushkin Blackline LV :: EVGA GTX 1080ti 11GB ]

[ TM Warthog / Saitek Rudder :: Oculus Rift :: Obutto cockpit :: Acer HN274H 27" 120Hz :: 3D Vision Ready ]

Posted (edited)

I need your help. I'm just beginner on LUA scripts so please be patient. I want to export analog instruments datas to Gauge Composer. Using Oakes script (now working thanks y2kiah !).

 

In Export.lua we find :

 

function LuaExportAfterNextFrame()

-- Works just after every simulation frame.

local lSIOC_SendString = ""

 

lSIOC_SendString = lSIOC_SendString..Variometer(gVariometerSIOCParam)

 

if lSIOC_SendString ~= "" then

socket.try(c:send("Arn.Resp:"..lSIOC_SendString.."\n"))

end

end

 

 

In Exportsupport.lua :

 

function Variometer(pVarioMeterSIOCParam)

-- Get the device

local lMainPanel = GetDevice(0)

--Check to see that the device is valid otherwise we return an emty string

if type(lMainPanel) ~= "table" then

return ""

end

lMainPanel:update_arguments()

 

local lVariometer = lMainPanel:get_argument_value(24)

--io.write(lVariometer)

--io.write("\n")

 

local lSIOC_SendString = pVarioMeterSIOCParam.."="..round(Servo(lVariometer, variometerServoCalTable))..":"

 

return lSIOC_SendString

end

 

This work fine but send var value dedicated to servo system. I need just to get the real value of the argument 24. So i supposed that this will works :

 

function Variometer(pVarioMeterSIOCParam)

-- Get the device

local lMainPanel = GetDevice(0)

--Check to see that the device is valid otherwise we return an emty string

if type(lMainPanel) ~= "table" then

return ""

end

lMainPanel:update_arguments()

 

local lVariometer = lMainPanel:get_argument_value(24)

--io.write(lVariometer)

--io.write("\n")

 

local lSIOC_SendString = pVarioMeterSIOCParam.."="..lVariometer..":"

 

return lSIOC_SendString

end

 

But no, IOCP console get systematicaly "0" as value.

 

Any Idea ?

 

 

PS : work in progress for GC A10 panel : http://picasaweb.google.com/112016269906783949376/CockpitA10c#5538871694916010162

Edited by Gromich
  • 3 weeks later...
Posted
Here is my export.lua which I've now tested and it works with A-10C beta 3.

 

Thank you for sharing your script. I am unable to get any UDP to flow (checking with packet capture). Is there some trick to get the network part to work? Export appears to be enabled because I get logging from Export.lua. TIA.

i7-950, 8GB DDR3, EVGA X58, GTX 460 SE 1GB, Win XP 64Bit, CH gear (stick, throttle, rudder pedals), TM Cougar MFDs

William Riley

http://workbench.freetcp.com

Posted
Thank you for sharing your script. I am unable to get any UDP to flow (checking with packet capture). Is there some trick to get the network part to work? Export appears to be enabled because I get logging from Export.lua. TIA.

 

I figured out the fix, just change line 155

c:setpeername(host, port)

to this

c:setsockname(host, port)

and it works like a charm.

i7-950, 8GB DDR3, EVGA X58, GTX 460 SE 1GB, Win XP 64Bit, CH gear (stick, throttle, rudder pedals), TM Cougar MFDs

William Riley

http://workbench.freetcp.com

  • 3 weeks later...
Posted
Here is a dump of the metatable for all devices, shows some interesting functions we can use on many of them. The majority of indicator lamps and some other stuff is grouped under the main panel (device 0).

MAIN_PANEL = {
__index = {
	get_argument_value = function: 46349110
	performClickableAction = function: 454E9628
	update_arguments = function: 46349038
	set_argument_value = function: 46349160
	SetCommand = function: 454E95B0
}
}
devices.FM_PROXY = {
__index = {
	performClickableAction = function: 46313F80
	SetCommand = function: 46313F38
}
}
devices.CDU = {
__index = {
	performClickableAction = function: 46314360
	SetCommand = function: 46314318
}
}
devices.ADI = {
__index = {
	get_sideslip = function: 46314830
	performClickableAction = function: 46314738
	get_bank = function: 463147E8
	get_pitch = function: 463147A0
	SetCommand = function: 463146F0
}
}
devices.PULSE_TIMER = {
__index = {
	performClickableAction = function: 46314E18
	SetCommand = function: 46314DD0
}
}
devices.OXYGEN_SYSTEM = {
__index = {
	performClickableAction = function: 463151B0
	SetCommand = function: 46315168
}
}
devices.HOTAS = {
__index = {
	performClickableAction = function: 46315560
	SetCommand = function: 46315518
}
}
devices.MAVERICK_INTERFACE = {
__index = {
	performClickableAction = function: 46315940
	SetCommand = function: 463158F8
}
}
devices.ENGINE_SYSTEM = {
__index = {
	performClickableAction = function: 46315CF0
	SetCommand = function: 46315CA8
}
}
devices.AN_ALR69V = {
__index = {
	performClickableAction = function: 463160A0
	SetCommand = function: 46316058
}
}
devices.STANDBY_COMPASS = {
__index = {
	performClickableAction = function: 46316480
	SetCommand = function: 46316438
}
}
devices.ENVIRONMENT_SYSTEM = {
__index = {
	performClickableAction = function: 46316830
	SetCommand = function: 463167E8
}
}
devices.SIDEWINDER_INTERFACE = {
__index = {
	performClickableAction = function: 46316BE0
	SetCommand = function: 46316B98
}
}
devices.FIRE_SYSTEM = {
__index = {
	performClickableAction = function: 3132CA58
	SetCommand = function: 3132CA10
}
}
devices.MFCD_RIGHT = {
__index = {
	performClickableAction = function: 3132CE38
	SetCommand = function: 3132CDF0
}
}
devices.HUD = {
__index = {
	performClickableAction = function: 3132D218
	SetCommand = function: 3132D1D0
}
}
devices.HELMET_DEVICE = {
__index = {
	performClickableAction = function: 3132D5F0
	SetCommand = function: 3132D5A8
}
}
devices.IFFCC = {
__index = {
	performClickableAction = function: 46318F50
	SetCommand = function: 46318F08
}
}
devices.NMSP = {
__index = {
	performClickableAction = function: 46319330
	SetCommand = function: 463192E8
}
}
devices.CPT_MECH = {
__index = {
	performClickableAction = function: 46319708
	SetCommand = function: 463196C0
}
}
devices.STALL = {
__index = {
	performClickableAction = function: 46319AE8
	SetCommand = function: 46319AA0
}
}
devices.REMOTE_COMPASS = {
__index = {
	performClickableAction = function: 46319EC8
	SetCommand = function: 46319E80
}
}
devices.NAVIGATION_COMPUTER = {
__index = {
	performClickableAction = function: 4631A2B0
	SetCommand = function: 4631A268
}
}
devices.FUEL_SYSTEM = {
__index = {
	performClickableAction = function: 4631A698
	SetCommand = function: 4631A650
}
}
devices.ILS = {
__index = {
	performClickableAction = function: 4631AA78
	SetCommand = function: 4631AA30
}
}
devices.VMU = {
__index = {
	performClickableAction = function: 4631AE50
	SetCommand = function: 4631AE08
}
}
devices.CMSP = {
__index = {
	performClickableAction = function: 4631B228
	SetCommand = function: 4631B1E0
}
}
devices.LIGHT_SYSTEM = {
__index = {
	performClickableAction = function: 4631B600
	SetCommand = function: 4631B5B8
}
}
devices.CMSC = {
__index = {
	performClickableAction = function: 4631B9E0
	SetCommand = function: 4631B998
}
}
devices.JAMMERS_INTERFACE = {
__index = {
	performClickableAction = function: 4631BDB8
	SetCommand = function: 4631BD70
}
}
devices.CADC = {
__index = {
	performClickableAction = function: 4631C1A0
	SetCommand = function: 4631C158
}
}
devices.LITENING_INTERFACE = {
__index = {
	performClickableAction = function: 357C2880
	set_laser_designation_code = function: 357C2970
	get_station = function: 357C29E8
	set_laser_spot_search_code = function: 357C29C8
	add_masked_region = function: 357C2918
	SetCommand = function: 4631C3B8
}
}
devices.AN_ALE40V = {
__index = {
	performClickableAction = function: 357C3310
	SetCommand = function: 357C32C8
}
}
devices.DTSAS = {
__index = {
	performClickableAction = function: 357C36A8
	SetCommand = function: 357C3660
}
}
devices.AHCP = {
__index = {
	performClickableAction = function: 357C3A88
	SetCommand = function: 357C3A40
}
}
devices.DSMS_INTERFACE = {
__index = {
	performClickableAction = function: 357C3E60
	SetCommand = function: 357C3E18
}
}
devices.DIGITAL_CLOCK = {
__index = {
	performClickableAction = function: 357C4248
	SetCommand = function: 357C4200
}
}
devices.TACAN = {
__index = {
	performClickableAction = function: 357C4630
	SetCommand = function: 357C45E8
}
}
devices.IFF = {
__index = {
	performClickableAction = function: 357C4A10
	SetCommand = function: 357C49C8
}
}
devices.SADL = {
__index = {
	get_datalink = function: 357C4E50
	performClickableAction = function: 357C4DE8
	SetCommand = function: 357C4DA0
}
}
devices.HYDRAULIC_SYSTEM = {
__index = {
	performClickableAction = function: 357C5278
	SetCommand = function: 357C5230
}
}
devices.AAP = {
__index = {
	performClickableAction = function: 357C5618
	SetCommand = function: 357C55D0
}
}
devices.IAM_INTERFACE = {
__index = {
	performClickableAction = function: 357C59F0
	SetCommand = function: 357C59A8
}
}
devices.VHF_FM_RADIO = {
__index = {
	get_frequency = function: 357C5F10
	performClickableAction = function: 357C5DD8
	set_frequency = function: 357C5E40
	is_on = function: 357C5F50
	SetCommand = function: 357C5D90
}
}
devices.DATA_TRANSFER_SYSTEM = {
__index = {
	performClickableAction = function: 357C66E8
	SetCommand = function: 357C66A0
}
}
devices.AIRSPEED_INDICATOR = {
__index = {
	performClickableAction = function: 357C6A88
	SetCommand = function: 357C6A40
}
}
devices.AN_APN_194 = {
__index = {
	performClickableAction = function: 357C6E70
	SetCommand = function: 357C6E28
}
}
devices.PADLOCK = nil
devices.SAI = {
__index = {
	get_sideslip = function: 357C7388
	performClickableAction = function: 357C72E0
	get_bank = function: 357C7368
	get_pitch = function: 357C7348
	SetCommand = function: 357C7298
}
}
devices.SYS_CONTROLLER = {
__index = {
	performClickableAction = function: 357C7AF0
	SetCommand = function: 357C7AA8
}
}
devices.TONE_GENERATOR = {
__index = {
	performClickableAction = function: 357C7E90
	SetCommand = function: 357C7E48
}
}
devices.TISL = {
__index = {
	performClickableAction = function: 357C8278
	SetCommand = function: 357C8230
}
}
devices.TAD = {
__index = {
	performClickableAction = function: 357C8650
	SetCommand = function: 357C8608
}
}
devices.EGI = {
__index = {
	performClickableAction = function: 357C8A28
	SetCommand = function: 357C89E0
}
}
devices.MFCD_LEFT = {
__index = {
	performClickableAction = function: 357C8E00
	SetCommand = function: 357C8DB8
}
}
devices.ELEC_INTERFACE = {
__index = {
	performClickableAction = function: 357C91E0
	SetCommand = function: 357C9198
}
}
devices.UHF_RADIO = {
__index = {
	get_frequency = function: 357C9650
	performClickableAction = function: 357C95C8
	set_frequency = function: 357C9630
	is_on = function: 357C9670
	SetCommand = function: 357C9580
}
}
devices.AAU34 = {
__index = {
	performClickableAction = function: 357C9EC8
	SetCommand = function: 357C9E80
}
}
devices.UFC = {
__index = {
	performClickableAction = function: 357CA260
	SetCommand = function: 357CA218
}
}
devices.RT1720 = {
__index = {
	performClickableAction = function: 357CA638
	SetCommand = function: 357CA5F0
}
}
devices.AAR47 = {
__index = {
	performClickableAction = function: 357CAA18
	SetCommand = function: 357CA9D0
}
}
devices.DBG = nil
devices.INTERCOM = {
__index = {
	performClickableAction = function: 357CAE80
	SetCommand = function: 357CAE38
}
}
devices.HSI = {
__index = {
	get_heading = function: 357CB2C8
	performClickableAction = function: 357CB260
	SetCommand = function: 357CB218
}
}
devices.CICU = {
__index = {
	performClickableAction = function: 357CB6E8
	SetCommand = function: 357CB6A0
}
}
devices.AUTOPILOT = {
__index = {
	performClickableAction = function: 357CBA78
	SetCommand = function: 357CBA30
}
}
devices.VHF_AM_RADIO = {
__index = {
	get_frequency = function: 357CBF68
	performClickableAction = function: 357CBE58
	set_frequency = function: 357CBEC0
	is_on = function: 357CBF88
	SetCommand = function: 357CBE10
}
}
devices.ARCADE = nil
devices.HARS = {
__index = {
	performClickableAction = function: 357CC870
	SetCommand = function: 357CC828
}
}

 

Can you share your script to dump the meta-deta? Have you checked to see if beta 4 added anything?

  • Recently Browsing   0 members

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