Добавлен prog,
опубликован
Краткие сведения
Для игры: Warcraft 3
Тип: Утилита
Сфера применения: работа с данными РО, базы данных
Требования: JNGP, Java 7, руки, мозг
Статус: в разработке
Автор: prog
Тип: Утилита
Сфера применения: работа с данными РО, базы данных
Требования: JNGP, Java 7, руки, мозг
Статус: в разработке
Автор: prog
Данная утилита интегрируется в JNGP экспериментальной сборки и затем при каждом сохранении карты автоматически делает свое грязное дело, а именно собирает данные по всем объектам в РО и использует их для заполнения шаблонов в текстовых описаниях и коде карты.
В частности, эта утилита может быть использована как мощный препроцессор описаний в Редакторе Объектов. А также, как инструмент для автоматической генерации баз данных по объектам в jass-коде.
Общая информация
Принцип работы
Работу утилиты можно условно разделить на четыре этапа:
- подготовка данных
- считывание и анализ данных
- подстановка данных
- упаковка результатов
Первый и последний пункты возложены на плечи других составляющих JNGP и представляют из себя всего-навсего извлечение из архива карты нужных файлов и помещение измененных файлов обратно в архив карты.
Считывание и анализ данных это расшифровка формата данных об объектах Warcraft 3 и размещение этих данных в памяти утилиты. На этом этапе также происходит категоризация объектов.
А вот подстановка данных представляет из себя достаточно занятный процесс - ранее извлеченные файлы с кодом и строками карты передаются в качестве шаблонов библиотеке FreeMarker, которая и отвечает за всю эту магию.
Ограничения
- Утилита рассчитана на предоставление ей всех нужных файлов в готовом виде и не занимается их извлечением или обратной упаковкой, поэтому использование ее вне JNGP требует написания обертки, выполняющей все операции с архивом карты.
- Утилита разрабатывалась без учета возможности работы с кампаниями и не может должным образом функционировать в такой среде.
- На данный момент утилита адекватно работает только с шаблонами в коде карты, шаблоны в текстовых строках теряются при сохранении, поэтому импорт обработанного файла строк был временно отключен, но его можно импортировать вручную или снять комментарий со строк импорта файла строк в Fly.lua и перезапустить WE.
- На данный момент отсутствует визуализация процесса обработки данных утилитой.
- На данный момент нет никакой возможности настроить либо отключить утилиту через меню.
- На данный момент не гарантируется сохранность данных при использовании утилиты.
- На данный момент утилите доступны только значения полей, которые отличаются от стандартных.
- Множество других недоработок
Установка
Подробное описание процедуры установки содержится в руководстве пользователя в соответствующем разделе.
Ссылки
Скачать Java 7
Для нужд обычного пользователя, не занимающегося разработкой на Java с головой хватит JRE.
Для нужд обычного пользователя, не занимающегося разработкой на Java с головой хватит JRE.
Благодарности
ScorpioT1000 - за активное участие в обсуждении и помощь с извлечением файлов из архива карты.
Doc - за идею завернуть .jar в .exe для удобства.
Doc - за идею завернуть .jar в .exe для удобства.
А также всем, благодаря кому стала доступной спецификация файлов из архива карты:
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
При открытии карты в редакторе, wehack.lua запустит твою прогу, которая заменит war3map.wts на war3mapSource.wts.
При сохранении карты, твоя прога копирует war3map.wts в сурс, а сам файл компиляет в готовый результат.
Никаких карт не надо.
Если бы я нашел как это сделать, то все было бы реализовано именно так еще в первой версии утилиты, вот только ничего применимого кроме открытия редактора, сохранения карты и работы с меню я пока не нашел, даже в коде гриморы копался, нет там такого события.
и выложить новый jngp...
Вру, есть ссылка на svn
Могу даже сказать что интересует нас скорее всего wehack.cpp, функция DllMain, а именно та часть где объявляются хуки на функции. Ну и, конечно, нужно продебажить ВЕ чтобы выяснить на какую функцию вешать хук.