La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 21:28:02
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 |
Axwax Voyageur Messages: 2 |
Bonjour à tous!
Je suis un super débutant. Donc je m'y connais tres peu en termes techniques. Voila, c'est tout bête: je cherche à faire en sorte qu'un NPC ne recommence pas son speech de bienvenu, du genre "Bonjour, qui êtes-vous?" alors que je lui ai deja parlé. J'ai trouvé ce script que j'ai appliqué comme condition d'execution a une phrase du genre "Ha te revoila!" placée, dans le deroulement du dialoge, avant la phrase de depart. NWScript :
//:: FileName verif_dejavu //:: Created By: Script Wizard int StartingConditional() { object oPNJ = GetObjectByTag("tag du pnj qui cause"); // Inspecter variables locales if(GetLocalInt(oPNJ, "dejavu") == 1) return TRUE; else return FALSE; } J'ai testé ce script tel quel, il ne fonctionne pas. Celui qui l'a posté (Kiky.Le.Magnifique) rajoute ceci: "Cette branche de dialogue n'apparaitera que si la variable nommé "dejavu" est égale à 1. Au début, elle est égale à 0 par défaut... " Mais je ne vois pas trop ce que ca veut dire. Que faut-il faire pour changer cette variable? Existe-t-il un autre script pour ce genre de probleme? Merci pous vos réponses! |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Je vais essayer de faire hyper simple... 1. Première ligne de dialogue ("Je suis ravi de vous rencontrer"). Dans l'onglet Action conséquentes tu places le script de Bioware nommé "nw_d1_talktime". (ds la fenêtre en dessous, son contenu doit apparaître...) 2. Deuxième ligne de dialogue (Ah vous revoila"). Dans l'onglet Conditions d'exécution tu colles le script suivant: NWScript :
int StartingConditional() { // nw_d1_talktime int iResult; iResult = GetLocalInt(OBJECT_SELF,"NW_L_TALKTIMES") >0; return iResult; } Rq: la deuxiéme ligne de dialogue doit être au dessus de la 1e: Citation : Ah vous revoila
..........Bah voui... Je suis ravi de vous rencontrer ..........itou itou _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
Axwax Voyageur Messages: 2 |
Ok, merci beaucoup Longbow. Ca marche sans probleme!!!
J'ai cependant une petite question: Existe-t-il un lexique qui donne la signification de tous les scripts de bioware tel que "nw_d1_talktime" ? |
Revenir en haut | |
Longbow Grand Sage du Conseil Messages: 638 Localisation: Orléans |
Hum, hum...
Un lexique pour les script officiels ?? Je ne sais pas... Mais la référence en terme de script c'est le Lexicon _________________ Rex illeteratus Quasi Asinus Coronatus Jean de Salisbury |
Revenir en haut | |
lendraste Grand Maître Chanteur du Conseil Messages: 1403 Localisation: Quelque part ailleurs |
Dans la version de Mars du Lexicon, ils ont commencé à documenter les "include", mais ils ne les ont pas tous fait encore (en l'occurrence le nw_d1_talkime n'est pas évoqué). Normalement, Bioware a suffisamment bien documenté ces includes pour qu'ils soient faciles à utiliser. Il suffit de les ouvrir dans l'éditeur pour s'en assurer. A ma connaissance, il n'existe aucune autre documentation officielle ou officieuse, à moins qu'un courageux isolé, l'ait fait
_________________ Lendraste de Loreval Qui cherche la Vérité cherche celui qui la détient, car elle n'existe pas à l'état naturel. La cité des mensonges - 1 |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
J'ajoute, pour ta première question, qu'il y a un post-it qui parle de ça (puisque c'est une question qui a dû être posée environ 100 fois) :
[http] _________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Deekin Acolyte Messages: 32 |
Je profite de ce sujet pour compliquer un peu les choses (j'espère que je peux ?) au sujet des dialogues.
Dans la zone 1, le PNJ interpelle le PJ et un dialogue débute de manière classique. Une fois la conversation terminée, le PNJ quitte la zone et le PJ doit le rejoindre, ce qu'il fait. Arrivé dans la zone 2, le PJ s'approche du PNJ pour continuer la conversation avant de s'en aller gaiment vers sa première quête. Or, non seulement le premier noeud de dialogue se répète (c'est fâcheux) mais en plus (snif... ), le second n'est pas pris en compte. Je pense qu'il doit y avoir un "déjavu" quelque part et une fonction qui permet d'ignorer le premier noeud de dialogue ? |
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
N'oublie pas que les phrases doivent arriver en ordre inversement chronologique : la dernière prononcée en premier, la première prononcée en dernier : le jeu lit les dialogues en partant du haut, et dès qu'il trouve une condition satisfaisante, il s'arrête et ne va pas plus loin.
_________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Deekin Acolyte Messages: 32 |
Merci finipe pour la précision. Toutefois, ôte-moi d'un doute. Les phrases que je dois prendre en compte sont bien celles qui débutent chaque noeud de dialogue ?
|
Revenir en haut | |
finipe Grand Sage du Conseil Messages: 519 Localisation: Nantes |
Oui, considère ça comme une arborescence conditionnelle. Exemple :
NWScript :
* Phrase 2 <--- si i==2 -- suite du dialogue... * Phrase 1 <--- si i==1 -- suite du dialogue... * Phrase de base <--- aucune condition (par défaut, i==0) -- suite du dialogue... Admettons que ton joueur parle pour la 1ere fois. Le jeu lit le dialogue de haut en bas : - il voit le premier noeud, la phrase 2. La condition de lecture est "si i==2". Or i n'est pas égal à deux puisque c'est la 1ere fois. Donc il continue. - il voit le second noeud, la phrase 1. La condition de lecture est "si i==1". Ce n'est tjs pas bon, il continue. - enfin il arrive au dernier noeud, qui n'a aucune condition, donc il te sort cette phrase là. Ensuite, libre à toi de modifier la valeur de ta variable au gré de l'avancement de ta quête/dialogue ou tout ce que tu veux faire évoluer. Si par exemple dans la phrase de base, le joueur dit qqchose qui fait évoluer, tu fais passer ta variable à i==1, comme ça quand le joueur viendra reparler, le noeud de dialogue choisi sera la phrase 1, puisque la condition est "si i==1". Bon courage ^^ edit : va voir ici --> [http] ce topic a été fait exprès... (visiblement va falloir que quelqu'un de plus pédagogue que moi le refasse, la question revient sans arrêt malgré tout ) _________________ » Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine » 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII |
Revenir en haut | |
Deekin Acolyte Messages: 32 |
... Enfin, je crois . D'abord, j'ai réussi à comprendre que les noeuds de dialogue se classent du premier en bas, au dernier en haut. Au sein de chaque noeud, les répliques se rédigent (et se lisent) en revanche de haut en bas. Ensuite, à la dernière phrase de mon premier dialogue, justement, j'ai ajouté dans l'onglet "Actions Conséquentes" le script suivant :
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. "parle1" est le nom de la variable qui sert de point de référence. Ensuite, à la première phrase de mon second noeud de dialogue, j'ai ajouté dans l'onglet "conditions d'exécution" le script suivant, c'est-à-dire, celui que tu m'avais indiqué : NWScript :
int StartingConditional() { // Inspecter variables locales if(GetLocalInt(GetPCSpeaker(), "parle1") == 1) return TRUE; return FALSE; } Et pour l'instant, tout se déroule comme je le souhaitais. Est-ce bien la marche à suivre ? |
Revenir en haut | |
k0rvet Ecuyer Messages: 67 |
"Si tout fonctionne et que tu ne sais pas pourquoi, surtout ne touche à rien: ça risquerait de ne plus jamais être le cas."
Il semblerait effectivement que tu ais procédé de la bonne manière. _________________ Moi j'dis ca, mais bon j'dis rien hein? ..:: Les Chroniques de la Terre du Milieu ::.. |
Revenir en haut | |
Deekin Acolyte Messages: 32 |
Cependant, j'ai encore deux problèmes avec les dialogues. Ben oui, je suis en plein dedans .
Tout d'abord, si je sais que les phrases en rouge correspondent au NPJ et les bleues, au PJ ; que signifient les phrases en gris ? J'ai fouiné dans les modules de la campagne officielle mais les scripts qui y sont associés m'ont encore plus embrouillé. Par ailleurs, j'ai créé un début de dialogue : - Salut, ami PJ. auquel j'ai associé plusieurs réponses (j'ignore le terme exact) : -- Salut, t'es qui, toi ? --- Je suis le NPJ. ---- T'es gentil ou méchant ? ----- Gentil. -- Quel est ton rôle dans ce module ? --- T'aider à présenter ton exemple de dialogue. ---- Pourquoi c'est si dur de créer un module ? ----- Parce que tu es un débutant. Lorsque j'arrive à la dernière phrase de chaque réponse, le dialogue se termine au lieu de me renvoyer vers la branche principale . J'ai tenté d'utiliser des variables mais apparemment, ça ne fonctionne pas. Pourtant, je suis certain qu'il doit y avoir une fonction de "renvoi vers" ou quelque chose d'approchant. Certes, je pourrais faire mon dialogue en continu, éludant ainsi le problème, mais je voudrais comprendre. |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Si j'ai bien compris tes questions :
Les phrases en gris ce sont les phrases "copiées" et collées en tant que lien. Ce n'est pas très clair mais la suite de ma réponse devrait t'éclaircir : Pour renvoyer au début du dialogue, il te suffit de te placer sur la première ligne de ton dialogue et de faire "copier", c'est un des icône sur la gauche de l'éditeur de dialogue. Puis tu te place sur la dernière ligne de ton dialogue que tu veux faire boucler sur le début afin que le dialogue recommence et tu fais "click droit", "copier en tant que lien et hop ça te renverra sur la ligne que tu avais sélectionnée précédemment. Cette phrase est alors en gris... Voilà, j'espère avoir répondu à ta question. _________________ Mon site NWN nouvelle version et mon module Boisperdu en ligne ! Et maintenant un FORUM La première version française de la doc du NPC Activities (version 2.0) |
Revenir en haut | |
Deekin Acolyte Messages: 32 |
Je vais donc tester ce procédé tout simple mais dont la recherche m'a donné du fil à retordre . Merci à toi, Laxam.
(un peu plus tard...) Ca marche ! Ca marche ! Un petit pas pour moi, un grand pas pour mon module. |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
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