Bon alors toujours sur l'étape pour extraire les valeurs entre les pointeurs, j'ai modifier le code pour tenter de les récupérer et les mettre dans un autre fichier (car je vois pas trop où les mettre enfaite...) en me basant sur le readme_lua.txt du hareng-tool, et mon code ne fonctionne pas
(je me suis rebasé sur le script d'extraction de départ pour l'instant car je le trouve plus simple là x) ):
- Code: Tout sélectionner
nameFileOutput = "Prinny2-script01.txt"
nameFileOutput2 = "Prinny2-data01.txt"
nameFileScript = "test_hareng.dat"
-- nameFilePointer = "fichier2.bin"
nameFileTable = "ascii.tbl"
nameFileTable2 = "asciiB.tbl"
adressScript = 0x010C24
--adressPointer = 0x0C
adressPointer = 0x04
-- (first text only) sizeScript = 0x2D
sizeScript = 0x02429F
nb_pointer = 2860
--nb_pt2 = 0
SEEK_SET = 0
SEEK_CUR = 1
SEEK_END = 2
-- Ouverture du fichier contenant les pointeurs
fileScript = Fichier.new()
table_pt = Table_pointeurs.new()
table_pt2 = Table_pointeurs.new()
tbl = Table_ext_ins.new()
tbl2 = Table_ext_ins.new()
bufferScript = Buffer.new()
bufferData = Buffer.new()
fileScript:open(nameFileScript, "rb")
fileScript:seek(adressPointer, SEEK_SET)
-- Récupération des pointeurs
local num_pt = 1
for i = 1, nb_pointer do
-- On zap les 8 premiers octets
for j = 1, 8 do
fileScript:get()
end
-- On lit les 4 pointeurs qui suivent
for j = 1, 4 do
local pointer = 0
for k = 1, 4 do
pointer = pointer + shift_l(fileScript:get(), 8 * (k - 1))
end
local pt = Pointeur.new()
pt:numero(num_pt)
pt:valeur(pointer)
pt:taille(4)
num_pt = num_pt + 1
table_pt:ajouter(pt)
end
end
-- Chargement de la table
tbl:ouvrir(nameFileTable)
tbl2:ouvrir(nameFileTable2)
-- Récupération des données à extraire
-- fileScript:open(nameFileScript, "rb")
fileScript:seek(adressScript, SEEK_SET)
fileScript:read(bufferScript, sizeScript)
sortie = Output.new("Fichier", nameFileOutput, "wb")
-- Extraction du script
Ext_ins.extraire(bufferScript, tbl, sortie, table_pt)
--EDIT 2/07/2011 : Récupération des 8 octets entre 4 pointeurs (zapper 16 octets).
--Positionnement début fichier:
fileScript:seek(adressPointer, SEEK_SET)
--Création d'un fichier de sortie
sortie2 = Output.new("Fichier", nameFileOutput2, "wb")
--Récupérer les 8 octets
for j = 1, 8 do
fileScript:read(bufferData, 8)
--Zapper 16 octets
fileScript:seek(SEEK_CUR+16,SEEK_CUR)
end
Ext_ins.extraire(bufferData, tbl2, sortie2, table_pt2)
--FIN EDIT
J'ai du mal à trouver comment faire ce que je veux enfaite:
Dans la doc' , y a pas mal de fonction pour manipuler les pointeurs ou récupérer le texte, comme par exemple donner une taille à un pointeur, mais comme là c'est ni l'un ni l'autre... J'ai essayer de faire comme si c'était du texte sans pointeur (j'ai ajouter une table de pointeur vide)...
Mais je suis pas sûr de m'y prendre correctement
...