TUTO : Création de courbes personnalisés Sous DCS

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

Topic author
C6_Hellcat
Webmaster
Webmaster
Messages : 1872
Inscription : 27 juillet 2002

TUTO : Création de courbes personnalisés Sous DCS

#1

Message par C6_Hellcat »

Je vais vous expliquer comment créer des courbes de réponses différentes et comment en changer à la volée à tout moment. Dans DCS M2000C, le but étant de réduire la réponse en tangage pendant les phases de ravitaillement.

Etape 1 : Création du script

Pour ceux qui utilise déja Target script editor, vous pouvez passer à l'étape suivante. Pour les ceux qui passent par Target GUI, il faut convertir votre profil.
Pour ce faire lancez Target GUI, sélectionnez votre profil, cliquez sur edit, puis cliquez next jusqu'à arriver dans la page de configuration. Dans la zone "2 Assign Parameters", cliquez en bas sur le bouton "view script". Un fichier texte s'ouvre, gardez le de coté pour l'étape suivant. Fermez Target GUI.

Etape 2 : Modification du script

Lancez Target script editor. Si vous êtes directement allez à l'étape 2, ouvrez votre script habituel. Sinon cliquez sur "menu", puis "new" et sur "Target code (.tmc)", vous pouvez nommer votre script. Il n'y a plus qu'a coller le texte du fichier ouvert précédemment. Vous devriez vous retrouvez avec quelque chose d'approchant (c'est mon profil perso, pour ceux qui ont extrait via target gui, ce sera plus condensé )
include "target.tmh"

int listXC, listYC, listXR, listYR, main()

{
Exclude(&HCougar);
Exclude(&T16000);
Exclude(&LMFD);
Exclude(&RMFD);


if(Init(&EventHandle)) return 1;

listXC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listYC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listXR = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listYR = LIST(0,25, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,75);



//axis mapping Warthog Joystick
MapAxis(&Joystick, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&Joystick, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&Throttle, THR_LEFT, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&Throttle, THR_RIGHT, DX_Z_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&Throttle, THR_FC, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);

SetShiftButton(&Joystick, 0, &Throttle, PSF, PSB);

// --- Mapping Manche
// --- Gachette
MapKey(&Joystick, TG1, SPC); // === tir canons + mitrailleuses
MapKey(&Joystick, TG2, 0);

// --- Bouton coté droit
MapKey(&Joystick, S1, 0); //

// --- Bouton rouge
MapKey(&Joystick, S2, PULSE+ 'i'); // === magic II select

// --- Petit doigt
MapKeyUMD(&Joystick, S3, PULSE+ 's', PULSE+ 's', PULSE+ USB[0x31]); // === NWS IFF

// --- Palette
MapKeyUMD(&Joystick, S4, PULSE+ L_ALT+ 'a', PULSE+ L_ALT+ 'a', PULSE+ F1); // === autopilot standby

// --- Trim
MapKey(&Joystick, H1U, ';'); // === curseur radar bas
MapKey(&Joystick, H1D, '.'); // === curseur radar haut
MapKey(&Joystick, H1L, ','); // === curseur radar gauche
MapKey(&Joystick, H1R, '/'); // === curseur radar droite

// --- TMS
MapKey(&Joystick, H2U, PULSE+ ENT); // === target lock
MapKey(&Joystick, H2D, 0);
MapKey(&Joystick, H2L, PULSE+ '-'); // === portée radar -
MapKey(&Joystick, H2R, PULSE+ '='); // === portée radar +


// --- DMS
MapKey(&Joystick, H3U, PULSE+ L_CTL+ '4'); // === selection emport 3
MapKey(&Joystick, H3D, PULSE+ L_CTL+ '1'); // === selection mode canon
MapKey(&Joystick, H3L, PULSE+ L_CTL+ '3'); // === selection emport 2
MapKey(&Joystick, H3R, PULSE+ L_CTL+ '5'); // === selection emport 4

// --- CMS
MapKey(&Joystick, H4U, DEL); // === largage flares
MapKey(&Joystick, H4D, INS); // === largage chaffs
MapKey(&Joystick, H4L, PULSE+ 'v'); // === CAC mode
MapKey(&Joystick, H4R, PULSE+ 'o'); // === Ground Avoidance mode
MapKey(&Joystick, H4P, PULSE+ 'd'); // === mode deselect


// --- Mapping Manette
// --- Flaps
MapKey(&Throttle, FLAPU, 0);
MapKeyR(&Throttle, FLAPU, 0);
MapKey(&Throttle, FLAPM, 0);
MapKey(&Throttle, FLAPD, 0);
MapKeyR(&Throttle, FLAPD, 0);

// --- EAC
MapKey(&Throttle, EACON, PULSE+ '0' ); // === MASTER ARM
MapKey(&Throttle, EACOFF, PULSE+ '0'); // === MASTER ARM

// --- Radar Alt
MapKey(&Throttle, RDRNRM, PULSE+ EXEC("SetCustomCurve(&Joystick, JOYX, listXR);""SetCustomCurve(&Joystick, JOYY, listYR);")); // === Courbe joystick ravitaillement
MapKey(&Throttle, RDRDIS, PULSE+ EXEC("SetCustomCurve(&Joystick, JOYX, listXC);""SetCustomCurve(&Joystick, JOYY, listYC);")); // === Courbe joystick combat

// --- Autopilot on/off
MapKey(&Throttle, APENG, 0); //
MapKey(&Throttle, APDIS, 0);

// --- Autopilot switch
MapKey(&Throttle, APPAT, PULSE+ L_CTL+ 'g'); // === trains d'atterrissage
MapKey(&Throttle, APAH, 0);
MapKey(&Throttle, APALT, PULSE+ L_SHIFT+ 'g'); // === trains d'atterrissage

// --- Alarme de train
MapKey(&Throttle, LDGH, PULSE+ L_ALT+ F10); // === enregistrement video SHADOW PLAY

// --- Moteur gauche
MapKey(&Throttle, EOLIGN, PULSE+ L_WIN+ HOME); // --- démarrage moteur
MapKey(&Throttle, EOLNORM, 0);
MapKey(&Throttle, EOLMOTOR, PULSE+ L_WIN+ END); // --- arret moteur

// --- Moteur droit
MapKey(&Throttle, EORIGN, 0); //
MapKey(&Throttle, EORNORM, 0);
MapKey(&Throttle, EORMOTOR, 0); //

// --- APU
MapKey(&Throttle, APUON, 0);
MapKey(&Throttle, APUOFF, 0);


// --- Debit carbu gauche
MapKey(&Throttle, EFLNORM, PULSE+ L_CTL+ L_SHIFT+ 'c'); // --- FBW Limiter
MapKey(&Throttle, EFLOVER, PULSE+ L_CTL+ L_SHIFT+ 'c'); // --- FBW Limiter

// --- Debit carbu droit
MapKey(&Throttle, EFRNORM, PULSE+ L_CTL+ L_SHIFT+ 'w'); // --- FBW Vrille
MapKey(&Throttle, EFROVER, PULSE+ L_CTL+ L_SHIFT+ 'w'); // --- FBW Vrille

// --- Speedbrake
MapKey(&Throttle, SPDF, PULSE+ 'b'); // === aerofreins
MapKeyR(&Throttle, SPDF, PULSE+ 'b');
MapKey(&Throttle, SPDM, 0);
MapKey(&Throttle, SPDB, PULSE+ L_SHIFT+ 'b');
MapKeyR(&Throttle, SPDB, PULSE+ L_CTL+ 'b');

// --- Mic
MapKey(&Throttle, MSP, 0); // --- teamspeak
MapKey(&Throttle, MSU, 0);
MapKey(&Throttle, MSD, 0);
MapKey(&Throttle, MSL, 0);
MapKey(&Throttle, MSR, 0);

// --- Coolie
MapKey(&Throttle, CSU, 0);
MapKey(&Throttle, CSD, 0);
MapKey(&Throttle, CSL, 0);
MapKey(&Throttle, CSR, 0);

// --- Bouton gaz
MapKey(&Throttle, LTB, SEQ(EXEC("SetCustomCurve(&Joystick, JOYX, listXR);""SetCustomCurve(&Joystick, JOYY, listYR);"),EXEC("SetCustomCurve(&Joystick, JOYX, listXC);""SetCustomCurve(&Joystick, JOYY, listYC);")));

// --- Pinky
MapKey(&Throttle, PSF, 0);
MapKey(&Throttle, PSB, 0);
MapKey(&Throttle, PSM, 0);

// --- China
MapKey(&Throttle, CHF, 0);
MapKey(&Throttle, CHM, 0);
MapKey(&Throttle, CHB, 0);

// --- Boat
MapKey(&Throttle, BSF, 0);
MapKey(&Throttle, BSM, 0);
MapKey(&Throttle, BSB, 0);



}

int EventHandle(int type, alias o, int x)

{
DefaultMapping(&o, x);
}
Pour des raisons techniques, il n'est pas possible d'assigner directement une courbe à un bouton ou interrupteur. Nous allons donc créer les courbes séparément, puis les appeler lorsque l'on en aura besoin.
Il y a 3 étapes à réaliser pour créer et utiliser une courbe :
- déclarer les listes
- définition des listes
- utilisation des listes de courbes

Etape 3 : Déclaration des listes
A ce stade il faudra faire attention à bien respecter, ponctuations, minuscules et majuscules. La moindre erreur pourra entrainer des erreurs de compilation ou d’exécution. On verra cela plus loin.
Au tout début du fichier vous avez une ligne comme celle ci :
int main()
Modifiez la de la sorte :
int listXC, listYC, listXR, listYR, main()
Etape 4 : définition des listes

Un peu plus bas dans le texte cherchez cette ligne :
if(Init(&EventHandle)) return 1;
et rajoutez ces 4 lignes sous celle ci. Vous devez avoir ceci:
if(Init(&EventHandle)) return 1;

listXC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listYC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listXR = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listYR = LIST(0,25, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,75);
Donc ici j'ai déclarer mes courbes, XC et YC pour le combat et XR et YR pour le ravitaillement. Pour ceux qui veulent les modifier, je vous explique le principe.

Il y a une série de paires de chiffres (0,0, 10,10, 20,20, 30,30, etc ) dans chaque paires le premier chiffre correspond à la position physique de l'axe, et le second à la réponse qui est renvoyé.
La position 50 correspond au milieu de l'axe. 0 et 100 en sont les extrémités, 25 et 75 mi course depuis le milieu dans une direction et dans l'autre.
Par exemple dans les 3 premières listes, qui sont des courbes linéaires, à la position physique 0, je renvoi la valeur 0 etc ...

Concrètement sur l'axe de tangage, si je tire ou pousse le manche à fond, la réponse est envoyé est je tire ou pousse le manche à fond.

La quatrième liste elle est différente.

Si au milieu je suis toujours à 50,50, aux extrémités je suis à 0,25, et 100,75. Ce qui correspond à une position physique 0 je renvoie la valeur 25. Et à 100, la valeur 75.
Cela veut dire que si je tire ou pousse le manche à fond, la réponse renvoyé sera je tire ou pousse le manche qu'à la moitie de sa course.

]Il faudra faire attention, car les courbes programmé ici et celle que vous avez paramétré dans le jeu, s'additionneront. Si vous avez des courbes spécifiques dans le jeu, il faut faire attention.
Ici nous ne modifions que l'axe de tangage. il faudra dans le jeu mettre une zone linéaire. Pour l'axe de roulis, qui n'est pas modifié, il faut faire l'inverse, garder sa courbe dans le jeu et faire une courbe linéaire dans le script ( ce qui est le cas dans mes réglages ).


