[Util] UCL v2.0 Alpha 5

Всё для взлома и эмуляции Steam.
Сообщение
Автор
Аватара пользователя
ixAnder
Нович0к
Нович0к
Сообщения: 19
Зарегистрирован: 24.03.2009
Откуда: г.Братск
Контактная информация:

#136 Сообщение 25.03.2009, 13:06

Доброго всем. У меня проблема-вопрос: почему через UCL не видны многие игры\моды? Все архивы обновлены, но в UCL не видны Left4Dead, Zombie Panic! Source, D.i.p.r.i.p, Insurgency, и I-Fluid. Как заставить их появиться? (еще раз повторюсь: все архивы обновлены)
Мои проекты
C-Gaming - инфопортал.
Hopetown - оффициальный сайт модификации
Изображение

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

#137 Сообщение 26.03.2009, 10:09

Читай ReadMe.txt и обновляй файл ClientRegistry.blob, в котором находится заветная ContentDescriptionRecord. В проге есть эта функция.

rodgerland
Сержант
Сержант
Сообщения: 59
Зарегистрирован: 20.10.2008
Откуда: Норильск

#138 Сообщение 16.04.2009, 15:11

Можно сделать свой сервер для локального обновления ?
Чтоб люди могли через локальную сеть скачивать обновления в своей сети.

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

#139 Сообщение 17.04.2009, 15:32

Неа, никак

DN_USER
Лейтенант
Лейтенант
Сообщения: 117
Зарегистрирован: 14.11.2009

#140 Сообщение 26.05.2010, 17:20

Блин игры не ищутся пишет не найден ключ (или чтото типа того)

Diverse
Нович0к
Нович0к
Сообщения: 1
Зарегистрирован: 26.05.2010

#141 Сообщение 30.05.2010, 14:05

При обновлении контента выдает:"The given key was not present in the dictionary", пробывал копировать ClientRegistry.blob в корень папки UCL, всё равно UCL невидит gcf'ки.
Помогите пжалуста.

Аватара пользователя
spotik
Нович0к
Нович0к
Сообщения: 24
Зарегистрирован: 30.11.2008
Откуда: Мытищи

#142 Сообщение 31.05.2010, 15:22

во первых прога не хочет выводить мне список игр(хотя папку steamapps указал) , во вторых при попытке обновить контент у меня появляется ошибка "Данный ключ отсутствует в словаре" , ClientRegistry обновлял!!! :metal:

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

#143 Сообщение 01.06.2010, 17:49

spotik
Пожалуй, главная проблема UCL сейчас в том, что он не умеет определять контент предназначенный для определённых ОСей (на данный момент, Mac и Win). У себя я уже это исправил.

yar147852
Нович0к
Нович0к
Сообщения: 8
Зарегистрирован: 12.01.2010
Откуда: Нижний Новгрод

#144 Сообщение 29.07.2010, 13:37

Обновилась до Alpha 5 (Stable)
http://cs.rin.ru/forum/viewtopic.php?f=29&t=51119

Nils
Майор
Майор
Сообщения: 552
Зарегистрирован: 24.11.2009
Благодарил (а): 1 раз
Поблагодарили: 15 раз

#145 Сообщение 25.09.2010, 18:11

Доброе время суток.Пролистал тему и не нашел ответ на вопрос.Может кто расскажет поподробней про кнопку в настройках Protect.Еще интерисует в выподающем меню при навидении на игру пункт UCL packs.Зарание спасибо. P.S UCL 2.0 Alpha 6 (Stable)
One More Megabyte Memory.

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

#146 Сообщение 25.09.2010, 21:06

Nils писал(а):Еще интерисует в выподающем меню при навидении на игру пункт UCL packs
Как я понял, это вроде этаких...хм...ну, пакетов %) которые распаковываются/запускаются для того, чтобы пофиксить ту или иную игру.

Про Protect ничего сказать не могу.
Последний раз редактировалось $t@t!c_V()1D 25.09.2010, 21:15, всего редактировалось 1 раз.

Nils
Майор
Майор
Сообщения: 552
Зарегистрирован: 24.11.2009
Благодарил (а): 1 раз
Поблагодарили: 15 раз

