Affichage des résultats 1 à 20 sur 20

Discussion: Dialogue : comment traiter des conditions différentes

  1. #1
    Date d'inscription
    January 2008
    Messages
    128

    Dialogue : comment traiter des conditions différentes

    Bonjour,
    voilà j'aurai une petite question technique à poser.
    Dans un de mes dialogues (le premier en fait) j'ai plusieurs fois la même réponse mais je l'utilise pour plusieurs suite qui modifie le jeu.
    Exemple: charname à le choix de rattraper un individus qu'il soupçonne et cela se divise en trois cas bien distinct:
    1- charname possède l'objet que l'individu lui a vendu et lorsqu'il rattrape la personne les méchants arrivent
    2- charname ne possède pas l'objet mais veut le rattraper, les méchants n'arrivent pas tout de suite mais un peu après
    3- charname décide de ne pas rattraper le vendeur et il voit les méchants l'agresser
    Est ce que cela est possible même en partant d'une même réponse (si choix "a" alors 1 et 2 possibles suivant si il possède l'objet ou non)?
    Logiquement je dirais que oui en mettant le nombre de bloc en fonction des possibilités rattachés par le même label avec des conditions différentes qui bloquerait les autres possibilités mais pourriez vous m'éclaircir sur ce point?

  2. #2
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    5 516

    Re : Dialogue : comment traiter des conditions différentes

    Oui, ce que tu décris est tout à fait possible, grâce à la possibilité de préciser des conditions s'appliquant aux différentes réponses possibles dans une réplique. Mais tu dois avoir suffisamment de conditions différentes pour distinguer les 3 cas, hors tu n'en as que 2 : avoir ou non l'objet. Tu devras impérativement passer par un texte différent pour le troisième cas, sinon ce ne sera pas compréhensible car le joueur aura deux fois le même texte de réponse. Pour que le joueur "décide" de ne pas le rattraper, il faut un texte clairement différent.

    En gros, ça donnerait :
    Code:
    IF ~~ THEN BEGIN Replique
      SAY @1 /* ~Tu n'as aucune preuve.~ */
      IF ~PartyHasItem("PREUVE")~ THEN REPLY @2 /* ~Tu te trompes. Je sais tout.~ */ DO ~SetGlobal("AttaqueDesMechants","ARxxxx",1)~ EXIT
      IF ~!PartyHasItem("PREUVE")~ THEN REPLY @2 /* ~Tu te trompes. Je sais tout.~ */ DO ~SetGlobalTimer("VariableTimer","ARxxxx",10)~ EXIT
    END
    Comme tu peux le voir, les deux cas sont mutuellement exclusifs, donc il n'y aura qu'une seule réponse mais qui déclenchera des choses différentes.
    Si tu ajoutes une troisième réponse sans condition, tu auras une deuxième réponse identique et ce qui se passera dépendra du choix du joueur mais ce ne sera pas clair.
    Le troisième cas serait alors :
    Code:
      IF ~!PartyHasItem("PREUVE")~ THEN REPLY @3 /* ~Tu ne perds rien pour attendre.~ */ DO ~SetGlobal("AttaqueDesMechants","ARxxxx",1)~ EXIT
    Là tu pourrais ajouter en fait une autre réplique du personnage poursuivi pour justifier, ce qui donnerait :
    Code:
      IF ~!PartyHasItem("PREUVE")~ THEN REPLY @3 /* ~Tu ne perds rien pour attendre.~ */ DO ~~ GOTO Attaque
    
    IF ~~ THEN BEGIN Attaque
      SAY @4 /* ~Tu as laissé passer ta chance. On se retrouvera en enfer !~ */
      IF ~~ THEN DO ~SetGlobal("AttaqueDesMechants","ARxxxx",1)
    ChangeEnemyAlly(Myself,EVILCUTOFF)
    Enemy()
    Attack(NearestEnemyOf(Myself))~ EXIT
    END
    Les 3 dernières lignes font aussi attaquer le groupe par le personnage qui parle, ce qui me semblerait logique.

    Il y a quelque chose qui me chiffonne, somme toute. Tu veux faire ça par un dialogue, hors tu parles de poursuivre quelqu'un et de le rattraper, ce qui déclencherait l'attaque des méchants (ses amis ?). Si tu veux ça, il faut impérativement passer par des scripts et non par le dialogue. D'une part pour détecter que tu le rattrapes, par une détection de proximité dans le script du personnage, qui dépendrait également d'avoir fait le choix de le poursuivre dans le dialogue (qui mettrait une variable que le script vérifierait).

    N'hésite pas à préciser ton objectif.

  3. #3
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    Code:
    @7 = ~Eh bien c'est... (Il n'a pas l'air de comprendre de suite votre réponse, semblant hésiter à le croire: apparemment vous êtes loin d'être le premier à qui cette prodigieuse offre fut faîte.) une bonne nouvelle. Vous avez fait un excellent choix. Le monde est à vous désormais, profitez-en bien! (Un soupir de soulagement semble le traverser, vous avez tout à coup des soupçons sur ce mystérieux personnage et son parchemin. Une sensation étrange parcours en ce même instant tout votre être...) Je dois vous laisser, j'ai fort à faire, adieu et merci.~ // Renvoie à @15-16
    @8 = ~Je ne vends pas de... Oh laissez tomber. Mais l'inestimable vous est passé sous votre nez. (Il attend quelques secondes, comme si il espérait que vous reveniez sur votre décision. Finalement vous le voyez s'éloigner, l'air abattu. Cela attire votre curiosité...)~ // Renvoie à @15-16
    @9 = ~2000! Je vous vends l'immensité et voilà votre prix? Vous ne méritez vraiment pas mon offre... Adieu. (Il attend quelque secondes, comme si il espérait que vous reveniez sur votre décision. Finalement vous le voyez s'éloigner, l'air abattu. En y réfléchissant son offre n'était peut être pas aussi inintéressante, de plus son attitude attire votre curiosité...)~ // Renvoie @15-16
    @14 = ~Je... Euh...(Il attend quelques secondes, comme si il espérait que vous reveniez sur votre décision. Finalement vous le voyez s'éloigner, l'air abattu. En y refléchissant son offre n'était peut être pas aussi inintéressante malgré son air farfelue. De plus son attitude attire votre curiosité...)~ // Renvoie à @15-16
    @15 = ~(Le rattraper.)~ 
    @16 = ~Bah après tout peu importe...( Le laisser partir.)~
    Voilà j'ai mis l'ensemble des phrases qui sont concernés.
    Je me suis pas très bien expliquer.
    En fait ce qu'il se passe ici c'est que j'ai 4 phrases qui renvoient à deux choix unique.
    La @16 va faire que des personnes vont agresser l'individus que l'on a laisser partir. C'est une description par dialogue de ce qui se passe. Après dans la pratique je verrais un truc du style le personnage s'éloigne, se fait accoster et assassiner(le tout dans la vision de charname), puis les agresseurs sans prennent à charname. Mais @16 comporte en elles même 2variantes à savoir si charname possède ou non l'objet et cela modifiera par la suite le dialogue avec les agresseurs.
    Dans l'autre (donc @15) et bien j'avoue que je ne sais comment procéder, j'imagine qu'il s'éloignerai et qu'il s'arrêterai à côté d'autre PNJ citoyens, de sorte qu'il suffirait de se rapprocher de lui pour recommencer le dialogue. Mais la aussi il y a deux variantes, toujours si il possède ou non l'objet et cela mofiera encore la suite.
    J'aimerai juste savoir si cela serait possible car je ne sais absolument rien sur ce genre de programmation (j'en suis à celle de "base", juste du dialogue), j'aimerais être sûr que la programmation est possible avec les enchaînements que j'ai choisi.
    J'espère que ce que j'ai écrit est compréhensible j'ai toujours tendance à compliquer les choses quand j'explique.

  4. #4
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    5 516

    Re : Dialogue : comment traiter des conditions différentes

    Tu corriges mes défauts de perception de ce que tu souhaitais mais je dois avouer que ce n'est toujours pas clair pour moi...

    Tu ne donnes que quelques phrases du dialogue (celles du personnage) sans les réactions de l'équipe ni les enchaînements. Du coup je ne comprends pas si le dialogue est coupé en deux : d'abord l'achat de l'objet puis, plus tard, un nouveau dialogue dans lequel le fait d'avoir l'objet modifierait les réactions.

    Si ton dialogue s'enchaine sans interruption (le joueur achète ou non, fin du dialogue puis la scène de l'attaque intervient), il te suffit de provoquer les enchainements dans le dialogue lui même. Pas de test sur la possession de l'objet, elle découle d'avoir choisi de l'acheter dans le dialogue.
    Dans le cas contraire, tu dois prévoir une variable ou un test sur la possession de l'objet pour déclencher les conséquences (attaque, ...), d'une façon similaire à ce que j'ai indiqué hier.

    Pour ce qui concerne les séquences qui se déroulent hors dialogue (l'éloignement du personnage, le joueur qui le rattrape, l'attaque), il faut impérativement faire intervenir des scripts. Ces actions dans les scripts seraient alors déclenchées par des variables comme je le montrais hier.
    Certains enchainements ne sont pas simples à obtenir, notamment l'éloignement du personnage, puis le fait que le joueur le rattrape et enfin l'attaque par le groupe. De même faire un script de comportement des "méchants" qui attaque le personnage puis ensuite l'équipe n'est pas simple (plus précisément l'enchainement des attaques).
    Une alternative simple serait de déclencher une scène cinématique à la fin du dialogue, qui pourrait dès lors forcer l'enchainement éloignement du personnage, rapprochement du groupe, attaque par les méchants. Tout cela sans que le joueur ait le choix d'agir. A ce moment, tu mets fin à la scène pour que le joueur puisse reprendre la main sur la réaction à l'attaque.

    J'espère ne pas être à côté de la plaque encore une fois.

  5. #5
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    Je dois préciser que je n'ai encore pas coder cette partie.
    Je viens de comprendre ce que tu veux dire, il n'y aura pas d'interruption du dialogue si achat. Je compte faire en sorte que dans ce cas
    -pas d'interruption, le personnage acquérira l'objet à la fin du combat (combat obligatoire pour le conserver), la cinématique serait une bonne alternative mais je tiens à ce qu'il y ait un dialogue avec les agresseurs (l'homme sera assassiner dans la cinématique)
    -si pas d'achat alors même procédé: cinématique, les agresseurs tuent le bonhomme et charname intervient, le dialogue s'ouvre = combat pour arrêter les criminels (gains de l'objet) ou les laissez partir (fin du dialogue et objet non acquis)
    Tout en sachant que quelque soit les réponses (@15 et 16) la cinématique aurait lieu. Les seuls variables étant celle cités ci-dessus. @16 et 15 mettent fin au dialogue, initie la cinématique puis les possibilités du joueur divergent ainsi que les dialogues en fonction de l'achat.
    J'aurais également une autre question: dois-je coder tout ces détails plus tard ou il est préférable de tout régler en même temps ? Mon idée d'origine était de réaliser absolument tout les dialogues du mod puis de passer à la section codage et programmation. Est ce un bon moyen de fonctionner?
    Dernière modification par Nightmare ; 18/03/2008 à 09h17.

  6. #6
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    5 516

    Re : Dialogue : comment traiter des conditions différentes

    Il n'y a pas de bonne ni de mauvaise méthode, je pense. Dans beaucoup de milieu, il est d'usage d'avoir un script complet (au sens cinématographique par exemple) avant de réaliser quoi que ce soit.
    Dans le cas d'un mod, l'équivalent est d'avoir effectivement les dialogues écrits avant de coder, mais ça ne s'arrête pas là. En plus des textes, tu pourrais clairement différencier les répliques des réponses possibles et préciser les conditions dans lesquelles le joueur a ce choix (avoir ou non tel objet, ...) et les conséquences des choix lorsqu'elles ont des répercutions hors dialogue (déclencher l'attaque si quelque chose, au bout de ...).

    En contrepartie, tu es confronté à un autre problème, celui des questions de faisabilité (au contraire, un cinéaste sait en général ce qu'il peut faire). Pour ces problèmes, il est d'usage de statuer au plus vite sur la faisabilité, de façon à ne pas bâtir quelque chose qui va s'écrouler partiellement ou complètement parce qu'un élément n'est pas possible. Tu peux bien entendu faire ces expérimentations sur des "démonstrateurs" qui ne se retrouveront pas dans le mod (un dialogue "bonjour", "au revoir", attaque). Mais il peut s'avérer aussi intéressant de le faire sur des éléments directement utilisables dans le mod. Mais il faut veiller à garder le même caractère simple que dans le "démonstrateur", sous peine d'avoir des problèmes avec d'autres éléments du mod et non ce que tu voulais essayer.

    Enfin intervient le facteur personnel. Chacun a sa façon de travailler. Si on peut souvent apprendre en s'inspirant des façons des autres, parfois il n'est pas possible de reprendre telle quelle celle des autres pour tout un tas de raisons.

  7. #7
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    Merci pour ces renseignements.
    Je vais régler ce problème comme suit: pour le dialogue avec l'agresseur celui-ci comportera deux variantes qui sont: charname possède ou non l'objet.
    Finalement je change d'avis: le dialogue s'interrompera si charname achète l'objet et il l'aura dans son inventaire. Ensuite il se retrouvera sur @15 et 16. Cinématique correspondant à la réponse. Puis je vais réaliser deux dialogues différents donc dans le codage deux parties différentes complètement séparés l'une de l'autre et pour cela l'un aura pour condition que charname est l'objet. Si il ne là pas l'autre dialogue s'activera par défaut (puisque pas de présence d'objet).
    Cela est possible ?

    Je vais faire des recherches sur le "démonstrateur", je n'ai aucune idée de ce que c'est .
    Encore merci.

  8. #8
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    5 516

    Re : Dialogue : comment traiter des conditions différentes

    Chaque réplique d'un personnage peut être conditionnée afin de permettre justement d'adapter ce qu'il dit aux événements. Tu pourras donc ajouter la condition d'avoir l'objet. Les conditions se mettent dans la partie IF ~conditions~ THEN BEGIN Replique SAY ....

    Inutile de chercher démonstrateur, ça ne correspond à rien de particulier pour la création de mod. C'est un terme que j'ai employé pour évoquer quelque chose dont la fonction est de montrer comment faire pour obtenir ce que l'on souhaite. Par exemple, un concept car est souvent un démonstrateur de technologie automobile mais il n'est jamais vendu en tant que tel. Mais un concept car est complexe par rapport à ce que j'évoquais. Disons que l'équivalent serait plutôt un châssis avec quatre roues et un volant dans l'optique de tester un nouveau système de direction.
    Le démonstrateur dont je parlais serait un ensemble de dialogues et scripts le plus simple possible permettant d'identifier les besoins de ce que tu veux réaliser en terme de structure de dialogue, de script, de variable, ...

  9. #9
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    A d'accord,
    Ma dernière question: si le joueur achète le parchemin j'aimerai qu'il perde l'or (soit 4000) mais qu'il puisse récupérer la somme identique ensuite sur le cadavre du méchant pour que le joueur ne soit pas lésé.
    De plus si le joueur ne paie pas la somme j'aimerai que cette fois l'argent n'apparaisse pas sur son cadavre sinon ce serait injuste et illogique.
    Est-ce la aussi faisable?

  10. #10
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    5 516

    Re : Dialogue : comment traiter des conditions différentes

    L'action TakePartyGold(nnn) permet de transférer de l'argent (nnn pièces d'or) vers le personnage dont le dialogue ou le script y fait appel. L'argent va dans son inventaire, donc tu devrais le récupérer sur le cadavre.

    Pour d'autres recherches du même genre, consulte La Bible de l'Infinity Engine. C'est comme la bible, très long à lire, mais plein d'enseignements !

  11. #11
    Date d'inscription
    December 2007
    Messages
    506

    Re : Dialogue : comment traiter des conditions différentes

    Isaya,tu semmbles t'y connaîte en matière de script.Peux tu me dire ce qui peut provoquer le non déclenchement d'un dialogue dans un mod?J'essaie de faire le mod qui prolonge la sphère planaire mais le jeu bloque quand les aventuirers arrivent(le dialogue n'arrivepas).Je m'excuse pour le off topic mais le bug risquede bloquer le mod dans son intégralité et je risque de ne plus pouvoir me permettre de revenir dans la sphère.


    http://www.baldursgateworld.fr/lacou...nematique.html
    Dernière modification par Magnus ; 10/03/2008 à 20h21.

  12. #12
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    Très bien.
    Merci pour le lien Isaya je me le suis mis dans mes favoris, je vais le petit à petit.

  13. #13
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    5 516

    Re : Dialogue : comment traiter des conditions différentes

    Magnus : non, je ne te pardonne pas pour le off-topic.
    J'ai bien vu ton message dans l'autre partie du forum. Si je n'y ai pas répondu, ce que je ne sais pas donner de réponse et que je n'ai pas le mod en question. Alors, je t'en prie, ne viens pas polluer les autres sujets du forum avec la même demande.
    S'il te plaît, peux-tu activer les messages privés dans ton compte utilisateur ? Je préfèrerais traiter ce genre de chose en privé. Merci.

    Nightmare : tu trouveras d'autres liens utiles dans le forum consacré aux outils dans la forge des apprentis. Notamment dans ce sujet dont le nom, il est vrai, est peu indicatif de son contenu suite à la perte de son sous-titre.

  14. #14
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    Une petite question: comment faire pour que les dialogues arrivent sous forme de vers comme au début de TOB et non sous forme de dialogue normal?

    Il suffit d'aller tout simplement à la ligne dans le fichier texte ? Ou bien est-ce plus complexe ?

  15. #15
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    5 516

    Re : Dialogue : comment traiter des conditions différentes

    Oui, c'est bien en mettant des retours à la ligne là où tu le souhaites. Mais vise bien de façon à ce que l'effet soit bon aussi pour le jeu en 640x480 (on ne sait jamais que quelqu'un joue encore avec cette résolution-là ). Sinon tu auras quand même une coupure avant la fin d'une ligne dans ce cas.

  16. #16
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    Oui d'accord j'y penserai.
    Merci bien

  17. #17
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    Bonjour,
    je reviens en force avec mes pièces d'or pour une nouvelle demande de faisabilité dans la pratique. J'espère après cela ne plus vous déranger avec ça.


    j'ai donc des phrases qui ici seront cachés suivant la somme dépensé. Y'a-t'il une condition du style: uniquement si 4000 pièces d'or dépensé au dialogue z alors phrase y disponible?
    Cela m'arrangerai fort bien pour la forme du dialogue.
    Et peut-on faire en sorte à partir d'une même réplique (ici @19) de pouvoir récupérer soit 4000 ou 2000 à partir de la somme dépensé au dialogue précédent? Tout en faisant également perdre le parchemin à charname.

    J'espère avoir été clair dans mes propos. J'ai conscience de la redondance de mes questions sur ce sujets mais si cela est impossible je dois le savoir sinon tout tomberait à l'eau.
    +
    Dernière modification par Nightmare ; 18/03/2008 à 09h16.

  18. #18
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    5 516

    Re : Dialogue : comment traiter des conditions différentes

    Réponse courte : oui, aux deux questions et pour la perte du parchemin.

    Si tu veux savoir comment, n'oublie pas de le demander la prochaine fois !

    En résumé, il suffit de fixer des valeurs avec une variable en fonction de la somme dépensée. Ensuite, tu peux utiliser la méthode que j'avais montrée (avec la possession d'un objet) pour avoir deux réponses à texte identique conditionnées par la valeur de la variable.
    Si pour l'instant tu t'intéresses uniquement à la faisabilité, inutile de rentrer dans les détails.

    Quand tu as des questions de faisabilité, pense à des situations équivalentes dans le jeu. Il n'est pas rare que tu veuilles reproduire quelque chose qui existe déjà dans le jeu ou dans des mods. C'est un bon point de départ également quand tu voudras coder.

  19. #19
    Rimbaud Invités

    Re : Dialogue : comment traiter des conditions différentes

    Je passe par ici et je voulais juste dire que je peux aider Nightmare sur MSN s'il le désire, avec des exemples concrets. Pour la programmation de base, tant qu'il ne s'agit pas de scripts ou autres choses trop compliquées, ça va. Donc hésite pas à passer, Nighty.

    Par contre je trouve franchement dommage d'afficher les dialogues ici...C'est du bon gros spoil ça, y'a plus de plaisir.

  20. #20
    Date d'inscription
    January 2008
    Messages
    128

    Re : Dialogue : comment traiter des conditions différentes

    Très bien merci tes conseils et tes lumières Isaya. Je vais pouvoir avancer serein.

    PS: je viens d'enlever les dialogues

Discussions similaires

  1. [TECH] Les différentes versions de BG
    Par Ake dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 8
    Dernier message: 22/10/2006, 01h31
  2. [SOLUCE] Conditions d'enrôlement
    Par Darien dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 5
    Dernier message: 09/05/2006, 14h59
  3. [JEU] Nombres de parties differentes
    Par Qoèlet dans le forum L'Académie de Padhiver (NWN 1)
    Réponses: 3
    Dernier message: 07/09/2005, 01h28
  4. Comment donner un dialogue à une créature
    Par Giga__Deathcool dans le forum NeverWinter Nights & NeverWinter Nights 2 : les modules
    Réponses: 16
    Dernier message: 19/01/2005, 02h02
  5. [IWD1][SOLUCE] Les différentes attaques spéciales du voleur
    Par faroux dans le forum La Taverne du Berceau de l'Hiver (Icewind Dale 1)
    Réponses: 6
    Dernier message: 08/07/2004, 22h12

Les tags pour cette discussion

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209