Пока нашел у него темплейты по которым он собирает код карты и выпилил оттуда все лишнее, чтобы он не занимался ерундой изображая пакет менеджмент и просто собирал в один файл по очереди код карты и все наши кастомные lua файлы.
С этим уже можно работать.
Потом попробую его еще кастомизировать по своему, но пока и так сойдет.
Я это к чему - 1.31 уже вышел. Вот буквально вчера и вышел, сразу после анонса близовского. Он, правда, кривой и не далеко ушел от PTR - его еще возможно будут ровнять напильником, но все крупные фиксы и фичи ждать уже в рефорже - это последний большой патч перед рефоржем.
ScorpioT1000, все вменяемые переходят на написание кода в vscode и прочих внешних редакторах... Требование хранить папку карты в папке проекта вполне гармонично в это вписывается. А "юзер-френдли" добивается через плагин к вскоду, оборачивающий твою тулзу, редактор и запуск вара.
ScorpioT1000,
Реквайры можно и в компайл-тайме ресолвить, как показывает тулза на которую ты линк кинул. Там очень наивная реализация этого, но никто не мешает написать свою более вменяемую, кроме отсутствия времени.
Разворачивается в два клика, главное не забыть воркспейс создать в вскоде перед попытками использования. Но имеет очень своеобразные представления о том, как должен инжектиться код в карту и воде как не имеет предсборочной проверки правописания.
Я планирую этот плагин форкнуть и по пинать ногами в свободное время, если не найдется что-то более достойное.
ScorpioT1000, есть простой до боли вариант, но он, имхо, менее удобен в использовании. Пилим внешний скрипт который выполняет сборку карты и запуск варкрафта/редактора по необходимости, прикручиваем это к среде разработки, получаем возможность удобно работать с кодом и чуть менее удобно со всем остальным. Есть даже готовые решения, хотя я бы их напильником доработал очень сильно прежде чем в руки брать.
Но если уж идти путем выстраивания среды разработки вокруг внешнего набора тулзов - можно что угодно там наворотить снаружи.
В связи с официальным выходом 131 - расходимся. Там теперь просто блочится жассхелпер в Lua режиме без каких бы то ни было альтернатив. Пора писать внешний скрипт, эх.
ScorpioT1000, на меня не рассчитывай - я рабочий способ подсунуть код карты при сохранении в свой парсер нашел и расшарил, но дальше фикса мелких раздражающих лично меня вещей идти не намерен. Максимум - выложу финальный продукт когда-нибудь, если кому-то будут интересны мои мелкие фиксы, ну и подскажу что смогу если кто-то возьмется на основе этого метода свой парсер пилить и уткнется в проблемы.
PornoMishka, и ты тоже не прав - смысл в идее ScorpioT1000 есть - пакет менеджиент штука полезная и удобная. Был бы готовый, я бы тоже им пользовался, если бы я какой-то крупный проект или несколько вел. Но, чего таить - вот прямо сейчас мне это не нужно и не интересно - мой интерес к вару3 сейчас на уровне "пойти потыкать как оно теперь работает с Lua, может заодно какая-нибудь карта получится" - отсюда и быстрый костыльный фикс выедающей мозг проблемы импорта внешних файлов кода при сохранении - замахался я руками код переносить из vscode.
Сегодня вар обрадовал меня необходимостью запустить инсталлер и привести его в тот вид в каком его хотят видеть близы.
В результате важное уточнение для тех кто решит пользоваться этим костылем - конфиг жассхелпера лучше складдывать в "C:\Users\Username\Documents\Warcraft III Public Test\JassHelper\" - оттуда его тоже подтягивает, а инсталлер его там руками трогать не должен, по идее.
Если кому интересно - на 1.31 в режиме сохранения карты в виде папки все что сложено внутрь папки автоматически попадает в список импорта. В связи с этим, можно сильно не заморачиваться адаптацией этой утилиты под 1.31.
PT153,
Я про перезапись глобалок t_Ball и t_Owner из твоего примера, если они еще где-то используются в месте, которое может быть вызвано через реакцию на нанесение урона. Случай довольно редкий, но случается рано или поздно, если не учитывать такую возможность и бездумно использовать одни и те же глобалки в нескольких системах.
PT153, главное не забывать отслеживать случаи когда нанесение урона другое событие вызовет в процессе перебора иначе можно на бесконечный цикл и краш или просто на перезапись глобальных переменных нарваться ...
ScorpioT1000, Ты немного путаеш задачи которые я решал этим костылем - я пилил мелкую утилиту для удобства пользования тем что есть, без наполеоновских планов. Все что она сейчас делает - исправляет мелкий косяк из-за которого невозможно было пользоваться JassHelper-ом одновременно с Lua. Запланированный конверт равкодов - задача того-же уровня - исправление мелкого недочета, который почти наверняка и так будет пофикшен.
А пакет менеджмент и пиар на хайве - это не моя задача от слова совсем. К её решению я бы подходил немного иначе - проталкивал бы близам через хайв обнову жассхелпера и фикс его уже существующей но слегка поломаной функциональности по подтягиванию внешних утилит.
О, еще сюда можно засунуть фикс краша при наличии %s в lua коде карты - тоже легко делается, а жизнь на PTR немного улучшит пока официального фикса нет.
А если кому-то хочется большего - вперед и с песней - найденный мной метод прост до боли - по тому что есть в посте можно за десять минут свою аналогичную утилиту запилить.
JackFastGame, допустим максимум 100, у юнита осталось 10, от текущего на 10% он отхилится на 1хп, от максимального на 10хп. Правда, у автора вопроса не указано от текущего ему надо или от максимального.
Итого - пожертвовав pjass мы получаем рабочий жассхелпер под луа режимом. Это дает нам все возможности жассхелпера, включая ненужный вжасс, но главное - инжекты и импорт, которых не получается добиться от луа.
Правда вжасс подсовует нам какашку - оборачивает результаты импорта в строки комментариев с инфой кто это и откуда его импортировали.
Все бы ничего, но комментарии жасс стайл и не нравятся луа - внутрь луа блока испорт так просто не суется, придется либо писать свой парсер свой который это будет фиксить, либо в луа файлы совать бегинюзеркод эндюзеркод, что не нравится внешним редакторам.
Я за парсер т.к. он всеравно пригодится для других мелких фиксов, например равкоды конвертить в луа блоке в числа.
И еще одна какашка от близов и жассхелпера - команда external для запуска внешних тулзов не работает в том режиме жассхелпера, в котором его запускают близы.
Не смертельно - у нас по прежнему есть наш "заменитель пжасс", куда мы можем засунуть кастомный парсер, главное чтобы он вызывался до того как код карты луа скармливается.
quq_CCCP, я пока вобще ничего не пилю т.к. времени что-то активно пилить нет, по мелочи всякое. Нашел вот способ заставить вжасс парсер исправно работать в луа режиме - самое то для переходного периода, пока код будет на луа переписываться вручную. Заодно дает возможность использовать инжекты и импорт, которых луа не дает в текущем состоянии.
PT153, это не баг, я проверил логи того что редактор делает с файлами жассхелпера и пжасса - там идет явная проверка сертификатов.
Но это не большая проблема т.к. сам жассхелпер дает возможность через конфиг перекроить его поведение.
ScorpioT1000, спс.
Похоже близы таки зачем-то впилили какую-то защиту от подмены файлов жассхелпера - ни одно ни второе даже не пытается вызваться, похоже, если там не оригинальные exe файлы...
Немного по работал, потом пошел проветрился и опять сел по дергал жассхелпер за свисающие части.
Результат
близы проверяют подписаность файлов жассхелпера сертификатом и если жассхелпер или пжасс не подписаны шлют весь жассхелпер лесом.
если в конфиге жассхелпера заменить пжасс своим синтакс-чекером - он не проверяется на сертификат
в таком случае жассхелпер отрабатывает исправно и дергает наш файл для синтакс чека
подставляем ничего не делающий файл и получаем описаную мной выше ситуацию - карту в луа режиме, которая сперва обрабатывается вжасом
Окей, я был не прав в понимании того как работает жассхелпер. Выкроил немного времени по тестить. Как верно заметил PT153, вжасс парсер встроен в сам жассхелпер, а pjass это синтакс чекер и не более. Отсюда следуют еще более интересные выводы - если выпинать pjass, то мы получаем карту в которой работает vjass и потом идет конвертация в Lua.
Т.е. если пожертвовать синтакс чекером, который нам не особо и нужен т.к. мы с луа работаем, то можно попробовать заставить vjass импортировать наши луа файлы даже без кастом парсера.
upd
А вот теперь я уже совсем перестал понимать что происходит... Таки вечером продолжу
Поясните кто-то, все-же pjass.exe или jasshelper.exe отвечают за переработку vjass в jass в 1.31? Потому как я совсем запутался в происходящем - часть вещей которые казалось бы должен делать vjass работает, часть нет.
Ред. prog
» Эксперименты в Пустоте / Ломаем PTR 1.31 полностью: Lua+JassHelper+костыли
С этим уже можно работать.
» Огонёк Феникса / Список конкурсов от Феникса
» WarCraft 3 / Официально стал доступен PTR 1.31
» WarCraft 3 / Официально стал доступен PTR 1.31
» Огонёк Феникса / Список конкурсов от Феникса
» WarCraft 3 / Присваивание способности по введённой строке в чат
» WarCraft 3 / Официально стал доступен PTR 1.31
» WarCraft 3 / Официально стал доступен PTR 1.31
Реквайры можно и в компайл-тайме ресолвить, как показывает тулза на которую ты линк кинул. Там очень наивная реализация этого, но никто не мешает написать свою более вменяемую, кроме отсутствия времени.
Ред. prog
» WarCraft 3 / Официально стал доступен PTR 1.31
Я планирую этот плагин форкнуть и по пинать ногами в свободное время, если не найдется что-то более достойное.
Ред. prog
» Эксперименты в Пустоте / Ломаем PTR 1.31 полностью: Lua+JassHelper+костыли
Но если уж идти путем выстраивания среды разработки вокруг внешнего набора тулзов - можно что угодно там наворотить снаружи.
» Эксперименты в Пустоте / Ломаем PTR 1.31 полностью: Lua+JassHelper+костыли
» Эксперименты в Пустоте / Ломаем PTR 1.31 полностью: Lua+JassHelper+костыли
В результате важное уточнение для тех кто решит пользоваться этим костылем - конфиг жассхелпера лучше складдывать в "C:\Users\Username\Documents\Warcraft III Public Test\JassHelper\" - оттуда его тоже подтягивает, а инсталлер его там руками трогать не должен, по идее.
» WarCraft 3 / Map Import Manager
Ред. prog
» WarCraft 3 / JASS фаербол
Я про перезапись глобалок t_Ball и t_Owner из твоего примера, если они еще где-то используются в месте, которое может быть вызвано через реакцию на нанесение урона. Случай довольно редкий, но случается рано или поздно, если не учитывать такую возможность и бездумно использовать одни и те же глобалки в нескольких системах.
» WarCraft 3 / JASS фаербол
Ред. prog
» Эксперименты в Пустоте / Ломаем PTR 1.31 полностью: Lua+JassHelper+костыли
» WarCraft 3 / Как создать процентный отхил? (триггерно)
Ред. prog
» WarCraft 3 / Как создать процентный отхил? (триггерно)
Ред. prog
» WarCraft 3 / Официально стал доступен PTR 1.31
» WarCraft 3 / Официально стал доступен PTR 1.31
Я его поборол! Не без костылей, но работает.
В блоке кода внутри редактора триггеров
Ред. prog
» WarCraft 3 / Официально стал доступен PTR 1.31
Правда вжасс подсовует нам какашку - оборачивает результаты импорта в строки комментариев с инфой кто это и откуда его импортировали.
Все бы ничего, но комментарии жасс стайл и не нравятся луа - внутрь луа блока испорт так просто не суется, придется либо писать свой парсер свой который это будет фиксить, либо в луа файлы совать бегинюзеркод эндюзеркод, что не нравится внешним редакторам.
» WarCraft 3 / Оператор конкатенации в макросах
» WarCraft 3 / Официально стал доступен PTR 1.31
Но это не большая проблема т.к. сам жассхелпер дает возможность через конфиг перекроить его поведение.
Ред. prog
» WarCraft 3 / Официально стал доступен PTR 1.31
Похоже близы таки зачем-то впилили какую-то защиту от подмены файлов жассхелпера - ни одно ни второе даже не пытается вызваться, похоже, если там не оригинальные exe файлы...
Результат
Ред. prog
» WarCraft 3 / Официально стал доступен PTR 1.31
Т.е. если пожертвовать синтакс чекером, который нам не особо и нужен т.к. мы с луа работаем, то можно попробовать заставить vjass импортировать наши луа файлы даже без кастом парсера.
А вот теперь я уже совсем перестал понимать что происходит... Таки вечером продолжу
Поясните кто-то, все-же pjass.exe или jasshelper.exe отвечают за переработку vjass в jass в 1.31? Потому как я совсем запутался в происходящем - часть вещей которые казалось бы должен делать vjass работает, часть нет.