Universal Steam Extractor

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
impulse666
Полковник
Полковник
Сообщения: 7405
Зарегистрирован: 08.12.2005
Откуда: Atman
Благодарил (а): 2340 раз
Поблагодарили: 590 раз

#16 Сообщение 09.03.2008, 14:49

:shock:
а теперь сколько памяти это все забирает?

ктонибудь протестте работу GCFScape, GCFExplorer, Андрейловского экстрактора и скажите что быстрей %)
я здесь к сожелению не имею ниодной ГСФешки..
Изображение
Негласные Правила
1. Пропаганда лицензии запрещена.
2. На форуме режим многоступенчатых стандартов Ψ. То что можно одним, нельзя другим. Решается правящей партией
3. Ники членов правящей партии (impulse666, NiGHt-LEshiY, SHADOW) искажают только в случае необходимости получить БАН.

...воздержитесь от этого, изучите вот это.
Лучшая статья о моих взглядах. Настоятельно рекомендую.

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#17 Сообщение 09.03.2008, 17:22

Для Скэйпа показывает 158Мб, на моей проге - 162Мб - виртуальный размер.
Для Скэйпа показывает 20Мб, на моей проге - 50Мб - реальный размер
Мерял через Process Explorer.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#18 Сообщение 04.04.2008, 17:10

Решил возродить тему, тк работа над СИМ-файлами уже закончена, а для ГЦФ осталось сделать только валидацию.
Спросите, почему "Universal Steam Extractor"? А потому, что будут поддерживаться ВСЕ форматы Стима, в том числе и WAD, PAK, XZP.
USE существует в виде ДЛЛки, созданной на Дельфи, поэтому, обладатели С++, обратите на это внимание, тк надо будет писать в Ваших программах так:

Код: Выделить всё

void __pascal __stdcall ClosePackage;
, иначе будет ошибка при вызове ;)
Информация о проекте:
  • На данный момент готова поддержка всего двух форматов файлов (SIM, GCF);
  • В комплект входит программа-распаковщик с минимальным интерфейсом.
  • Размер ДЛЛ на данный момент составляет всего 27Кб :Yahoo!:
Буду благодарен, если кто-нибудь зальет на обменник, откуда можно качать лоадерами, пару небольших XZP-файлов
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#19 Сообщение 04.04.2008, 17:21

Слушайте, а может просто сделать юзербар, типа "UPK|USE RuleZZ"?

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#20 Сообщение 04.04.2008, 17:54

Немного поправил прогу, тк не видела СИМ-файлы ;)

ЗЫ: мне вот интерестно, зашифрованные файлы из СИМов извлекает или нет?
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#21 Сообщение 04.04.2008, 23:05

Итак, принимаю пожелания к работе программы. В частности, какие ошибки обрабатывать, что выводить (опционально ;) ).
На данный момент ввел:
1) проверку на объем свободного места на диске;
2) зашифрован файл или нет (для ГЦФ);
3) прерывание распаковк;
4) опцию, перезаписывать ли файлы при распаковке.
Жду пожеланий....
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#22 Сообщение 05.04.2008, 07:06

andreil писал(а):1) проверку на объем свободного места на диске
Сие, честно говоря, странно - Если кто будет писать программу и юзать DLL, то и сам может посмотреть свободное место на HDD, хотя...чем черт не шутит, может и пригодится

Сделай возможность извлечения конкретного GCF (всмысле, файлов, находящихся в эквивалентном GCF, но ты, думаю, понял :) ) из SID. Я, конечно, не буду использовать эту функцию, но все же
andreil писал(а):мне вот интерестно, зашифрованные файлы из СИМов извлекает или нет?
Да, извлекает: опробовано на Source materials.gcf и Source Sounds.gcf
Только, откуда ты ключи расшифровки берешь: в папке с USEextractor.exe GCFFILES.dat не лежит.

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#23 Сообщение 05.04.2008, 09:26

$t@t!c_V()1D писал(а):
andreil писал(а):1) проверку на объем свободного места на диске
Сие, честно говоря, странно - Если кто будет писать программу и юзать DLL, то и сам может посмотреть свободное место на HDD, хотя...чем черт не шутит, может и пригодится

Сделай возможность извлечения конкретного GCF (всмысле, файлов, находящихся в эквивалентном GCF, но ты, думаю, понял :) ) из SID. Я, конечно, не буду использовать эту функцию, но все же
andreil писал(а):мне вот интерестно, зашифрованные файлы из СИМов извлекает или нет?
Да, извлекает: опробовано на Source materials.gcf и Source Sounds.gcf
Только, откуда ты ключи расшифровки берешь: в папке с USEextractor.exe GCFFILES.dat не лежит.
1) пущай будет ;)
2) ОК, сделаю.
3) Пока ниоткуда ;) Просто при чтении ключей процедуру пчемуто выбивает на бынальном преобразовании строки в целое число :( Как ни извращался, все равно выбивает, поэтому я пока закоментировал чтение ключей. Следовательно, пока зашифрованные СИМы не поддерживаются.

ЗЫ: Сейчас добавляю чтение свойств Item'а, те его размер, тип и тд.

------------------------

ЗЫЫ: Уже работаю над WAD-файлами. Чтение заголовка уже есть, осталось сделать извлечение файлов. Следующим номером будет PAK-файлы.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#24 Сообщение 05.04.2008, 12:33

Ну, а тогда почему они извлекались? Я же проверил: Source Sounds.gcf и Source materials.gcf - они же в SID'e зашифрованы...бред, блин, какой-то

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#25 Сообщение 05.04.2008, 13:24

$t@t!c_V()1D писал(а):Ну, а тогда почему они извлекались? Я же проверил: Source Sounds.gcf и Source materials.gcf - они же в SID'e зашифрованы...бред, блин, какой-то
Хз, проверь там содержимое файла, может кривое?

Пока то да сё, уже сделал PAK-файлы и почти - WAD-файлы :pardon: Осталось только для WADов разобраться, как из массива пикселей и палитры слепить BMP-картинку.
Заодно Исправил ошибку чтения ключей.

Вес ДЛЛки увеличился на 3Кб :crazy: при добавлении двух форматов файлов :P
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Fire666
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2600
Зарегистрирован: 15.02.2007
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 43 раза
Контактная информация:

#26 Сообщение 05.04.2008, 21:31

будет ли функция редактирования GCF файлов

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#27 Сообщение 05.04.2008, 21:40

fire64 писал(а):будет ли функция редактирования GCF файлов
Пока нет, тк еще не разобрался с контрольными суммами :( Там все настолько темно, что ужас :dash:
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#28 Сообщение 06.04.2008, 07:09

Почему моя прога падает сразу после того, как распаковка закончится? Вроде все как у тебя в примере сделал и все равно :( ... Если есть время, то посмотри приаттаченный исходник и пример программы распаковки

P.S.: Вместо запакованной GCF можешь подставить свою (находит по FindFirst).
Компиляция исходников потребует KOL.dcu, err.dcu и USEAPI.dcu - я их не стал включать из-за большого размера.
Вложения
USE.7z
Те самые исходники :D
(145.8 КБ) 230 скачиваний
USE.7z
Те самые исходники :D
(145.8 КБ) 230 скачиваний

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#29 Сообщение 06.04.2008, 12:46

$t@t!c_V()1D писал(а):Почему моя прога падает сразу после того, как распаковка закончится? Вроде все как у тебя в примере сделал и все равно :( ... Если есть время, то посмотри приаттаченный исходник и пример программы распаковки
Прошелся дебагером - все ОК. Распаковало, дошло до ЕНДа. Ошибка выскакивает ПОСЛЕ захода на функцию ;)
ЗЫ: Что бы запустить ДЛЛку в отладочном режиме надо сделать так:
1) копирем все файлы программы, которая использует эту ДЛЛку в папку, где получается скомпилированная ДЛЛка.
2) В Дельфи выбираем в меню "Run->Parameters...". Там в "Host application" добавлем полный путь к нашей программе (в данном случае это путь к tmp.exe), включая имя самого ЕХЕфайла.
Все, теперь можно в ДЛЛке ставить брэкпоинты и ловить баги ;) Сделай так и увидишь, что USE.dll здесь не причем. Но полюбому, надо после извлечения сделать закрытие ГЦФ-файла процедурой ClosePackage, тебе так не кажется?
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#30 Сообщение 06.04.2008, 17:00

andreil
Проблема решилась этими 2-мя строками:

Код: Выделить всё

SendMessage(hwndParent,WM_CLOSE,0,0);
Halt(0);
Но вся проблема в том, что мне не нужно, чтобы программа завершалась сразу после распаковки...В проге (tmp.exe) у меня тоже все абсолютно безглючно - там их в принципе быть не может: всего 4 функции вызова и 1 MessageBox в конце :) . Может, это специфика NSIS?

C ClosePackage все норм (хотя, по-моему, судя по исходникам, при извлечении GCF она не нужна, но я все же её вставил и она отлично проходит). Самое интересное начинается между строкой с "end;" (о чем ты и писал :wink: ) и процедурой выдавания ошибки доступа к памяти... :shock: :%) То есть функция, как я понял, пытается выйти, но проваливается и виновато в этом получается приложение, а не DLL... :Search: :cry: .

Ответить Вложения 3