Добавлен , опубликован

W3A Remover

This tool allows you to convert .w3a files to .json and vice versa, as well as remove specific ability data from .json files based on various filters.
Parent ability data (ability-data.slk) from patch 1.26a.

Usage

To convert .w3a to .json

npm run convert <input_w3a> [output_json]

Example

npm run convert war3map.w3a war3map.json

To convert .json to .w3a

npm run convert <input_json> [output_w3a]

Example

npm run convert war3map.json war3map.w3a

To remove ability data by filters

npm run remove <input_json> <output_json> [--rawcodes <rawcode_list>] [--id x] [--value x] [--lookup-parent]

Filters

  • --rawcodes <rawcode_list>: Path to the file with rawcodes to filter.
  • --id <id>: Filter by id. Allowed types see in meta-data-dict.ts.
  • --value <value>: Filter by value.
  • --lookup-parent: Lookup parent ability if filters do not match (.w3a contains only modified data).

Rawcodes File Format

The rawcodes file should contain one rawcode per line. Example:
A001
A003
A005
A00F
A03K
...

Example

The command below will delete all the abilities that match rawcodes in rawcodes.txt, which belong to the orc race. If an ability doesn't have modified data for race, then it will look for the race in the parent ability.
bash:
npm run remove -- war3map.json war3map-filtered.json --rawcodes rawcodes.txt --id arac --value orc --lookup-parent
powershell:
npm run remove -- .\war3map.json .\war3map-removed.json -- --rawcodes rawcodes.txt --id arac --value orc --lookup-parent

Installation

Prerequisites

Node.js

Ensure you have Node.js installed.

Git (optional)

If you want to clone the repository, you will need to have Git on your system.

Step 1. Clone or download the repository.

Open terminal and run this command. Or download repo manually.
git clone https://github.com/WarRaft/W3A-Remover

Step 2. Navigate to the repo directory

cd W3A-Remover

Step 3. Install Dependencies

