Здраствуйте господа! Представляю вам синтаксический анализатор из Jass кода в C++ код с проектами, которые вы можете, если что изменить под своё усмотрение.
Что из себя представляет проект Jass_convert_C++:
- Консольное приложение на С++.
- Конвертер из Jass кода в код C++, который создаёт два файла war3map.cpp и war3map.h для подключения ко второму проекту "Библиотека".
- Можно копировать в консоли нажимая вторую кнопку мыши буфер обмена, а именно текстовые данные, для ввода пути к ".j" файлу, который в итоге, полный путь корректен и расширение нужное, то вы получите два файла war3map.cpp и war3map.h.
- Завершить программу после получения файлов можно нажав любую клавишу.
Проект "Библиотека" это пример библиотеки для мапхака(IceFoga), и реализация запуска кода вашей карты в dll файле.
Уделю внимание на следующие классы в проекте:
Уделю внимание на следующие классы в проекте:
- fMyString
- fMyArray
- Файл Additional_functions.cpp.
- Файл Natives.h содержит объявление нативкок Warcraft 3, которые мы получаем с помощью библиотеки JassApi.dll.
- Файл Main.cpp содержит основные функции для придачи параметров в нативные функции Warcraft 3. И функции для удобства использование нативок. Пример: переменная HPLAYER (__cdecl *_Player) (Integer number); Превращается в функцию Player(i).
- Файлы war3map.cpp и war3map.h это исходные файлы конвертера. Которые реализуют работу всех функций для карты.
Остальные файлы в проекте можете посмотреть сами. Лучше на дебаге, так проще.
Я работал в Visual Studio 10, вы можете в любой другой Visual Studio, но желательно выше 2010, или в этой. Или в другой среде программирования, например VS Code.
После компиляции dll в проекте "Библиотека". Вы должны в карту поместить следующие файлы:
- Полученную библиотеку из проекта "Библиотека" в моём случае с путём "bin\".
- Файл war3map.j (IceFoga) в нём мапхак для библиотеки. Так же функции SetAmbientDaySound, SetAmbientNightSound, SetPlayerAllianceStateVisionBJ, SetPlayerAllianceStateAllyBJ, InitBlizzard не работают. Вроде бы, милли карты тоже работать не будут с AI Warcraft'a 3. Не пребывал.
- config.json он содержит перечень подключаемых библиотек в карту.
- RedirectCalls.dll, Loader.dll, JassApi.dll, common.j - эти файлы нужно вставить в архив карты для работы мапхака IceFoga.
В архив закинул карту VampirismFire5.10b2[0].w3x (версия Warcraft'a 1.26a) для проверки работоспособности данного конвертера.
Ссылка на архив со всеми файлами:
Вроде бы всё. Желаю удачных тестов.