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 :p ! 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" :)