Universal Steam Extractor

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
M1ke
Модератор
Модератор
Сообщения: 1464
Зарегистрирован: 17.06.2007
Откуда: 54
Благодарил (а): 2 раза
Поблагодарили: 90 раз
Контактная информация:

#136 Сообщение 26.06.2008, 10:43

andreil писал(а):Вообщето ключи есть в самой библиотеке ;) Разожми ее UPX'ом и посмотри в ресурсах - там есть текстовый файлик с ключиками + названиями GCF + их ID.
Не, ну это понятно, просто, надеюсь, ты же не собираешься перекомпиливать DLL с каждым новым выходом чего-нибудь этакого на Steam? Плюс ко всему, поиск по GCFFiles.dat занимает немало процессорного времени, а прога (MzL), узнавая AppID очередной GCF заодно может и DepotEncryptionKey подглядеть ;-) (это и есть та самая секция с ключом).

И еще, у тебя в USEApi.pas есть флаг COPY_LOCAL? равный 0xA, так вот это НЕ ПРАВИЛЬНО. на сайте tommunism.net приведена, информация, что это не отдельный флаг, а комбинация флагов 0x8 и 0x2 ("item is locked" и "item is a launch file" соответственно). Возьми себе на заметку :wink:
Изображение
Изображение
Изображение

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

#137 Сообщение 26.06.2008, 10:55

M1ke писал(а):Не, ну это понятно, просто, надеюсь, ты же не собираешься перекомпиливать DLL с каждым новым выходом чего-нибудь этакого на Steam? Плюс ко всему, поиск по GCFFiles.dat занимает немало процессорного времени, а прога (MzL), узнавая AppID очередной GCF заодно может и DepotEncryptionKey подглядеть ;-) (это и есть та самая секция с ключом).

И еще, у тебя в USEApi.pas есть флаг COPY_LOCAL? равный 0xA, так вот это НЕ ПРАВИЛЬНО. на сайте tommunism.net приведена, информация, что это не отдельный флаг, а комбинация флагов 0x8 и 0x2 ("item is locked" и "item is a launch file" соответственно). Возьми себе на заметку :wink:
1) Ладно, сделаю ;)
2) ОК, проверю, на что это подейтвует, но помоемому, в USE эти флаги не юзаются ;)
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

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

#138 Сообщение 29.06.2008, 09:23

andreil, не можешь сказать почему глючит функция "list.Clear" в следующем отрезке кода?
(Это функция, которая вызывается из NSIS-скрипта, так что не обращай внимания на параметры)

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

procedure GCF_GetMapsList(const hwndParent: HWND; const string_size: integer; const variables: PChar; const stacktop: pointer); cdecl;
var i: integer;
      list: pStrListEx;
begin
  g_stringsize := string_size;
  g_hwndParent := hwndParent;
  g_stacktop := stacktop;
  g_variables := variables;

  list:=NewStrListEx;

// PopString - надеюсь, ты немного соображаешь в том, как передаются параметры функции? (псевдо-ASM) :)

  Package:=CreatePackage;
  USEAPI.OpenPackage(PChar(PopString),Package);
  i:=USEApi.GetItemByPath(pChar(PopString+'maps'), Package);
  If i = -1 then
    PushString('Err') //Это способ общения с NSIS-скритпом ;-)
  else begin

    PushString('/END');
    USEApi.Delphi_KOL_GetItemList(i, list, Package);
    for i:=0 to list.Count-1 do begin
      if ExtractFileExt(list.Items[i]) = '.bsp' then begin
          PushString(ExtractFileName(list.Items[i]));
      end;
    end;
    
    list.Clear; // Вот здесь после того, как "list" был один раз заполнен и вылетает

  end;
  ClosePackage(Package);
end;

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

#139 Сообщение 29.06.2008, 11:29

А ты попробуй сделать не Clear, а:

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

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

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

#140 Сообщение 22.07.2008, 15:20

Итак есть новости в проекте - теперь USE работает в ТоталКомандере 8)
Те я немного поменял программу и в итоге получился плагин к этому файл-менеджеру. Проверил сам - работать стало удобно :)

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

Аватара пользователя
x_000
Полковник
Полковник
Сообщения: 4889
Зарегистрирован: 25.02.2008
Откуда: Deutsches Reich
Благодарил (а): 6 раз
Поблагодарили: 18 раз

#141 Сообщение 22.07.2008, 16:51

О_О это отличные новости! теперь я вообще могу сносить GCFScape :crazy:

Аватара пользователя
TESLA_MaN
Сержант
Сержант
Сообщения: 97
Зарегистрирован: 27.02.2006
Контактная информация:

#142 Сообщение 22.07.2008, 16:58

andreil

Шикарно!!! Спасибо!!! Все стало намного проще и быстрее :good:

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

