Affichage des résultats 1 à 15 sur 15

Discussion: Ajouter une structure (trigger) sur une carte, j'ai rien compris

  1. #1
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 657

    Ajouter une structure (trigger) sur une carte, j'ai rien compris

    Je voudrais ajouter un trigger sur une carte, mais je coince au niveau des vertex.

    Mon code (piqué de Affaq)

    Code:
    COPY_EXISTING ~AR0700.are~ ~override~
      PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN
        LPF fj_are_structure
          INT_VAR
          fj_type           = 0       // proximiy trigger
          fj_box_left       = 3428
          fj_box_top        = 3441
          fj_box_right      = 3439
          fj_box_bottom     = 3430
          fj_cursor_idx     = 8       // activator cursor
          fj_vertex_0       = 3428 + (1883 << 16)
          fj_vertex_1       = 3441 + (1886 << 16)
          fj_vertex_2       = 3439 + (1874 << 16)
          fj_vertex_0       = 3430 + (1878 << 16)
          STR_VAR
          fj_structure_type = region
          fj_name           = 0700secr
          fj_reg_script     = secr0700
        END
      END
    s'installe mais ne crée par la zone avec le curseur. Je suis sur que ça vient des vertex. Ce que je ne comprend pas c'est que j'ai délimité une "patate" à 4 cotés avec 4 coordonnées x/y, ce qui devrait faire 8 coordonnées, donc pourquoi n'ai je que 4 fj_box ?
    Mes mod : Quête -- Magasin d'objets bourrins -- Magasin & sorts -- Kits -- "Triche"
    Et Munchkin dans tout ça ?
    Et pis tiens, ça aussi.

  2. #2
    Date d'inscription
    avril 2003
    Localisation
    Bordeaux
    Messages 
    1 214
    Un trigger n'est pas une structure.
    Tu devais pas plutôt utiliser
    ADD_AREA_REGION_TRIGGER
    ?
    Dernière modification par Akadis ; 03/07/2022 à 16h33.
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
    Responsable de la maintenance du mod
    Kim

  3. #3
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 865
    Citation Envoyé par deratiseur Voir le message
    Je voudrais ajouter un trigger sur une carte, mais je coince au niveau des vertex.

    Mon code (piqué de Affaq)

    Code:
    COPY_EXISTING ~AR0700.are~ ~override~
      PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN
        LPF fj_are_structure
          INT_VAR
          fj_type           = 0       // proximiy trigger
          fj_box_left       = 3428
          fj_box_top        = 3441
          fj_box_right      = 3439
          fj_box_bottom     = 3430
          fj_cursor_idx     = 8       // activator cursor
          fj_vertex_0       = 3428 + (1883 << 16)
          fj_vertex_1       = 3441 + (1886 << 16)
          fj_vertex_2       = 3439 + (1874 << 16)
          fj_vertex_0       = 3430 + (1878 << 16)
          STR_VAR
          fj_structure_type = region
          fj_name           = 0700secr
          fj_reg_script     = secr0700
        END
      END
    s'installe mais ne crée par la zone avec le curseur. Je suis sur que ça vient des vertex. Ce que je ne comprend pas c'est que j'ai délimité une "patate" à 4 cotés avec 4 coordonnées x/y, ce qui devrait faire 8 coordonnées, donc pourquoi n'ai je que 4 fj_box ?
    Tu n'as pas donné les bonnes valeurs verticales de la bounding box :

    Code:
          fj_box_top        = 1874
          fj_box_bottom     = 1886
    Sinon, Akadis a raison : la fonction ADD_AREA_REGION_TRIGGER a supplanté depuis un moment l'ancienne fonction fj_are_structure, même si cette dernière fonctionne toujours.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  4. #4
    Date d'inscription
    avril 2003
    Localisation
    Bordeaux
    Messages 
    1 214
    Il y a 2 fj_vertex_0 et pas de fj_vertex_3
    C'est pas une faute de frappe ?
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
    Responsable de la maintenance du mod
    Kim

  5. #5
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 865
    Argh ! Grillé...

    J'allais tester le code et le typo m'a sauté aux yeux avec les highlighters WeiDU dans Notepad. Avec ces deux corrections, ton code devrait fonctionner.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  6. #6
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 657
    J'ai cherché "LPF fj_are_structure" dans tous les fichiers de mon répertoire de modules avec notepad++ et il m'a trouvé un paquet de module l'utilisant : une bonne vingtaine. mais o je vais vous écouter et demain chercher avec ADD_AREA_REGION_TRIGGER.

    Bon, sinon j'ai changé le code Freddy l'a préconisé, soit :
    Code:
    COPY_EXISTING ~AR0700.are~ ~override~
      PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN
        LPF fj_are_structure
          INT_VAR
          fj_type           = 0       // proximity trigger
          fj_box_left       = 3428
          fj_box_top        = 1874
          fj_box_right      = 3439
          fj_box_bottom     = 1886
          fj_cursor_idx     = 8       // activator cursor
          fj_vertex_0       = 3428 + (1883 << 16)
          fj_vertex_1       = 3441 + (1886 << 16)
          fj_vertex_2       = 3439 + (1874 << 16)
          fj_vertex_3       = 3430 + (1878 << 16)
          STR_VAR
          fj_structure_type = region
          fj_name           = 0700secr
          fj_reg_script     = secr0700
        END
      END
    Et toujours rien.

    Je précise :
    1. que mettre ADD_AREA_REGION_TRIGGER à la place de LPF fj_are_structure ou juste fj_are_structure refuse de s'installer, ça me fait une erreur de INT_VAR. on, j'imagine que ça ne se codifie pas pareillement, mais là je n'ai plus le temps de regarder ça.
    2. Que je veille à toujours essayer l'ajout sur une zone où je ne suis pas encore entrée.J'ai une sauvegarde à la sortie du donjon d'Irenicus (et je me tape la cinématique à chaque test ).
    3. Que la zone où je veux mettre le curseur est à la limite de la zone "praticable", c'est peut être ça qui foire (la zone représente le premier paquet de sable qui stabilise le petit bateau volant sur la Promenade de Waukyne, on peut marcher juste à coté mais pas à l'emplacement du sac (normal ))
    Mes mod : Quête -- Magasin d'objets bourrins -- Magasin & sorts -- Kits -- "Triche"
    Et Munchkin dans tout ça ?
    Et pis tiens, ça aussi.

  7. #7
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 865
    La borne droite est mauvaise. La bonne est 3441. Ceci dit, je vais essayer de créer ce trigger sur une de mes cartes. Sinon, as-tu vérifié avec NI que ton trigger n'en chevauche pas un autre ?
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  8. #8
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 657
    J'ai essayé avec 3441, pas mieux.
    J'ai cherché ADD_AREA_REGION_TRIGGER dans tous les modules que je stocke, uniquement une référence d'utilisation.

    J'ai épluché tout les LPF fj_are_structure que j'ai trouvé. J'ai passé 4 heures à tester, en changeant des top, des bottom, des vertex 0, etc, je n'ai toujours pas eu de résultat qui fonctionne. Je ne comprend toujours pas comment avec left, bottom, right et bottom on est censé représenter les 4 coins d'un espace à 4 coté (ça doit faire 4 coordonnées X et 4 coordonnées Y, total 8 coordonnées.). Plus je modde et plus je me trouve crétin. Et je suis censé en faire 25 comme ça.

    En finalité j'ai suivi ce message , et j'ai réécris une dernière fois mon code (tant pis si ça ne fait pas une patate mais que ça fait un carré, mais qu'au moins ça fasse quelque chose !) :
    Code:
    COPY_EXISTING ~AR0700.are~ ~override~
      PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN
            LPF fj_are_structure
          INT_VAR
          fj_type           = 0       // proximity trigger
          fj_box_left       = 3427
          fj_box_top        = 1871
          fj_box_right      = 3444
          fj_box_bottom     = 1889
          fj_cursor_idx     = 8       // activator cursor
          fj_trap_active = 1
          fj_vertex_0       = 3427 + (1871 << 16)
          fj_vertex_1       = 3444 + (1871 << 16)
          fj_vertex_2       = 3444 + (1889 << 16)
          fj_vertex_3       = 3427 + (1889 << 16)
          STR_VAR
          fj_structure_type = region
          fj_name           = 0700secr
          fj_reg_script     = secr0700
        END
    END
    et toujours rien....

    Est ce que c'est parce que je n'ai pas de script associé ? (non, j'ai compilé un script secr700, toujours pas)
    Est-ce que c'est parce que j'essaie de crée la zone dans un zone où on ne peut pas marcher ? (non, j'ai essayé avec toutes les coordonnées en X-400, ça tombe en plein milieu de la zone de marche mais toujours pas)
    Est-ce que c'est parce que j'ai raté un paramètre "set visible" ?
    Je craque.
    Mes mod : Quête -- Magasin d'objets bourrins -- Magasin & sorts -- Kits -- "Triche"
    Et Munchkin dans tout ça ?
    Et pis tiens, ça aussi.

  9. #9
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 865
    Tous mes triggers ont des flags :

    Code:
    INT_VAR fj_flags to the bitwise region flags;
    Je ne les vois pas dans ta fonction.

    Ce soir, je vais essayer de créer ton trigger et voir ce que tu as loupé.



    Édit

    Question subsidiaire : ton script fait quoi exactement ?
    Dernière modification par Freddy_Gwendo ; 06/07/2022 à 18h30.
    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
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 865
    Testés sur BG2:EE, ces deux codes fonctionnent parfaitement :

    Code:
    COPY_EXISTING ~AR0700.are~ ~override~
      PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN
        LPF fj_are_structure
          INT_VAR
          fj_type           = 1
          fj_box_left       = 3428
          fj_box_top        = 1874
          fj_box_right      = 3441
          fj_box_bottom     = 1886
          fj_cursor_idx     = 8      // activator cursor
          fj_vertex_0       = 3428 + (1883 << 16)
          fj_vertex_1       = 3441 + (1886 << 16)
          fj_vertex_2       = 3439 + (1874 << 16)
          fj_vertex_3       = 3430 + (1878 << 16)
          fj_trap_active    = 1
          fj_loc_x          = 3434
          fj_loc_y          = 1880
          STR_VAR
          fj_structure_type = region
          fj_name           = 0700secr
          fj_reg_script     = blpool
        END
        LPF ADD_AREA_REGION_TRIGGER
          INT_VAR
          ab_RT_Type = 1
          ab_RT_BbLX = 3428
          ab_RT_BbLY = 1874
          ab_RT_BbHX = 3441
          ab_RT_BbHY = 1886
          ab_RT_VxPr = 4
          ab_RT_CuId = 8
          ab_RT_TSet = 1
          ab_RT_LPoX = 3434
          ab_RT_LPoY = 1880
          ab_RT_Vx_X_0 = 3428
          ab_RT_Vx_Y_0 = 1883
          ab_RT_Vx_X_1 = 3441
          ab_RT_Vx_Y_1 = 1886
          ab_RT_Vx_X_2 = 3439
          ab_RT_Vx_Y_2 = 1874
          ab_RT_Vx_X_3 = 3430
          ab_RT_Vx_Y_3 = 1878
          STR_VAR
          ab_RT_Name = 700secr
          ab_RT_Rbcs = blpool
        END
      END
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  11. #11
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 657
    Ok, j'ai essayé ton LPF fj_are_structure, effectivement il fonctionne. Les seuls différences sont fj_type = 1 et les fj_loc. Maintenant il va falloir que je comprenne les fj_loc

    Merci, ça me fait déjà un moins un truc qui marche L'interplan ne serait rien sans toi, merci beaucoup.

    Mon script n'est pas encore écrit. Comprendre comment créer les zones secrètes était la première étape, que je ne validerait que quand j'aurais compris comment faire les 24 autres moi même.
    Ensuite je passerais à la deuxième étape : pas d’icône lors de la création des zones, et désactivé. c'est un secret, rien de visible. Et deux scripts :
    Le Script de la map est inspiré de celui de la grotte des trolls de SOD, et il fonctionnera comme ceci : Si le joueur connait l'emplacement du secret sur cette map, alors activer le trigger de la zone secrète.
    Et le script de la zone secrète fait ça : si la zone est activée, changer le curseur "invisible" en curseur "utilisable". Et quand zone utilisée, afficher texte x et donner objet y, puis changer curseur en "rien" et rendre zone inutilisable.

    Et un truc auquel j'ai pensé, il faut déjà que je vérifie avant si je peux mettre une valeur globale à jour quand le joueur lit une carte (un "livre"). Si non, c'est tout le projet qui tombe à l'eau, pas besoin d'aller plus loin
    Dernière modification par deratiseur ; 06/07/2022 à 20h56.
    Mes mod : Quête -- Magasin d'objets bourrins -- Magasin & sorts -- Kits -- "Triche"
    Et Munchkin dans tout ça ?
    Et pis tiens, ça aussi.

  12. #12
    Date d'inscription
    avril 2003
    Localisation
    Bordeaux
    Messages 
    1 214
    Tu peux aussi faire comme ça :

    Code:
    COPY_EXISTING ~AR0700.are~ ~override~
        LAUNCH_PATCH_FUNCTION ADD_AREA_REGION_TRIGGER
            INT_VAR
            ab_RT_Type = 0      // Type of trigger -- 0=proximity ; 1=info ; 2=travel
            ab_RT_BbLX = 3427   // Bounding Box - low x value - LEFT
            ab_RT_BbLY = 1849   // Bounding Box - low y value - TOP
            ab_RT_BbHX = 3444   // Bounding Box - High x value - RIGHT
            ab_RT_BbHY = 1871   // Bounding Box - High y value - BOTTOM
            ab_RT_VxPr = 4      // Number of Vertex
            ab_RT_Vx_X_0 =3427
            ab_RT_Vx_Y_0 =1871
            ab_RT_Vx_X_1 =3444
            ab_RT_Vx_Y_1 =1871
            ab_RT_Vx_X_2 =3444
            ab_RT_Vx_Y_2 =1849
            ab_RT_Vx_X_3 =3427
            ab_RT_Vx_Y_3 =1849
            STR_VAR
            ab_RT_Name = ~0700secr~     // Name of trigger
            ab_RT_Rbcs =~secr0700~     // Script file
        END
    secr0700.baf :
    Code:
    IF 
        Global("Secret0700","GLOBAL",0)
        Range([PC],15)
    THEN
            RESPONSE #100
                SetGlobal("Secret0700","GLOBAL",1)
                DisplayString([PC],21906)
    END
    Testé sous BG2TOB + bg2fixpack

    EDIT
    LE Range du script est très important sinon le trigger va s’activer dès que entre dans la zone, même si tu es 500 mètres.

    Autre chose, si tu développes sous BG2EE tu peux passer les cutscenes en appuyant sur Echap. C'est bien pratique pour gagner 2 minutes à la sortie du donjon d'Irenicus.
    Dernière modification par Akadis ; 06/07/2022 à 20h39.
    Développeur du mod Akadis version disponible Beta 3.1b : envoyez moi un M. P
    Responsable de la maintenance du mod
    Kim

  13. #13
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 657
    Citation Envoyé par Akadis Voir le message
    secr0700.baf :
    Code:
    IF 
        Global("Secret0700","GLOBAL",0)
        Range([PC],15)
    THEN
            RESPONSE #100
                SetGlobal("Secret0700","GLOBAL",1)
                DisplayString([PC],21906)
    END
    Testé sous BG2TOB + bg2fixpack
    Merci Akadis pour ce petit bout de code, mais ce n'est pas ce dont j'ai besoin. Ce que je vais faire est plutot du genre :
    AR0700 :
    Code:
    IF
        Global("secr0700","GLOBAL",1)
        AreaCheck("AR0700")
    THEN
        RESPONSE #100
            TriggerActivation("0700secr",TRUE)
    END
    Et 0700secr :
    Code:
    IF
        Global("Secr0700done","MYAREA",0)
        Clicked([ANYONE])
    THEN
        RESPONSE #100
            SetInterrupt(FALSE)
            SetGlobal("Secr0700done","MYAREA",1)
            SetGlobal("Secr0700","GLOBAL",1)
            GiveItem("potn52",LastTrigger())
            DisplayStringNoNameHead(Myself,69514)
            TriggerActivation("0700secr",FALSE)
            SetInterrupt(TRUE)
    END
    Ce qu'il me manque, c'est le changement d’icône quand le trigger est activé. Enfin, ceci est pour l'instant théorique, d'abord le livre et la variable globale ("secr0700","GLOBAL",1), puis le test
    Dernière modification par deratiseur ; 06/07/2022 à 20h55.
    Mes mod : Quête -- Magasin d'objets bourrins -- Magasin & sorts -- Kits -- "Triche"
    Et Munchkin dans tout ça ?
    Et pis tiens, ça aussi.

  14. #14
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 657
    Bon, j'ai fini de tester, la seule "lecture" d'un livre (clic droit pour lire le texte) ne suffit pas à mettre à jour une variable globale, que l'effet soit dans l'onglet "equipping effect" ou dans "extended effect". Il va falloir que je trouve autre chose.
    Mes mod : Quête -- Magasin d'objets bourrins -- Magasin & sorts -- Kits -- "Triche"
    Et Munchkin dans tout ça ?
    Et pis tiens, ça aussi.

  15. #15
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 865
    Il n'existe aucune variable dans le moteur du jeu permettant de vérifier que l'on a bien lu la description d'un objet.
    Quant aux effets, ils ne fonctionnent que si

    1) ils sont intégrés à un extended header (comme un livre de sorts infinis : tu le places dans les objets rapides et tu cliques dessus). Dans ton cas, ça suppose de donner un livre proposant de l'étudier : tu cliques et il crée un nouveau livre. Mas c'est un peu pénible.
    2) Ce sont des global effects intégrés à un objet dont on peut s'équiper (arme, armure, anneau...).

    La seule solution viable qui me vient à l'esprit consiste à rendre ton livre identifiable. Tant qu'il n'est pas identifié, ta valeur égale 0. Quand il est identifié, elle passe à 1. C'est très facile à gérer via baldur.bcs ou les scripts généraux des persos.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

Discussions similaires

  1. [TP2] dupliquer un Trigger trap x fois sur la même carte
    Par Cocrane dans le forum Programmation WeiDU
    Réponses: 14
    Dernier message: 03/03/2021, 18h20
  2. [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
  3. [WeiDU] Comment ajouter un objet AU SOL sur une carte ?
    Par deratiseur dans le forum Programmation WeiDU
    Réponses: 6
    Dernier message: 13/03/2015, 19h13
  4. [WMP] Commnt ajouter une nouvelle carte à la BGT-Worldmap ?
    Par Huxaltec dans le forum Cartes et Cartes du monde
    Réponses: 9
    Dernier message: 23/04/2011, 00h25
  5. [CARTES] Comment ajouter un personnage à une carte ?
    Par Baesith dans le forum Cartes et Cartes du monde
    Réponses: 8
    Dernier message: 30/07/2005, 23h16

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