Etape 5 : utiliser les listes de courbes

Maintenant il faut faire un choix. A savoir sur quel bouton ou interrupteur assigner le changement de courbes.
Si vous choisissez un interrupteur les 2 positions de l'interrupteur lanceront l'une des deux courbes. Par exemple l'interrupteur RDR ALTM, en position NRM pour les courbes combat et en position DIS pour le ravitaillement.
Si vous choisissez un bouton. Il faudra créer une séquence, qui à chaque fois que vous appuierez dessus, alternera entre les deux réglages.Je vous expliquerez les deux.

Une fois votre bouton ou interrupteur choisis, il faut trouver .... son nom. Si vous ne le connaissez pas lancez Target GUI, et dans la zone "How do I ?" il y a des liens vers deux fichier pdf. Warthog throttle buttons names et Warthog joystick buttons name. Cherchez y le nom de votre bouton ou interrupteur.

- Méthode interrupteur

Une fois repérer dans votre script vos 2 boutons, vous pouvez désactiver ces lignes en ajoutant // à l'avant de la ligne.

Dans mon cas j'ai choisis l'interrupteur RDR ALTM. Je vais donc avoir ces lignes à rajouter. Avec au dessus mes anciennes lignes simplement désactiver.
//MapKeyUMD(&Throttle, RDRNRM, PULSE+ L_WIN+ '4', PULSE+ L_WIN+ '4', 0);
//MapKeyUMD(&Throttle, RDRDIS, PULSE+ L_WIN+ '3', PULSE+ L_WIN+ '3', 0);
MapKey(&Throttle, RDRNRM, PULSE+ EXEC("SetCustomCurve(&Joystick, JOYX, listXR);""SetCustomCurve(&Joystick, JOYY, listYR);")); // === Courbe joystick ravitaillement
MapKey(&Throttle, RDRDIS, PULSE+ EXEC("SetCustomCurve(&Joystick, JOYX, listXC);""SetCustomCurve(&Joystick, JOYY, listYC);")); // === Courbe joystick combat
- Méthode bouton

