Baldur's Gate et Dragon Age | La Couronne de Cuivre
Merci de prendre connaissance des conditions d'utilisation des forums, des blogs et du chat

Précédent   Baldur's Gate et Dragon Age | La Couronne de Cuivre > La Forge de GrondMarteau > La Forge des Apprentis > Problèmes Techniques

Problèmes Techniques
Un problème technique lors de la création d'un mod? Exposez votre probleme et les membres vous aideront de leur mieux.

Réponse
 
Outils de la discussion Noter la discussion
Vieux 06/03/2008, 18h42   #1
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut 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?
Nightmare est déconnecté   Réponse avec citation
Vieux 06/03/2008, 22h38   #2
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut 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.
Isaya est déconnecté   Réponse avec citation
Vieux 07/03/2008, 20h25   #3
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut 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.
Nightmare est déconnecté   Réponse avec citation
Vieux 07/03/2008, 21h37   #4
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut 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.
Isaya est déconnecté   Réponse avec citation
Vieux 07/03/2008, 22h06   #5
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut 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.
Nightmare est déconnecté   Réponse avec citation
Vieux 08/03/2008, 13h46   #6
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut 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.
Isaya est déconnecté   Réponse avec citation
Vieux 09/03/2008, 09h15   #7
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut 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.
Nightmare est déconnecté   Réponse avec citation
Vieux 09/03/2008, 12h05   #8
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut 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, ...
Isaya est déconnecté   Réponse avec citation
Vieux 09/03/2008, 21h40   #9
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut 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?
Nightmare est déconnecté   Réponse avec citation
Vieux 10/03/2008, 20h07   #10
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut 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 !
Isaya est déconnecté   Réponse avec citation
Vieux 10/03/2008, 20h14   #11
Magnus
Goule
 
Avatar de Magnus
 
Date d'inscription: décembre 2007
Messages: 479
Par défaut 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.com/laco...nematique.html

Dernière modification par Magnus ; 10/03/2008 à 20h21.
Magnus est déconnecté   Réponse avec citation
Vieux 10/03/2008, 20h45   #12
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut 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.
Nightmare est déconnecté   Réponse avec citation
Vieux 10/03/2008, 20h58   #13
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut 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 ([INDEX] Le marteau ? Où est le marteau ?) dont le nom, il est vrai, est peu indicatif de son contenu suite à la perte de son sous-titre.
Isaya est déconnecté   Réponse avec citation
Vieux 14/03/2008, 20h12   #14
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut 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 ?
Nightmare est déconnecté   Réponse avec citation
Vieux 14/03/2008, 21h14   #15
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut 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.
Isaya est déconnecté   Réponse avec citation
Vieux 14/03/2008, 22h46   #16
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut Re : Dialogue : comment traiter des conditions différentes

Oui d'accord j'y penserai.
Merci bien
Nightmare est déconnecté   Réponse avec citation
Vieux 17/03/2008, 22h24   #17
Nightmare
Chien de Guerre
 
Avatar de Nightmare
 
Date d'inscription: janvier 2008
Messages: 68
Par défaut 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.
Nightmare est déconnecté   Réponse avec citation
Vieux 17/03/2008, 23h16   #18
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1&nb