Перейти к содержимому
Zone of Games Forum

Рекомендованные сообщения

Плагин для Total Commander для работы с архивами движка Unity.

[En] This plugin for Total Commander (ghisler.com) can pack and unpack files stored in Unity archives.

Это альтернатива для UnityAssetsExplorer от Haoose.

[En] This is alternative for standalone UnityAssetsExplorer from Haoose

Текущая версия / Current version: 0.7.5

Возможности / Capabilities:

Открытие архивов от Unity / Open archives +

Распакова файлов из архива / Unpack archives +

Запаковка файлов в архив / Pack archives +

Запаковка в архив файлов отличного размера, от оригинального / Support pack of different size +

Поддержка архивов > 2Gb / Support size of arhives > 2 Gb +

Конвертация форматов / Supported formats +- [assets, tex, uogm] (Неполная поддержка / Partial support)

Этот плагин находится в стадии экспериментальной разработки и теоретически способен повредить файлы архивов Unity, открываемые с помощью него,

уничтожить все данные на вашем компьютере, и взорвать нашу галактику.

И естественно, я, как автор, не несу ответственности за действия вызванные этим плагином.

License: Creative Commons Attribution 4.0 International Public License

https://www.dropbox.com/s/6955280opkej8om/unity_wcx.zip

В Total Commander войдите в архив с предложенным плагином и выполните вопросы программы установки плагинов Total Commander.

[En] Run Total commander and press Enter at archive unity_wcx.zip for install. Press Ok when he ask you. Now you can view, extract, pack assets like other archives in Total Commander.

Мы можете использовать Ctrl + PgDown для входа в архивы tex, uogm.

[En] You can use Ctrl + PgDown for exploring tex, uogm.

Изменено пользователем RedSkotina
  • Лайк (+1) 1

Поделиться сообщением


Ссылка на сообщение
Пока обнаружил пару ошибок в текстурах ARGB32 (hx5), вроде это tga, a у вас dds, ну это не суть важно, под dds всё заточено. В общем, при конвертации из tex, переворачиваться должны все 4 байтовые значения картинки, а в плагине старший перемещается на младший и 3 байта влево. От этого каналы неправильно идут. В проге от Haoose это уже поправлено. А обратная конвертация у этого типа совсем не работает даже равный размер, вставляется в файл начало самого ассета. При замене этих tex всё в порядке.

Если возможно можете описать структуру шапки tex файлов. Знаю только: длинна, ширина, размер текстуры, формат.

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

я не пойму что за hx5, может dxt5 ? хотя я с ним вообще порядок байтов не меняю.

из описание формата tex в внутреннем языке

# imagetype Pac = record {  global_header: GlobalHeader;  image_pixels: ImagePixels(global_header.bytes);  } &let{    extension: stdstring = ext.getExtension();    fullname: stdstring =  ext.fullname( ext.tex_filename, extension);} &byteorder=littleendian ;# header of main storagetype GlobalHeader = record {  width: uint32;  height: uint32;  image_size: uint32;  compression_type: uint32;  mipmap: uint8;  readable: uint8;  read_allow: uint8;  dummy: uint8;  image_count: uint32;  texture_dimension: uint32;  filter_mode: uint32; #0:point 1:bilinear 2:trilinear  anisotropy: uint32; # 0..9  mip_bias:uint32;  wrap_mode:uint32; #0:repeat 1:clamp  lightmap_format:uint32; # unity version > 3 , fileGen >= 8  colorspace_or_not: case prefetch < 2 of {    true  -> colorspace:uint32; #unity version > 3.5 #fileGen == 9    false -> none:empty;  } &requires(prefetch);  bytes: uint32;} &let {    file_size: uint32 = bytes + 14 * 4;    prefetch: uint32 withinput $context.flow.pacdata(sourcedata, offsetof(lightmap_format)+4, 4 );    # change to begin_of_data + offsetof} &exportsourcedata;#array of pixels    type ImagePixels(bytes: uint32) = record {pixels: bytestring &transient &length=bytes;} enum TEX_FORMAT{    TEX_FORMAT_A8       = 1,    TEX_FORMAT_ABGR4444 = 2,    TEX_FORMAT_BGR24    = 3,    TEX_FORMAT_ABGR32   = 4,    TEX_FORMAT_RGBA32   = 5,    TEX_FORMAT_BGR565   = 7,    TEX_FORMAT_DXT1     = 10,    TEX_FORMAT_DXT5     = 12,    TEX_FORMAT_BGRA4bpp = 13,    TEX_FORMAT_PVRTC_RGB2       = 30, # invalid byteorder    TEX_FORMAT_PVRTC_RGBA2      = 31,    TEX_FORMAT_PVRTC_RGB4       = 32,    TEX_FORMAT_PVRTC_RGBA4      = 33,    TEX_FORMAT_ETC_RGB4         = 34,    TEX_FORMAT_ATC_RGB4         = 35,    TEX_FORMAT_ATC_RGBA8        = 36};

 