Ici j'ai choisis le bouton rouge sur la manette des gaz.

Le premier appui me fait basculer en mode ravitaillement, le second en mode combat, le troisième retour en mode ravitaillement, etc ...
N'oubliez pas le double // pour garder l'ancienne ligne. On ne sait jamais ;)
MapKey(&Throttle, LTB, SEQ(EXEC("SetCustomCurve(&Joystick, JOYX, listXR);""SetCustomCurve(&Joystick, JOYY, listYR);"),EXEC("SetCustomCurve(&Joystick, JOYX, listXC);""SetCustomCurve(&Joystick, JOYY, listYC);")));

Etape 6 : sauvegarde et utilisation

A ce stade il ne reste plus qu'a compiler ( sauvegarder ) votre script. Cliquez sur le bouton "Compile". Si il n'y a pas d'erreur d'écriture, vous aurez le message "Compile Succeeded" dans l'onglet du bas ( compilateur ).
Mais cela ne veut pas dire que le script soit capable de s’exécuter. Pour cela cliquez sur "Run". Si le message "main returned 0" apparait. :cheer: Félicitations :cheer: tout fonctionne.
Si ce n'est pas le cas, le compilateur vous renverra vers la ligne contenant l'erreur.

Désormais il faudra lancé votre script via le Target script editor, en utilisant le bouton "run". Je crois qu'il est possible d'associé le script à un exe dans Target GUI, mais je ne jamais essayer.

