Добавлен , опубликован
Сколько раз уже поднимался вопрос, о том, как добавить 100 иконок в карту. Казалось бы нет ничего проще, но постоянно возникают проблемы.
И я решил написать небольшую программу на Python'е.
import os
import mpq_files_operation

icons_folder_path = "C:/work/icons/"
map_path = "C:/work/my_map.w3x"

icons = os.listdir(icons_folder_path)
m = mpq_files_operation.MpqFile(map_path)
imp = m.open_file("war3map.imp")
n = int.from_bytes(imp[4:8], "little") + len(icons)
imp = imp[:4] + n.to_bytes(4, "little") + imp[8:]
for i in icons:
    new_file = open(icons_folder_path + i, "rb").read()

    if i[:3].upper() == "DIS":
        name = "ReplaceableTextures\CommandButtonsDisabled\\" + i
        imp += b"\x0D" + name.encode() + b"\x00"
        m.add_file(name, new_file)
    else:
        name = "ReplaceableTextures\CommandButtons\\" + i
        imp += b"\x0D" + name.encode() + b"\x00"
        m.add_file(name, new_file)

m.edit_file("war3map.imp", imp)
m.delete_file("(attributes)")

m.save_archive()

Нужно положить все иконки в папку, прописать её путь в переменную icons_folder_path; прописать путь к вашей карте в переменную map_path и запустить.
Дополнительные модули приложены
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
29
9 лет назад
2
А сразу писать в MPQ?
0
33
9 лет назад
0
и файлы сразу добавлять заодно
и не только иконки, а любой путь
2
6
9 лет назад
2
Добавление подобного функционала довольно-таки нетривиальная задача, но я посмотрю, что можно сделать.
0
29
9 лет назад
0
BaHeK, да ладно тебе, это же питон, там все делается в пару строчек :D
2
6
9 лет назад
2
alexprey, поэтому я уже все переделал и добавил добавление и редактирование файлов.
0
24
9 лет назад
0
Когда я себе такую утилиту делал, то у меня она просто рекурсивно обходила указанную папку и импортировала все вложенные файлы и папки с сохранением вложенности. Еще важно не забыть про то, что в карте может быть и обычный импорт - его нельзя ни терять ни дублировать.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.