Jump to content

Jikahn

Members
  • Posts

    54
  • Joined

  • Last visited

Reputation

21 Excellent

Profile Information

  • About me
    Rocketeer

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Just replying here in Aug 2022. Installed with CKAN on KSP v1.12.3.3173. This still seems to work perfectly at first glance. I would turn off the navball ghosts in the stock options, but the mod seems to override them regardless.
  2. Words for google searches: thrustmaster 16000 stick kerbal space program ksp crazy haywire extreme target gui broken fix With my Thrustmaster T16000M FCS HOTAS stick the full axis extension values range between -32767 and 32767. That is to say the stick itself only ever outputs from -32766 to 32766 even though the extremes are labled -32767 and 32767. In my case, instead of adding 32768 using 0x8000, I need to add 32766 using 0x7FFF. Edit: I don't know why the device analyzer only shows 32766 at the extremes. I have no deadbands and the physical readouts along with the virtual readouts all show I am reaching the max value. Regardless of the why involving the device analyzer, vebyast is correct, and my code block has been updated to the correct hex value. HOW TO DO THIS without reading this whole thread and getting confused: The code in target.tmh has changed with updates. You should edit the code again and overwrite your custom version of target.tmh after every update just in case. Put the code below or the code above before the first function of your target.tmh file. IDK if different sticks have different extremes. You could always just add a small deadband at both ends. It should look something like this. // This is the code you insert at the beginning short UnityAxis (short TARGETAxis) { /* Move the value entirely into the positive domain */ int intermediate = TARGETAxis; /* Add 36766 which is 0x7FFF in hex and then divide by two */ intermediate = (intermediate + 0x8000) / 2; return intermediate; } // Below is the first function of my target.tmh file at the time of writing. You don't need to insert this, as it is just and example. struct sAxis { char dxmap; char dir; int curvemode; // 0=none, 1=S, 2=J, else=custom char lower, center, upper, curve; // S curve parameters float ab; // J curve parameter, zoom for Scurve char locked; char relative; int trim; int val, relpos; int key[6]; // ou, iu, om, im, od, id } Now you have to change one line buried in that code deep down somewhere so it is time for CTRL+F. Use this or some portion of it: if(index < MOUSE_X_AXIS) DX(index-1+OUT_ID_AXIS, value); replace it with: if(index < MOUSE_X_AXIS) DX(index-1+OUT_ID_AXIS, UnityAxis(value)); The above line is number 646 for me as of this writing. Save your file as something.tmh and put it where your profile files are, or in the same directory as the script file you are about to make. The script and your customized target.tmh have to be in the same directory or where the original target.tmh is. The function name and parameter list where that line resided was int DXSetAxis(int index, int value) at the time of this writing. It's extremely easy to convert a GUI profile to a script, so that will be my contribution. Though in fiddling with this I accidentally learned how to write target scripts. Until then users who can't write scripts can: Make and save the profile with the GUI. Navigate through the profile to the page with "1. Select Control 2. Assign Parameters 3. Select Event" at the top. Make sure you saved. Click view script. That's your script. Copy paste that into a text editor. Close the GUI editor and open the script editor. Save it where you save your profiles, but replace the beginning line include "target.tmh" with include "newfilename.tmh" Not literally newfilename, whatever you named it. I named mine targetMXY.tmh Put that file in the same place you put your new script file. Don't forget to make a new custom target.tmh with every Thrustmaster software update just in case. Make sure you are running the script before you launch KSP when you assign controls in KSP. Want a button to switch to controlling planes to controlling rockets and back? You are probably going to have to read the TARGET script PDF depending on what device you are using. I'm using a stick identified internally T16000. I want button 14, defined B14 internally, to be my switching button. If you want to set up deadbands anywhere in the script without going back to the GUI, you can edit the SetSCuve commands, for example SetSCurve(&T16000, JOYX, 5, 3, 5, 0, 0); creates a deadband of 5 on either extreme and 3 surrounding center position. MapKey(&T16000, B14, SEQ( EXEC("printf(\" Switching to Plane Controls (Twist = Yaw\; X = Roll) \\xa\");" "MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);" "SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);" "MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);" "SetSCurve(&T16000, JOYX, 0, 0, 0, 0, 0);" ), EXEC("printf(\" Switching to Rocket Controls (Twist = Roll; X = Yaw) \\xa\");" "MapAxis(&T16000, RUDDER, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);" "SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);" "MapAxis(&T16000, JOYX, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);" "SetSCurve(&T16000, JOYX, 0, 0, 0, 0, 0);" ) ) ); Much thanks to Jason Melancon and Vebyast for finding and providing answers to problems I'm sure that has plagued many people. You guys are the real MVPs. P.S. Is your stick twist going bonkers like mine was? The fix is simply cleaning the twisting mechanism with 91% isopropyl alcohol. This guy shows you how. Read the comments section for more tips. Here's my script, partially generated by the GUI if anyone is interested. printf simply prints things to the script window. It was useful and i just left it. If you copy this be sure to switch to plane mode before assigning controls. Things will make more sense in the KSP input options window. include "targetMXY.tmh" int main() { Configure(&HCougar, MODE_EXCLUDED); Configure(&Joystick, MODE_EXCLUDED); Configure(&JoystickF18, MODE_EXCLUDED); Configure(&Throttle, MODE_EXCLUDED); Configure(&A320Pilot, MODE_EXCLUDED); Configure(&A320Copilot, MODE_EXCLUDED); Configure(&TCAQuadrant12, MODE_EXCLUDED); Configure(&TCAQuadrant34, MODE_EXCLUDED); Configure(&TCAYokeBoeing, MODE_EXCLUDED); Configure(&TCAQBoeing12, MODE_EXCLUDED); Configure(&TCAQBoeing34, MODE_EXCLUDED); Configure(&T16000L, MODE_EXCLUDED); Configure(&LMFD, MODE_EXCLUDED); Configure(&RMFD, MODE_EXCLUDED); Configure(&TFRPRudder, MODE_EXCLUDED); Configure(&TWCSThrottle, MODE_EXCLUDED); Configure(&TFRPHARudder, MODE_EXCLUDED); if(Init(&EventHandle)) return 1; SetKBRate(32, 50); SetKBLayout(KB_ENG); SetShiftButton(0, 0, 0, 0, 0, 0); MapKeyIOUMD(&T16000, H1U, L_ALT+'w', L_ALT+'w', L_ALT+'w', L_ALT+'w', L_ALT+'w', L_ALT+'w'); MapKeyIOUMD(&T16000, H1D, L_ALT+'s', L_ALT+'s', L_ALT+'s', L_ALT+'s', L_ALT+'s', L_ALT+'s'); MapAxis(&T16000, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&T16000, JOYY, 0, 0, 0, 0, 0); MapAxis(&T16000, RUDDER, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0); MapAxis(&T16000, JOYX, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&T16000, JOYX, 0, 0, 0, 0, 0); MapAxis(&T16000, THR, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&T16000, THR, 0, 0, 0, 0, 0); MapKey(&T16000, B14, SEQ( EXEC("printf(\" Switching to Plane Controls (Twist = Yaw\; X = Roll) \\xa\");" "MapAxis(&T16000, RUDDER, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);" "SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);" "MapAxis(&T16000, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);" "SetSCurve(&T16000, JOYX, 0, 0, 0, 0, 0);" ), EXEC("printf(\" Switching to Rocket Controls (Twist = Roll; X = Yaw) \\xa\");" "MapAxis(&T16000, RUDDER, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);" "SetSCurve(&T16000, RUDDER, 0, 0, 0, 0, 0);" "MapAxis(&T16000, JOYX, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);" "SetSCurve(&T16000, JOYX, 0, 0, 0, 0, 0);" ) ) ); printf("\xa Written in part by Nocturnalverse\xa"); printf(" Defaulting to Rocket Controls (Twist = Yaw) \xa"); } int EventHandle(int type, alias o, int x) { DefaultMapping(&o, x); }
  3. Yes, the stock model generates too much lift for wing area. Your planes will also reach higher speeds in FAR than you do in stock.
  4. Planet shine has adjustments for ambient light. In the past, it has been known to conflict with other mods that mess with ambient lighting.
  5. So far so good with the new DLL and I even reinstalled the Jan25 dev version of KJR for IR compatibility.
  6. It's super easy to use, just click "use terrain altitude" and you can literally drag and drop the waypoint exactly where you want to on the body from the map view. Then if you need it at a certain altitude for some reason you can edit that manually.
  7. If you don't want to use a dev version check out Waypoint Manager, I just came back recently from a long break as well and was overjoyed to find this.
  8. If anyone wants the 1.1.6 sunflare back you can DL this edit which simply overwrites the new flare images with the old ones and changes two values in the .cfg file to match the entries from 1.1.6. Replaced .pngs in StockVisualEnhancements/SVE_Scatterer_Sunflares/Sun with the 1.1.6 .pngs In StockVisualEnhancements/SVE_Settings.cfg, replaced entries "flareSettings" and "spikesSettings" entries with the 1.1.6 entries. All the other entries in that section were the same. Edit: Updated for 1.2.1 SVE_OldFlares_for_1.2.1.zip: https://drive.google.com/open?id=0Bz8b-qQdcJUJRGdpS0tYVmxBN0k
  9. Is there any way to turn the sun fog off in the configs? I'm not sure I like it.
  10. I do expect it. I'll point the FAR thread over here. Thanks for looking at it. Stay safe from the storms.
  11. I'm running the latest developement version of FAR, without KJR now, and it's still occuring sporadically but I have a ton of other mods. The next time it happens I'll post another log.
  12. I had it happen with another craft, after removing KJR, but was unable to find reproduction steps. I uninstalled FAR temporarily and it landed fine.
×
×
  • Create New...