#147 Сообщение 26.09.2010, 15:53

Я так понимаю эта кнопка (Protect) имеет отношение к точке монтирования,хотелось точно знать как она работает. UCL packs откуда распаковываются/запускаются,там одна UCLPacks.dll во всей папке Launcherа находиться,что за паки тоже дико интересно :)
One More Megabyte Memory.

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

#148 Сообщение 26.09.2010, 16:18

Nils писал(а):Я так понимаю эта кнопка (Protect) имеет отношение к точке монтирования,хотелось точно знать как она работае
А, это-то...там просто создаётся скрытый файл с таким именем, чтобы быть наверху списка (ну, что-то вроде !_aaucl.tmp, например) и открывается для эксклюзивного доступа (и не закрывается, пока проограмму не закроют). Зачём? Когда пользователь попытается удалить "лишних" 100 Гб в папке с UCL, то удаление (теоретически) должно удалять файлы вниз по алфавитному списку. Натыкаясь на первый файл, который создан UCL, система должна сказать, мол, файл занят, и не позволит удалить 100 гигов Steam контента, являющихся всего лишь смонтированной папкой Steamapps.

А вот UCLpacks как работают, я не знаю. Вроде бы где-то на Рине, то ли в теме с сорцами UCL это было описано, то ли в какой-то из тем собственно про UCL...там, насколько я помню, простейший скриптовый язык на основе XML и командами типа "Скопировать, распаковать, переместить, удалить". Точнее не опишу.

Nils
Майор
Майор
Сообщения: 552
Зарегистрирован: 24.11.2009
Благодарил (а): 1 раз
Поблагодарили: 15 раз

#149 Сообщение 26.09.2010, 17:10

Спасибо,все понял.Сейчас пережую и скорее всего оформятся новые вопросы.
One More Megabyte Memory.

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

#150 Сообщение 26.09.2010, 18:33

Скорее всего, UCLPacks.dll - пока тестовый плагин.
Дизассемблируя ILDASM-ом, нашёл наиболее интересные для изучения поведения плагина функции:

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

CheckUCLPacks
ContentCanHavePacks
Deinitialize
Initialize
OnContextMenuClick
OnLaunching
Немного дизассемблирования наиболее интересных кусков кода

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

