Release Aussiedroid's Enhanced Thrustmaster Warthog Script

@Dryheat4u ,

It would take as long as it takes.
What's your timezone?

Also...check out post #1072 of this thread (one page back).

If you could go through and confirm each of the questions and post back here, I might be able to assist?

Clicker
My timezone is Mountain standard time. AKA Denver Time.
It looks like the joystick firmware is FW11, but TARGET does not offer me any update option.
 
Last edited:
There's your problem.
Go to the Thrustmaster Support web site and download the new firmware for both the Throttle and Joystick.
They have instructions on how to install the firmware in the package.

The software itself is often NOT intuitive, so if you have any issues, post back here and I'll help you out.

Clicker
 
Last edited:
Also, 'Mountain Standard Time" is what? GST -7 right?
I'm posting this at 11:20am, Saturday...which means you are Friday 16:20, right?
 
Greetings,

I´m not sure about what causes this, but after starting the beta, some bindings of your fabulous script went wrong on my PC, also in the standard game.

Especially change combat/explorer mode via double click on Button 4 looked like it is broken. I did not find a workaround yet, because I don´t know how to install the double click.

I could fix looking into the UI panels, just by giving them their numbers 1,2,3,4 back.

I just want to let you know, maybe there are others with this problem.

Thanks as always für your great work!

Serge

Just to say: To renew the Binding file helped.
 
Last edited:
I fixed a previous firmware update issue, but now the script crashed under a timeout error. Does anyone have advise?

Line 89 runs an init command for the silent running function. Comments reffer to the AD_EDFuntitons subscript. Need help troubleshooting as there are no settings I've changed in these areas of the script.
 

Attachments

Last edited:
I fixed a previous firmware update issue, but now the script crashed under a timeout error. Does anyone have advise?

Line 89 runs an init command for the silent running function. Comments reffer to the AD_EDFuntitons subscript. Need help troubleshooting as there are no settings I've changed in these areas of the script.
In the TARGET Script editor, there is a timeout setting. By default it is 60 seconds.
I'll take a look at the script and try to work out what it's meant to be doing.
In the meantime, try setting the timeout to 90 seconds.
It is possible there's a delay in loading the files if you have them on Google drive and not synchronized to your local C:\ drive.

Clicker
 
@Dryheat4u ,

Needless to say, it works fine for me.
Can you confirm you made no changes at all to the script or any settings?

It looks like the script has not finished loading and compiling all the files, or hasn't finished running the initialization sequence.
As I mentioned above, I think it's had issues copying and loading the files from your google drive.

Open the script via the TARGET Script Editor, then hit 'compile'.

Also try copying the entire script sub folder onto your local C:\ drive and try it from there.

The image attached is what the screen looks like on my PC.
Make sure all the files in the red box have loaded and compiled.

The bottom of the screen is the console and this is what it should look like when it has loaded and is running properly.
(Note: I have a T-Rudder...which may be the only difference you'll see if you don't have one)

Hope this helps.

Clicker

AD_ED_v4.2.1.tmc - startup.jpg
 
Last edited:
I've downloaded a fresh copy of the script from Aussie's website on my C drive. I complied and ran it with no changes whatsoever. The same crash occurred on line 89 after the 60 second timeout.

I extended the timeout limit to 90 seconds and received the same result. Not sure what is different about my computer. I've double checked that I am running the latest drivers.

I re-ran the 90 second limit with administrator privileges, same effect.

Windows firewall does not appear to be interfering with the script, though it can block specific libraries from running on a situational basis. Is this a concern with droid's script?
 
Hi @Dryheat4u ,

Windows firewall does not appear to be interfering with the script, though it can block specific libraries from running on a situational basis. Is this a concern with droid's script?
Not that I've seen.

Aussiedroid's script however, does require the very latest versions of TARGET and firmware for Joystick and Throttle.

(see attached)

If you don't have these (all three circled in red), then please update and try again.

If you do have these, then perhaps a complete re-install might be in order.
I recall having some issues with the previous version of TARGET/Firmware and needed to re-install a couple of times before it came right.

