Affichage des résultats 1 à 4 sur 4

Discussion: [TUTORIEL] [CARTES] Annexe 2 : Modifier un fichier .are avec WeiDU (.tp2)

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

    Flèche [TUTORIEL] [CARTES] Annexe 2 : Modifier un fichier .are avec WeiDU (.tp2)

    Créer une map pour bg2 (annexe 2)



    Introduction

    Depuis quelque temps déjà de nouvelles macros ont été implantées dans le programme WeiDU et sont désormais utilisables par tous. Les macros permettent en fait de simplifier une manipulation en automatisant un processus qui est générique. C'est-à-dire un processus qui se répète toujours de la même manière. En effet à quoi bon répéter une page entière de tp2 quand on veut juste supprimer quelques effets sur une créature, quand on veut modifier le contenu d’un conteneur sur une crte ou même concevoir un lien entre une nouvelle zone de notre cru et une crte d’origine du jeu par exemple. C’est pourquoi certains modders comme l’auteur d’Aurora shoes ou celui de Fishing for troubles ont eu l’idée de créer leurs propres macros afin de gagner du temps sur certaines manipulations.
    Il y aurait beaucoup à dire et beaucoup à faire sur les macros mais pour l’heure je vais juste vous donnez un petit exemple concernant la création de travel trigger. Dans l’absolu c’est la fonction de patch que vous risquez d’utiliser le plus souvent et qui pourra vous servir de modèle si vous voulez tentez l’aventure avec d’autres macros.
    Pour suivre ce tuto, je partirai du principe que vous avez déjà suivi mon tutorial sur les travel triggers. Je ne m’étendrai donc pas sur les manipulations liées à la création de « régions » permettant de transiter entre les zones.

    Première étape : récupérer les coordonnées sous DLTCEP

    Pour illustrer mon propos, on va imaginer qu’on a créé un sous-sol par exemple dans les docks d’Atkhatla et qu’on veut faire un lien entre notre nouvelle carte et la carte d’origine des docks. Il va donc falloir ouvrir DLTCEP pour charger cette carte - je vous invite à le faire avec moi. La référence de cette zone est AR0300 et on peut y accéder facilement en choisissant la commande :



    Area/load area







    On reconnaît ici facilement le quartier des docks. DLTCEP nous offrant un aperçu de chaque carte, cela nous simplifie considérablement la tache. On peut également noter une fonction « search next » qui nous permet de recherche une carte via une entrée texte complète ou partielle. Maintenant nous allons nous diriger vers l’endroit de la carte qui nous intéresse :






    Ils ‘agit d’une maison dont l’un des cotés est masqué par la perspective, nous pouvons donc imaginer qu’il y a un passage par lequel accéder au bâtiment. Ici j’ai crée une nouvelle "région" afin de pouvoir déterminer un polygone sur la zone qui m’intéresse. C’est sur cette zone là que le symbole « porte ouverte » apparaîtra par la suite. Vous pouvez d’ailleurs vous-même créer votre propre polygone sur n’importe quel endroit de la carte. Maintenant faisons un zoom sur l’élément caractéristique qui va nous intéresser sur ce screen :








    Nous avons ici une série de cinq points déterminés par une combinaison de valeurs x et y. Il va vous falloir les noter sur un éditeur de texte en prenant bien garde à en respecter l’ordre. Avant de quitter DLTCEP nous allons également déterminer l’entrance (entrée) qui va nous permettre de nous positionner sur la zone de destination. J’ouvre donc une carte de mon cru à titre d’exemple :






    Ici j’ai utilisé le menu entrance pour déterminer une entrance, comme d’habitude je détermine mon entrance prés de la porte vu que c’est là qu’il a plus de chance de déboucher lorsqu’on la franchit… Mais ce qui va surtout m’intéresser ici, ce sont les valeurs visibles tout en faut de la fenêtre, à savoir :





    De même, je transcris ce point sur mon éditeur de texte en précisant quelque chose comme :

    Entrance : valeur x = 470 ;valeur y = 548

    Voila pour la partie graphique, maintenant passons à la partie code !


    Deuxième étape : mettre en place une région par tp2


    Avec les informations que nous avons récupéré, nous allons pouvoir patcher notre carte afin d’avoir un travel trigger fonctionnel. Il faut savoir que sur la macro que j’utilise qui est une macro qui permet de faire des modifications structurelles sur une carte, certains composants sont indispensables au bon fonctionnement de la macro alors que d’autres sont optionnels. Pour plus de lisibilité j’écrirai en rouge les éléments essentiels et en bleu les éléments plus accessoires. ATTENTION : quand je dis accessoire c’est accessoire à la bonne exécution de la macro mais si par exemple vous ne mettez pas d’area de destination à une « region» la carte plantera. Voici donc comment se décompose le code :

    COPY_EXISTING ~AR0300.are~ ~override/AR0300.are ~
    On copie la zone et on la place dans l’override afin de la patcher.

    LPF fj_are_structure
    On annonce à la macro que l’on va utiliser ici comme je l'ai déjà dit c’est une macro que l’on utilise afin de modifier une zone. Le nom de la macro est « fj_are_structure », le terme LPF est un raccourci LAUNCH_PATCH_FUNCTION qui est une instruction qui permet de faire comprendre au programme que nous allons lancer une macro. Vous allez d’ailleurs la retrouver dans tous les patch utilisant des macros car sans ça la macro ne peut être lue et comprise.

    INT_VAR
    fj_type = 2

    Le fj_type correspond au type de région auquel on a affaire (0=trap (piège), 1=info (texte cliquable), 2=travel (transition de zone). Ici on désire créer une nouvelle « travel region » ce sera donc deux.

    fj_box_left = 2260
    Le point de votre polygone qui se trouve le plus à gauche. Sachant que plus on se positionne vers le haut ou vers la gauche plus on se rapproche de 0 et plus on se positionne vers le bas ou la droite plus on s’en éloigne. Je choisis donc la valeur x la plus faible : 2260.

    fj_box_top = 505
    De même, il faut inscrire le point de votre polygone le plus haut. Je choisis donc la valeur y la plus faible également : 505

    fj_box_right = 2435
    La plus à droite cette fois. La valeur la plus forte de l’axe x : 2435.

    fj_box_bottom = 633
    La plus en bas. La valeur la plus forte de l’axe y : 633

    fj_cursor_idx = 32
    Comme son nom l’indique il s’agit du curseur qui apparaît lorsque vous vous positionnez sur la « travel region ». Ici il s’agit d’une porte entrebâillée. Il existe bien sur d’autres icônes faisant toutes référence au fichier « cursors.bam ». Vous pouvez également trouver ces références sous l’onglet régions de DLTCEP à la partie « cursor index ».

    fj_vertex_0 = 2346 + (505 << 16)
    fj_vertex_1 = 2260 + (565 << 16)
    fj_vertex_2 = 2293 + (632 << 16)
    fj_vertex_3 = 2400 + (633 << 16)
    fj_vertex_3 = 2435 + (554 << 16)

    Le système est assez simple ici, vous indiquez les coordonnées x et y de chaque point en suivant cette syntaxe : valeurx + (valeury <<16). En toute logique vous devez avoir autant de « fj_vertex » que de points sur votre polygone.


    STR_VAR
    fj_structure_type = region

    Cette commande sert à préciser le type de modification auquel on a affaire. Ce sont les différents onglets que vous avez déjà pu voir sous DLCTEP à savoir :

    (actor, region, spawn, entrance, container, itm, ambient, variable, door, animation, explored bitmask, songlist, rest interrupt table, note or projectile)

    Qu’ont pourrait éventuellement traduire par :

    (créatures implantées, génération de monstres, point d’arrivée, contenant, objets, sons ambiants, variable, porte, animation, musiques, interruptions lorsque le personnage se repose, note ou projectile)

    fj_name = « #VART1 »
    Le nom de la nouvelle région que vous venez de créer. N’oubliez surtout pas de PRÉFIXER pour éviter les incompatibilités ! Nous avons affaire ici à une entrée texte spécifique dans le programme, il est donc nécessaire de la mettre entre guillemets (ou entre ~~) afin que le programme la comprenne.

    fj_destination_area = "#V7000"
    La zone vers laquelle vous désirez transiter.

    fj_destination_name = "#VARE2"
    Le nom de l’entrance de la zone vers laquelle vous vous dirigez et par laquelle vous voulez arriver.

    END
    Annonce la fin de la manipulation.

    Ce qui au final doit nous donner quelque chose comme :


    COPY_EXISTING ~AR0300.are~ ~override/AR0300.are ~

    LPF fj_are_structure
    INT_VAR
    fj_type = 2
    fj_box_left = 2260
    fj_box_top = 505
    fj_box_right = 2435
    fj_box_bottom = 633
    fj_cursor_idx = 32

    fj_vertex_0 = 2346 + (505 << 16)
    fj_vertex_1 = 2260 + (565 << 16)
    fj_vertex_2 = 2293 + (632 << 16)
    fj_vertex_3 = 2400 + (633 << 16)
    fj_vertex_4 = 2435 + (554 << 16)
    STR_VAR
    fj_structure_type = region
    fj_name = « #VART1 »

    fj_destination_area = "#V7000"
    fj_destination_name = "#VARE2"
    END
    Collez ça quelque part dans votre tp2 et installez. Si tout fonctionne alors bravo vous avez patché votre première carte. Sinon eh bien postez à la suite de ce topic pour voir ce qu’on peut faire.


    Troisième étape : mettre en place une entrance par tp2

    Si vous patchez une carte originale du jeu pour allez vers une zone de votre cru, il vous suffit en effet de faire correspondre l’entrance que vous avez créée sur votre carte. Mais maintenant si vous voulez transiter d’une zone à vous vers une zone originale peut être voudrez vous créer une nouvelle entrance sur cette zone pour plus de cohérence. C’est là que les coordonnées qui avez notées plus haut vont nous servir.


    COPY_EXISTING ~AR0300.are~ ~override/AR0300.are ~
    De même, on prépare la carte au patch.

    LPF fj_are_structure
    INT_VAR

    Ici rien ne change même commande que d’habitude.

    fj_loc_x = 470
    Coordonnées x du point que l’on a déterminé au préalable.

    fj_loc_y = 548
    Même chose pour le point y.


    fj_orientation = 10
    La direction vers laquelle le groupe pointe lorsqu’il arrive sur la zone. (valeur de 0 à 15 0=sud, 4=ouest 8=nord, 12=est)

    STR_VAR
    fj_structure_type = entrance

    Comme on l’a vu auparavant le type d’élément que l’on est amené à modifier. Ici une entrance.

    fj_name = "#Vent1"
    Le nom de l’entrance afin que vous puissiez le repérer. Comme d’habitude on n’oublie pas de PRÉFIXER !

    END
    Comme d’habitude pour terminer l’instruction.

    COPY_EXISTING ~AR0300.are~ ~override/AR0300.are ~
    LPF fj_are_structure
    INT_VAR
    fj_loc_x = 470
    fj_loc_y = 548

    fj_orientation = 10 STR_VAR
    fj_structure_type = entrance
    fj_name = "#Vent1"
    END

    Maintenant vous savez comment créer une entrance et une région. Direction la prochaine étape où nous allons apprendre deux trois petits trucs potentiellement utiles.


    Quatriéme étape : quelques commandes utiles pour nettoyer une map

    Je m’étendrai davantage sur le sujet lors de prochains tutos néanmoins je voulais profiter de celui-ci pour vous indiquer deux trois commandes généralistes qui en l’occurrence sont très utiles pour nettoyer une carte :

    COPY_EXISTING ~AR0300.are~ ~override/AR0300.are ~
    On cible toujours la même carte qui sert à nos tests.

    LPF DELETE_AREA_ITEM
    Cette commande supprimera tous les objets d’une zone en supprimant tout simplement le contenu de tous les conteneurs. On peut noter ici que nous avons affaire à une nouvelle macro : DELETE_AREA_ITEM . A quoi le voit-on ? Eh bien à la présence de LPF (LAUNCH_PATCH_FUNCTION) bien sur ! Nous l’avons déjà vu plus haut c’est l’instruction indispensable à al bonne exécution d’une macro.


    STR_VAR
    item_to_delete = "RNDTRE01"

    Mais ici par exemple je peux préciser un objet à supprimer en particulier. Il me suffit d’indiquer la référence du fichier itm. Si je ne met pas cette ligne (ou plusieurs autres si je désire supprimer plusieurs items) tous les items seront supprimés.

    END
    On a lancé une commande il faut la fermer.

    LPF fj_are_structure
    Notre macro habituelle.

    INT_VAR
    fj_delete_mode

    On utilise une instruction particulière.qui va permettre de supprimer un composant de la carte au lieu d’en ajouter.

    STR_VAR
    fj_structure_type = actor

    On précise quels composant supprimer, ici on choisit de supprimer tous les « actors » c'est-à-dire toutes les créatures de la carte.

    END
    Idem que plus haut.

    Dans un cas pratique cela peut nous donner quelque chose du genre :

    COPY_EXISTING ~AR0300.are~ ~override/AR0300.are ~
    LPF DELETE_AREA_ITEM
    STR_VAR
    item_to_delete = "RNDTRE01"
    END
    LPF fj_are_structure
    INT_VAR
    fj_delete_mode = 1
    STR_VAR
    fj_structure_type = actor
    END
    Conclusion

    Tout ceci n’est bien sur qu’un échantillon de ce que vous pouvez faire. Les macros couvrent une étendue extrêmement large de possibilités. Mais vous avez quelques cas pratiques pour vous guider. N’hésitez pas aussi à consulter régulièrement les infos du readme de WeiDu à ce sujet, je n’invente rien tout est ou bien encore .
    Dernière modification par Freddy_Gwendo ; 23/03/2016 à 22h31. Motif: Actualisation des liens des images

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

  2. #2
    Date d'inscription
    March 2012
    Localisation
    Bordeaux
    Messages 
    9
    YOUHOU !! C'est tellement plus engageant que d'avoir à bidouiller les offsets à la main !
    Un grand nouveau merci pour ce nouveau tuto, qui est complétement ce que je voulais savoir !

    Jetage de fleurs mis à part, j'ai remarqué ce détail :
    fj_destination_area = « #VAR7000 »
    il faut un nom d'area sur 6 caractères, non ?

    En tous cas, j'ai moins peur d'exécuter mon SetupWeidu en relisant mon tp2 de maintenant plutôt que dans sa version précédente.
    Mon dernier test d'intégration avait planté BG2 au démarrage (puisque j'éditais (mal) la map du dongeon d'irenicus, moitié avec tp2, moitié avec DLTCEP... bref, impossible de lancer ma nouvelle partie).
    N'étant pas très sûr de ce que je devais faire, j'ai écrasé (comme un bourrin) tout le contenu du dossier BG, pour le remplacer par une copie de ce même dossier avant modification. rigolez pas !

    encore une question/vérification :
    Dans l'éventualité où il faille désinstaller un mod (un mod non fonctionnel par exemple), il suffirait de relancer le Setup-NomMod.exe qui proposera la désinstallation d'un ou des composants qu'il a déjà installé.
    Le moddeur n'a pas besoin d'ajouter de procédure particulière dans le tp2. correct ?

  3. #3
    Date d'inscription
    December 2007
    Localisation
    Dordogne
    Messages 
    1 141
    fj_destination_area = « #VAR7000 »
    il faut un nom d'area sur 6 caractères, non ?
    Oui tout a fait ceci est une erreur de ma part. Je le corrige de suite en fait la référence était "#V7000".

    En tous cas, j'ai moins peur d'exécuter mon SetupWeidu en relisant mon tp2 de maintenant plutôt que dans sa version précédente.
    Mon dernier test d'intégration avait planté BG2 au démarrage (puisque j'éditais (mal) la map du dongeon d'irenicus, moitié avec tp2, moitié avec DLTCEP... bref, impossible de lancer ma nouvelle partie).
    N'étant pas très sûr de ce que je devais faire, j'ai écrasé (comme un bourrin) tout le contenu du dossier BG, pour le remplacer par une copie de ce même dossier avant modification. rigolez pas !
    On est tous passé par là, c'est en bidouillant qu'on apprend ! Il existais bien des manoeuvres de tp2 de patch via des enchaînements de READ et de WRITE autrefois mais bon c'étais tellement lourd que faire ça en quelque ligne c'est un vrai plaisir. Quand on vois ce qu'à du faire akadis pour son mod ne serait ce que pour patcher une zone des bas quartiers on se dit qu'on est content d'avoir une alternative...

    Dans l'éventualité où il faille désinstaller un mod (un mod non fonctionnel par exemple), il suffirait de relancer le Setup-NomMod.exe qui proposera la désinstallation d'un ou des composants qu'il a déjà installé.
    Le moddeur n'a pas besoin d'ajouter de procédure particulière dans le tp2. correct ?
    Oui exactement c'est l'avantage de weidu c'est rétroactif ça permet de multiplier les tests sans se fouler. Ravi que le tutorial t'ai plus dans tous les cas. Et au plaisir de voir tes créations.


    EDIT : J'ai aussi remplacé les « par des " plus classique. Word utilise ces guillemets par default mais je ne suis pas sur que weidu les reconnaisse.
    Dernière modification par Armand ; 19/10/2012 à 13h43.

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

  4. #4
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 644
    Pour les ceusses qui se désolaient, j'ai actualisé les liens des images.

    Bonne lecture.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

Discussions similaires

  1. [WeiDU] Comment ajouter des colonnes au fichier TOOLTIP.2da ?
    Par Freddy_Gwendo dans le forum Programmation WeiDU
    Réponses: 4
    Dernier message: 25/03/2016, 21h58
  2. Réponses: 6
    Dernier message: 23/03/2016, 21h37
  3. Réponses: 1
    Dernier message: 10/02/2013, 08h57
  4. [BG2][TECH] Je ne peux pas modifier le fichier baldur.ini - résolu
    Par Caladrius dans le forum La Taverne d'Amkethran (Baldur's Gate 2)
    Réponses: 3
    Dernier message: 27/05/2012, 12h45
  5. [CRE] Comment modifier un fichier CRE avec NearInfinity ?
    Par Medji dans le forum Créatures, Monstres et NPC
    Réponses: 9
    Dernier message: 02/12/2009, 19h53

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 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256