Jump to content
Korean Random

space.bin (CompiledSpace) - packer/unpacker


Recommended Posts

@Mixaill, спасибо!


Зачем усложнять?
Заголовки паковать через f.write() надо

т.е. паковать надо строку, а не строку байтов юникода? я немного запутался.

 

Жди, паковщик почти завершен.

Link to comment
Short link
Share on other sites

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

Класс CompiledSpace, имхо, плохая идея.

лучше просто написать метод.

1. проходим секции из space.bin (в шапке есть код)

2. берем у каждого заголовок

3. В методе создаем список из этих самых заголовков секций.

Важно! элементы списка должны быть записаны в том порядке, который был в space.bin!

4. проходим находим класс секции по заголовку из словаря типа 

{
...
'header':HEADER_Section
'BSMA':BSMA_Section
...
}
4. Все XXXX_Section - классы. обращаемся к атрибуту-функции get_data_from_stream(stream)

5. Создаем json-файлы

 

У меня это почти реализовано.

 

Держи.

json2space_py.zip

если заглянуть в json2space.py, увидишь список

sections=['bwtb',
      'bwst',
      'bwal',
      'bwcs',
      'bwsg',
      'bsgd',           #-
      'bwt2',
      'bsmi',
      'bsmo',
      'bsma',
      'sptr',
      'bwfr',
      'wgsd',
      'wtcp',
      'bwwa',
      'bwep',           #-
      'wgco',           #-
      'bwps',
      'cent',
      'udos',
      'wgde',           #-
      'bwlc',
      'wtau',
      'wtbl',           #-
      'wgsh']           #-
ну так вот. все секции с комментарием "#-" - не закончены. нужен реверс.

 

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

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

/0/

не знаю такого мемеса...

Не все так просто!

Т.е. класс CompiledSpace таки нужен?

Но у нас стоит задача написать распаковщик и запаковщик, зачем так усложнять код?

...

ПыСы ты хоть json2space_py.zip посмотри, я много чего переписал. Дело за малым - нужно переделать xxxx_section.py.

Link to comment
Short link
Share on other sites

Но у нас стоит задача написать распаковщик и запаковщик, зачем так усложнять код?

А где именно я усложняю код?

Хотя да. to_dict и from_dict стоит тоже в базовый класс вынести...

Но без наследования никак не обойтись.

Код будет раздуваться из-за повторяющихся методов.

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

почему бы нет?

потом в каком-нить текстдиффе искать отличия.

вроде модели ангаров не менялись... не помню уже.


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

есть ремоделлинг - танк со стеклом.

на стекло наложен шейдер lightonly_alpha.

после введения в игру разделения на dx9/dx11 в бою перестало нормально отображаться стекло. в ангаре и на реплеях всё нормально. грешу на шейдер.

не знаешь, с чем это связано?

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

не знаешь, с чем это связано?

Возможна защита от модов на прозрачность... Обсуждали же уже раньше https://koreanrandom.com/forum/topic/33967-/

 

Ключи строк в BWST у картохи упакованы вроде хеш-функцией FNV. Стоит проверить...

При создании упаковщика это нам понадобится...

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

@SkepticalFox, помнишь про распаковщик картохин?

он ведь берет dll из папки игры.

есть надежда на то, что dll-ки могут быть документированы в тырнетах. или могут быть декомпилированы, как библиотеки на C#.

Link to comment
Short link
Share on other sites

Удачи, найти то, чего там нет :heh:

По факту там есть все, но нужно уметь читать это.

Мы уже серьезно продвинулись в создании базового распаковщика.

Потом придется писать более сложный скрипт, чтобы эти сырые json-данные представить в виде более удобном для редактирования.

Сейчас важно, чтобы эти json/xml собрались в том же виде обратно в space.bin

Edited by SkepticalFox
  • Upvote 1
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...