ScopteRectuS, Drulia_san, Вот только такая конструкция вызывается ДО инициализации и при срабатывании сборщика мусора триггеры созданые таким образом могут потеряться. Будете потом ловить странный сложно воспроизводимый баг "триггеры вдруг перестали работать, что делать". Поэтому нужен инжект в оригинальный процесс инициализации.
В луа не работает бредовый "синтаксис" когда кажддому триггеру создается функция инициализации т.к. не генерируется вызов этих функций, в отличии от жасса, в котором каждому триггеру автоматически генерируется функция инициализации и добавляется вызов этой функции в скрытую от пользователя общую функцию инициализации.
Рекомендую прочитать эту статью чтобы разобраться как обеспечить себе место в коде, которое выполнится при старте карты и куда можно добавить в том числе и инициализацию своего триггера.
Жассовые хештаблицы в Lua просто не нужны. Затолкать туда луа объекты напрямую, очевидно, нельзя, за неимением соответствующих нативок.
Если решение этой проблемы нужно для конвертации карт - я бы просто запилил на Lua имитацию хештаблицы на основе обычных таблиц тем или иным способом - для нужд конвертации этого более чем хватит, а дальше автору карты это всеравно переделывать более вменяемым способом вручную.
А нижнее подчеркивание ставить вместо пробела пробовал? Если я правильно помню, в некоторых случаях помогает.
Еще можно написать там что-то другое, имеющее смысл.
Массивы в Lua индексируются с 1, а не с 0 как во всех привычных языках. Одиночные целочисленные индексы увеличиваются на 1, но все итерации придется поправлять вручную.
Это не совсем верно. В Lua массив может начинаться хоть с минус стопицот. Рассчет на первую ячейку массива по индеексу 1 имеет только несколько функций из стандартных библиотек - если при конвертации жасс кода в lua не используются эти функции, то и индексы трогать не обязательно.
Можно попробовать достать актуальный TriggerData.txt, дополнить его UMSWE триггерами и скормить редактору включив локальные файлы. Но я не гарантирую работоспособность этого метода.
Также есть небольшой шанс что в рефорже будет способ подсунуть редактору TriggerData.txt без локальных файлов, но сильно на это рассчитывать не стоит.
Можно использовать оборачивание блока кода в xpcall с анонимной функцией и универсальным обработчиком ошибки. Это намного удобнее оборачивания каждого отдельного вызова в pcall.
Также, вполне реально запилить автоматическое оборачивание всех функций в _ENV в pcall/xpcall, но мне, например, хватает xpcall.
Ну и еще более сложный вариант - реализовать автоматическое оборачивание в отладочные конструкции на этапе сохранения кода, но это нужен внешний сборщик карты и достаточно продвинутый парсер кода, это решение не для всех.
Hodor, есть полузакрытая бета в лаунчере, это еще не уровень PTR, это очень сырая и кривая ранняя бета. Выдается пока рандомно предзаказавшим и купившим билет на близкон, обычным мимокрокодилам пока не положена.
Прежде всего, группа это группа реально существующих на карте юнитов, она не имеет ничего общего с типами юнитов.
Получение случайного типа проще всего делается через массив - заносишь в ячейки массива нужные тебе типы и потом берешь случайную ячейку из массива по индексу.
Lord_Teo, К сожалению, нельзя.
Канал - универсальная настраиваемая пустышка 'ANcl', находится в геройских способностях у нейтральных-враждебных. Есть несколько ситуаций когда канал не подходит, например если нужно чтобы текущий приказ не сбивался при использовании способности и есть несколько багов, например некоторые комбинации настроек канала и id приказа не работают как надо и приходится выбирать другой id приказа.
Генератор который надо будет взять и написать с нуля, естественно. Это для действительно тяжелых случаев, когда, например, изменение одного параметра может потребовать также поменять десяток других параметров в разных местах и потом это все еще и в описаниях отобразить..
Здесь утекать ничего не должно. Точка здесь задается координатами, которые передаются напрямую в нативку. Утекали бы точки, если бы это были BJ функции и Location-ы.
DopaMine,
Начни с того что пройдись по статьям на хайве, к которым есть ссылки там:
xgm.guru/p/wc3/frame
Наверняка в одной из них найдется и нужная функция и другие примеры работы с фреймами.
JCtapuk, ничего странного, просто я открыл бету рефоржа, а не 1.31
DopaMine, теперь ищи нативку создающую фрейм по айдишнику. Я не подскажу т.к. не помню уже какая именно нативка для этого используется, а заново искать по статьям здесь и на хайве мне лениво.
» WarCraft 3 / Reforged на LUA
» WarCraft 3 / Reforged на LUA
Рекомендую прочитать эту статью чтобы разобраться как обеспечить себе место в коде, которое выполнится при старте карты и куда можно добавить в том числе и инициализацию своего триггера.
» WarCraft 3 / Lua remote debugger
» WarCraft 3 / Хеш-таблицы в Lua
Если решение этой проблемы нужно для конвертации карт - я бы просто запилил на Lua имитацию хештаблицы на основе обычных таблиц тем или иным способом - для нужд конвертации этого более чем хватит, а дальше автору карты это всеравно переделывать более вменяемым способом вручную.
» WarCraft 3 / Описание предметов
Еще можно написать там что-то другое, имеющее смысл.
» WarCraft 3 / lua логирование ошибок
Не стоит использовать блокнот для работы с кодом. А так - все можно, я разрешаю.
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
» WarCraft 3 / Открыть карту в редакторе рефорджа
Также есть небольшой шанс что в рефорже будет способ подсунуть редактору TriggerData.txt без локальных файлов, но сильно на это рассчитывать не стоит.
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / lua логирование ошибок
Также, вполне реально запилить автоматическое оборачивание всех функций в _ENV в pcall/xpcall, но мне, например, хватает xpcall.
Ну и еще более сложный вариант - реализовать автоматическое оборачивание в отладочные конструкции на этапе сохранения кода, но это нужен внешний сборщик карты и достаточно продвинутый парсер кода, это решение не для всех.
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
Ред. prog
» WarCraft 3 / Добавление типа юнита в юнит групп.
Получение случайного типа проще всего делается через массив - заносишь в ячейки массива нужные тебе типы и потом берешь случайную ячейку из массива по индексу.
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Проблема с использованием 2-х скилов на основе одного.
Канал - универсальная настраиваемая пустышка 'ANcl', находится в геройских способностях у нейтральных-враждебных. Есть несколько ситуаций когда канал не подходит, например если нужно чтобы текущий приказ не сбивался при использовании способности и есть несколько багов, например некоторые комбинации настроек канала и id приказа не работают как надо и приходится выбирать другой id приказа.
» WarCraft 3 / Проблема с использованием 2-х скилов на основе одного.
» WarCraft 3 / Описания в РО с использованием ссылок
» WarCraft 3 / У кого есть наработки физика столкновения юнитов!
» WarCraft 3 / Оптимизация элементарнейшего триггера в мире
» WarCraft 3 / Изменить интерфейс в карте 1.31+
» WarCraft 3 / Изменить интерфейс в карте 1.31+
Ред. prog
» WarCraft 3 / Изменить интерфейс в карте 1.31+
Начни с того что пройдись по статьям на хайве, к которым есть ссылки там:
xgm.guru/p/wc3/frame
Наверняка в одной из них найдется и нужная функция и другие примеры работы с фреймами.
» WarCraft 3 / Изменить интерфейс в карте 1.31+
https://www.xgm.guru/files/100/237133/comments/436065/globalstri...
https://www.xgm.guru/files/100/237133/comments/436065/infopanels...
https://www.xgm.guru/files/100/237133/comments/436065/datestring...
» WarCraft 3 / Изменить интерфейс в карте 1.31+
Ред. prog
» WarCraft 3 / Изменить интерфейс в карте 1.31+
[параметры фрейма и вложенные фреймы]
},