Compter le nombre d'appui sur une touche durant un temps donné
Posté : 05 avr. 2023, 20:15
Bonjour,
Existe-t-il une méthode simple et pas trop lourde pour compter le nombre d’appui sur une touche durant un temps donné ?
Genre... "Vous avez 1 seconde pour taper deux fois sur 'Q' " ou ... "Vous avez 5 secondes pour taper 'GHT1CDARV' "
Ça se fait ça ou pas ?
Le problème de ce script est qu'il faut assurer un Script Processing Delay très faible pour capturer la touche. De plus qu'il faut tester si la touche a été relâchée avant d'être rappuyée donc il faut au moins deux exécutions du bloc pour valider un appui sur la touche désirée (ça me semble un peu bourrin comme façon de faire).
Au départ j'avais voulu "rester enfermé" tant le bloc pour... pour faire ce que j'avais à y faire mais ça fait crasher le jeu (même avec un Script Processing Delay élevé, j'avais mis 60 pour être sûr qu'il soit terminé avant d'être ré-exécuté) :
L'idée c'est vraiment de réussir à capturer plusieurs appuis d'une touche sur un temps donné (de l'ordre d'une dizaine de seconde), mais je ne vois pas comment faire ça efficacement. La détection de l'appui c'est gérable, le faire sur un temps imparti ça me semble être une tout autre histoire.
Existe-t-il une méthode simple et pas trop lourde pour compter le nombre d’appui sur une touche durant un temps donné ?
Genre... "Vous avez 1 seconde pour taper deux fois sur 'Q' " ou ... "Vous avez 5 secondes pour taper 'GHT1CDARV' "
Ça se fait ça ou pas ?
Code : Tout sélectionner
scn ouCpasN
int elligent
begin GameMode
if (IsKeyPressed 16 == 1)
set elligent to elligent + 1
MessageEx "%g" elligent
endif
end
Le problème de ce script est qu'il faut assurer un Script Processing Delay très faible pour capturer la touche. De plus qu'il faut tester si la touche a été relâchée avant d'être rappuyée donc il faut au moins deux exécutions du bloc pour valider un appui sur la touche désirée (ça me semble un peu bourrin comme façon de faire).
Au départ j'avais voulu "rester enfermé" tant le bloc pour... pour faire ce que j'avais à y faire mais ça fait crasher le jeu (même avec un Script Processing Delay élevé, j'avais mis 60 pour être sûr qu'il soit terminé avant d'être ré-exécuté) :
Code : Tout sélectionner
scn ouCpasN
float Timeurt
float TimeurtDenvieDeMaider
begin GameMode
set Timeurt to GetSecondsPassed
set TimeurtDenvieDeMaider to GetSecondsPassed
while ( (Timeurt - TimeurtDenvieDeMaider) < 5 )
; [Code de la détection d'appui de la touche à ajouter]
set Timeurt to GetSecondsPassed
loop
MessageEx "Test OK, TiPasMort..."
end
L'idée c'est vraiment de réussir à capturer plusieurs appuis d'une touche sur un temps donné (de l'ordre d'une dizaine de seconde), mais je ne vois pas comment faire ça efficacement. La détection de l'appui c'est gérable, le faire sur un temps imparti ça me semble être une tout autre histoire.