.method private hidebysig instance void  CheckUCLPacks(class [UCL.Shared]UCL.Shared.IUclContent content) cil managed
{
  // Размер кода:       653 (0x28d)
  .maxstack  4
...
...
...
  string UCLPacks.UclPacks::uclPackFolder
  IL_0013:  call       bool [mscorlib]System.IO.Directory::Exists(string)
  IL_0018:  brtrue.s   IL_001b
  IL_001a:  ret
  IL_001b:  ldnull
  IL_001c:  stloc.0
  IL_001d:  ldsfld     string UCLPacks.UclPacks::uclPackFolder
  IL_0022:  newobj     instance void [mscorlib]System.IO.DirectoryInfo::.ctor(string)
  IL_0027:  stloc.1
  IL_0028:  ldstr      "*[{0}@{1}]*.zip"
  IL_002d:  ldarg.1
  IL_002e:  callvirt   instance valuetype [UCL.Shared]UCL.Shared.ContentTypes [UCL.Shared]UCL.Shared.IUclContent::get_ContentType()
  IL_0033:  box        [UCL.Shared]UCL.Shared.ContentTypes
  IL_0038:  callvirt   instance string [mscorlib]System.Object::ToString()
  IL_003d:  ldarg.1
  IL_003e:  callvirt   instance string [UCL.Shared]UCL.Shared.IUclContent::GetSafeName()
  IL_0043:  call       string [mscorlib]System.String::Format(string,
                                                              object,
                                                              object)
  IL_0048:  stloc.2
  IL_0049:  ldloc.1
  IL_004a:  ldloc.2
  IL_004b:  callvirt   instance class [mscorlib]System.IO.FileInfo[] [mscorlib]System.IO.DirectoryInfo::GetFiles(string)
...
...
...
  instance string [mscorlib]System.IO.FileSystemInfo::get_Name()
  IL_0066:  ldstr      "["
  IL_006b:  callvirt   instance int32 [mscorlib]System.String::IndexOf(string)
  IL_0070:  stloc.s    V_4
  IL_0072:  ldloc.3
  IL_0073:  callvirt   instance string [mscorlib]System.IO.FileSystemInfo::get_Name()
  IL_0078:  ldstr      "]"
  IL_007d:  callvirt   instance int32 [mscorlib]System.String::IndexOf(string)
  IL_0082:  stloc.s    V_5
  IL_0084:  ldloc.3
  IL_0085:  callvirt   instance string [mscorlib]System.IO.FileSystemInfo::get_Name()
  IL_008a:  ldstr      "@"
  IL_008f:  callvirt   instance int32 [mscorlib]System.String::IndexOf(string)
...
  IL_010c:  callvirt   instance class [System]System.Collections.Specialized.ListDictionary [UCL.Shared]UCL.Shared.IUclContent::get_CustomProperties()
  IL_0111:  ldstr      "InstalledUCLPacks"
  IL_0116:  callvirt   instance bool [System]System.Collections.Specialized.ListDictionary::Contains(object)
  IL_011b:  brfalse.s  IL_0133
  IL_011d:  ldarg.1
  IL_011e:  callvirt   instance class [System]System.Collections.Specialized.ListDictionary [UCL.Shared]UCL.Shared.IUclContent::get_CustomProperties()
  IL_0123:  ldstr      "InstalledUCLPacks"
  IL_0128:  callvirt   instance object [System]System.Collections.Specialized.ListDictionary::get_Item(object)
  IL_012d:  castclass  [mscorlib]System.String

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

.method private hidebysig instance bool  ContentCanHavePacks(class [UCL.Shared]UCL.Shared.IUclContent content) cil managed
{
  // Размер кода:       30 (0x1e)
  .maxstack  8
  IL_0000:  ldarg.1
  IL_0001:  callvirt   instance valuetype [UCL.Shared]UCL.Shared.ContentTypes [UCL.Shared]UCL.Shared.IUclContent::get_ContentType()
  IL_0006:  brfalse.s  IL_001c
  IL_0008:  ldarg.1
...
...
...

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

.method public hidebysig instance void  OnContextMenuClick(object sender,
                                                           class [UCL.Shared]UCL.Shared.ContentEventArgs e) cil managed
{
  // Размер кода:       12 (0xc)
  .maxstack  8
  IL_0000:  ldstr      "Context menu item clicked!"
  IL_0005:  call       valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string)
  IL_000a:  pop
  IL_000b:  ret
} // end of method UclPacks::OnContextMenuClick

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

.method public hidebysig instance void  OnLaunching(object sender,
                                                    class [UCL.Shared]UCL.Shared.ContentLaunchingEventArgs e) cil managed
{
  // Размер кода:       13 (0xd)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  ldarg.2
  IL_0002:  callvirt   instance class [UCL.Shared]UCL.Shared.IUclContent [UCL.Shared]UCL.Shared.ContentEventArgs::get_Content()
  IL_0007:  call       instance void UCLPacks.UclPacks::CheckUCLPacks(class [UCL.Shared]UCL.Shared.IUclContent)
  IL_000c:  ret
} // end of method UclPacks::OnLaunching
Tl;Dr
CheckUCLPacks - проверяет...эм..."валидность" (?) zip-файлов с необходимым контентом.
ContentCanHavePacks - проверяет, может ли тип игры/приложения иметь вообще какие-либо паки (ну, например, зачем для Медиа иметь паки?).
Deinitialize - деинициализация плагина, ничего особо интересного внутри.
Initialize - инициализация плагина, ничего особо интересного внутри.
OnContextMenuClick - пока выдаёт обычное сообщение...наверное, ребята баловались, тестировали.
OnLaunching - наиболее понятное для меня: вызов функции CheckUCLPacks. Перед этим вызовом вызывается UCL.Shared.ContentEventArgs::get_Content() в качестве параметра к этой функции.
Последний раз редактировалось $t@t!c_V()1D 26.09.2010, 18:34, всего редактировалось 1 раз.

Закрыто Вложения 5