Affichage des résultats 1 à 14 sur 14

Discussion: [SCRIPT] Comment remplacer une créature d'une carte par une autre ?

  1. #1
    Date d'inscription
    October 2003
    Localisation
    Valenciennes
    Messages
    191

    [SCRIPT] Comment remplacer une créature d'une carte par une autre ?

    Bon je suis de retour et j'ai un petit probleme.

    Le fichier .cre du madulf d'origine dans l'override s'appelle UHOGRE1

    Mon fichier .tp2 fait:

    COPY ~Override\UHOGRE1.cre~ ~Madulf\Backup\UHOGRE1.cre~
    COPY ~Madulf\Madulf.cre~ ~Override\UHOGRE1.cre

    Madulf.cre est le perso qui doit être recruté.

    Pourtant apres avoir utilisé le setup (pas d'erreur) je retrouve le Madulf d'origine dans les collines d'Umar.

    Quelqu'un pourrait m'expliquer mon erreur?
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 22h26. Motif: Modification du titre de la discussion
    Venez visiter mon site http://membres.lycos.fr/nysi/

  2. #2
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472
    Les personnages qui ne sont pas créés par un script mais qui sont directement présents dans le fichier ARE (c'est probablement le cas de Madulf car il est présent dès le début des quêtes à Umar) sont mémorisés dans ton fichier de sauvegarde. Assure-toi donc de reprendre une partie dans laquelle tu n'es jamais allé dans les collines d'Umar. Sinon c'est trop tard.
    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 !

  3. #3
    Silk Invités
    Et ce sera trop tard dans le mod aussi, je présume

  4. #4
    Date d'inscription
    October 2003
    Localisation
    Valenciennes
    Messages
    191
    Ok merci j'ai compri donc la seule solution est de faire comme weimer avec Solaufein: créer un nouveau madulf et supprimé l'ancien de la zone des collines d'Umar.
    Comme Madulf rejoint apres avoir conclu le pacte avec le village, le supprimé ne pose pas de probleme mais par contre je ne sais pas comment on fait.
    Venez visiter mon site http://membres.lycos.fr/nysi/

  5. #5
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472
    Originally posted by Nysi@samedi 29 novembre 2003, 01:33
    Ok merci j'ai compri donc la seule solution est de faire comme weimer avec Solaufein: créer un nouveau madulf et supprimé l'ancien de la zone des collines d'Umar.
    Peut-être trouveras-tu une solution en regardant comment Weimer a fait, tout simplement ?
    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 !

  6. #6
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages
    723
    J'avais eu le même problème avec la prêtresse d'Umberlee à Brynnlaw.

    Ma solution, qui vaut ce qu'elle vaut, c'est:

    1. Tu crées un fichier script que tu nommes madulfswap:

    Code:
    IF
      G("MADULFSWAP",0)
    THEN
      RESPONSE #100
        DestroySelf()
        SG("MADULFSWAP",1)
    END
    2. Tu crées un fichier script que tu nommes madulfswaparea:

    Code:
    IF
      G("MADULFSWAP",1)
    THEN
      RESPONSE #100
        CreateCreature("Madulf2",X,Y,Z)
        SG("MADULFSWAP",2)
    END
    3. Dans ton TP2, tu rajoutes:

    Code:
    EXTEND_TOP ~MADULF.bcs~ ~TONNPC\MADULFSWAP.bcs~
    
    EXTEND_BOTTOM ~(chiffre de la zone).bcs~ ~TONNPC\MADULFSWAPAREA.bcs~
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 21h54. Motif: Mise en page
    MOD KIM TERMINE
    - Des centaines de dialogues et d'interactions
    - De nombreuses quêtes
    - De nouveaux objets magiques
    - Une véritable romance

    Roman d'Heroic Fantasy en feuilleton (un chapitre par jour)
    Intro 01 02 03 04 05 06 07 08 09 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

  7. #7
    Date d'inscription
    October 2003
    Localisation
    Valenciennes
    Messages
    191
    Merci grenouille
    Si tu pourrait preciser quelque detail s'il te plait ça m'aiderai beaucoup.

    dans le Madulfswaparea.bcs, doit je mettre les coordonnées de Madulf a la place des X,Y,Z (j'ai le X et le Y mais alors Z dans un jeu en 2D je pige pas ...)

    Une fois que mes script sont fait, que doit je en faire? comment faire pour les declencher?

    Et pourrait tu m'expliquer a quoi serve les "response #100" et la variable "Madulfswap"

    merci d'avance.
    Venez visiter mon site http://membres.lycos.fr/nysi/

  8. #8
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472
    Dans CreateCreature(), le Z indique l'orientation du personnage. La valeur va de 1 à 8 il me semble.

    Ce qu'a écrit Grenouille à propos du "TP2" concerne l'installation d'un mod avec WeiDU. Les lignes qu'il a indiquées provoquent l'ajout des bouts de scripts que tu as créés dans ceux du jeu (MADULF.BCS et ARxxxx.BCS, ARxxxx représentant la zone d'Umar). Tant que tu es en phase de création, le plus simple est peut-être de prendre un éditeur de script et d'ajouter les morceaux de scripts directement.

    "RESPONSE 100" est un codage indiquant le poids relatif des différentes possibilités quant tu en indiques plusieurs. La valeur indique le poids. Par exemple :
    Code:
    IF
      CONDITION
    THEN
      RESPONSE #70
        Action1()
      RESPONSE #30
        Action2()
    END
    signifie qu'il y a 70% de chances que l'action 1 soit effectuée et 30% que ce soit la 2. La somme des valeurs n'est pas nécessairement également à 100. Le poids effectif de chaque branche est déterminé de façon relative.
    En général, RESPONSE 100 est utilisé quand il n'y a qu'une seule possibilité auquel cas, elle a 100% de chances.

    La variable SWAP est utile pour s'assurer que la création ne s'effectue qu'une seule fois. Les 3 états sont nécessaires car les actions de destruction et de création s'effectuent dans des scripts différents.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 21h55. Motif: Mise en page
    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 !

  9. #9
    Date d'inscription
    September 2003
    Localisation
    Paris
    Messages
    723
    En fait, je viens de réfléchir, et il y a beaucoup plus simple.
    Oublie complètement mon histoire d'area, tu n'auras à modifier qu'un seul script, celui de madulf (MADULF.BCS).

    Code:
    IF
      G("MADULFSWAP",0)
    THEN
      RESPONSE #100
        CreateCreature("Madulf2",[-1.-1],0)
        SG("MADULFSWAP",1)
        DestroySelf()
    END

    Pour expliquer clairement ce script, morceau par morceau :
    Code:
    IF
      G("MADULFSWAP",0)
    Si la variable Madulfswap est égale à 0...

    Code:
    THEN
      RESPONSE #100
    ...alors, il y a 100% de chances qu'il se passe les choses suivantes:

    Code:
        CreateCreature("Madulf2",[-1.-1],0)
    1. La créature nommée Madulf2 sera créée juste à côté du Madulf original (lorsque tu mets [-1.-1] comme paramètre, ça crée la créature à côté du personnage qui joue le script).

    Code:
        SG("MADULFSWAP",1)
    2. La variable MADULFSWAP devient égale à 1, pour éviter que le script soit ré effectué par erreur.

    Code:
        DestroySelf()
    3. Le madulf originel disparaît, ce qui laisse donc Madulf2 tout seul

    Et voilà !
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 21h59. Motif: Mise en page
    MOD KIM TERMINE
    - Des centaines de dialogues et d'interactions
    - De nombreuses quêtes
    - De nouveaux objets magiques
    - Une véritable romance

    Roman d'Heroic Fantasy en feuilleton (un chapitre par jour)
    Intro 01 02 03 04 05 06 07 08 09 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

  10. #10
    Date d'inscription
    October 2003
    Localisation
    Valenciennes
    Messages
    191
    Merci a vous deux , le script fonctionne mais j'ai un nouveau probleme, le nouveau pnj ne parle pas (Le jeu indique qu'il n'a rien a me dire).

    J'ai pourtant créer un fichier .D et je lui est assigné avec creaturemaker.

    Est ce qu'il faut aussi assigné d'autre script a mon pnj pour qu'il puisse repondre?

    Avec le script des persos créer en multi ça fonctionne mais Madulf vient direct sur le Pj pour rejoindre le groupe.
    Venez visiter mon site http://membres.lycos.fr/nysi/

  11. #11
    Date d'inscription
    July 2003
    Localisation
    Plaisir
    Messages
    6 472
    Un dialogue se construit en précisant la condition (ça peut être un ensemble de conditions) dans laquelle le bout de dialogue apparaîtra. Lorsque tu veux parler à quelqu'un, le jeu cherche la première condition vérifié et utilise ce dialogue. Si ton personnage n'a rien à dire, c'est qu'aucune condition n'est vérifiée.
    Pour un premier dialogue, un classique de condition est : NumTimesTalkedTo() = 0 (à vérifier, je ne suis plus sûr de l'écriture exacte).
    Vérifie parmi les questions posées il y a environ 2 mois par Grenouille, il a été confronté au même problème si ma mémoire est bonne.
    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 2003
    Localisation
    Valenciennes
    Messages
    191
    Ok merci Iasya ça marche maintenant.
    Venez visiter mon site http://membres.lycos.fr/nysi/

  13. #13
    Date d'inscription
    April 2003
    Messages
    979
    Comment effacer un personnage qui a un script général ou n'en a pas...

    Pour compléter un peu le sujet de comment effacer un personnage, je voulais récemment enlever deux roturiers dans une maison du district du pont. Le problème est que l'on ne peut pas simplement faire un nouveau script et le rajouter à celui qu'ils ont actuellement car tous les roturiers ont le même (en fait ils en ont même 3 de scripts... :..: )...

    Donc si je mettais "DestroySelf()", tous les roturiers du jeu y seraient passés... :omg:

    Alors, j'ai tout d'abord créé un nouveau script, que je nommerais V#BRAT1 par exemple (c'est un fichier .baf contenant) : (petite précision le PNJ que je voulais éliminer se nommait "BRAT1").

    Code:
    IF
      Global("V#BRAT1","GLOBAL",0)
      !Dead("BRAT1")
    THEN
      RESPONSE #100
        SetGlobal("V#BRAT1","GLOBAL",1)
        DestroySelf()
    END
    Jusque ici c'est relativement simple. Ensuite pour allouer le script au PNJ il faut utiliser la commande WeiDU : WRITE_ASCII

    Voilà ce que donne ce passage dans mon fichier .tp2 :

    Code:
    COMPILE ~WALAANPC\V#BRAT1.baf~
    COPY_EXISTING ~BRAT1.cre~ ~override\BRAT1.cre~
      WRITE_ASCII ~0x250~ ~V#BRAT1~
      WRITE_BYTE 0x257 0x00
    (Ça peut sembler barbare au premier abord mais je vais tâcher d'expliquer)

    Code:
    COMPILE ~WALAANPC\V#BRAT1.baf~
    Pas trop de problème sur ce point la, cela sert juste à compiler le script dans le jeu.

    Code:
    COPY_EXISTING ~BRAT1.cre~ ~override\BRAT1.cre~
    Pour pouvoir effectuer la modification sur le fichier, il faut que l'original soit dans le dossier override. Cette commande relativement facile à comprendre le permet.

    Code:
      WRITE_ASCII ~0x250~ ~V#BRAT1~
    Là ça se complique un petit peu. WRITE_ASCII va permettre de modifier certaines données du fichier .cre dans ce cas. le 0x250 indique l'endroit du fichier où je veux que la modification soit effectuée. Et ensuite vous reconnaissez le nom du nouveau script à ajouter.

    Code:
      WRITE_BYTE 0x257 0x00
    On pourrait penser que la procédure s'arrête à la phase précédente mais un méchant problème fait que WeiDU rajoute un "caractère" à la fin de la ligne de script modifiée dans le fichier .cre Donc pour éviter cela il faut soit :
    1) Utiliser un éditeur hexadécimal pour rajouter un 0 à la fin de V#BRAT1 (directement)
    2) Soit utiliser cette commande qui le rajoute par l'intermédiaire de WeiDU et donc élimine le caractère parasite.
    Le 0x257 est l'endroit où cela doit être ajouté (à la fin de V#BRAT1) qui fait 7 lettres.

    Et voilà, lorsque vous entrez dans la map concernée, le bonhomme disparait.

    Ayant débuter relativement récemment l'editing (2-3 semaines), il y a peut-être une méthode plus simple et c'est peut-être confus. Enfin ça marche. N'hésitez pas à poster en cas de besoin de précisions supplémentaires.
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 22h03. Motif: Mise en page

  14. #14
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages
    3 764
    Citation Envoyé par Walar
    Code:
      WRITE_ASCII ~0x250~ ~V#BRAT1~
    Là ça se complique un petit peu. WRITE_ASCII va permettre de modifier certaines données du fichier .cre dans ce cas. le 0x250 indique l'endroit du fichier où je veux que la modification soit effectuée. Et ensuite vous reconnaissez le nom du nouveau script à ajouter.

    Code:
      WRITE_BYTE 0x257 0x00
    On pourrait penser que la procédure s'arrête à la phase précédente mais un méchant problème fait que WeiDU rajoute un "caractère" à la fin de la ligne de script modifiée dans le fichier .cre Donc pour éviter cela il faut soit :
    1) Utiliser un éditeur hexadécimal pour rajouter un 0 à la fin de V#BRAT1 (directement)
    2) Soit utiliser cette commande qui le rajoute par l'intermédiaire de WeiDU et donc élimine le caractère parasite.
    Le 0x257 est l'endroit où cela doit être ajouté (à la fin de V#BRAT1) qui fait 7 lettres.
    Inutile, WeiDU fait tout ceci tout seul, comme un grand :
    Code:
      WRITE_ASCII ~0x250~ ~V#BRAT1~ #8
    #8 permet à WeiDU de savoir qu'il écrit une chaîne devant comporter au maximum 8 caractères. Il comble donc les "blancs" si la variable fait moins de 8 caractères.

    Sinon, la fonction Weidu ALTER_AREA_ACTOR le fait très bien !
    Dernière modification par Freddy_Gwendo ; 02/04/2016 à 22h30.
    CARPE DIEM...
    Co-modérateur de La Forge
    Moddeur qui s'arrache les cheveux...

Discussions similaires

  1. [SOLUCE] Comment récupérer un personnage qui est resté dans l'asile ?
    Par Magnus dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 9
    Dernier message: 23/06/2008, 17h52
  2. Sujet à effacer
    Par Astrea dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 5
    Dernier message: 24/04/2008, 19h56
  3. [AIDE] Comment bénéficer de deux quêtes de classe avec un personnage multiclassé ?
    Par Magnus dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 12
    Dernier message: 02/03/2008, 18h55
  4. [CARTES] Comment assigner un script à une carte existante du jeu qui n'en a pas ?
    Par Grenouillebleue dans le forum Cartes et Cartes du monde
    Réponses: 17
    Dernier message: 28/03/2005, 18h59
  5. [KITS] Effacer un kit ou le déplacer
    Par mai321mai dans le forum Le Bazar de l'Aventurier
    Réponses: 13
    Dernier message: 20/06/2004, 11h08

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 232 233 234 235 236 237