record { } описывает фактические поля

& let {} виртуальные поля

я в теме выкладывал исходники, кстати.

Поделиться сообщением


Ссылка на сообщение

Да мене это уже не нужно, конвертер уже написал. Вот здесь хорошо видно. https://yadi.sk/d/OA3eZi-hezwdQ

Вот этот TEX_FORMAT_RGBA32 = 5, да ддс.

За код спасибо.

Поделиться сообщением


Ссылка на сообщение
Пока обнаружил пару ошибок в текстурах ARGB32 (hx5), вроде это tga, a у вас dds, ну это не суть важно, под dds всё заточено. В общем, при конвертации из tex, переворачиваться должны все 4 байтовые значения картинки, а в плагине старший перемещается на младший и 3 байта влево. От этого каналы неправильно идут. В проге от Haoose это уже поправлено. А обратная конвертация у этого типа совсем не работает даже равный размер, вставляется в файл начало самого ассета. При замене этих tex всё в порядке.

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

По распаковке подвела документация по tex, название RGBA32 не соответсвовало действительности -

BGRA32 более соответсвует действительности.

Так что строка

TEX_FORMAT_RGBA32   = 5,

имеет неправильное название

По запаковке чисто моя ошибка.

History:

*исправлен баг с распаковкой tex типа 5 в dds

*исправлен баг с запаковкой dds в tex

Внимание: для запаковки принимаются только dds файлы формата A4R4G4B4, A8R8G8B8, DXT5

поддержка других не выполнена.

Внимание: перешел на новый компилятор gcc-tdm 2, так что вполне вероятны какие-нибудь новые проблемы.

0.7.3

https://www.dropbox.com/s/zgu6h4hjup7o2ld/u..._0.7.3.zip?dl=0

0.7.3 debug

https://www.dropbox.com/s/3sn9q684utfcb8q/u....7.3-d.zip?dl=0

Изменено пользователем RedSkotina

Поделиться сообщением


Ссылка на сообщение

* ресурсы с типом 152 переименованы из ogm в uogm , для избежания путаницы.

так как представляют из себя контейнер для хранения ogm файлов

* добавлена начальная поддержка uogm

* исправлен баг с запаковкой tex файлов. не тестировалось тщательно.

* исправлен баг с сообщениями access violation во время открытия ассетов.

0.7.4 release

https://www.dropbox.com/s/enfmu4ons3mbyrc/u..._0.7.4.zip?dl=0

0.7.4 debug

https://www.dropbox.com/s/pvpj1xcae30kfw0/u....7.4-d.zip?dl=0

Поделиться сообщением


Ссылка на сообщение
* ресурсы с типом 152 переименованы из ogm в uogm , для избежания путаницы.

так как представляют из себя контейнер для хранения ogm файлов[/url]

Большое спасибо!

Поделиться сообщением


Ссылка на сообщение

* исправлена ошибка с обработкой последнего файла в архиве

* исправлена ошибка с извлечением ogm файлов в расширенном режиме

0.7.5 release

https://www.dropbox.com/s/zm14x48kxnv2cju/u..._0.7.5.zip?dl=0

0.7.5 debug

https://www.dropbox.com/s/8qyf1r5ugycktvx/u....7.5-d.zip?dl=0

Поделиться сообщением


Ссылка на сообщение
* исправлена ошибка с обработкой последнего файла в архиве

* исправлена ошибка с извлечением ogm файлов в расширенном режиме

0.7.5 release

https://www.dropbox.com/s/zm14x48kxnv2cju/u..._0.7.5.zip?dl=0

0.7.5 debug

https://www.dropbox.com/s/8qyf1r5ugycktvx/u....7.5-d.zip?dl=0

C ogm теперь проблем нет. Спасибо огромное!

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

 

RedSkotina текстуры и шрифты я всё равно через скрипт вытаскиваю и пакую на новых архивах. Меня сильно интересует запаковка бинарного текста как в предыдущих архивах, так как BMS реимпорт для этого не годится.

Поделиться сообщением


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

