[Scripts] Effectuer différentes actions en fonction du nombre de "clic" d'activation

Vous trouverez ici les conseils indispensables pour bien modder et maîtriser les outils de modding des jeux.
Répondre
Avatar du membre
Gerauld
Confrère
Messages : 2439

Effectuer différentes actions en fonction du nombre de "clic" d'activation

Message par Gerauld »

Un petit squelette de script permettant de lancer des bouts de scripts différents suivant le nombre d'appuis sur la touche activation pendant un temps déterminé.

Par exemple, on peut imaginer un fonctionnement alternatif pour un coffre :
- 1 appui : fonctionnement normal
- 2 appuis : le joueur prend tout ce qu'il y a dans le coffre
- 3 appuis : tous les objets non équipés du joueur vont dans le coffre.

Autre exemple :
Sac de couchage :
- 1 appui : dodo
- 2 appuis : le sac va dans l'inventaire.

La tempo du script qui suit est fixée à 0.5 secondes. C'est le temps à partir de la première activation durant lequel le script compte les appuis. Cela peut être modifié sans soucis.

Le script avec les commentaires :

Code : Tout sélectionner

event oninit()
      self.blockactivation(true) ;je bloque l'activation normale de l'objet pour la remplacer par celle du script
endevent

auto state dep; je déclare l'état "attente" comme étant l'état par défaut.

Event OnActivate(ObjectReference akActionRef)
   gotostate("oneclick") ; j'ai effectué mon premier clic donc à partir de maintenant, pour le temps choisi en dessous (0.5 secondes, je change d'état et compte les clics. Le changement d'état m'évite aussi une deuxième activation.
   clic = 1 ;j'ai appuyé une fois
   utility.wait(0.5)   ;j'attend 0.5 secondes. Pendant ce temps c'est l'event de l'état "occupé" qui compte les clics. A la fin de la tempo, je regarde combien il y a eu de clics et déclenche le mode de fonctionnement désiré.
   if clic == 1
      ;premier mode de fonctionnement : C'est ici qu'il faudra mettre votre bout de script

   elseif clic == 2
      ;deuxième mode de fonctionnement  : C'est ici qu'il faudra mettre votre bout de script
   else
      ;troisième mode de fonctionnement - ne pas mettre de condition sur le dernier au cas où le joueur fait plus de clics que nécessaire.
   endif
   clic = 0
   gotostate("dep") ;j'ai fini, je revient donc à l'état "dep"
endevent 
endstate   ;fin d'état "dep"

state oneclick ; début d'état "oneclick"
   Event OnActivate(ObjectReference akActionRef) ;c'est cet event qui est déclenché dans l'état oneclick
      clic = clic + 1 ;je compte mes clics et rien d'autre
   endevent
endstate
Donc, c'est une petite ressource libre d'utilisation pour vous aider dans vos mods.
Un petit merci dans le lisez-moi de votre futur mod serait apprécié même s'il n'est pas obligatoire. ;)
Avatar du membre
sagittarius22
Moddeur émérite | Traducteur chevronné
Moddeur émérite | Traducteur chevronné
Messages : 2948

Re: Activation multiple pour plusieurs modes de fonctionneme

Message par sagittarius22 »

Excellent, je me demandais justement comment on faisait ce genre de choses, merci beaucoup pour le partage!
Moddeur, Testeur et Traducteur
Avatar du membre
Gerauld
Confrère
Messages : 2439

Re: Activation multiple pour plusieurs modes de fonctionneme

Message par Gerauld »

De rien.
En fait, ce script était déjà en ligne dans ce TUTO pour les débutants dans le chapitre 7 concernant l'emploi des states.
A ton tour de poster un script généraliste ici. ;)
Avatar du membre
sagittarius22
Moddeur émérite | Traducteur chevronné
Moddeur émérite | Traducteur chevronné
Messages : 2948

Re: Activation multiple pour plusieurs modes de fonctionneme

Message par sagittarius22 »

C'est fait ^^
Moddeur, Testeur et Traducteur
Répondre

Retourner vers « Tutoriels et conseils de réalisation »