TARGET: Butée sur axe DirectX

Salle dedieé aux péripheriques : Joystick, palloniers, Track-Ir
Avatar de l’utilisateur

Topic author
Kerdougan
Pilote Confirmé
Pilote Confirmé
Messages : 2083
Inscription : 27 décembre 2006

TARGET: Butée sur axe DirectX

#1

Message par Kerdougan »

J'utilise depuis pas mal de temps TARGET pour gérer mes axes dans trim dans DCS et IL2:COD.

J'utilise les lignes suivantes et ça fait très bien le boulot pour avoir un trim qui réagit bien en appuis courts ou prolongés.

MapKey(&Joystick, H1U, AXIS(DX_YROT_AXIS, -5, 2)); //TRIM HAT UP POSITION
MapKey(&Joystick, H1D, AXIS(DX_YROT_AXIS, +5, 2)); //TRIM HAT DOWN POSITION

C'est vraiment très agréable à utiliser mais tant qu'à palier aux manques de certains simus grâce à TARGET j'aurai voulu aller encore plus loin. Je vole avec la Jetesons et j'ai appris récemment que le trim de l'Alphajet arrivait en butée à 4G, c'est pour ça qu'on entend jamais le leader de la PAF annoncer la fin des cadences dans les boucles. J'aurais voulu faire la même chose dans TARGET en créant une macro empêchant le trim d'aller plus loin passé une certaine valeur sur mon axe DirectX DX_YROT_AXIS.

Je pensai faire un truc comme suit:

int M_Trim_Nose_Up, M_Trim_Nose_Down, M_Trim_Nose_Stop, M_Trim_Nose_Value;

M_Trim_Nose_Up = AXIS(DX_YROT_AXIS, -5, 2);
M_Trim_Nose_Down = AXIS(DX_YROT_AXIS, +5, 2);
M_Trim_Nose_Stop = AXIS(DX_YROT_AXIS, 0, 0);
M_Trim_Nose_Value = DX_YROT_AXIS;

MapKey(&Joystick, H1U, EXEC("if (M_Trim_Nose_Value >= 10000) ActKey(KEYON+M_Trim_Nose_Stop); else ActKey(KEYON+M_Trim_Nose_Down);"));
MapKey(&Joystick, H1D, EXEC("if (M_Trim_Nose_Value <= -10000) ActKey(KEYON+M_Trim_Nose_Stop); else ActKey(KEYON+M_Trim_Nose_Up);"));

Le problème est que je ne sais pas comment récupérer la valeur de l'axe DX_YROT_AXIS et donc forcément TARGET chouine sur la ligne M_Trim_Nose_Value = DX_YROT_AXIS; puisque la syntaxe est mauvaise. Quelqu'un a une idée?

Merci
Avatar de l’utilisateur

Morpheus
Pilote Philanthrope
Pilote Philanthrope
Messages : 5991
Inscription : 09 mai 2008

Re: TARGET: Butée sur axe DirectX

#2

Message par Morpheus »

Ça fait longtemps que tu parles chinois ? lol lol lol
Image
Avatar de l’utilisateur

Topic author
Kerdougan
Pilote Confirmé
Pilote Confirmé
Messages : 2083
Inscription : 27 décembre 2006

Re: TARGET: Butée sur axe DirectX

#3

Message par Kerdougan »

T'as pas une planche à bricoler au lieu de polluer mon topic? :biggrin:
Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6994
Inscription : 18 août 2001

Re: TARGET: Butée sur axe DirectX

#4

Message par dimebug »

perso je ferais 2 fonctions (une pour l'increment, l'autre pour la décrémentation)

avec un petit filtre logique :

"Si trim supérieur ou égale à X alors action nulle
sinon trim + 5"

Ca demande de passer un peu de temps.

L'autre solution, + réaliste (car ta solution ne tiens pas compte des G, juste de la correction de trim, hors, d'autres paramètres agissent sur les G)
Envoyer un flux TCP IP depuis DCS contenant la valeur des G, laisser target le lire et l'interpréter avec une fonction qui interagie sur la valeur de trim. C'est faisable, mais concernant la fonction tcp ip, TARGET n'est pas documenté, mais bon ca peut se faire si on est a l'aise en programmation (et qu'on a du temps pour bricoler ce genre de chose).
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Topic author
Kerdougan
Pilote Confirmé
Pilote Confirmé
Messages : 2083
Inscription : 27 décembre 2006

Re: TARGET: Butée sur axe DirectX

#5

Message par Kerdougan »

J'avais essayé de le faire avec 2 fonctions mais comme je découvre cet aspect de TARGET ma syntaxe n'est pas accepté.

J'avais essayé ça:

int M_Trim_Nose_Up_Logic();
{
if (M_Trim_Nose_Value >= 10000) ActKey(KEYON+M_Trim_Nose_Stop);
else ActKey(KEYON+M_Trim_Nose_Up);
}

int M_Trim_Nose_Down_Logic();
{
if (M_Trim_Nose_Value >= -10000) ActKey(KEYON+M_Trim_Nose_Stop);
else ActKey(KEYON+M_Trim_Nose_Down);
}

Mais là encore je ne sais toujours pas comment récupérer la valeur de l'axe DX_YROT_AXIS. Pour l'instant j'essaie de faire simple pour que ça marche, donc aller fricoter avec du TCP et aller renifler les infos que DCS pourrait fournir j'en suis loin :emlaugh: Nos départs de boucles se font toujours dans la même plage de vitesse et j'arrête toujours ma cadence quand mon AOA approche de 10°, le résultat est toujours proche de 4G. L'idée est d'arriver à une butée sur l'axe de trim par rapport à sa position pour éviter de cadence trop fort pour rien, un paramétre de moins à surveiller dans les verticales c'est toujours ça de gagné pour le lead.
Avatar de l’utilisateur

dimebug
Pilote d'essais
Pilote d'essais
Messages : 6994
Inscription : 18 août 2001

Re: TARGET: Butée sur axe DirectX

#6

Message par dimebug »

voila qui devrait te plaire.. reste a ajuster les polarité et les valeurs...

include "target.tmh"



int count; // init with value=0 compteur d'impulsions sur le trim

int main()
{
Configure(&HCougar, MODE_EXCLUDED);
Configure(&Throttle, MODE_EXCLUDED);
Configure(&T16000, MODE_EXCLUDED);
Configure(&LMFD, MODE_EXCLUDED);
Configure(&RMFD, MODE_EXCLUDED);

if(Init(&EventHandle)) return 1;

MapAxis(&Joystick, JOYX, DX_X_AXIS);
MapAxis(&Joystick, JOYY, DX_Y_AXIS);

// c'est ici que ca se passe, si moins de 5 imputions sur le trim, alors ajouter 100 pas de trim, sinon rien faire...
MapKey(&Joystick, H1U, CHAIN(EXEC("count = count + 1;"), EXEC("if (count < 5) TrimDXAxis(DX_Y_AXIS,-100);"))); // add 1 unit to "count" and compare to the flag
// c'est ici que ca se passe, si moins de 5 imputions sur le trim en négatif, alors ajouter soustraire100 pas de trim, sinon rien faire...
MapKey(&Joystick, H1D, CHAIN(EXEC("count = count - 1;"), EXEC("if (count > -5) TrimDXAxis(DX_Y_AXIS,+100);"))); // substract1 unit to "count" and compare to the flag




}

//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Topic author
Kerdougan
Pilote Confirmé
Pilote Confirmé
Messages : 2083
Inscription : 27 décembre 2006

Re: TARGET: Butée sur axe DirectX

#7

Message par Kerdougan »

Ah oui quand même! Merci Dimebug je regarderais ça à tête reposée pour bien m'impregner de tout ça :)
Répondre

Revenir à « salle: Periphériques: Hotas, Joysticks, Track-IR »