Bonjour à toi, Touku911 et bienvenue.
Avec un pseudo pareil, je tiens à te dire que je t'ai longtemps soupçonné d'être un bot chinois ! Mais étant donné la qualité de ta prose et que tu ne te mets pas à dégoiser des adresses de site de boule sur tout le forum, j'en déduis que tu n'en es pas un. C'est une bonne nouvelle aussi bien pour toi que pour nous.
Pour toi, car tu es donc le bienvenu ici, pour nous car ça signifie que ce forum est encore suffisamment profond dans le tube digestif (restons polis) du web pour que les bots chinois ne nous aient pas encore trouvés.
Bienvenue donc. ^^
Si tu ne t'es pas encore enfui en courant à ce stade du message, c'est bien. Cela signifie que tu as passé le premier test avec succès. (Attention, il y en aura d'autres, mais ce n'est pas l'endroit ni le moment d'en parler.)
Revenons-en à ton problème.
Alors, je vois deux défauts dans tes scripts, et la bonne nouvelle, c'est que l'un d'entre eux expliquera certainement l'origine de ton problème.
- Code:
-
Fichier TAr0602.baf :
IF
Global("#TMaiwenIrenicus","GLOBAL",1)
THEN
RESPONSE #100
SetGlobal("#TMaiwenIrenicus","GLOBAL",2)
END
Ce bloc ne sert pas à grand chose, pour ne pas dire à rien. En fait il est même préférable de le supprimer, car ça complique pour pas grand chose.
L'intérêt d'augmenter la valeur d'une variable doit s'expliquer par le fait qu'on fait quelque chose d'autre en parallèle.
On pose une variable à un endroit (par exemple SetGlobal("#TMaiwenIrenicus","GLOBAL",1) dans ton premier bloc de script) et cette variable est retrouvée comme condition d'un autre bloc de script qui se déclenche après le premier bloc et fera apparaitre Coco le perroquet à côté de ton premier personnage.
IF
Global("#TMaiwenIrenicus","GLOBAL",1)
THEN
RESPONSE #100
CreateCreature("#TCoco",[3350.3010],9)
SetGlobal("#TMaiwenIrenicus","GLOBAL",2)
END
Et on passe la variable à 2 tout simplement pour que le bloc ne tourne pas en boucle. Dans ce cas là, augmenter la variable aura une utilité : que le bloc de script se déclenche une seule et unique fois.
Ceci est un exemple théorique, bien entendu.
Mais c'est juste pour t'expliquer que faire un bloc de script simplement pour augmenter une variable et rien d'autre n'est pas utile.
Passons au coeur du problème :
- Code:
-
Fichier #TMaiwen.baf:
IF
Range(Player1,10)
THEN
RESPONSE #100
Dialogue(Nearest([PC]))
END
Ce bloc possède un gros défaut : il tourne en boucle. Pourquoi ? Eh bien tout simplement parce que la seule condition à remplir dans ce bloc c'est que Player 1 soit à une distance inférieure à 10. Autrement dit, tant (et dès) que Player 1 se trouvera à moins de 10 "mètres" de Maiwen, celui-ci essaiera de lui parler.
C'est pour cela que Maiwen parle à Charname une première fois, et là se déclenche le dialogue de recrutement. Puis, dès qu'il est dans le groupe, Maiwen enchainera en boucle ce bloc de script et tentera de parler à Charname. La ligne d'origine inconnue que Maiwen répète en boucle est suspecte en effet. Normalement, il devrait essayer de parler mais ne rien dire. Aurais-tu installé d'autres mods ? Est-ce que l'install de BG2 sur laquelle tu as fait tes tests est clean ?
Cela dit, ce problème de ligne en trop est secondaire, le plus prompt moyen de régler ton problème est le suivant : ajouter une variable à ton script :
IF
Global("#TMaiwenDial","GLOBAL",0)
Range(Player1,10)
THEN
RESPONSE #100
SetGlobal("#TMaiwenDial","GLOBAL",1)
Dialogue(Nearest([PC]))
END
La variable passe de 0 à 1, le script ne se lancera qu'une fois.
Pour finir, je pense qu'il serait intéressant que tu postes le contenu de #TMaiwen.d afin de finaliser tout à fait la concordance entre les variables pour que tout s'articule bien.
J'espère avoir répondu à ton problème de façon compréhensible.