Page 1 sur 1
Répétition touche script TARGET
Publié : lun. juin 25, 2018 8:17 pm
par Flow
Bonjour tout le monde,
Je cherche un expert en script target / Falcon BMS pour m'aider
Je m'explique : j'aimerais ne pas lâcher le manche au profit de la souris pour deux opérations, qui sont régler la pression de l'altimètre et le cap du poignard du HSI.
Deux options : affecter la touche en DirectX ou faire un appel clavier avec Target.
Je veux programmer le DMS shifté avec :
Haut : augmenter pression altimètre
Bas : diminuer pression altimètre
Droite : augmenter cap poignard HSI
Gauche : diminuer cap poignard HSI
Quand je mappe les fonctions en DirectX par le keyfile, je dois appuyer / relâcher pour chaque incrément. C'est faisable pour la pression altimètre, mais pour le cap c'est un peu plus compliqué...
Du coup je me suis dit que j'allais le programmer avec une répétition de touche. J'ai affecté des touches aux fonctions suivantes :
SimHsiHdgIncBy1
SimHsiHdgDecBy1
SimAltPressIncBy1
SimAltPressDecBy1
J'ai ensuite créé un script avec la ligne suivante :
Code : Tout sélectionner
define SimAltPressIncBy1 REXEC(0, 20, "ActKey(PULSE+KEYON+L_SHIFT+'E');")
define SimAltPressDecBy1 REXEC(0, 20, "ActKey(PULSE+KEYON+L_SHIFT+'R');")
define SimHsiHdgDecBy1 REXEC(0, 20, "ActKey(PULSE+KEYON+L_SHIFT+'Z');")
define SimHsiHdgIncBy1 REXEC(0, 20, "ActKey(PULSE+KEYON+L_SHIFT+'A');")
Dans un éditeur de texte, je vois bien que la touche est répétée toutes les 20ms, mais dans BMS il exécute l'action une seule fois puis s'arrête.
Je ne comprend pas trop pourquoi... Pourtant la programmation du DMS shifté est libre en DirectX, donc ça ne vient pas de là... Et l'action est bien exécutée, mais une seule fois.
Voilà, je ne sais pas si c'est clair, si jamais il faut plus de précisions, n'hésitez pas à les demander, je ferais de mon mieux.
Flow.
Re: Répétition touche script TARGET
Publié : lun. juin 25, 2018 8:45 pm
par dimebug
alors a mon avis, y'a peut être un souçis de timing, également lié a la fréquence de scan de BMS. rexec moins vite car un pulse dur 25ms par défaut, hors la tu appuis automatiquement avant que le pulse soit finis. Du coup si BMS scan un peu lentement, lui ne vois qu'une touche pressé en continue la ou ton editeur de texte a le temps de chopper chaque relâchement.
essaye en mettant + de temps et en différenciant les "handles"
define SimAltPressIncBy1 REXEC(0, 40, "ActKey(PULSE+KEYON+L_SHIFT+'E');")
define SimAltPressDecBy1 REXEC(0, 40, "ActKey(PULSE+KEYON+L_SHIFT+'R');")
define SimHsiHdgDecBy1 REXEC(1, 40, "ActKey(PULSE+KEYON+L_SHIFT+'Z');")
define SimHsiHdgIncBy1 REXEC(1, 40, "ActKey(PULSE+KEYON+L_SHIFT+'A');")
Re: Répétition touche script TARGET
Publié : lun. juin 25, 2018 8:55 pm
par Flow
Super, merci pour ton retour, je vais tenter ça et donner un feedback demain.
Ce soir ce ne sera pas possible.
Mais merci d'avoir regardé mon soucis
En tapant mon premier post je me suis dit que je n'avais pas essayé de baisser le rythme du REXEC, et ce que tu me dis tend à le confirmer.
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 7:28 am
par Flow
Ca fonctionne ! Merci Dimebug !
C'était bien un problème d'échantillonnage du coup, carrément de Windows je pense.
20ms ça fait pas assez
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 9:22 am
par Flow
Dimebug, nouvelle question. Je ne crée pas un nouveau post pour ne pas spécialement polluer le forum.
Sur mon Warthog, j'ai un axe qui contrôle le zoom du TGP. Cet axe est piloté par le China Hat du Throttle, et est déclaré sur l'axe DirectX DX_THROTTLE_AXIS avec le code suivant :
Code : Tout sélectionner
define RangeDecrease AXIS(DX_THROTTLE_AXIS, -500, 20)
define RangeIncrease AXIS(DX_THROTTLE_AXIS, 500, 20)
Mais du coup au début, l'axe est centré, et le premier réglage saute vers un zoom "moitié". Je dois d'abord le ramener à 0.
Le top aurait été que la position de cet axe virtuel soit à 0 lors de sa création, et pas à 50%.
Je ne sais pas si c'est clair ?
Si tu as une idée, ou toute autre personne, je suis tout ouï
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 1:49 pm
par dimebug
au démarrage du script, a sa première boucle tu dois pouvoir forcer la valeur par défaut (un peut comme on definis la valeur d'un flag au demarrage), mais des que l'axe sera bougé, le control reviendra a l'axe physique.
Apres y'a sans doute plusieurs façon de faire
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 1:53 pm
par Flow
Il n'y a pas d'axe physique sur le Warthog pour cet axe DirectX en fait... Du coup il n'y a pas ce problème là.
J'ai essayé de faire un trim et ensuite de bouger l'axe au trim, mais rien n'y fait, il est toujours à 50%.
Voici ce que j'ai essayé :
Code : Tout sélectionner
MapAxis(&Throttle, ANT_ELEV, DX_THROTTLE_AXIS);
EXEC("TrimDXAxis(DX_THROTTLE_AXIS, 1024);");
Et aussi :
Code : Tout sélectionner
MapAxis(&Throttle, ANT_ELEV, DX_THROTTLE_AXIS);
ActKey(EXEC("TrimDXAxis(DX_THROTTLE_AXIS, 1024);"));
Mais ça ne fonctionne pas :(
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 2:05 pm
par dimebug
le trim n'est de toute façon pas la bonne démarche car avec des valeurs aussi extreme il va te priver de 50% de la course réelle.
Pourquoi tu utilises pas plutôt les touches ou btn DX , surtout que tu pilotes l'axe depuis des boutons...
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 2:13 pm
par Flow
Il y a des appels DirectX pour cette fonction ? Je ne l'ai pas vu.
C'est pour F4 BMS, et dans le profil de Morphine, il crée un axe qu'il contrôle ensuite avec deux boutons, et l'axe est ensuite affecté à l'axe analogique "Range Knob" :
Je ne me passe pas de 50% de mon axe, car je le contrôle ensuite avec un trim également :
Code : Tout sélectionner
define TGPZoomDecrease REXEC(2, 50, "TrimDXAxis(DX_THROTTLE_AXIS, -50);")
define TGPZoomIncrease REXEC(2, 50, "TrimDXAxis(DX_THROTTLE_AXIS, 50);")
A la base c'était fait comme ça :
Code : Tout sélectionner
define TGPZoomDecrease AXIS(DX_THROTTLE_AXIS, -500, 20)
define TGPZoomIncrease AXIS(DX_THROTTLE_AXIS, 500, 20)
Mais en cherchant suite à ta remarque, il y a en effet les deux appels suivants :
SimRangeKnobUp
SimRangeKnobDown
Je pense qu'il était passé par un axe pour le problème de répétition zoom avant / arrière, comme vu plus haut pour le réglage HSI.
Car sinon pour faire un zoom il faut appuyer / lâcher / appuyer / lâcher / ...
Vu que j'ai réglé l'histoire de répétition des touches, je vais tenter la même chose ici sans passer par un axe.
Bref, notre échange m'a mis sur une piste différente
Merci.
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 2:20 pm
par Flow
Je vais tenter ça du coup.
J'y ai affecté SHIFT + T et SHIFT + Y
Code : Tout sélectionner
define TGPZoomDecrease TEMPO(PULSE+KEYON+L_SHIFT+'T', REXEC(0, 40, "ActKey(PULSE+KEYON+L_SHIFT+'T');"), 500)
define TGPZoomIncrease TEMPO(PULSE+KEYON+L_SHIFT+'Y', REXEC(0, 40, "ActKey(PULSE+KEYON+L_SHIFT+'Y');"), 500)
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 2:54 pm
par dimebug
y'a toujours plein de possibilités :)apres tu peux aussi bricoler du coté de Falcon, mais sur le hotas par defaut tu as deja le control de zoom du tgp non ? (je confond peut etre avec le A-10C qui l'a a coup sur).
Re: Répétition touche script TARGET
Publié : mar. juin 26, 2018 3:49 pm
par Flow
Le cougar l'a peut-être vu qu'il a un axe analogique supplémentaire ?
Le Warthog n'a pas assez d'axes analogiques (il en manque 1).