[Util] Command Line CF Updater v3.6.3

Всё для взлома и эмуляции Steam.
Сообщение
Автор
Аватара пользователя
pinkpiton2
Майор
Майор
Сообщения: 724
Зарегистрирован: 06.08.2008
Откуда: Одесса
Благодарил (а): 1 раз
Поблагодарили: 1 раз

#16 Сообщение 22.01.2011, 21:29

$t@t!c_V()1D писал(а):pinkpiton2
Пожалуй, действительно стоит приделать (странно, что я об этом раньше е догадался -_-). А то я как-то уж и забыл про вас, диал-апщиков %) (шучу)
wi-max но, увы, всего-то мегабит...
50 кб/с ломил торрент-клиент
оставшихся 70 с небольшим не хватило апдейтеру...

а за вообще - вполне может возникнуть лёгкий затык где-то на транзите, и широченный канал становится или игольным ушком, или пробкой...
чтение инструкции - 5$/строка.
чтение инструкции с выражением - 25$/строка.
чтение инструкции с пошаговым выполнением - прямо пропорционально тупости заказчика, но не менее 500$.

Astrden
Нович0к
Нович0к
Сообщения: 7
Зарегистрирован: 29.01.2010
Поблагодарили: 1 раз

#17 Сообщение 26.04.2011, 19:51

Ребят, у меня есть проблема с последней версией проги, в этом топике изложил проблему: http://forum.csmania.ru/viewtopic.php?f=15&t=29043

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

#18 Сообщение 26.04.2011, 20:44

Astrden
320 - AppID игры. Игры качать сия утилита не умеет и не будет - не нужно ей это.

Вам же нужна конкретная GCF. Главная (так называемая Primary Cache) GCF - half-life 2 deathmatch.gcf имеет AppID 321.

Вы можете полный список требуемых GCF к игре и список игр в Steam, открыв файл clientregistry.blob (в папке Steam) утилитой ClientRegistry Toolkit и открыть там /TopKey/ContentDescriptionRecord или скачать MiSteamInfo в теме про MiSteam (раздел Cracked Steam) или скачать Phoenix (подпись кликабельна) и плагин CDR Viewer к нему в Центре обновлений (верхнее меню -> Справка -> Центр обновлений Phoenix).

Astrden
Нович0к
Нович0к
Сообщения: 7
Зарегистрирован: 29.01.2010
Поблагодарили: 1 раз

#19 Сообщение 26.04.2011, 20:51

$t@t!c_V()1D писал(а):Astrden
320 - AppID игры. Игры качать сия утилита не умеет и не будет - не нужно ей это.

Вам же нужна конкретная GCF. Главная (так называемая Primary Cache) GCF - half-life 2 deathmatch.gcf имеет AppID 321.

Вы можете полный список требуемых GCF к игре и список игр в Steam, открыв файл clientregistry.blob (в папке Steam) утилитой ClientRegistry Toolkit и открыть там /TopKey/ContentDescriptionRecord или скачать MiSteamInfo в теме про MiSteam (раздел Cracked Steam) или скачать Phoenix (подпись кликабельна) и плагин CDR Viewer к нему в Центре обновлений (верхнее меню -> Справка -> Центр обновлений Phoenix).
Я хотел чтобы она обновляла игру. Т.е. если узнать AppID для каждой нужной GCF, то их можно обновлять с сервера Steam?

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

#20 Сообщение 26.04.2011, 21:05

Да, но только в последнее время с введением такой фичи как Steam Guard, эта штука работает немного не так как надо, т.к. не отсылает инфу об оборудовании, на котором была запущена, чтобы успешно пройти аутентификацию на серверах Steam. И ни я, ни steamCooker (разработчик ядра этой программы - Rain.dll) не знаем, на основе чего эта инфа генерируется...пока.

