Différences entre les versions de « Creation Kit : Scripter »

De Wiwiki
Aller à la navigation Aller à la recherche
(Propriétés)
(Écrire le script)
Ligne 58 : Ligne 58 :


[[File:CKPropertyWindowFilled.png]]
[[File:CKPropertyWindowFilled.png]]
=Écrire le script=
Maintenant que nous avons ajoutés cette propriété, nous devons ajouter le script lui même afin de faire quelque chose. Faites un clic droit sur le nom du script et sélectionnez "Edit Source" pour ouvrir l'éditeur de script.
[[File:CKScriptWindowWithPropertyAdded.png]]
La ligne supérieure (code>Scriptname GSQThiefScript extends ObjectReference</code>) est la base que l'éditeur a créé pour nous. Quelques lignes en dessous se trouve le texte de la propriété que nous venons de créer.
En dessous, collez la morceau de code suivant:
<code lang="papyrus">
Event OnDeath(Actor killer)
TutorialQuest.SetStage(20)
EndEvent
</code>
Si vous êtes assez familier avec la programmation ou le script pour comprendre ce que vous venez de coler, vous pouvez directement passer a la section "Scripter l'Amulette". Pour les autre, on va regarder ça ligne par ligne
* <code>Event OnDeath(Actor killer)</code>
** Cette ligne déclare que le script répondra ala mort de l'acteur. Quand l'acteur meurt, le jeu va executer le code a partir de ce point. Le jeu mettra celui qui à tué l'acteur dans la variable "killer", mais nous ne l'utilisons pas.
* <code> TutorialQuest.SetStage(20)</code>
** Tout comme nous avons appelé <code>SetStage</code> sur la quête dans le tutoriel des dialogues, ceci va mettre la quête dans al propriété TutoriaQuest a l'étape 20.
** Nous indentons pour la lisibilité.
* <code>EndEvent</code>
** Ceci marque la fin de notre gestion de la mort de l'acteur.
Sélectionnez "Save" dans le menu fichier (ou appuyez sur Ctrl-S) et l'éditeur va tenter de compiler votre script. Une fenêtre de sortie va apparaitre -- si votre script est sintaxiquement correct, elle devrais ressembler a ceci:
[[File:CKCompilerOutputGood.png]]
Si vous voyez autre chose, vous avez fait une erreur. Try Again!
Une fois finis, fermez la fenêtre de script et la fenêtre d'acteur, et sauvegardez votre plugin. Maintenant, il faut s'occupper de l'amelette elle même.


<!--
<!--


=Writing the Script=
Now that we've added this property, we should add some actual script to do something with it! Right-click on the script name and select "Edit Source" to bring up the script editor.


[[File:ScriptWindowWithPropertyAdded.png]]


The top line (<code>Scriptname GSQThiefScript extends ObjectReference</code>) is boilerplate that the editor made for us when we created the script. A few lines below that is the textual version of the property we made.  
The top line (<code>Scriptname GSQThiefScript extends ObjectReference</code>) is boilerplate that the editor made for us when we created the script. A few lines below that is the textual version of the property we made.  
Ligne 107 : Ligne 138 :
Open up the script, and we're going to add an event to it. The amulet can't die (obviously), but we do want to know when the player picks it up. Our event script will look like this:  
Open up the script, and we're going to add an event to it. The amulet can't die (obviously), but we do want to know when the player picks it up. Our event script will look like this:  


<source lang="papyrus">
<code>
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer)
Event OnContainerChanged(ObjectReference newContainer, ObjectReference oldContainer)
if (newContainer == Game.GetPlayer())
if (newContainer == Game.GetPlayer())
Ligne 113 : Ligne 144 :
endif
endif
EndEvent
EndEvent
</source>
</code>


There a few things to note in this script:
There a few things to note in this script:

Version du 21 février 2012 à 10:59

Travaux intenses
Travaux intenses
Cet article est actuellement en travaux intensifs par Jupotter depuis le 13/02/2012.
Il est fortement déconseillé de modifier actuellement cet article
.
Si vous voulez participer indirectement à cet article vous pouvez créer une discussion (voir onglet discussion ci-dessus), ou utiliser le forum afin de coordonner les diverses attentes.
Il est possible que cet article ait été protégé par un administrateur


Tutoriel traduit du wiki officiel: Original

Résumé

Ce tutoriel va vous montrer comment utiliser les scripts pour faire avancer la quête suivant les actions du joueur. On a déjà vu comment scripter un dialogue, mais ici, nous allons voir comment attacher n'importe quel script a un acteur ou a un objet.

Vous allez apprendre:

  • Les généralités sur le fonctionnement des scripts et comment ils s'attachent aux objets dans le Creation Engine.
  • Comment répondre a un évènement dans le nouveau langage de scripts.


Papyrus

