Рано или поздно любой разработчик (Даже в Вар3 модмейкинге) начинает работать в команде, и современные технологии, как всегда помогают облегчить этот процесс. И так встречайте, ультра дешовый, быстрый, крутой, современный, супер, бупер, дупер сборщик карт, на lua и для lua через обмен данных Гихаб.

Сheapack

Сборщик позволяет работать как на версии 131, так и на Reforged версии

Нам потребуется:

  1. Программа для работы с кодом - IntelliJ IDEA , устанавливаем отсюда
  2. Программа для работы с Git репозиториями
  3. Регистрация на Github и создание первого проекта
  4. Перевести карту в режим папки
  5. Установить Chepack
  6. Настройка конфигурационного файла build.lua под свой компьютер или под компьютер нескольких пользователей, если вы работаете в команде

Поехали

Когда все файлы и программы скачаны, чимичанги съедены и на кактусе не осталось колючек, можно приступить к настройке и объединению всего этого в 1 кучу запускаем IntelliJ IDEA и создаём новый проект по кнопке Get From Version Control
Если окно с запросом URL репозитория не открылось, и вас снова просят установить Git - перезагружаем компьютер, и пробуем ещё раз
В качестве URL будет ссылка на ГИТ вашего нового проекта, или проекта другого человека, с кем вы работает в команде
Ссылка будет выглядеть так
Если же вы работает первый раз, создаём новый проект
В итоге должно получиться вот так вот
И нажимаем кнопку
Clone
А потом Далее=>Далее =>Далее => Далее=>Готово (если не понимаете, что там от вас хотят)
в конечном итоге получится вот так:

Проект это просто папка

И её нужно немножко подготовить
Переименовываем нашу папку-карту в map.w3x и перемещаем в папку с проектом
Создаём папку src в ней будут храниться наши скрипты
Можно туда положить конфигурационный файл build.lua в конечном итоге получиться вот так:

Cheapack

Пришло время настроить сборщика!
Да, вот так всё плохо, кнопочку сделать всё хорошо придётся прикручивать самому
Распаковываем Chepack в любую удобную папку и создаём новую конфигурацию в Idea, нажав на Add Configuration
  1. Путь к файлу lua53.exe из папки cheapack-master
  2. Путь к проекту в котором мы работает
  3. Путь к build.lua
  4. Создать
И теперь чтобы запускать сборщика, достаточно нажать 1 на кнопку
Но скорее всего получите много ошибок, а это означает, что пришло время настроить конфигурационный файл

Настраиваем Build.lua

Рассмотрим сразу более сложный вариант, для работы с несколькими пользователями
build.lua
require 'build' {
    --run = 'editor',
    run  = 'game',
}
Думаю тут всё интуитивно понятно, если указать напрямую имена файлов, а не просто путь к папке src, то файлы будут помещены в кастом код именно в этом порядке.
Если всё правильно, правильно, запустится игра или редактор, а в файле war3map.lua появиться обновлённый код из src
Если же нет, то внимательно читаем лог ошибок, и задаём вопросы в этой теме
При первой сборке укажите editor. Если всё правильно то в custom code карты появится собранный код, обязательно сохраните карту в редакторе, чтоб обновить war3map.lua. При последующих сборках код в war3map.lua будет заменяться автоматически и можно будет запускать карту в игре прям из IntelliJ IDEA

Так в чем же суть совместной работы?

Опыта как такового у меня совсем не много, я ещё не успел проникнуться всеми прелестями современных IDE
Но для того, чтобы ваш напарник получил ваш код (или же вы получили изменения, что внёс напарник), ну или просто вы сами поместили новый код в облако нужно просто...
нажать вот это
Но у вас не будет прав изменить файлы и папки в проекте (даже в своём), пока вы не авторизуетесь. Для своего проекта просто вводим учетные данные от сайта github.com, для чужого проекта, руководителю проекта необходимо добавить существующего другого пользователя

Полезные ссылки