Простите за рекламу, если что, но в Phoenix также реализована фича для обновления игр (ПКМ на игре), если контент можно скачать просто так (незащищённый контент. HL2DM подпадает). Главное, правда, иметь все необходимые GCF файлы, иначе игра не обнаружится. Я работаю над фичей, которая позволяла бы показать игры, для запуска которых не хватает некоторых GCF (и указать на [и по возможности скачать] недостающие GCF).

SAS123
Лейтенант
Лейтенант
Сообщения: 143
Зарегистрирован: 02.01.2006
Благодарил (а): 3 раза
Поблагодарили: 4 раза
Контактная информация:

#21 Сообщение 10.07.2011, 10:33

Возможно ли добавить пакетную обработку файлов:
cfUpdater3.exe 0 <папка old gcf> <папка .archive>
cfUpdater3.exe 1 <папка new gcf> <папка .archive> (а для gcf, которые не обновились, не создавались файлы update X_to_X.update.gcf ) ?
Неплохо бы добавить что-то в роде:
cfUpdater3.exe n <папка old gcf> <папка new gcf> <папка .update>

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

#22 Сообщение 19.07.2011, 12:56

SAS123
На самом деле, это неудобно делать на платформе GCF Updater'a, т.к. у меня не достаточно кода и средств там. Увы, но у меня нет времени переписывать и без того не безупречный код Phx из Delphi на Си и раздувать эту маленькую утилиту, поэтому сейчас я как раз занят "прилизыванием" кода, а уже к сентябрю будет больше пакетных фич.

