Предисловие
Все уже наверно слышали о нашумевших проектах, которые позволяют разрабатывать карты под варкрафт намного легче и приятней. Но по непонятным мне причинам, нормальной инструкции не найти. Настало время исправить эту ситуацию.
UjAPI
UjAPI это лаунчер, который добавляет в игру много чего интересного. Почему лаунчер?
Когда была найдена уязвимость, то стал набирать обороты так называемый мемхак. Но у него была одна проблема - любой школьник мог своровать ваши пароли от интернета. Притом его каждый раз было необходимо импортировать в игру. Что затрудняло обновления и плодило несоизмеримое количество лишней работы. Ладно это две проблемы.
У лаунчера же больше возможностей для дальнейшего развития. К примеру он предотвращает запуск мемхака, что позволит сохранить в тайне вашу историю браузера.
Так как разрабатывать карты в одиночку это тяжёлый и непосильный труд, то нам понадобится Git для совместной работы, а так же .NET Framework 4.7.2 и C++ Redistributables 2012 для работы лаунчера.
После установки необходимо найти WarCraft на вашем компьютере.
У меня он находится по этому пути, вы же используйте свой, если он отличается.
D:\Warcraft III
Если мы хотим получить хоть каплю удовольствия от написаня кода, то неплохо бы использовать lua. Не будем изобретать лишние слова и создадим папку lua в корне папки с игрой.
mkdir "D:\Warcraft III\lua"
Джентельменам принято верить на слово. Только вот ребята из Майкрософт об этом не знают и астрологи предсказывают ложные срабатывания антивируса. Чтоб избежать сей участи, добавьте только что созданную папку в исключения антивируса.
Осталось дело за малым, скопировать нужные файлы из репозитория.
cd /D "D:\Warcraft III\lua"
rmdir /s /q ujapi
git clone https://github.com/nazarpunk/wc3-ujapi.git ujapi
Warcraft III - Lua
Warcraft III - Lua это модификация, назначение которой понятно из названия. И вся прелесть в том, что она прекрасно сочетается с UjAPI. Таким образом, с помощью одного лаунчера можно сразу убить нескольких зайцев.
Для того, чтоб ваша IDE понимала, с какой игрой она работает, необходимы декларации игровых функций, в простонародье называемые sdk. Так как никто не озаботился их созданием, то придётся взять дело в свои руки.
Вооружаемся Ladik's MPQ Editor, открываем файл War3x.mpq и из папки Scripts извлекаем необходимые файлы:
- blizzard.j
- cheats.j
- common.ai.j
- common.j
Файл UjAPI.j скачиваем из репозитория, кладём всё это дело в отдельную папку и натравливаем на неё cJass2Lua по этой инструкции.
Если вы успешно клонировали репозиторий, то все эти пляски можно пропустить. Нужные файлы будут находиться по адресу:
explorer "D:\Warcraft III\lua\ujapi\sdk"
Как настроить подсветку в IDE прекрасно описано в этой статье.
Как всё совместить и начать разрабатывать
На данный момент структура папки с варкрафтом выглядит как-то так:
D:\Warcraft III
├── ...
├── lua
| ├── ujapi
| | └── ...
| └── ...
├── Maps
| └── ...
└── ...
Теперь предположим, что мы захотели создать карту MyAwesomeMap. Должно получиться нечто подобное:
D:\Warcraft III
├── ...
├── lua
| ├── ujapi
| | └── ...
| ├── MyAwesomeMap
| | ├── war3map.lua
| | ├── main.lua
| | └── ...
| └── ...
├── Maps
| ├── MyAwesomeMap.w3x
| └── ...
└── ...
В папке D:\Warcraft III\lua\MyAwesomeMap можно смело создавать проект и выкладывать на всеобще обозрение в GitHub.
Осталось подключить lua к карте.
И тут нам открывается вся мощь Warcraft III - Lua - он умеет запускать lua из папки с игрой с включённым DevMode. То есть вы можете просто запустить игру и перезапускать карту. При каждом перезапуске в карте будут обновлённые lua файлы.
Посему почитаем о require, запишем в war3map.lua волшебные строчки и импортируем в корень карты.
-- war3map.lua
require 'lua.MyAwesomeMap.main'
Добавляем что нибудь для проверки работоспособности в main.lua.
-- D:\Warcraft III\lua\MyAwesomeMap\main.lua
print('Теперь я могу писать карты на lua!')
Осталось только настроить лаунчер уделив особое внимание графе lua settings.
Поздравляю, Вы великолепны!
Послесловие
Проекты активно разрабатываются силами всего лишь нескольких человек и они не всегда успевают вовремя вносить в них правки. Так что не стесняйтесь поддерживать авторов рублём и писать комментарии.
Ваша поддержка очень важна!
Edited by nazarpunk