Page 1 sur 1

[BANTERS] Je n'arrive pas à lancer les Banters de mon PNJ

Posté : sam. 11 févr. 2006, 12:47
par Shinook
J'ai épluché tous, ou presque tous les sujets sur la question, et bien que certains problèmes ressemblent au mien, je ne trouve pas de solution.

Je suis en train de coder certains banters pour mon mod, Flora, et j'ai voulu tester leur bon fonctionnement. Le problème, c'est qu'ils ne démarrent pas, que les banters soient enclenchées par Flora ou par un autre PNJ (ici, Minsc).
Les conditions d'enclenchement sont simples, simplement le fait que les deux PNJ soient dans le groupes, qu'ils soient valides pour se parler et qu'ils se voient.

Pour tous les dialogues de Flora, j'ai créé des fichiers .d différents (Flora.d pour le dialogue de départ et de recrutement, BFLORA.d pour ses banters et FLORAP.d dans le cas où elle serait renvoyée du groupe. Le FLORAJ.d n'est pas encore fait.).

Dans le tp2 du mod, j'ai ajouté les lignes à la fin :

Code : Tout sélectionner

APPEND ~pdialog.2da~
   ~FLORA        FLORAP        FLORAJ        FLORAD~
   UNLESS ~FLORA~
   UNLESS ~25POST~

APPEND ~interdia.2da~
   ~FLORA        BFLORA~
   UNLESS ~FLORA~
   UNLESS ~25FILE~
Aucun problème lorsque je lance WeiDU pour installer le mod, mais il y a déjà un premier problème. Je remarque dans Infinity Explorer la présence dans les .2da que j'ai mentionné la présence de Tashia et Kim (les seuls mods de PNJ que j'ai téléchargés comme exemples). Cependant, alors que j'ai les mêmes lignes de code dans le .tp2, je ne vois pas Flora, alors qu'elle devrait y apparaître, non ? C'est le premier constat.

Au cas où il aurait fallu un déclencheur extérieur, j'ai créé un script où j'ai mis les conditions d'enclenchement, et avec comme action Interact("Minsc") je n'ai testé qu'avec Minsc ). Mais ça ne marche pas non plus. Et dans la CLUA Console, lorsque je vérifie la variable concernée avec GetGlobal, elle ne m'indique pas le nombre (qui devrait être soit 1, soit 2), mais semble bien détecter la présence de la variable. Je précise pour le script que je l'ai indiqué dans la case Override du .cre.

J'ai demandé conseil à Garfield qui m'a suggéré de mettre tous les fichiers .d de Flora en un seul, dans le fichier que j'ai indiqué dans le .cre (Flora.d). Les différentes parties sont donc séparées grâce aux BEGIN ~XXXXXXX~. Mais ça ne fait rien de plus.


En fait, on dirait que le jeu "ne rattache pas" ces fichiers.d (transformés avant en .dlg dans le .tp2 la commande COMPILE) au personnage de Flora. Je ne vois pas du tout ce qui ne marche pas... que dois-je faire ?

Posté : sam. 11 févr. 2006, 15:25
par Isaya
Originally posted by Shinook@samedi 11 février 2006 à 12:47
En fait, on dirait que le jeu "ne rattache pas" ces fichiers.d ( transformés avant en .dlg dans le .tp2 la commande COMPILE ) au personnage de Flora. Je ne vois pas du tout ce qui ne marche pas... que dois-je faire ?
Le jeu ne rattache pas tout seul les fichiers au personnage. Il faut respecter certaines règles. La ligne que tu ajoutes dans le fichier InterDia.2DA doit commencer par le nom du personnage tel qu'il est indiqué dans la "script variable" (au sens Near Infinity), parfois aussi appelée "death variable", dans le fichier CRE. Sans quoi le jeu ne pourra pas faire le lien. Cette variable doit être unique parmi tous les personnages du jeu, au moins parmi les recrutables.
Si tu as respecté cette règle, vérifie qu'aucun autre personnage n'utilise pas le même nom (Near Infinity le permet).
De même, tu dois indiquer dans le fichier CRE le nom du fichier DLG initial. Enfin, je suppose que tu l'as fait sinon tu ne pourrais pas la recruter sans utiliser la combinaison de touches des cheat codes.

Normalement, tu peux créer autant de fichiers D que tu veux (en particulier, un par fichier DLG à créer). Assure-toi d'utiliser la bonne syntaxe pour désigner le fichier DLG dans le .D (BEGIN ou APPEND selon les cas).
As-tu vérifié si les fichiers DLG avaient été créés correctement ? Si oui, vérifie bien le fichier InterDia.2DA.
Autre suggestion : remplace dans ton script la commande Interact() par une autre commande (afficher au dessus du personnage, faire apparaître un monstre, ...). Vois si ça fonctionne. Sinon, ton problème vient du script et du problème de dialogue.

Posté : dim. 12 févr. 2006, 12:22
par Shinook
J'ai bien vérifié, la death variable que j'utilise ( flora ) est unique, et correspond bien à ce que j'ai marqué dans le tp2. En effet, j'ai aussi indiqué le nom du fichier DLG de départ, qui fonctionne très bien d'ailleurs.

