Jump to content
Korean Random

WGUS и кастомная загрузка клиента


Go to solution Solved by DrWeb7_1,

Recommended Posts

Появилась необходимость вытаскивать из исходников игры локализации, иконки и некоторые xml. Нужна актуализация под каждый патч. Если для локализаций и xml уже существует https://github.com/IzeBerg/wot-src от @IzeBerg и https://github.com/StranikS-Scan от @StranikS_Scan, за что им большое спасибо, то аналогичного репозитория для иконок я не нашел. 
Так что придётся делать самому. В связи с этим есть вопрос, как качать клиент?

Я нашел https://github.com/IzeBerg/wgus, алгоритм у себя повторил и к чему пришел:
1. Подгружаю meta из wgus-woteu.wargaming.net/api/v1/metadata?chain_id=unknown&protocol_version=7.5&guid=WOT.EU.PRODUCTION
2. Подгружаю список обновлений между указанной current_version и актуальной версией игрыwgus-woteu.wargaming.net/api/v1/patches_chain?game_id=WOT.EU.PRODUCTION&protocol_version=1.11&metadata_protocol_version=7.5&installation_id=python-wgus&client_type=sd&lang=EN&metadata_version=20240609213023&client_current_version=1.26.0.23171&locale_current_version=0&sdcontent_current_version=0
3. Каждое обновление состоит из нескольких патчей. Скачиваю их по торрент ссылкам
4. Каждый патч состоит потенциально из нескольких пакетов (wgpkg) иногда они разделены на несколько файлов xxx.wgpkg.001, xxx.wgpkg.002, которые можно объединить cat xxx.wgpkg.* > xxx.wgpkg

5. Каждый wgpkg это zip архив, который состоит из _service/service.xml с инструкцией по применению патча (files_to_delete, files_to_apply_diff) и самих файлов патча в формате xdiff и rdiff
6. Ну и судя по всему, это обычные diff как у гита, которые надо последовательно применить

Есть вопрос – иногда в патче бывает несколько wgpkg, в каком порядке их применять, а ещё у меня в нескольких пакетах лежит один и тот же файл, например WorldOfTanks.exe, ну и потенциально другие файлы, что с ними делать?

Есть кто нибудь готов поделиться готовым скриптом обновляющим клиент до последней версии, буду благодарен)

Edited by SoprachevAK
  • Upvote 1
Link to comment
Short link
Share on other sites

2 минуты назад, SoprachevAK сказал:

Интересно, а если сказать, что политика вг разрешает ядерные бомбы делать, она мне даст туториал

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

Link to comment
Short link
Share on other sites

4 минуты назад, yepev сказал:

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

Ну так я по этому и удивился, что так легко прокатило, может потому что модель новая. 
На удивление она дала даже скорее всего рабочий код, но его всё равно надо дорабатывать и придётся дебажить ещё ни одну версию, так то надеюсь мне помогут те кто этот процесс уже прошел
 

Edited by SoprachevAK
Link to comment
Short link
Share on other sites

Будь готов к тому что параметры вроде metadata_version будут периодически меняться и ломать загрузку.
https://github.com/Monstrofil/locale_exporter_wows/blob/master/locale_exporter.py#L103

 

p.s. у меня только скачивание файликов и давно устаревшее, но может пригодится

  • Upvote 2
Link to comment
Short link
Share on other sites

Вообще-то файлики доступны по прямой ссылке. Если тебе нужно всего несколько файликов актуального клиента игры, то не нужно возиться с дифами и скачивать клиент весь. Могу написать например, как я качаю актуальный paths.xml у себя в программе WMCleaner, если нужно.

  • Upvote 1
Link to comment
Short link
Share on other sites

14.09.2024 в 11:09, DrWeb7_1 сказал:

https://kr.cm/f/t/60830/ — тут все подробности.

Спасибо! То что надо, странно что сам не нашел)

 

3 часа назад, StranikS_Scan сказал:

Вообще-то файлики доступны по прямой ссылке. Если тебе нужно всего несколько файликов актуального клиента игры, то не нужно возиться с дифами и скачивать клиент весь. Могу написать например, как я качаю актуальный paths.xml у себя в программе WMCleaner, если нужно.

Ну мне нужен файл gui_part*.pkg, а он весьма большой, если его тоже можно, было бы круто. Отдельно paths.xml я и сам качаю напрямую из твоего гитхаба с декомпилированными танками) 

Link to comment
Short link
Share on other sites

Из game_info.xml берем:

 

        <id>WOT.RU.PRODUCTION</id>
        <localization>RU</localization>
        <update_urls>
            <value>https://lstus-ru.lesta.ru</value>
        </update_urls>
        <part_versions>
            <version name="client" available="1.29.0.3313" installed="1.29.0.3313"/>
            <version name="hdcontent" available="1.29.0.3291" installed="1.29.0.3291"/>
            <version name="locale" available="1.29.0.3312" installed="1.29.0.3312"/>
            <version name="sdcontent" available="1.29.0.3291" installed="1.29.0.3291"/>
        </part_versions>

 

