Profrager
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору R3Pa4eK вот заставил ты меня найти его репак и порыться в его косточках, вместо того чтобы чем-то полезным заняться. В общем нашел я у себя репак деда Darksiders - Wrath of War. Там юзается все основное - arc, srep, precomp, xdelta3 (все кроме unarc.dll являются ехе файлами). Нашлась библиотечка Tools.dll. Действительно она самописная - либо он сам ее писал, либо ему ее помогли написать. Из множества ее функций в данном репаке использовались только TaskBarCtlInit, TaskBarCtlRelease, TaskBarCtlSetProgressValue. Соответственно первые 2 запускаются при старте и в конце работы библиотеки. При чем при старте создается какой-то OLE объект. ХЗ, не стал возиться. TaskBarCtlSetProgressValue юзается примерно раз в секунду и служит для обновления положения указателя на прогрессбаре. Вызывается он из скрипта и служит просто для указания текущего положения прогресса. Видимо этот прогрессбар какой-то необычный, раз нельзя было progressbar.position:=... сделать. Максимальное значение у него было выставлено числом 1645(0x66d). алгоритм примерно такой: arc->srep->(arc(rep)->precomp) На каждую смену типа распаковки завершается предыдущий и создается новый поток, что говорит о создании таймера отдельного потока для контроля (а может виртуальная машина Inno так код генерит). Итак, через unarc.dll распаковывается основной 6гб архив, контроль прогресса тут понятно - через скрипт работы с FreeArc'ом (оригинальный или правленный - не важно). Далее запускается консольный среп и пускается поток, который постоянно фиксирует длину выходного файла, получаемого srep.exe и в определенный промежуток времени посылает в эту tools.dll через TaskBarCtlSetProgressValue текущее положение. Далее комплексно распаковывается арк архив с чередующимся извлечением данных из арк архива и распаковкой только что извлеченных pcf файлов, при этом прогресс изменяет свое значение только при извлечении данных из arc файла, а во время работы прекомпа - состояние покоя Дальше там всякие видео и ехе распаковывались, но это уже обычные arc'и. На работу xdelta3 не получилось посмотреть, т.к. выбрал руссую озвучку, а delta требуется только для eng. Так что весь плавный прогресс у деда - результат светлой головы и хорошо написанного и отлаженного скрипта
| Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 02:22 12-05-2011 | Исправлено: Profrager, 02:30 12-05-2011 |
|