Vous pouvez toujours modifier votre profil d'origine dans Target GUI, mais il vous faudra refaire cette manip, si vous le modifiez. Je ne pense pas qu'il existe de moyen de remonter un script vers Target GUI.
Avatar de l’utilisateur

Psycho
Pilote Philanthrope
Pilote Philanthrope
Messages : 4189
Inscription : 04 décembre 2003

Re: Création de courbes personnalisés

#2

Message par Psycho »

Merci Hellcat :notworthy

Dans mon cas je souhaite modifier la réponse des gaz, comment déclarer cet axe ?
Image i5 13600KF@5.1Ghz / Asus STRIX Z790 / RTX 3090 Ti STRIX LC OC / 32Go DDR4 Gskill / SSD 980 PRO M.2 1To / Asus 27' / HOTAS TM Warthog / Quest 3 / Point-ctrl v2
Avatar de l’utilisateur

Topic author
C6_Hellcat
Webmaster
Webmaster
Messages : 1872
Inscription : 27 juillet 2002

Re: Création de courbes personnalisés

#3

Message par C6_Hellcat »

déclaration:
int listXC, listYC, listXR, listYR, listGC, listGR, main()

définition
listXC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listYC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listGC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listXR = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100);
listYR = LIST(0,25, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,75);
listGR = LIST(0,25, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,75);

utilisation interrupteur
MapKey(&Throttle, RDRNRM, PULSE+ EXEC("SetCustomCurve(&Joystick, JOYX, listXR);""SetCustomCurve(&Joystick, JOYY, listYR);""SetCustomCurve(&Throttle, THR_LEFT, listGR);"));
MapKey(&Throttle, RDRDIS, PULSE+ EXEC("SetCustomCurve(&Joystick, JOYX, listXC);""SetCustomCurve(&Joystick, JOYY, listYC);""SetCustomCurve(&Throttle, THR_LEFT, listGC);"));

utilisation bouton
MapKey(&Throttle, LTB, SEQ(EXEC("SetCustomCurve(&Joystick, JOYX, listXR);""SetCustomCurve(&Joystick, JOYY, listYR);""SetCustomCurve(&Throttle, THR_LEFT, listGR);"),EXEC("SetCustomCurve(&Joystick, JOYX, listXC);""SetCustomCurve(&Joystick, JOYY, listYC);""SetCustomCurve(&Throttle, THR_LEFT, listGC);")));