Run the following command to install all necessary packages.
npm install
`
ОЖИДАНИЕ РЕКЛАМЫ...
2 комментария удалено
14
вот это по моей части... получается это чистильщик w3a, крайне узкой направленности
я пошел дальше и сделал поддержку регулярок, где обработчик принимает все паттерны и поддерживает переменные, которые вытягиваются из .env, однако выполнено на laravel
в моем случае я занимаюсь обработкой wts файла: от технических тегов "[имя] Текст", заключенных в квадратные скобки от начала строки, а также в карте есть переменная :map_name, которая вставляется из .env файла
Подобным инструментам не хватает более понятной оболочки, некого редактора карт или сопутствующего инструмента для редактора карт на основе разработки war2json WC3MapTranslator
мне только не хватает выборки из *data.slk, но на основе Reforged, а в идеале динамически из игры на основе текущего патча, чтобы данные были актуальны...
Ответы (9)
30
AMark, всё это добро по задумке должно заехать в плагин, но коль уже сделали узконаправленный софт, то почему бы и не выложить.
20
AMark, Да, ты совершенно прав, утилита узконаправленная и делалась для решения моей локальной задачи. Ты можете заменить .slk на тот что тебе нужен. Если возникнут проблемы с этим, то можешь обратиться. В будущем проект возможно расширится до чего-то гибкого и нужного. Но мб и нет.
20
AMark, у меня в планах написать ридер .w3x, который будет заливать выборочную информацию в бд. Хочу трекать изменения для героев, способностей и предметов и заливать на сайт автоматически. Мб шизанутая идея, но пока работал на этой тулзой, то понял, что это довольно легко.
14
nazarpunk, выкладывать на всеобщее обозрение смысла нет... один деплой сожрет тонну нервов у обычного юзера
для проекта публиковал... это краеугольный камень моего проекта, бесконечное горизонтальное масштабирование
заполнение файлов карт из родительского проекта, индивидуальный набор моделей для каждой карты, чистка wts, замена переменных на данные из .env, и переключение глобальной переменной карты в .j файле
последние эксперименты касались построения всех нестандартных данных в таблицу на основе json файлов карты, все соединил, кроме slk таблиц игры (это для Reforged, есть отличия от 1.26)
14
KaneThaumaturge, вот! у меня такая же идея только нужные данные для сборки своей вики. У меня специфика еще в дерево объединить нужно... пока еще не решенная задача
30
выкладывать на всеобщее обозрение смысла нет... один деплой сожрет тонну нервов у обычного юзера
Кого волнуют обычные юзеры? Обычные юзеры сидят в РО и копипастят.
Доведённая до ума узконаправленная тулза может сэкономить тонну времени создателям другой тулзы. И посему если она доведена до вменяемого состояния, то почему и не опубликовать?
20
AMark, Можем объединить услилия если хочешь. Думаю будет полезно. Тем более у меня тоже сайт на laravel.
14
nazarpunk, да я бы с радостью... но ничего революционного у меня нет... =( просто копи-пасты, и регулярки с настройками...
14
KaneThaumaturge, я только на рефорджед делаю... уже есть специфика, часть данных близзы в war3mapSkin перекинули, в том числе имена юнитов... зачем сделали - непонятно, будто готовились реализовывать War Chest скины как в SC2 для всех стандартных рас
Движок по обработке файлов у меня на Ларавел (отдельный функционал можно из пыхи под node js вычленить), на выходе я просто для github pages хочу json генерировать для заполнения данных
Ответы (10)
20
LastUchiha, ну можно было конвертацию под капот спрятать, но я решил что в так лучше будет
20
LastUchiha, Мб кому-то просто конвертировать нужно будет. Потому что когда я искал тулзов в один клик не было рабочих
15
KaneThaumaturge, это понятно, но какая главная цель конвертации? Что оно даст? Ведь просто так по приколу эту тулзу бы не сделал.
14
LastUchiha, работа с данными напрямую в JSON позволяет конвертировать все файлы карты и кампании в обоих направлениях. Это даёт возможность работать с живыми данными без редактора: добавлять, удалять и редактировать записи.
На данный момент у меня уже есть примитивная таблица сравнительных характеристик юнитов, разбитая на группы. Это значительно упрощает работу с балансом и анализ данных. Такой подход открывает массу возможностей: автоматизированный сбор данных для вики, создание нового редактора карт или разработка собственного инструментария на его основе.
Конкретно данное решение очищает w3a-файл. Я использую как чистку wts от технических тегов. Хотя wts можно читать напрямую, его структура оставляет желать лучшего, а в JSON формате ключи и значения выделяются чётко и удобно.
Применений масса! Жаль, что времени не хватает…
16
LastUchiha, JSON очень просто сериализуется\десериализуется, это уже стандарт де факто во всех языках. И это логичнее, чем городить еще один формат
14
Ydav, если честно, при работе .w3* файлами было бы круто работать напрямую с файлом, чтобы избегать промежуточной конвертации war2json -> json2war, но это как бы уже мысли вслух... еще плохо с форматом получаемого json, есть деление на данные которые используются для переопределения дефолтных данных, и новые данные основанные на дефолтных.
Я хотел JSON в БД перегонять типа MySQL... но каждая работа с редактором карт влекет за собой перезапуск синхронизации данных: снова парсинг w3* файла в JSON, перегонка в БД, вероятно чтобы не париться с тонной проверок, дропать БД и заполнять по новой... что крайне ужасное решение...
А если оставить JSON то как с ним работать с ним как с БД? Проблема JSON что мы целиком извлекаем из него все строки, и целиком записываем данные независимо менялись они или нет, а я хотел бы по id находить запись и менять 1-2 параметра... Может есть идеи у кого? (кажется я соорудил решение, опять же на пыхе, костыльное... гоняет json в массив и назад целиком, локально крутится быстро, 6к строк)
14
KaneThaumaturge, w3a remover точно нужно масштабировать до импровизированнных таблиц БД на json-ах
  1. Сделать вьюшку
  2. Сделать CRUD
  3. ну и цель конечно: вытягивание опред значений по айдишникам и с фильтрами в новый облегченный json для загрузки в Вики
Получится этакий комбайн по работе с табличными данными карты. Для разработки карты с 0 будет не очень, а вот правки баланса, выгрузка данных, визуальное сравнение единиц (можно даже на основе игровых констант считать dps и прочее) - будет топчик...
а если не менять философии инструмента, то можно просто обработчик низкоуровневый сделать, расширить до обработки всех файлов типа w3*, не только удаление, но и правку, и добавление, и валидацию
20
LastUchiha, ну чтобы работать структурой понятной, а не байтами
Чтобы оставить комментарий, пожалуйста, войдите на сайт.