Это похоже на вопрос сжатия, так то 100 вариаций можно и в одну строку засунуть. Только работа со строками в jass желает лучшего
С генератором действительно есть момент что при изменении его в одном месте придется менять и во втором, а так как языки разные то получается не очень
Но я бы все равно разделил генератор города в UE и генератор кода для варкрафта, условно все элементы сохраняются в список json, а потом из него генерится код для варкрафта, а какой он будет код в варе вопрос второй
Да и какая разница хоть 10_000 строк если это чистый jass, можно же сгенерить и объявление функций которые строят города и сделать там лимит что каждый 10ый ассет создается через 0.01 в таймере и конечную функцию типа построй_город, а все if внутри. Зато будет полная консистенция с тем что в UE и что на выходе в варе
Генератор прикольный, дома/строения внутри областей генерируют некоторые кучки или линии, но эти кучки и линии на видео всегда внутри одной области, хотя место где области пересекаются, то есть на поворотах, тоже есть
Сам принцип преобразования областей и стен в строки не понял потому что области это группа четырехугольников которые можно так и хранить + точка смещения на итоговой карте, а граница стен и так выводится исходя из областей. Честно говоря если нужно сохранить конкретный вариант то я бы просто хранил генератор и сид от генератора случайных чисел или несколько сидов, например от областей, от стен и от строений внутри области
Эх упущен опыт варкрафтеров по хранению нескольких малых чисел внутри большого числа
Тут кстати можно добавить функцию как выводить числа с плавающей точкой больше сколько-то знаков чем выводит стандартная функция вывода, помнится PT153 скидывал
Разгадка сего действия проста - если первым аргументом функции AND был передан false то игра перестаёт считать выражение и экстренно возвращает false
Тут хорошо бы уточнить подразумевается false как значение выражения или false как переменная "false", и если первое то получается все выражения с and надо оборачивать в скобки
Их идея в том чтобы в зависимости желаемого бонуса выдавать способности соответствующие степени двойки, таким образом можно действием "установить бонус защиты" менять свой бонус юниту по желанию в любой момент
В 90% случаев без разницы если это читается понятно. Тут больше вопросы к названиям переменных в одну букву, например назвать юнита `t` "шикарное" решение
Для того чтобы легко поддерживать хоть сколько то большой проект на lua необходимы подсказки типов. А те typechecker которые есть сейчас не имеют возможности описывать generic типы.
Из за того что стандартный тип `table` имеет разные порядок при обходе через `pairs()` на разных ПК, это критически требует создания собственных коллекций просто чтобы начать хранить данные, а без generic типов поддержка коллекций быстро превратится в ад
Попробовал я перейти на луа. Ну сложна. Вышел на моменте что в карту что-то запаковывать надо будет руками чуть ли не через mpq архивы. Ну неудобно. Сделайте встроенную визуальную поддержку луа в джнгп. Тогда на это можно будет переходить.
Для того чтобы удобно было разрабатывать карту на lua сейчас надо выполнить следующие действия:
Положить в карту файл war3map.lua с одной строчкой
local my = require "my"
Создать в папке файл Game\Warcraft 3 Frozen Throne\lua\my.lua
Запустить игру с флагом -dev (режим разработчика)
С этого момента при запуске карты игра будет автоматически подгружать файл my.lua. Туда можно вносить изменения с помощью любой IDE.
Для того чтобы проверить изменения в my.lua даже не надо закрывать игру, достаточно нажать в меню перезапустить карту и новый my.lua подтянется автоматически.
Только когда надо релизить новую версию карты, тогда необходимо перенести изменения из my.lua в war3map.lua, чтобы код работал в обычном режиме.
каким образом можно писать что lua hrua cjass vjass ...{вставить ещё сотню языков} могут больше чем оригинал?
если они в конце компиляции тупо конвертят свой личный код в обычный жас
lua не конвертируется в jass, это отдельный язык со своей luaVM который интегрируется в игру и дергает нативки как сишные функции, оп-лимит это прикол исключительно jassVM
вчера он аналогично не захотел обработать 50 строк длиннее 1000 символов - ну ладно, на тебе второй триггер
но нет же, сегодня во втором триггере заглох при обработке одной строки на 1400 символов (во время вызова доп функции) - пришлось делать триггер в триггере
итого 3 раза цикл из-за оплимита оборвался и не доработал, пока его на триггер не посадили
сидишь только и борешься с оплимитом в циклах сутками
Да понимаю что это сложно, поэтому рекомендуй уйти на lua где нет такого лимита и больше перфоманс. Если такой возможности нет то дели код на части и делай отложенные вычисления типа таймером на 0 сек и т.п.
или надо периодически обнулять всю ht и заполнять заново? (разве нет команды очищения ht? только через пересоздание?)
Инициировать хеш-таблицу (InitHashtable()) насколько мне известно можно только 255 раз. Чтобы работать с пересоздаваемыми хеш-таблицами на jass нужно писать свою систему, типа такой xgm.guru/p/wc3/hashtable8000
» Hunter or Victim / Главная страница
» Hunter or Victim / Главная страница
» IntelliJASS / Типы данных
» IntelliJASS / Циклы
» IntelliJASS / Условия
» WarCraft 3 / Когда переступил через лимиты WarCraft 3
» WarCraft 3 / Как дополнить методами структуру unit?
» Hunter or Victim / Главная страница
» WarCraft 3 / Rabbits vs Sheep
» WarCraft 3 / Как дополнить методами структуру unit?
» WarCraft 3 / Возможно ли прикрепить аттачи к портрету персонажа?
» WarCraft 3 / Предмет усиливающий броню
» WarCraft 3 / Как раскрыть функцию с полярным смещением
» WarCraft 3 / Lua-программирование для чайников
» WarCraft 3 / Триггер на стак предметов в инвентаре
» WarCraft 3 / Visual Studio Code: WarCode
» WarCraft 3 / Visual Studio Code: WarCode
» WarCraft 3 / Определение хоста карты
» WarCraft 3 / Приоритеты атаки
» Quro / Главная страница
Для того чтобы проверить изменения в my.lua даже не надо закрывать игру, достаточно нажать в меню перезапустить карту и новый my.lua подтянется автоматически.
Только когда надо релизить новую версию карты, тогда необходимо перенести изменения из my.lua в war3map.lua, чтобы код работал в обычном режиме.
» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)
» WarCraft 3 / как создавать юнитов с уникальным HandleId ?
Отредактирован Vlod
» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)
» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)
» WarCraft 3 / как создавать юнитов с уникальным HandleId ?