Forum WTeam
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Forum WTeam

Le site des moddeurs 100% francophone.
 
AccueilPortailGalerieRechercherDernières imagesS'enregistrerConnexion
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

 

 [TUTO] Espionner conversation de PNJs

Aller en bas 
2 participants
AuteurMessage
Drace
Magicien
Drace


Masculin Nombre de messages : 75
Age : 34
Date d'inscription : 01/08/2008

[TUTO] Espionner conversation de PNJs Empty
MessageSujet: [TUTO] Espionner conversation de PNJs   [TUTO] Espionner conversation de PNJs Icon_minitimeLun 12 Avr 2010, 13:11

Ce tuto est le résultat de l'aide apporté par Mike89 lorsque je n'arrivais pas à le faire. Je part du principe que vous savez créer une quête, un package et un script

Nous utiliserons :
-1 quête
-1 script de quête
-2 scripts d'objet (PNJ)
-3 markers
-2 packages


I- Créez une quête :


-Nommez la quête "TutoConvers"
-Dans l'onglet "conversation", créez deux nouveaux sujets. Appelez les "Bonjour1 " et "Bonjour2 ".
-Pour lancer la conversation il faudra que vous soyez au stage 10 de la quête, faites donc comme vous voulez, PNJ ou MessageBox.
-Nous reviendrons plus tard dans cet onglet.

II- Les markers :


-Sélectionnez la Cell voulu.
-Dans "Object Window" => "WorldObjects" => "Static", sélectionnez "XMarkerHeading " et placez-le sur la Cell à l'endoit où le PNJ1 se rendra.
-Double cliquez et entrez comme référence : PNJ1Marker
-Faites de même une deuxième fois pour le PNJ2 en nommant la référence : PNJ2Marker .
-N'éloignez pas trop ces deux markers.
-Toujours dans "Static", sélectionnez "XMarker " et déposez le à une distance proche des deux autres (cela indiquera l'endroit approximatif où le joueur se trouvera pour écouter la conversation). Puis nommez le "PlayerMarker "

III- Organiser les packages :


-Créer 1 PNJ et déposez le dans la Cell. Nommez sa référence "PNJ1Ref ".
-Retournez sur sa page de création et allez dans"AI" puis créez un nouveau package.
-Nommez le ConversPNJ1aPNJ2.
-Dans "Package Type" choisissez "Travel" et cochez "Skip Fallout Behavior" comme Flag.
-Délimiter les heures puis programmez les conditions ainsi :
-GetQuestVariable ; Quest:TutoConvers ; <1
-GetStage ; Quest:TutoConvers ; =10
Le package sera actif donc seulement si le stage de la quête est à 10 et que la variable et inférieure à 1.
-Dans l'onglet "Location" => "Near Reference" choisissez la Cell et le marker où le PNJ se rendra pour la conversation, c'est à dire PNJ1Marker
-Recommencez cela pour le PNJ2 en nommant sa référence "PNJ2Ref " et le package "ConversPNJ2aPNJ1".


Dernière édition par Drace le Lun 12 Avr 2010, 13:56, édité 4 fois
Revenir en haut Aller en bas
Drace
Magicien
Drace


Masculin Nombre de messages : 75
Age : 34
Date d'inscription : 01/08/2008

[TUTO] Espionner conversation de PNJs Empty
MessageSujet: Re: [TUTO] Espionner conversation de PNJs   [TUTO] Espionner conversation de PNJs Icon_minitimeLun 12 Avr 2010, 13:11


IV- Création des scripts d'objet :


-Allez dans "Gameplay" => "Edit script" => "New", sélectionnez "Object" comme type de script puis copier ce script :
Spoiler:

-Sélectionnez le PNJ1 dans "Object Window" puis dédié lui le script.
-Refaites la même démarche en copiant ce script :
Spoiler:

-Sélectionnez le PNJ2 dans "Object Window" puis dédié lui le script.

V- Création des scripts de quête :


-Allez dans "Gameplay" => "Edit script" => "New", sélectionnez "quest" comme type de script puis copier ce script :
Spoiler:

-Enregistrez le tout puis retournez dans votre quête "TutoConvers" et dédiez lui ce script.

VI- Programmer la Conversation :


-Vous êtes donc dans votre quête.
-Allez dans l'onglet "Conversation" pour retrouver vos sujets.
-Commencez par "Bonjour1" :
-Condition : GetIsId ; NPC: PNJ1 ; ==1
-Dans "Link To" séléctionnez "Bonjour2", dans "Next Speaker" laisser "Target".
-Dans "Result script" mettez : set TutoConvers.Convo to 1
-Puis "Bonjour2" :
-Condition : GetIsId ; NPC: PNJ2 ; ==1
GetQuestVariable ; Quest:TutoConvers ; ==1
-Dans "Link From" sélectionnez "Bonjour1", dans "Next Speaker" laisser "Target".
-Dans "Result script" mettez : set TutoConvers.MoveAway to 1

Voilà ! Essayez d'écouter la conversation. En espérant que cela marche pour vous, sinon relisez bien le tuto, il est possible que pour des manipulations a faire pour chaque PNJ vous ayez mal écrit la référence.
Revenir en haut Aller en bas
Mike89
Maître ArchipelModeur
Maître ArchipelModeur
Mike89


Masculin Nombre de messages : 3151
Age : 68
Date d'inscription : 06/03/2007

[TUTO] Espionner conversation de PNJs Empty
MessageSujet: Re: [TUTO] Espionner conversation de PNJs   [TUTO] Espionner conversation de PNJs Icon_minitimeLun 12 Avr 2010, 17:58

Merci Drace pour ce tuto.

En le relisant, je peux te suggérer quelques améliorations.

Les Doonce que tu utilises dans les scripts suggèrent deux remarques :

A) Les doonce finaux sur les scripts dans les OnPackageEnd sont inutiles si tu as bien paramétré les conditions de lancement du package. En ce cas le package ne se relancera pas lors des évaluations futures de l'AI de chaque acteur. En particulier, si tu changes d'étape, il suffit de tester si le stage est inférieur à cette valeur ;

