SSrunX

JNGP Lua Edition

» опубликован
» Предназначение: Работа с редактором
Jass New Gen Pack - расширенный редактор карт для Warcraft 3.
Lua Edition основывается на JNGP 5g (последней версии) и собрана для работы на версии игры 1.31.

» Компоненты
  • Grimoire 1.5 - вмонтированная в WorldEditor утилита, основа остальных плагинов
  • JassHelper 0.A.0.0 - препроцессор и компилятор vJass
  • GrimEx 1.0b - модифицирует интерфейс редактора
  • TESH 2.0 - встроенный текстовый редактор с подсветкой синтаксиса
  • UMSWE 5.0 - вмонтированная утилита, расширяющая возможности редактора

Установка

  • У вас должна быть старая версия игры, где еще есть файлы MPQs (подходящую версию 1.26 скачать можно отсюда)
  • Скачайте по ссылке и разархивируйте в любую директорию файлы (пароль архива: thw, т. к. антивирусы считают этот хак редактора вирусом)
  • Найдите файл findpath.lua и укажите пути к файлам MPQs и файлам с игрой последней версии 1.31 (отредактируйте его при помощи любого текстового редактора)
» пример на картинке
- путь не должен содержать кириллицы
- внимательно следите за слешами в пути: в проводнике русской win 10 один / между директориями, поэтому замените их на \\
  • Запустите NewGen WE.exe

Как использовать Lua

  • Просто оберните код в теги //! lua и //! endlua
» пример
//! lua
function Trig_Basic_Example_Actions()
    TimerStart(CreateTimer(), 1.00, true, function()
        print("Lua!")
    end)
end
//! endlua
  • Если хотите вызвать функцию Lua из JASS, используйте //# +nosemanticerror (для vJass аналогично)
» пример
//! lua
function Trig_Basic_Example_Actions()
    TimerStart(CreateTimer(), 1.00, true, function()
        print("Lua!")
    end)
end
//! endlua

//# +nosemanticerror
function InitTrig_Basic_Example takes nothing returns nothing
    set gg_trg_Basic_Example = CreateTrigger(  )
    call TriggerRegisterTimerEventSingle( gg_trg_Basic_Example, 0.00 )
    call TriggerAddAction( gg_trg_Basic_Example, function Trig_Basic_Example_Actions )
endfunction
  • JassHelper иногда ругается на Lua, поэтому можно импортировать скрипт из папки luascripts, чтобы обойти парсер (можно использовать относительные или абсолютные пути)
//! luaimport "luascripts\test.lua"

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





Просмотров: 1 603

» Лучшие комментарии


