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 18:23:18
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 |
Aldigo Chevalier Messages: 70 |
Bonjour à tous,
J'ai un dialogue avec une multitude de phrases qui seront dites par mes pnj suivant l'état d'avançement du pj dans l'intrigue. Plutôt que de longues phrases, voici un bref schéma du dialogue : --> Phrase 1 // Phrases génériques --> Phrase 2 ... --> Phrase X --> Phrase 1 // Phrases liées au noeud 1 de l'intrigue --> Phrase 2 ... --> Phrase X --> Phrase 1 // Phrases liées au noeud 2 de l'intrigue --> Phrase 2 ... --> Phrase X --> Phrase 1 // Phrases liées au noeud 3 de l'intrigue --> Phrase 2 ... --> Phrase X ... J'ai donc assigné des variables Noeud1, Noeud2, etc...pour l'intrigue mais je commençe à m'emmêler les pinceaux dans tout ça !( je suis bien moins logique que la plupart d'entre vous ) Sachant que le joueur est à l'état n (0<n<7) de l'intrigue, le pnj doit : - dire une seule phrase pour le noeud en cours (en sachant que le nombre de phrase diffère suivant le noeud). - dire une phrase générique si il n'a pas atteint de noeud de l'intrigue (postulat de départ) ou dire une phrase générique après avoir dit sa phrase liée au noeud en cours. Comment puis-je organiser tout ça ? ( je ne vais compliquer les choses, mais certaines phrases ne seront prononcer également que sur certaines conditions : race, jour/nuit,etc..., mais ça je sais faire ) J'espère avoir était clair et merci pour votre aide. |
Revenir en haut | |
Eldorane Héros Messages: 298 Localisation: Moselle |
j'avoue ne rien y comprendre ...
si ça peut t'aider : [http] regarde le post de lylver Posté le : 16/04/2005 à 01:58:32 _________________ Notre little site : Les Héros de la Nuit qui contient le lien vers la page de présentation de notre module, en cours de fabrication ! _________________ |
Revenir en haut | |
Aldigo Chevalier Messages: 70 |
J'ai oublié de préciser une condition pour les phrases des pnj :
- chaque phrase lié au noeud en cours ne doit être prononcée qu'une et une seule fois au cours du jeu. Merci quand même Eldorane |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
et bien il faut dans un premier temps bien nommer ta variable, qu'avec le nom tu arrives facilement à identifier le dialogue et la quête en question. Ensuite tu peux aussi te faire un papier récap qui te dit où tu en es. Perso j'ai mis comme valeur de la variable la meêm valeur que dans le livre de quête comme ça si je ne sais plus très bien, je vais voir dasn le livre de quête la description de l'état de la quête suivant la valeur de la variable, simple non ? Au fait, as-tu lu mes conseils sur mon site ?
Pour revenir à ton problème plus précisément, un truc du genre : Dialogue : si variable = 0 => phrase "j'ai une mission pour vous" ..... étape 1.... action conséquente variable = 5 si variable = 10 => phrase "étape 1 terminée" ..... étape 2.... action conséquente variable = 15 si variable = 20 => phrase "étape 2 terminée" ..... étape 3.... action conséquente variable = 25 . . . sans condition => phrase "vous n'avez pas encore fini ??!!!! Quête : à chaque franchissement d'étape, tu mets la variable à 10 puis 20 puis.... Résultat : 1ère rencontre => donne la quête 2ème rencontre => étape 1 faite => donne étape 2 à faire étape 1 non faite => phrase de fin (on peut mettre une phrase spécifique pour chaque valeur en 5 => genre "finissez l'étape 1"... 3ème rencontre... Voilà, j'espère que j'ai été clair et que j'ai répondu à la question. Au moins je t'aurais donné un petit coup de main... désolé _________________ 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 | |
Aldigo Chevalier Messages: 70 |
Salut Laxam !
Citation : Au fait, as-tu lu mes conseils sur mon site ? *siffle* bah oui ! Mais il me faut plusieurs couches avant d'assimiler les choses
Mais j'ai quand même pas compris en fait si, mais à moitié. En fait le dialogue se compose uniquement de phrases simples, pour les génériques elles peuvent être redites (c'est français ça ?) donc c'est simple. Ce qui me gêne ce sont celles liées à l'état d'avançement du joueur dans l'intrigue, en fait il y trois tests à faire sur chaque phrase : ou se trouve le joueur par rapport à l'intrigue, as-t-il déjà dit cette phrase, cette phrase a-t-elle déjà était prononcée dans le module ? J'ai donc une question simple : dois-je créer une variable pour tester chaque phrase (celle liée à l'intrigue bien entendu) ? |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Je ne suis pas sûr d'avoir tout compris....
Pour la variable d'avancement je pense que là c'est bon... pour savoir si la phrase a déjà été dites et bien comme j'ai mis ci-dessus, en incrémentant la variable de telle sorte qu'elle reste inférieure à l'étape suivante mais supérieure à l'étape précédente la phrase ne se répetera pas... Tu réserves par exemple de 10 à 19 = première étape, 20 à 29 = deuxième étape et ainsi de suite. Par contre je ne comprends pas très bien ce que tu entends par Citation : cette phrase a-t-elle déjà était prononcée dans le module ? elle peut être prononcée ailleurs ?
Sinon au pire oui, tu peux créer 3 variable mais à mon avis on peut faire sans... Mais je suis pas sûr de tout bien comprendre..... PS : peut-être peux-tu mettre un exemple concrèt avec les phrase prononcées.. _________________ 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 | |
Aldigo Chevalier Messages: 70 |
Je pensais avoir était clair, apparemment non
Voici quelques extraits du dialogues : --> Vous êtes nouveau ici ? // Phrase générique 1 --> Quel temps splendide n'est-ce pas ? // Phrase générique 2 --> Aujourd'hui les pirates ne prennent même plus la peine de se déguiser quand ils mouillent au port. // Phrase 1 liée au noeud 1 de l'intrigue --> Dans la ville on trouve actuellement des navires de pirates et même des équipages orques ! // Phrase 2 liée au noeud 1 de l'intrigue --> La "Vengeance Sanglante" ? Connait pas. // Phrase 1 liée au noeud 2 de l'intrigue --> Si j'étais vous, j'éviterai de m'approcher de la "Vengeance Sanglante". // Phrase 2 liée au noeud 2 de l'intrigue --> Seules les personnes les plus influentes de Freeport seront invités au bal. // Phrase 1 liée au noeud 3 de l'intrigue --> Le grand bal du phare sera donné pour célébrer l'imminence de l'achèvement de la "Folie de Milton". // Phrase 2 liée au noeud 3 de l'intrigue ... Ce dialogue est donc composé de phrases uniques, il est utilisé par plusieurs pnj. Petit résumé de ce que je souhaite : - le pnj dit une phrase aléatoirement parmis celle possible liée au noeud de l'intrigue en cours, elle doit être unique et ne pas avoir était dit pas un autre pnj (autrement dit chaque phrase lié au noeud en cours ne doit être prononcée qu'une et une seule fois au cours du jeu). - dans tous les autres cas le pnj dit une phrase générique (qu'il est où pas rempli la première condition, car dans certains cas toutes les phrases du noeud en cours auront déjà étaient dites par les autres pnj). Je suis clair là |
Revenir en haut | |
Aldigo Chevalier Messages: 70 |
Je fais toujours quelques tests avec mes variables, mais c'est toujours infructueux
Imaginons que le joueur soit au noeud 1 de l'intrigue et que 4 phrases sont possibles, j'ai mis dans la condition d'éxécution de chaque phrase ce script (en adaptant bien sur suivant le numéro de phrase ) : NWScript :
int StartingConditional() { if (GetLocalInt(GetModule(), "vIntrigueEtat") == 10) // Variable avancement intrigue { int roll=d100(); if (roll>50) // 50% de chance de dire cette phrase { if((GetLocalInt(GetModule(), "vNumeroPhraseIntrigueEtat10") != 1) && (GetLocalInt(GetModule(), "vNombrePhraseIntrigueEtat10") < 4)) { return TRUE; } return FALSE; } return FALSE; } return FALSE; } Et dans l'action conséquente : NWScript :
void main() { int counter1 = GetLocalInt(GetModule(), "vNombrePhraseIntrigueEtat10"); SetLocalInt(GetModule(), "vNumeroPhraseIntrigueEtat10", 1); SetLocalInt(GetModule(), "vNombrePhraseIntrigueEtat10",counter1 ++ ); } Le problème c'est que les phrases sont répétées alors qu'elles ne doivent apparaître qu'une fois. Au secours |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Je pense avoir compris maintenant
Premier point : Pour un même noeud de l'intrigue, rien ne sert de prendre l'une ou l'autre des phrases aléatoirement car de toute manière chacune d'elle ne sera prononcée qu'une seule fois on met un aspect aléatoire lorsqu'on veut que le NPC dise une phrase au hasard mais la pas besion ! Voilà ce que je te propose Cond exécution / Phrase / action conséquente vQuete = 10 --> Aujourd'hui les pirates ne... --> vQuete = 11 vQuete = 11 --> Dans la ville on trouve ac... vQuete = 20 --> La "Vengeance Sanglante" ... --> vQuete = 21 vQuete = 21 --> Si j'étais vous, j'éviter... vQuete = 30 --> Seules les personnes les ... --> vQuete = 31 vQuete = 31 --> Le grand bal du phare ser... aléatoir 50% --> Vous êtes nouveau ici ? --> Quel temps splendide n'est-ce pas ? J'ai bon là ? ta variable vQuete passera à 10, 20 ou 30 suivant les action du PJ, entre 10 et 19 c'est le premier noeud de l'intrique, 20 et 29 le second... _________________ 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 | |
Aldigo Chevalier Messages: 70 |
Merci pour ces précisions, mais si je suis ta logique cela oblige les pnj à prononcer les phrases dans un ordre croissant( pour reprendre ton exemple de 10-19 pour le noeud 1 de l'intrigue), or je souhaite qu'elles soient dites aléatoirement et une seule fois et le pnj ne puisses dire qu'un indice par noeud d'intrigue. Une petite idée ?
|
Revenir en haut | |
Aldigo Chevalier Messages: 70 |
C'est bon c'est résolu, je me suis compliqué la vie pour rien
Comme tu le dis Laxam, le jet aléatoire ne sert absolument à rien. |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
Par contre fais gaffe, t avariable ne devra pas être stockée sur le NPC car si tu mets ce dialogues sur plusieurs NPC différents, et bien ce sera alors comme des variables différentes, tu peux la stocker sur le module (GetModule())
_________________ 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 | |
Aldigo Chevalier Messages: 70 |
En fait voilà les scripts que j'utilise :
Condition d'éxécution NWScript :
int StartingConditional() { if (GetLocalInt(GetModule(), "vEtatIntrigue") == 10) // Variable avancement intrigue { if((GetLocalInt(GetModule(), "vNumeroPhraseIntrigueEtat10") == 1)&& (GetLocalInt(OBJECT_SELF, "vDejaDitPhraseIntrigueEtat10") != TRUE)) { return TRUE; } return FALSE; } return FALSE; } Action conséquente NWScript :
void main() { SetLocalInt(GetModule(), "vNumeroPhraseIntrigueEtat10", 2); SetLocalInt(OBJECT_SELF, "vDejaDitPhraseIntrigueEtat10", TRUE); } C'est bon là ? |
Revenir en haut | |
Laxam Légende vivante Messages: 425 Localisation: Lyon |
La deuxième variable, vDéjàDitPhraseIntrigueEtat10 ne sert à rien puisque une fois que la phrase a été dite, ta variable vNumeroPhraseIntrigueEtat10 passe à 2, donc de toute manière la condition d'exécution passera à FALSE même si tu ne mets pas ce test sur la variable suivante. En plus ta deuxième variable vDejaDitPhraseIntrigueEtat10 est stockée sur le OBJECT_SELF, c'est à dire le NPC, donc si c'est un autre NPC qui le dit, ça ne modifiera pas ta variable (un même nom de variable stocké sur deux objets différents est en fait deux variables distincts !)
En creusant un peu la chose on voit aussi que lorsque ton NPC va dire sa première phrase liée au nœud 10, la variable vDejaDitPhraseIntrigueEtat10 va passer à TRUE et tu vas vouloir dire la 2ème phrase et là dans ton test, la condition sur vDejaDitPhraseIntrigueEtat10 ne sera jamais vraie (car ta variable vaut TRUE), donc ton NPC ne dira jamais la deuxième phrase ! Je ne sais pas si je suis très clair... Pour résumer, les scripts suivants sont à mon avis suffisants Condition d'éxécution NWScript : NWScript :
int StartingConditional() { if (GetLocalInt(GetModule(), "vEtatIntrigue") == 10) // Variable avancement intrigue { if(GetLocalInt(GetModule(), "vNumeroPhraseIntrigueEtat10") == 1) { return TRUE; } return FALSE; } return FALSE; } Action conséquente NWScript : 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. Il faudra bien penser au moment de l'avancement de ton intrigue de mettre à jour la variable vEtatIntrigue et vNumeroPhraseIntrigueEtatxx car par défaut cette dernière variable aura la valeur 0. Dans ce cas, si tu mets le dialogue sur plusieurs NPC, la phrase en question ne sera dite qu'une seule fois (dans le jeu) et c'est ce que tu veux faire il me semble. Sinon je pense aussi que tu aurais pu utiliser une seule variable comme je te l'avais dit (1er chiffre = nœud de l'intrigue, 2ème chiffre = numéro de phrase de l'intrigue à dire), mais ce que tu as fait marche. En tout cas je suis fier que tu es utilisé ma codification pour tes variables ! _________________ 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 | |
Aldigo Chevalier Messages: 70 |
Citation : Je ne sais pas si je suis très clair... Bien au contraire ! Tu ferais un très bon professeur
Citation : Sinon je pense aussi que tu aurais pu utiliser une seule variable comme je te l'avais dit C'set exactement ce que je fais : économie d'une variable (et j'ai également penser à donner un nom au variable un peu plus parlant car "DéjàDitPhraseIntrigueEtat10" c'est un peu abracadabran )
Citation : En tout cas je suis fier que tu es utilisé ma codification pour tes variables ! Pour moi ca me semble très parlant, alors pourquoi je m'en priverai !
En tout cas merci pour toutes ces précisions, je vais pouvoir attaquer sérieusement la mise en place de l'intrigue de 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