Jump to content
Korean Random
Red_Noise

Формат XML из клиента WoT (распаковка и упаковка)

Recommended Posts

Доброго времени суток!

Собственно вопрос наверное изъезжен, но что-то не осилил гугл и чужие исходники. Камрады подскажите чем расшифровать xml из клиента игры? Ну или ткните в тему где это описано) Если есть где-то исходники на 3-м python вообще идеально.

 

Зачем? - у меня есть батник которым перекрашиваю свой собственный пак иконок, все бы ничего, но он дергает кучу сторонней фигни, exe от архиватора, ccatlas, exe-макросы фотошопа, хочется привести это в порядок, да и заколебался его править под версию игры. Хочется чтобы скрипт дергал все нужные пути прямо из клиента игры.

Спасибо.

Share this post


Link to post

Short link
Share on other sites

PjOrion возьми, тут где-то на форуме есть в закреплённых темах. Ещё и из консоли умеет работать

Share this post


Link to post

Short link
Share on other sites
14 часов назад, Red_Noise сказал:

Доброго времени суток!

Собственно вопрос наверное изъезжен, но что-то не осилил гугл и чужие исходники. Камрады подскажите чем расшифровать xml из клиента игры? Ну или ткните в тему где это описано) Если есть где-то исходники на 3-м python вообще идеально.

 

Зачем? - у меня есть батник которым перекрашиваю свой собственный пак иконок, все бы ничего, но он дергает кучу сторонней фигни, exe от архиватора, ccatlas, exe-макросы фотошопа, хочется привести это в порядок, да и заколебался его править под версию игры. Хочется чтобы скрипт дергал все нужные пути прямо из клиента игры.

Спасибо.

PjOrion - редактирование, компиляция, декомпиляция, обфускация модов (Версия: 1.3.5 Дата: 11.08.2019) - ActionScript & Python - Korean Random

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

@MoD @VLBRTN господа, PjOrion  это клево возможно даже в исходниках найду что мне нужно, но хотелось немного другого ответа. Я как раз хочу избавиться от вызова других exe-шников, чтобы не было таких зависимостей у скрипта. Все что делает скрипт можно переписать на python, вопрос у меня только в декодировании xml из клиента.

Edited by Red_Noise

Share this post


Link to post

Short link
Share on other sites

Эммм, ну тогда найди сорцы бигволда на просторах интернета, там есть волшебный файлик "file_formats" - там есть описание структуры, можно по нему парсер написать

альтернативно - сорцы wottools туть https://github.com/katzsmile/WoTModTools там есть исходники как оно парсит

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Пользуюсь инструментом командной строки

https://github.com/hedger/BWXML (соответственно, исходники открыты)

"BWXML

A tool for unpacking BigWorld compressed data sections to plain XML.

Also supports packing XML back to its compressed form."

BWXML v1.04 by hedger
Usage: bwxml.exe [options] list_of_files_or_directories
Allowed options:
  --help                     produce help message
  --pack                     pack files instead of unpacking
  --verbose                  print information about each file
  --selftest                 perform reversed operation on produced files
  --threads arg (=9)         sets the size of a worker pool. Default = 
                             n_cpu_cores + 1
  --input arg                input files/directories
  --output arg (=decrypted/) directory to output files

 

пример использования (распаковка ресурса engine_config.xml в произвольную папку vanilla):

md vanilla 2>nul
bwxml.exe    --i %wot_folder%\res\engine_config.xml    --o vanilla

 

Edited by beb
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

@SkepticalFoxспасибо, именно то что нужно.

 

@Mixaill@beb  до C не дошел, но может поможет следующим ищущим.

 

Так же спасибо всем неравнодушным, вопрос решен.

Edited by Red_Noise

Share this post


Link to post

Short link
Share on other sites

