Pavel3333 1,148 #385311 Posted April 6, 2017 @Mixaill, спасибо! Зачем усложнять?Заголовки паковать через f.write() надо т.е. паковать надо строку, а не строку байтов юникода? я немного запутался. Жди, паковщик почти завершен. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385343 Posted April 6, 2017 Жди, паковщик почти завершен.А распаковщик нет) До сих пор не понимаю, как лучше все организовать... Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #385349 Posted April 6, 2017 (edited) До сих пор не понимаю, как лучше все организовать...Класс 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 April 6, 2017 by Pavel3333 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385364 Posted April 6, 2017 /0/ Не все так просто! Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #385375 Posted April 7, 2017 /0/не знаю такого мемеса...Не все так просто!Т.е. класс CompiledSpace таки нужен?Но у нас стоит задача написать распаковщик и запаковщик, зачем так усложнять код? ... ПыСы ты хоть json2space_py.zip посмотри, я много чего переписал. Дело за малым - нужно переделать xxxx_section.py. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385380 Posted April 7, 2017 (edited) Но у нас стоит задача написать распаковщик и запаковщик, зачем так усложнять код?А где именно я усложняю код? Хотя да. to_dict и from_dict стоит тоже в базовый класс вынести... Но без наследования никак не обойтись. Код будет раздуваться из-за повторяющихся методов. Edited April 7, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #385395 Posted April 7, 2017 Но без наследования никак не обойтись. Ок, тогда сейчас внесу наработки в class DecompiledSpace: ... Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385406 Posted April 7, 2017 (edited) @Pavel3333, эм... Сейчас нужно скорее секции разбирать... Я сейчас занимаюсь удалением дублирования в файлах. Edited April 7, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #385407 Posted April 7, 2017 Ладно) с BSWG примусь к разбору. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385411 Posted April 7, 2017 @Pavel3333, я залил почищенный код и добавил в некоторые классы паковку пустых секций. Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #385412 Posted April 7, 2017 угу, понял. а я пока над bswg карпею, вроде кое-что в kaitai написал, но это не полностью. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385455 Posted April 8, 2017 @Pavel3333, я вот уже давно думаю, что стоит скачать клиент 0.9.12 и искать сходства с 0.9.10... Это самый разумный вариант, но я его еще даже не попробовал) Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #385457 Posted April 8, 2017 (edited) почему бы нет? потом в каком-нить текстдиффе искать отличия. вроде модели ангаров не менялись... не помню уже. меня попросили разобраться кое в чем. подскажи, пожалуйста. есть ремоделлинг - танк со стеклом. на стекло наложен шейдер lightonly_alpha. после введения в игру разделения на dx9/dx11 в бою перестало нормально отображаться стекло. в ангаре и на реплеях всё нормально. грешу на шейдер. не знаешь, с чем это связано? Edited April 8, 2017 by Pavel3333 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385458 Posted April 8, 2017 (edited) не знаешь, с чем это связано?Возможна защита от модов на прозрачность... Обсуждали же уже раньше https://koreanrandom.com/forum/topic/33967-/ Ключи строк в BWST у картохи упакованы вроде хеш-функцией FNV. Стоит проверить... При создании упаковщика это нам понадобится... Edited April 8, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #385459 Posted April 8, 2017 @SkepticalFox, помнишь про распаковщик картохин? он ведь берет dll из папки игры. есть надежда на то, что dll-ки могут быть документированы в тырнетах. или могут быть декомпилированы, как библиотеки на C#. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #385460 Posted April 8, 2017 есть надежда на то, что dll-ки могут быть документированы в тырнетах. или могут быть декомпилированы, как библиотеки на C#. 1 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385461 Posted April 8, 2017 @StranikS_Scan, IDA в руки и вперед) Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #385462 Posted April 8, 2017 @StranikS_Scan, IDA в руки и вперед) Удачи, найти то, чего там нет Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385463 Posted April 8, 2017 (edited) Удачи, найти то, чего там нет По факту там есть все, но нужно уметь читать это. Мы уже серьезно продвинулись в создании базового распаковщика. Потом придется писать более сложный скрипт, чтобы эти сырые json-данные представить в виде более удобном для редактирования. Сейчас важно, чтобы эти json/xml собрались в том же виде обратно в space.bin Edited April 8, 2017 by SkepticalFox 1 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #385501 Posted April 9, 2017 (edited) . Edited November 2, 2019 by SkepticalFox 1 Quote Share this post Link to post Short link Share on other sites