Either way, I would also suggest using something like Revo Uninstaller to remove TARGET along with all it's support files and registry entries, then running something like CCleaner and cleaning the registry (again) before installing.

Another thing you might try (bit of a long shot) is to move your joystick and throttle to different USB ports.
Again, I've seen some wierdo issues with USB conflicts.
For this, I have used a small utility called USBDeview to remove any/all unused USB resources from windows.

Cheers
Clicker
TARGETVersions.jpg
 
Last edited:
I have the same issue with the script as Dryheat4u is having, a script run timeout on line 89. Using v4.2.1 of the script. This is my first time trying to use the script. Using the HOTAS and TFRP pedals. Using the latest version of TARGET, latest firmware on throttle and joystick, latest version of Windows 10.

Code:
Running script: C:\Users\Joshua\Downloads\Aussiedroid-ED-Warthog-Script-4.2.1\Aussiedroid-ED-Warthog-Script-4.2.1\Warthog Script\AD_ED_v4.2.1.tmc
Mapped plugin module "C:\Program Files (x86)\Thrustmaster\TARGET\Plugins\sys.dll"
Compile Succeeded.
Physical USB HID devices managed by script!
Currently plugged USB HID devices[3]:
1: "Throttle - HOTAS Warthog" - "USB\VID_044F&PID_0404&REV_0100"
2: "Joystick - HOTAS Warthog" - "USB\VID_044F&PID_0402&REV_0100"
3: "T-Rudder" - "USB\VID_044F&PID_B679&REV_0110"
USB HID device "Throttle - HOTAS Warthog"(USB\VID_044F&PID_0404\6&100A6CB2&0&4) selected
USB HID device "Joystick - HOTAS Warthog"(USB\VID_044F&PID_0402\5&2D897&0&1) selected
USB HID device with hardware id "VID_044F&PID_0403" cannot be found
USB HID device with hardware id "VID_044F&PID_B10B" cannot be found
USB HID device with hardware id "VID_044F&PID_B687" cannot be found
USB HID device "T-Rudder"(USB\VID_044F&PID_B679\00000000001A) selected
USB HID device with hardware id "VID_044F&PID_B68F" cannot be found
Virtual HID devices managed by script!
Connecting virtual joystick...Done
Device name set to Thrustmaster Combined
Connecting virtual keyboard...Done
Connecting virtual mouse (absolute axes)...Done
-----------------------------------------------------------------------------------------------------------------------------------------------
>> ENHANCEMENTS LOADING:    v4.2.1      TARGET Mappings, Macros & Functions Decrypted            <|>
-----------------------------------------------------------------------------------------------------------------------------------------------
:....USER PREFERENCES....:
[Run Software @ Start = 0]  [Custom Slider Curve = 1]  [PIP Mgt. Preset = 2]  [MFD Active  = 0]
[Cargo Precision Mode = 0]  [S/Cruise @ Throttle = 1]  [Chaff @ Escape  = 0]  [Boost @ Esc = 0]
[Combine External Mic = 0]  [Sec. Fire Override  = 0]  [NightVision HUD = 0]  [Ext Mic+Mic = 0]
[Headtrak Center Mode = 0]  [Ship Utility Mode   = 0]  [LED Backlight = 172]  [LED ¡Bling! = 1]
[Throttle Axis O/ride = 0]  [Joystik Axis O/ride = 0]  [Throttle D/zone = 5]  [Joys D/zone = 1]

:..DEFAULT TOGGLE STATE..:
[Combine Pri+Sec Fire = 1]  [Rot. Correction = 1]  [C/ Scoop = 0]  [L/ Gear = 0]  [Lights  = 0]
-----------------------------------------------------------------------------------------------------------------------------------------------
Starting Macros... Compiling Functions... Script stopped!

Runtime Error: STOP request received while running main on line 89 in "C:\Users\Joshua\Downloads\Aussiedroid-ED-Warthog-Script-4.2.1\Aussiedroid-ED-Warthog-Script-4.2.1\Warthog Script\AD_ED_v4.2.1.tmc"
Error:Script run timed out!
 