J'ai également bien commencé chaque .d par BEGIN ( suivit de BFLORA, ou FLORAP, ou FLORA pour le .d de base ). Je retrouve bien les fichiers convertis en DLG dans le répertoire Override, mais quand je vérifie avec Infinity Explorer et Near Infinity, je ne les vois apparaître nulle part dans INTERDIA.2da ni dans PDIALOG.2da.

Bon, par contre, j'ai pas essayé ce que tu suggères à la fin de ton message, faute de temps, mais je doute franchement que ça marche, étant les problèmes évoqués précédemment.

Posté : dim. 12 févr. 2006, 16:51
par Isaya
J'ai peut-être compris où est ton problème.

Les lignes "UNLESS ~25FILE~" et "UNLESS ~25POST~" permettent de traiter le cas de l'ajout dans les fichiers d'une version BG2 sans ToB (ajout A MOINS QUE les textes indiqués ne soient présents dans le fichier). Pour que ton installation fonctionne avec ToB, il te faut aussi des blocs APPEND utilisant l'instruction IF ~25POST~ pour traiter le cas des fichiers dans ToB.

Exemple (dans Tashia) :

Code : Tout sélectionner

APPEND ~pdialog.2da~
   ~TASHIA        TASHIAP        TASHIAJ        TASHIAD~
   UNLESS ~TASHIA~
   UNLESS ~25POST~

APPEND ~pdialog.2da~
   ~TASHIA        TASHIAP        TASHIAJ        TASHIAD        TASHI25P        TASHI25J        TASHI25D        tash25~
   UNLESS ~TASHIA~
   IF ~25POST~

APPEND ~interdia.2da~
   ~TASHIA        BTASHIA~
   UNLESS ~TASHIA~
   UNLESS ~25FILE~

APPEND ~interdia.2da~
   ~TASHIA        BTASHIA        BTASHI25~
   UNLESS ~TASHIA~
   IF ~25FILE~

Posté : dim. 12 févr. 2006, 17:42
par Shinook
J'ai testé, mais ça ne change rien du tout... je me demande vraiment ce qui ne va pas... :snif:

Posté : lun. 13 févr. 2006, 21:44
par Isaya
Peux-tu préciser ce que tu as fait et le résultat, s'il te plaît ? Ce n'est clair pour moi.
Pense à préciser si tu as ToB. Dans ce cas, essaie simplement avec le code comprenant le IF ~25POST~, par exemple.
Si tu n'as toujours pas le fichier interdia.2DA de mis à jour, fais le à la main et vois si le reste fonctionne (le script avec le Interact). Si ça ne marche toujours pas, essaie la proposition que je te faisais pour vérifier que le script fonctionne mais n'échoue que sur la commande Interact. Autrement dit, essaie de t'approcher progressivement du problème en changeant un truc à la fois (méthode assez indispensable quand le problème est complexe et peut avoir plusieurs causes).

Posté : mer. 15 févr. 2006, 10:44
par Shinook
J'ai en effet ToB, et je me suis donc inspiré du script de Tashia en rajoutant les deux autres APPEND qui me manquaient, dans le même ordre indiqué. Lorsque j'installe, les deux fichiers .2da ne sont pas mis à jour, aucune trace nulle part...

En fait, je me suis dit que si déjà dans ces deux fichiers, ça ne marchait pas, alors dans le jeu ça ne marcherait pas non plus, ce qui serait logique.

Edit : Ca y est, ça marche !! :hein: En fait, il fallait bien rajouter ces deux blocs APPEND, mais je m'étais tromper, j'avais mis UNLESS ~25POST~ au lieu de IF ~25POST~ et UNLESS ~25FILE~ au lieu de IF ~25FILE~. Maintenant, test ! pour voir si ça marche.

Edit 2 : Dans le jeu, les banters marchent, et la commande Interact() enclenche bien le dialogue, je suis content, je vais pouvoir avancer :) .

Posté : mer. 15 févr. 2006, 20:04
par Kroc le bô
salut Shinook :)

Pour cause de toujours non réussite des Banters, je me demandais si tu pouvais me passer une copie du Script que tu as utilisé pour lancer le Banters et pourquoi pas un morceau de ton dialogue ( pas un énorme avec les spoils bien sur :) )

Evidemment, si ça te dérange pas. Ca m'aiderais sans doute beaucoup car je suis au points mort pour Eadem et j'aimerais avancer car j'ai d'autre idée de Pnj ( nottement un gnome Bonnet Rouge :diable: )

merci d'avance :)

Posté : ven. 17 févr. 2006, 12:39
par Shinook
Pour le script, le voici, ça pourra servir à d'autres, bien que ce soit seulement pour tester. C'est très simple comme script, et je l'ai mis dans le Script Override du .cre de Flora.

Code : Tout sélectionner

IF
  InParty(Myself)
  InParty("Minsc")
  IsValidForPartyDialog(Myself)
  IsValidForPartyDialog("Minsc")
  Global("MinscFloraTalk","LOCALS",0)
THEN
  RESPONSE #100
    SetGlobal("MinscFloraTalk","LOCALS",1)
    Interact("Minsc")
END
Après, pour les dialogues, je t'invite à aller voir The Road to Banter, LE tutorial sur les banters, et même si la langue te gêne, tu peux simplement recopier la "forme", et essayer de comprendre. :)

Posté : ven. 17 févr. 2006, 14:02
par Kroc le bô
T'inquiète pas, moi et l'anglais c'est le grand amour ! Par contre, merci beaucoup :) .