NazarPunk #1 - 3 месяца назад 3
А он подсвечивает lua и позволяет делать вложенные папки в редакторе триггеров?
прикреплены файлы
ivanbakavan #2 - 3 месяца назад 3
NazarPunk, к сожалению, пока что нет. Пока это просто JNGP с возможностью писать на Lua без подсветки (и вложенных папок).
NazarPunk #3 - 3 месяца назад 0
Пока это просто JNGP с возможностью писать на Lua без подсветки
Он сразу собирает war3map.lua что-ли? Не пойму как в нём уживается jass и lua.
ScorpioT1000 #4 - 3 месяца назад (отредактировано ) 6
Не уверен, что он нужен с учетом того, что всё сто раз поменяется. Лучше пилить модули на луа с wlpm-подсосом <3
zogorlol #5 - 3 месяца назад 3
Круто, спасибо. Теперь можно не прощатся с UMSWE.
Это сообщение удалено
PornoMishka #7 - 2 месяца назад 0
Извините если туплю, но где сам архив в закрепе?
ivanbakavan #8 - 2 месяца назад 2
Скачайте и разархивируйте в любую директорию файлы (пароль архива: thw, т. к. антивирусы считают этот хак редактора вирусом)
исправил
DopaMine #9 - 3 недели назад 0
Сделал всё, как написано в инструкции, запустился редактор. Как мне писать на JASS-е а не на триггерах? Куда нажать?) И может, есть русификатор редактора?:D Помогите плз)
DopaMine:
Сделал всё, как написано в инструкции, запустился редактор. Как мне писать на JASS-е а не на триггерах? Куда нажать?) И может, есть русификатор редактора?:D Помогите плз)
Вот так выглядит у меня
DopaMine:
Сделал всё, как написано в инструкции, запустился редактор. Как мне писать на JASS-е а не на триггерах? Куда нажать?) И может, есть русификатор редактора?:D Помогите плз)
DopaMine:
Сделал всё, как написано в инструкции, запустился редактор. Как мне писать на JASS-е а не на триггерах? Куда нажать?) И может, есть русификатор редактора?:D Помогите плз)
Всё, нашёл! Не знаю, как удалить сообщение(
прикреплены файлы
Это сообщение удалено
ChugunovRoman #11 - 2 недели назад 0
Yo народ, писать на Lua круто, разбивая все на отдельные фалы и потом собирать их все в один бандл. прям как Gulp. Но потом я наткнулся на такую дичь.
Короч, сбандлил war3map.lua поместил его в папку с картой, открыл карту в WE, итог: в редакторе триггеров структура файлов и каталогов конечно же не создалась, что вполне очевидно, и при сохранении карты файл war3map.lua перезаписывается на стандарный (почти пустой) скрипт (когда в редакторе триггеров ничего нет).
Как это обойти? Можно ли как-то импортировать все файлы в WE?
Ручками не варик - с ума сойдешь.
prog #12 - 2 недели назад -1
ChugunovRoman, обычно это обходят через сборку и запуск карты на проверку из среды разработки для кода.
Т.е. код генерируемый WE используется как часть бандла и обратно war3map.lua не импортируется, вместо этого вместе с бандлом собирается отдельная карта, которая не открывается в WE, а только запускается в игре.
Из минусов - проверка карты из редактора запускает карту без внешнего кода. Естественно, запуск карты на тестирование автоматизируется, чтобы можно было сделать это одним нажатием кнопки в среде разработки, а не вручную, но всеравно приходится сохранять карту в WE, потом переключаться во внешнюю среду разработки и запускать проверку карты оттуда.
Более того, есть готовые решения и для сборки кода и для сборки карты.
ChugunovRoman #13 - 2 недели назад (отредактировано ) 0
prog, Я юзаю VSCode и пока настроил таску по сборе lua. А как запустить карту через среду разработки?
И можно подробнее про готовые решения? :)
Ну код я собираю через WLPM, А вот как карту сохранить одним файлом со своими скриптами - я хз
Где можно найти какие-нибудь наработки на Lua или различные примеры кода?
prog #14 - 2 недели назад (отредактировано ) -1
ChugunovRoman, например, свою собственную систему сборки под вскод я делал на основе warcraft-vscode от Dencer. По началу я пользовался этим плагином как есть, а потом автор начал творить дичь с кодом и пришлось писать свой плагин, а с нуля писать времени и желания не было.
По факту - карта просто пакуется внешним mpq-упаковщиком после сборки кода и потом отправляется в игру через параметр командной строки.
Где можно найти какие-нибудь наработки на Lua или различные примеры кода?
Небольшое количество есть в статьях прямо тут на сайте, но мало и в основном не очень качественно т.к. мало кто этим пока занимается.
P.S. свой сборщик я допилю и тоже когда-нибудь выложу, но пока не до этого.
ChugunovRoman #15 - 2 недели назад (отредактировано ) 0
prog, поделишься своей системой сборки?)
По факту - карта просто пакуется внешним mpq-упаковщиком
Паковать через MPQEditor можно?
P.S. свой сборщик я допилю и тоже когда-нибудь выложу, но пока не до этого.
Свой сборщик Lua? Есть репа на гитхабе? Скинешь ссыль? может помогу
prog, В общем, поставил я warcraft-vscode и вроде пока все норм. Спасибо)
prog #16 - 2 недели назад (отредактировано ) 0
Паковать через MPQEditor можно?
Не пробовал, но скорее всего можно, если там есть поддержка запаковки из командной строки. Я честно спионерил внешний mpq-упаковщик у автора warcraft-vscode, одна из его особенностей в том, что ему можно передать файл со списком файлов которые надо запаковать, что очень удобно когда файлов много и не все файлы из папки надо паковать.
Свой сборщик Lua? Есть репа на гитхабе? Скинешь ссыль? может помогу
Репы на гитхабе пока нет, будет после первого релиза. Тогда и поговорим о помощи, если еще будет желание.
На данный момент проект состоит из трех частей:
  • внешний mpq-упаковщик, пока берется оригинальный из warcraft-vscode.
  • плагин изначально запиленый на основе warcraft-vscode, но без лишнего функционала, фактически это обертка внутри вскода над внешними сборщиками, также выполняет отправку карты на тестирование в игру. Требует значительной доработки и вполне может быть заменен чем-то другим.
  • псевдо-компилятор на c++, который выполняет две задачи - сборку исходников в один файл и препроцессинг кода для добавления небольших, но приятных фич вроде макроса RAW('A000'), в результате парсинга которого в итоговый код попадет числовое значение равкода (для сравнения, сейчас в луа версии карты используется функция FourCC, которая конвертирует строку равкода в число на этапе выполнения кода, автоматической конверсии равкода в число нет, в отличии от того как это работало в JASS).
