Compter le nombre d'appui sur une touche durant un temps donné

Vous trouverez ici les tutoriels et l'entraide sur les outils et techniques de modding spécifiques à Fallout New Vegas.
machiavélique
Testeur aspirant | Moddeur aspirant
Testeur aspirant | Moddeur aspirant
Messages : 24

Re: Compter le nombre d'appui sur une touche durant un temps donné

Message par machiavélique »

Je pense que chatGPT ne fait pas la différence entre New Vegas et Fallout 4. De mon côté il connaît pas Game.GetPlayer() ni Game.GetGameTime() et refuse de sauvegarder le script. Encore plus inquiétant encore c'est que le GeckWiki ne connaît pas non plus ces objets pour New Vegas, en revanche... si on recherche pour Fallout 4 on trouve une foule d'informations.

Pour les Events par contre c'est assez similaire à New Vegas (Mis à part que le OnInit() n'existe pas dans les Event Handler de New Vegas et n'est introduit par aucun plugin selon mes recherches)


Pour la solution, avec l'aide du OnKeyDown (fourni par le JIP NVSE Plugin) on peut faire comme ça en 2-3 scripts :

Déclarer au préalable une variable Globale "CountKey"

1er script :

Code : Tout sélectionner

scn MainScript ; Le script principal à partir duquel on souhaite compter le nombre d’appuis sur une touche.
 
int IwantToStartToCountHowOftenIPressQduring10Seconds

Begin GameMode

  ; Ici le code préalable qui fait qu'à un moment on va passer "IwantToStartToCountHowOftenIPressQduring10Seconds" à 1 ou le remettre à 0.
   
   if (IwantToStartToCountHowOftenIPressQduring10Seconds)
      SetEventHandler "OnKeyDown:16" CountQkeyPressed
      StartQuest QuestTimingForPressingKey ; Optionnel
   else
      RemoveEventHandler "OnKeyDown:16" CountQkeyPressed
      StopQuest QuestTimingForPressingKey ; Optionnel
   endif
   

end

2ème script

Code : Tout sélectionner

scn CountQkeyPressed ; Un script de type "Object" qui aura pour but de compter le nombre de fois qu'on appuie sur la touche "Q" en incrémentant la variable Globale "CountKey". 

int keyCode

begin function {keyCode}

	set CountKey to CountKey + 1

end function


3ème script (optionnel, peut être inclus dans le script principal) :

Code : Tout sélectionner

Scn TimingForPressingKey ; Un script de type "Quest", inactif par défaut, attaché à une quête "QuestTimingForPressingKey", et qui gèrera le temps imparti pour appuyer plusieurs fois sur une touche (un Script Processing Delay de 0.2 devrait suffire).

float timer


Begin GameMode

   if timer < 10
      set timer to timer + GetSecondsPassed
   else
      set timer to 0
      
      ; ... et faire ce qui est prévu au bout du temps imparti.
      
      RemoveEventHandler "OnKeyDown:16" CountQkeyPressed
      set CountKey to 0
      StopQuest QuestTimingForPressingKey
   endif
   
end
L'avantage avec l'Event "OnKeyDown", c'est que même si on reste appuyé il ne comptera la touche qu'une seule fois. Donc y'a strictement rien besoin de faire en plus, le seul bémol est qu'un mod utilisant ces scripts requerra nécessairement le JIP NVSE Plugin (Mais c'est un grand classique, il est déjà utilisé dans pas mal de mods).

En tout cas ça marche ! Je ne perds pas un seul appui même en appuyant très vite. Le seul hic c'est que la détection des touches se fait en qwerty (rien de bien dramatique mais il faut le savoir...)

Retourner vers « Modder Fallout New Vegas »