J'ai réussi à écrire le script pour décaler l'axe du manche, par contre comme ça crée un périphérique combiné c'est le bordel avec les MFD.
Il vous "suffit" donc de ne pas inclure les périphériques que vous ne voulez pas modifier via Target. Donc pas les MFD, pas le throttle ni le rudder.
Tous les périphériques inclus dans le profil seront "cachés" et "combinés" dans un unique joystick virtuel. Et si vous ne remapper vous même pas tous les boutons de chaque périphériques vers le joystick virtuel alors vous aurez de nombreux conflit car le mapping par default et incomplet et ne prend pas en compte le nombre de périphérique. Du coup par exemple la trigger du stick et le "LOSB01" des MFD auront le même mapping, le bouton 1 du joystick virtuel "DX1". Aussi le joystick virtuel est limitée à 8 axes, 32 boutons, et 1 hat à 8 directions. On dépasse
très vite cette limite donc en général on évite de combiner tous nos périphériques. Uniquement ceux sur lesquels nous voulons appliquer un script.
Si corriger l'offset du stick est la seul chose que vous voulez faire via Target alors vous pourriez utiliser Target GUI, voici comment faire :
Le problème quand on fait ca c'est qu'on ne peut plus aller dans les diagonales virtuelle, puisque les butées physique du warthog nous en empêchent :
En noir les limites du Warthog tourné CCW 15° pour une meilleure ergo du grip, en rouge les limites du joystick virtuel avec la correction de 15°, et en vert ce que le rouge doit être pour pouvoir à nouveau atteindre les limites virtuelle.
Pour ce faire il faut réduire la "saturation X" (en terme DCS), ou augmenter le "zoom/scale" en terme Target.
Je n'ai plus le Warthog avec moi pour vérifier mais récemment j'ai aidé quelqu'un à régler le problème. Selon lui il faut une valeur de Zoom de 0.6. Malheureusement sur Target GUI on peut entrer que des nombres entier.
Edit 29/05/2020 : Mais, pourquoi n'ai je pas utilisé les deadzones lower et upper sur Target à la place du Zoom..
On peut les régler bien plus finement! Et le résultat sera le même.
Du coup on doit utiliser Target Script Editor OU régler le problème directement via le jeu si celui le permet. Sur DCS cela pourrait être fait en réduisant la
valeur de "saturation X".
Mais bon voyons comment régler le problème via Target histoire que cela soit compatible avec n'importe quel jeux. Voici donc un script qui va bien :
Code : Tout sélectionner
include "target.tmh"
//program startup
int main()
{
// Configure(&Joystick, MODE_EXCLUDED);
Configure(&JoystickF18, MODE_EXCLUDED);
Configure(&HCougar, MODE_EXCLUDED);
Configure(&T16000L, MODE_EXCLUDED);
Configure(&T16000, MODE_EXCLUDED);
Configure(&LMFD, MODE_EXCLUDED);
Configure(&RMFD, MODE_EXCLUDED);
Configure(&TFRPHARudder, MODE_EXCLUDED);
Configure(&TFRPRudder, MODE_EXCLUDED);
Configure(&Throttle, MODE_EXCLUDED);
Configure(&TWCSThrottle, MODE_EXCLUDED);
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//script and function go here
//Axes mapping Warthog stick
MapAxis(&Joystick, JOYX, DX_X_AXIS);
MapAxis(&Joystick, JOYY, DX_Y_AXIS);
RotateDXAxis(DX_X_AXIS, DX_Y_AXIS, -15);
//Axes default curves
SetSCurve(&Joystick, JOYY, 0, 0, 0, 0, 0.6);
SetSCurve(&Joystick, JOYX, 0, 0, 0, 0, 0.6);
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
Ca fonctionne, par contre, vous allez devoir remapper tous les boutons sur tous vos jeux. Car maintenant votre joystick ne s'appele plus "Warthog stick" mais "Thrustmaster combined..". Le bordel sur DCS pour remapper tous les modules..
Pour éviter cela on peut faire en sorte de ne pas cacher le périphérique physique lors de l'execution du script en changeant quelques lignes au debut et à la fin du script :
On change ca :
Code : Tout sélectionner
// Configure(&Joystick, MODE_EXCLUDED);
...
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
En ca :
Code : Tout sélectionner
Configure(&Joystick, MODE_FILTERED);
...
int EventHandle(int type, alias o, int x)
{
if(&o == &Joystick) GameOutput(&o, x, o[x]);
DefaultMapping(&o, x);
}
Ce qui nous donne ca :
Code : Tout sélectionner
include "target.tmh"
//program startup
int main()
{
Configure(&Joystick, MODE_FILTERED);
Configure(&JoystickF18, MODE_EXCLUDED);
Configure(&HCougar, MODE_EXCLUDED);
Configure(&T16000L, MODE_EXCLUDED);
Configure(&T16000, MODE_EXCLUDED);
Configure(&LMFD, MODE_EXCLUDED);
Configure(&RMFD, MODE_EXCLUDED);
Configure(&TFRPHARudder, MODE_EXCLUDED);
Configure(&TFRPRudder, MODE_EXCLUDED);
Configure(&Throttle, MODE_EXCLUDED);
Configure(&TWCSThrottle, MODE_EXCLUDED);
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//script and function go here
//Axes mapping Warthog stick
MapAxis(&Joystick, JOYX, DX_X_AXIS);
MapAxis(&Joystick, JOYY, DX_Y_AXIS);
RotateDXAxis(DX_X_AXIS, DX_Y_AXIS, -15);
//Axes default curves
SetSCurve(&Joystick, JOYY, 0, 0, 0, 0, 0.6);
SetSCurve(&Joystick, JOYX, 0, 0, 0, 0, 0.6);
}
int EventHandle(int type, alias o, int x)
{
if(&o == &Joystick) GameOutput(&o, x, o[x]);
DefaultMapping(&o, x);
}
Maintenant quand on run le script on se retrouve avec un joystick virtuel, et aussi le Warthog stick. En jeu on va donc mapper les AXES
du stick virtuel, et les boutons du stick physique si cela n'est pas déjà fait. Autrement dit on utilise le Joystick virtuel uniquement pour ses axes, par pour ses boutons, et on utilise le stick physique uniquement pour ses boutons, et pas pour ses axes.
N'oublions pas de de-mapper les boutons du stick virtuel, et les axes du stick physique pour éviter tout conflit.
Il est possible de faire cela avec n'importe quel joystick grace à Joystick Gremlin, et au
plugin qui va bien.
Ici un rapide exemple avec le T16000 :
Et pour regler le "Zoom", ou la "saturation X", on fait cela sur les axes
X et Y du
Vjoy :
(0.81 est la valeur qui va bien pour le T16000, cela peut changer d'un stick à l'autre).
Cela crée des zones mortes en partant des positions mini et maxi de l'axe. Comme le fait la saturation X sur DCS :
Malheureusement cela n'est pas représenté graphiquement sur l'interface de Gremlin, mais bon, ca fonctionne.
PS : Faire cela réduit la zone utilisable du joystick, cela réduit l'amplitude max utilisable et donc au final notre précision.
PPS : On peut changer une piece du manche pour régler le problème physiquement, voir
ici.