Page 1 sur 1

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

Posté : 05 sept. 2012, 20:50
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. ;)

Re: Activation multiple pour plusieurs modes de fonctionneme

Posté : 05 sept. 2012, 20:53
par sagittarius22
Excellent, je me demandais justement comment on faisait ce genre de choses, merci beaucoup pour le partage!

Re: Activation multiple pour plusieurs modes de fonctionneme

Posté : 05 sept. 2012, 21:14
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. ;)

Re: Activation multiple pour plusieurs modes de fonctionneme

Posté : 05 sept. 2012, 21:30
par sagittarius22
C'est fait ^^