Tutoriel de Bethesda : Variables et conditions dans Papyrus/fr

From the CreationKit Wiki
Jump to navigation Jump to search

Tutoriel de Bethesda : Variables et conditions dans Papyrus




200px Alert image.png LISEZ CETTE NOTE !

Cet article est destiné à accueillir la traduction d'un article écrit dans une autre langue et n'est pas terminé. Certaines parties sont encore en version originale, ou absentes.

Aidez-nous ! Si vous avez les connaissances nécessaires, s'il vous plaît, modifiez cet article afin que nous puissions retirer le drapeau "Traduction incomplète".


Tutoriel de Bethesda : Variables et conditions dans Papyrus/fr
Série : Tutoriels sur Papyrus, page 2
Sommaire du tutoriel
LeftArrow.pngTutoriel précédent Tutoriel suivantRightArrow.png


Présentation[edit | edit source]

Pour ce tutoriel, nous partons du principe que vous avez terminé le tutoriel Hello World. Vous apprendrez :

  • Comment créer et utiliser des variables.
  • Comment créer un commentaire, pour ajouter des notes à votre script auxquelles vous pourrez vous référer ultèrieurement.
  • Comment faire que le script agisse dans le jeu selon les valeurs de ses variables.
  • Comment utiliser une instruction conditionnelle "if-then-else" (si...alors...sinon...) pour ajouter de la logique à votre script.

Variables[edit | edit source]

Une variable peut être considérée comme un contenant permettant de stocker des informations ou des objets. Vous pouvez définir sa valeur, incrémenter ou décrémenter une valeur numérique, et vous pourrez récupérer cette valeur pour une utilisation ultérieure.

Pour notre exemple, nous allons ajouter une variable au script que nous avons créé dans le tutoriel Hello World qui nous permettra de compter le nombre de fois que notre pilier aura été activé par le joueur, et de produire chaque fois un effet différent.

Rouvrez la fenêtre de la Référence de notre pilier, et effectuez un clic droit sur "HelloWorldScript" dans l'onglet "Scripts". Sélectionnez "Edit Source" pour entrer dans la fenêtre de modification du script.

Votre script devrait ressembler à quelque chose comme ça :

 Scriptname HelloWorldScript extends ObjectReference  
 {This is my very first script!}

 Event OnActivate(ObjectReference akActionRef)
    Debug.MessageBox("Hello, World!")
 endEvent

Bien, ajoutons maintenant notre variable. Ajoutez cette ligne juste au-dessus de la ligne "Event OnActivate".

 int count  ;stores the number of times this object has been activated
  • int count ;stores the number... - int définit le type de variable. Dans notre cas il s'agit d'un nombre entier ("integer" en anglais), c'est à dire un nombre positif ou négatif, mais sans virgule.
  • int count ;stores the number... - count (compte) est le nom que nous donnons à notre variable et grâce auquel nous pourrons faire appel à elle par la suite.
  • int count ;stores the number... - Tout ce qui se trouve derrière un point-virgule (;) est considéré comme un commentaire, c'est à dire une information non prise en compte par la machine, et servant uniquement d'indication aux lecteurs du script afin de les aider à en comprendre le sens. Vous pouvez d'ailleurs modifier cette partie dès à présent, avec vos propres mots. La traduction de cette phrase serait : "stocke le nombre de fois que l'objet a été activé".

Bon, ajoutons maintenant la ligne qui permettra à notre script de compter. Entre la ligne "Event OnActivate..." et la ligne "Debug.MessageBox..." ajoutez la suivante :

 count = count + 1

Cette instruction commande à notre script d'extraire la valeur de la variable dénommée "count" et de lui ajouter 1, puis de stoker de nouveau cette valeur dans la variable "count". En d'autres termes, la variable située à gauche du signe égal (=) doit désormais contenir la valeur de l'équation située à droite du signe égal (=).

Vérifier les variables d'un script en cours de jeu[edit | edit source]

Assurez-vous que le jeu n'est pas lancé. Sauvegardez votre script, puis cliquez sur "OK" pour refermer la fenêtre de la référence. Cliquez ensuite sur le bouton de sauvegarde de la barre d'outils principale pour sauvegarder votre plugin.

