Интересует, по какому принципу производится удаления\восстановления поврежденных частей карты
Принятый ответ
Чтобы понимать процесс восстановления карты - нужно понимать процесс оптимизации карты
Вот процесс оптимизации/защиты карты:
Файлы редактора
В MPQ архиве карты есть файлы которые используются только редактором и при сохранении карты редактор записывает код из некоторых файлов в war3map.j
Файлы, которые удаляются оптимизаторами:
Файлы, которые удаляются оптимизаторами:
- war3mapUnits.doo (расположение созданных в WE юнитов на карте)
- war3map.wtg (код из редактора триггеров)
- war3map.wct (код из редактора триггеров)
- war3map.imp (информация о импорте в карте, редактору он нужен чтобы работать с импортированными файлами, варкрафт war3map.imp не использует)
Оптимизация скрипта
Скрипт карты оптимизируется так:
- Удаляются комментарии в скрипте и ненужные пробелы
2. Сокращаются названия функций и переменных
До:
function MyFunction takes nothing returns integer
local integer MyInteger = 2+2
return MyInteger
endfunction
После:
function a takes nothing returns integer
local integer A = 2+2
return A
endfunction
- Все действия функций инициализации объектов карты переносятся в функцию main
Всё это в сумме уменьшает время "загрузки/проверки скрипта" ВМ JASS'а (к примеру: при нажатии на саму карту в списке карт - до оптимизации будет лаг, а после оптимизации он будет значительно меньше) и уменьшает вес самой карты благодаря уменьшению количества символов в war3map.j (см. первый, второй и третий пункты)
И создает эффект "защиты" карты, т.к после обфускации - со скриптом достаточно сложно работать из за "отсутствия" названий функций и переменных
Архив карты
Это способы "защиты" карты, которые не относятся к оптимизации:
- Удаление файла (listfile), он содержит названия файлов в карте ((listfile) варкрафтом не используется)
- Манипуляции с заголовком архива карты
Оптимизация объектов
Объекты в данном случае - это предметы, юниты, способности и т.д
Редактор карт работает с объектными файлами типа war3map.w3a, war3map.w3u и т.д
А варкрафт может ещё работать с SLK таблицами
Редактор с SLK таблицами работать не может, но если они будут находиться в папке варкрафта, то вполне будет читать их (такой способ подходит только для изучения карты)
Вся суть оптимизации состоит в том, чтобы конвертировать объектные файлы в SLK таблицы
Т.к SLK таблицы намного быстрее читаются варкрафтом, то карта будет заметно быстрее грузиться (но и весят SLK таблицы немного больше объектных файлов)
Редактор карт работает с объектными файлами типа war3map.w3a, war3map.w3u и т.д
А варкрафт может ещё работать с SLK таблицами
Редактор с SLK таблицами работать не может, но если они будут находиться в папке варкрафта, то вполне будет читать их (такой способ подходит только для изучения карты)
Вся суть оптимизации состоит в том, чтобы конвертировать объектные файлы в SLK таблицы
Т.к SLK таблицы намного быстрее читаются варкрафтом, то карта будет заметно быстрее грузиться (но и весят SLK таблицы немного больше объектных файлов)
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Код до состояния исходников восстановить практически невозможно, кроме явно гуишных триггеров. Разумеется коментарии и описание работы систем вы тоже чудесным образом не восстановите изучая код можно сделать выводы о наличии тех или иных распространенных наработок. Кароче все делается руками и требует наличие немалого опыта.
Отредактирован pAxsIs
pAxsIs:
Отредактирован Hodor
Процесс ручного минимального восстановления карты (годится только для изучения карты, используя редактор JNGP):
Этот метод рассчитан только для восстановления после тул векса
С блока 04 до блока 07 будет записано "56 78 4F 50" ("VxOP") - всё это нужно обнулить, в итоге получится "00 00 00 00"
После этого нужно вставить полученный листфайл в карту
Прямого способа вставить листфайл в карту я не нашел, но есть один рабочий вариант:
Путь к карте или MPQ редактору не должен содержать кириллицу
Открываем карту с помощью MPQ редактора и при открытии используем ранее полученный листфайл
Далее делаем что нибудь в карте, к примеру: можно вытащить war3map.j из папки Scripts и после этого просто закрыть MPQ редактор
Или вместо war3map.j можно добавить файлы из третьего пункта, если они заранее были
Далее, используя MPQ редактор - нужно вытащить war3map.w3i и war3mapUnits.doo и вставить/заменить их в восстанавливаемую карту
Вытаскиваем из карты папку Units и сохраняем её куда нибудь
Далее создаем копию карты, открываем в редакторе и сохраняем, после этого - через MPQ редактор вставляем в только что сохраненную карту папку Units
Кидаем копию карты в папку "Silk Object 3"
В конфиге программы указываем имя копии карты (без пути и с w3x)
Так же в конфиге ставим в EXPORT_OBJECT_DATA единицу и сохраняем конфиг, далее запускаем программу и ждем
Потом из папки OUT берем эти файлы и вставляем/заменяем в карту ДО копирования, так же удаляем все файлы из папки Units, не трогая папки в папке Units:
чуть ошибся, в блоках с 04 до 07 нужно вместо обнуления написать "20 00 00 00"
и war3map.w3r это области