Плюс во имя универсальности я не проверяю имена .update.gcf файлов, т.к. это слишком не надёжно. Я сделал пакетное применение обнов для GCF/NCF на Phx, т.к. всё необходимое уже есть и там применил другой, более надёжный подход. Если необходимо, могу сделать и пакетное создание .archive/*.CFUManifest файлов в Phx, если не против.

Если действительно надо, то позже я могу сделать полноценную поддержку командных строк на Phx...а может быть даже отдельно утилиту напишу.

SAS123
Лейтенант
Лейтенант
Сообщения: 143
Зарегистрирован: 02.01.2006
Благодарил (а): 3 раза
Поблагодарили: 4 раза
Контактная информация:

#23 Сообщение 19.07.2011, 13:43

$t@t!c_V()1D, уже нашел решение для создания патчей имея "old gcf" и "new gcf":
Razor добавил поддержку командной строки в OneClickCacheUpdater
и с помощью GCF Updater v3.5 вот:
пример bat-файла

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

@echo off

set oldgcf="C:\CSS_Final\SteamApps"
set newgcf="C:\Steam\SteamApps"
set gcf1=counter-strike source client
set gcf2=counter-strike source shared
set gcf3=counter-strike source_russian
set gcf4=multiplayer ob binaries
set gcf5=ob dedicated server
set gcf6=source 2007 shared materials
set gcf7=source 2007 shared models
set gcf8=source 2007 shared sounds
set gcf9=source materials
set gcf10=source models
set gcf11=source sounds


del /q archive\*.*
del /q update\*.*
rmdir /s /q Patch
set upd="extract\cfUpdater3.exe"
%upd% 0 "%oldgcf%\%gcf1%.gcf"
%upd% 0 "%oldgcf%\%gcf2%.gcf"
%upd% 0 "%oldgcf%\%gcf3%.gcf"
%upd% 0 "%oldgcf%\%gcf4%.gcf"
%upd% 0 "%oldgcf%\%gcf5%.gcf"
%upd% 0 "%oldgcf%\%gcf6%.gcf"
%upd% 0 "%oldgcf%\%gcf7%.gcf"
%upd% 0 "%oldgcf%\%gcf8%.gcf"
%upd% 0 "%oldgcf%\%gcf9%.gcf"
%upd% 0 "%oldgcf%\%gcf10%.gcf"
%upd% 0 "%oldgcf%\%gcf11%.gcf"
move %oldgcf%\*.CFUmanifest "archive"
del extract\gcf.txt
dir /b /o:n archive\*.CFUmanifest >> extract\gcf.txt
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf1%"`) Do (Set var1=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf2%"`) Do (Set var2=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf3%"`) Do (Set var3=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf4%"`) Do (Set var4=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf5%"`) Do (Set var5=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf6%"`) Do (Set var6=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf7%"`) Do (Set var7=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf8%"`) Do (Set var8=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf9%"`) Do (Set var9=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf10%"`) Do (Set var10=%%i)
for /f "usebackq  delims=" %%i in (`find /v "" extract\gcf.txt ^| find "%gcf11%"`) Do (Set var11=%%i)

%upd% 1 "%newgcf%\%gcf1%.gcf" "archive\%var1%"
%upd% 1 "%newgcf%\%gcf2%.gcf" "archive\%var2%"
%upd% 1 "%newgcf%\%gcf3%.gcf" "archive\%var3%"
%upd% 1 "%newgcf%\%gcf4%.gcf" "archive\%var4%"
%upd% 1 "%newgcf%\%gcf5%.gcf" "archive\%var5%"
%upd% 1 "%newgcf%\%gcf6%.gcf" "archive\%var6%"
%upd% 1 "%newgcf%\%gcf7%.gcf" "archive\%var7%"
%upd% 1 "%newgcf%\%gcf8%.gcf" "archive\%var8%"
%upd% 1 "%newgcf%\%gcf9%.gcf" "archive\%var9%"
%upd% 1 "%newgcf%\%gcf10%.gcf" "archive\%var10%"
%upd% 1 "%newgcf%\%gcf11%.gcf" "archive\%var11%"

move "archive\*.update.gcf" "update"
del extract\list.txt
dir /b update\*.update.gcf >> extract\list.txt
extract\sed -e "/counter-strike source client/d" -e "/multiplayer ob binaries/d" -e "s/^/update\\/" extract\list.txt >extract\server.txt
extract\sed -e "/ob dedicated server/d" -e "s/^/update\\/" extract\list.txt >extract\client.txt
extract\GCFBatchExtractor.exe "extract\client.txt" "Patch\Source Engine 2009 MP"
extract\GCFBatchExtractor.exe "extract\server.txt" "Patch\Source 2009 Dedicated Server"
CScript extract\DelBlank.VBS .\Patch

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

#24 Сообщение 20.07.2011, 06:34

SAS123
Забавно %) Но я всё ж сделаю ставку на универсальность. Тут-то, понятное дело, всё под контролем.

Аватара пользователя
Jiffs
Steam Content Support
Steam Content Support
Сообщения: 474
Зарегистрирован: 10.05.2008
Откуда: Красноярск
Поблагодарили: 48 раз
Контактная информация:

#25 Сообщение 12.01.2012, 11:46

Добрый день.

Программа не хочет обрабатывать параметры запуска, если в системном времени указан 2012 год. Да, именно так. Достаточно перевести дату на декабрь 2011 и все работает нормально. А если вернуть на январь 2012, то программа не реагирует на параметры запуска. Операционная система: Windows 7 SP1 x64.

P.S.: сама по себе, без параметров, программа запускается нормально, выдавая инструкцию о том как ей пользоваться.
Изображение Изображение Изображение Изображение Изображение Изображение Изображение

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

#26 Сообщение 12.01.2012, 12:08

Jiffs
O_o Ололо, что тут ещё сказать. Лично я ничего такого с проверкой дат не делал уж точно (ну зачем бы мне это сдалось?). Тогда, товарищи, осталось потерпеть всего недельку - сдам экзамены и [заодно] перенесу прогу на обновлённый rain.dll

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

#27 Сообщение 18.01.2012, 08:30

Обновил прогу. Не протестировал, правда, как следует, так что возможно есть косяки. Пишите, если что.

Аватара пользователя
Jiffs
Steam Content Support
Steam Content Support
Сообщения: 474
Зарегистрирован: 10.05.2008
Откуда: Красноярск
Поблагодарили: 48 раз
Контактная информация:

#28 Сообщение 18.01.2012, 10:54

1) Вышеуказанная проблема про системную дату не решена;
2) Патчи получаются пустыми, все внутренние файлы нулевого размера. Пример с двумя одинаковыми обновлениями сделанными на версиях 3.5 и 3.6.
Изображение Изображение Изображение Изображение Изображение Изображение Изображение

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

#29 Сообщение 19.01.2012, 11:58

Так-с, ребятки, я вот чё выяснил. В том, что DLL-ка работает только в 2011 году виноват steamCooker. Точнее, он сделал это специально и я не знаю, почему. Вот то, что я нарыл за это время:

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

.text:10001081                 lea     eax, [esp+64h+Time]
.text:10001085                 push    eax             ; Time
.text:10001086                 call    __time32
.text:1000108B                 add     esp, 4
.text:1000108E                 push    0
.text:10001090                 push    0
.text:10001092                 push    0
.text:10001094                 push    1
.text:10001096                 push    1
.text:10001098                 push    7DCh           ; 0x7DC = 2012. WTF?! IDK
.text:1000109D                 lea     esi, [esp+7Ch+var_40]
.text:100010A1                 call    sub_10018A20
.text:100010A6                 lea     ecx, [esp+64h+var_28]
.text:100010AA                 push    ecx
.text:100010AB                 mov     [esp+68h+var_4], 0
.text:100010B3                 call    sub_101FDAC9
.text:100010B8                 mov     edx, [esp+68h+var_34]
.text:100010BC                 mov     eax, [esp+68h+var_38]
.text:100010C0                 add     esp, 4
.text:100010C3                 push    0
.text:100010C5                 push    3E8h
.text:100010CA                 push    edx
.text:100010CB                 push    eax
.text:100010CC                 call    __aulldiv
.text:100010D1                 mov     [esp+64h+var_4C], edx
.text:100010D5                 mov     edx, dword_10276900
.text:100010DB                 add     edx, [esp+64h+var_28]
.text:100010DF                 cmp     eax, edx
.text:100010E1                 sbb     eax, eax
.text:100010E3                 neg     eax
.text:100010E5                 cmp     byte_1027690D, 0
.text:100010EC                 mov     dword_102768D4, eax ; Now this is that fucking var that is always checked for zero-nonzero
.text:100010F1                 jnz     short loc_10001105
.text:100010F3                 push    offset CriticalSection ; lpCriticalSection
.text:100010F8                 call    ds:InitializeCriticalSection
.text:100010FE                 mov     byte_1027690D, 1
Патч сделал, т.к. связаться с этим интересным челом можно только через cs.rin.ru, который оффлайн вот уже сколько времени. Много думать не пришлось. Но это всё же странно. Типа "бета-срок истёк" или что? Ну о-очень странно.
Сегодня-завтра перезалью CFU и обновлю Phoenix чуть пораньше, потому что, вообще говоря, эта штука серьёзная.

Добавлено спустя 15 часов 24 минуты 9 секунд:
Пофиксил. Теперь, вроде, чуть лучше %)

Аватара пользователя
Jiffs
Steam Content Support
Steam Content Support
Сообщения: 474
Зарегистрирован: 10.05.2008
Откуда: Красноярск
Поблагодарили: 48 раз
Контактная информация:

#30 Сообщение 19.01.2012, 13:20

Баг со временем - исправлен. Баг с внутренним содержимым обновлений - исправлен. Но, появился косметический баг: в имени созданного обновления, конечная версия не увеличивается. Например:

Должно быть так: team fortress 2 content.308_to_309.update
Программа делает так: team fortress 2 content.308_to_308.update

При этом, "правильное" обновление и "неправильное" побитового совпадают. Так что баг только в названии.
Изображение Изображение Изображение Изображение Изображение Изображение Изображение

Ответить