I have the same issue with the script as Dryheat4u is having, a script run timeout on line 89. Using v4.2.1 of the script. This is my first time trying to use the script. Using the HOTAS and TFRP pedals. Using the latest version of TARGET, latest firmware on throttle and joystick, latest version of Windows 10.
Hi, in order to try to assist, can you please do what I asked DryHeat4u to do?

Verify the versions of TARGET and your Joystick and Throttle firmware levels match those in the image attached.

TARGETVersions.jpg

Thanks
Clicker
 
Ok, thanks.

Next, where have you copied and run the script from?
Is it a local disk (C:\ drive}, on a network share, or in a cloud drive (dropbox/onedrive/googledrive/etc)?

Next, try commenting out line 89 in the AD_ED_v4.2.1.tmc file (put '//' at the start of the line) via the TARGET SCript Editor program.
Save, compile and run and see if it falls over again?

I'm also assuming here you have not changed anything.
As this script, without any alteration, compiles and runs fine on my PC which tells me it's something about your hardware or software.
Have you updated Windows lately (are you on windows 10?)
Sometimes a re-install of TARGET can fix this.

Clicker
 
Last edited:
Hi, I installed this wonderful script yesterday and am now trying to get everything running.

My problems:
1)
CombinePriSecFire doesnt seem to work. No matter what I tried, only the primary fire will go off. See settings below for reference.

2)
RepeaterAutoRelease
I cant find this variable anywhere in any of the files, how do I set this as described in here https://steamcommunity.com/sharedfiles/filedetails/?id=769637037 ?

I am trying to map secondary fire to where ECM/Shield Cell normally is, as I find pressing the pinky button repeatedly very uncomfortable.

I have set PRI-SEC FIRE CONTROL as follows:

int combinePriSecFire = 1 ;
define SecFirePinkyPref 1
define PinkyBtnDefaultShort UseShieldCell
define PinkyBtnDefaultLong ChargeECM

I am only able to fire the beam laser I have mapped to that button in ED ingame settings in pulse mode so its not really a beam.

Im sure this is somehow possible I just havent figured out how, any help would be greatly appreciated.

o7

EDIT: I have figured out these things by myself now.

However I have run into smth that I cant resolve. The script wont load anymore. this was often happening and I fixed by restarting the pc or replacing the files in the Appdata bindings folder with the backup created by the script. However now whatever I do this wont work anymore and upon loading the game a file "BindingLoadingErrors.log" is created with following contents:

There where errors when loading preset file: Aussiedroid Warthog Enhanced 4.2.1.3.0.binds
Missing devices: ThrustMasterWarthogThrottle

I have tried the following:
Reinstall Target
Reinstall and update firmware of throttle and stick
Reinstall the sticks manually in device manager

Is there anythign else I can do ?
 
Last edited:
Hi @Jean-Luc Picard ,

You may need to re-copy Aussiedroid's binds file.
There is no 'ThrustmasterWarthogThrottle' defined in his binds file.

This might indicate that the script stopped after the game started...changes were made to the bindings (in game) and saved.
This is a BIG no no.

Also, in case you didn't know, you must always have the script running before you start Elite.

Clicker
 
EDIT: I figured this out as well. Apparently Elite can't read DX button inputs directly so I think what people do is map these to keyboard keys. And since LDGH is one of these buttons (DX21) I dont know why Joy_21 doesnt work though.

Hi Clicker, thanks for the reply, I figured out how it works now, I got a usb hub so I dont have these problems anymore.

I got into the script a bit and have looked at the syntax of the language and tried to adapt the script so far with success. I am now stuck on one thing which should be easy but I think im missing an essential piece which I cant figure out.

I want to remap FSS mode to the LDGH switch on the throttle base. It is currently on the MSUR button (standard as per Aussiedroids original mapping).

Two questions:
1. Where is the mapping defined for the "Joy_4" etc.? In the bindings file I can see these but they dont appear anywhere in the script files. I need to know how to directly bind the LDGH switch to FSSMode.