`
ОЖИДАНИЕ РЕКЛАМЫ...
30
и когда ты добавил BlzFrameGetChildrenCount BlzFrameGetChild?
Судя по репозиторию в прошлом месяце.
Мне в админской телеге постучали и сказали что народ жаждет новых функций)
Загруженные файлы
33
в прошлом месяце
а патч когда вышел с этим функционалом? месяца 3 назад, ладно добавил же всё таки и хорошо
30
патч когда вышел с этим функционалом? месяца 3 назад
я старааааюсь...
22
судя из поста не проше взять плагин из вскод там тоже есть запуск редактор или запуск или сборка github.com/warcraft-iii/warcraft-vscode в исходный код глянь и разберись
38
Bergi_Bear, мы иногда стучим назару, чтоб обновил)
30
в исходный код глянь и разберись
обожаю советы в стиле почитать чужие исходники)
Я сам вот нашёл ceres-mpqtool где всё в одну строчку реализовано без всяких разбирательств:
$ mpqtool extract myarchive.mpq -o ./out
$ mpqtool view myarchive.mpq war3map.j
$ mpqtool new ./mydir myarhive.mpq 
$ mpqtool list myarchive.mpq -f "*.mdx"
27
По статье "собираем lua с помощью lua" у меня battle.net вызывает.
Здесь. Запускаю RunCheapack. Пишет: Не найден модуль Cheapack.
Не reforged а ужас ппц
Загруженные файлы
22
МрачныйВорон, говно idea лучше vscode и скачай marketplace.visualstudio.com/items?itemName=Dencer.warcraft-vsco... и все не нужно мучатся с конфигурации и всякие фигни старадие.

создаете проект и начинай кодить.
27
pro100master, кодить можно и idea. Подсветка работает и там. Просто еще там можно было запускать редактор или игру напрямую. Пытался именно это сделать, но че-то не так делаю. мне одна старая сборка battle.net запускает, а поновее cheapack не работает
А vscode подсветка есть, знаю об этом давно. Но все же тоже как-то не понятно. Вижу кнопочку Run =))
с Lua вообще не понятно как работать, хотя бы попрактиковаться

есть ли инструкции пошаговые с картой с помощью lua работать:?
22
МрачныйВорон, а причем посветкка. Оно везде есть говорю что тут туториал много дейсвии делать который новички не поймут что делают. Когда просто установил и начал кодить. А после чего нажал F1 и можно выбрать "Собрать сборку" или "Собрать сборку и запустить варкрафт" или "Открыть карту в редакторе". И опция "Дебаг" или "Релиз" позволяет оптимизировать код который не используется в игре и так далее а во время дебаг строго проверяет ошибки кода и выводят.
А в папке src можно положить импорты в любом месте.

А также позволяеть кодить РО в луа который во время сборки берет РО и создает магией
27
pro100master, кстати сделал свой туториал
жалею потраченного времени. вплоть до совместной работы на проектом че то разжевал и понял. Короче а дальше не понимаю, раз не работает.
нужен туториал для чайников по lua. либо idea или vscode
33
Наконец-то дошли руки актуализировать ифнормацию, файл build.lua сокращён до
require 'build' {
    --run = 'editor',
    run  = 'game',
}
11
А нормально, что мне пишет, что сборка успешно завершенна, но после этого остается пустой war3map.lua ? Ну тоесть просто все затирает, пустой файл. Если пересохранить карту, он возвращается базовым. Кода в карте нет, все удалено. Я запускаю из консоли build.lua
Мой вывод cmd

D:\1.ToSaver\Warcraft_3\Maps\LuaScripts>D:\1.ToSaver\Warcraft_3\Maps\LuaScripts\cheapack\lua53.exe build.lua
https://github.com/nazarpunk/cheapack#cheapack 2.1.1
[08/31/24 13:39:53] Начинаем сборку
D:\1.ToSaver\Warcraft_3\Maps\LuaScripts\LuaWarcraft3\main.lua
D:\1.ToSaver\Warcraft_3\Maps\LuaScripts\LuaWarcraft3\src\List.lua
D:\1.ToSaver\Warcraft_3\Maps\LuaScripts\LuaWarcraft3\src\NDarray.lua
D:\1.ToSaver\Warcraft_3\Maps\LuaScripts\LuaWarcraft3\src\numlua.lua
D:\1.ToSaver\Warcraft_3\Maps\LuaScripts\LuaWarcraft3\src\Set.lua
D:\1.ToSaver\Warcraft_3\Maps\LuaScripts\LuaWarcraft3\src\tools.lua
[08/31/24 13:39:53] Parsed wct
[08/31/24 13:39:53] Patched wct
[08/31/24 13:39:53] Сборка успешно завершена
D:\1.ToSaver\Warcraft_3\Maps\LuaScripts\cheapack\lua53.exe: .\\/cheapack/lua/build.lua:418: attempt to index a nil value (field 'run')
stack traceback:
        .\\/cheapack/lua/build.lua:418: in function './cheapack/lua/build'
        build.lua:1: in main chunk
        [C]: in ?
мой build.lua
require "./cheapack/lua/build" {
	src = 'LuaWarcraft3',
	map = 'Warcraft_prj.w3x',
	project = '.'
}
Ну тоесть я вроде все верно делаю? Запускаю build.lua пакета cheapack из build.lua моего проекта карты с параметрами.

UPD: Ааааа, он действительно все прописал, только куда он прописывает, если war3map.lua пустой? А поддержки require нет? Ото как-то неприкольно когда порядок нарушается.

UPD2: Блин, когда сквозь года все работает можно только огромный лайк поставить. Хотя и далеко не сразу понятно. Если бы я был неподготовленным человеком у меня глаза бы на лоб полезли и врятли бы смог это настроить. Вам бы серьезно гайд переписать, отделить шелуху от зерен, акценты расставить.
Ответы (3)
38
Потому что нужен watcher, как в wlpm, который ждёт изменения war3map.lua после сейва карты и опять его билдит
11
ScorpioT1000, если сохранить карту то там все появляется. Просто я удивлен, что карта запускается с пустым war3map.lua. И код реально в карте хранится в другом месте.
30
Koladik, проект писался во время выхода рефа и как следует из названия, является дешёвым сборщиком с примитивным функционалом - склеить все нужные файлы в один и поместить в war3map.wct в секцию для кастомного кода карты. Таким образом достигается совместимость со штатным редактором.
Вставленный код тупо помечается комментариями, посему обязательно необходимо сохранить код в редакторе, чтоб комментарии попали в war3map.lua и скрипт знал куда именно вставлять новый код.
Некая документация есть в репозитории, но никто не мешает самому запилить статью. Я уже давно забил на луа и занимаюсь плагином.
Идея этого сборщика быть простым как палка. Посему он и написан на Lua, чтоб картодел уже знакомый с языком мог его поправить под свои нужды. Поддержка require и прочие умные штуки не вписываются в идеологию этого сборщика. Благо выбор сборщиков общирен, а чипаку всёравно что засовывать в карту и в какой программе писать код.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.