Affichage des résultats 1 à 22 sur 22

Discussion: [DLG] Dialogue de départ personnalisé

  1. #1
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043

    [DLG] Dialogue de départ personnalisé

    Le joueur décide de réorganiser son groupe et un PNJ en sort. Le PNJ dit une phrase bateau parmi les répliques possibles et s'en va. (sauf exception)

    Exemple:
    "Heureux de vous avoir rencontré et au revoir.Bonne nuit mesdames, mesdames bonne nuit."
    "Cela a été un vrai plaisir de partir à l'aventure avec vous. Heureux de vous avoir rencontré et au revoir."

    Je n'ai pas trouvé le dialogue qui contient ces phrases ni où est codé le script passant à ce dialogue de départ pour les PNJ.
    Je pense que c'est lié à ce type de script:
    ChangeAIScript("",DEFAULT)
    SetLeavePartyDialogFile()
    LeaveParty()

    J'ai géré un dialogue de départ permettant au PNJ de signaler qu'il resterait à disposition à l'Auberge du Heaume et de la cape (même logique que la Couronne de cuivre). Ce dialogue (adapté pour chacun) marche pour plusieurs PNJ sans problème. Mais pour certains, le PNJ se dirige vers le PLAYER1 et pas de dialogue. Le fichier dialogue n'est plus lié au PNJ. J'ai l'impression que pour certains PNJ, le départ du groupe est codé différemment dans BG.


    Exemple qui ne marche pas avec AJANTIS
    BEGIN ~IMOENP~

    IF ~!inparty(MySelf)
    Global("ImoenRecrut","GLOBAL",1)~ THEN BEGIN 1
    SAY @1 /* <CHARNAME>, Ca y est les ducs ont fait de vous le Protecteur du peuple! Gorion doit vous regarder avec fierté et moi je suis ravie pour vous. Je suis fin prête à vous accompagner dans cette nouvelle aventure!~ */
    IF ~~ THEN
    REPLY @2 /* ~Excellent, joigne toi à moi.~ */
    DO ~SetGlobal("ImoenRecrut","GLOBAL",2)
    JoinParty()~
    EXIT

    IF ~~ THEN
    REPLY @3 /* ~Je n'ai pas besoin de toi pour le moment.~ */
    EXIT
    END


    // Imoen congédiée du groupe
    IF ~!inparty(MySelf)
    Global("ImoenRecrut","GLOBAL",2)
    AreaCheck("AR7216")~ THEN BEGIN 2
    SAY @4 /* ~Je vais rester à l'auberge au cas où tu aurais besoin de moi.~*/
    IF ~~ THEN
    DO ~SetGlobal("ImoenRecrut","GLOBAL",1)
    MoveToPoint([190.905])~
    EXIT
    END

    IF ~!inparty(MySelf)
    Global("ImoenRecrut","GLOBAL",1)
    !AreaCheck("AR7216")~ THEN BEGIN 3
    SAY @5 /* ~Si tu as besoin de moi, je serai à l'auberge du Heaume et de la cape.~*/
    IF ~~ THEN
    DO ~SetGlobal("ImoenRecrut","GLOBAL",5)
    EscapeArea()~
    EXIT
    END
    Ce dialogue marche bien pour Imoen, Kivan par exemple mais pas pour Kagain ni Ajantis.


    Qui a des infos sur ce sujet?

    Cocrane
    Dernière modification par Cocrane ; 14/01/2018 à 22h19.

  2. #2
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages 
    6 827
    Je te renvoie à ce tutoriel ([TUTORIEL] Créer un NPC rapidement) de création de PNJ recrutable.
    Le dialogue remis en place au moment du départ est généralement nommé xxxxP.dlg. Il gère aussi le retour dans l'équipe.
    C'est la phase d'ajout du PNJ dans le fichier pdialog.2da qui stipule les noms des dialogues pour le renvoi et lorsqu'il intègre le groupe, auxquels on associe par homogénéité avec les développeurs les suffixes P et J.
    C'est pour cela que le jeu peut se contenter de SetLeavePartyDialogFile() sans avoir à préciser le nom.

    Le fait que le personnage se dirige vers le PJ semble bien coïncider avec un dialogue. Si tu n'as pas de texte d'erreur du jeu pour une absence de réplique prévue (j'ai oublié l'intitulé exact), il est possible que le fichier dialogue indiqué dans pdialog.2da n'ait pas été trouvé (nom incorrect ?).
    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 !

  3. #3
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Tout s'explique avec ton message.

    Dans le cadre de mon mod, j'ai créé de nouveaux fichiers dialogues. Pour faire simple et "en gros", j'ai ajouté la lettre 'P' au bou du nom du PNJ, "P" pour le mod "Protecteur".

    Selon les cas, le hasard a fait que le nom du fichier était identique à un fichier existant lié au dialogue de départ. J'ai donc écrasé le fichier d'origine sans m'en rendre compte. Le départ et le retour se passe avec
    mon dialogue.

    Le mieux est de:
    - modifier le fichier 2DA pour mettre mon fichier de dialogue.
    - écraser le fichier
    - autre

    Je vois dans le fichier plusieurs entêtes de colonne:
    POST_DIALOG_FILE
    JOIN_DIALOG_FILE
    DREAM_SCRIPT_FILE
    25POST_DIALOG_FILE
    25JOIN_DIALOG_FILE
    25DREAM_SCRIPT_FILE
    25OVERRIDE_SCRIPT_FILE

    Exemple:
    POST_DIALOG_FILE JOIN_DIALOG_FILE DREAM_SCRIPT_FILE 25POST_DIALOG_FILE 25JOIN_DIALOG_FILE 25DREAM_SCRIPT_FILE 25OVERRIDE_SCRIPT_FILE
    IMOENP IMOENJ IMOEND IMOENP IMOENJ IMOEND imoe25
    AJANTP AJANTJ *** AJANTP AJANTJ *** ***

    Ca fait beaucoup de fichiers dialogues et je suppose qu'il y a un évènement déclencheur pour chacun.

    Pour ma part, le dialogue PNJ étant simple je comptais utiliser un seul fichier.





    Cocrane

  4. #4
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages 
    6 827
    Tu comprends maintenant pourquoi la communauté a choisi d'utiliser un préfixe pour les fichiers afin de se démarquer les uns des autres...

    La façon de procéder dépend avant tout de la façon dont ton mod s'insère dans le jeu. A moins que tu ne fasses un mod comme BG1Tutu, qui une fois installé dans BG II empêche d'y jouer tant qu'on ne désinstalle pas le mod, tu n'as pas la liberté de toucher au fichier pdialog.2da sans casser le jeu.

    Pour les personnages existants, au lieu de faire un nouveau fichier, tu peux compléter le fichier existant. Tu pourrais t'appuyer sur l'ajout d'une variable un peu comme celle qu'utiliser BGT pour déterminer qu'on ne fait pas la transition vers BG II ("endofbg1" inférieure à 2) afin d'avoir des scripts ou des dialogues en continuité pour les personnages repris dans BG II tout en gardant un seul et même fichier. Par exemple

    Exemple pour KAGAIP.D de BGT décompilé par WeiDU :
    Code:
    IF WEIGHT #0 ~  False()
      GLOBAL("DebutProtecteur","GLOBAL",0) /* Ajout pour s'assurer que cela ne se déclenche que dans une partie normale */
    ~ THEN BEGIN 0 // from:
      SAY #81284 /* ~Oh, de toute façon, ma réputation s'est sans doute tassée à l'heure qu'il est. A toute, tas de nouilles.~ */
      IF ~~ THEN EXIT
    END
    
    IF WEIGHT #1 ~  Global("IWasKickedOut","LOCALS",0)
      GLOBAL("DebutProtecteur","GLOBAL",0)
    ~ THEN BEGIN 1 // from:
      SAY #81285 /* ~Vous manquez pas de mordant. Si jamais vous cherchez des muscles de nain dans l'coin, je suis votre homme !!!~ */
      IF ~~ THEN DO ~SetGlobal("IWasKickedOut","LOCALS",1)
    ~ EXIT
    END
    
    IF WEIGHT #0 ~  False()
      GLOBAL("DebutProtecteur","GLOBAL",1) /* Ajout pour s'assurer que cela ne déclenche qu'après le début de ton mod */
    ~ THEN BEGIN 0 // from:
      SAY @1234567 /* ~Ton nouveau message d'adieu pour Kagain.~ */
      IF ~~ THEN EXIT
    END
    
    Idem avec la même condition à 1 pour la réplique proposant de revenir dans le groupe
    De même il faudrait ajouter GLOBAL("DebutProtecteur","GLOBAL",0) aux autres cas de démarrage de dialogues pour la partie BG1 (surtout pour le dialogue J)
    Remarque : je ne suis certain à 100 % que la combinaison de False() et d'une autre condition fonctionne puisque le but de False() est d'attraper le cas où aucune condition prévue ailleurs dans le dialogue n'a déclenché. Néanmoins, au pire, il faudrait simplement remplacer False() par le test de ta variable.


    Pour le fichier pdialog.2da, comme les intitulés de colonnes l'expliquent il y a des dialogues et des scripts. Le numéro 25 fait référence à des dialogues / scripts exploités dans ToB (BG 2.5). Le script est utilisé par les romances. Les deux dialogues sont indispensables car ils correspondent au personnage dans et hors du groupe.
    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 !

  5. #5
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Tu comprends maintenant pourquoi la communauté a choisi d'utiliser un préfixe pour les fichiers afin de se démarquer les uns des autres...
    J'ai manqué effectivement de rigueur mais vu la montagne de choses à gérer, j'ai pris des raccourcis "dangereux". La plupart de mes fichiers sont avec le préfixe "CO" ou avec un "P" à une position improbable dans le fichier(DLG, ITEM et BAM). Pour les dialogues des pnj ça ne m'a pas réussi.

    Peux tu me donner le lien où je peux vérifier que mon préfixe est disponible et le réserver?

    La façon de procéder dépend avant tout de la façon dont ton mod s'insère dans le jeu. A moins que tu ne fasses un mod comme BG1Tutu, qui une fois installé dans BG II empêche d'y jouer tant qu'on ne désinstalle pas le mod, tu n'as pas la liberté de toucher au fichier pdialog.2da sans casser le jeu.
    Le Mod Protecteur de Baldur démarre à la mort de Sarevok et on reste sur les cartes de BG1. Actuellement, je l'ai moddé sous BGT.

    Pour éviter de générer des problèmes potentiels avec d'autres mods, je vais donc respecter la méthode de BG et mettre à jour les fichiers de dialogues de type P et J en suivant ton conseil. Je prends donc le fichier de dialogue d'origine et je le modifie. C'est ce fichier qui sera donc installé.
    Que se passe t'il si un autre moddeur fait de même? L'un écrasera l'autre. Il y a un mot clé pour ajouter des blocks et modifier des blocks existants?

    Vu pour le fichier Pdialogue, je vais l'utiliser uniquement pour la gestion du groupe.


    Cocrane
    Dernière modification par Cocrane ; 16/01/2018 à 21h10.

  6. #6
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 646
    Hé hé, ça me rappelle de très anciennes discussions.
    Mais il n'est jamais trop trad : dépêche toi de réserver CO ici. Pour l'instant, il n'est pas encore pris...
    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
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Oui c'est vrai .

    J'avais pas réussi à un créer un compte... Et du coup, ça m'avait soulé.

    En vieillissant, je gagne en patience. (enfin on y croit).

    Cocrane

  8. #8
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Je dois être bête car j'ai toujours le même problème.

    Je renseigne la fiche.

    Je signale que c'est Khalid le mari de Jaheira. Je valide, je reste sur la page.

    Et j'ai un refus:

    The Following Errors Were Found
    Please fill the "Security" field correctly. This helps us to prevent the Lair from being beset by automated bots.
    Je clique sur "answer ICI" et je passe sur une autre page parlant de la communauté.

    J'ai raté quoi?

    Cocrane

  9. #9
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Je viens de travailler sur les dialogues d'un nouveau PNJ à recruter.

    Le dialogue de 1ière rencontre et d'entrée dans le groupe| OSWLAD: OK

    Le dialogue de départ| OSWLAP: OK

    Le dialogue de retour| OSWLAJ: KO
    > C'est le dialogue de départ qui se lance.

    .D
    BEGIN ~OSWALD~

    // 1ière rencontre
    IF ~!InParty(Myself)
    NumTimesTalkedTo(0)~ THEN BEGIN 0
    SAY @1 /* ~Protecteur, mon nom est Oswald et j'appartenais à la garde ducale. Mon bras est solide et mon coeur courageux. Je tiens à servir ma cité et je serai honnoré de mettre ma lame au service d'un héros tel que vous.~ */

    IF ~~ THEN
    REPLY @2 /* ~Je t'accepte avec plaisir dans mon équipe.~ */
    DO ~SetGlobal("OswaldRecrut","GLOBAL",2)
    JoinParty()~
    EXIT

    IF ~global("OSWALDpourquoi","GLOBAL",0)~ THEN
    REPLY @3 /* ~Pourquoi tu ne fais plus partie de la garde ducale?~ */
    DO ~setglobal("OSWALDpourquoi","GLOBAL",1)~
    GOTO 1

    IF ~~ THEN
    REPLY @4 /* ~Il n'y a pas de place pour toi dans mon groupe pour le moment.~ */
    EXIT
    END

    IF ~~ THEN BEGIN 1
    SAY @5 /* ~Pour être franc (géné), Macros voit des ennemis potentiels partout. Il a remplacé une grande partie de la garde dès son arrivée. De bon soldats ont été remerciés... Prenez moi dans votre équipe et vous ne le regretterez pas!~ */

    IF ~~ THEN
    REPLY @2 /* ~Je t'accepte avec plaisir dans mon équipe.~ */
    DO ~SetGlobal("OswaldRecrut","GLOBAL",2)
    JoinParty()~
    JOURNAL @6 /* ~Macros, responsable de la sécurité des ducs, a remplacé une grande partie de la garde ducale à son arrivée. D'après Oswald, ancien garde ducal, il voit des ennemis partout...~ */
    EXIT

    IF ~~ THEN
    REPLY @4 /* ~Il n'y a pas de place pour toi dans mon groupe pour le moment.~ */
    JOURNAL @6 /* ~Macros, responsable de la sécurité des ducs, a remplacé une grande partie de la garde ducale à son arrivée. D'après Oswald, ancien garde ducal, il voit des ennemis partout...~ */
    EXIT
    END



    // Sortie du groupe ********************************************************************************************************************************
    BEGIN ~OSWALP~

    IF ~AreaCheck("AR7216")~ THEN BEGIN 0
    SAY @1000 /* ~Je vais rester à l'auberge au cas où tu aurais besoin de moi.~*/
    IF ~~ THEN
    DO ~MoveToPoint([190.905])~
    EXIT
    END

    // Bloqué dans le temple de Bhaal
    IF ~Global("Bhaal_temple_bloque","GLOBAL",1)~ THEN BEGIN 1
    SAY @1002 /* ~J'aurai choisi un autre moment pour nous séparer mais c'est vous le chef. Je vais trouver une sortie et retourner à l'auberge.~*/
    IF ~~ THEN
    DO ~EscapeArea()~
    EXIT
    END

    IF ~!AreaCheck("AR7216")~ THEN BEGIN 2
    SAY @1001 /* ~Si tu as besoin de moi, je serai à l'auberge du Heaume et de la cape.~*/
    IF ~~ THEN
    DO ~EscapeArea()~
    EXIT
    END



    // Retour dans le groupe *****************************************************************************************************************************
    BEGIN ~OSWALJ~

    IF ~True()~ THEN BEGIN 0
    SAY @1100 /* ~Si tu as besoin de moi, je suis prêt à te rejoindre.~ */

    IF ~~ THEN
    REPLY @1001 /* ~Oui, tu es le bienvenu.~ */
    DO ~JoinParty()~
    EXIT

    IF ~~ THEN
    REPLY @1102 /* ~Il n'y a pas de place pour toi dans mon groupe pour le moment.~ */
    EXIT
    END

    Pdialogue.2DA
    OSWALD OSWALP OSWALJ *** OSWALP OSWALJ *** ***
    TP2
    COMPILE ~PDBA1CH8\DLG\OSWALD.d~ ~override~ USING ~PDBA1CH8\DLG\OSWALD.tra~
    APPEND ~pdialog.2da~
    ~OSWALD OSWALP OSWALJ *** OSWALP OSWALJ *** ***~
    UNLESS ~OSWALD~
    Je ne vois pas où est le problème.

    J'ai l'impression que j'ai mal compris le rôle de OSWALJ. C'est pour le dialogue lorsque Oswald est dans le groupe? pas pour retourner dans le groupe. Mais je vois des NPC avec des dialogues sans J et P...

    Cocrane

  10. #10
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 646
    Je n'ai jamais créé de NPC, mais voici le code utilisé par Ajantis :

    Code:
    //Dialoguesets 
    APPEND ~pdialog.2da~
    ~C#Ajantis 	C#AjanP 	C#AjanJ 	C#AjanD 	C#Aja25P 	C#Aja25J 		C#Aja25D 	C#Ajan25~
    UNLESS ~C#Ajantis~
    
    
    APPEND ~interdia.2da~
    ~C#Ajantis 	C#AjanB      C#Aja25B~
    UNLESS ~C#Ajantis~
    Comparé au tien, il semble manquer des fichiers, notamment pour ToB.

    Sinon,

    An NPC has 3 different dialogs attached to it:
    1. E)THEA.d - Initial dialog
    2. E)THEAP.d - Post-party dialog (this runs after kicking our NPC from the party)
    3. E)THEAJ.d - Join-party dialog (this runs while the NPC is in the party)

    Again, note that the name of our dialogs can be at most 8 characters long. You’re free to use any name you want, but it’s a good idea to use your NPC’s name, suffixed by P and J .
    Dans ton cas :

    premier dialogue --> OSWALD
    après départ : OSWALDP
    autres dialogues une fois dans le groupe : OSWALDJ

    Si ton code est OSWAL ==> OSWAL, OSWALP, OSWALJ

    Edit : Je t'ai envoyé un mail pour BWL.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  11. #11
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Ok, c'est bien ce que je pensais au final:
    - dialogue d'initial (première rencontre)
    OSWALD

    - dialogue de départ et de retour dans le groupe
    OSWALP

    - dialogue une fois que le PNJ est dans le groupe
    OSWALJ

    Il reste plus qu'à paramétrer tout ça.


    Reste le point ci-dessous à traiter:

    La façon de procéder dépend avant tout de la façon dont ton mod s'insère dans le jeu. A moins que tu ne fasses un mod comme BG1Tutu, qui une fois installé dans BG II empêche d'y jouer tant qu'on ne désinstalle pas le mod, tu n'as pas la liberté de toucher au fichier pdialog.2da sans casser le jeu.
    Le Mod Protecteur de Baldur démarre à la mort de Sarevok et on reste sur les cartes de BG1. Actuellement, je l'ai moddé sous BGT.

    Pour éviter de générer des problèmes potentiels avec d'autres mods, je vais donc respecter la méthode de BG et mettre à jour les fichiers de dialogues de type P et J en suivant ton conseil. Je prends donc le fichier de dialogue d'origine et je le modifie. C'est ce fichier qui sera donc installé.
    Que se passe t'il si un autre moddeur fait de même? L'un écrasera l'autre. Il y a un mot clé pour ajouter des blocks et modifier des blocks existants?

    Cocrane

  12. #12
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 646
    Tu trouveras ton bonheur dans le chapitre 8 de la doc WeiDU : comment ajouter une réplique à un dialogue existant, une interaction avec un nouveau personnage, etc...
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  13. #13
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    La doc Weidu ne m'a pas du tout inspirée.

    Du coup, j'ai jeté un oeil sur le TP2 de quelques mods.

    1- Ajouter un nouveau block à un DLG existant
    .D avec un APPEND

    Sans avoir cherché ça me semble être la solution.

    2- Modifier le contenu d'un block existant

    On repère un texte et on fait une substitution.
    COPY_EXISTING ~B!GavinJ.dlg~ ~override~
    DECOMPILE_AND_PATCH BEGIN
    REPLACE_TEXTUALLY ~\(TakePartyItem("[_]RINGJOS")\)~ ~\1 GiveItem("%tutu_var%RINGJOS","%tutu_scriptbg%FTOWN2")~
    END
    BUT_ONLY_IF_IT_CHANGES


    COPY_EXISTING ~halbaz.dlg~ ~override~
    DECOMPILE_AND_PATCH BEGIN
    // Ajoute des variables pour savoir si Garrick a eu l'armure de barde rajoutée par le BG1NPC (2/2)
    REPLACE_TEXTUALLY CASE_SENSITIVE EXACT_MATCH ~GiveItemCreate("X#GARCH2",Player1,1,0,0)~ ~GiveItemCreate("X#GARCH2",Player1,1,0,0) SetGlobal("gtt#armuregarrick","GLOBAL",2)~
    END
    C'est la bonne méthode?


    Je suis tombé sur ce code.
    // explication des chansons
    OUTER_SET nbdiaggarrcharname = STATE_WHICH_SAYS 3614 IN ~bg1npc/tra/%s/X#PCINIT.tra~ FROM garrij



    Cocrane
    Dernière modification par Cocrane ; 17/01/2018 à 21h09.

  14. #14
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 646
    Tout dépend de ce que tu veux faire : ajouter une réplique à bloc de dialogue existant, modifier les conditions des répliques, les actions d'une réplique... Pour chaque cas, il existe une commande spécifique.
    Attention toutefois aux problèmes de compatibilité entre mods : si un mod modifie déjà un bloc, il faut faire très attention au code que l'on emploie.

    Par ailleurs, la dernière fonction que tu évoques permet de retrouver l'indice d'une réplique d'un dialogue, très utile en cas de dialogue modifié par un mod.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  15. #15
    Date d'inscription
    September 2017
    Localisation
    Bretagne
    Messages 
    624

    Les intonnations dans les dialogues.

    Bonjour Cocrane.

    Comme je commence à faire les voix que tu m'a demandées; j'en arrive à un point important que toute personne qui à faite du théâtre se posera: Quel ton employer dans les phrases?

    Souvent c'est évident; mais entre le narratif, l'interrogatif, la boutade; il y a une marge certaine. Donc pour ne pas perdre notre temps en dizaines d'essais, il serait bien que tu le rajoute dans le fichier pour les voix, comme pour les pièces de théatre, comment doit être dite la phrase.

    Désolé de t'embêter avec cela; mais sinon tu auras des textes aussi mauvais, voire plus que ceux d'origines du premier Baldur.

    Amicalement.

    Al
    Photos de mon mod dans mon profil, pour ceux qui désirent voir à quoi cela ressemble. S'il n'y a rien, c'est que je n'ai toujours pas eu le loisir d'en mettre.

    Al

  16. #16
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Almaguemnon> je te fais un retour demain. Quel PNJ as tu choisi?


    Freddy>
    pour le moment, j'ai eu besoin de modifier les conditions et d'ajouter un block.

    Je suis intéressé par le code pour ajouter une réplique. (je pense que ça peut servir. :-))

    Là j'avance, sur le codage de tous les PNJ recrutables d'origine BG1 que je vais proposer.

    Cocrane
    Dernière modification par Cocrane ; 20/01/2018 à 15h45.

  17. #17
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Au niveau de la gestion des PNj, j'ai un soucis avec les recrutements par 2.

    Je prends en exemple, Jaheira + Khalid.

    Lorsque l'un des 2 est exclu du groupe, je veux qu'au final ils restent sur la carte en attente.

    La personne exclue va voir le Charname puis se positionne: OK
    La 2nd personne, se retrouve exclue, va se positionner puis va aussi voir le Charname: KO

    Comment empêcher proprement la 2nd personne d'aller discuter avec le charname?

    Pour info, voici le code pour Jaheira:

    APPEND ~JAHEIRAP~

    // 1iere rencontre dans le mod: recrutement possible
    IF WEIGHT #0 ~Global("Protecteur_baldur","GLOBAL",1)
    Global("IWasKickedOut","LOCALS",0)
    Global("recrut_init","LOCALS",0)~ THEN BEGIN 0
    SAY @1 /* ~Félicitations, votre titre est amplement mérité. Dommage que Gorion ne soit plus de ce monde pour vous féliciter à son tour. Khalid et moi mmême serions ravis d'intégrer votre groupe.~ */
    IF ~~ THEN
    REPLY @2 /* ~Le plaisir est partagé. Rejoignez moi.~ */
    DO ~ActionOverride("KHALID",JoinParty())
    SetGlobal("recrut_init","LOCALS",1)
    JoinParty()~
    EXIT

    IF ~~ THEN
    REPLY @3 /* ~Restez dans le coin, votre aide pourrait être utile.~ */
    DO ~SetGlobal("recrut_init","LOCALS",1)
    SetGlobal("IWasKickedOut","LOCALS",1)
    MoveToPoint([965.487])~
    EXIT
    END


    // Xième rencontre: recrutement possible
    IF WEIGHT #0 ~Global("Protecteur_baldur","GLOBAL",1)
    Global("IWasKickedOut","LOCALS",1)
    Global("recrut_init","LOCALS",1)~ THEN BEGIN 1
    SAY @4 /* ~Auriez-vous besoin de notre aide?~ */
    IF ~~ THEN
    REPLY @5 /* ~Oui, rejoint moi.~ */
    DO ~ActionOverride("KHALID",SetGlobal("IWasKickedOut","LOCALS",0))
    ActionOverride("KHALID",JoinParty())
    SetGlobal("IWasKickedOut","LOCALS",0)
    JoinParty()~
    EXIT

    IF ~AreaCheck("AR7216")~ THEN
    REPLY @3 /* ~Restez dans le coin, votre aide pourrait être utile.~ */
    DO ~MoveToPoint([965.487])~
    EXIT

    IF ~!AreaCheck("AR7216")~ THEN
    REPLY @3 /*~Restez dans le coin, votre aide pourrait être utile.~ */
    EXIT
    END


    // Exclu du groupe
    IF WEIGHT #0 ~Global("Protecteur_baldur","GLOBAL",1)
    Global("IWasKickedOut","LOCALS",0)
    Global("recrut_init","LOCALS",1)~ THEN BEGIN 2
    SAY @6 /* ~Je pense que c'est une erreur mais c'est à vous de décider. Khalid et moi nous vous laissons.~ */

    IF ~AreaCheck("AR7216")~ THEN
    REPLY @3 /* ~Restez dans le coin, votre aide pourrait être utile.~ */
    DO ~ActionOverride("KHALID",SetGlobal("IWasKickedOut","LOCALS",1))
    ActionOverride("KHALID",LeaveParty())
    ActionOverride("KHALID",MoveToPoint([965.487]))
    SetGlobal("IWasKickedOut","LOCALS",1)
    MoveToPoint([965.487])~
    EXIT

    IF ~!AreaCheck("AR7216")~ THEN
    REPLY @7 /* ~Retournez à l'auberge, votre aide pourrait être utile.~ */
    DO ~ActionOverride("KHALID",SetGlobal("IWasKickedOut","LOCALS",1))
    ActionOverride("KHALID",LeaveParty())
    ActionOverride("KHALID",EscapeAreaMove("AR7216",965,487,10))
    SetGlobal("IWasKickedOut","LOCALS",1)
    EscapeAreaMove("AR7216",965,487,10)~
    EXIT
    END

    END


    Cocrane

  18. #18
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    J'ai un autre soucis.

    J'ai refait une install complète de mod pour tout retester et j'ai le soucis suivant.

    Le fichier Pdialog.2da ne contient plus l'ensemble des PNJ. Si j'en colle un complet et que je relance l'installation. Idem les PNJ de BG1 disparaissent de la liste et mes nouveaux PNJ sont bien présents. De plus, la structure est différente.

    Avant installation
    [DLG] Dialogue de départ personnalisé-avantinstall.jpg

    Après installation.
    [DLG] Dialogue de départ personnalisé-apresintall.jpg

    Code dans mon TP2:
    COPY_EXISTING ~MONTAP.dlg~ ~override~
    DECOMPILE_AND_PATCH BEGIN
    REPLACE_TEXTUALLY ~GlobalLT("ENDOFBG1","GLOBAL",2)~ ~GlobalLT("ENDOFBG1","GLOBAL",2) Global("Protecteur_baldur","GLOBAL",0)~
    END
    BUT_ONLY_IF_IT_CHANGES
    COMPILE ~PDBA1CH8\DLG\MONTAP.d~ ~override~ USING ~PDBA1CH8\DLG\MONTAP.tra~

    COPY_EXISTING ~XZARP.dlg~ ~override~
    DECOMPILE_AND_PATCH BEGIN
    REPLACE_TEXTUALLY ~GlobalLT("ENDOFBG1","GLOBAL",2)~ ~GlobalLT("ENDOFBG1","GLOBAL",2) Global("Protecteur_baldur","GLOBAL",0)~
    END
    BUT_ONLY_IF_IT_CHANGES
    COMPILE ~PDBA1CH8\DLG\XZARP.d~ ~override~ USING ~PDBA1CH8\DLG\XZARP.tra~

    // Nouveaux PNJ
    COMPILE ~PDBA1CH8\DLG\OSWALP.d~ ~override~ USING ~PDBA1CH8\DLG\OSWALP.tra~
    APPEND ~pdialog.2da~
    ~OSWALD OSWALP OSWALJ *** OSWALP OSWALJ *** ***~
    UNLESS ~OSWALD~
    C'est comme si mon code retirait les lignes du PDIALOG.

    Et bien sur le dialogue ne se déclenche plus avec le bon texte. :-)


    Qu'en pensez-vous?

    Cocrane

  19. #19
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 646
    Bizarre, bizarre... Vous avez dit bizarre ?

    Testé avec WeiDU 246 et le pdialog.2da de ToB, ça fonctionne (cf. fichier joint) :

    Code:
    APPEND ~pdialog.2da~
    ~OSWALD       OSWALP             OSWALJ            ***            OSWALP             OSWALJ                ***                   ***~
    UNLESS ~OSWALD~
    Soit c'est un problème d'espaces entre les valeurs (ce dont je doute fort), soit ton fichier 2da a été corrompu par un autre mod installé avant le tien. Tu devrais vérifier quels mods le modifient.
    Fichiers attachés Fichiers attachés
    Dernière modification par Freddy_Gwendo ; 17/10/2018 à 11h55.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  20. #20
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    Je vois que dans ton fichier PDIALOG.2DA, il n'y a pas les PNJ de BG1.

    Est ce normal dans une install BGT avec TOB?

    Cocrane

  21. #21
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 646
    Normal :

    Citation Envoyé par Freddy_Gwendo Voir le message

    Testé avec WeiDU 246 et le pdialog.2da de ToB
    Comme je n'ai pas d'installation BGT sous la main, je l'ai testé sur BG2-ToB.

    Le code que j'ai testé devrait fonctionner avec un fichier pdialog.2da de BGT qui ajoute les données de BG1 à celles de BG2. Si ça ne fonctionne pas sur ta machine, soit ta version de WeiDU a un souci, soit c'est le fichier 2da qui a un souci avant d'être patché.

    Ceci dit, si tu me donnes en pièces jointes ton fichier 2da BGT (renommé txt pour que le logiciel du forum l'accepte), je peux faire un test dessus.
    Dernière modification par Freddy_Gwendo ; 19/10/2018 à 09h48.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  22. #22
    Date d'inscription
    March 2010
    Localisation
    Paris
    Messages 
    1 043
    En utilisant ton fichier comme base. Je n'ai plus de problème de pertes de lignes.

    J'ignore l'origine du problème dans le fichier de départ mais vu que ça marche à nouveau, j'avance sur le reste. :-).

    Cocrane

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/10/2017, 17h29
  2. [D:OS2][AVIS] Personnage origin ou personnage personnalisé ?
    Par Valian dans le forum Divinity : Original Sin 2
    Réponses: 5
    Dernier message: 01/10/2017, 18h09
  3. [BGT] Niveau de départ > 6
    Par 4lexoid dans le forum Baldur's Gate Reloaded : les mods TUTU et Baldur's Gate Trilogy
    Réponses: 3
    Dernier message: 05/09/2013, 08h25
  4. Réponses: 21
    Dernier message: 24/04/2012, 21h24

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