Par contre avec cette courbe tu ne pourras plus mettre pleine PC ou plein réduit.

il te faudra peut être faire une liste plus proche de ceci, pour conserver une course complète, à tester ;)
listGR = LIST(0,0, 10,20, 20,30, 30,40, 40,45, 50,50, 60,55, 70,60, 80,70, 90,80, 100,100);

Verifie aussi si c'est la manette gauche ou droite qui est assigné dans ton jeu à la commande des gaz. Ici j'ai assigné à la manette gauche, mais tu peux changer le texte THR_LEFT, par THR_RIGHT.
Avatar de l’utilisateur

Psycho
Pilote Philanthrope
Pilote Philanthrope
Messages : 4189
Inscription : 04 décembre 2003

Re: Création de courbes personnalisés

#4

Message par Psycho »

Ok je vais tester ça merci.
Pour le ravito pas besoin de PC ou idle donc ça devrait le faire.
Image i5 13600KF@5.1Ghz / Asus STRIX Z790 / RTX 3090 Ti STRIX LC OC / 32Go DDR4 Gskill / SSD 980 PRO M.2 1To / Asus 27' / HOTAS TM Warthog / Quest 3 / Point-ctrl v2
Avatar de l’utilisateur

hellflyer
Pilote Confirmé
Pilote Confirmé
Messages : 2177
Inscription : 03 août 2001

Re: Création de courbes personnalisés

#5

Message par hellflyer »

Psycho a écrit :Merci Hellcat :notworthy

Dans mon cas je souhaite modifier la réponse des gaz, comment déclarer cet axe ?
Tricheur ! [SMILING FACE WITH OPEN MOUTH AND COLD SWEAT][FACE WITH TEARS OF JOY][FACE WITH TEARS OF JOY][FACE WITH TEARS OF JOY][WINKING FACE]

Envoyé de mon SM-T800 en utilisant Tapatalk
Regle C6 N° 24"pas de citations, sauf si l'auteur est mort"
Image
Image

Asus Rampage IV Extreme/ I7 3930K / 2 x Asus GeForce GTX 670 DCU II - 2 Go (GTX670-DC2-2GD5)SLI /G.Skill Kit Extreme3 8 x 4 Go PC12800 Ripjaws Z CAS9 /256 GB Samsung SSD 840 PRO / Seagate Barracuda SATA III 6 Gb/s - 2 To
Avatar de l’utilisateur

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

Re: Création de courbes personnalisés

#6

Message par dimebug »

pour faire plus simple, si le but est de limiter la course physique d'un axe, ou d'en changer la courbe ou les 2 à la fois :

Code : Tout sélectionner

