Всем привет.
Существует ли приложение, которое может достать триггеры из карты и сохранить их в виде файлов с кодом? Каждый триггер в свой файл с соответствующим названием.
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
24
4 недели назад
1
типа протектор и депротектор)
Правда все триггеры будут в одном файле в виде кода непонятного :D
А вот как ты хочешь надо вручную в редакторе проходиться по триггерам и конвертировать их в код. А автоматически в одну кнопку не знаю, делал ли кто такое.
Ответы (5)
0
11
4 недели назад
0
konvan5, у меня там 863 триггера. Боюсь, я слишком ленив для такого :D
Если приложения с таким функционалом никто не знает, напишу своё решение. Насколько я помню, триггеры не сложно распарсить.
0
24
4 недели назад
0
Vladimir TVK, вот именно, функционал слишком специфичный чтобы кто-то реализовывал
0
19
4 недели назад
Отредактирован EugeAl
0
Vladimir TVK, Хм, а имеет ли резон столько триггеров делать? Можно написать отдельную функцию, создающие 10-15 триггеров на основные события, и запускать её на старте, а все механики уже вписывать в функции trigger action, или отдельно, чтобы запускать их из разных триггеров. Да и кода так будет во много раз меньше. Ну и собственно в среде разработки проще будет работать - 1 файл тупо триггеры и их действия, а остальные файлы по механикам
0
11
4 недели назад
Отредактирован Vladimir TVK
0
EugeAl, я не использую триггеры, как реальные объекты. Они в проекте служат просто в качестве листов с кодом.
Описанный тобой функционал у меня реализован через класс "Event". Есть глобальные ивенты, которые "выстреливают" от нескольких стандартных триггеров на основные события. И вот уже на эти ивенты подписываются функции.
0
19
4 недели назад
0
Vladimir TVK, Понял, тогда на данный момент остаётся только вручную копипастить всё это дело в файлы и переименовывать, чтоб самому не запутаться. Переименовать функции, я имею в виду, например, добавить им префиксы, чтобы разделить на категории и "библиотеки" и легко находить в листе функций того же JassCraft например. В теории, времени на это не сильно много уйдёт, дня 2 мб. Переименовывать можно автоматически в том же JassCraft через автозамену.
0
29
4 недели назад
0
Обычно достают war3map.j и работают с ним.
Ответы (9)
0
11
4 недели назад
0
nazarpunk, конечная цель не в депротекте (карта без протекта) и не в том, чтобы что-то вставить в j-файл. Цель - отделить триггеры от карты, и дальше работать с ними в среде программирования.
0
29
4 недели назад
0
Vladimir TVK, и в чём проблема? Достаёшь из карты war3map.j, удаляешь весь код, который генерирует игра и работаешь в своей среде.
0
11
4 недели назад
Отредактирован Vladimir TVK
0
nazarpunk, проблема в том, что у меня триггер - это фактически лист с кодом и каким-то своим отдельным функционалом. Соответственно, мне для работы нужно это разделение на файлы. Желательно ещё и с каталогами. Я не хочу работать с одним сплошным файлом и смысла в этом не вижу.
0
11
4 недели назад
Отредактирован Vladimir TVK
0
Кстати, этот переезд в нормальную среду в числе прочего нужен ради возможности лучше организовать файлы, создавать подкаталоги.
1
29
4 недели назад
1
Vladimir TVK, ну тогда отрывай war3map.wtg и извлекай что хочешь куда хочешь. Формат описан здесь. Ну или жди, пока кому-то будет не лень заморочиться.
0
11
4 недели назад
0
nazarpunk, да, я хотел эту штуку написать. Просто подумал, что возможно кто-то такое уже делал и выкладывал.
2
29
4 недели назад
2
Vladimir TVK, скинь свой war3map.wtg, будет время добавлю функционал в плагин.
0
11
4 недели назад
0
nazarpunk, спасибо, но не парься: я сам напишу решение.
Плагин видел, интересный. Попробую его после того, как конвертирую триггеры.
0
32
3 недели назад
0
Vladimir TVK, ептить, жасскрафт скачай и работай с j файлом, триггеры будут разделены коментами, по CTR+F ищем и всё.
1
37
4 недели назад
Отредактирован ScorpioT1000
1
Я не знаю как раскидать существующие файлы триггеров по настоящим файлам, но:
Если у тебя классик, можно использовать cjass #include - эта инструкция умеет импортировать внешние файлы в место, где ты использовал эту инструкцию, я такое юзал в jc - см JC_INCLUDES.j
Никто не обязывает при этом писать остальной код на cjass и он ничего не сломает.
Ещё вариант - юзать !import и вроде как даже ничего допом не надо ставить
Если у тебя reforged, можно использовать карту как папку и включать файлы с помощью конфига WLPM пункт "sources" - откуда брать файлы.
В WLPM никто не обязывает писать на lua - можно отключить автовставку менеджера модулей через тот же конфиг.
Ответы (19)
0
29
4 недели назад
0
ScorpioT1000, нормальные люди удаляют папку AdicHelper и используют импорт Vjass.
0
19
4 недели назад
0
nazarpunk, чисто из любопытства, почему нужно удалять папку adichelper и не юзать cjass?
0
37
4 недели назад
0
nazarpunk, спс, написал
1
29
4 недели назад
1
ScorpioT1000, только ты почему-то zinc написал. У вжаса есть свой импорт без всяких Зинок. xgm.guru/p/wc3/198315
0
29
4 недели назад
0
EugeAl, потому что он настолько шикарный, что может залезть даже в Зинку. Мне в своё время приходилось nocjass обмазываться, чего никому не советую.
0
19
4 недели назад
0
nazarpunk, то есть adichelper портит остальной код при компиляции, даже если самого кода на cjass не написано, я правильно понял?
1
37
4 недели назад
1
EugeAl, он не умеет парсить zinc, но там есть инструкция
// !nocjass

