J'aurai une ou 2 petites questions techniques en passant. J'entends souvent parler des offsets dans les forums de modding. Par contre pas moyen de trouver un tutorial (même sur les sites anglo-saxons) me renseignant sur la définition de ces choses lol.
Qu'est ce donc ??
J'ai aussi l'impression que la commande WRITE_ASCII est associé à la manipulation des offsets. Est ce que quelqu'un pourrait m'éclairer sur ça ?
merci
Oyez, oyez !
Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !
Merci à toutes et à tous pour votre participation !
N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...
Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !
Merci à toutes et à tous pour votre participation !
N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...
Vocabulaire technique : que signifie "offset" ?
- Isaya
- Adepte de Grondemarteau
- Planaire
- Messages : 6990
- Enregistré le : mar. 22 juil. 2003, 21:03
- Localisation : Plaisir
- Contact :
- Statut : Hors ligne
.
Un offset correspond au décalage par rapport au début du fichier, qui constitue l'offset 0.
Dans Near Infinity, il existe l'option du le menu Options, Show Hex Offsets, qui permet de lui demander d'afficher l'offset de chaque information quand tu es sur l'onglet Edit d'un objet, d'un sort, ... C'est le moyen le plus simple de déterminer quel est l'offset qu'il faut utiliser dans le fichier TP2 pour le patch, que ce soit avec WRITE_ASCII (pour écrire un texte, par exemple un nom de fichier ressource sur 8 caractères) ou les WRITE_LONG ou autres (selon la taille du paramètre, 4, 2 ou 1 octets) pour écrire des nombres.
Dans Near Infinity, il existe l'option du le menu Options, Show Hex Offsets, qui permet de lui demander d'afficher l'offset de chaque information quand tu es sur l'onglet Edit d'un objet, d'un sort, ... C'est le moyen le plus simple de déterminer quel est l'offset qu'il faut utiliser dans le fichier TP2 pour le patch, que ce soit avec WRITE_ASCII (pour écrire un texte, par exemple un nom de fichier ressource sur 8 caractères) ou les WRITE_LONG ou autres (selon la taille du paramètre, 4, 2 ou 1 octets) pour écrire des nombres.
- DrAzTiK
- Ours des cavernes
- Messages : 1177
- Enregistré le : ven. 19 sept. 2003, 03:20
- Localisation : Bordeaux
- Contact :
- Statut : Hors ligne
.
heuu je comprends rien lol. Un décalage ?Un offset correspond au décalage par rapport au début du fichier, qui constitue l'offset 0.
Ce que je crois comprendre, c'est que les offsets permettent de patcher certains éléments du jeux ( à priori presque tous les éléments du jeux) et que çela se fait avec la commande WRITE_ASCII dans le tp2 ?
Si c'est le cas, est ce que tu pourrais me donner un exemple Isaya ?
- Isaya
- Adepte de Grondemarteau
- Planaire
- Messages : 6990
- Enregistré le : mar. 22 juil. 2003, 21:03
- Localisation : Plaisir
- Contact :
- Statut : Hors ligne
.
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 :
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 :
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 :
Si tu veux t'amuser à modifier la valeur d'expérience pour le tuer, il suffit d'ajouter :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~
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".WRITE_LONG 0x14 1000
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 :
modifierait le script par défaut d'un personnage pour lui donner le script qui fait attaquer le premier ennemi en vue.WRITE_ASCII 0x268 ~WTASIGHT~
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités