Jump to content
Korean Random

Leaderboard

Popular Content

Showing content with the highest reputation on 01/30/2025 in all areas

  1. с дефолтным xvm с этим проблем нет. Дело в сторонних модах. ---- если что-то не работает, сразу проверяй с дефолтным xvm без других модов проверил -> с одним xvm бага нет -> устанавливай свой конфиг -> проверил, бага нет/или есть -> копай свой конфиг или устанавливай моды по одному. Так найдёшь виновника
    1 point
  2. Обновлены иконки для EU config 30.01.25 config RU без изменений
    1 point
  3. Нужно иконки перебрать, там эти Рэмбо без иконок стадами катаются.
    1 point
  4. Приветствую @SkepticalFox! Нужна помощь с фиксом под свежий клиент wotver: 1.32.0.4268 mapname: 07_lakeville unpackhd: True debug: True AssertionError: (80857036, 80879116, 'BSMI') Интересно узнать как зареверсить, чтобы в будущем помочь. Если я правильно понимаю, надо в экзешнике игры структуру соответствующую найти, пока не понял методу для этого действия. UPD: С этой разобрался, там оказалось проще. BSMI добавили поле структуры через нулевой разделитель: _fields_ = [ (list, 'transforms', '<16f'), (list, 'chunk_models', ChunkModel_v1_0_0), (list, 'visibility_masks', '<I'), (list, 'bsmo_models_id', '<2I'), (list, 'animations_id', '<i'), (list, 'model_animation', ModelAnimation_v1_16_1), (list, '6_40', '<10I'), (list, '7_4', '<I'), (list, '8_12', '<3I'), (list, '9_4', '<I'), # always 0 (list, '10_20', '<5f'), (int, '11_4', '<I'), (list, '12_4', '<I'), (int, '13_4', '<I'), # <- Added (list, '14_4', '<I'), # <- Added ] Но дальше каскадом идёт апдейт другой структуры BWLC. С этим сложнее, так как не знаю типов данных в структуре _fields_ = [ (list, 'pulse_light_list', PulseLight_v1_32_0_RU), # Previous _size_ = 100, New _size_ = 112 (list, 'pulse_spot_light_list', PulseSpotLight_v1_32_0_RU), # Previous _size_ = 104, New _size_ = 116 (list, 'frames', '<2f'), ] # <zipfile.ZipExtFile name='spaces/07_lakeville/space.bin' mode='r'> # print((i, repeat, struct_size, block_start, repeat * struct_size, block_start + repeat * struct_size)) # (0, 4, 112, 83563221, 448, 83563669) # (1, 0, 116, 83563677, 0, 83563677) # (2, 84, 8, 83563685, 672, 83564357) Есть гипотеза, что добавили по 3 поля длиной по 4 байта - float, int. Остальные не смотрел, но можно это легко сделать в качестве дебага переписать код для Base_JSON_Section @row_seek(True) def from_bin_stream(self, stream, row): stream.seek(row.position) self._data = {} i = 0 while True: if stream.tell() >= row.position + row.length: break struct_size, repeat = unpack('<2I', stream.read(8)) block_start = stream.tell() print((i, repeat, struct_size, block_start, repeat * struct_size, block_start + repeat * struct_size)) if struct_size > 0: if repeat > 0: data = stream.read(repeat * struct_size) self._data[f'field_{i}_raw'] = [data[i:i + struct_size] for i in range(0, repeat)] else: self._data[f'field_{i}_raw'] = [] else: # Грязный хак, пока не устаканим модельку. stream.seek(block_start - 4) self._data[f'field_{i}'] = repeat i += 1 UPD2: Имея офсеты удобно анализировать данные простым инструментом, имея значения сдвигов блоков со схожими структурами данных. xxd -s 80569988 -g 4 -d -l 4000 -c 64 space.bin Есть еще полезный инструмент для более качественного реверса - ImHEX, рекомендую.
    1 point
×
×
  • Create New...