Lancez le jeu et ouvrez la console (rappel : appuyez sur la touche "²"), puis tapez :

COC MolagBalVoiceCell

Tout d'abord nous allons vérifier la valeur de notre variable "count". N'ayant encore rien fait elle devrait être de 0.

Ouvrez la console (²) puis cliquez sur notre pilier. Vous verrez apparaître "WETempActivator" et un nombre entre paranthèses en haut au milieu de la console (Note du traducteur : lors de la traduction de ce tutoriel, il ne m'a pas été possible de reproduire ce message à l'identique. Au lieu de "WETempActivator" un simple " apparaissait suivi du nombre entre parenthèses. Si cela vous arrive également ne vous inquiétez pas, c'est sans incidence pour la suite du tutoriel).

À présent, tapez ceci dans la console :

ShowVars

Maintenant vous devriez voir apparaître dans la console ce qui suit :

--- Papyrus ---------------------
HelloWorldScript:
     Script state = ""
     count = 0

Vous pouvez constater que la console vous renvoie une valeur de la variable "count" égale à 0.

Fermez la console (²) et activez le pilier trois fois (en d'autres termes, faites apparaître trois fois le message "Hello, World!").

Maintenant rouvrez la console et tapez "ShowVars", et vous constaterez qu'elle vous renvoie maintenant l'information "count = 3".

Bon, et après ? Hé bien, nous pouvons utiliser cette information dans notre script pour afficher différents messages selon le nombre de fois où vous aurez cliqué sur le pilier. Quittez le jeu, et revenez à la fenêtre de modification de votre script.

Les instructions conditionnelles "if-then-else" ("si-alors-sinon")[edit | edit source]

Maintenant nous allons utiliser une "instruction conditionnelle" qui va nous permettre d'ajouter des éléments de logique au déroulement de notre script. Remplacez la ligne "Debug.MessageBox("Hello, World!")" par les lignes suivantes :

 if count == 1
    Debug.MessageBox("Hello, World!")
 elseif count == 2
    Debug.MessageBox("Hello, World. Again!")
 else
    Debug.MessageBox("Hello, World. Enough already!")
 endif

À présent nous pouvons utiliser la valeur de la variable "count" pour changer le fonctionnement de notre script. Ici, il affichera différents messages. Notez l'importance de l'utilisation du signe (==) qui vous permet de VÉRIFIER l'égalité entre deux valeurs. Vous vous souvenez peut-être que le signe (=) vous permet de DÉFINIR la valeur d'une variable. Cela peut-être trompeur au début, et même les codeurs expérimentés pourront se tromper entre les deux signes et s'interroger lorsque leur script ne fonctionnera pas.

Encore une fois :

  • Un seul signe égal (=) signifie : prendre la valeur à droite pour définir la valeur de la variable à gauche.
  • Un double signe égal (==) signifie : vérifier si ce qui se trouve à gauche est égal à ce qui se trouve à droite.

Votre script devrait maintenant ressembler à ça :

 Scriptname HelloWorldScript extends ObjectReference  
 {This is my very first script!}

 int count  ;stores the number of times this object has been activated

 Event OnActivate(ObjectReference akActionRef)
    count = count + 1
    
    if count == 1
       Debug.MessageBox("Hello, World!")
    elseif count == 2
       Debug.MessageBox("Hello, World. Again!")
    else
       Debug.MessageBox("Hello, World. Enough already!")
    endif
 endEvent

Relancez le jeu, transportez-vous dans la cellule, et activez le pilier. Vous devriez voir trois différents messages à chaque fois que vous l'activez !


Pour plus d'informations[edit | edit source]

  • Pour plus d'informations sur les types de variables simples que vous pouvez utiliser (comme "int" - on les appelle "Literals"), voir la rubrique "Literals Reference".
  • Pour plus d'informations sur les opérateurs (=, +, etc.), voir la rubrique "Operator Reference".
  • Pour plus d'informations sur les instructions telles que if-then-else, voir la rubrique "Statement Reference".


LeftArrow.png Tutoriel précédent Sommaire du tutoriel Tutoriel suivant RightArrow.png



Langues : English  • français • 日本語 • 한국어 • polski • русский