Affichage des résultats 1 à 15 sur 15

Discussion: [TP2] dupliquer un Trigger trap x fois sur la même carte

  1. #1
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 248

    [TP2] dupliquer un Trigger trap x fois sur la même carte

    L'objectif est le suivant:
    - cloner un trigger trap x fois sur la carte d'origine et changer le nom du trigger et le fichier .baf lié.
    exemple:
    Trigger Trap COTSP2 / COTSP2(.baf)
    Trigger Trap COTSP3 / COTSP3(.baf) clone
    Trigger Trap COTSP%i% / COTSP%i%(.baf) clone
    etc...

    Pour faire simple, éviter de faire x triggers quasi identiques à la main. J'en ai un paquet à gérer. Ca va être fastidieux et source d'erreur.

    J'ai pris le code de Freddy qui permet de cloner un seul trigger sur une autre carte mais je parviens pas à l'adapter pour mon besoin.

    Est ce quelqu'un a déjà un code équivalent ou pourrais m'aider à coder le TP2?

    Code de Freddy
    Code:
    COPY_EXISTING	~BG3200.are~ ~override~
    	PATCH_IF (SOURCE_SIZE > 0x11b) THEN BEGIN	// Taille minimum d'un fichier .ARE = Vérification de la validité du fichier .ARE
    		LPF ~GW_CLONE_TRAVEL_TRIGGER~ STR_VAR GW_Dest_old = BG3200 GW_Dest_new = BG3201 GW_Name_new = COTSPS2 RET GW_add_trigger END
    		PATCH_IF ("%GW_add_trigger%" STRING_COMPARE_CASE "") THEN BEGIN
    			LPF ~GW_REINCLUDE~ STR_VAR GW_input = EVAL "%GW_add_trigger%" END
    		END
    	END	// of PATCH_IF (SOURCE_SIZE > 0x11b)
    BUT_ONLY
    Pour moi, il faut placer une boucle avec un %i% pour créer à partir du trigger COTSP%i% x trigger sur la même carte.


    Cocrane

  2. #2
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 414
    1. Quel est le nom du trigger qui existe déjà et que tu veux cloner ?
    2. C'est bien un trigger trap et non pas travel que tu veux cloner ?
    Dernière modification par Freddy_Gwendo ; 21/02/2021 à 10h30.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  3. #3
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 248
    Salut Freddy,

    nom de la carte source COML01
    nom du trigger TRAP COTSP

    Cocrane

  4. #4
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 414
    Et tu confirmes que ce sont bien des traps (avec un script), pas des travel regions ?
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  5. #5
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 248
    Oui monsieur.

  6. #6
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 414
    OK.

    Je n'ai pas de code tout prêt pour ça, mais je dois pouvoir en adapter un assez facilement. Sans doute ce weekend, si ça te convient.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  7. #7
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 248
    Salut Freddy,
    le délai me va très bien. :-)

    Merci pour ton aide.

    Je regarderai les deux codes pour voir comment tu t'y es pris. :-)

    Cocrane

  8. #8
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 248
    Freddy,

    Je te confirme le besoin ci-dessus mais en poussant l'analyse sur la suite de mes besoins, Le clonage d'un Travel region x fois va être nécessaire. ;-)

    Comme quoi, tu avais senti le coup venir. (tu n'as pas mis une caméra dans mon bureau quand même???)

    Exemple:
    Carte de référence: COMLR
    la carte contient un travel région PN (travel région porte nord)

    Contenu du travel région PN
    Destination COML
    Entrance PS

    Résultat du clonage n°1 -> n°x
    Destination COML1
    Entrance PS


    Je suppose qu'on aura les paramètres d'entrées ci-dessous:
    Nom de la carte de référence
    Nom du travel région de référence
    X compteur

    Je lancerai 4 fois la fonction pour cloner les travel régions de chaque porte (nord, est, sud et ouest).

    Le sujet est pour le Mod Labyrinthe (36 salles piochées dans max 99 cartes).
    Rien que pour gérer les changements de carte, j'aurai 4 * 99 trigger Travel sur la carte.

    Est ce que l'on a une limite de création de trigger?
    Dans la définition IESDP, je ne vois pas de limite annoncée.

    Au final, selon les liens entre les cartes, j'aurai 4 Travel région d'actif par carte.

    Ce travail est en amont de l'installation du Mod, c'est pour préparer ma carte de référence pour créer ensuite les X cartes du labyrinthe. La carte obtenue peut être une nouvelle carte.

    Si c'est chiant à réaliser, pas de soucis laisse tomber.

    Cocrane

  9. #9
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 414
    Pour les travel regions, mon tuto fonctionne quel que soit le nombre de fois que tu dupliques le trigger. Il suffit de lancer la procédure plusieurs fois, voire dans une boucle. Pour info, mes fonctions ont été utilisées par plusieurs mods sortis depuis et sont donc garanties sans bug.

    Pour les traps, je m'y mets en fin d'après midi car il faut que je complile les infos que j'ai reçues hier à la fois des devs et d'un programmeur qui a fait un peu de reverse engeneering du moteur EE. La bonne nouvelle, c'est que les paramètres de ma fonction qui installe IA dans EE sont bons. La mauvaise, c'est qu'ils ont confirmé le bug que j'avais identifié avec les animations de dragon. Et manifestement, il ne sera jamais corrigé. Il faut donc que je ponde un petit texte là-dessus dans la doc IA pendant que c'est encore chaud. Ou comment ércire de manière compréhensible par tous un truc technique que j'ai mis une bonne heure à comprendre... Le tout en anglais, évidemment...
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  10. #10
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 248
    Freddy,
    un niveau planning, pas de soucis. J'ai x sujets à traiter. :-)

    J'ai testé la copie du Travel région sans succès. J'ai repris le code de l'époque.

    Code:
    INCLUDE ~
    Laby/lib/GW_Cartes.tph~	// Chargement des fonctions
    
    
    COPY_EXISTING	~BG3300.are~ ~override~
    	PATCH_IF (SOURCE_SIZE > 0x11b) THEN BEGIN	// Taille minimum d'un fichier .ARE = Vérification de la validité du fichier .ARE	
    		LPF ~GW_CLONE_TRAVEL_TRIGGER~ STR_VAR GW_Dest_old = BG3300 GW_Dest_new = BG9999 GW_Name_new = TRPN RET GW_add_trigger END
    		PATCH_IF ("%GW_add_trigger%" STRING_COMPARE_CASE "") THEN BEGIN
    			LPF ~GW_REINCLUDE~ STR_VAR GW_input = EVAL "%GW_add_trigger%" END
    		END
    	END
    BUT_ONLY
    GW_Dest_old = BG3300 Carte contenant le travel région
    GW_Dest_new = BG9999 Carte à créer avec le travel région copié
    GW_Name_new = TRPN Nom du travel région à copier.

    Résultat:
    Code:
    Installing [Laby] [BGT v1.1 - 2019]
    Copying and patching 1 file ...
    [./override/BG3300.are] loaded, 49740 bytes
    Et il ne se passe plus rien.

    J'ai testé avec une carte existante et BG3300. J'ai le même résultat.

    A partir de cette fonction, je ne vois comment c'est possible d'avoir un nouveau nom de Travel (TRPN1 par exemple) région et un changement de nom de carte de destination contenue dans le travel région (COML -> COML1).

    Cocrane

  11. #11
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 414
    Tes problèmes ressemblent étrangement à un mauvais paramétrage des variables de la fonction.

    Ceci dit, j'ai récupéré la plupart de mes fonctions de clonage et les ai fondues en une seule : GW_CLONE_AREA_TRIGGER qui permet de cloner n'importe quel type de trigger.

    Testée sur AR0700 pour créer plusieurs clones du même trigger (travel ou trap) :

    Code:
    INCLUDE ~%MOD_FOLDER%/lib/gw_clone_triggers.tpa~
    
    // 1. Launch GW_DEF_AREA_OFFSETS macro
    // -----------------------------------
    LAM ~GW_DEF_AREA_OFFSETS~
    
    // 2. Patch area
    // -------------
    COPY_EXISTING ~AR0700.are~ ~BG0700.are~
    
    	PATCH_IF (SOURCE_SIZE > GW_are_min_size) BEGIN	// Taille minimum d'un fichier .ARE = Vérification de la validité du fichier .ARE
    
    		FOR (i = 1 ; i < 10 ; ++i) BEGIN
    			LPF ~GW_CLONE_AREA_TRIGGER~ STR_VAR GW_region_old = Vamptrap1 GW_region_new = EVAL "Cocotrap%i%" GW_script_new = EVAL "COCOSC%i%" END
    		END
    
    	END
    BUT_ONLY
    
    COPY_EXISTING ~AR0700.are~ ~BC0700.are~
    
    	PATCH_IF (SOURCE_SIZE > GW_are_min_size) BEGIN
    
    		FOR (i = 1 ; i < 10 ; ++i) BEGIN
    			LPF ~GW_CLONE_AREA_TRIGGER~ STR_VAR GW_region_old = Tran0702 GW_region_new = EVAL "Cocotra%i%" GW_dest_new = EVAL "COCO0%i%" END
    		END
    
    	END
    BUT_ONLY
    BG0700 contient 9 nouveaux trap triggers, clones de Vamptrap1: Cocotrap%i% avec chacun son script COCOSC%i%

    BC0700 contient 9 nouveaux travel triggers, clones de Tran0702: Cocotra%i% menant à la carte COCO0%i%

    Tu verras dans la librairie qu'il est possible de modifier des paramètres du trigger avant de le cloner (difficultés de détection et de désactivation du piège, nom de l'entrée dans la carte de destination, flag, message d'information, etc...). D'autres seront ajoutés au fur et à mesure de l'affinement de cette fonction, mais là, je sature.

    Code:
     * ------------------------------------------------------------------------------------------------------------------------- *
     *  INT_VAR                                                                                                                  *
     *    - GW_region_type  = Changer le type de région - Modify the Region type (0 = trap, 1 = info, 2 = travel, 99 = all).     *
     *    - GW_flags_new    = Changer les flags de la région - Modify the region flags (9999 = no change).                       *
     *    - GW_info_point   = Changer le message d'information de la région - Modify the Information text string reference.      *
     *    - GW_trap_detect  = Changer le niveau de difficulté de détection d'un piège - Modify the Trap detection difficulty.    *
     *    - GW_trap_remove  = Changer le niveau de difficulté de désamorçage d'un piège - Modify the Trap removal difficulty.    *
     *    - GW_trap_active  = Changer l'activation du piège d'une région - Modify whether the Region is trapped (0=No, 1=Yes).   *
     *    - GW_trap_status  = Changer le statut d'un piège - Modify the Trap status (0=No, 1=Yes).                               *
     *    - GW_launch_x     = Modifier les coordonnées X de lancement d'un piège - Modify the Trap launch X coordinate.          *
     *    - GW_launch_y     = Modifier les coordonnées Y de lancement d'un piège - Modify the Trap launch Y coordinate.          *
     *    - GW_alt_x        = Modifier les coordonnées alt Y du trigger - Modify the use point X coordinate.                     *
     *    - GW_alt_y        = Modifier les coordonnées alt Y du trigger - Modify the use point Y coordinate.                     *
     *  STR_VAR                                                                                                                  *
     *    - GW_region_old   = Region's name to clone  (nom du trigger à cloner).                                                 *
     *    - GW_region_new   = Attribuer un nouveau nom à la region clonée - Give a new name to the cloned region.                *
     *    - GW_dest_old     = Carte de destination à trouver - Destination area to found (travel trigger only).                  *
     *    - GW_dest_new     = Changer la carte de destination - Modify the Destination area resource reference.                  *
     *    - GW_entrance_new = Changer l'entrée dans la carte de destination - Modify the Entrance name in the destination area.  *
     *    - GW_key_new      = Modifier la clé pour activer le trigger - Modify the key that activates the trigger.               *
     *    - GW_script_new   = Changer le script attribué à la région - Modify the region script.                                 *
     * ========================================================================================================================= */
    Bref, je te conseille de lire la doc de la fonction pour en tirer le meilleur parti.
    Fichiers attachés Fichiers attachés
    Dernière modification par Freddy_Gwendo ; 02/03/2021 à 07h41. Motif: Ajout des variables de paramétrage de la fonction
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  12. #12
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 248
    Salut Freddy,

    je vois que tu as beaucoup investi sur cet aspect du Modding.

    J'ai testé le clonage Trap et Travel. Ca fonctionne très bien et c'est très rapide.

    Je suis monté à 200 triggers pour voir si le fichier ARE tenait le coup.

    Tu viens de m'épargner un travail manuel et répétitif très fastidieux. Un grand merci à toi! :-)

    Cocrane

  13. #13
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 414
    Attention, le nombre de triggers max est une valeur de type word, soit 256.
    Il faudra que j'ajoute un contrôle pour éviter d'en créer plus, sinon le jeu plantera.

    Faut aussi que j'affine le code pour éviter de dupliquer les vertex du trigger existant et privilégier l'utilisation de ceux qui existent. Mais ça suppose de ré-écrire la fonction ADD_AREA_TRIGGER, et ça me gonfle un tantinet pour l'instant.
    Dernière modification par Freddy_Gwendo ; 02/03/2021 à 17h28.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  14. #14
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 414
    Mise à jour de la fonction :

    - Ajout du contrôle pour limiter le nombre max de triggers à 256.
    - Optimisation de la modification du flag de la région : il suffit désormais de renseigner quels bits sont modifiés, la fonction le fera automatiquement.

    Code:
     * ========================================================================================================================= *
     *    - GW_flags_new    = Changer les flags de la région - Modify the region flags (same = no change).                       *
     *      Flag bits set in bit format which are read right to left - 0 = off; 1 = on                                           *
     *      Code format per bit: "BIT0=value;BIT1=value..." - Supported bits:                                                    *
     *        BIT0: Key required [NI = Locked]                     - BIT1: Reset trap [NI = Trap resets] for proximity triggers  *
     *        BIT2: Party Required (for travel triggers)           - BIT3: Detectable [NI = Trap detectable                      *
     *        BIT4: NPC activates [NI = Trap set off by enemy]     - BIT5: Active in tutorial area only [NI = Tutorial trigger]  *
     *        BIT6: Anyone activates [NI = Trap set off by NPC]    - BIT7: No string [NI = Trigger silent]                       *
     *        BIT8: Trigger Deactivated (for proximity triggers)   - BIT9: Party only [NI = Cannot by passed by NPC]             *
     *        BIT10: Alternative point [NI = Use activation point] - BIT11: Door closed [NI = Connected to door]                 *
     *        Example: "BIT1=1;BIT9=0" adds BIT1 and remove BIT9                                                                 *
     * ========================================================================================================================= *
    Dernière modification par Freddy_Gwendo ; 03/03/2021 à 18h51. Motif: Ajout de la note explicative sur les flags
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  15. #15
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 248
    Bon boulot! :-)

    Cocrane

Discussions similaires

  1. [CARTES] Comment ajouter par tp2 un Travel trigger à une carte ?
    Par Akadis dans le forum Programmation WeiDU
    Réponses: 7
    Dernier message: 02/04/2016, 22h39
  2. Réponses: 4
    Dernier message: 01/04/2016, 20h46
  3. [MAPPING] Comment dupliquer une sélection dans un logiciel de retouche ?
    Par Armand dans le forum Cartes et Cartes du monde
    Réponses: 4
    Dernier message: 16/10/2012, 19h09
  4. Disque dur qui une fois est là, et l'autre fois non
    Par Ugo dans le forum Informatik'
    Réponses: 3
    Dernier message: 24/09/2012, 22h05
  5. [Débat] Êtes-vous du genre à regarder cinquante fois le même film ?
    Par Ailyn dans le forum Cinéma, Vidéos et Télévision
    Réponses: 13
    Dernier message: 12/08/2011, 12h17

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