Показать сообщение отдельно
  #14  
Старый 21.02.2016, 03:26
Аватар для coder
coder coder вне форума
Главный механик
Переживший конец света 
 
Регистрация: 30.07.2012
Сообщений: 388
По умолчанию

Извиняюсь за длительную паузу, времени как всегда не хватает. Спасибо за скрипт упаковщика, который вы мне прислали в ЛС. Я поставил ряд экспериментов с вашим способом упаковки файлов и готов огласить результат - предложенный вами способ в корне не верен. Собирая таким образом файл client_local_English.dat вы никогда не получите рабочий файл. При таком способе записи у вас нарушается адресация внутри файла client_local_English.dat, а поскольку данный файл не имеет таблицы-словаря, то каждый из упакованных в него файлов должен иметь статический адрес. Клиент, обращаясь к файлу client_local_English.dat ищет файл точно по указанному адресу и потому смещение недопустимо.

Немного раскинув мозгами и потратив пару часов я пришел к такому решению - файл client_local_English.dat нужно не собирать с нуля, а патчить. Вот код скрипта, который из оригинального файла client_local_English.dat на выходе дает пропатченный вашими модифицированными файлами, готовый к употреблению файл локализации.

Код скрипта (+/-)

Как пользоваться (+/-)

О модификации файлов (+/-)

Порядок выполнения программы:


Что предстоит решить, чтобы добиться результата?

В русской локализации весь текст в файле client_local_RU.dat записан в кодировке UTF-16. В этом вы можете легко убедиться открыв любой файл в любом HEX-редакторе с поддержкой данной кодировки. При переконвертировании в любую другую кодировку, мы получаем файл большего размера, чем исходный. У меня не было времени ставить эксперименты, но первая попытка получить из UTF-16 текст приемлемого размера вышла комом. Если у кого есть идеи и соображения буду им очень рад.
Ответить с цитированием