MapKey(&Joystick, S4, SEQ( //open the sequence EXEC( //open the first EXEC "SetSCurve(&Joystick, JOYX, 0, 0, 0 ,0, -0.8);" "SetSCurve(&Joystick, JOYY, 0, 0, 0 ,0, -0.8);" ), //close the first EXEC EXEC( //open the second EXEC "SetSCurve(&Joystick, JOYX, 0, 0, 0 ,0, 0);" "SetSCurve(&Joystick, JOYY, 0, 0, 0 ,0, 0);" ) //close the second EXEC ) //close the Sequence ); //close the MapKey
Dans cet exemple, quand je presse S4 du joystick, j'alterne entre les pleins débattement et débattement bridé

ce qu'un SetSCurve permet de configurer (les chiffres sont données a caractère d'exemple, si on veut garder le réglage par défaut, on se contente de mettre un zero...) :

Code : Tout sélectionner

SetSCurve(&Joystick, JOYX, 5, // Deadzone gauche réglée 5% 2, // Deadzone centrale réglé à 2% 5, // Deadzone droite réglée à 5% 3, // Courbe de 3, ca adouci 0 // Scale/zoom neutre, pas de limitation du débattement );
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Psycho
Pilote Philanthrope
Pilote Philanthrope
Messages : 4189
Inscription : 04 décembre 2003

Re: Création de courbes personnalisés

#7

Message par Psycho »

Bon je me met à l'édition de mes courbes.
Le bouton compile est grisé, un truc qui va pas dans mon code ?

Code : Tout sélectionner

include "target.tmh" //program startup int listXC, listYC, listXR, listYR, listGC, listGR, main() { if(Init(&EventHandle)) return 1; // declare the event handler, return on error listXC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100); listYC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100); listGC = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100); listXR = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100); listYR = LIST(0,0, 10,10, 20,20, 30,30, 40,40, 50,50, 60,60, 70,70, 80,80, 90,90, 100,100); listGR = LIST(0,25, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,75); //add initialization code here } //event handler int EventHandle(int type, alias o, int x) { DefaultMapping(&o, x); //add event handling code here } include "target.tmh" int main() { Configure(&HCougar, MODE_EXCLUDED); Configure(&T16000, MODE_EXCLUDED); Configure(&LMFD, MODE_EXCLUDED); Configure(&RMFD, MODE_EXCLUDED); if(Init(&EventHandle)) return 1; SetKBRate(32, 50); SetKBLayout(KB_FR); MapAxis(&Joystick, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&Joystick, JOYX, 0, 0, 0, 0, 0); MapAxis(&Joystick, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&Joystick, JOYY, 0, 0, 0, 0, 0); MapAxis(&Throttle, SCX, DX_XROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&Throttle, SCX, 0, 0, 0, 0, 0); MapAxis(&Throttle, SCY, DX_YROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&Throttle, SCY, 0, 0, 0, 0, 0); MapAxis(&Throttle, THR_RIGHT, DX_Z_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&Throttle, THR_RIGHT, 0, 0, 0, 0, 0); MapAxis(&Throttle, THR_LEFT, DX_ZROT_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&Throttle, THR_LEFT, 0, 0, 0, 0, 0); MapAxis(&Throttle, THR_FC, DX_SLIDER_AXIS, AXIS_NORMAL, MAP_ABSOLUTE); SetSCurve(&Throttle, THR_FC, 0, 0, 0, 0, 0); // modification des courbes MapKey(&Throttle, RDRNRM, PULSE+ EXEC("SetCustomCurve(&Joystick, JOYX, listXR);""SetCustomCurve(&Joystick, JOYY, listYR);""SetCustomCurve(&Throttle, THR_LEFT, listGR);")); MapKey(&Throttle, RDRDIS, PULSE+ EXEC("SetCustomCurve(&Joystick, JOYX, listXC);""SetCustomCurve(&Joystick, JOYY, listYC);""SetCustomCurve(&Throttle, THR_LEFT, listGC);")); } int EventHandle(int type, alias o, int x) { DefaultMapping(&o, x); }
Je n'ai pas de boutons pour l'instant, je veux juste tester les coubes.

@ Dimebug, je n'ai pas bien compris tes exemples, il faut faudra faire aussi didactique que Hellcat :emlaugh:
Où placer tes lignes dans le script, à quoi correspond le -0.8, etc...

@ Hellflyer, toi tu triches en mettant des smileys qui viennent pas de C6 vilain :boxing:
Image i5 13600KF@5.1Ghz / Asus STRIX Z790 / RTX 3090 Ti STRIX LC OC / 32Go DDR4 Gskill / SSD 980 PRO M.2 1To / Asus 27' / HOTAS TM Warthog / Quest 3 / Point-ctrl v2
Avatar de l’utilisateur

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

Re: Création de courbes personnalisés

#8

Message par dimebug »

En fait la limitation de la course de commande est déjà intégré dans target. C dans les paramètres du setscurve. Ça évite d àvoir à créer les listes et tout le bazar.

La commande peut être utilisée via un exécution dans la section du script ou tu assigné des fonctions ou touche clavier.. pas besoin de "int", "list"... C déjà intégré dans target tu saisis juste une valeur "écrasement de la courbe. Dans la gui C le paramètre scale ou zoom de l édition d axe...
Image Dresseur de cochon (sauvage)
Avatar de l’utilisateur

Psycho
Pilote Philanthrope
Pilote Philanthrope
Messages : 4189
Inscription : 04 décembre 2003

Re: Création de courbes personnalisés

#9

Message par Psycho »

oook compris.
bon du coup en attendant vos réponses, j'ai fait quelques ravitos avec le 2000C et l'entrainement paie aussi bien que la modification des courbes :shifty:
Image i5 13600KF@5.1Ghz / Asus STRIX Z790 / RTX 3090 Ti STRIX LC OC / 32Go DDR4 Gskill / SSD 980 PRO M.2 1To / Asus 27' / HOTAS TM Warthog / Quest 3 / Point-ctrl v2
Répondre

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