Le langage de scripts utilisé par le Creation Kit est appelé Papyrus (d'après ce qui compose les parchemins). Les scripts Papyrus sont de simple fichier texte qui sont compilés en bytecode que le jeu exécute au runtime.

CKNewFeature.jpg Le nouveau système est similaire au TESScript, mais requière une manière de penser légèrement différente. Vous ne pouvez plus directement manipuler les objets dans le mode; il y a maintenant des thread, votre script peut alors être interrompus en fonctionnement; il est beaucoup plus script en ce qui concerne la syntaxe (e.g. parenthèses). Pour faire court, il est beaucoup plus proche de "vrais" langages de programmation comme le Lua ou Python. Si vous êtes familier avec le TESScript, vous devriez jeter un œil a notre guide de transition.

La première chose que nous allons faire est ajouter un script sur notre voleur afin que lorsqu'il est tuée, la quête progresse.

Ajouter des Scripts

Ouvrez l'acteur GSQThief que nous avons créé. Nous allons nous intéresser a la section "Papyrus Scripts" de la fenêtre.

CKActorWindowScriptsArea.png

Cliquez sur le bouton "Add". Cela va ouvrir une liste de scripts que nous pouvons potentiellement ajouter a cet acteur. Mais nous sommes en trains d'en créer en nouveau, double-cliquez donc sur "[New Script]" en haut de la liste.

CKAddScriptWindow.png

Cela ouvrira encore une fenêtre, où nous pouvons nommer notre script. Mettez donc "GSQThiefScript" puis appuyez sur OK.


CKAddNewScriptWindow.png

Votre script est maintenant ajouté a l'acteur. Mais, comme on peut s'y attendre, il ne fait encore rien.

CKScriptAdded.png


Propriétés

Double cliquez sur le script pour ouvrir la fenêtre des propriétés de ce script. De base, les scripts ne savent rien a propos des objets du jeu autre que celui auquel ils sont attachés. Nous utilisons les propriétés afin d'attaches des objets ensemble pour qu'ils puissent s'affecter les un les autres. Dans notre exemple, nous voulons passer GSQ01 à l'étape 20 lorsque le voleur est tué, il faut donc que le script sache quelle quête nous intéresse.

CKEmptyPropertiesWindow.png

Appuyez sur "Add Property" en bas à gauche de la fenêtre. C'est ici que nous allons créer la propriété. Dans le champ Type, sois choisissez "Quest" dans le menu, sois tapez le mot "Quest". Mettez "TutorialQuest" dans le champ Name, et laissez le reste vide.

CKAddScriptPropertyWindow.png

Nous avons maintenant dit au script que il doit utiliser quelque chose qui s’appelle "TutorialQuest", mais il ne sait pas de quelle quête il s'agit. Cliquez sur la propriété que nous venons de créer dans la liste, et cliquez sur "Edit Value" a droit de la fenêtre. Un nouveau menu va apparaitre, listant toute les quêtes du jeu. Choisissez "GSQ01" dans le menu, et appuyez sur OK.

CKPropertyWindowFilled.png

Écrire le script

Maintenant que nous avons ajoutés cette propriété, nous devons ajouter le script lui même afin de faire quelque chose. Faites un clic droit sur le nom du script et sélectionnez "Edit Source" pour ouvrir l'éditeur de script.

CKScriptWindowWithPropertyAdded.png

La ligne supérieure (code>Scriptname GSQThiefScript extends ObjectReference) est la base que l'éditeur a créé pour nous. Quelques lignes en dessous se trouve le texte de la propriété que nous venons de créer.

En dessous, collez la morceau de code suivant:

Event OnDeath(Actor killer) TutorialQuest.SetStage(20) EndEvent

Si vous êtes assez familier avec la programmation ou le script pour comprendre ce que vous venez de coler, vous pouvez directement passer a la section "Scripter l'Amulette". Pour les autre, on va regarder ça ligne par ligne

  • Event OnDeath(Actor killer)
    • Cette ligne déclare que le script répondra ala mort de l'acteur. Quand l'acteur meurt, le jeu va executer le code a partir de ce point. Le jeu mettra celui qui à tué l'acteur dans la variable "killer", mais nous ne l'utilisons pas.
  • TutorialQuest.SetStage(20)
    • Tout comme nous avons appelé SetStage sur la quête dans le tutoriel des dialogues, ceci va mettre la quête dans al propriété TutoriaQuest a l'étape 20.
    • Nous indentons pour la lisibilité.
  • EndEvent
    • Ceci marque la fin de notre gestion de la mort de l'acteur.

Sélectionnez "Save" dans le menu fichier (ou appuyez sur Ctrl-S) et l'éditeur va tenter de compiler votre script. Une fenêtre de sortie va apparaitre -- si votre script est sintaxiquement correct, elle devrais ressembler a ceci:

CKCompilerOutputGood.png

Si vous voyez autre chose, vous avez fait une erreur. Try Again!

Une fois finis, fermez la fenêtre de script et la fenêtre d'acteur, et sauvegardez votre plugin. Maintenant, il faut s'occupper de l'amelette elle même.