J'aimerais que tu prennes le temps de lancer Near Infinity et d'appliquer ce que je t'ai indiqué en observant ce que ça donne avec un fichier quelconque. C'est le meilleur moyen de comprendre. Si ce n'est toujours pas clair, précise ce que tu ne comprends pas.
Prends par exemple un fichier CRE. Le paramètre Name est à l'offset 8. C'est le numéro du texte qui contient le nom du personnage dans le fichier dialog.tlk. Pour des choses aussi courantes que le nom (du personnage, de l'objet, ...), WeiDU a des "constantes nommées" qui remplacent la valeur de l'offset pour le rendre plus lisible. Ici, il s'agit de "NAME1" et "NAME2" (pour le "Apparent name").
Ce qui fait qu'un
tutoriel de PNJ indique :
COPY ~monmod\cre\blabla.cre~ ~Override\blabla.cre~
SAY NAME1 ~Mon nom de personnage~
SAY NAME2 ~Mon nom de personnage~
SAY BIO ~Blabla, son histoire~
Si tu veux t'amuser à modifier la valeur d'expérience pour le tuer, il suffit d'ajouter :
WRITE_LONG 0x14 1000
pour fixer la valeur à 1000 XP. Le WRITE_LONG est utilisé (et non WRITE_BYTE ou WRITE_SHORT) car la valeur d'expérience est sur 32 bits, ce que montre d'ailleurs l'écart d'un offset au suivant : celui de "XP value" est 14h, le suivant est à 18h, soit 4 octets, donc 32 bits (un octet fait 8 bits). Le "0x" qui précède 14 est le moyen d'indiquer à WeiDU que la valeur est exprimée en hexadécimal. De son côté, Near Infinity utilise aussi la notation hexadécimale pour l'affichage des offsets mais l'indique par le suffixe "h".
Pour information, la calculatrice de Windows, une fois basculée en mode scientifique par un des menus, permet de faire les conversions entre hexadécimal et décimal, et vice-versa.
WRITE_SHORT s'utilise pour des mots de 16 bits (deux octets), par exemple Current HP et Max HP (séparé de seulement 2 en offset par rapport au champ suivant de la structure) et WRITE_BYTE correspond à 1 octet. WRITE_ASCII permet d'écrire une chaine de caractère, par exemple le nom d'un fichier de ressource (type doublage sonore, image BAM, script de comportement, ...), qui est la plupart du temps strictement limité à 8 caractères maximum.
Par exemple :
WRITE_ASCII 0x268 ~WTASIGHT~
modifierait le script par défaut d'un personnage pour lui donner le script qui fait attaquer le premier ennemi en vue.