[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Результаты поиска
Новички
Сообщений: 2
Реп: 0
Как пользоваться:
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;
}
}


Сообщение отредактировал Unaited - ВТ, 06.08.2019, 23:39:04
 
Новички
Сообщений: 2
Реп: 0
Извините, я не могу редактировать пост. :(



Добавлено (06.08.2019, 03:14:28)
---------------------------------------------
.

Добавлено (06.08.2019, 03:16:50)
---------------------------------------------
https://gofile.io/?c=es5ysG
Прикрепления: 0019899.png (44.3 Kb)
 
  • Страница 1 из 1
  • 1
Поиск: