Affichage des résultats 1 à 19 sur 19

Discussion: Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

  1. #1
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Question Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Salut,
    J'ai fait apparaître un garde demi-ogre, un ogre et un capitaine hobgobelin par clua console. Je les ai enrôlé grâce au ctrl+q. Je leur ai donné des classes par Shadowkeeper et j'ai fait quelques ajustements. Mais j'ai un problème : l'ogre (et seulement lui) disparaît du plateau dès qu'il passe en dehors du champ de vision d'un autre de mes persos. Son image reste bien sur la droite. Que dois-je modifier dans son profil de variables et valeurs diverses ?

    D'autre part, j'aimerais aller plus loin en permettant d'enrôler ces personnages. J'ai NearInfinity.jar. Comment définir une position à ses personnages et comment leur mettre un dialogue simple de recrutement ?

    PS : j'ai plein de mods dont BGT qui changent les numérotations des cartes de BG 1 (ARxxxx).

  2. #2
    Avatar de Akadis
    Akadis est déconnecté Moddeur sans inspiration
    Date d'inscription
    April 2003
    Localisation
    En migration
    Messages
    1 140

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Tu trouveras des liens vers tutoriaux NPC dont certains sont en français sur ce sujet
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un MPResponsable de la maintenance du mod Kim

  3. #3
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Merci,
    C'est vrai que je me suis précipité. J'ai vu qu'il y avait ensuite une page pour apprendre les bases du modding.
    J'ai vraiment envie de réussir à rendre ces monstres recrutables. Je vous tiens au courant par ce topic.

  4. #4
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Le rapport de Weidu me signale une erreur de syntaxe au niveau du premier EXIT.

    IF ~~ THEN BEGIN Fight
    SAY ~WAAARG ! Môa toujours écrabouiller moucherons qui menacent !~ EXIT
    END

    Quelle est la bonne syntaxe pour positionner ce EXIT ?

  5. #5
    Date d'inscription
    December 2007
    Localisation
    Dordogne
    Messages
    1 141

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Eh bien en fait tout bloc de condition est composé de la même manière à savoir une condition SI/ALORS ou IF/THEN. Par conséquent : IF ~~ THEN BEGIN Fight SAY ~WAAARG ! Môa toujours écrabouiller moucherons qui menacent !~ IF ~~ THEN EXIT END Après les possibilités sont multiple mais il est bon de savoir qu'un .d veut dire : - Say pour la réplique du personnage concerné et - Une réponse de via un then reply ou - Une fin de dialogue via un EXIT ou - Un APPEND via un then extern P.S : Désolé pour la présentation mais mon p***** de pc ne veut rien comprendre. Si ça continue je sens que je vais emmener cette saleté dans un p**** où il pourra à loisir faire c*** (fin de phrase censuré, trop de grossièreté qui me font grincer les oreilles).
    Dernière modification par Armand ; 10/04/2009 à 17h56.

    http://toutlemondesontrolistes.blogs...nitiation.html
    Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe

  6. #6
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Jai remplacé le simple EXIT par un IF ~~ THEN EXIT.
    Ce problème est résolu.

    Mon nouveau problème est que le WeiDU me dit que l'apostrophe est un caractère invalide.

    Edit : L'apostrophe étai invalide car j'avais mis deux vaguelettes au début de la phrase, au lieu d'une seule.
    Dernière modification par Answald ; 10/04/2009 à 19h10.

  7. #7
    Avatar de phoeunix
    phoeunix est déconnecté Punching-ball de service (avec un solide penchant masochiste)
    Date d'inscription
    February 2008
    Localisation
    Nice
    Messages
    469

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Tu as utilisé l'apostrophe à quel endroit ?

  8. #8
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Mon problème d'apostrophe est réglé.

    Par contre, j'ai un nouveau problème (on s'en serait douté).
    WeiDU me signale une PARSE ERROR near : Non, à la ligne 42. Voici la ligne :
    IF ~~ THEN REPLY ~Non, pardon, je voulais désengager quelqu'un d'autre.~ DO ~JoinParty()~ EXIT
    Je ne sais pas ce qu'est une Parse error et je ne vois pas ce qui cloche dans cette ligne.

  9. #9
    Avatar de phoeunix
    phoeunix est déconnecté Punching-ball de service (avec un solide penchant masochiste)
    Date d'inscription
    February 2008
    Localisation
    Nice
    Messages
    469

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Hmmm en l'état, cette ligne me parait correcte, est-ce que tu pourrais mettre le bloc en entier pour qu'on ait une vue d'ensemble, le souci peut venir d'une autre ligne du bloc.

    Sinon la parse error, c'est une erreur de syntaxe, à comprendre de syntaxe Weidu, qui fait que le compilateur n'arrive pas à interpréter ce qui a été écrit et donc à faire la compilation.

  10. #10
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    En fait, je me suis trompé de ligne, mais je ne vois pas non plus l'erreur. Voilà tout le bloc.

    IF ~NumTimesTalkedTo(1) Global("UgarJoined","LOCALS",0)~ THEN BEGIN Rejoin
    SAY ~Ah, salut ! Alors, toi encore besoin de môa en fait ?~
    IF ~~ THEN REPLY ~Oui, si tu veux toujours venir avec moi, tu peux. J'ai besoin de quelqu'un de fort. GOTO JoinYes
    IF ~~ THEN REPLY ~Non, je n'ai pas besoin de toi pour le moment.~ GOTO JoinNo
    END
    //Charname avait renvoyé l'ogre du groupe et revient le voir pour l'engager (ou non).

  11. #11
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 247

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Il te manque un tilde (ce que tu appelles une "vaguelette" ) à la fin d'un texte :
    quelqu'un de fort.~ GOTO JoinYes
    Contre les tildes manquants ou en trop, il n'y a rien de mieux qu'un éditeur qui dispose d'un surlignage syntaxique (highlighter en anglais) pour les fichiers de WeiDU. Tu en trouveras notamment sur ce site.
    L'avantage est que l'absence de tilde modifie automatiquement la couleur habituelle que devrait avoir le GOTO (parce que c'est une commande de fichier d) et le fait apparaître comme un texte, ce qui montre clairement le problème.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  12. #12
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Merci !

    J'ai réussi à créer le pnj et à le voir sur la carte !

    Malheureusement, deux nouveaux problèmes :
    - d'abord, ce dialogue n'arrive pas :
    IF ~NumTimesTalkedTo(1)~ THEN BEGIN Join2
    SAY ~Alors, tôa vouloir de môa ou pas ? Ici môa m'ennuyer...~
    IF ~~ THEN REPLY ~J'ai réfléchi, tu peux venir. Mais ne tape pas n'importe qui, n'importe où, n'importe quand. D'accord ?~ GOTO JoinYes
    IF ~~ THEN REPLY ~Non, merci, peut-être une autre fois.~ GOTO JoinNo
    END
    //Charname a déjà parlé au moins une fois à l'ogre et avait décliné la proposition. Il revient le voir pour l'engager (ou non)
    A chaque fois, le bonhomme se présente avec le dialogue Join1, comme si mon perso ne l'avait jamais rencontré :-(.

    - Le jeu me crée un bonhomme toutes les secondes.

  13. #13
    Avatar de phoeunix
    phoeunix est déconnecté Punching-ball de service (avec un solide penchant masochiste)
    Date d'inscription
    February 2008
    Localisation
    Nice
    Messages
    469

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Qu'entends-tu précisément par "le dialogue n'arrive pas" ? Je vois que tu as mis un NumTimesTalkedTo(1), je suppose donc que ce dialogue est censé lorsque l'on parle pour la 2ème fois au personnage. Dans quelle situation cela se produit-il ? Est-ce ton personnage ou Charname qui déclenche la conversation ?

    Sinon concernant l'apparition à l'infini de ton personnage, cela signifie que le script qui permet de créer ta créature tourne en boucle : les conditions de déclenchement de ce script sont toujours vraies après que le script s'est exécuté, du coup il recommence inféfiniment.

    Pour éviter ça, il faut poser une variable en trigger qui change de valeur une fois que le script s'est exécuté, empêchant ainsi que le script tourne en boucle.

    Exemple :

    IF
    /*Triggers*/
    Global("XXCreatureExists","GLOBAL",0)
    THEN
    RESPONSE #100
    CreateCreature("XXCreature",[XXX.XXX])
    SetGlobal("XXCreatureExists","GLOBAL",1)
    END

    La variable passe à 1 quand XXCreature est créée, du coup le Global("XXCreatureExists","GLOBAL",0) ne se vérifie plus donc le bloc ne se reproduit pas en boucle mais bien une seule et unique fois.

    Je suppose que tu dois faire apparaître ton personnage à partir d'un script de zone, je te propose de le copier ici pour te montrer concrètement où ton script pêche.

    Sinon j'ai remarqué que tu ne passais pas par un .tra pour coder tes dialogues : tu mets directement les lignes de texte entre ~~ dans le .d. Est-ce un choix délibéré ou pas vraiment ? Car je ne saurais que te conseiller d'utiliser un .tra, avec des lignes référencées par des numéros précédés de @, car ça apporte pas mal d'avantages, notamment celui de pouvoir être facilemetn traduit en d'autres langues par exemple.

  14. #14
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 247

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Ton problème de création multiple de personnage provient de l'absence de contrôle pour s'assurer qu'il n'est créé qu'une seule fois. La solution de phoeunix t'évitera ce problème.
    Il doit aussi expliquer ton problème de dialogue. Si tu as plein de personnage à l'écran (même s'il est fort possible qu'ils apparaissent les uns sur les autres, donc ça ne se voit pas beaucoup), il y a fort à parier que tu parles avec un autre personnage que celui à qui tu as parlé la première fois (je veux un des multiples qui ont été créés depuis). Du coup, tu te retrouves de nouveau au premier échange avec ce nouveau personnage.

    Même si je suis d'accord avec phoeunix sur l'usage d'un fichier tra pour stocker les textes, je te suggère néanmoins de continuer pour l'instant à mettre tes textes dans le fichier d comme tu fais actuellement, le temps de te familiariser avec les dialogues.
    Il existe une option de ligne de commande de WeiDU (--traify) qui permet de convertir le fichier d pour transférer tous les textes dans un fichier tra. Tu n'auras donc pas beaucoup d'effort à faire à terme pour passer à cette autre façon d'écrire.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  15. #15
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Merci de vos réponses.
    J'ai écrit ceci dans un fichier appelé ar0015.baf :
    IF
    See([PC])
    NumTimesTalkedTo(0)
    THEN
    RESPONSE #100
    Dialogue(Nearest([PC]))
    END //

    IF
    Global("Ug#Ugar","AR0015",0)
    THEN
    RESPONSE #100
    SetGlobal("Ug#UgarExists","AR0015",1)
    CreateCreature("Ug#Ugar",[1291.517],1)
    END


    J'ai fait mes fichiers grâce aux tutos de Xena et Greyfein.
    Dernière modification par Answald ; 11/04/2009 à 12h32.

  16. #16
    Avatar de phoeunix
    phoeunix est déconnecté Punching-ball de service (avec un solide penchant masochiste)
    Date d'inscription
    February 2008
    Localisation
    Nice
    Messages
    469

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Citation Envoyé par Answald Voir le message
    IF
    Global("Ug#Ugar","AR0015",0)
    THEN
    RESPONSE #100
    SetGlobal("Ug#UgarExists","AR0015",1)
    CreateCreature("Ug#Ugar",[1291.517],1)
    END
    Ici, ce qui fait que le script tourne en boucle, c'est qu'en condition de déclenchement (trigger), tu as la variable "Ug#Ugar" qui est prise comme condition à 0.
    Dans les actions, tu passes la variable "Ug#UgarExists" à 1 et non pas la variable "Ug#Ugar", du coup tu te retrouves avec deux variables différentes :
    - "Ug#Ugar" qui reste à 0 et qui fait tourner le script en boucle.
    - "Ug#UgarExists" qui est à 1 mais qui n'est prise en compte dans aucun script.
    La solution est simple, il faut harmoniser les deux variables pour qu'il n'en reste qu'une. Dans le cas présent je te conseille de garder "Ug#UgarExists" car elle est plus parlante. Du coup le script devient :

    IF
    Global("Ug#UgarExists","AR0015",0)
    THEN
    RESPONSE #100
    SetGlobal("Ug#UgarExists","AR0015",1)
    CreateCreature("Ug#Ugar",[1291.517],1)
    END


    IF
    See([PC])
    NumTimesTalkedTo(0)
    THEN
    RESPONSE #100
    Dialogue(Nearest([PC]))
    END
    Sinon concernant le déclenchement du dialogue, le script que tu as mis ne peut pas fonctionner car il n'est pas au bon endroit.
    En effet, celui-ci se trouve dans le fichier Ar0015.baf qui est un fichier de script de zone.
    Pour ce dialogue qui sera déclenché par ton ogre, il te faut donc un fichier script associé à ta créature. Il te faut créer un Ug#Ugar.baf par exemple (qui colle avec le nom du .cre) et mettre le bloc dedans .
    Pour que l'association soit faite entre le script et la créature, il faut que tu modifies le .cre pour que figure le nom du script de la créature dans la case "Override Script" du .cre.

  17. #17
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    J'ai fait ce que vous m'ave dit. Je n'ai plus le problème des créations multiples de personnage. D'autre part, le "deuxième dialogue" est actif.

    Les nouveaux problèmes : Ugar entame le dialogue dès qu'il voit mon personnage. Je voudrais que la discussion ne commence qu'au moment où je clique sur lui.
    Si je refuse l'offre la deuxième fois que je lui parle, alors je ne peux plus lui adresser la parole (ugar n'a rien à vous dire). J'engage alors Ugar avec ctrl+q, puis je le renvoie du groupe et ce n'est pas le dialogue que j'ai établi qui commence. J'ai un dialogue "par défaut", calqué pour BG2, qui est peut-être dû à BG2, ou à Baldur's Gate Trilogy, ou bien à un autre mod encore.

    C'est de ce genre :
    Ugar - Ce fut un plaisir de travailler avec toi. On se reverra peut-être.
    1- Attends-moi ici.
    2- Va nous attendre à la Couronne de Cuivre
    3- Reste, j'ai encore besoin de toi.

  18. #18
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 247

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Le script que tu as assigné à ton personnage dit en substance : dès que tu vois le personnage principal (See([PC])), je lui adresse la parole (Dialogue(Nearest([PC])), même si cette forme devrait faire qu'il s'adresse au personnage le plus proche du personnage principal). Si tu ne veux pas qu'Ugar parle en premier, supprime tout simplement tout ce bloc.

    Le fait que tu ne puisses pas lui parler plus de deux fois dépend de ton dialogue. Tu as mis une condition super stricte avec NumTimesTalkedTo(1). Elle n'est vrai que la deuxième fois que tu parles. Si tu n'as pas une autre réplique avec des conditions moins strictes que des égalités, aucune condition prévue dans ton dialogue ne sera vérifié et le jeu te dira alors par la phrase "Untel n'a rien à vous dire" que le dialogue ne prévoit aucune réplique dans les conditions actuelles. Et ça, c'est de ta faute, pas de celle du jeu.
    Si tu veux que ton deuxième dialogue réapparaisse tant qu'on ne l'a pas recruté, utilise NumTimesTalkedGT(0) au lieu de NumTimesTalkedTo(1).
    Si tu veux que le personnage ignore le joueur au delà du deuxième échange au lieu d'avoir le fameux message "n'a rien à vous dire", ajoute une nouvelle réplique dont la condition serait NumTimesTalkedGT(1) et qui enverrait balader le joueur.

    Le recours à des dialogues existants quand tu vires le personnage provient du fait que tu n'as pas défini les tiens propres, en tout cas tels que le jeu les attend.

    Les dialogues de séparation ou de réengagement, il te faut les écrire toi-même et les affecter à un dialogue particulier, généralement avec un suffixe P. Si ton dialogue principal commence par BEGIN Ug#Ugar, alors il te faudrait avoir un bloc qui commence par BEGIN Ug#UgarP qui contiendrait les échanges de départ et de retour dans le groupe.
    Ensuite, il y a un fichier à renseigner, pdialog.2DA, dans lequel tu vas indiquer le nom de fichier dialogue (le nom employé avec BEGIN) pour les 4 cas concrets de dialogue. Vois les tutoriels de création de PNJ pour plus d'explications sur les différents fichiers dialogue et les morceaux de code pour ajouter l'information dans le fichier pdialog.2DA. Consulte par exemple ce tutoriel qui traite de ces deux points.

    De façon générale, je te propose de bien lire, assimiler et appliquer les tutoriels. Ils balisent la route. Sinon tu vas encore rencontrer bien des obstacles de ce type sur des cas pourtant "simples". Les tutoriels ne couvrent pas toutes les possibilités, loin de là, mais ils devraient te permettre de créer un personnage qui possède toutes les caractéristiques minimums d'un personnage recrutable.
    Peu disponible
    Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
    Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !

  19. #19
    Date d'inscription
    October 2008
    Localisation
    Saint-maur
    Messages
    34

    Re : Empêcher mon ogre de disparaître + pouvoir recruter mes 3 monstres

    Après quelques jours d'interruption, j'ai réussi aujourd'hui à rendre le PNJ recrutable sans aucun bug dans les dialogues. Ce n'est pas grand chose mais je suis content de moi.

    Grâce à Near Infinity, il a l'apparence et le comportement d'un ogre.

    J'aimerais lui donner l'infravision et lui interdire tout autre type d'arme que les morgensterns et les gourdins, pour coller à son apparence. Comment faire ? J'ai regardé tous les éléments de la fiche du perso, ue l'on peut modifier avec Near Infinity mais je n'ai pas trouvé.

    Edit : je ne vais pas inclure de hobgobelin dans le mod. Je vais y mettre un demi-ogre, qui sera le demi-frère de l'ogre. Il sera videur dans une auberge (probablement Nashkel).
    Dernière modification par Answald ; 20/04/2009 à 21h46.

Discussions similaires

  1. [BG2][BUG] Amulette de Pouvoir
    Par Itachou dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 5
    Dernier message: 19/03/2009, 11h07
  2. [BG1] Pont de Flammevin, l'ogre-mage
    Par knardo dans le forum La Taverne de Château-Suif (Baldur's Gate 1)
    Réponses: 27
    Dernier message: 01/05/2006, 20h36
  3. Je ne peux pas utiliser mon mot de pouvoir etourdissant
    Par jabba dans le forum Le Monastère du Corbeau Noir (Icewind Dale 2)
    Réponses: 2
    Dernier message: 26/10/2005, 21h33
  4. [HOTU] faire disparaitre les cadavres
    Par rafouille dans le forum L'Académie de Padhiver (NWN 1)
    Réponses: 4
    Dernier message: 12/07/2004, 13h31
  5. Empêcher la boucle temporelle
    Par aeris dans le forum Le Monastère du Corbeau Noir (Icewind Dale 2)
    Réponses: 2
    Dernier message: 02/06/2004, 23h19

Les tags pour cette discussion

Règles de messages

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

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 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231