Page 1 sur 1

[WeiDU] Problème de "Label..." pendant la compilation d'un dialogue

Posté : ven. 20 avr. 2012, 21:34
par Klare
Bonjour bonjour.
Alors que je préparais tranquillement le squelette de mon dialogue j'ai eu la mauvaise surprise de me retrouver devant un bug de Weidu, qui me refusait une formule de condition, alors que j'avais 4 lignes plus tôt quelque chose de quasi-identique et fonctionnel, enfin bref suite a quelques Clic et 2 heures j'ai vaincu le problème.

Maintenant j'ai la chance... de voir apparaitre un problème de label, soit :
► Afficher le texte
Mais là, j'ai beau secouer le diable... pas moyen de faire refonctionner mon mod. Et puisque je ne comprend pas le pourquoi du problème je viens pleurer les larmes chaudes de mon corps fripé ici :'(

Voici pour les courageux mon .D
Merci d'avance a ceux qui pourrons m'expliquer le pourquoi du bug de 'label'
► Afficher le texte

Posté : ven. 20 avr. 2012, 22:08
par Armand
Le problème je pense est que quand tu fais le lien vers ton bloc tu es dans le dlg #ZKlare et ton bloc se trouve dans le dlg #ZKlareP . On le vois parce qu'ils sont à l'intérieur de tes BEGIN; c'est à ça que sert un BEGIN en fait ça indique d'un fichier dlg de la référence précisé est généré. Je te suggérerais une manip dans ce style sur tous les renvois au bloc Klareenemy0401 :
IF ~~ THEN REPLY @2301003 EXTERN ~#ZKlareP~ Klareenemy0401
Le mot clef EXTERN permet de se balader entre les fichiers dlg et tu devras l'utiliser chaque fois que tu veux passer de l'un à l'autre. Il doit etre par contre suivi de la référence du dlg en question comme dans l'exemple.

Voila j'ai peut être raté d'autres trucs mais avec ça ça devrait aller déja un peu mieux. Bonne chance à toi.

P.S : velchy c'est toi ?! :'(

Posté : ven. 20 avr. 2012, 22:48
par Klare
Mmmm.
Donc en fait mon "bloc" est diviser en deux sous parties et les acces ne sont pas possible de l'une a l'autre sans le fameux "EXTERN"
Parfais je tente ca dans la nuit !! Merci beaucoup Armand

(Et non desolé malgré ma malette de pseudonyme je n'ai jamais porter le nom de Velchy ^^ )

Posté : ven. 20 avr. 2012, 23:01
par Freddy_Gwendo
Armand a raison.

Par ailleurs, ce genre de message :
ERROR: Cannot resolve internal symbolic label [Klareenemy0401] for DLG [#ZKLARE]

Known labels: Klareintro0101 Klareintro0102 Klareintro0103 Klareintro0104 Klares
ilence0101 Klaresilence0102 Klarepresentation0101 Klaremensonge0101 Klareverite0
101 Klareverite0102 Klareverite0103 Klareinteru0101
ERROR: postprocessing [#ZKLARE]: Failure("cannot resolve label")
Stopping installation because of error.
est systématique des erreurs d'affectation de label dans des dialogues.

Rassure-toi, ça arrive souvent quand tu jongles avec plusieurs dialogues. Au début, tu fais gaffe, et puis, le temps avançant, tu finis par faire une fausse manip.

Et encore, tu ne travailles pas sur une demi-douzaine de dialogues en même temps, avec plusieurs centaines de phrases et de répliques !

Pour limiter ce genre de mésaventures, je compile mes dialogues de plus de 1000 lignes en les fractionnant par centaines de lignes. Une fois qu'une partie est compilée sans problème, je rajoute la seconde.
Ça te permet aussi de mieux chercher la cause de l'erreur en limitant la zone de recherche.

Bon courage.


PS : essaie aussi de travailler avec des "CHAIN". Ça limite parfois ce genre de tracas.

Posté : sam. 21 avr. 2012, 18:44
par Armand
Donc en fait mon "bloc" est diviser en deux sous parties et les acces ne sont pas possible de l'une a l'autre sans le fameux "EXTERN"
Oui si tu veux en fait de base un fichier d peux contenir un ou plusieur dlg (un par begin). Certains utilisent un fichier d par dlg, un fichier d pour tous les dlg, d'autres comme moi regroupent par fichier d thématiques, scènes, etc... C'est à toi de choisir en fonction de ce que tu préfère mais c'est comme tout on prend ses habitudes en codant.

Comme a pu le dire freddy plus ton fichier est gros plus l'erreur est compliqué à trouver heureusement tous les editeurs de texte ont une fonction "recherche" et des n° de lignes indiqué (indispensable vu que weidu t'indique le n° de l'erreur).

Je parlais de velchy parce que tu utilisais son prefixe. Ca te viens d'ou #Z ? Tu as prevu de t'en renserver un sur black wyrm ?

Posté : sam. 21 avr. 2012, 19:09
par Klare
J'ai piquer le #Z au mod One day NPC de Genma (trouvé sur ce forum je pense) qui l'utilisais pour sa nomenclature et qui ma servit de base pour décortiquer le fonctionnement de base d'un mod.
C'est la temporairement car il me sert encore dans mes premières variables (notament dans mon fichier CRE).

Je le remplacerai bientot (car tardivement ca me ferra plus de boulot) par autre chose, et j'avoue etre interloqué par la 'reservation'? Quesako?

Posté : sam. 21 avr. 2012, 19:55
par Freddy_Gwendo
Le problème, c'est pas d'identifier la ligne où ça plante, c'est d'être certain que le problème vient effectivement de cette ligne : souvent, il est lié à une erreur survenue ailleurs. Exemple typique : un oubli de " ou de ~, voir un "END" oublié à la ligne n, et WeiDU t'indique un message d'erreur à la ligne n+x !

C'est pour ça que je scinde mes gros fichiers .d (+ de 2000 lignes) pour mieux identifier les problèmes quand il y a en a. Avant de les compiler en entier...


Quant à la réservation de préfixe, tu peux la trouver ici.

C'est tout simple : tu réserves les 2 premiers caractères de tes fichiers. Ainsi tu évites les problèmes "d'écrasement" de fichiers et de variables par plusieurs modules qui par malheur utiliseraient la même nomenclature.

C'est ainsi que j'avais réservé "GW" il y a plus de 6 ans : mon mod n'est pas encore terminé, mais personne n'a utilisé ce code car il est "pris". Du coup, quand j'aurai terminé, je suis certain que mes fichiers ne se substitueront pas à ceux des autres, et vice versa.