Baldur's Gate et Dragon Age | La Couronne de Cuivre
Merci de prendre connaissance des conditions d'utilisation des forums, des blogs et du chat

Précédent   Baldur's Gate et Dragon Age | La Couronne de Cuivre > La Forge de GrondMarteau > La Forge des Apprentis > Problèmes Techniques

Problèmes Techniques
Un problème technique lors de la création d'un mod? Exposez votre probleme et les membres vous aideront de leur mieux.

Réponse
 
Outils de la discussion Noter la discussion
Vieux 01/04/2008, 20h44   #1
phoeunix / Shalendra
Modérateur
 
Avatar de phoeunix / Shalendra
 
Date d'inscription: février 2008
Localisation: Nice
Messages: 116
Par défaut Problème d'implantation du personnage.

Salutations.
Je suis actuellement en train de créer un mod introduisant un PNJ recrutable supplémentaire qui s'appellera normalement Leila.
A ce titre, j'ai voulu dès à présent créer une petite installation pour implanter Leila sur son point d'apparition dans le Bosquet aux Druides, lui mettre un dialogue de recrutement basique et lui permettre de rejoindre le groupe.

Je me heurte à plusieurs problèmes :
- Leila apparaît dès qu'on arrive dans le Bosquet aux Druides de n'importe quel point de la carte plutot que du point voulu.
- Ce n'est pas une seule Leila mais une nuée de Leila qui apparaît en cascade.
- Quand chaque Leila apparait elle lance un premier dialogue "Salut." avec le son "Bonjour la compagnie" attribué habituellement aux bourgeoises.
- Puis elle vient au contact du groupe et enclenche le dialogue de recrutement mais le texte est désordonné : elle dit le texte @00000 au lieu du @0 et le PJ a le texte @1 à la place du choix @00001. Les autres textes sont les bons et le recrutement fonctionne avec la bonne séquence de dialogue.

A part ça, le perso une fois dans le groupe est opérationnel et a les caractéristiques prévues.

L'éventreuse a testé l'install aussi chez elle et a eu exactement le même résultat que moi.
Voici ci-dessous le détail des fichiers de l'install.
Merci d'avance à ceux qui m'aideront, j'espère qu'ils pourront me donner des précisions détaillées sur ce qui cloche. Vu que je débute, une correction précise serait la bienvenue.

Le fichier DDLeila.d :
Code:
BEGIN ~DDLeila~

// Rencontre :

IF ~NumTimesTalkedTo(0)
   
 Global("DDLeilaExists","AR1900",1)~ THEN BEGIN Coucou
  SAY @0
  IF ~~ THEN REPLY @00000 GOTO Welcome
  IF ~~ THEN REPLY @00001 GOTO CasseToi
END

IF ~~ THEN BEGIN Welcome
  SAY @1
  IF ~~ THEN DO ~JoinParty()~ EXIT
END

IF ~~ THEN BEGIN CasseToi
  SAY @2
  IF ~~ THEN DO ~EscapeArea()~ EXIT
END
Le setup.tra
Code:
@0 = ~Leila NPC : version Beta 0.00~
Le script DDLeila.baf :
Code:
IF
See([PC])
NumTimesTalkedTo(0)
THEN
RESPONSE #100
Dialogue(Nearest([PC]))
END
Le script DDAr1900.baf
Code:
// Spawn Bosquet des Druides

IF
  Global("DDLeila","AR1900",0)
THEN
  RESPONSE #100
    SetGlobal("DDLeilaExists","AR1900",1)
    CreateCreature("DDLeila",[62.43],10)
END
Le setup.tp2 :
Code:
BACKUP ~Leila/backup~
AUTHOR ~...~

LANGUAGE ~Francais~
     ~french~
     ~Leila/Translations/French/Setup.tra~


BEGIN @0

// Creatures
COPY ~Leila/Creatures/DDLeila.cre~ ~override~

// Dialogues
COMPILE ~Leila/Dialogues/DDLeila.d~
    USING ~Leila/Translations/French/DDLeila.tra~

// Scripts
COMPILE ~Leila/Scripts/DDLeila.baf~
    USING ~Leila/Translations/French/DDLeila.tra~

// Pictures
COPY ~Leila/Pictures~ ~override~

// Scripts of Area
EXTEND_BOTTOM ~AR1900.bcs~ ~Leila/Scripts/DDAr1900.baf~

Dernière modification par phoeunix / Shalendra ; 01/04/2008 à 20h46.
phoeunix / Shalendra est déconnecté   Réponse avec citation
Vieux 02/04/2008, 00h03   #2
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut Re : Problème d'implantation du personnage.

Petit exercice de mathématique amusante dans un autre contexte. Supposons que tu gagnes 1 € par mois et que tu veuilles négocier un changement de salaire (a priori une augmentation). Irais-tu demander à ton patron de modifier ton salaire pour le passer à 00001 € ?

Bref, pour répondre à un de tes problèmes, l'apparition des "mauvaises" répliques, il te suffira de t'assurer que chaque valeur attribuée à un texte est bien différente des autres. WeiDU considère la valeur indiquée après le '@' comme un nombre et, comme j'ai cherché à le suggérer par mon petit exercice, ajouter des 0 devant un nombre n'en a jamais changé la valeur. Dès lors WeiDU prend le premier texte qui porte la valeur 0 lorsque tu précises @0 ou @0000.

Quand au problème concernant l'apparition multiple de ton personnage, cette fois-ci je ferai plutôt appel au rappel de langue française. Oui, c'est ma journée professeur !

Dans le jeu, les scripts s'exécutent en permanence. En pratique, le jeu exécute les scripts au rythme de répétition indiqué dans la configuration de BGConfig. En général la fréquence de l'IA est fixée à 30, donc 30 répétitions par seconde (si les actions demandées sont très courtes). Donc ton script n'arrête pas de s'exécuter et faute d'un mécanisme adapté pour l'empêcher, tes actions vont se répéter à l'infini (la création du personnage). C'est l'objectif du test Global("xxxx", "AR1900", 0) qui vérifie que la variable "xxxx" est bien à 0 pour déclencher l'action.
Par ailleurs les variables dans des scripts sont identifiées par des textes. Comme dans tous les langages, deux mots qui ne s'écrivent pas pareils désignent des variables différents.

Donc quand tu testes la variable "DDLeila" à 0 et qu'ensuite tu mets à 1 la variable "DDLeilaExists" (note bien que tu as ajouté "Exists" en plus), forcément la variable "DDLeila" reste à 0, donc le script se dit que la condition est encore vérifié et qu'il faut effectuer l'action, à savoir créer le personnage. Et ainsi de suite...

Jeune phoeunix / Shalendra, vous me copierez 100 fois : "je ne remettrai plus ma copie sans l'avoir préalablement relue".

En ce qui concerne les conditions d'apparition du personnage, rien dans ce que tu as écrit ne permet de conditionner son apparition en fonction de ton point d'arrivée sur la carte. D'une part, ton script la crée dès que tu arrives sur la carte, la seule condition étant qu'elle n'existe pas déjà (enfin, dès que tu auras corrigé le problème de nom de variable). D'autre part, la commande qui force son apparition définit de façon fixe le point de création en [62.43], soit en haut à gauche de la carte. Ta remarque laisse entendre que tu n'es pas satisfait du point auquel Leila apparaît mais je ne sais pas ce que tu souhaitais obtenir. Il te faudrait le préciser pour qu'on comprenne ce qui ne satisfait pas.

Pour terminer, comme tu n'as pas fourni le contenu du fichier .tra associé à ton dialogue, il n'est pas possible de répondre à ta remarque concernant le doublage vocal. C'est en effet sur la ligne @0 (contenant a priori @0 = ~Salut.~ si j'ai bien compris ce que tu attendais) qu'on pourrait trouver les éléments permettant de comprendre. Le doublage vocal dépend d'une association entre le texte et le son qui se fait à partir du fichier .tra en indiquant après le texte le nom du fichier son associé sous la forme [NOMFIC] ou NOMFIC désigne un nom de fichier de jusqu'à 8 caractères.