B)Lorsque la quête ne sert plus, il faut l'arrêter (StopQuest, et startQuest pour en lancer ou relancer une). Cela a l'avantage de ne plus faire tourner le script de quête, tout en conservant les variables de quête en l'état (mais modifiables par d'autres scripts), et contribue à améliorer la fluidité du jeu... Cependant, cela ne vaut que si la quête s'arrête en même temps que l'utilité du script. Sinon on ne peut pas stopper la quête, et le doonce reste nécessaire.
En ce cas deux possibilités :
1) penser à ralentir le script en l'exécutant moins souvent que les 5 secondes par défaut ;
2) s'il reste de nombreuses étapes de quêtes longues à effectuer, il peut être intéressant de stopper la quête pour stopper le script et d'en starter une nouvelle, qui prend le relai pour une nouvelle phase du scénario.
Cette dernière technique peut aussi être utilisée pour éviter d'avoir des scripts très longs. C'est pourquoi un scénario long est découpé en quête, afin d'en optimiser les scripts et pouvoir les stopper.

Le découpage en quêtes et étapes est aussi utile pour découper les dialogues (pense au théâtre : une pièce est découpée en actes et en scènes : unité de temps, de lieu, d'action. Ce principe ancien du théâtre classique est bien adapté aux jeux de rôles comme Oblivion).


Dernière édition par Mike89 le Lun 12 Avr 2010, 18:09, édité 1 fois
Revenir en haut Aller en bas
Drace
Magicien
Drace


Masculin Nombre de messages : 75
Age : 34
Date d'inscription : 01/08/2008

[TUTO] Espionner conversation de PNJs Empty
MessageSujet: Re: [TUTO] Espionner conversation de PNJs   [TUTO] Espionner conversation de PNJs Icon_minitimeLun 12 Avr 2010, 18:06

Merci pour tes remarques et effectivement j'aurais dû faire comme tu le dit, mais je suis novice en script et donc j'ai posté ce que je savais lol que tu m'a appris d'ailleurs.

Pour stopquest personnellement je les stoppe dans les stages car c'est pas très long comme quêtes que j'utilise.

Avec ce que tu as ajouté, ceux qui le lieront auront les informations nécessaire ^^
Revenir en haut Aller en bas
Mike89
Maître ArchipelModeur
Maître ArchipelModeur
Mike89


Masculin Nombre de messages : 3151
Age : 68
Date d'inscription : 06/03/2007

[TUTO] Espionner conversation de PNJs Empty
MessageSujet: Re: [TUTO] Espionner conversation de PNJs   [TUTO] Espionner conversation de PNJs Icon_minitimeLun 12 Avr 2010, 18:14

Oui, ton tuto est bon. Mes remarques suggèrent une optimisation seulement si nécessaire.
J'ai modifié le point A. En effet, le AddScript package et DeleteScriptPackage sont des gestions dynamiques des scripts, qui ne s'appliquent pas aux packages créés et ajoutés à l'AI d'un acteur dans le TESC. C'est une autre façon de lancer des packages et de les retirer en cours de jeu.
Par contre, la condition de lancement d'un package dans le jeu (mise dans TECS) doit être murement réfléchie pour interdire sa relance lorsqu'il devient inutile. Cela permet de libérer le PNJ pour lui faire faire autre chose, dans sa liste de priorités de son AI.
Revenir en haut Aller en bas
Contenu sponsorisé





[TUTO] Espionner conversation de PNJs Empty
MessageSujet: Re: [TUTO] Espionner conversation de PNJs   [TUTO] Espionner conversation de PNJs Icon_minitime

Revenir en haut Aller en bas
 
[TUTO] Espionner conversation de PNJs
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [TUTO] Les bases du script
» Demande de tuto .
» [TUTO] Mon premier script
» [TUTO] Dialogue et quête
» Pb Plugin Niftools avec Blender 2.59

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum WTeam :: Public :: Tutos TESCS2 Oblivion :: Les scripts, dialogues et quêtes.-
Sauter vers: