Как пользоваться:
https://www.youtube.com/watch?v=q3W4N84xets
$IMAGE4$
https://zenhax.com/viewtopic.php?f=9&t=12312
Привет, ребята.
Я хотел бы распаковать языковой файл и изменить его на свой родной язык.
Поэтому я посмотрел в папке DataPC\Language, я нашел эти файлы.
Файл AllTextEng.bin и AllTextEng64.bin.
Как мне распаковать эти файлы?
и как я могу сжать это?
Если взглянуть на 32-битную версию, формат довольно прост. Макет
Код
Long (Value is always 1) [Долго (Значение всегда 1)]
Long (File Length) [Длина файла]
Long (Record Count) [Количество записей]
Long (Size of Entry?) [Размер въезда?]
-- Начать блоки ввода
-- Строковые данные null прекращены
Для входного блока
Long ID
Long Offset
Это пример для извлечения с помощью C#, существует около 3,2 тыс. Записей, но только 2,7 тыс. Уникальных записей. Вам нужно будет решить, как вы хотите управлять всем текстом и работать с ним.
Код
private void extractBtn_Click(object sender, EventArgs e)
{
OpenFileDialog OD = new OpenFileDialog();
if(OD.ShowDialog() == DialogResult.OK)
{
byte[] fileIn = File.ReadAllBytes(OD.FileName);
MemoryStream ms = new MemoryStream(fileIn);
BinaryReader br = new BinaryReader(ms);
List<Entry> entries = new List<Entry>();
List<string> output = new List<string>();
br.ReadInt32(); // Version 1?
br.ReadInt32(); //File length
int count = br.ReadInt32();
int blockSize = br.ReadInt32();
for (int i = 0; i < count; i++)
{
entries.Add(new Entry(br.ReadUInt32(), br.ReadInt32()));
}
foreach(Entry en in entries)
{
br.BaseStream.Position = en.offset + 8;
output.Add(String.Format("{0}\t{1}",en.id, getString(br)));
}
File.WriteAllLines(OD.FileName + ".txt", output);
MessageBox.Show("Done.");
}
}
private string getString(BinaryReader br)
{
MemoryStream ms = new MemoryStream();
byte b = 0xFF;
while (b != 0)
{
b = br.ReadByte();
if (b != 0)
ms.WriteByte(b);
}
return Encoding.UTF8.GetString(ms.ToArray());
}
class Entry
{
public uint id;
public int offset;
public Entry(uint id, int offset)
{
this.id = id;
this.offset = offset;
}
}