Page 1 sur 1
[DLG] Problèmes divers de syntaxe empêchant la compilation d'un dialogue
Posté : ven. 17 oct. 2003, 23:16
par Grenouillebleue
J'ai un souci de compilation.
Un PNJ de quête dispose du fichier barbe.d suivant:
Code : Tout sélectionner
BEGIN ~Barbe~
IF ~ Global("barbespeech","LOCALS",1) ~ THEN BEGIN 0
SAY ~ blabla...~
IF ~~ THEN EXTERN BKIM pirate0
END
IF ~~THEN BEGIN 1
SAY ~ blabla~
IF ~~ THEN REPLY ~ aaaa~ GOTO 2
IF ~~ THEN REPLY ~ bbbb~* GOTO 3
IF ~~ THEN REPLY ~ cccc~ GOTO 4
END
IF ~~ THEN BEGIN 2
SAY ~ blabla~
IF ~~ THEN DO ~SetGlobal("barbespeech","LOCALS",1)~ EXIT
END
IF ~~ THEN BEGIN 3
SAY ~ blabla~
IF ~~ THEN DO ~SetGlobal("barbespeech","LOCALS",2)~ EXTERN BKIM pirate1
END
IF ~~ THEN BEGIN 4
SAY ~ blabla~
IF ~~ THEN REPLY ~ aaaa ~ GOTO 2
IF ~~ THEN REPLY ~ bbbb~ GOTO 5
END
IF ~~ THEN BEGIN 5
SAY ~ blabla~
IF ~~ THEN DO ~SetGlobal("barbespeech","LOCALS",2)~ EXIT
END
APPEND BKIM
IF ~~ THEN BEGIN pirate0
SAY ~ blabla~
IF ~~ THEN EXTERN BARBE 1
END
IF ~~ THEN BEGIN pirate1
SAY ~ blabla~
IF ~~ THEN DO ~LeaveParty()
GivePartyAllEquipment()
EscapeArea()~ EXIT
END
END
Or, le dialogue du début se déclenche bien, mais la réplique de Kim n'a rien à voir avec l'histoire... en gros, elle dit quelque chose qui fait partie des lovetalks (ligne 177) et qui normalement ne devrait rien avoir à faire dans tout ça... help !
Posté : dim. 19 oct. 2003, 12:47
par Lamnis Valnon
Code : Tout sélectionner
IF ~~ THEN BEGIN Magasin2
SAY ~Vous ne le regretterez pas!~
IF ~~ THEN REPLY ~D'accord, allons-y!~ DO ~StartStore("lvmarch1",LastTalkedToBy())
END
Voici la clé de mon désespoir ;
Ligne 22 (SAY ~...), colonne 1-5 m'a dit WeiDU.
Et j'ai eu beau essayer tout ce qu'il y avait à faire pendant près d'une heure, la seule solution est de tout supprimer pour que cela marche... Une gentille personne pourrait m'indiquer quelle est la coquille dans ce script pourtant si simple ?
En même temps, Silk, pourrais tu créer une section de posts "éphémères", traitant de problèmes tels que celui ci, qui seraient effacer après résolution ? J'ai pas vraiment envie d'encombre le forum de post comme ça :notme2: ...
Posté : dim. 19 oct. 2003, 12:53
par Grenouillebleue
Originally posted by Lamnis Valnon[/i]@dimanche 19 octobre 2003, 12:41
Code : Tout sélectionner
IF ~~ THEN BEGIN Magasin2
SAY ~Vous ne le regretterez pas!~
IF ~~ THEN REPLY ~D'accord, allons-y!~ DO ~StartStore("lvmarch1",LastTalkedToBy())
END
Voici la clé de mon désespoir. Ligne 22 (SAY ~...), colonne 1-5 m'a dit Weidu. Et j'ai eu beau essayer tout ce qu'il y avait à faire pendant près d'une heure, la seule solution est de tout supprimer pour que cela marche... Une gentille personne pourrait m'indiquer quelle est la coquille dans ce script pourtant si simple ?
En même temps, Silk, pourrais tu créer une section de posts "éphémères", traitant de problèmes tels que celui ci, qui seraient effacer après résolution ? J'ai pas vraiment envie d'encombre le forum de post comme ça :notme2: ...
Il te manque un tilde (~) et une sortie de dialogue (EXIT).
Ça devrait marcher avec ça:
Code : Tout sélectionner
IF ~~ THEN BEGIN Magasin2
SAY ~Vous ne le regretterez pas!~
IF ~~ THEN REPLY ~D'accord, allons-y!~ DO ~StartStore("lvmarch1",LastTalkedToBy())~ EXIT
END
Posté : dim. 19 oct. 2003, 14:11
par Silk
Originally posted by Lamnis Valnon@dimanche 19 octobre 2003, 13:41
En même temps, Silk, pourrais tu créer une section de posts "éphémères", traitant de problèmes tels que celui ci, qui seraient effacer après résolution ? J'ai pas vraiment envie d'encombre le forum de post comme ça :notme2: ...
Pourquoi donc ? Ce forum est fait peut poser n'importe quelle type de question, de la plus stupide à la plus complexe...
Posté : dim. 19 oct. 2003, 15:49
par Lamnis Valnon
Hé bien, je pense que ce genre de questions à six sous ne devrait pas encombrer ce forum, ce ne sont que des erreurs simples, étourderies, et non de réels problèmes. Enfin, merci Grenouillebleu de m'avoir aidé
.
Posté : dim. 19 oct. 2003, 15:54
par Silk
Ca n'encombre pas vraiment... Et les modérateurs ne peuvent pas s'amuser à jouer à la poubelle à chaque fois qu'un problème est résolu... M'enfin si tu souhaites vraiment une suppression, moi ça ne me dérange pas. En tout cas, je ferme le sujet, le problème ayant été résolu.
Posté : dim. 19 oct. 2003, 15:59
par Silk
Je ne vois pas où tu veux en venir... Tu peux éclaircir un peu ?
Posté : dim. 19 oct. 2003, 16:02
par Grenouillebleue
Je ne sais pas comment, mais la réplique de Kim n'était pas celle qui était prévue. Mais le bug est résolu désormais, alors que je n'ai touché à rien... très étrange :..:
Espérons que ca marchera toujours bien :notme2:
Posté : dim. 19 oct. 2003, 16:10
par Silk
Vi, c'est bizarre... Une variable double (deux fois le même nom), peut-être ?
Posté : mar. 21 oct. 2003, 17:07
par Glim
Voila la portion de script consernée:
Code : Tout sélectionner
IF ~~ THEN BEGIN Guildes
SAY ~Je sais juste que c'est un massacre, et a moin que vous ne vouliez autre chose dégagé.~
IF ~~ THEN REPLY ~Tres bien, au revoir.~ EXIT
IF ~~ THEN REPLY ~En fait vous avez l'air d'être un voleur expérimenté et je voulais savoir si vous ne vouliez pas rejoindre mon groupe.~
(ligne 23) SAY ~Ca a l'air tentant, ok je vous suis.~ DO ~SetGlobal("GlimDansGroupe","LOCALS",1)JoinParty()~ EXIT
END
Lors de la compilation il m'est dit qu'il y a une erreur à la ligne 23 et "NEAR TEXT: SAY
Qu'est-ce qui cloche ?
Posté : mar. 21 oct. 2003, 18:58
par Lamnis Valnon
Hé bien il faut que tu changes de bloc pour que le perso te parle à nouveau:
Code : Tout sélectionner
IF ~~ THEN BEGIN Guildes
SAY ~Je sais juste que c'est un massacre, et a moin que vous ne vouliez autre chose dégagé.~
IF ~~ THEN REPLY ~Tres bien, au revoir.~ EXIT
IF ~~ THEN REPLY ~En fait vous avez l'air d'être un voleur expérimenté et je voulais savoir si vous ne vouliez pas rejoindre mon groupe.~ [color=yellow]GOTO 123[/color]
END
[color=yellow]IF ~~ THEN BEGIN 123[/color]
SAY ~Ca a l'air tentant, ok je vous suis.~
IF ~~ THEN DO ~SetGlobal("GlimDansGroupe","LOCALS",1)JoinParty()~ EXIT
END
La ligne
bleu je suis pas très sûr de la syntaxe, mais c'est ce que j'aurais mis.
Posté : mar. 21 oct. 2003, 18:59
par Glim
Code : Tout sélectionner
BEGIN GlimCouteauvif
IF ~NumTimesTalkedTo(0)~ THEN BEGIN PremiereRencontre
SAY ~Que voulez-vous?~ D0 ~SetGlobal("GlimDansGroupe","LOCALS",1) JoinParty()~ EXIT
END
Plus simple, là l'erreur se trouve de ~Set... à ...()~
Posté : mar. 21 oct. 2003, 19:06
par Silk
Tu peux additionner les commande Set et Join sans espace ? :8:
Posté : mar. 21 oct. 2003, 19:14
par Lamnis Valnon
Tu dois rajouter une ligne:
Code : Tout sélectionner
IF ~NumTimesTalkedTo(0)~ THEN BEGIN PremiereRencontre
SAY ~Que voulez-vous?~
[color=yellow]IF ~~ THEN[/color] DO ~SetGlobal("GlimDansGroupe","LOCALS",1) JoinParty()~ EXIT
END
A mon avis, c'est ça
! Et aussi... Écris DO pas D0 (d-o pas d-zéro) !
Posté : mar. 21 oct. 2003, 19:14
par Glim
Apparement ça vient pas de ça, mon ordi trouve encore à redire
Lamnis, merci c'était ça. Un de perdu 10 de retrouvé
Posté : mar. 21 oct. 2003, 19:17
par Lamnis Valnon
N'oublie pas que le bloc est composé en 4 temps:
1- IF ~~ THEN BEGIN "ReférenceDialogue"
2- SAY ~"Dialogue"~
3- IF ~~ THEN ... Action (=Réponse) (DO, EXIT, REPLY...). Plusieurs choix possibles.
4- END
Le 2ème temps doit rester SAY ~"Dialogue"~, les actions sont ajoutées à une RPONSE
Posté : mer. 22 oct. 2003, 12:16
par Glim
Ca à bien compilé maintenant, le problème est résolu
Posté : jeu. 23 oct. 2003, 12:04
par Silk
Problème résolu, j'envoie le sujet dans la "poubelle syntaxe"