Il faut également savoir que WeiDU n'ajoute de nouveau texte dans le fichier dialog.tlk que si les textes de ton mod n'existent pas déjà dans le fichier. Si le texte est déjà présent, WeiDU se contente de faire pointer ton dialogue sur le texte existant. Or une phrase aussi simple et courante que ~Salut.~ a de très grandes chances d'exister. Si le jeu original a associé au texte ~Salut.~ le son "Bonjour la compagnie", ton dialogue récupérera donc et le texte et le son.
Je ne suis pas certain de la façon de procéder pour éviter un tel problème. La meilleure solution consiste à trouver une réplique initiale plus originale pour éviter que WeiDU ne puisse réutiliser un texte existant et le son éventuellement associé.
De toute façon, il faudrait que tu nous fournisses le contenu du fichier .tra du dialogue pour en avoir le coeur net.

Sur ce, bienvenue et bonne continuation dans le monde merveilleux mais sans pitié de la création de mod.
Isaya est déconnecté   Réponse avec citation
Vieux 02/04/2008, 14h31   #3
phoeunix / Shalendra
Modérateur
 
Avatar de phoeunix / Shalendra
 
Date d'inscription: février 2008
Localisation: Nice
Messages: 116
Par défaut Re : Problème d'implantation du personnage.

Des nouvelles du front... De bonnes nouvelles même

Grâce à tes précieuses indictions Isaya, j'ai pu avec l'aide de Jack l'éventreuse, régler la plupart des problèmes :

- Le dialogue de recrutement marche impecc, les réponses s'emboitent bien.
- Y a plus le dialogue subsidiaire avec le "Salut" et le son. (le "salut" ne faisait pas partie d'un des dialogues du .tra)
- Une seule et unique Leila apparait.
- Leila apparait effectivement en haut à gauche de la carte. Je voudrais la placer ailleurs mais je sais pas faire mais c'est pas bien grave pour l'instant.


Donc tout va bien SAUF un dernier truc dont je me suis rendu compte qu'aujourd'hui : Leila n'a pas son prénom dans la fiche de personnage, ni dans les dialogues, ni dans le jeu quand je mets le curseur dessus, ni dans l'inventaire (nulle part quoi).
Ca me chiffonne un peu et je sais pas comment m'y prendre.
C'est donc l'occasion d'en remettre une couche :

Le SFLeila.d (j'ai changé de préfix, celui là est le définitif que j'ai fait enregistrer ; j'ai fait toutes les modifs de préfixe dans tous les fichiers) :
Code:
BEGIN ~SFLeila~

// Rencontre :

IF ~NumTimesTalkedTo(0)
    Global("SFLeilaExists","AR1900",2)
    Global("SFLeila","AR1900",2)~ THEN BEGIN Coucou
  SAY @1
  IF ~~ THEN REPLY @10000 GOTO Welcome
  IF ~~ THEN REPLY @10001 GOTO CasseToi
END

IF ~~ THEN BEGIN Welcome
  SAY @2
  IF ~~ THEN DO ~JoinParty()
                 IncrementGlobal("SFLeilaExists","AR1900",1)
                 IncrementGlobal("SFLeila","AR1900",1)~ EXIT
END

IF ~~ THEN BEGIN CasseToi
  SAY @3
  IF ~~ THEN DO ~EscapeArea()~ EXIT
END
Le SFLeila.tra (celui-ci n'était pas spécialement destiné à la lecture par autrui et je n'ai pas la prétention de penser qu'il fera dire d'autres que moi... la vie est triste parfois) :
Code:
@50000 = ~Leila~

// Rencontre :

@1 = ~Salut toi, tu m'emmenes faire un tour ?~
@10000 = ~Oui pourquoi pas, tu m'as l'air physiquement intelligente !~
@10001 = ~Je crois que tu es un petit trop complètement trop sûre de toi, alors tu vas rester ici sagement comme une conne à attendre que la pluie te tombe sur la gueule. Hahaha je t'ai cassée !~
@2 = ~Ca promet ! En route !~
@3 = ~Lol, connard ! Mais dégage de là, vas te faire buter par un dragon !~
Le setup.tra :
Code:
@0 = ~Leila NPC : version Beta 0.00~
Le SFLeila.baf :
Code:
IF
  Global("SFLeilaExists","AR1900",1)
  Global("SFLeila","AR1900",1)
  !StateCheck(Player1,STATE_SLEEPING)
  !Detect([ENEMY])
  See([PC])
  NumTimesTalkedTo(0)
THEN
  RESPONSE #100
  IncrementGlobal("SFLeilaExists","AR1900",1)
  IncrementGlobal("SFLeila","AR1900",1) 
  ActionOverride("SFLeila",StartDialogueNoSet(Player1))
END
Le SFAr1900.baf :
Code:
// Spawn Bosquet des Druides

IF
  Global("SFLeila","AR1900",0)
THEN
  RESPONSE #100
    SetGlobal("SFLeilaExists","AR1900",1)
    SetGlobal("SFLeila","AR1900",1)
    CreateCreature("SFLeila",[62.43],10)
   
END
Le setup.tp2 :
Code:
BACKUP ~Leila/backup~
AUTHOR ~...~

LANGUAGE ~Francais~
     ~french~
     ~Leila/Translations/French/Setup.tra~


BEGIN @0

// Creatures
COPY ~Leila/Creatures/SFLeila.cre~ ~override~

// Dialogues
COMPILE ~Leila/Dialogues/SFLeila.d~
    USING ~Leila/Translations/French/SFLeila.tra~

// Scripts
COMPILE ~Leila/Scripts/SFLeila.baf~
    USING ~Leila/Translations/French/SFLeila.tra~

// Pictures
COPY ~Leila/Pictures~ ~override~

// Scripts of Area
EXTEND_BOTTOM ~AR1900.bcs~ ~Leila/Scripts/SFAr1900.baf~
Concernant le SFLeila.cre :
- quand je met Leila dans shortname, que je sauvegarde et que je rouvre, le prénom n'y est lus : est-ce normal ?
- dans la section other attributes / scripting and dialog j'ai mis SFLeila dans Override script, Death Variable et Dialog file.


D'avance, d'autres remerciements pour m'aider à doner son nom à Leila.
phoeunix / Shalendra est déconnecté   Réponse avec citation
Vieux 02/04/2008, 20h03   #4
Deecy
Modérateur
 
Avatar de Deecy
 
Date d'inscription: avril 2003
Localisation: En migration (entre Arcachon, Bordeaux et différentes villes d'Ile de France)
Messages: 722
Par défaut Re : Problème d'implantation du personnage.

Il faut que tu rajoute une ligne dans ton setup.tra
Citation:
@1 = ~Leila~
et que tu complètes l'instruction suivante dans ton setup.tp2
Citation:
COPY ~Leila/Creatures/SFLeila.cre~ ~override~
SAY NAME1 @1
SAY NAME2 @1
__________________
Responsable de la maintenance du mod Kim
Développeur du mod Akadis version beta disponible, missions 1 et 2 jouables (envoyez moi un MP)
Deecy est déconnecté   Réponse avec citation
Vieux 02/04/2008, 20h27   #5
Isaya
Gelée de Moutarde
 
Date d'inscription: juillet 2003
Localisation: Plaisir
Messages: 1 626
Envoyer un message via MSN à Isaya
Par défaut Re : Problème d'implantation du personnage.

Certaines questions relèvent du b-a-ba de la création de mod. Je t'invite à lire tous les tutoriels référencés dans le sujet épinglé du forum sur les outils ([BG] Liste des didacticiels).
En particulier, les deux sites indiqués en premier, même s'ils sont assez ancien, comportent des informations techniques (appelées "théorie" sur l'un d'entre eux) qui permettent de mieux appréhender certaines contraintes du moteur de jeu Infinity Engine. Les outils décrits sont un peu dépassés mais les informations restent vraies.
Par ailleurs, xena a écrit un tutoriel sur la création de mod qui devrait également t'apporter des informations ou des exemples (j'y reviendrai).

Sans développer (je te laisse le soin de lire les tutoriels pour mieux comprendre), voici quelques réponses.

En ce qui concerne le nom de ton personnage, tu verras que les fichiers CRE, ITM, ... ne mémorisent pas les noms et descriptions. Ils se contentent de pointer sur le texte qui se trouvent dans le fichier dialog.tlk. C'est la raison pour laquelle tu ne retrouves pas le nom du personnage quand tu recharges le fichier CRE.
Pour que le personnage ait un nom une fois dans le jeu, il faut que tu t'assures de l'ajouter au moment où la procédure d'installation (le fichier TP2) copie le fichier CRE. Si tu regardes le tutoriel de Xena, tu verras qu'elle a ajouté des lignes "SAY ..." juste après l'instruction "COPY ... xxxx.CRE ...".
Puisque tu utilises (contrairement à son tutoriel) un fichier .tra pour les textes, il te faut remplacer le nom entre ~~ par une référence @50000 (valeur reprise de ton fichier SFLeila.tra) et déplacer la ligne @50000 = ~Leila~ dans ton fichier setup.tra. C'est en effet dans ce fichier que WeiDU ira chercher la référence, pas dans le fichier SFLeila.tra, qu'il n'utilisera que pour compiler le fichier SFLeila.d.
Pour résumer, un fichier .tra est généralement associé à un fichier .d ou à un fichier .tp2. Il faut mettre dans Toto.tra les textes référencés dans Toto.d. Et il faut mettre dans setup.tra (plus précisément le fichier indiqué au tout début du fichier tp2) les textes référencés dans le fichier tp2.

Dans un tout autre registre, j'ai noté que tu avais tenu compte de la modification du nom de variable pour la création. Mais maintenant tu as deux variables, c'est à dire très probablement une de trop. D'ailleurs tu testes partout les deux (sauf au début du script de la zone) et tu les modifies partout de la même façon. Très clairement, il y en a une d'inutile. Tu dois donc pourvoir supprimer celle qui n'est pas testée au moment de la création du personnage (SFLeilaExists).
Par ailleurs, la modification des variables quand le personnage rejoint le groupe est inutile. Etant donné que tu lui as déjà parlé, la condition NumTimesTalkedTo(0) suffira à interdire de réutiliser la réplique initiale du dialogue (pas besoin de modifier les variables pour ça).

Le point d'apparition de Leila est choisi par [62.43], des coordonnées X, Y. Si cette valeur ne te convient pas, utilise les touches rapides (peut-être X de mémoire) pour montrer le nom de la zone et qui donne également les valeurs X,Y sous le pointeur de la souris. Va à l'endroit souhaité et reprend les valeurs affichées pour la commande CreateCreature.
Isaya est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Tags
Aucune


Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Noter la discussion
Noter la discussion:

Règles de messages
Vous pouvez créer de nouvelles discussions
Vous pouvez envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are non

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
[BG1] Le personnage le plus agaçant Shadowist La Taverne de Château-Suif (Baldur's Gate 1) 58 20/09/2007 12h21
[BUG] Importation et bug d'un personnage huhuh La Taverne d'Amkethran (Baldur's Gate 2) 10 13/04/2006 09h59
Mon personnage est un mage... Eomer La Taverne d'Amkethran (Baldur's Gate 2) 99 24/01/2006 15h36
Le meilleur personnage JRR.Tolkien. Le Comptoir d'Amn 311 29/08/2004 21h56


Fuseau horaire GMT +2. Il est actuellement 05h21.



Merci de soutenir La Couronne de Cuivre et le Wiki consacré à Baldur's Gate et aux RPG

Les forums La Sirène Rougissante, La Couronne de Cuivre, ainsi que les sites associés Le Portail du Web et Le Monde de Baldur's Gate sont protégés par le Code de la propriété littéraire et artistique. Baldur's Gate I (1998), Tales of the Sword Coast (1999), Baldur's Gate II (2000) Shadows of Amn, et Throne of Bhaal (2001) sont ©BioWare, licenses et distribution ©ATARI. Dungeons & Dragons material est ©Wizards of the Coast. NeverWinter Nights est un produit ©Bioware, licenses et distribution ©ATARI. DRAGON AGE © 2002-2007 BioWare Corp. Dragon Age, the Dragon Age logo, BioWare Corp., and the BioWare logo are trademarks of BioWare Corp. in the United States, Canada and other countries. All other trademarks are the property of their respective owners. All rights reserved.
Conformément à l'article 34 de la loi 78-17 du 6 janvier 1978 dite loi "Informatiques et Libertés" vous disposez d'un droit d'accès, de modification, de rectification et de suppression de vos données personnelles (déclaration CNIL en cours mai 2007). Pour faire valoir ce droit contactez nous en cliquant ici et en utilisant le formulaire à votre disposition


Édité par : vBulletin® version 3.7.0
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185