Page 1 sur 2
[PNJ] Mon PNJ n'apparaît pas dans le jeu
Posté : lun. 20 déc. 2004, 18:54
par Garfield
Voila, je suis en train de créer un mod Dynahéïr, ou du moins d'essayer. Je me suis référer a un tutorial de pocket plane dispo
ici.
j'arrive a faire apparaitre la sorcière dans la zone désiré et elle me parle comme si je l'avais renvoyé et s'en va...
Je pense que ceci est du au fichier .D. Je le met ci-dessous si quelqu'un peu me dire si le problème vient effectivement de là.
Code : Tout sélectionner
BEGIN J#Dyna
IF ~NumTimesTalkedTo(0)~ THEN BEGIN FirstMeeting
SAY ~PAr Mystra <CHARNAME>! Je suis de nouveau vivante!Vous m'avez rescucité? Puis je me joindre de nouveau a ton groupe?.~
IF ~~ THEN REPLY ~Bien sur, nous t'attendions.~ DO ~SetGlobal("DynaJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~Non, profite de la vie qu'on t'a rendu et part!.~ EXIT
END
IF ~~ THEN BEGIN GoAway
SAY ~Très bien <CHARNAME> si c'est ta volonté...~
IF ~~ THEN EXIT
END
BEGIN J#DynaP
IF ~Global("DynaJoined","LOCALS",1)~ THEN BEGIN KickOut
SAY ~Tu souhaite mon départ?.~
IF ~~ THEN REPLY ~Pas du tout, Dynahéir, juste un moment de fatigue.~ DO ~JoinParty()~ EXIT
IF ~~ THEN REPLY ~Oui, tu ne nous est pas utile pour l'instant.~ DO ~SetGlobal("DynaJoined","LOCALS",0)~ EXIT
END
IF ~Global("DynaJoined","LOCALS",0)~ THEN BEGIN Rejoin
SAY ~Tiens donc, je croyais avoir perdu mon utilité?~
IF ~~ THEN REPLY ~Désolé, nous séparer était une erreur.~ DO ~SetGlobal("DynaJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~C'est exact, je voulais juste voir si tu n'était pas pétrifiée.~ EXIT
END
Voila, merci
EDIT: pour ceux qui ont lu avant, elle n'est plus cerclée de vert mais bien de bleu, mais elle me parle toujours de la même façon
Posté : lun. 20 déc. 2004, 19:32
par Angelus Crow
Il manque un GOTO GoAway :
Code : Tout sélectionner
BEGIN J#Dyna
IF ~NumTimesTalkedTo(0)~ THEN BEGIN FirstMeeting
SAY ~PAr Mystra <CHARNAME>! Je suis de nouveau vivante!Vous m'avez rescucité? Puis je me joindre de nouveau a ton groupe?.~
IF ~~ THEN REPLY ~Bien sur, nous t'attendions.~ DO ~SetGlobal("DynaJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~Non, profite de la vie qu'on t'a rendu et part!.~ [B][color=red]GOTO GoAway[/color][/B]
END
IF ~~ THEN BEGIN GoAway
SAY ~Très bien <CHARNAME> si c'est ta volonté...~
IF ~~ THEN EXIT
END
Tu as un bloc mais tu ne l'utilises pas (enfin, je suppose que tu veux l'utiliser à ce moment là
).
Sinon je ne vois pas trop... Quel(s) dialogue(s) est(sont) enclenché(s) lorsque tu parles ?
Il manquera peut-être aussi un :
Si jamais tu veux lui reparler après lui avoir dit non mais sans l'avoir virée.
J'espère que ça aidera.
Posté : lun. 20 déc. 2004, 19:36
par Garfield
Toutes les paroles de ce dialogues doivent êtres inscrite dans le fichier dialog.tlk?
Posté : lun. 20 déc. 2004, 19:48
par Angelus Crow
Comment ça ? :heu:
Tous tes dialogues seront écrits dans un fichiers *.D ou plusieurs, c'est selon : les banters, les interractions, les dialogues de rencontre et de renvoi du PnJ.
C'est lors de la compilation que WeiDU rajoute les dialogues au *.tlk et à l'override en les transformant en *.dlg (qu'on me corrige si je me trompe) grâce à la fonction :
COMPILE ~répertoire/fichier.d~
USING ~~ //(si pas de fichier *.tra utilisé)
Posté : lun. 20 déc. 2004, 21:14
par Garfield
Bon, voila alors:
Comment ca ce fait que malgré ce fichier .D, elle me balance un dialogues bizarre et s'en va. Voila mon TP2 au cas ou:
Code : Tout sélectionner
BACKUP ~DynaNPC\backup~
AUTHOR ~garfieldcat555@hotmail.com~
BEGIN ~Dyna NPC for BG2~
COPY ~DynaNPC\J#Dyna.cre~ ~override\J#Dyna.cre~
SAY NAME1 ~Dynahéïr~
SAY NAME2 ~Dynahéïr~
SAY SELECT_COMMON4 ~Bonjour.~ [Dyna1]
SAY SELECT_COMMON5 ~Quoi?~ [Dyna2]
SAY SELECT_COMMON6 ~Que desirez vous?.~ [Dyna3]
SAY SELECT_ACTION1 ~J'y vais.~ [Dyna4]
SAY SELECT_ACTION2 ~Très bien.~ [Dyna5]
COMPILE ~DynaNPC\J#Dyna.d~
COMPILE ~DynaNPC\J#Dyna.baf~
EXTEND_TOP ~Ar1000.bcs~ ~DynaNPC\ar1000.baf~
Posté : lun. 20 déc. 2004, 22:51
par Isaya
Quand tu crées ton fichier .CRE pour Dynaheir, pense bien à lui affecter comme fichier dialogue celui de la rencontre initiale, à savoir celui que tu appelles J#Dyna.DLG (c'est l'instruction BEGIN J#Dyna qui veut que le fichier s'appelle comme ça).
Parenthèse : arrête tout de suite de créer des fichiers qui commencent par J#. Je sais que le tutorial de création de PNJ l'utilise mais ce préfixe est déjà réservé par le mod Kelsey.
En allant sur le site The Black Wyrm, plus précisément dans ce
forum, tu trouveras un sujet consacré à la réservation d'un préfixe pour éviter que d'autres personnes l'utilisent. Pense à vérifier les préfixes déjà réservés.
Un conseil: trouve autre chose que le caractère '#' comme séparateur : presque tout le monde l'utilise du fait du tutorial. N'importe quel autre caractère accepté par Windows pour les noms de fichiers fera parfaitement l'affaire, par exemple '_' ou peut-être '+', qui ne sont quasiment pas utilisés par les modders. Limite toi si possible à deux caractères (incluant le séparateur) pour garder un maximum pour les noms de fichiers (ça te laisse 6 caractères pour la suite). Quand je vois que les auteurs de NeoBG ont pris un préfixe de 4 caractères, je tremble : un "préfixe" aussi long que le reste du mot, ce n'est plus tout à fait un préfixe ! :happy: Et ça limite considérablement la lisibilité des noms de fichiers vu que le nombre de caractères utiles est très faible.
Posté : lun. 20 déc. 2004, 23:37
par Garfield
mais heuuuuu :snif:
ou je peu éditer son fichier de dialogue dans near infinity: j'arrive a y accéder, mais je trouve pas le fichier D=Dyna.DLG qui aurait du etre crée par le fichier TP2 (si j'ai bien tout compris). Dois-je convertir D=Dyna.D en D=Dyna.dlg
j'ai remplacé J# par D=
Posté : mar. 21 déc. 2004, 01:02
par Isaya
Dans Near Infinity, tu ouvres le fichier CRE de Dynaheir et tu modifies la ligne "Dialog" en mettant le nom du fichier DLG pour la rencontre initiale : D=DYNA.DLG, à condition que tu l'aies créé avant et qu'il se trouve donc dans le répertoire Override avant que tu lances Near Infinity.
Pour créer le fichier DLG sans le setup, lance la commande:
WeiDU dyna.D --transin dyna.tra --textout dialog-new.tlk
Remplace dyna.D et dyna.tra par les fichiers que tu utilises vraiment (si tu n'a pas de tra et que tu travailles directement dans le .D, oublie --transin).
Ensuite renomme ton dialog-new.tlk en dialog.tlk (pense à faire une sauvegarde avant de modifier comme ça le fichier dialog.tlk).
Ensuite, tu peux faire la manip dans Near Infinity.
Posté : mar. 21 déc. 2004, 11:40
par Garfield
Et ladite commande
WeiDU dyna.D --transin dyna.tra --textout dialog-new.tlk
, pour la lancer avec Weidu faut que je la mette dans mon TP2 c'est ca?
Posté : mar. 21 déc. 2004, 15:07
par Angelus Crow
Non, c'est une commande DOS que tu devras taper après avoir lancer WeiDU sous DOS.
Démarrer =>Programmes => Accessoires => Cmd MS-DOS
Attention, il fait que le répertoire de travail soit celui du jeu avec WeiDU.exe dedans.
Là, tu peux rentrer WeiDU.exe. Ensuite, tu auras une liste des fonctions proposées par l'outil.
A ce moment là, tu entres la ligne proposée par Isaya sans le "weidu".
Sinon tu peux entrer directement la ligne proposée.
Mais comme l'a dit Isaya, n'oublie pas de faire une sauvegarde du dialog.tlk (et même du dialogF.tlk :notme2: ).
Voilà...
Edit : une erreur qui a pu faire que ça ne marchait pas, dsl...
Posté : lun. 27 déc. 2004, 22:35
par Garfield
J'en ai marre!!! Pas moyen de trouver cet gn#r*f# de commande MS-DOS.Je suis maudit.
Je sais pas comment je vais pouvoir continuer mon mod dans des conditions pareilles!
Posté : lun. 27 déc. 2004, 23:02
par Angelus Crow
Cette commande servait juste à la compilation sans fichier TP2.
Tu peux donc quand même voir avec NearInfinity si les dialogues ont étés ajoutés en faisant un fichier *.tp2, en lançant le setup, etc... mais il faudra désinstaller à chaque fois puis réinstaller ton setup.
Posté : mar. 28 déc. 2004, 10:56
par esprit
euh pour lancer weidu suffit simplement de double cliquer sur le .exe dans le repertoire ou weidu est installé... ca va ouvrir la commande ms dos avec toute les options de Weidu. Pas besoin de se prendre la tete
Posté : mar. 28 déc. 2004, 14:32
par Angelus Crow
Originally posted by esprit@mardi 28 décembre 2004, 10h56
euh pour lancer weidu suffit simplement de double cliquer sur le .exe dans le repertoire ou weidu est installé... ca va ouvrir la commande ms dos avec toute les options de Weidu. Pas besoin de se prendre la tete
Sauf que la fenêtre se ferme dès que la fonction vient de finir, qu'elle soit bonne ou non... pas évident pour voir ses erreurs. L'avantage de passer par le menu démarrer/commande MS-DOS (ou un TP2, ça revient au même, mais c'est plus long) c'est de pouvoir voir où sa plante
.
Ou alors je m'y prends mal :..: .
Posté : dim. 06 févr. 2005, 13:14
par Garfield
Bon un autre problème, quand je tente d'installe rmon pero, Weidu me met:
ERROR: Unix.Unix_error(20, "stat", "DynaNPC\\D=Dyan.cre")
Y a t il un problème avec mon fichier .cre??
Posté : dim. 06 févr. 2005, 14:19
par Isaya
WeiDU est basé sur des principes d'accès fichier UNIX. C'est ce qui explique la présence du mot dans le texte de l'erreur. Ici "stat" (terme UNIX) fait référence à l'accès au fichier.
Deux pistes :
- ton fichier est-il bien dans le répertoire DynaNPC, lui même situé dans le répertoire du jeu ?
- essaie de changer le caractère '\' séparateur des noms de répertoire en '/' (format UNIX, reconnu et préféré avec WeiDU).
Si ces deux choses ne donnent rien, remplace le caractère "=" de ton préfixe par un autre dont tu sois sûr qu'il est autorisé (par example "#", "!" ou "_", très utilisés dans les préfixes). Tant qu'on est sur le sujet du préfixe, as-tu vérifié que personne n'utilisait déjà celui-là ? Tu pourras trouver sur IESDP un lien vers un forum qui les recense.
Posté : dim. 06 févr. 2005, 16:18
par Garfield
Bon, l'install se passe... Mais le perso n'apparait pas sauh*f qi j'utilise la Cluaconsole... Et d eplsu, j'ia toujours le même problème, le perso est cerclé de vert, il s'en vas dès que je lui parle.
Pour utiliser la commande:
WeiDU dyna.D --transin dyna.tra --textout dialog-new.tlk
je dois déja avoir un fichier de dialogue pour mon perso?
Posté : dim. 06 févr. 2005, 17:03
par Angelus Crow
S'il n'apparait pas, ton rajout de script à la zone est-il bon ?
Quand il est cerclé de vert, est-ce à l'importation ? Si oui, est-il Neutral dans CreaMaker dans la rubrique other attributs et dans l'onglet Enemy-Ally ?
Posté : dim. 06 févr. 2005, 17:15
par Garfield
Bon, j'ai mis le personnage en
neutral(par nearinifinity, j'ai pas creamaker), et il apparait bien cerclé de bleu cette fois. Mais quand je lui parle, elle me sort un dialogue d'adieu et s'en va:
Sinon, mon script ajouté a la zone(AR1000.bcs) est:
IF
Global("D#DynaExists","AR1000",0)
THEN
RESPONSE #100
SetGlobal("D#DynaExists","AR1000",1)
CreateCreature("D#Dyna",[1545.2105],3)
END
la ligne correspondant dans le TP2 est:
EXTEND_BOTTOM ~AR1000.bcs~ ~DynaNPC/AR1000.bcs~
Voila
Posté : dim. 06 févr. 2005, 17:45
par Angelus Crow
Et en essayant dans ton TP2 avec :
EXTEND_BOTTOM ~AR1000.bcs~ ~DynaNPC/D#AR1000.baf~
Un fichier bcs est un fichier compilé. là, tu utilise un baf. Pense aussi à changer l'extension.
Change également le nom de ton script, vu que AR1000.bcs existe déjà. Par exemple, D#AR1000.baf (juste rajouter ton préfixe).
Posté : dim. 06 févr. 2005, 17:50
par Garfield
wouuuu!! Dynaheir apparait au bon endroit!!!
Par contre pour son dialogue, elle m'envoie toujours sur les roses. Donc je reprends ma questiopn précédente:
Pour utiliser la commande:
WeiDU dyna.D --transin dyna.tra --textout dialog-new.tlk
J'ai essayé avec Weidu, puis j'ai regardé le fichier dilog.tlk avec nearinfinity, les dernières répliques, aucune trace de celle de Dynaheir...
Merci a Angelus et a Isaya, petit a petit ca commence quand même a prendre forme.
Posté : dim. 06 févr. 2005, 21:42
par Isaya
J'ai l'impression (d'après ta question sur l'existence préalable d'un dialogue) que tu fais une confusion entre la structure qui définit le dialogue (l'arborsence des répliques) qui est stockée dans un fichier DLG dans le jeu (et que WeiDU crée à partir du .D) et l'endroit où sont stockés les textes (les fichiers dialog.tlk et dialogF.tlk). Pour les textes proprement dits, le fichier DLG ne fait que référencer la position des textes dans le fichier dialog.tlk. Un peu comme le fichier .D le fait vis à vis du fichier .TRA.
La commande WeiDU que tu utilises ne modifie pas directement le fichier dialog.tlk mais en crée un nouveau, dialog-new.tlk. Renomme-le en dialog.tlk (fais une copie de l'ancien, c'est pour ça qu'on dit à WeiDU de ne pas l'écraser) avant de lancer Near Infinity. Sinon, tu ne verras évidemment pas les ajouts.
Par ailleurs, il n'y a ajout que si les textes de ton dialogue n'existent pas déjà quelque part dans le jeu (sinon, WeiDU réutilise le texte en question et n'en crée pas un nouveau).
Pour EXTEND_BOTTOM, tu peux utiliser aussi bien des BCS (compilé) que des BAF (texte). Il faut juste que ce soit bien le bon que tu indiques (celui que tu as mis dans ton répertoire d'installation).
Quant à ton problème de dialogue, il faudrait que tu le postes ici pour qu'on voit ce qui cloche (par un lien si c'est possible, sinon ça risque de faire un message énorme). J'ai l'impression qu'il y a un problème dans les conditions qui président au choix de la réplique (le IF de début d'un échange) qui fait que ce n'est pas la réplique que tu veux qui est choisie. As-tu mis une condition du genre NumTimesTalkedTo(0) dans la condition d'introduction du personnage ?
Posté : dim. 06 févr. 2005, 23:15
par Garfield
Bon, je met mon fichier *.D, déja corrigé par Angelus:
Code : Tout sélectionner
BEGIN D#Dyna
IF ~NumTimesTalkedTo(0)~ THEN BEGIN FirstMeeting
SAY ~PAr Mystra <CHARNAME>! Je suis de nouveau vivante!.~
= ~Vous m'avez rescucité? Puis je me joindre de nouveau a ton groupe?~
IF ~~ THEN REPLY ~Bien sur, nous t'attendions.~ DO
~SetGlobal("DynaJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~Non, profite de la vie qu'on t'a rendu et part!.~ GOTO GoAway
END
IF ~~ THEN BEGIN GoAway
SAY ~Très bien <CHARNAME> si c'est ta volonté...~
IF ~~ THEN EXIT
END
BEGIN D#DynaP
IF ~Global("DynaJoined","LOCALS",1)~ THEN BEGIN KickOut
SAY ~Tu souhaite mon départ?.~
IF ~~ THEN REPLY ~Pas du tout, Dynahéir, juste un moment de fatigue.~ DO
~JoinParty()~ EXIT
IF ~~ THEN REPLY ~Oui, tu ne nous est pas utile pour l'instant.~ DO
~SetGlobal("DynaJoined","LOCALS",0)~ EXIT
END
IF ~Global("DynaJoined","LOCALS",0)~ THEN BEGIN Rejoin
SAY ~Tiens donc, je croyais avoir perdu mon utilité?~
IF ~~ THEN REPLY ~Désolé, nous séparer était une erreur.~ DO
~SetGlobal("DynaJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~C'est exact, je voulais juste voir si tu n'était pas
pétrifiée.~ EXIT
END
Posté : dim. 06 févr. 2005, 23:21
par Angelus Crow
Mais ce qui est étrange, c'est que ce dialogue marche chez moi. Je peux engager le PnJ, le virer, le ré-engager, le revirer, etc... Je viens de tester à l'instant.
Donc... dans le fichier cre, est-ce bien le bon fichier D qui est indiqué ? quel est exactement la réplique de Dynaheir quand elle te parle : une partie de ton dialogue, ou un truc carrément à côté ?
Edit : Je viens de regarder ce que je t'avais envoyé, et au niveau de chaque DO, j'avais mis la première commande sur la même ligne (est-ce que ça aurait une répercution ?). Par exemple :
IF ~~ THEN REPLY ~Bien sur, nous t'attendions.~ DO ~SetGlobal("DynaJoined","LOCALS",1)
JoinParty()~ EXIT
Posté : dim. 06 févr. 2005, 23:25
par Garfield
un truc carrément a coté. Donc cela doit venir du fichier .CRE, j'vais voir. Je dois attacher le nouveau fichier *.dlg que j'ai crée c'est ça?
Edit: même avec les DO sur la même lignes, ca ne change rien...
Pour ton perso, tu as crée un nouveau dialog.tlk selon la méthode d'Isaya?
Posté : lun. 07 févr. 2005, 00:31
par Angelus Crow
Non, j'ai tout installé avec un TP2.
J'ai fait une créature sous CreaMaker (lien dans la section outil, maintenant dispo chez Isaya si je ne me trompe pas) où j'ai assigné le dialogue.
Lancement du .exe, et importation du perso avec la CLUA.
Donc, assure toi bien que les noms correspondent : un fichier D#Dyna.d à compiler, un fichier D#Dyna.dlg associé à la créature (par rapport aux D#Dyna et D#DynaP utilisés dans le fichier d)
Posté : lun. 07 févr. 2005, 01:01
par Garfield
Pour compiler le D#Dyan.D en D#Dyan.dlg, je fais ca par le TP2:
COMPILE ~DynaNPC/D#Dyna.d~ ~D#Dyna.dlg~
??
Posté : lun. 07 févr. 2005, 01:05
par Angelus Crow
Simplement :
COMPILE ~emplacement de ton fichier/tonfichier.d~
Posté : lun. 07 févr. 2005, 01:13
par Garfield
oki, donc le D#Dyna.D devient un D#Dyan.dlg. J'ai fait ca, j'ai assigné D#Dyna.dlc au ficher *.cre, et la j'ai une boite de dialogue noire quand je parle a Dynaheïr, mais si j'appuie sur 1, elle me rejoint.
Bizarre bizarre...
Posté : lun. 07 févr. 2005, 01:44
par Angelus Crow
Si tu l'engages, c'est que ça marche en partie...
Que se passe-t-il si tu fais une installation "propre" avec un TP2 ?
Par "propre" j'entends effacer toutes les traces du début de mod, et le réinstaller en une fois.
Bon... c'est pas tout ça mais je crois que j'y réfléchirais mieux tout à l'heure
.