
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.







La date/heure actuelle est 07/05/2025 05:19:42
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
gussometre Ecuyer ![]() Messages: 56 Localisation: Petit asteroïde dans le finistére sud |
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 ![]() Merci d'avance. _________________ N'oublions pas le proverbe:quand on a faim il faut manger! |
Revenir en haut | ![]() ![]() ![]() ![]() |
L'Erudit Seigneur ![]() Messages: 167 |
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); } } 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); } } 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 | ![]() ![]() ![]() |
lylver Héros Messages: 274 |
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); |
Revenir en haut | ![]() ![]() ![]() |
L'Erudit Seigneur ![]() Messages: 167 |
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 ![]() |
Revenir en haut | ![]() ![]() ![]() |
gussometre Ecuyer ![]() Messages: 56 Localisation: Petit asteroïde dans le finistére sud |
Salut et merci,mais j'y comprend toujours pas grand chose
![]() ![]() _________________ N'oublions pas le proverbe:quand on a faim il faut manger! |
Revenir en haut | ![]() ![]() ![]() ![]() |
L'Erudit Seigneur ![]() Messages: 167 |
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 | ![]() ![]() ![]() |
gussometre Ecuyer ![]() Messages: 56 Localisation: Petit asteroïde dans le finistére sud |
En fait j'aimerais qu'il entame un dialogue et qu'il poursuive le pj pour lui parler,rien d'autre.
Voila ![]() _________________ N'oublions pas le proverbe:quand on a faim il faut manger! |
Revenir en haut | ![]() ![]() ![]() ![]() |
L'Erudit Seigneur ![]() Messages: 167 |
![]() 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 | ![]() ![]() ![]() |
gussometre Ecuyer ![]() Messages: 56 Localisation: Petit asteroïde dans le finistére sud |
Excuse moi,j'ai lut mais je voyais pas trop ce que tu voulait dire.
![]() Dns mon cas ce serait les deux. _________________ N'oublions pas le proverbe:quand on a faim il faut manger! |
Revenir en haut | ![]() ![]() ![]() ![]() |
L'Erudit Seigneur ![]() Messages: 167 |
Voilà le script en version finale
![]() 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); } } } |
Revenir en haut | ![]() ![]() ![]() |
gussometre Ecuyer ![]() Messages: 56 Localisation: Petit asteroïde dans le finistére sud |
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 ![]() _________________ N'oublions pas le proverbe:quand on a faim il faut manger! |
Revenir en haut | ![]() ![]() ![]() ![]() |
L'Erudit Seigneur ![]() Messages: 167 |
Voilà ce que j'ai trouvé dans le script OnSpawn que tu m'as donné.
NWScript :
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 :
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à ![]() |
Revenir en haut | ![]() ![]() ![]() |
Enki Légende vivante ![]() Messages: 432 |
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 Ne t'en fais pas, il y en a qui sont devenus ministre (je ne dirai pas qui !).![]() |
Revenir en haut | ![]() ![]() ![]() |
L'Erudit Seigneur ![]() Messages: 167 |
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 | ![]() ![]() ![]() |
gussometre Ecuyer ![]() Messages: 56 Localisation: Petit asteroïde dans le finistére sud |
Merci tout plein
![]() ![]() ![]() _________________ N'oublions pas le proverbe:quand on a faim il faut manger! |
Revenir en haut | ![]() ![]() ![]() ![]() |
L'Erudit Seigneur ![]() Messages: 167 |
Pas de problème
![]() |
Revenir en haut | ![]() ![]() ![]() |


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