В продолжение, хотя может и немного оффтопно, случайно никто не знает какой-нибудь python библиотеки которая умеет сохранять в DDS? Что успел нагуглить - ImageMagic, но его как-то не хочется ставить только ради сохранения. Пока остановился на Pillow + blend-modes + nvtt_export.exe (NVIDIA Texture Tools), но мне не нравится костыль с subprocess.run и гемор в запуске на Linux если созрею куда-то выложить. Скорость не принципиальна, а если будет реализация на чистом python вообще отлично, еще и поучиться на коде смогу)))

Share this post


Link to post

Short link
Share on other sites
On 10/2/2021 at 1:18 AM, Red_Noise said:

ImageMagic, но его как-то не хочется ставить только ради сохранения.

А что там ставить? Из всего пакета достаточно извлечь и использовать только magick.exe, ну и identify.exe, если на каком то этапе потребуются расширенная информация о содержимом.

конвертация png в dds:

:: convert png to dds
magick test.png -define dds:compression=dxt1 test.dds

информаци о dds:

Setlocal EnableDelayedExpansion
:: identify dds
for %%d in (*.dds) do (
set dds=%%~nd
identify -verbose !dds!.dds > !dds!_dds_info.txt
)

вставка картинки png (insert.png) в полотно dds (input.dds) по заданным координатам xy (левого верхнего угла png относительно левого верхнего угла dds):

 

@echo off
setlocal enabledelayedexpansion
REM preparing dds canvas
magick input.dds -define dds:mipmaps=0 -define dds:compression=dxt1 composite.dds
REM composite by coordinates
set xy=100100 200200 300300
for %%c in (%xy%) do (set coo=%%c
set x=!coo:~0,3!
set y=!coo:~-3!
magick composite.dds insert.png -define dds:mipmaps=0 -define dds:compression=dxt1 -gravity NorthWest -geometry +!x!+!y! -composite composite.dds
)

 

Edited by beb

Share this post


Link to post

Short link
Share on other sites

@beb вообще я имел ввиду библиотеку Wand которая по сути биндинг к ImageMagick, просто переклинило написал так. А в вашем варианте для моей задачи абсолютно не важно будет это nvtt_export.exe или magick.exe. Мне библиотека нужна чтобы минимум писать на диск, из-за dds не получается полностью в памяти изображения обрабатывать, png можно налету прочитать из .pkg, обработать и уже готовый результат записать в .wotmod.

Edited by Red_Noise

Share this post


Link to post

Short link
Share on other sites

@Red_Noise вообще для dds есть не так много библиотек, я использую эту https://www.evl.uic.edu/cavern/fastdxt/

она супер быстрая и нужна для realtime сжатия текстур для virtual textures

есть даже публикация по сравнению скорости библиотек (dxt compression)

image.png.6c39e4d64f39ae8baab41564fcf95ed5.png

конечно для python я не видел библиотек, но что мешает написать обертку (или через ctypes работать)

для .NET я так и сделал - написал managed C++/CLI обертку над FastDXT

 

P.S. FastDXT не пишет header dds файла, надо его добавлять самому, но это тривиально

P.P.S. в windows еще есть такая тема:

Quote

Specifying the FILE_ATTRIBUTE_TEMPORARY attribute causes file systems to avoid writing data back to mass storage if sufficient cache memory is available, because an application deletes a temporary file after a handle is closed. In that case, the system can entirely avoid writing the data. Although it does not directly control data caching in the same way as the previously mentioned flags, the FILE_ATTRIBUTE_TEMPORARY attribute does tell the system to hold as much as possible in the system cache without writing and therefore may be of concern for certain applications.

так что я не думаю что создавать файл прямо какой-то супер медленный вариант

Edited by SkepticalFox
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
12.10.2021 в 20:56, SkepticalFox сказал:

конечно для python я не видел библиотек, но что мешает написать обертку (или через ctypes работать)

для .NET я так и сделал - написал managed C++/CLI обертку над FastDXT

 

Спасибо! Да я только начал на питоне писать, до этого не было опыта, только мелкие скрипты))) Но вообще хотелось попробовать написать обертку. Думаю будет следующим шагом. Сейчас пока в асинхронную часть вникаю, но это уже оффтоп)

Share this post


Link to post

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...