[CRE] Valeur de l'offset 0x244 (Kit) écrites en "big endian style" ????
Posté : mar. 11 août 2015, 11:59
Il semble qu'il y a un léger problème pour attribuer un kit à une créature à partir du tp2.
D'abord je lance cette macro pour créer une liste des valeurs du fichier kit.ids par kit :
Je les ai vérifiées par "PATCH_PRINT", elles sont bien attribuées et exactes.
Puis lors de la création de la créature, je lance cette fonction :
Là encore, les PATCH_PRINT m'indiquent les bonnes valeurs.
Puis j'attribue la valeur GW_nvkit à l'offset 0x244.
Problème : lorsque je vérifie les fichiers .cre dans DLTCEP ou NI, les valeurs affichées sont du grand n'importe quoi.
Après avoir converti les valeurs du fichier IDS en décimal, même problème.
Je pense que le problème vient de cette ligne de IESDP :
D'abord je lance cette macro pour créer une liste des valeurs du fichier kit.ids par kit :
Code : Tout sélectionner
COPY_EXISTING - ~kit.ids~ ~override~
COUNT_2DA_COLS nb_cols
COUNT_2DA_ROWS %nb_cols% nb_lignes
FOR (ligne = 0; ligne < %nb_lignes%; ligne = ligne + 1) BEGIN
READ_2DA_ENTRY %ligne% 0 %nb_cols% code_ids
READ_2DA_ENTRY %ligne% 1 %nb_cols% kit
SET $GW_ids(~kit~ ~%kit%~) = ~%code_ids%~
END
BUT_ONLY
Puis lors de la création de la créature, je lance cette fonction :
Code : Tout sélectionner
/*-------------------------------------------------------------------*
* FONCTION GW_CRE_KIT_DEF : Définition du code du kit des créatures *
*-------------------------------------------------------------------*/
DEFINE_PATCH_FUNCTION ~GW_CRE_KIT_DEF~
STR_VAR GW_kit_lib = "no" // Kit
RET GW_nvkit
BEGIN
PATCH_MATCH ~%GW_kit_lib%~ WITH
"NO_KIT" BEGIN SET GW_nvkit = 0
PATCH_PRINT ~%DEST_RES% - CONTROLE GW_CRE_KIT_DEF : VALEUR CALCULEE du KIT = %GW_nvkit% - Kit = %GW_kit_lib% - Classe = %Classecre%.~ END
DEFAULT
PATCH_IF VARIABLE_IS_SET $GW_ids(~kit~ ~%GW_kit_lib%~) BEGIN
SET GW_nvkit = $GW_ids(~kit~ ~%GW_kit_lib%~)
PATCH_PRINT ~%DEST_RES% - CONTROLE GW_CRE_KIT_DEF : VALEUR CALCULEE du KIT = %GW_nvkit% - Kit = %GW_kit_lib% - Classe = %Classecre%~
END ELSE BEGIN
SET GW_nvkit = 0
PATCH_PRINT ~%DEST_RES% - CONTROLE GW_CRE_KIT_DEF : KIT non trouvé dans Kit.ids pour Kit = %GW_kit_lib% et Classe = %Classecre% --> NO_KIT = %GW_nvkit%.~ END
END
END
Puis j'attribue la valeur GW_nvkit à l'offset 0x244.
Problème : lorsque je vérifie les fichiers .cre dans DLTCEP ou NI, les valeurs affichées sont du grand n'importe quoi.
Après avoir converti les valeurs du fichier IDS en décimal, même problème.
Je pense que le problème vient de cette ligne de IESDP :
Qu'est ce que ça signifie, sinon que manifestement un WRITE_LONG classique ne fonctionne pas ?NB.: The values of this offset are written in big endian style.