Автор Тема: [PSP] PQ2 - Practical Intelligence Quotient 2  (Прочитано 570 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн john458

  • Пользователь
  • Сообщений: 19
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« : 27 Октябрь 2023, 16:36:27 »
Доброго времени суток всем читающим.

Нужна помощь в прописании 'данных' уровней в файле UND.
В общем, есть такая очень неплохая логическая игра как "PQ2 - Practical Intelligence Quotient 2". Для этой игры в своё время было сделано порядка 5000 дополнительных уровней игровым сообществом. До этого момента, в сети нигде их небыло. Я решил их поискать, но увы тщетно. Случайно на reddit натолкнулся на 2-1 годичной давности посты от одного и того же юзера, где он их тоже искал. У него это получилось более удачней. Заплатив, часть из них он получил от одного из японских юзеров, который их когда-то сохранил. Я списался с ним, он поделился ими. Но есть существенная проблема. Из 3662 уровней, в игре отображаются только 960. То есть, 2700 уровней невозможно никак сыграть. А дело вот в чём. Когда-то, после 2010 года прилетело обновление на игру, и вот файл UND через который игра и считывает и выводит уровни в игру, обновился, после чего, как написано выше, 2700 из них перестали отображаться в игре. Другого обновления с исправлением, так никогда больше и не прилетело. Так вот. Может есть возможность узнать какую часть кода считывает файл UND из кода файла уровня(ей) .NET и какая часть кода от того или иного уровня прописана в самом файле UND для считывания уже самой игрой. Может можно как-то вычислить его в этих 2700 уровнях и прописать его в файле UND. Кстати, файл UND лежит в папке с уровнями ULUS10258_IL2_NETWORK.

P.S. И ещё, человек который со мной ими поделился, готов заплатить за то, чтобы сделать так, чтобы эти уровни стали отображаться в игре и работать. Вот его комментарий.


Если есть такие люди, понимающие в этом, и готовы как помочь так и заработать. Я могу свести/списать вас с этим человеком.

Вот прилагаю файлы уровней. В архиве есть инструкция по их установке в игру и запуске (960 уровней). И так же прикрепляю архив с теми самыми неотображающимися 2700-и уровнями (файлы уровней кладутся в туже папку ULUS10258_IL2_NETWORK, взамен работающих).

* Levels Don't Work.zip (2028.32 КБ - загружено 21 раз.)
* 960 Community Levels.zip (1317.55 КБ - загружено 20 раз.)

Если что, то вот и образ игры в .cso формате: https://disk.yandex.ru/d/nrcdmTMcsww-Qg

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5081
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #1 : 27 Октябрь 2023, 19:16:14 »
Я расшифровал UND, там хранится информация о 5000 уровнях, но ваши уровни не видны, потому что у них другие ID. Т. е. вообще уровней больше 5000, что видно по ID, но похоже на консоль могло быть сохранено не больше 5000. Поэтому, нужно либо найти уровни с ID из этого UND, либо изменить UND, добавив ID и информацию об уровнях. Я пробовал изменить UND, но происходит ошибка даже из-за изменения процента рекорда, значит есть контрольная сумма и нужно изучать дальше. Подменить данные в файле уровня простой заменой тоже нельзя. Может позже посмотрю.

Оффлайн john458

  • Пользователь
  • Сообщений: 19
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #2 : 27 Октябрь 2023, 19:32:34 »
Я расшифровал UND, там хранится информация о 5000 уровнях, но ваши уровни не видны, потому что у них другие ID. Т. е. вообще уровней больше 5000, что видно по ID, но похоже на консоль могло быть сохранено не больше 5000. Поэтому, нужно либо найти уровни с ID из этого UND, либо изменить UND, добавив ID и информацию об уровнях. Я пробовал изменить UND, но происходит ошибка даже из-за изменения процента рекорда, значит есть контрольная сумма и нужно изучать дальше. Подменить данные в файле уровня простой заменой тоже нельзя. Может позже посмотрю.
Огромное спасибо что взялись посмотреть. Буду ждать от вас новости, в надежде конечно же на положительный результат. Если у вас получится это сделать (подменить, или прописать это будет просто отлично). Если что, то я вас сведу с этим человеком. А там вы уже договоритесь тогда о сумме, если вас это конечно же интересует. Он из штатов как я понял.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5081
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #3 : 28 Октябрь 2023, 03:14:36 »
Я нашёл в коде место, которое нужно изменить для отключения проверки UND и смог заменить уровень. Придётся изменять образ, что неприятно, но иначе нужно разбирать код проверки и писать доп. код.
В UND ещё указываются голоса за уровни и проценты, от этого зависит порядок уровней, а по уровням нельзя сказать какой у них был рейтинг, т. е. замена свободных получит статистику от них, что будет сбивать с толку. Можно заменить статистику всех, чтобы отображались по порядку. Там же в UND имя рекордсмена и его процент, что тоже не будет иметь смысл. Эту всю статистику не разбирал, но это не проблема. Она загружалась из сети, за исключением наверно текущего игрока.
В UND ещё какие-то данные, может профиль игрока.
Изменение образа игры устроит? Сбросить статистику у добавленных или у всех?
UPD: Если получится, напишу в ЛС, чтобы связаться с человеком, деньги передать не сможет, но хотя бы купить игру.
« Последнее редактирование: 28 Октябрь 2023, 04:07:04 от Sharpnull »

Оффлайн il4400

  • Пользователь
  • Сообщений: 2
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #4 : 28 Октябрь 2023, 13:45:39 »
Hi, I am the crazy person who is trying to be able to play all available puzzles, if you need you can contact me privately, thank you for your efforts.

Оффлайн john458

  • Пользователь
  • Сообщений: 19
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #5 : 28 Октябрь 2023, 15:45:26 »
Я нашёл в коде место, которое нужно изменить для отключения проверки UND и смог заменить уровень. Придётся изменять образ, что неприятно, но иначе нужно разбирать код проверки и писать доп. код.
Изменение образа игры устроит? Сбросить статистику у добавленных или у всех?

Огромное спасибо что взялись за это дело. По поводу вами описанного. Делайте как считаете будет для вас легче, да и как считаете нужным (главное конечно же результат). Я к сожалению в этом не понимаю. Человек который отписал ниже вашего комментария и есть тот человек. Я ему скинул ссылку на эту тему. Можете написать ему в личку и обсудить детали.

Добавлено позже:
Hi, I am the crazy person who is trying to be able to play all available puzzles, if you need you can contact me privately, thank you for your efforts.
Человек напишет вам здесь в личном сообщении. Либо напишите ещё какие либо данные чтобы он мог с вами связаться.
« Последнее редактирование: 28 Октябрь 2023, 15:51:49 от john458 »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5081
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #6 : 28 Октябрь 2023, 21:35:21 »
Я обновил UND, теперь видны 3662 уровня, которые здесь выложены. Просто заменить UND файл.
update_und.py - скрипт на Python 3, чтобы добавить новые уровни, если будут найдены ещё. Установить Python 3 (https://www.python.org), положить все уровни (ID_.NET) и update_und.py в папку ULUS10258_IL2_NETWORK, запустить update_und.py (двойной клик), после завершения будет надпись "Press any key...".

Образ не пришлось редактировать, я разобрался как вычисляется контрольная сумма. Скрипт находит уровни с ID из файлов, которых нет в UND, и вставляет в свободные ID - для которых нет файлов.

Оффлайн john458

  • Пользователь
  • Сообщений: 19
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #7 : 28 Октябрь 2023, 21:49:24 »
Я обновил UND, теперь видны 3662 уровня, которые здесь выложены. Просто заменить UND файл.
update_und.py - скрипт на Python 3, чтобы добавить новые уровни, если будут найдены ещё. Установить Python 3 (https://www.python.org), положить все уровни (ID_.NET) и update_und.py в папку ULUS10258_IL2_NETWORK, запустить update_und.py (двойной клик), после завершения будет надпись "Press any key...".

Спасибо большое за проделанную вами работу.
Я так понял, что файл "update_und.py" сейчас в папке с уровнями не нужен? Он будет нужен лишь в том случае, если будут найдены ещё какие либо другие уровни в сети? И вот с помощью программы Python и update_und.py их так же можно будет добавить в список UND?
Круто это вы конечно придумали и реализовали. Мои вам апплодисменты. Сейчас пойду проверять.

Оффлайн il4400

  • Пользователь
  • Сообщений: 2
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #8 : 28 Октябрь 2023, 22:10:05 »
You are a genius, it's amazing what you've been able to do  , thank you for your work and time .
Thank you very much .

Оффлайн john458

  • Пользователь
  • Сообщений: 19
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #9 : 28 Октябрь 2023, 22:15:42 »
You are a genius, it's amazing what you've been able to do  , thank you for your work and time .
Thank you very much .

Please read the private message left for you by "Sharpnull"

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5081
    • Просмотр профиля
[PSP] PQ2 - Practical Intelligence Quotient 2
« Ответ #10 : 30 Октябрь 2023, 17:19:22 »
С il4400 договорились, ещё объяснил ему как сделать доступным уровни UND (сетевые) для нового пользователя, поэтому вот инструкция.

Доступ к сетевым уровням для нового пользователя
Снача общая информация. Есть "некий ID" - 4 байта, который должен быть одинаковым в UND (сетевые уровни) и UNH (немного информации) из ULUS10258_IL2_NETWORK и в UDH (имя пользователя и его данные) из ULUS10258_IL2_USER1, а также _USER2 и т. д. для других пользователей. Поэтому когда у вас есть UND и UNH с одним ID, его нужно скопировать и заменить в UDH для нужного пользователя.
Чтобы увидеть реальные данные UND, UNH, UDH, USD (данные о прохождении) нужно расшифровать файл, для этого приложил скрипт xor_u.py для Python 3, передайте скрипту путь до файла в 1-м аргументе (или перетащите файл на скрипт в Проводнике), появится файл с _xor на конце, для шифрования нужно указать уже расшифрованный файл. После изменения файла и шифровки назад нужно пересчитать контрольную сумму, для этого передайте файл (зашифрованный) в скрипт update_chksum.py, получите файл с _edit на конце, теперь игра его примет (после переименования файла как было).
Про нового пользователя. Допустим мы его создали в игре как 2-го, значит изменяем ULUS10258_IL2_USER2\UDH. Используем xor_u.py на ULUS10258_IL2_NETWORK\UND, открываем UND_xor в HEX-редакторе, с позиции 4 копируем 4 байта, например, F9 2A 49 1F - это наш ID, теперь UND_xor можно удалить. Используем xor_u.py на ULUS10258_IL2_USER2\UDH, в UDH_xor заменяем байты с позиции 0x20 на ID (у нас F9 2A 49 1F), скорее всего там были нули, теперь xor_u.py на UND_xor, получаем UND_xor_xor, применяем на нём update_chksum.py и получаем UND_xor_xor_edit, его переименовываем в UND вместо старого, теперь можно удалить UND_xor и UND_xor_xor. Готово, 2-й пользователь может запускать сетевые уровни. Эти действия можно было сделать в один скрипт, но думаю мало кому нужно.

Кстати, если проблемы с запуском Python 3,