По поводу поделиться системой сборки в текущем состоянии - там еще слишком много багов для этого, иначе я бы уже выложил первую версию в релиз.

В общем, поставил я warcraft-vscode и вроде пока все норм.
Все норм, если не смотреть на тот ужас, который он делает с кодом в итоговой карте.
ChugunovRoman #17 - 2 недели назад 0
prog, Ну код можно выкладывать на любой стадии разработки ПО. Все желающие смогут подтянуться к разработке.
Все норм, если не смотреть на тот ужас, который он делает с кодом в итоговой карте.
Ну я глянул... и чет да, там какое-то мракобесие
prog, А есть какие-нибудь сборщики для JASS'а и его диалектов? По типу как WLPM?
prog #18 - 2 недели назад (отредактировано ) 0
А есть какие-нибудь сборщики для JASS'а и его диалектов? По типу как WLPM?
Понятия не имею, если честно - когда я с жассом работал мне хватало того что умеет жассхелпер. Но, например, тот же warcraft-vscode собирает код скриптом внутри плагина к вскоду - запилить свой форк и научить его собирать жасс в теории не очень сложно. Хотя я уверен что есть готовые плагины к вскоду рассчитанные именно на сборку карты в жасс версии.

Ну я глянул... и чет да, там какое-то мракобесие
Самый треш там в отладочном режиме. В "релизном" чуть по лучше, но для релизного надо явно указывать все связи между файлами или заносить их в список, чтобы он включил их в сборку.

Ну код можно выкладывать на любой стадии разработки ПО. Все желающие смогут подтянуться к разработке.
Я до первого релиза код не выкладываю, если проект изначально не начинался с расчетом на совместную разработку.
ChugunovRoman #19 - 2 недели назад 0
но для релизного надо явно указывать все связи между файлами или заносить их в список, чтобы он включил их в сборку
Т.е. этот плагин может и не все файлы подтянуть?
prog #20 - 2 недели назад 0
ChugunovRoman, на момент когда я последний раз трогал оригинал руками - в зависимости от выбраного режима. В отладочном режиме творится муть с заворачиванием кода в строки и всякое такое, но он подтягивает все файлы какие найдет. В релизном выполняется минификация кода и вроде нет заворачивания в строки, но нужно явно указывать что подтягивать.
ChugunovRoman #21 - 2 недели назад 0
prog, Спасибо за разъяснения :)