Aller à la page... |
Traduction du jeu
Suivre Répondre |
|
Partager | Rechercher |
|
Nop ca vérifie pas j'avance et je pense pouvoir reimporter les fichiers d'ici peu.
Sinon si quelqu'un connais un bon editeur binaire je suis preneur. |
![]() |
|
#142074
Invité
|
Pour info tu veux pas nous expliquer comment tu as extraits les fichiers ?
Merci ![]() |
![]() |
|
#142074 |
|
Tu dois passer en Elite.
Va voir le maitre des classe et prend la 2eme option. |
![]() |
|
|
Merci beaucoup c'est bon !
|
![]() |
|
|
Au final, as-tu réussi à réimplanter les fichiers et te connecter au jeu ? En espérant qu'il ne partira pas avec les patchs...
Tiens moi au courant, et si possible fais un screen. |
![]() |
|
Empereur / Impératrice
|
Eh bien bonne chance cher ami =)
|
![]() |
|
|
En tout cas un gros GG si tu arrive à faire une traduc du jeu !
![]() |
![]() |
|
|
alors brouznouf des nouvelles ?
![]() |
![]() |
|
|
Donc c'est pas possible?
|
![]() |
|
|
Si c'est possible je bataille un peu mais j'espere pouvoir finir cela ce soir
SI quelqu'un à d'ailleurs un peu de temps pour me décoder et traduire cet erreur ca m'aiderais : ![]() |
![]() |
|
|
Bon désole pour le double post la je bute un peu je verrais demain mais si y a des personnes qui s'y connaissent pas mal en info / prog voici comment ca marche :
Tous les fichiers csf de c9 sont des zip modifiés pour obtenir les fichiers il suffit donc de transformer un .csf en .zip et de le reparer avec winrar Une fois cela fait vous avez besoin d'un mot de passe qui est disponible plus haut (j'explique pas la technique pour le récupèrer on vera quand il changera) Ensuite il suffit donc de modifier les fichiers. Maintenant il faut reimporter les ressources dans le jeu pour cela on a donc notre archive avec les fichiers modifiés. Il faut maintenant modifier cette archive pour qu'elle est la même architecture que celle voulu par le jeu pour cela j'ai fais un petit programme en c# dont vous trouverez le source plus bas, pour le moment le programme est spécifique au GameData.csf je verrais plus tard pour les autres fichiers si il y a moyen de généraliser le bousin. Voici les differences entre un .zip et un .csf Les headers de certains fichiers ont les informations suivantes à 0 : -crc32 -size compressed -size uncompressed Ensuite dans la définition de la structure certains fichiers ont commes attributs externes : 0x81B40002 Puis il y a le descripteur de la structure du csf a la fin qui a pas mal de modif et ou j'ai du copié en brut les données de l'ancien. Pour le moment j'ai une erreur lors du lancement de c9, donc si y en a qui ont des idées allez y et tenez moi au courant si vous avancez. Pour info le problème pour moi viens de la fin du fichier, voici une page expliquant la description d'un fichier zip : http://www.pkware.com/documents/casestudies/APPNOTE.TXT Voila les sources : Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ZipToCSF { class Program { static void Main(string[] args) { byte[] headerByte; bool readEnd = false; int i = 0; Int16 fileNameLength; Int16 extraFileNameLength; Int16 commentLength; Int32 fileLength; FileStream zipFile = File.Open("GameData.zip", FileMode.Open); FileStream csfFile = File.Open("GameData.cfs", FileMode.Create); BinaryReader zipReader = new BinaryReader(zipFile); BinaryWriter csfWriter = new BinaryWriter(csfFile); while (zipReader.BaseStream.Position < zipReader.BaseStream.Length) { headerByte = zipReader.ReadBytes(4); csfWriter.Write(headerByte); if (headerByte[0] == 0x50 && headerByte[1] == 0x4B && headerByte[2] == 0x03 && headerByte[3] == 0x04) { //Les infos csfWriter.Write(zipReader.ReadBytes(10)); //CRC32 zipReader.ReadBytes(4); //data length (compressed) fileLength = zipReader.ReadInt32(); //data length (uncompressed) zipReader.ReadBytes(4); //Set crc and the data length to null csfWriter.Write(0x00000000); csfWriter.Write(0x00000000); csfWriter.Write(0x00000000); //Get the file name length fileNameLength = zipReader.ReadInt16(); extraFileNameLength = zipReader.ReadInt16(); //Write them csfWriter.Write(fileNameLength); csfWriter.Write(extraFileNameLength); String fileName = new String(zipReader.ReadChars(fileNameLength)); String extraFileName = new String(zipReader.ReadChars(extraFileNameLength)); csfWriter.Write(fileName.ToCharArray()); csfWriter.Write(extraFileName.ToCharArray()); csfWriter.Write(zipReader.ReadBytes(fileLength)); csfWriter.Write(zipReader.ReadBytes(12)); Console.WriteLine(fileName + " done..."); } if (headerByte[0] == 0x50 && headerByte[1] == 0x4B && headerByte[2] == 0x06 && headerByte[3] == 0x08) { fileLength = fileLength = zipReader.ReadInt32(); csfWriter.Write(fileLength); csfWriter.Write(zipReader.ReadBytes(fileLength)); } if (headerByte[0] == 0x50 && headerByte[1] == 0x4B && headerByte[2] == 0x01 && headerByte[3] == 0x02) { csfWriter.Write(zipReader.ReadBytes(24)); fileNameLength = zipReader.ReadInt16(); extraFileNameLength = zipReader.ReadInt16(); commentLength = zipReader.ReadInt16(); csfWriter.Write(fileNameLength); csfWriter.Write(extraFileNameLength); csfWriter.Write(commentLength); csfWriter.Write(zipReader.ReadBytes(4)); //On remplace les attributs zipReader.ReadBytes(4); csfWriter.Write((byte)0x20); csfWriter.Write((byte)0x00); csfWriter.Write((byte)0xB4); csfWriter.Write((byte)0x81); csfWriter.Write(zipReader.ReadBytes(4)); csfWriter.Write(zipReader.ReadBytes(fileNameLength)); csfWriter.Write(zipReader.ReadBytes(extraFileNameLength)); csfWriter.Write(zipReader.ReadBytes(commentLength)); } if (headerByte[0] == 0x50 && headerByte[1] == 0x4B && headerByte[2] == 0x05 && headerByte[3] == 0x05) { fileNameLength = zipReader.ReadInt16(); csfWriter.Write(fileNameLength); csfWriter.Write(zipReader.ReadBytes(fileNameLength)); } if (headerByte[0] == 0x50 && headerByte[1] == 0x4B && headerByte[2] == 0x05 && headerByte[3] == 0x06) { readEnd = true; break; } } if (!readEnd) { csfWriter.Write((byte)0x50); csfWriter.Write((byte)0x4B); csfWriter.Write((byte)0x05); csfWriter.Write((byte)0x06); } csfWriter.Write((Int16)0x5423); csfWriter.Write((Int16)0x5423); csfWriter.Write((Int16)0x5DA8); csfWriter.Write((Int16)0x5DA8); // csfWriter.Write((Int16)0x7ED0); // csfWriter.Write((Int16)0x0003); zipReader.ReadBytes(8); csfWriter.Write(zipReader.ReadBytes(8)); csfWriter.Write((Int16)0x5423); System.Console.WriteLine("Enter to finish..."); System.Console.ReadLine(); } } } |
![]() |
|
|
alors ? tu a régler ton problème ?
![]() |
![]() |
|
|
Ouais on peut commencer la traduction j'ai réussi à réimporter
|
![]() |
|
|
ohoh ! ^^ tu a trouve un coréen pour t'aider à traduire ? Sinon j'en connais peut être un qui pourrais aider^^
|
![]() |
|
Suivre Répondre |
Fil d'ariane
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|