#143 Сообщение 22.07.2008, 18:19

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

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

#144 Сообщение 26.07.2008, 12:48

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

Антон_м
Нович0к
Нович0к
Сообщения: 4
Зарегистрирован: 08.05.2007

#145 Сообщение 28.07.2008, 18:07

Почему я не могу из SIM сделать GCF. Заходишь в прогу=>открыть файл=>Half-Life 2_disk1.sim и всё на этом(( вылетает с ошибкой. как то раз мне удалось открыть, я начал распаковку, он просит диск 2, как его поменять? как поставить диск 2?

omgiafs
Сержант
Сержант
Сообщения: 52
Зарегистрирован: 29.09.2005
Контактная информация:

#146 Сообщение 31.07.2008, 05:35

Total Commander 7.03 с установленным плагином.

Замечен (его трудно не заметить) баг. Но в очень нестандартной операции, а именно: распаковка GCF-апдейта, который делается с помощью CF Toolbox. А делается это для того, чтобы получить только обновленные файлы для распакованной версии БЕЗ ПЕРЕЛОПАЧИВАНИЯ КУЧИ ГИГАБАЙТ полностью распакованной версии и отделения плевел от зерен. Я не знаю, каким образом у вас на сайте апдейты делаются, но подозреваю, что не так. Потому что это жосский геморрой :crazy: . А вот получение ТОЛЬКО обновленных файлов на блюдечке с голубой каемочкой - это мне больше нравится :).

Итак.
Захожу плагином как в папку в один из апдейтов, там все нормально. Выделяю всё и распаковываю. Распаковка проходит отлично. Выхожу из GCF-апдейта, и захожу в другой. А вот тут уже стабильно вываливается ошибка, вот она:
gcf_error.png
Еггог
.
/upd Пока писал, обнаружил, что если распаковать не все файлы из апдейта, то еггог вроде и не вываливается. а если все - то точно вылезет.

Идем далее. В team fortress 2 client content.gcf показывывает пустоту, а по идее там папка и в ней длл. Что в апдейте, что в полном GCF.

И еще добавлю как почистить папку с распакованными апдейтами. Хотя мастера и так это должны знать. Зачем чистить? А затем, что создается куча файлов (а точнее - все файлы, что есть в полной GCF), и из них только обновленные имеют размер, отличный от нуля. Так вот эти нулевые файлы (а также пустые папки и папки с размером 0 байт) надо почикать.
В папке с распакованными файлами открываем окно поиска (Alt+F7), идем во вкладку Плагины, ставим галку "поиск с плагинами", отмечаем Логическое ИЛИ и создаем 3 правила:
1. Плагин tc, размер = 0 байт
2. Плагин filex, EmptyDir = ДА
3. Плагин filex, ZeroSizeDir = ДА
WDX-Плагин Filex здесь

Запускаем, и результаты поиска удаляем :).

Не могу не высказать благодарность andreil за данный плагин! Хотя бы потому, что GCF-scape апдейты от CF Toolbox'а никаким каком не хочет распаковывать. А тут - пожалуйста :).

Сходу вношу предложение - при распаковке пропускать файлы нулевого размера. Хотя тут наверное возникнет ряд вопросов. Так что можно сделать это опцией. Желаю удачи (точнее- ясной головы) в дальнейшем развитии!

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

#147 Сообщение 31.07.2008, 18:46

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

omgiafs
Сержант
Сержант
Сообщения: 52
Зарегистрирован: 29.09.2005
Контактная информация:

#148 Сообщение 01.08.2008, 05:50

Все равно еггог вылазит тот же самый. Увы.

SotM
Нович0к
Нович0к
Сообщения: 1
Зарегистрирован: 06.08.2008
Откуда: Rostov-on-Don

#149 Сообщение 06.08.2008, 11:11

Не подскажите как данную прогу прикрутить к FAR manager?

И еще:
сам плагин для TC я увидел двумя постами выше.
А вот где скачать GUI и саму dll я в упор не вижу. (на этом форуме я не давно).
May the force be with you.

M1ke
Модератор
Модератор
Сообщения: 1464
Зарегистрирован: 17.06.2007
Откуда: 54
Благодарил (а): 2 раза
Поблагодарили: 90 раз
Контактная информация:

#150 Сообщение 17.08.2008, 13:30

andreil писал(а):Итак есть новости в проекте - теперь USE работает в ТоталКомандере
Отлично, только про нас со $t@t!c_V()1D не забывай. Тут проблема есть, которую никакими Free, Clear, Free_And_Nil не решишь (ну не получается...все поперепробовали) - очищение pStrListEx :( . Я что предлагаю: сделай листинг находящихся в папке "X", не в pStrListEx, а в PChar/String, чтоб можно было парсить "своими" средствами (NSIS), а?
Изображение
Изображение
Изображение

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