2. The second option that I initially tried was to use the script and write a small function that toggles the FSS mode on and then off or if not possible uses UI Back to leave the FSS mode. The problem here is that I dont know how he defined the functions from Elite to the ones in his script. For example for ShipLights or NightVision, I was able to use these because they were defined in the script and not directly bound to a switch in the bindings file. But FSS is directly bound to MSUR and the LDGH is not bound in the bindings so im missing the connection.

I hope this more or less understandable. Im a bit at a loss as to where even search for this info.

Thanks
 
Last edited:
Hi @Jean-Luc Picard ,

TLDR: go to the bottom of this post (starts with "2. ") for the actual solution, otherwise read on on how I went about working this out.

1.Ok, so sorry if this sounds complicated.
By default, when you get into the control bindings in game and click a button, it will default to the standard DX# (or "Joy_#") for that switch...UNLESS...There is a specific Mapkey(&<device>, <button>, DX4), or "DX4" defined in the AD_EDKeyMap file. That is you can override the default DX# by specifying it in the script via a define or the KeyMap statement.
An example of a define you can see in the AD_EDKeyMap file is "DX1"....assigned to 'PrimaryFire'. You can then use ANY switch or button for DX1 by using 'MapKey(&<dev>, <but>, PrimaryFire);'
So, with that out of the way, I see AD has defined DX4 and assigned to 'PinkyTriggerDefault'.
By using Notepad++ to open all the scipt files I can do a search on 'PinkyTriggerDefault' and find it is used in one (only) place...
AD_EDFunctions file...line 210.

AS you will see in his main AD_ED.....tmc file, LDGH does quite a few things. So long as you are comfortable doing without those, you can simply comment out lines 458 - 464 and add...
Code:
MapKey(&Throttle, LDGH, PinkyTriggerDefault);

or

MapKey(&Throttle, LDGH, DX4);
A word of warning here, AD uses DX4 for his "Double Tap Pinky Trigger" function. So if you intend to use DX4 for FSS Mode you might create some issues.

2. It looks like this was coded in the game control bindings. I see AD has defined FSSModeON and FSSModeOFF in his AD_EDKeyMap file but they're commented out...so...

How about you get into the AD_EDKeyMap file and simply uncomment lines 88 and 89.

Then in the AD_ED.....tmc file, comment out the current config as mentioned above and add this instead of the DX4 ...
Code:
MapKey(&Throttle, LDGH, SEQ(PULSE+FSSModeON, PULSE+FSSModeOFF));
...and see how you go.

Hopefully not complicating things, but you can actually use the same binding to enter and exit FSS Mode.
To test this, just change the FSS Exit binding in game to LeftAlt+F and change the above MapKey from a SEQ to simply a PULSE+FSSModeON, and it should happily toggle the mode on and off with subsequent presses.
Code:
MapKey(&Throttle, LDGH, PULSE+FSSModeON);
Hope this helps.

Clicker
 
Last edited:
Hi @Jean-Luc Picard ,

TLDR: go to the bottom of this post (starts with "2. ") for the actual solution, otherwise read on on how I went about working this out.

1.Ok, so sorry if this sounds complicated.
By default, when you get into the control bindings in game and click a button, it will default to the standard DX# (or "Joy_#") for that switch...UNLESS...There is a specific Mapkey(&<device>, <button>, DX4), or "DX4" defined in the AD_EDKeyMap file. That is you can override the default DX# by specifying it in the script via a define or the KeyMap statement.
An example of a define you can see in the AD_EDKeyMap file is "DX1"....assigned to 'PrimaryFire'. You can then use ANY switch or button for DX1 by using 'MapKey(&<dev>, <but>, PrimaryFire);'
So, with that out of the way, I see AD has defined DX4 and assigned to 'PinkyTriggerDefault'.
By using Notepad++ to open all the scipt files I can do a search on 'PinkyTriggerDefault' and find it is used in one (only) place...
AD_EDFunctions file...line 210.

AS you will see in his main AD_ED.....tmc file, LDGH does quite a few things. So long as you are comfortable doing without those, you can simply comment out lines 458 - 464 and add...
Code:
MapKey(&Throttle, LDGH, PinkyTriggerDefault);

or