Получается что с Unity 5? очень ждем плагинчик. Предыдущие плагины здорово помогали в переводе, но сейчас часть игр идет на 5 версии движка.

Поделиться сообщением


Ссылка на сообщение

trpvla

Пока можешь поюзать софт в подписи ↓

Поделиться сообщением


Ссылка на сообщение
How can i edit the extracted font ? I tried import a new ttf font and it was crash.

Размер идентичен?

Новый .ttf должен равняться старому по размеру.

Если старый 1424009 байт, то новый обязан быть тоже 1424009 байт.

The file size is equal?

New .ttf must be = original .ttf.

If original size is 1424009 bytes, then new size must be 1424009 bytes too.

Или же попробуйте Unity Assets Explorer от Haoose. (http://quickbms.aluigi.org[/post]

math GUESS_NAMES = 1 # set to 0 to avoid possible rare problems

# or if you are sure that there are no names

quickbmsver "0.6.1d"

# from my tests:

# - all the mainData are nameless

# - only some *.assets are nameless

# I have not found a point where it's written if a resource is nameless or not

get FULL_NAME filename

if FULL_NAME == "mainData"

math GUESS_NAMES = 0

endif

get EXT extension

if EXT == "unity3d"

print "Error: you must use the unity3d_webplayer.bms script for this archive"

cleanexit

elif EXT == "split0"

callfunction combine_splits 1

open FDSE BNAME

endif

endian big

get HEADER_SIZE long

get FULL_SIZE long

get VERSION long

get BASE_OFF long

math ZERO_GUESS = 0

if VERSION <= 8

xmath OFFSET "FULL_SIZE - HEADER_SIZE"

goto OFFSET

get DUMMY byte

else

# version 9 tested

get ZERO_GUESS long

endif

endian little

endian guess ZERO_GUESS

if VERSION >= 8

get VERSION_STRING string

print "%VERSION_STRING%"

get DUMMY long

endif

if VERSION >= 0xe

get ZERO byte

get BASES long

for i = 0 < BASES

get DUMMY signed_long

if DUMMY < 0

getdstring DUMMY 0x20

else

getdstring DUMMY 0x10

endif

next i

else

get BASES long

for BASE = 0 < BASES

get DUMMY long

math SUB_ELEMENTS = 1

callfunction PARSE_TYPES

next BASE

endif

math ADDITIONAL_FIELD = 0

if VERSION >= 7

if VERSION < 0xe

get ADDITIONAL_FIELD long

endif

endif

get FILES long

if VERSION >= 0xe

padding 4

endif

for i = 0 < FILES

if VERSION >= 0xe

get INDEX long

get ZERO long

get OFFSET long

get SIZE long

get TYPE long

get XTYPE short # same as TYPE

get DUMMY short # -1

if VERSION >= 0xf

get ZERO long

endif

else

get INDEX long

if ADDITIONAL_FIELD != 0

get ZERO long

endif

get OFFSET long

get SIZE long

get TYPE long

get XTYPE long # same as TYPE

endif

savepos TMP_OFF

xmath OFFSET_TMP "OFFSET + BASE_OFF"

goto OFFSET_TMP

math GET_FILENAMES = 0

if GUESS_NAMES != 0

get NAMESZ long

if NAMESZ u< 128

getdstring NAME NAMESZ

strlen TMP NAME

if TMP == NAMESZ

math GET_FILENAMES = 1

endif

endif

goto OFFSET_TMP

endif

set NAME string ""

if GET_FILENAMES != 0

get NAMESZ long

getdstring NAME NAMESZ

padding 4

endif

savepos OFFSET

goto TMP_OFF

xmath TMP "SIZE - (OFFSET - OFFSET_TMP)"

if TMP < 0

math OFFSET = OFFSET_TMP

else

math SIZE = TMP

endif

get BNAME basename

getvarchr TMP NAME 0

if TMP <= 0x20

string NAME p= "%s_%d" BNAME i

endif

callfunction disttype 1

string FNAME p= "TYPE_%d/%s%s" TYPE NAME EXT

log FNAME OFFSET SIZE

next i

startfunction PARSE_TYPES

math ELEMENTS = SUB_ELEMENTS

for ELEMENT = 0 < ELEMENTS

get TYPE string

get NAME string

get SIZE long

get INDEX long

get ZERO long

get DUMMY long

get DUMMY long

get SUB_ELEMENTS long

if SUB_ELEMENTS != 0

callfunction PARSE_TYPES

endif

next ELEMENT

endfunction

startfunction disttype

savepos disttype_offset # backup offset

goto OFFSET # maybe useful

string EXT p= ".%d" TYPE

if TYPE == 21

set EXT ".mat"

elif TYPE == 28

set EXT ".tex"

elif TYPE == 48

set EXT ".shader"

elif TYPE == 49

get DUMMY long

getDstring TEST 4

if TEST == "<?xm"

math OFFSET += 4

math SIZE -= 4

set EXT ".xml"

endif

elif TYPE == 74

set EXT ".ani"

elif TYPE == 83

set EXT ".snd"

math OFFSET += 0x14

math SIZE -= 0x14

goto OFFSET

getDstring TEMP 4

if TEMP == "OggS"

set EXT ".ogg"

elif TEMP == "RIFF"

set EXT ".wav"

elif TEMP == "FORM"

set EXT ".aif"

else

goto OFFSET

get TEMP byte

if TEMP == 0xff

set EXT ".mp3"

elif TEMP == 0x49

goto OFFSET

getDstring TEMP 3

if TEMP == "ID3"

set EXT ".mp3"

else

math OFFSET -= 0x14

math SIZE += 0x14

endif

else # roll back changes

math OFFSET -= 0x14

math SIZE += 0x14

endif

endif

elif TYPE == 115

set EXT ".script"

elif TYPE == 128

set EXT ".ttf"

elif TYPE == 150

set EXT ".bin"

elif TYPE == 152

math OFFSET += 0x10

math SIZE -= 0x10

set EXT ".ogm"

elif TYPE == 156

set EXT ".ter"

elif TYPE == 184

set EXT ".sbam"

elif TYPE == 194

set EXT ".tes"

endif

goto disttype_offset

endfunction

startfunction combine_splits

get BNAME basename

append

for i = 0

string ONAME p= "%s.split%d" BNAME i

open FDSE ONAME 0 EXIST

if EXIST == 0

break

endif

get SIZE asize

log MEMORY_FILE 0 SIZE

next i

append

get SIZE asize MEMORY_FILE

log BNAME 0 SIZE MEMORY_FILE

endfunction

После этого создайте 2 .bat файла. И добавьте туда содержимое из под спойлеров.

Create 2 .bat files.

 

Spoiler

Unpack.bat

@echo off

color a

md Unpack

for %%a in (*.assets) do quickbms.exe -o assets_files.bms "%%a" Unpack\

pause

Pack.bat

@echo off

color a

for %%a in (*.assets) DO quickbms.exe -w -r assets_files.bms "%%a" Unpack\

pause

Поместите .assets файл в директорию с QuickBms (с двумя .bat файлами и файлом assets_files.bms)

Откройте unpack.bat

После этого достаньте шрифт из unpack/type_128 и прошейте в него кириллицу.

Put .assets file into QuickBMS dir (with 2 .bat and assets_files.bms).

Then open unpack.bat.

After that, get the font from unpack/type_128 and make a new font.

Важно!

Новый .ttf должен равняться старому по размеру.

Если старый 1424009 байт, то новый обязан быть тоже 1424009 байт.

Для BMS это особенно важно.

Important!

New .ttf must be = original .ttf.

If original size is 1424009 bytes, then new size must be 1424009 bytes too.

For BMS this is especially critical.

После этого откройте pack.bat и ваш .assets файл готов.

After that, open pack.bat and .assets file with new font is ready.

Изменено пользователем 0wn3df1x

Поделиться сообщением


Ссылка на сообщение
The file size is equal?

New .ttf must be = original .ttf.

If original size is 1424009 bytes, then new size must be 1424009 bytes too.

Also try to use Unity Assets Explorer by Haoose. (https://www.dropbox.com/s/2qorsfd50ixvn6o/UnityAssetsExplorer.exe)

OR

QuickBMS by Aluigi.

Download Quick BMS and create file assets_files.bms

Then, past the script in this file.

 

Spoiler

Create 2 .bat files.

 

Spoiler

Unpack.bat

Pack.bat

Put .assets file into QuickBMS dir (with 2 .bat and assets_files.bms).

Then open unpack.bat.

After that, get the font from unpack/type_128 and make a new font.

Important!

For BMS this is especially critical.

After that, open pack.bat and .assets file with new font is ready.

i knew, but some games using very small font (~50KB) and i can't mod it smaller than orginal. Do you have other ways?

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас популярно

    • 19 816
  • Продвигаемые темы

  • Последние сообщения

    • Да там ГГ-жиробасик этой ядерколой отхиливался как с добрым утром. На вид то может и ниче так. А вот звук при движении — как будто полупустая консервная банка громыхает.
    • @0wn3df1x Спс, за объяснение, всё чётко описал.
    • Да, похоже что добавлено некоторое количество нового текста
    •   https://wtftime.ru/articles/143386/lords-of-the-fallen-poluchila-patch-15-s-modifikatorami-menjajuschimi-gejmplej/
    • Объясняю изменения по возврату средств изнутри.
      Изменения касаются только предзаказов. Ранее документация предусматривала: ВОЗВРАТ СРЕДСТВ ЗА ПРЕДЗАКАЗЫ Если вы оформили предзаказ на товар в Steam и оплатили его стоимость, вы сможете запросить возврат в любой момент, пока товар еще не вышел. Стандартные правила возврата (14 дней/2 часа) вступят в действие, как только состоится релиз. Сейчас документация предусматривает: ВОЗВРАТ СРЕДСТВ ЗА ИГРЫ, ПРИОБРЕТЁННЫЕ ДО ИХ ОФИЦИАЛЬНОЙ ДАТЫ ВЫХОДА Как правило, если вы приобретаете игру в Steam до её официальной даты выхода, для возврата средств будут действовать правила двухчасового лимита игрового времени, однако 14-дневный период для возврата средств начнётся только после официальной даты выхода. Вместе с этим было введено понятие “расширенный доступ”, согласно документации: Расширенный доступ — функция, которая позволяет игрокам, купившим игру по предзаказу, сыграть в неё до официального выхода. Например, такую функцию могут включать делюкс-издания, продаваемые по предзаказу. А теперь объясняю простыми словами:
      Раньше была юридическая прореха: у игр, продающихся по предзаказу, не было прописанного двухчасового лимита пользования, ограничивающего запрос на возврат средств. Действовало только правило “до официального выпуска игры деньги можно вернуть в любой момент. После выпуска игры начинает действовать стандартное правило 14 дней и 2-х часов”.  Таким образом, когда разработчики продавали какое-нибудь издание за 5000 рублей, позволяющее играть за месяц или несколько недель до выхода игры, люди могли купить это издание, пройти игру хоть 5 раз подряд, наиграть 200 часов, а затем, воспользовавшись юридической дырой и вернуть свои 5000 рублей.  Естественно, это было злоупотреблением системой возвратов, поскольку, как указывается в документах: Возможность делать возвраты была добавлена, чтобы при покупке продуктов в Steam вы ничем не рисковали. Это ни в коем случае не способ бесплатно пользоваться играми. Если у нас возникнут подозрения, что вы злоупотребляете этой системой, мы можем отменить возможность возврата для вашего аккаунта. Но, благодаря прорехе в документах, эти возвраты были возможны. Теперь прореха была устранена.

      Если вы купите дорогое издание, открывающее доступ до выхода игры, и наиграете в нём больше двух часов — вы не сможете вернуть деньги за предварительный заказ. Но если вы купите и не будете играть, то, как и раньше, будет действовать правило возврата “в течение 14 дней после выхода”.
    • и халявные выходные тоже сюда.
    • А, да. Вы правы. 
    • А белорусы у нас истина? Мне, как фанату все эти условности очень зашли. С силовой тож не увидел проблем — в большинстве случаев ей управлял тот, кто ее тока на картинках видел. Плюс очень круто было показано, что силовая — это не решение всех проблем, ей действительно надо уметь пользоваться и у нее есть слабые места. Так что все эти моменты 50/50 с какой точки зрения смотреть — как и положительно можно рассматривать так и отрицательно — на свой вкус. У меня эти моменты негатива не вызывали)
    • Даже белорусы отметили, что в сериале переборьщили с показом игровых условностей из игр, которые смотрятся в играх Фалаут  вполне себе органично и естественно, а вот в достаточно реалистичном сериале, например лечение ранений и использование стимпака, уже выглядят сильно диковато и совершенно не  естественно и не реалистично, особенно для мало знакомых с играми серии зрителей! Кстати вроде бы в фанатском сериале “Fallout: Nuka Break” я не помню такой же пуйни с лечением(но это не точно)... Ну и так сильно опустить, культовую Силовую Броню Братства Стали, это  тоже надо было уметь, так насрать в душу игорькам...
    • Я так понял, это не про ранний доступ в Стим. А про доступ за 3-5 дней до релиза за покупку супер-пупер издания за 100+ долларов. 
  • Изменения статусов

  • Лучшие авторы


Zone of Games © 2003–2024 | Реклама на сайте.

×