Affichage des résultats 1 à 22 sur 22

Discussion: [DLG] Comment forcer un dialogue entre Charname et un PNJ avec le bouton Dialogue ?

  1. #1
    Date d'inscription
    avril 2012
    Localisation
    Picardie, fausses terres de la pluie annuelle.
    Messages 
    75

    [DLG] Comment forcer un dialogue entre Charname et un PNJ avec le bouton Dialogue ?

    Bonjour/Bonsoir

    Problème du jour, je suis pas fichu de lancer un dialogue entre mon NPC et CHARNAME une fois le recrutement terminé.
    La bestiole a finalement une intro fonctionnelle, etc etc et je comptais passer a la partie deux le dialogue 'forcé'. (Point de banter pour le moment, j'ai plus d’intérêt au sujet de la commande dialogue tout bête)

    Idée : pouvoir lancer un bloc de dialogue lorsque le PJ souhaite parler au NPC pour l’interroger/perdre son temps/l'insulter.
    Puis partir de ce bloc pour offrir de nouvelles options de dialogues et faire réagir un minimum le compagnon.

    Sauf que, petit hic : Je ne parviens pas a lancer un bloc de dialogue avec la commande de dialogue 'forcé'. Du coup mon NPC n'a "rien a dire" à CHARNAME... petite ordure de reptile paresseux.

    J'ai beau fouiner je n'ai pas encore trouver comment faire fonctionner cette commande, apparemment ça marcherai avec des triggers mais... comment? "

    Merci de votre attention et de votre éventuelle (et particulièrement espérée) aide
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 07h03. Motif: Modification du titre de la discussion

  2. #2
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 569
    Je ne suis pas certain d'avoir compris ta question.

    Mais tu as deux manières principales de lancer un dialogue. Les deux impliquant des variables :

    Code:
    Fichier .baf
    IF
      NumTimesTalkedTo(0) // Compteur de discussion
      See(Player1)
      Range(Player1,20)
    THEN
      RESPONSE #100
        SmallWait(1)
        FaceObject(Player1)
        SmallWait(1)
        StartDialogueNoSet(Player1)
    END
    
    puis Fichier .D
    IF ~NumTimesTalkedTo(0)~ THEN BEGIN 0
     SAY ~blabla.~
      IF ~~ THEN REPLY ~blabla1~ GOTO 1
      IF ~~ THEN REPLY ~blabla2~ GOTO 1
      IF ~~ THEN REPLY ~blabla3~ GOTO 3
    END
    
    ou
    
    Fichier .baf
    IF
      Global("GWMove","LOCALS",2) // Variable
      See(Player1)
    THEN
      RESPONSE #100
        SmallWait(1)
        FaceObject(Player1)
        StartDialogueNoSet(Player1)
    END
    
    Fichier .D
    IF ~Global("GWMove","LOCALS",2)~ THEN BEGIN 0
     SAY ~blabla.~
      IF ~~ THEN REPLY ~blabla1~ DO ~SetGlobal("GWMove","LOCALS",3)~ GOTO 1 // Variable mofifiée pour éviter des boucles infinies du Dialogue
      IF ~~ THEN REPLY ~blabla2~ DO ~SetGlobal("GWMove","LOCALS",3)~ GOTO 1
      IF ~~ THEN REPLY ~blabla3~ DO ~SetGlobal("GWMove","LOCALS",4)~ GOTO 3
    END

    Tu peux aussi mixer les deux :

    Code:
    Fichier .baf
    IF
      Global("GWMove","LOCALS",2) // Variable
      See(Player1)
      NumTimesTalkedTo(0)
    THEN
      RESPONSE #100
        SmallWait(1)
        FaceObject(Player1)
        StartDialogueNoSet(Player1)
    END
    
    Fichier .D
    IF ~Global("GWMove","LOCALS",2) NumTimesTalkedTo(0)~ THEN BEGIN 0
     SAY ~blabla.~
      IF ~~ THEN REPLY ~blabla1~ DO ~SetGlobal("GWMove","LOCALS",3)~ GOTO 1 // Variable mofifiée pour éviter des boucles infinies du Dialogue
      IF ~~ THEN REPLY ~blabla2~ DO ~SetGlobal("GWMove","LOCALS",3)~ GOTO 1
      IF ~~ THEN REPLY ~blabla3~ DO ~SetGlobal("GWMove","LOCALS",4)~ GOTO 3
    END
    
    
    Dans ce cas, tu n'es pas obligé de changer la variable GWMove, puisqu'à la fin du dialogue, le compteur NumTimesTalkedTo sera passé à 1.

    1. Les possibilités sont infinies, le but du jeu étant de définir tes variables dans un fichier baf :
    • Soit dans celui de ton perso (KLARE.baf par exemple). Dans ce cas, tu peux utiliser toutes sortes de variables de types Global("Nom Variable","LOCALS",n) avec LOCALS s'appliquant uniquement au perso concerné, Global("Nom Variable","Nom de la Zone",n) qui ne s'applique que dans la zone (ou carte) concernée (par ex. "AR2500"), Global("Nom Variable","GLOBAL",n) qui gère une variable globale pouvant intervenir n'importe où dans tout le jeu.
    • Soit dans celui d'une autre créature ou d'une carte.



    2. Ensuite, tu utilises ces variables comme conditions de démarrage du dialogue :
    • IF ~Global("Variable1","LOCALS",1)~ THEN BEGIN 0 : le dialogue commence à cette ligne lorsque Variable1 = 1 pour le personnage qui initie le dialogue.
    • IF ~Global("Variable2","AR9999",2)~ THEN BEGIN 2 : le dialogue commence à cette ligne lorsque Variable2 = 2 et que tu te trouves dans la carte AR9999.
    • IF ~Global("Variable3","GLOBAL",3)~ THEN BEGIN 8 : le dialogue commence à cette ligne lorsque Variable3 = 3 n'importe où dans le jeu.


    Là encore, pour simplifier, je ne t'ai donné que des exemples simples impliquant une seule variable, mais tu peux en rajouter d'autres, comme l'assurance que le perso à qui tu t'adresses est disponible (pas mort, pas endormi, pas immobilisé...), est dans les parages (sinon, c'est un peu lourdingue), sans compter des combinaisons de variables différentes...
    Bref, les possibilités sont infinies. La seule régle importante est que tu les reprennes dans tes dialogues et surtout que tu n'oublies pas de les modifier à la sortie du dialogue, sinon tes persos recommenceront à lancer le dialogue en boucle !
    Et surtout, n'oublie-pas les "". Sans quoi, tu auras droit à des erreurs de compilation !

    En espérant que cela réponde à ta question.
    Dernière modification par Freddy_Gwendo ; 21/04/2012 à 14h50. Motif: Rajout des "Set" : Merci Akadis !
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  3. #3
    Date d'inscription
    avril 2003
    Localisation
    Bordeaux
    Messages 
    1 167
    Petite précision concernant le fichier .D du deuxième exemple et du mix. L'instruction dans le DO est SetGlobal et non Global
    Fichier .D
    IF ~Global("GWMove","LOCALS",2) NumTimesTalkedTo(0)~ THEN BEGIN 0
    SAY ~blabla.~
    IF ~~ THEN REPLY ~blabla1~ DO ~SetGlobal("GWMove","LOCALS",3)~ GOTO 1 // Variable mofifiée pour éviter des boucles infinies du Dialogue
    IF ~~ THEN REPLY ~blabla2~ DO ~SetGlobal("GWMove","LOCALS",3)~ GOTO 1
    IF ~~ THEN REPLY ~blabla3~ DO ~SetGlobal("GWMove","LOCALS",4)~ GOTO 3
    END
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
    Responsable de la maintenance du mod
    Kim

  4. #4
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 569
    Citation Envoyé par Akadis Voir le message
    Petite précision concernant le fichier .D du deuxième exemple et du mix. L'instruction dans le DO est SetGlobal et non Global
    Oups !

    Autant pour moi. Désolé, ça m'apprendra à ne pas vérifier mes copier-coller...
    Je modifie le message en conséquence.

    Merci pour ta vigilance, Akadis.
    Dernière modification par Freddy_Gwendo ; 21/04/2012 à 14h57.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  5. #5
    Date d'inscription
    avril 2012
    Localisation
    Picardie, fausses terres de la pluie annuelle.
    Messages 
    75
    Donc (jai pas encore tout decortiquer mais me semble que : )

     Cliquer ici pour révéler le texte


    C'est ce que j'utilise plus ou moins pour les dialogues lorsque mon NPC s'adresse au PJ :
    A savoir quand il le croise, quand il est foutu dehors, qu'il est resolicité etc

    La question que je me pose c'est comment pouvoir utiliser le bouton de dialogue (En bas a gauche) quand mon PNC est dans l'equipe pour que le PJ puisse lui parler quant il le souhaite.
    Si j'ecris les conditions telles que je les connais deja c'est mon NPC qui va initier le dialogue non? Ou bien je dois jongler avec son script pour lui donner une condition qui le rend pret a parler, mais qui ne prendra pas l'initiative du dialogue?

    (Oui je sais, c'est confus...)
    Dernière modification par Klare ; 21/04/2012 à 15h15.

  6. #6
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 569
    Pour être franc, il y a une éternité que je n'ai pas rebossé sur les dialogues. Pour l'instant, je ne fais que des tests rapides sur des parties de dialogue de mon mod et je ne me suis pas encore attaqué au gras de la chose.

    Mais de mémoire, si tu veux initier des dialogues entre tes persos avec le bouton "Dialogue" de l'écran, le principe est le même, en sachant que tu peux aussi jouer sur les WEIGHT #n, à rajouter en début de condition des lignes de dialogue, pour imposer un ordre d'apparition des sujets de discussion.

    Le plus simple, pour t'y retrouver, c'est de visualiser un fichier de dialogue déjà existant et d'aller vérifier dans les scripts correspondants comment les variables sont définies. Je pense notamment aux dialogues de banters et de romance. Tu y trouveras sans doute ton bonheur.
    N'oublie-pas que la plupart des problèmes que l'on rencontre en moddant ont déjà été résolus et que l'étude de l'existant offre bien des solutions...
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 03h00.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  7. #7
    Date d'inscription
    juillet 2003
    Localisation
    Plaisir
    Messages 
    6 990
    Le principe fondamental pour que le personnage principal puisse forcer un échange avec un PNJ, c'est justement que le PNJ en question n'ait rien à dire au personnage principal à l'instant en question. Sinon c'est la réplique que le PNJ devait prononcer qui va se déclencher.

    En d'autres termes, le cas où le personnage principal peut s'exprimer (principe des flirts dans les mods de romance), c'est justement qu'aucune des conditions présentes dans les IF ~condition~ THEN du dialogue du PNJ n'est vérifié. Cela correspond donc au pseudo-cas IF ~False~ THEN (aucune condition de vérifiée), sauf que ce n'est pas vraiment possible d'écrire cela comme ça.

    Un des mods qui utilise ce principe est BG1 NPC Project pour le composant "dialogues initiés par le joueur". Dans ce mod, c'est le fichier x#pcinit.d qui gère tous les cas. Si on élimine le code de compatibilité BGT, cela donne la chose suivante :

    Code:
    APPEND ~PersoJ~
    
    IF ~IsGabber(Player1)~ THEN BEGIN InterpellationPJ
    	SAY ~*Perso vous semble perdu dans ses pensées. Peut-être est-ce le moment de lui poser la question qui vous brûle les lèvres ?*~
    	IF ~~ THEN REPLY ~*Vous décidez que ce n'est pas le moment.*~ EXIT
    	IF ~~ THEN REPLY ~Blabla (discussion accessible autant de fois qu'on veut, donc sans condition)~ EXIT
    	IF ~condition particulière, Perso a été blessé~ THEN REPLY ~Est-ce que tu as bien récupéré ?~ DO ~SetGlobal de variable si nécessaire~ GOTO RecuperationBlessure
    	...
    END
    On vérifie d'abord que le joueur a bien sélectionné le personnage principal avant de parler. Ensuite, comme un dialogue débute forcément par une réplique du personnage dont c'est le fichier dialogue (donc ici le PNJ) puisque le personnage principal n'a pas de fichier dialogue, on utilise une forme descriptive à la place d'une réplique, puis on donne la main au joueur pour le choix des sujets de conversation, sous forme de réponses classiques.
    Dernière modification par Isaya ; 21/04/2012 à 23h58. Motif: Ajout du bout de phrase manquant
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  8. #8
    Date d'inscription
    avril 2012
    Localisation
    Picardie, fausses terres de la pluie annuelle.
    Messages 
    75
    Merci pour les explications.
    (J'ai par contre comme l'impression qu'il manque un bout de ton texte Isaya )

    Bon je pense avoir saisit l'idée de créer une situation ou le PNJ ne fait 'rien' pour pouvoir l'utiliser comme source mais la la commande APPEND ~PersoJ~ m'echape un peu.

    Deja, elle plante mon weidu présentée tel quelle (j'ai oublier quelque chose?)

    J'ai donc tenter de la transformer en BEGIN "#ZKlareJ" (histoire de copier les modèles BEGIN "#ZKlare" BEGIN "#ZKlareP" que j'utilise pour déterminer ma zone d'introduction au dialogue, et celle pour le rerecrutement)
    Sans succès.

    J'arrive toutefois a compiler maintenant que APPEND a disparu donc c'est bien la fonction qui me bloque l'installation du mod.

  9. #9
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 569
    APPEND sert à modifier un fichier de dialogue déjà existant.

    Si tu as écrit APPEND #KLARE alors que #KLARE.d n'existe pas, forcément, WeiDU n'apprécie pas du tout.

    Cette commande est souvent utilisée lorsque tu rajoutes des lignes ou des options de réponses à des dialogues existants, lorsque tu modifies carrément des lignes de dialogue existantes, ou bien encore, lorsque, comme moi, tu organises une partie des dialogues selon leur thématique.
    En l'occurrence, tous les dialogues de mes Dragons rouges sont dans le même fichier. Mais pour rajouter une rencontre aléatoire plus tard dans la campagne, j'utilise alors le APPEND GWDgnRg2 pour rajouter des lignes à ce dialogue car c'est plus facile à coder à ce moment-là que si je l'avais fait plus tôt.

    C'est pourquoi, le changement d'APPEND #ZKlareJ en BEGIN #ZKlareJ a résolu ton problème : tu ne pouvais pas modifier un fichier qui n'existait pas !
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 03h02.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  10. #10
    Date d'inscription
    avril 2003
    Localisation
    Bordeaux
    Messages 
    1 167
    Une autre possibilité qui fait planter la compilation d'un fichier .d contenant un APPEND est l'absence de l’instruction END a la fin de l'APPEND. En effet un APPEND doit se terminer par un END. C'est comme pour le
    IF ~~ THEN BEGIN Label

    Exemple :
    Code:
    BEGIN ~Dialogue1~
    
    IF ~Global("Variable1","GLOBAL",1)~ THEN BEGIN Label1
    SAY ~Blabla1~ IF ~~ THEN REPLY ~Réponse0101~ GOTO 0101 IF ~~ THEN REPLY ~Réponse0102~ GOTO 0102
    END ... APPEND ~Dialogue9~
    IF ~Global("Variable1","GLOBAL",9)~ THEN BEGIN Label1
    SAY ~Blabla9~ IF ~~ THEN REPLY ~Réponse0901~ GOTO 0901 IF ~~ THEN REPLY ~Réponse0902~ GOTO 0902
    END
    ... END // Fin du append
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 03h03. Motif: Mise en page
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
    Responsable de la maintenance du mod
    Kim

  11. #11
    Date d'inscription
    avril 2012
    Localisation
    Picardie, fausses terres de la pluie annuelle.
    Messages 
    75
    Merci pour vos reponse (j'ai encore pas mal de chose a bien saisir sur cette nouvelle commande de modification mais je reverais ca...)

    Dans l'etat actuel des choses j'ai toutefois noté
    Freddy : tu ne pouvais pas modifier un fichier qui n'existait pas !

    Donc je suis partit sur l'hypothese que je pouvais tenter de jongler avec un code normalement prevu pour le flirt et l'utiliser pour ma bestiole. (CF http://www.baldursgateworld.fr/lacou...e-romance.html tuto romance de la CdC)

    Si j'ai saisit le tuto, il faut deux elements :

    Le dialogue du NPC libre de toutes ses conditions :
     Cliquer ici pour révéler le texte

    Cette chose me servira de base pour mes autres dialogues comme disait Isarya

    Et apparement la modification du script de mon NPC pour qu'il permette l'acces au dialogue.
    La j'ai comme proposition :
     Cliquer ici pour révéler le texte


    Allegé pour mes objectifs en :
     Cliquer ici pour révéler le texte


    Or cette vilaine chose fait planter mon Weidu
     Cliquer ici pour révéler le texte


    La j'avoue ne pas comprendre (encore vous me direz.) Je vais relire le tutorial j'ai peu être mal vu/saisit/compris quelque chose
    Dernière modification par Klare ; 21/04/2012 à 23h56.

  12. #12
    Date d'inscription
    juillet 2003
    Localisation
    Plaisir
    Messages 
    6 990
    Klare, je n'ai jamais prétendu que le code que j'indiquais était utilisable tel quel. J'ai fait référence explicitement au code du mod BG1 NPC Project, en le schématisant pour montrer le principe.

    Comme je l'ai indiqué, ce genre de textes vient forcément en complément des banters dont dispose le PNJ (cf ce que j'ai écrit sur le fait qu'il fallait que le PNJ n'ait rien à dire à ce moment-là pour que ça fonctionne).
    Donc j'insiste : puisque c'est en complément, il faut impérativement que ces dialogues soit installés APRES les banters, sinon ils risquent de prendre le pas sur les banters que pourrait avoir le PNJ avec le personnage principal. D'ailleurs, dans le mod auquel j'ai fait référence, le composant "dialogues initiés par le joueur" s'installe forcément APRES les autres composants.

    Comme l'ont dit mes camarades, APPEND sert à ajouter des dialogues à un dialogue existant. C'est donc pour cela qu'on l'emploie dans ce cas : il faut impérativement avoir créé avant le dialogue pour les banters (BEGIN ~PersoJ~ ...).

    Edit (puisque j'ai commencé à répondre avant de voir ton message) :

    Ton problème de script vient probablement du fait que tu as des * en début de ligne avant des commandes et ça ne fonctionne pas. Ces étoiles dans le tutoriel sont des artefacts que je soupçonne de provenir des conversions de bases de données lors de migration de logiciel du forum.

    Le script de flirt ne sert à rien dans ton cas : c'est toi, en tant que joueur, qui forcera le début du dialogue. Un script sert, pour une romance, à faire en sorte que le PNJ décide d'entamer la discussion dans un contexte donnée, que ce soit pour un flirt ou un dialogue qui fait progresser la romance.
    Dernière modification par Isaya ; 22/04/2012 à 00h14.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  13. #13
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 569
    Désolé, je n'ai pas le temps de me plonger dans tes codes because l'appel du dodo, mais à priori, essaye :

    Code:
    StartDialogue(Player1)
    à la place de

    Code:
    *StartDialogue(Player1)
    * doit correspondre à un copier-coller de [TAB] ou quelque chose dans le genre. En tout cas, il fait planter WeiDU en début de ligne de commande d'action.
    Chaque action doit être écrite selon ce format :

    Code:
    IF
      liste de conditions
    THEN
      RESPONSE #100 (ou autre pourcentage)
        Action 1 (ex : CloseDoor("Door01"))
        Action 2 (ex : FaceObject(Player1))
        Action 3 (ex : StartDialogueNoSet(Player1))
        ....
    END
    Et pas
    Code:
      *Action 1
    ou quoi que ce soit devant ou accolé à l'intitulé de l'action.

    Ça réglera sans doute (ou peut-être...) le problème du message d'erreur, mais comme l'a indiqué Isaya, je ne suis pas certain que ça résolve ta problématique de départ.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 03h06.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  14. #14
    Date d'inscription
    avril 2012
    Localisation
    Picardie, fausses terres de la pluie annuelle.
    Messages 
    75
    Merci encore de vos conseils.

    Petit bilan :
    J'ai visiblement fait fausse route dans ma façon de faire [Notamment avec les flirtpacks que j'avais mal interprétés (comme me l'as indiqué une jolie boucle infinie de dialogue)]

    Quote Isaya :
    Comme je l'ai indiqué, ce genre de textes vient forcément en complément des banters dont dispose le PNJ (cf ce que j'ai écrit sur le fait qu'il fallait que le PNJ n'ait rien à dire à ce moment-là pour que ça fonctionne).
    Donc j'insiste : puisque c'est en complément, il faut impérativement que ces dialogues soit installés APRES les banters, sinon ils risquent de prendre le pas sur les banters que pourrait avoir le PNJ avec le personnage principal. D'ailleurs, dans le mod auquel j'ai fait référence, le composant "dialogues initiés par le joueur" s'installe forcément APRES les autres composants.
    Comme l'ont dit mes camarades, APPEND sert à ajouter des dialogues à un dialogue existant. C'est donc pour cela qu'on l'emploie dans ce cas : il faut impérativement avoir créé avant le dialogue pour les banters (BEGIN ~PersoJ~ ...).
    Donc au final je ne peux pas utiliser APPEND pour creer le dialogue initial de Klare mais seulement modifier les dialogues selon conditions.
    C'est un outil pratique mais cette facon de faire ne colle pas vraiment a mes objectifs initiaux... (ou alors je ne comprend pas le "comment")

    Si je n'ai pas de moyen d'utiliser le bouton de dialogue de la barre du PJ sur mon NPC pour lancer un dialogue particulier je pense que je vais tenter de créer un script qui se basera sur la démarche suivante :

    Utilisation item > Variable Global ON
    Lancement script du NPC
    Récupération de l'item si consomé
    Variable Global OFF
    Si NPC et PJ dispo > dialogue
    Sinon > rien
    fin

    Ca prendra un emplacement dans l'inventaire du PJ en revanche mais je pense que ca peut marcher.

  15. #15
    Date d'inscription
    décembre 2007
    Localisation
    Dordogne
    Messages 
    1 141
    Si je n'ai pas de moyen d'utiliser le bouton de dialogue de la barre du PJ sur mon NPC pour lancer un dialogue particulier je pense que je vais tenter de créer un script qui se basera sur la démarche suivante :

    Utilisation item > Variable Global ON
    Lancement script du NPC
    Récupération de l'item si consomé
    Variable Global OFF
    Si NPC et PJ dispo > dialogue
    Sinon > rien
    fin
    J'ai l'impression qu'on utilise un peu un buldozer pour écraser une mouche la. ¨¨ Pourrais tu me dire clairement ce que tu veux ? Tu veux déclencher le dialogue automatiquement ou pas ? Ou que ce soit charname qui l'initie ? Pourrais tu également nous copier coller ici ce que tu as déjà codé ? Qu'on soit un peu plus sur du concret...

    Parce que la j'ai l'impression qu'on part dans des élucubrations sans rien avoir de concret sous la dent. Personnellement j'attends de voir ce que tu as à nous montrer mais je pense que la solution est beaucoup plus simple que ce qui a pu être dis.

    http://toutlemondesontrolistes.blogs...nitiation.html
    Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe

  16. #16
    Date d'inscription
    juillet 2003
    Localisation
    Plaisir
    Messages 
    6 990
    Citation Envoyé par Klare Voir le message
    Donc au final je ne peux pas utiliser APPEND pour creer le dialogue initial de Klare mais seulement modifier les dialogues selon conditions.
    C'est un outil pratique mais cette facon de faire ne colle pas vraiment a mes objectifs initiaux... (ou alors je ne comprend pas le "comment")
    Puisque tu n'as pas encore créé de dialogue "J" pour ton personnage (si je comprends bien, tu le feras plus tard), remplace APPEND par BEGIN, de façon à créer le dialogue "J".

    Mais ce qu'il faut bien que tu retiennes, c'est que lorsque tu voudras créer les banters, il faudra IMPERATIVEMENT que tu les places dans le fichier source du dialogue (le fichier .d) AVANT tout le bloc qui gère l'interpellation par le PJ.
    La raison est simple : les banters doivent être en premier dans le fichier de façon à leur donner la priorité. Si tu mettais ton interpellation par le joueur en premier, le fait qu'elle ait des conditions "faibles", donc quasiment toujours vérifiées, feraient qu'elles empêcheraient l'apparition des répliques de banter, qui ont des conditions plus "fortes" (que l'autre PNJ soit là, que tel événement se soit produit, ...), à moins de recourir systématiquement au fameux WEIGHT pour les banters (ce serait une grosse complexité inutile de le faire).

    Au final, on peut voir les choses comme ça, pour être certain de bien respecter l'ordre :
    1. tu fais un fichier d pour les banters, qui commence par BEGIN ~PersoJ~ et finit par le END correspondant au BEGIN de départ (c'est à dire, pas le END du dernier bloc IF ... END précédent), où tu écris tes banters ;
    2. tu fais un autre fichier d (ou tu mets tout le contenu en question tout à la fin du précédent fichier), qui commence par APPEND ~PersoJ~ et finit par un END correspondant au APPEND ;
    3. dans le fichier tp2, tu fais bien attention à compiler les fichiers dans cet ordre.


    J'insiste sur le fait que si tu crées des dialogues que le joueur déclenchera, il ne faut rien chercher à faire dans un script. Un script sert à gérer les moments où le PNJ prendra l'initiative. Ceci n'a strictement rien à voir avec le fait d'utiliser un APPEND ou un BEGIN. Par ailleurs, le fait d'utiliser une condition IsGabber(Player1) pour le bloc qui gère les dialogues à l'initiative du joueur suppose que ce soit bel et bien le joueur qui le fasse. Dans le cas où tu ferais un script qui ferait prendre l'initiative au PNJ, il y a même des chances que cette condition ne marche pas et empêche le dialogue de se réaliser, produisant le message "n'a rien à vous dire".
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  17. #17
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 569
    Juste quelques petits conseils :


    1. D'après ce que j'ai lu sur le forum, c'est ta première expérience de modding, donc pas de panique : on s'est tous planté à un moment ou à un autre, et ce d'autant plus facilement qu'on s'attaque à différents aspects du jeu (graphisme, scripts, dialogues, kits et j'en passe et des meilleures...).
      Bref, c'est comme ça que tu pondras un produit jouable, quelque soit l'opinion que l'on s'en fait (personnellement, les nouveaux NPC, c'est pas mon truc, je préfère les nouvelles quêtes ou campagnes, mais ça ne m'empêche en rien d'apprécier la qualité du travail réalisé).
    2. Armand a bien résumé la situation : l'idéal serait que que tu te poses 5 minutes et que tu en profites pour mettre noir sur blanc ce que tu comptes faire exactement.
      • Ça te permettrait de prendre un peu de recul et d'être un peu moins "confus" comme tu l'as toi-même reconnu un peu plus haut. De plus, tu pourrais ainsi mieux déterminer ce qui ne fonctionne pas et ce que tu voudrais faire. Mais surtout ça nous permettrait de mieux t'aider.
      • Si j'ai bien compris, tu souhaites créer un nouveau NPc et pouvoir initier des dialogues avec lui indépendants du déroulement du jeu normal ou des nouvelles quêtes.
    3. Si c'est le cas, les conseils d'Isaya sont plus que pertinents. La difficulté dans ce genre de situation, c'est de ne pas interférer avec le déroulement "classique" des autres dialogues. Exemple : en cas de romance, ton dialogue peut se substituer à un bloc de dialogue nécessaire pour faire avancer les relations entre <CHARNAME> et son(sa) bien-aimé(e).
      D'où l'intérêt de créer ton dialogue de base, du style "Bonjour, je m'appelle la Mère Michu", "Je peux me joindre à vous ?", "Tiens, j'avais oublié de vous dire, je dois retrouver mon chat..." (BEGIN). Puis, tu en crées un autre contenant toutes les répliques diverses et variées entre ton NPC et les membres du groupe (APPEND). C'est à ce moment qu'il faudra bien gérer les conditions d'apparition à l'écran des bonnes lignes de dialogue et qu'on pourra te conseiller au mieux.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  18. #18
    Date d'inscription
    avril 2012
    Localisation
    Picardie, fausses terres de la pluie annuelle.
    Messages 
    75
     Cliquer ici pour révéler le texte


    Ci dessus mon .D

    Alors mon objectif actuel obtenir un NPC avec dialogue d'intro, de recrutement, de renvoi et un dialogue particulier lorsque l'on lui parle (qui offirira des reponses selon variables etc etc etc). (Les Banters et les réactions en jeu(interjection je crois) seront une etape ulterieure)

    Donc l'objectif c'est que lorsque charname initie le dialogue j'ai un texte, et non pas le "n'a rien a vous dire"

    Resumé des capacité du Npc : J'ai acces au dialogue d'intro grace a un script
    J'ai grace a mon tp2 les dialogues de recrutement/renvoit de disponibles
    APPEND ~pdialog.2da~
    ~CKlare CKlareP CKlareJ CKlareD~
    UNLESS ~CKlare~
    Dernière modification par Klare ; 23/04/2012 à 12h48.

  19. #19
    Date d'inscription
    juillet 2003
    Localisation
    Plaisir
    Messages 
    6 990
    Puisque tu crées un dialogue CKlareJ, il te suffit de reprendre un bloc inspiré de celui que je proposais, sans le APPEND, et de l'inclure juste après ton bloc "Antibanter" et avant le BEGIN "CKlareD".

    Citation Envoyé par Klare Voir le message
    BEGIN "CKlareD"
    ...
    APPEND ~pdialog.2da~
    ~CKlare CKlareP CKlareJ CKlareD~
    UNLESS ~CKlare~
    Il y a un truc qui cloche ici : dans le fichier pdialog.2da, la quatrième colonne, où tu as mis CKlareD, attend le nom d'un script, et non pas un dialogue. Autrement dit ton dialogue CKlareD ne sera jamais utilisé dans le jeu. Il te faudrait transférer le contenu que tu envisageais dans ce fichier vers un autre fichier : CKlareJ ou BCKlare, s'il s'agit de banter avec un autre PNJ.

    Si tu étudies le fichier pdialog.2da du jeu, tu verras qu'il utilise le nom AERIED pour Aerie dans cette colonne. Le fichier AERIED.DLG n'existe pas, c'est le fichier AERIE.BCS vers lequel cela renvoie. Il s'agit bien d'un script, qui sert à déclencher un dialogue juste avant le sommeil du groupe, dans certaines conditions.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  20. #20
    Date d'inscription
    avril 2012
    Localisation
    Picardie, fausses terres de la pluie annuelle.
    Messages 
    75
    Et finalement tout marche

    Un grand merci pour toutes ces explications (et pour votre patience, surtout pour votre patience.)

    EDIT :
    Et pus non petite question, si le 4 élément se doit d'etre un script, cette commande dans le tp2 permet aussi d'ajouter des scripts globaux?
    Dernière modification par Klare ; 23/04/2012 à 22h50.

  21. #21
    Date d'inscription
    décembre 2007
    Localisation
    Dordogne
    Messages 
    1 141
    Pour comprendre mieux je te suggère d'ouvrir near infinity et de regarder l'onlget 2da tu y retrouveras le fichier pdialog.2da, tu y une structure par tableau avec des colones et ces fameuix titre de colone ou tu a les script de ton personnage :


    * POST_DIALOG_FILE JOIN_DIALOG_FILE DREAM_SCRIPT_FILE...

    Donc non ce n'est pas un script "global" c'est simplement le script du personnage. Tu peux faire des scripts plus globaux par zone en patchant les zones ou sur le jeux entier en patchant un script global qui est unique (le baldur.bcs).


    Pour ton idée de dialogue sur le fonctionnement d'un flirt pack n'oublis pas de rajouter le trigger isgabber comme le disais isaya et le trigger cdstatenotvalid que nous n'avons pas encore mentionné dont le tuto anglo a été traduit par phoeunix dans le temps.

    http://toutlemondesontrolistes.blogs...nitiation.html
    Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe

  22. #22
    Date d'inscription
    juillet 2003
    Localisation
    Plaisir
    Messages 
    6 990
    Citation Envoyé par Armand Voir le message
    * POST_DIALOG_FILE JOIN_DIALOG_FILE DREAM_SCRIPT_FILE...

    Donc non ce n'est pas un script "global" c'est simplement le script du personnage.
    Attention Armand, le terme "script du personnage" est ambigu. En général ce terme désigne le script qui gère les événements liés au personnage, notamment les interactions et la romance.
    Celui qui est mentionné dans le fichier dialog.2da pourrait être qualifié de "script de veillée" du personnage, c'est à dire un script qui est lancé par le jeu au moment où le joueur demande à faire dormir le groupe. Ce script a pour vocation de gérer les dialogues de coucher, son contexte est sans ambiguïté le moment du sommeil.
    J'ai cru comprendre qu'on pouvait obtenir le même résultat dans le script général du personnage en utilisant certains triggers, mais je trouve que c'est une hérésie de procéder par ce moyen détourné alors que le jeu offre un moyen simple via le script désigné par le fichier dialog.2da.

    Bioware a bien différencié les deux pour ses personnages, en tout cas.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

Discussions similaires

  1. [KOTOR] Les Jedis et la Force
    Par Smidge dans le forum Knights of the Old Republic
    Réponses: 5
    Dernier message: 17/05/2011, 17h31
  2. [KIM] Bug, dialogue en boucle
    Par Raistlin dans le forum Kim
    Réponses: 5
    Dernier message: 26/10/2006, 18h33
  3. [MORRO] Potions de force accrue ?
    Par Saiko dans le forum L'île de Vvardenfell (Morrowind)
    Réponses: 8
    Dernier message: 29/07/2004, 14h59
  4. [MORRO] Malus de force inexpliqué
    Par Ignacio dans le forum L'île de Vvardenfell (Morrowind)
    Réponses: 11
    Dernier message: 26/03/2004, 21h29
  5. [Quête] Une force longtemps oubliée
    Par dragum dans le forum Les archives des quêtes de Melandis
    Réponses: 6
    Dernier message: 15/09/2003, 03h08

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 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257