La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 07/05/2025 18:57:56


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
gussometre
Ecuyer
Inscrit le: 11 Jan 2006
Messages: 56
Localisation: Petit asteroïde dans le finistére sud
Répondre en citant
Posté le : 16/01/2006 14:27:27 Sujet du message : Petite question stupide,pour changer un peu

Salut!!
Voila,j'aimerais qu'un PNJ parle au joueur dés qu'il le voit(je supose que ca doit etre dans Onperception mais je sais pas quoi metre Confused )
Merci d'avance.
_________________
N'oublions pas le proverbe:quand on a faim il faut manger!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 16/01/2006 18:42:16 Sujet du message :

Tout d'abord, sache que tu n'es pas obligé de modifie rle OnPerception de ton PNJ. En fait, Bioware a prévu son coup, et te propose le OnUserDefined. Littérallement, c'est donc au créateur de définir l'évènement.

Si tu regardes le script dans OnSpawn, tu as quelques lignes de codes, qui sont précédées de //. Il faut, dans notre cas, supprimer celles qui se trouvent avant le "SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT);". Tu le sauvegardes sous un autre nom,puis tu ajoutes quelquechose de ce genre dans ton nouveau script OnUserDefined "if (GetUserDefinedEventNumber() == 1002)". C'est l'événement 1002 dans le cas d'une Perception.

Voilà ce que ça donne:

NWScript :
void main()
{
   
    object oPercu = GetLastPerceived();

           
            // et (&&) si oPercu est un PJ
            if (GetUserDefinedEventNumber() == 1002
            && GetIsPC(oPercu))
                {
                // Alors, annule toutes les actions du PNJ en cours,
               
                ClearAllActions();
                ActionStartConversation(oPercu);
                }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Le seul problème içi, c'est que le PNJ dès qu'il te perçoit (vue, ouïe), va te suivre si jamais tu t'écartes de sa zone de perception, pour te parler.
Après, je ne sais pas si tu veux lui faire dire un dialogue, ou juste quelques mots. Car dans ce cas, il te suffit de reprendre le script de cette manière:

NWScript :
void main()
{
   
    // et le string "Salut!", dans sSalut
    object oPercu = GetLastPerceived();
    string sSalut = "Salut!";

           
            // et (&&) si oPercu est un PJ
            if (GetUserDefinedEventNumber() == 1002
            && GetIsPC(oPercu))
                {
                // Alors, le PNJ dit le string sSalut
                SpeakString(sSalut);
                }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


J'espère t'avoir aidé. Et si ma réponse est incomplète, les scripteurs plus avertis pourront veiller à la rendre plus exhaustive.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 16/01/2006 19:34:46 Sujet du message :

Tu peux aussi dans la première ligne de ton dialogue mettre comme condition de déclenchement du dialogue le script bioware : nw_d2_gen_check
et activer ce "switch" dans son script OnSpawn
Note : pas de réponse joueur à cette ligne de dialogue : elle est unique

NWScript :
// ***** Spawn-In Conditions ***** //

    // * REMOVE COMMENTS (// ) before the "Set..." functions to activate
    // * them. Do NOT touch lines commented out with // *, those are
    // * real comments for information.

    // * This causes the creature to say a one-line greeting in their
    // * conversation file upon perceiving the player. Put [NW_D2_GenCheck]
    // * in the "Text Seen When" field of the greeting in the conversation
    // * file. Don't attach any player responses.
    // *
SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION);
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 16/01/2006 20:11:19 Sujet du message :

Ah oui effectivement, c'est bien plsu pratique, et ça ne prend pas de scripts supplémentaires.

* Aurais du mieux regarder le script de Spawn Confused *
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
gussometre
Ecuyer
Inscrit le: 11 Jan 2006
Messages: 56
Localisation: Petit asteroïde dans le finistére sud
Répondre en citant
Posté le : 17/01/2006 14:04:40 Sujet du message :

Salut et merci,mais j'y comprend toujours pas grand chose Sad !Est ce que vous pouvez me donner le script qu'il faut metre dans Onspawn siouplait? Confused
_________________
N'oublions pas le proverbe:quand on a faim il faut manger!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 17/01/2006 14:32:35 Sujet du message :

Alors déjà, j'aimerais savoir si tu veux que le PNJ entame un dialogue (fenêtre de dialogue), ou lançe juste une phrase (texte flottant) au PJ.

Ensuite, s'il doit entamer le dialogue, et que le PJ s'eloigne de sa zone de Perception, doit il le poursuivre? Doit il revenir sur ses pas au bout d'un moment? Doit il faire autre chose?

S'il n'a qu'une phrase à dire, doit il faire autre chose ensuite?

Enfin, de quelle manière le PJ peut il être perçu? Entendu? Vu? Les deux?

Le script en lui même n'est pas compliqué, amis j'ai besoin d'avoir le maximum d'infos, claires et précises, pour te donner un script digne de ce nom.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
gussometre
Ecuyer
Inscrit le: 11 Jan 2006
Messages: 56
Localisation: Petit asteroïde dans le finistére sud
Répondre en citant
Posté le : 17/01/2006 14:39:03 Sujet du message :

En fait j'aimerais qu'il entame un dialogue et qu'il poursuive le pj pour lui parler,rien d'autre.
Voila Confused .
_________________
N'oublions pas le proverbe:quand on a faim il faut manger!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 17/01/2006 14:45:05 Sujet du message :

Laughing J'aimerais qu'on lise mon post en entier !

La Perception peut se faire de 2 manières: vue ou ouïe, donc tu dois me dire si tu souhaites que cela soit l'une ou l'autre ou les deux qui appellent l'évenement Perception.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
gussometre
Ecuyer
Inscrit le: 11 Jan 2006
Messages: 56
Localisation: Petit asteroïde dans le finistére sud
Répondre en citant
Posté le : 17/01/2006 14:49:07 Sujet du message :

Excuse moi,j'ai lut mais je voyais pas trop ce que tu voulait dire. Confused
Dns mon cas ce serait les deux.
_________________
N'oublions pas le proverbe:quand on a faim il faut manger!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 17/01/2006 15:15:43 Sujet du message :

Voilà le script en version finale Laughing !
S'il manque néanmoins des choses, que j'aurais négligé d'implémenter, faites le moi savoir.

NWScript :
/* Ce script doit etre place dans le OnUserDefined du PNJ voulu.
Ensuite, ouvrez le script contenu dans le OnSpawn du PNJ,
et cherchez cette ligne: "SetSpawnInCondition(NW_F LAG_PERCIEVE_EVENT);".
Une fois que vous l'avez trouve, supprimez les "//", qui la precedent,
puis sauvegardez le script sous un nouveau nom.*/


void main()
{
// Le dernier objet percu est stocke dans oPJ
// Si ce n'est pas un PJ, alors rien ne se produit
object oPJ = GetLastPerceived();
        if (!GetIsPC(oPJ)) return;

// OBJECT_SELF designe l'objet lui meme,
// en l'occurence le PNJ auquel on attache le present script.
// Il est donc stocke dans oPNJ
// nEvenement nous permet de definir nos propres scripts,
// quand un evenement tel que Perception est appelle en jeu,
// sans toucher au evenements eux meme:
// on agit par le biais du OnUserDefined
object oPNJ = OBJECT_SELF;
int nEvenement = GetUserDefinedEventNumber();

        // Si l'evenement appelle
        // est celui correspondant a l'entier 1002 (Perception),
        if (nEvenement == 1002)
      {
            // et si le PJ n'est pas en train de dialoguer,
            if (!IsInConversation(oPJ))
          {
            // alors on efface toutes les actions en cours du PNJ,
            // et il va a l'encontre du PJ pour demarrer la conversation:
            // lancement du fichier dialogue du PNJ
            ClearAllActions();
            ActionStartConversation(oPJ);
          }
      }
}
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
gussometre
Ecuyer
Inscrit le: 11 Jan 2006
Messages: 56
Localisation: Petit asteroïde dans le finistére sud
Répondre en citant
Posté le : 17/01/2006 15:47:48 Sujet du message :

Euh...Quand tu parle du script de Onspawn,tu parle de celui par defaut?(x2_def_spawn)Ou d'un autre?Parsque sur le mien ya pas la ligne "setspawnincondition(NW_FLAG_PERCIEVE_EVENT)

Oui bon je suis peut etreun pêu un Boulet ! mais bon...
_________________
N'oublions pas le proverbe:quand on a faim il faut manger!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 17/01/2006 16:11:50 Sujet du message :

Voilà ce que j'ai trouvé dans le script OnSpawn que tu m'as donné.

NWScript :
// Execute default OnSpawn script.
    ExecuteScript("nw_c2_default9", OBJECT_SELF);
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Tu copies le lien "nw_c2_default9", puis tu l'ouvres, et tu vas trouver la ligne correspondante. Après avoir suivi la démarche que j'ai décrite, tu reviens sur ton script "x2_def_spawn", puis tu changes le "nw_c2_defautl9" par le nouveau nom de ton script:

NWScript :
// Execute default OnSpawn script.
    ExecuteScript("NomDuScriptOnSpawnSauvegarde", OBJECT_SELF);
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.


Voilà Wink !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Enki
Légende vivante
Inscrit le: 06 Déc 2005
Messages: 432
Répondre en citant
Posté le : 17/01/2006 16:12:55 Sujet du message :

Dans le script "x2_def_spawn", il y a une ligne avec ExecuteScript("non du script");

C'est ce script là que tu dois modifier.


Tu as dit :

Citation :
Oui bon je suis peut etreun pêu un Boulet ! mais bon...
Ne t'en fais pas, il y en a qui sont devenus ministre (je ne dirai pas qui !).
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 17/01/2006 16:26:10 Sujet du message :

Oui il n'y a pas de problème, tout le monde a debuté. L'essentiel c'est que tu comprennes bien chaque notion. C'est pour ça que j'ai très détaillé le Script.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
gussometre
Ecuyer
Inscrit le: 11 Jan 2006
Messages: 56
Localisation: Petit asteroïde dans le finistére sud
Répondre en citant
Posté le : 18/01/2006 16:12:24 Sujet du message :

Merci tout plein Smile ,tout baucoup Very Happy et tout ce qui s'en suit Very Happy !
_________________
N'oublions pas le proverbe:quand on a faim il faut manger!
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger Ignorer l'utilisateur
 
L'Erudit
Seigneur
Inscrit le: 26 Oct 2005
Messages: 167
Répondre en citant
Posté le : 19/01/2006 06:17:52 Sujet du message :

Pas de problème Wink !
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
Page 1 sur 1 ¤


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 75.02ms