Normal, car LastTrigger ne marche pas puisqu'il est considéré comme celui de la carte, non comme celui du conteneur.
En fait, l'offset qui contient cette information est 0x0084 (Lockpick string) du bloc de ton conteneur. Pour que ça fonctionne, il faut que tu le renseignes avec @6 dans ton fichier ARE.
Petite astuce WeiDU pour le faire directement lorsque tu installes ta carte :
Code : Tout sélectionner
COPY ~TonMod/Tacarte.are~ ~override/Tacarte.are~
SET Mon_Message = RESOLVE_STR_REF (@6)
READ_LONG 0x70 "cont_off" // Offset to containers
READ_SHORT 0x74 "cont_num" // Count of containers
FOR (k = 0 ; k < cont_num ; ++k) BEGIN // Pour chaque conteneur
READ_ASCII ("%cont_off%" + (0xC0 * k)) "contain" (32) NULL
PATCH_MATCH ~%contain%~ WITH
S2cercueil1 BEGIN WRITE_LONG ("%cont_off%" + 0x84 + (0xC0 * k)) Mon_Message END
DEFAULT
END
END
NOTES :
- Tu peux zapper la déclaration de variable Mon_Message en écrivant simplement WRITE_LONG ("%cont_off%" + 0x84 + (0xC0 * k)) RESOLVE_STR_REF (@6) END, mais je l'utilise car j’emploie souvent les mêmes messages.
- Tu peux faire la même chose avec les portes et les régions (cf. suite du message).
Code : Tout sélectionner
READ_SHORT 0x5a "region_num" // Count of regions
READ_LONG 0x5c "region_off" // Offset to regions
READ_LONG 0xa4 "door_num" // Count of doors
READ_LONG 0xa8 "door_off" // Offset to doors
FOR (i = 0 ; i < region_num ; ++i) BEGIN // Pour chaque région
READ_ASCII ("%region_off%" + ("%GW_reg_size%" * i)) "name" (32) NULL
PATCH_MATCH ~%name%~ WITH
Bibliotheque1 BEGIN WRITE_LONG ("%region_off%" + 0x64 + ("%GW_reg_size%" * i)) GW_Mes_Biblio1 END
Bibliotheque2 BEGIN WRITE_LONG ("%region_off%" + 0x64 + ("%GW_reg_size%" * i)) GW_Mes_Biblio2 END
Bibliotheque3 BEGIN WRITE_LONG ("%region_off%" + 0x64 + ("%GW_reg_size%" * i)) GW_Mes_Biblio3 END
DEFAULT
END
END
FOR (j = 0 ; j < door_num ; ++j) BEGIN // Pour chaque porte
READ_ASCII ("%door_off%" + (0xC8 * j)) "nom" (32) NULL
PATCH_MATCH ~%nom%~ WITH
Coffre BEGIN WRITE_LONG ("%door_off%" + 0x98 + (0xC8 * j)) GW_Mes_Coffre END
DEFAULT
END
END
Ça t'évite d'aller chercher dans NI la valeur de l'offset pour chaque trigger-door-container que tu veux modifier, surtout si tu en ajoutes de nouveau en cours de route.
Je me suis d'ailleurs créé une macro pour ça :
► Afficher le texte
Code : Tout sélectionner
LAM ~GW_DEF_AREA_OFFSETS~ // DÉFINITION des offsets généraux des fichiers ARE.
COPY ~Diamant_Eternel/Cartes/Chap1/GW0000.are~ ~override/GW0000.are~
SET GW_Mes_Portail = RESOLVE_STR_REF (@1000001) // Le portail est désactivé.
SET GW_Mes_Epave = RESOLVE_STR_REF (@1000002) // Ce navire arrimé à la plateforme a été passé par le fond.
SET GW_Mes_Statue1 = RESOLVE_STR_REF (@1000003) // Autrefois superbe, cette statue brisée semble représenter un guerrier monumental.
SET GW_Mes_Statue2 = RESOLVE_STR_REF (@1000004) // Ce guerrier brandissant une énorme épée émerge de l'eau. Il devait être relié au socle brisé.
SET GW_Mes_PotoJG4 = RESOLVE_STR_REF (@1000005) // Le sol est couvert de croûtes de sang séché et de lambeaux de chair. Des piles de restes humains gisent dans les environs. Il semble qu'on a empalé les habitants sur ces pieux pointus pour les y laisser saigner à mort. Quelqu'un a été massacré ici.
SET GW_Mes_Autel = RESOLVE_STR_REF (@1000006) // Cet autel calciné est submergé par une intolérable odeur de pourriture. Malgré les outrages qu'il a reçus, une impression de bien-être s'en dégage.
SET GW_Mes_StatueFondue = RESOLVE_STR_REF (@1000007) // Le placage en or de cette statue a été pillé.
SET GW_Mes_StatueBroken = RESOLVE_STR_REF (@1000008) // Autrefois superbe, cette statue a été brisée et son corps doré a été volé.
SET GW_Mes_ArbreAcide = RESOLVE_STR_REF (@1000009) // Vous sentez l'odeur rance et acide des vapeurs toxiques qui ont manifestement détruit cet arbre.
SET GW_Mes_ArbreBrule = RESOLVE_STR_REF (@1000010) // Tout ce qui reste d'un arbre qui a été calciné par un feu intense.
SET GW_Mes_Maison = RESOLVE_STR_REF (@1000011) // Cette maison a été abandonnée précipitamment.
PATCH_IF (SOURCE_SIZE > GW_area_min_size) THEN BEGIN
LPF ~GW_READ_AREA_STRUCTURE~ RET GW_region_num GW_region_off END
FOR (i = 0 ; i < GW_region_num ; ++i) BEGIN // Pour chaque région
READ_ASCII ("%GW_region_off%" + ("%GW_reg_size%" * i)) "name" (32) NULL
SET GW_region_text = "%GW_region_off%" + "%GW_reg_text_of%" + ("%GW_reg_size%" * i)
PATCH_MATCH ~%name%~ WITH
Portail BEGIN WRITE_LONG GW_region_text GW_Mes_Portail END
Epave1 Epave2 BEGIN WRITE_LONG GW_region_text GW_Mes_Epave END
Statue1 BEGIN WRITE_LONG GW_region_text GW_Mes_Statue1 END
Statue2 BEGIN WRITE_LONG GW_region_text GW_Mes_Statue2 END
PotoJG4 BEGIN WRITE_LONG GW_region_text GW_Mes_PotoJG4 END
Autel BEGIN WRITE_LONG GW_region_text GW_Mes_Autel END
StatueFondue1 StatueFondue2 StatueFondue3 StatueFondue4 StatueFondue5 StatueFondue6 BEGIN WRITE_LONG GW_region_text GW_Mes_StatueFondue END
StatueBroken1 StatueBroken2 StatueBroken3 StatueBroken4 BEGIN WRITE_LONG GW_region_text GW_Mes_StatueBroken END
ArbreAcide BEGIN WRITE_LONG GW_region_text GW_Mes_ArbreAcide END
ArbreBrule BEGIN WRITE_LONG GW_region_text GW_Mes_ArbreBrule END
Maison BEGIN WRITE_LONG GW_region_text GW_Mes_Maison END
DEFAULT
END // of PATCH_MATCH ~%name%~ WITH
END // of FOR (i = 0 ; i < GW_region_num ; ++i)
END // of PATCH_IF (SOURCE_SIZE > GW_area_min_size)
BUT_ONLY
Note spéciale : si tu pouvais utiliser les balises <CODE> dans tes messages de scripts, ça en simplifierait la lecture, et puis ça m'éviterait de les mettre en page. Je sais, je suis un gros fainéant.