Page 1 sur 1
[WeiDU] Erreurs pendant la compilation d'un dialogue
Posté : mer. 26 janv. 2005, 20:21
par BODHI
J'ai créé une créature à l'aide de CRE maker (et grâce au tutoriel de Forgotten Wars), mais lorsque je lance le jeu tout marche sauf que j'ai un message :
"Jondalar [c'est le nom de ma créature!] n'a rien à dire "
J'ai crée un fichier jondalar.d qui est le suivant :
Code : Tout sélectionner
BEGIN ~JONDALAR~
IF ~~ THEN BEGIN JON0
SAY ~Salutations ! Voulez-vous voir mes marchandises ?~
IF ~~ THEN REPLY ~Oui je le veux.~ EXIT
IF ~~ THEN REPLY ~Non, pas maintenant.~ EXIT
END
(comme vous le constater à terme je veux que ce soit un vendeur,!)
lorsque je compile le dialogue avec Weidu je n'ai pas de messages d'erreurs ....
Sinon en ce qui concerne le fichier .cre j'ai mis :
aucun scripts (none)
une variable de mort (jondalar)
un fichier de dialogue (JONDALAR)
un comportement ("Enemy-Ally") (128 NEUTRAL)
La créature fonctionne normalement dans le jeu (si je la tue -> -4 en réputation !)
Pourriez-vous m'aider ?
P.S: j'ai remarqué qu'en changeant le dialogue en AERIE j'ai le dialogue d'Aerie ....J'imagine que mon erreur vient du fichier .d , non ?
Posté : mer. 26 janv. 2005, 21:37
par Angelus Crow
Originally posted by BODHI@mercredi 26 janvier 2005, 20h21
BEGIN ~JONDALAR~
IF ~~ THEN BEGIN JON0
SAY ~Salutations ! Voulez-vous voir mes marchandises ?~
IF ~~ THEN REPLY ~Oui je le veux.~ EXIT
IF ~~ THEN REPLY ~Non, pas maintenant.~ EXIT
END
Et en mettant une condition après ton premier IF ?
par exemple :
IF ~True()~ THEN BEGIN...
SAY ~...~
Je tiens à préciser que je ne suis pas certain que ça résoudra ton problème, mais ça coûte rien d'essayer
.
En effet, si avec un autre fichier dialog ça marche, l'erreur vient du tien. Reste à trouver où.
Posté : mer. 26 janv. 2005, 22:28
par Isaya
Le fait qu'il n'y ait pas eu de message d'erreur ne signifie pas que ton dialogue va marcher comme tu l'entends.
Comme l'indique Angelus Crow, l'absence d'une condition dans le premier IF pourrait fort bien être la cause. Le message que tu as indique que le jeu n'a pas trouvé de condition vérifiée dans le fichier dialogue.
Mettre un "True()" comme condition assurerait que la condition est vérifiée dans tous les cas et que ce dialogue apparaîtrait. Si tu veux que ce dialogue soit utilisé à chaque fois, utilise-ça. Si tu envisages d'avoir d'autres échanges en fonction de certaines conditions (possession d'un objet, avoir parlé à quelqu'un, ...), mets les en premier (avec les conditions appropriées) et mets en dernier l'échange avec la condition True(). Sinon tu ne verras jamais les autres ayant des conditions plus restrictives.
Posté : jeu. 27 janv. 2005, 14:10
par BODHI
Merci bien . C'était bien cela.
Je croyais à tort que :
IF ~~
signifiait que la condition était toujours vérifiée . Merc pour les conseils .
Posté : jeu. 27 janv. 2005, 17:45
par Angelus Crow
En fait, le
fonctionne uniquement si ton bloc est appelé par un autre bloc suite à GOTO par exemple.
Ainsi dans ton dialoque ça donnerait quelque chose comme :
Code : Tout sélectionner
IF ~True()~ THEN BEGIN JON0
SAY ~Salutations ! Voulez-vous voir mes marchandises ?~
IF ~~ THEN REPLY ~Oui je le veux.~ GOTO JON1
IF ~~ THEN REPLY ~Non, pas maintenant.~ EXIT
END
IF ~~ THEN BEGIN JON1
SAY ~Parfait, qu'est-ce qui vous intéresse ?~
IF ~~ THEN EXIT
END
Ici, le 1° bloc appelle le 2° et donc inutile de préciser une condition pour celui-ci sauf si, évidemment, tu en désires une.
Tant que j'y suis, inutile de préciser "Crow" tant qu'il n'y a qu'un Angelus sur ce forum
.
Posté : mar. 01 févr. 2005, 21:03
par BODHI
Merci pour toutes ces précisions.
Cependant j'ai encore un problème :
J'obtiens le message suivant lors de l'installation du mod :
PARSE ERROR line 2 Column 8-8
Failure("lexing:empty token")
voici mon fichier StoArea.baf :
Code : Tout sélectionner
IF
Global(“JondalarExists”,”AR0300”,0)
THEN
RESPONSE #100
SetGlobal(“JondalarExists”,”AR0300”,1)
CreateCreature(“jondalar),[2859.1262],5)
END
la ligne 2 colonne 8-8 correspond à la variable Jondalarexists
Je tiens à préciser que je n'ai fait que suivre le tutoriel de création de magasin de la Couronne de Cuivre ...
Posté : mar. 01 févr. 2005, 21:33
par Angelus Crow
Originally posted by BODHI@mardi 01 février 2005, 21h03
J'obtiens le message suivant lors de l'installation du mod :
PARSE ERROR* line 2 Column 8-8
Failure("lexing:empty token")
voici mon fichier StoArea.baf :
Code : Tout sélectionner
IF
Global(“JondalarExists”,”AR0300”,0)
THEN
RESPONSE #100
* SetGlobal(“JondalarExists”,”AR0300”,1)
* CreateCreature(“jondalar[color="#00FF00"]"[/color],[2859.1262],5)
END
A part l'absence du
" sur la ligne CreateCreature, je ne vois rien... Et la zone 0300 a un script, donc tu peux y rajouter le tien...
Plus qu'à attendre les maîtres en editing.
Sinon une question peut-être idiote, mais tu es sur que l'erreur ligne 2 colonne 8 provient bien de ton *.baf?
Posté : mar. 01 févr. 2005, 22:25
par BODHI
j'ai rajouté le guillemet en question mais ça ne change rien.
Etant donné que je copie 2 fichiers (jondalar.sto et jondalar.cre) que je compile un dialogue et que je rajoute le magasin et que j'ai le message suivant :
Copying 1 file ...
Copying 1 file ...
Compiling 1 dialog file ...
Extending game scripts ...
[MYSTORE/StoArea.baf] Error at line 2 column 8-8
Il me semble que c'est bien celui-là
Posté : mar. 01 févr. 2005, 22:34
par Isaya
Sur la ligne 2, tu as le test Global(...) qui commence par un drole de guillement avant JondalarExist : ça ressemble à un guillement ouvrant en français (incliné vers la droite) au lieu d'être identique à celui qui ferme, comme c'est le cas pour les deux qui entourent AR0300. Tu as le même défaut sur les autres guillemets de début sur les lignes suivantes.
Je ne sais pas avec quel éditeur tu tapes tes scripts, mais ça ressemble à une modification automatique faite par un traitement de textes comme Word. Ce genre de caractère n'existe pas directement depuis le clavier, c'est ce qui me fait penser à un traitement de textes.
Si tu utilises un traitement, je te conseille plutôt d'employer un bon éditeur de textes. Il n'en manque pas de gratuits : en particulier
ConText ou
PSPad.
Par ailleurs, pour ton dialogue d'il y a quelques jours, je pense qu'il te manque un truc important : à aucun moment tu ne déclenches l'ouverture du magasin. Un peu dommage pour un marchand, non ?
Tu devrais donc ajouter une action StartStore(...) quand on répond qu'on veut voir les marchandises (dans le deuxième bloc). Vérifie le didacticiel pour plus d'infos.
Posté : mer. 02 févr. 2005, 20:03
par BODHI
Oui en effet c'était les guillemets ouvrant .
En fait je n'ai rien tapé puisque j'ai simplement fait COPIER COLLER à partir du tutorial ... Sinon j'utilise le Bloc-notes .
A propos il faudrait mettre un message dans la rubrique en question ,non ?
Sinon pour ce qui est du dialogue j'ai voulu décomposer les difficultés et j'ai donc fait exprès de ne pas mette le StartStore .
J'ai essayé avec le StartStore (à partir du fichier du tutorial ...) mais ça ne marche pas
Voici mon fichier jondalar.d
Code : Tout sélectionner
BEGIN ~jondalar~
IF ~true()~ THEN BEGIN StoreInfo // Oui, il y a bien deux tildes (~) à la suite
SAY ~Salutations ! Voulez-vous voir mes marchandises ?~
IF ~~ THEN REPLY ~Oui je le veux.~ DO ~StartStore("jondalar", LastTalkedBy())~ EXIT
IF ~~ THEN REPLY ~Non, pas maintenant.~ EXIT
END
Le message d'erreur est le suivant , une fois que je clique sur "Oui je le veux":
Action Errors : - Special Case : LastTalkedBy not found . Check for proper Brackets
Line 1
Ensuite il y a le texte "oui je le veux"
puis en rouge : "les familiers ne peuvent pénétrer dans les échoppes"
Bref on dirait que c'est un problème de parenthèses ("Brackets") , non ?
Posté : mer. 02 févr. 2005, 20:21
par Angelus Crow
Je viens de regarder le *.dlg de Ribald à la Couronne de Cuivre et voilà comment commence sa commande pour l'ouverture du magasin :
StartStore("ribald",LastTalkedToBy(Myself))
En rajoutant un
Myself dans les parenthèses ?
Posté : mer. 02 févr. 2005, 20:51
par Isaya
Tu as aussi oublié To dans LastTalkedToBy. Si ma mémoire est bonne, MySelf sera considéré par défaut si tu ne le mets pas, mais autant l'indiquer comme le dit Angelus.
Le nom "Jondalar" indiqué dans StartStore est celui du fichier .STO. Pense à vérifier qu'il s'agit bien du bon nom.
Posté : jeu. 03 févr. 2005, 19:21
par BODHI
Oui, en effet, vous aviez raison , il manquait le "TO" et les guillemets!
Merci à Angelus d'avoir mis un message sur le tutorial en question .