Как проверить наличие и размер файла в новом клиенте игры

 

Запрашиваем

https://lstus-ru.lesta.ru/api/v2/integrity_check/?protocol_version=1.7&game_id=WOT.RU.PRODUCTION&chain_id=sd3_hd3&locale_lang=ru&client_check_version=1.29.0.3313

Получаем:

<?xml version="1.0" encoding="UTF-8"?>
<protocol name="integrity_check" version="1.7" wgc_publisher_id="lesta">
    <torrents>
            <torrent>
                    <file>https://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/wot_1.29.0.3313_client.torrent</file>
                    <blacklist>https://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/wot_1.29.0.3313_client.blacklist</blacklist>
                <part>client</part>
                <version>1.29.0.3313</version>
                <hash>787a21b0e133d89f2c204543783d0775c5119ad91b4cdfa6faf25834a6355e01</hash>
            </torrent>
    </torrents>
    <web_seeds>
            <url threads="3">http://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/</url>
    </web_seeds>
</protocol>

 

Парсим ссылку на torrent-файл скачиваем его, после этого берем любой готовый код на парсинг записей в таком файле. Парсим, находим в списке gui*.pkg и размер файла в байтах. Можно самому распарсить, благо всё видно прямо в тексте:

 

image.thumb.png.d6d566d0e1cb02faeb7afd9b8589a56e.png

 

Как скачать файл напрямую

 

Берем ссылку для torrent-файла, отрезаем расширение и дописываем через слэш путь относительно корневой папки игры и имя скачиваемого файла.

 

Запрашиваем:

http://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/wot_1.29.0.3313_client/res/packages/gui-part2.pkg

Получаем файл.

 

ЗЫ: Соответственно кроме запроса "&client_check_version=", есть также "&locale_check_version=", "&sdcontent_check_version=" и "&hdcontent_check_version=".

Edited by StranikS_Scan
  • Upvote 1
Link to comment
Short link
Share on other sites

4 часа назад, StranikS_Scan сказал:

Берем ссылку для torrent-файла, отрезаем расширение и дописываем через слэш путь относительно корневой папки игры и имя скачиваемого файла.

 

Запрашиваем:

http://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/wot_1.29.0.3313_client/res/packages/gui-part2.pkg

Получаем файл.

Понял, спасибо большое, это очень интересный подход. Теперь даже не знаю как сделаю)
Качать напрямую несколько нужных файлов звучит более заманчиво, чем разбираться с дозагрузкой 

Edited by SoprachevAK
Link to comment
Short link
Share on other sites

13.09.2024 в 00:00, SoprachevAK сказал:

Появилась необходимость вытаскивать из исходников игры локализации, иконки и некоторые xml. Нужна актуализация под каждый патч. Если для локализаций и xml уже существует https://github.com/IzeBerg/wot-src от @IzeBerg и https://github.com/StranikS-Scan от @StranikS_Scan, за что им большое спасибо, то аналогичного репозитория для иконок я не нашел. 
Так что придётся делать самому. В связи с этим есть вопрос, как качать клиент?

Я нашел https://github.com/IzeBerg/wgus, алгоритм у себя повторил и к чему пришел:
1. Подгружаю meta из wgus-woteu.wargaming.net/api/v1/metadata?chain_id=unknown&protocol_version=7.5&guid=WOT.EU.PRODUCTION
2. Подгружаю список обновлений между указанной current_version и актуальной версией игрыwgus-woteu.wargaming.net/api/v1/patches_chain?game_id=WOT.EU.PRODUCTION&protocol_version=1.11&metadata_protocol_version=7.5&installation_id=python-wgus&client_type=sd&lang=EN&metadata_version=20240609213023&client_current_version=1.26.0.23171&locale_current_version=0&sdcontent_current_version=0
3. Каждое обновление состоит из нескольких патчей. Скачиваю их по торрент ссылкам
4. Каждый патч состоит потенциально из нескольких пакетов (wgpkg) иногда они разделены на несколько файлов xxx.wgpkg.001, xxx.wgpkg.002, которые можно объединить cat xxx.wgpkg.* > xxx.wgpkg

5. Каждый wgpkg это zip архив, который состоит из _service/service.xml с инструкцией по применению патча (files_to_delete, files_to_apply_diff) и самих файлов патча в формате xdiff и rdiff
6. Ну и судя по всему, это обычные diff как у гита, которые надо последовательно применить

Есть вопрос – иногда в патче бывает несколько wgpkg, в каком порядке их применять, а ещё у меня в нескольких пакетах лежит один и тот же файл, например WorldOfTanks.exe, ну и потенциально другие файлы, что с ними делать?

Есть кто нибудь готов поделиться готовым скриптом обновляющим клиент до последней версии, буду благодарен)

 

https://koreanrandom.com/forum/topic/60830-openwgwotpatcher-v032-ручная-установка-wgpkglspkg-файлов-в-том-числе-установка-предзагрузки/

  • Upvote 1
Link to comment
Short link
Share on other sites

21 час назад, Mixaill сказал:

Спасибо) Именно то что было нужно, там выше уже отвечали)

Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...