NazarPunk, перечитай план в посте)
Сейчас привязка к IDE запланирована на уровне заворачивания в плагин который просто передает правильные параметры. Ну и запуск игры удобнее через плагин реализовать т.к. можно отслеживать запущенный ранее процесс и при необходимости убивать его. Сам сборщик полностью независим от IDE. Весь процесс сборки по плану контролируется билд-скриптом на Lua, в котором можно что угодно делать.
По поводу "засунуть в SDK" - у меня нет идеи и ставить я её ради этого не планирую - если найдешь мне спецификацию для этого, подумаю как получить нужный результат. В теории, это должно быть реально, но, скорее всего, не нужно на практике, да и будет вызывать проблемы т.к. функции из сборщика будут перетекать в подсказки к коду карты, хотя в коде карты эти функции не должны быть доступны.
По поводу "сборки в составе Lua" - все с точностью до наоборот - Lua включается в состав сборщика в виде dll. Сборщик не изображает из себя дистрибутив луа и, в принципе, не должен этого делать т.к. он является не универсальным дистрибутивом луа, а выполняет строго специализированную задачу, пользуясь Lua.
Пока, наверно, самый перспективный "дешевый" способ интеграции этого сборщика в идею может выглядеть так:
Проект форматируется в соответствии с требованиями сборщика (или генерится конфиг соответствующий текущей структуре проекта).
Сборщик ставится либо локально в каждый проект либо глобально один раз, от этого зависят только пути.
В проект добавляются конфиги и скрипты сборки, соответствующие требованиям проекта.
На каждую таску сборщика создаются отдельные исполняемые Lua-врапперы, которые и вызываются из идеи. Внутри этих скриптов, по факту, только запуск исполняемого файла сборщика с передачей ему параметра, определяющего какую таску выполнить. Примеры тасок "собрать код карты", "собрать карту полностью", "сгенерировать данные РО из кода", "собрать карту в релизном режиме со всеми оптимизаторами", "собрать карту в режиме совместимости с WE".
При работе в идее запускается на выполнение в стандартном Lua соответствующий Lua-враппер над сборщиком, а сборщик дальше уже самостоятельно выполняет свой Lua скрипт сборки проекта на своей копии Lua.
NazarPunk, я пока не планирую включать в состав сборщика какие бы то ни было инструменты для скачивания - это выходит за скоп задач которые должен решать сборщик - как по мне, это задача для внешних подключаемых модулей. А вот по поводу упрощенного импорта надо подумать - какой-нибудь merge-скрипт в состав FlyData вполне может зайти. Да и генерация объектов в РО из кода - тоже потенциальная работа для FlyData, заявленая в возможных фичах для новой версии.
На всякий случай уточню, у меня сейчас в планах и разработке три отдельных составляющих
менеджер сборки, то что я в этом посте называю сборщиком, он сам по себе не делает почти ничего кроме выполнения Lua файлов в правильном месте и порядке
парсер-компилятор для кода, переработка предыдущей версии компилятора, он может делать много разных вещей с кодом, но в отличии от старой версии ожидает что ему будут отдаваться команды из Lua скрипта, сам принимает решения только в "экспресс" режиме, рассчитаном на максимально быструю сборку по захардкоженным в сборщике правилам. Интегрирован в сборщик для расширения доступного функционала.
FlyDataProcessor, новое его поколение, содержит инструменты для работы с данными помимо кода, возможно в итоге будет интегрирован в сборщик, как и модуль для работы с кодом, но пока планируется как внешняя консольная утилита с несколькими режимами работы.
Фича, которая будет возможна за счет интеграции с FlyData или другими инструментами парсинга данных в карте
автоматическая генерация списка переменных для всех юнитов стоящих на карте
добавление этого списка в автоподстановку в IDE
регенерация участка кода, отвечающего за создание юнитов и запись их в переменные чтобы гарантировать что все используемые юниты с карты были занесены в соответствующие переменные
отсутствие необходимости явно указать через Гуи на юнита прежде чем его переменную можно будет использовать
Также, эта фича может быть расширена на разрушаемые объекты, но тут нужно осторожно, чтобы все не упало из-за деревьев.
Drulia_san, в нынешней jass версии создай юнита, которого никогда не было на карте раньше, так чтобы не было шанса что переменная на него уже есть где-то в кеше. И попробуй обратиться к нему через jass без гуи. И 99% что получишь именно тот результат который имеешь в луа.
Drulia_san, я может чего-то не понимаю, но у меня свежепоставленные юниты на карте никогда не подхватывались жассом пока на них не появлялась хотябы одна ссылка в гуи.Потом эту ссылку можно было удалить, переменная после этого не пропадала.
Drulia_san, и ты никогда не пикал юнитов на карте гуем перед использованием? С последующим удалением этого действия из гуя потому как оно нужно только чтобы редактор понял что юнита надо таки занести в переменную.
SсRealm, перебор отряда и отдача приказа каждому юниту индивидуально. Либо разбиение отряда на отряды по 12 юнитов и отдача приказа каждому из таких отрядов.
А и еще один баг, это переменные зданий и юнитов, размещенных на карте редактором никак не инициализируются в луа, но если к ним хоть раз обратиться из гуи - то они вдруг оживают.
А в жассе разве не так же? Там же тоже нет переменных у юнитов на карте пока к ним из гуя не обратиться. И всегда так было.
NazarPunk, в первом релизе, да еще и в моей реализации - нет, точно не буду тратить на это время. Но взять тот способ которым ты пользовался у себя и адаптировать его к этому сборщику - дело пяти минут, причем без перекомпиляции самого сборщика, только поправить Lua скрипты.
NazarPunk, смотря что подразумевается под этой совместимостью. Если запись кода обратно в карту, то модуля для этого в стандартной поставке не планируется. Но, модульность подразумевает возможность с минимумом действий прикрутить любую тулзу и утилиту к проекту. Если будет спрос, а лучше - готовый код обертки над внешней утилитой запихивающей код в карту, то этот функционал вполне может быть включен в стандартную поставку.
А если просто речь об одновременной работе в IDE и WE, то тут все на том-же уровне, что и в предыдущем компиляторе Lua - пока не нужно модифицировать файлы в исходной карте, можно одновременно работать и там и там, но если нужно применить какие-то изменения которые должен увидеть редактор, то редактор придется закрыть, применить изменения и открыть заново.
Наивные. Будет как с фильмами. Деньги будут выдаваться преимущественно "правильным людям", под откаты и распил или, в лучшем случае, под создание продукта предназначенного для пропаганды, тогда откаты будут меньше и на разработку останется больше.
NazarPunk, я имею в виду не ссылкой на коммент, а прямо в статью и с обновленной инфой - коммент то немного устарел - например, с тех пор появился способ более явно указать ланг серверу что в папке лежат API и внешние либы, а не наш код. Но это так, мысли вслух - на практике, если когда-то дойдут руки, сам запилю отдельной статьей или тебе уже готовый текст в xgm-разметке скину.
Есть альтернативный вариант - трекать выделение. При обнаружении непотребного выделения - показывать кастомную инфо-панель вместо оригинальной, а выделение возвращать на героя.
NanO, я пользуюсь vs-code, он бесплатный, туда ставится правильный плагин для подсветки синтаксиса, закидывается файл с нативками вара и все. По поводу Atom - понятия не имею,
Extremator, в 1.31 есть еще новый косяк - при изменении уровня абилки описание бывает не меняется какое-то время или пока не выбрать героя заново или пока какраз не будет выполнено какое-то действие со способностью. Детально я это не исследовал, но предполагаю что это связано с попытками близов починить изменение текстовых полей абилок с помощью новых нативок.
обязательно при создании переменной таймера укажи максимальный размер массива. Если не задашь, то timer[2] и далее изначально заданы не будут.
Плохой совет, лучше создавать таймеры по мере необходимости - если заставить вар создавать несколько тысяч таймеров при старте карты, то можно очень быстро упереться в лимит операций в потоке.
easypeasy, смотря чего ты хочешь добиться.
Если тебе нужно чтобы способность была в списке прокачки и в то же время триггерно получала уровень - так нельзя. Такое надо делать двумя отдельными способностями.
Если это просто способность, которой не обязательно быть в списке прокачки - то сними у способности галку геройской и дай как обычную способность, а не как геройскую.
геройская, предназначена для изучения героями через меню прокачки, выдается герою в соответствующем поле в РО
обычная, просто есть у юнита, ну еще может улучшениями блокироваться в стандарте, выдается герою или юниту в соответствующем поле в РО, отличном от поля геройских способностей, также может быть выдана триггерами
» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты
Ред. prog
» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты
Сейчас привязка к IDE запланирована на уровне заворачивания в плагин который просто передает правильные параметры. Ну и запуск игры удобнее через плагин реализовать т.к. можно отслеживать запущенный ранее процесс и при необходимости убивать его. Сам сборщик полностью независим от IDE. Весь процесс сборки по плану контролируется билд-скриптом на Lua, в котором можно что угодно делать.
Ред. prog
» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты
» WarCraft 3 / GetLocationZ
Ред. prog
» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Я пикаю,а они не пикаются
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Я пикаю,а они не пикаются
» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты
» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты
» Мир безумного / Государство даст денег на разработку игр
» Мир безумного / Государство даст денег на разработку игр
» Эксперименты в Пустоте / Ломаем Warcraft3 1.31 полностью: Кастомный компилятор Lua
Ред. prog
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Выбор своего героя в любой ситуации если никто не выбран
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Помогите выставить уровень способности
» WarCraft 3 / Таймер на муй гуй
» WarCraft 3 / Помогите выставить уровень способности
Если тебе нужно чтобы способность была в списке прокачки и в то же время триггерно получала уровень - так нельзя. Такое надо делать двумя отдельными способностями.
Если это просто способность, которой не обязательно быть в списке прокачки - то сними у способности галку геройской и дай как обычную способность, а не как геройскую.
» WarCraft 3 / Помогите выставить уровень способности
» WarCraft 3 / Помогите выставить уровень способности