MapKey(&Throttle, LDGH, DX4);
A word of warning here, AD uses DX4 for his "Double Tap Pinky Trigger" function. So if you intend to use DX4 for FSS Mode you might create some issues.

2. It looks like this was coded in the game control bindings. I see AD has defined FSSModeON and FSSModeOFF in his AD_EDKeyMap file but they're commented out...so...

How about you get into the AD_EDKeyMap file and simply uncomment lines 88 and 89.

Then in the AD_ED.....tmc file, comment out the current config as mentioned above and add this instead of the DX4 ...
Code:
MapKey(&Throttle, LDGH, SEQ(PULSE+FSSModeON, PULSE+FSSModeOFF));
...and see how you go.

Hopefully not complicating things, but you can actually use the same binding to enter and exit FSS Mode.
To test this, just change the FSS Exit binding in game to LeftAlt+F and change the above MapKey from a SEQ to simply a PULSE+FSSModeON, and it should happily toggle the mode on and off with subsequent presses.
Code:
MapKey(&Throttle, LDGH, PULSE+FSSModeON);
Hope this helps.

Clicker

Thanks for this lengthy reply. This clears up a few things, and actually your solution here:

Code:
MapKey(&Throttle, LDGH, PULSE+FSSModeON);
Is what I ended up using before reading your reply so im happy I went the right way with this. Im wondering though if this could be solved differently or with a direct binding in the bindings file. I can see in the AD_ED_KeyMap file that LDGH is supposed to be DX21, could I use it in this way somehow?

Code:
MapKey(&Throttle, LDGH, DX21);
combined with:

Code:
define FSSMode DX21
I am at work now, so cant really try it unfortunately.
 
@Jean-Luc Picard

The FSSModeON solution is unique within the context of AD's script and binds (ie already catered for in his KeyMap and binding file), and so using this won't clobber anything else.
As mentioned a simple change in binding, in game, for FSSMode Exit to match and you are good to go.
In my humble opinion, this approach makes the most sense.

The "LDGH" listed in AD's Keymap file is in a table that shows what the default DX is for each button, this table is info only and not meant to be read as definitions for the buttons....and here's the big catch...the table is referring to the independent Joystick and Throttle Controllers...not the "Combined" controller created by TARGET when you run the script.

Having said all that, searching through AD's script file, I cannot see any reference to DX21, so this could be safely used as you've mentioned if you really want to.
I will point out a couple of things with your logic though...

The defines in AD's Keymap file are simply labels associated with keystrokes or DX#.
This makes the code in the script easier to read and understand.
So, if you "MapKey(&Throttle, LDGH, DX21);" , you don't need "define FSSMode DX21" because you are not using that label.

My only criticism of doing things this way would be, you are making the code slightly less readable/understandable.

Therefore my recommendation if you are keen to use DX 21 would be to go ahead and make the change to the Keymap file as you've suggested...
Code:
define FSSModeOn DX21
...and leave the Mapkey as...
Code:
MapKey(&Throttle, LDGH, FSSModeON);
(and of course change the control binding in game for FSSMode entry and exit to reflect "Joy_21")

Last of all...my personal preference and opinion on TARGET Script for the WARTHOG is to use keystrokes and keystroke combinations rather than DX.
Whilst you can modify the target.tmh file to output up to 64DX buttons (or more), Elite Dangerous will ONLY accept 32...and if I recall correctly there are something like 55 buttons between the Joystick and Throttle. BY using keystrokes, you effectively do away with the DX limitations.
Therefore, in comprehensive scripts like AD's one which binds way more than 32 unique items, it makes sense to try to maintain consistency and try not to mix and match DX and Keystrokes...and as I said, you run out of DX way, way, way before you run out of keystroke combinations!

Hope I haven't confused the issue here, but more than happy to clarify anything here which may not make sense to you.

Cheers
Clicker
 
Last edited:
Thanks a lot Clicker, this makes sense to me now. Its good to know that I would be able to use the DX in case I want to.
One thing that I noticed is that pressing the LDGH in the in-game control config, doesnt trigger a press, so I guess that in the combined device profile that button isnt mapped?
 
Top Bottom