// !endnocjass
0
29
3 недели назад
0
EugeAl, не обязательно портит. Скорее вносит в него правки, которые могут оказаться несовместимы с заложенным функционалом.
ScorpioT1000, А он его не парсит, он вносит правки в уже после препроцессинга.
0
19
3 недели назад
0
nazarpunk, Ну да, такое себе.
0
29
3 недели назад
0
EugeAl, там есть ещё одна фундаментальная проблема - он очееееень медленный. Если ты часто сохраняешь и запускаешь карту, то бесить будет невероятно.
0
19
3 недели назад
Отредактирован EugeAl
0
nazarpunk, Согласен, это невероятно бесит. Особенно когда давным давно с гуи работал, медленная скорость сохранения вымораживала. Я не знаю, как люди это терпят в своих картах, столько ждать. При том обычный жасс скрипт на маленькой карте на 5-9к строк проверяется и потом сохраняется карта за пару секунд (!) Если у сиджасс подобная гуи скорость, это пипец
0
37
3 недели назад
Отредактирован ScorpioT1000
0
EugeAl, сижасс как раз моментально работает (не зря написан на asm), я думаю, назар про vjass import
0
19
3 недели назад
0
ScorpioT1000, не, он про сиджасс, он выше написал, что задолбался обмазываться nocjass
0
29
3 недели назад
0
сижасс как раз моментально работает
Моментальней некуда. И с каких пор яп начал безаговорчно определять производительность?
0
37
3 недели назад
Отредактирован ScorpioT1000
0
nazarpunk, не знаю, я когда его юзал у меня его окошко просто появлялось и исчезало, а вот vjass тянул свой поезд довольно долго
объем проекта можно увидеть по ссылке www.dropbox.com/scl/fo/oecgso5fdr16iguyuuk33/AGyz_LG16WHye9exL_5...
0
11
3 недели назад
0
ScorpioT1000, проект на классике, про эту директиву знаю. Но это уже этап №2: импортировать полученные на этапе №1 листы с кодом в саму карту. За ссылку спасибо, было любопытно посмотреть.
Тем временем, файлы карты я запарсил, листы с кодом получил. Сейчас вот думаю над вторым этапом. Каждый файлик прописывать через include - накладно, их больше 400 штук. Эта команда случайно не может забрать весь код из указанной папки? Или может есть утилита, позволяющая собрать j файлы в один?
1
29
3 недели назад
1
Vladimir TVK, когда ты парсил файлы карты нужно было сразу сгенерить себе main.j в котором прописать инклуды.
Или может есть утилита, позволяющая собрать j файлы в один?
Можно и самому написать простой скрипт, правда порядок будет алфавитный, что не всегда верно.
0
11
3 недели назад
0
Vladimir TVK, когда ты парсил файлы карты нужно было сразу сгенерить себе main.j в котором прописать инклуды.
И вправду, можно чуть подправить приложение и получить результат.
Только я же буду с этим работать в IDE. В ней добавлять новые файлы. То есть мне походу всё-таки надо небольшой сборщик написать.
0
29
3 недели назад
0
То есть мне походу всё-таки надо небольшой сборщик написать.
VJASS сам всё соберёт по директивам import, главное существующих код в них перегнать.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.