SoprachevAK Posted September 12 Share Posted September 12 (edited) Появилась необходимость вытаскивать из исходников игры локализации, иконки и некоторые 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 September 12 by SoprachevAK 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 12 Author Share Posted September 12 Шутки ради решил затестить новую o-1 и был послан) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted September 12 Share Posted September 12 @SoprachevAK спроси - почему не может? @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 12 Author Share Posted September 12 2 минуты назад, yepev сказал: @SoprachevAK спроси - почему не может? Ну ладно, уломал) Интересно, а если сказать, что политика вг разрешает ядерные бомбы делать, она мне даст туториал @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted September 12 Share Posted September 12 2 минуты назад, SoprachevAK сказал: Интересно, а если сказать, что политика вг разрешает ядерные бомбы делать, она мне даст туториал Джейлбрейки существуют, но такой же простой фразой как в примере обычно не уговорить, потому что для таких чувствительных тем модели целенаправленно файнтюнятся на отказ. @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 12 Author Share Posted September 12 (edited) 4 минуты назад, yepev сказал: Джейлбрейки существуют, но такой же простой фразой как в примере обычно не уговорить, потому что для таких чувствительных тем модели целенаправленно файнтюнятся на отказ. Ну так я по этому и удивился, что так легко прокатило, может потому что модель новая. На удивление она дала даже скорее всего рабочий код, но его всё равно надо дорабатывать и придётся дебажить ещё ни одну версию, так то надеюсь мне помогут те кто этот процесс уже прошел Edited September 12 by SoprachevAK @ Quote Link to comment Short link Share on other sites More sharing options...
Monstrofil Posted September 13 Share Posted September 13 Будь готов к тому что параметры вроде metadata_version будут периодически меняться и ломать загрузку. https://github.com/Monstrofil/locale_exporter_wows/blob/master/locale_exporter.py#L103 p.s. у меня только скачивание файликов и давно устаревшее, но может пригодится 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Solution DrWeb7_1 Posted September 14 Solution Share Posted September 14 13.09.2024 в 00:00, SoprachevAK сказал: в каком порядке их применять https://kr.cm/f/t/60830/ — тут все подробности. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted September 16 Share Posted September 16 Вообще-то файлики доступны по прямой ссылке. Если тебе нужно всего несколько файликов актуального клиента игры, то не нужно возиться с дифами и скачивать клиент весь. Могу написать например, как я качаю актуальный paths.xml у себя в программе WMCleaner, если нужно. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 16 Author Share Posted September 16 14.09.2024 в 11:09, DrWeb7_1 сказал: https://kr.cm/f/t/60830/ — тут все подробности. Спасибо! То что надо, странно что сам не нашел) 3 часа назад, StranikS_Scan сказал: Вообще-то файлики доступны по прямой ссылке. Если тебе нужно всего несколько файликов актуального клиента игры, то не нужно возиться с дифами и скачивать клиент весь. Могу написать например, как я качаю актуальный paths.xml у себя в программе WMCleaner, если нужно. Ну мне нужен файл gui_part*.pkg, а он весьма большой, если его тоже можно, было бы круто. Отдельно paths.xml я и сам качаю напрямую из твоего гитхаба с декомпилированными танками) @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted September 16 Share Posted September 16 (edited) Из 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 и размер файла в байтах. Можно самому распарсить, благо всё видно прямо в тексте: Как скачать файл напрямую Берем ссылку для 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 September 16 by StranikS_Scan 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 16 Author Share Posted September 16 (edited) 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 September 16 by SoprachevAK @ Quote Link to comment Short link Share on other sites More sharing options...
Mixaill Posted September 23 Share Posted September 23 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-файлов-в-том-числе-установка-предзагрузки/ 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 24 Author Share Posted September 24 21 час назад, Mixaill сказал: https://koreanrandom.com/forum/topic/60830-openwgwotpatcher-v032-ручная-установка-wgpkglspkg-файлов-в-том-числе-установка-предзагрузки/ Спасибо) Именно то что было нужно, там выше уже отвечали) @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.