Page 1 sur 1

[WeiDU] Comment renseigner la valeur d'un effet Display string (#139) dans un objet ?

Posté : lun. 24 avr. 2006, 12:00
par Akadis
J'ai un objet dont un des effets est Display String et j'ai mon texte dans un fichier tra sous la forme :

@10 = ~Mon texte à afficher~

Mais je ne sais pas comment faire pour associer ce texte au display string de l'objet lors du TP2.

Posté : sam. 29 avr. 2006, 18:39
par Isaya
Il y a plusieurs techniques pour ce que tu cherches.
La première consiste à repérer avec un programme comme NearInfinity la position de l'effet dans le fichier ITM, puis de déterminer la position où le numéro du texte est indiqué dans la partie réservée à l'effet. Ce devrait te donner la position depuis le début du fichier. Ensuite, tu ajoutes dans le fichier TP2 le bloc suivant :

Code : Tout sélectionner

COPY ~tonmod/items/objet.itm~ ~override/objet.itm~
  SAY NAME2 @N1
  SAY DESC @N2
  SAY 0xAAAA @N3
N1, N2 et N3 étant les numéros de chaine dans ton fichier TRA
AAAA étant la position dont on a parlé, exprimée en hexadécimal

NearInfinity a une option particulière pour identifier cette position, "Show Hex Offsets" dans le menu Options. Tu verras alors apparaître les offsets à droite dans les onglets Edit.

Une autre solution consiste à indiquer une valeur particulière d'indice de texte (au delà des valeurs courantes de préférence) et de demander à WeiDU de remplacer cette valeur par celle d'un @N. Je ne suis pas sûr que ça fonctionne pour autre chose que du texte (j'ai vu cette technique utilisée pour une action à l'intérieur d'un dialogue, qui est un texte en fait). C'est plutôt déconseillé pour un champ binaire car il se pourrait que la valeur apparaisse ailleurs dans le fichier.

Posté : sam. 02 avr. 2016, 21:45
par Freddy_Gwendo
Tu peux aussi utiliser WeiDU. Exemple tiré de l'installation de sorts qui fonctionne aussi pour un objet :

Code : Tout sélectionner

COPY ~Diamant_Eternel/Sorts/Kits2/GXSerBaL.spl~	~override/GXSerBaL.spl~	SAY NAME1 @7712015	SAY UNIDENTIFIED_DESC @7712016
  SET JS = 3
  LPF ALTER_EFFECT INT_VAR match_opcode = 139 match_timing = 1 parameter1 = RESOLVE_STR_REF (@7120051) END	// Bonus de %JS% points aux jets de sauvegarde
  LPF ALTER_EFFECT INT_VAR match_opcode = 139 match_timing = 4 parameter1 = RESOLVE_STR_REF (@7120058) END	// Fin de la protection de la Serre de Bahamut
Dans le code, je distingue les effets #139 à durée permanente et à durée différée. Si tu n'as qu'un seul effet #139, alors c'est plus simple :

Code : Tout sélectionner

COPY ~MonMod/Items/MonItem.itm~	~override/MonItem.itml~	SAY NAME1 @nn	SAY UNIDENTIFIED_DESC @nnn
  LPF ALTER_EFFECT INT_VAR match_opcode = 139 parameter1 = RESOLVE_STR_REF (@mmm) END	// La référence de ton fichier tra.