upd: на скрине идет строгая проверка на равенство 9.0, вероятность срабатывания которой крайне мала потому как мана это не целое число, хоть и отображается в интерфейсе как целое.
Рекомендуемая мной реализация - использовать дополнительный индикатор для проверки того что юнит уже создан и проверять не равна ли мана максимальному значению. Например выдавать зданию пассивную способность-пустышку, отмечающую здание как такое у которого уже есть юнит и пока эта способность у здания есть, не создавать нового сколько бы маны ни было.
Не забудьте про обратный процесс - наверняка ведь пищу нужно еще и отнимать если одно из зданий разрушено.
И не забудьте что здания во время постройки пищу давать не должны по логике вещей.
Я бы не заморачивался парностью зданий и просто считал бы сколько одних, сколько других и выдавал бы пищу по минимальному из двух значений.
Что-то более похожее на реальные условия в карте - много переборов маленьких групп. Заодно и доля занимаемая самим перебором в сравнении с вызовом нативок возрастет.
Доберусь до вара - проведу свои собственные измерения. Однократный перебор двух тысяч юнитов не самый показательный тест, имхо. Плюс не стоит забывать про трюк с заносом нативок в локалки, что позволяет выжать дополнительную производительность и недоступно при форгрупе.
Анонимная функция получит и через замыкание, а вот для именованой придётся заламлять глобальное пространство имён, что не очень хорошо.
Формулировка не совсем верная, ведь именованная локальная функция тоже получит замыкание на свою область видимости - замыкания никак не связаны с анонимностью и именованностью.
Lua это динамический язык, для него проверка на имена чего бы то ни было на этапе компиляции имеет мало смысла с точки зрения языка ведь во время выполнения в любой момент может появиться переменная или функция с именем не известным на этапе компиляции. А вот синтаксис вроде проверялся варом, но место ошибки не указывалось правильно, только сам факт её наличия и близы обещали это починить к рефоржу.
Для комфортной работы с Lua нужна внешняя среда разработки, благо их есть несколько штук на выбор.
8gabriel8, Nzoth, А, ну так я полный текст загадки не видел, сужу по комментам тут. В таком случае да, лучше полностью заменить загадку - эта на русский не переводится т.к. построена на особенностях английского языка.
Ну, допустим, реплеи парсить и использовать для обучения внешней сети можно и без клиента. Если сетке не ставится задача распознавать изображение на экране, как это делает AlfaStar.
Прежде всего, нейросеть для старкрафта сидит вне клиента игры. Спрашивать потянет ли это движок не корректно потому как движок то тут ни при чем. Правильнее ставить вопрос,реально ли реализовать интерфейс для взаимодействия нейросети с игрой.
Если кол-во используемых моделей прячущихся не велико - можно им сломать границы модели, чтобы на них мышка не реагировала вобще.
А еще вроде был какой-то баг с москитами, когда москиты убирались, а юнит оставался невыделяемым, но на него работала автоатака и пик в радиусе.
pro100master, представь, два героя, один с равкодом 100500, второй с равкодом 100507, первому герою назначен уровень 15, второму 8. Номер ячейки у обоих выйдет 100515. Редкая ситуация, но вполне возможная - придется дополнительно следить чтобы такого не происходило.
У костылей на сдвигах есть неприятный нюанс - возможна ситуация когда в одной ячейке соответствует два значения, если так совпадет, что первый равкод будет меньше второго на столько-же, на сколько первый уровень будет больше второго.
NazarPunk, отличный костыль xD
Но суть не в том - предыдущий способ это был яркий пример овероптимизации а на событии происходящем достаточно редко, поэтому он вызывает у меня желание что-то в нем переделать.
NazarPunk, хорошее решение, но мне что-то не нравится. Мозолит глаза запись по номеру уровня и почему-то хочется либо развернуть это в полноценную систему событий привязанных по уровню, только одно из которых морф, либо хранить уровень отдельно, а равкод отдельно.
Вот из-за обилия таких костылей автоматический переход на Lua и усложняется больше необходимого т.к. эти костыли вручную выкидывать и переделывать придется.
» WarCraft 3 / Условие в цикле на ГУИ и возможно ли это?
» WarCraft 3 / Условие в цикле на ГУИ и возможно ли это?
Условия в цикле - работают. Вейты в цикле - зло.
» WarCraft 3 / Tournament of Might and Magic
» WarCraft 3 / Баг равкодов?
» WarCraft 3 / Сложная система производства пищи
И не забудьте что здания во время постройки пищу давать не должны по логике вещей.
Я бы не заморачивался парностью зданий и просто считал бы сколько одних, сколько других и выдавал бы пищу по минимальному из двух значений.
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / [lua] Все споcобы перебрать группу юнитов
» WarCraft 3 / Не работает мультибоард
Ред. prog
» WarCraft 3 / Lua в текущих реалиях
Для комфортной работы с Lua нужна внешняя среда разработки, благо их есть несколько штук на выбор.
Ред. prog
» WarCraft 3 / Рождение Теней
» WarCraft 3 / Рождение Теней
» Программирование / Покраска отдельно каждого символа на С++
» WarCraft 3 / Нейронная Сеть в WC3
» WarCraft 3 / [lua] Предотвращаем создание утечек GUI
» WarCraft 3 / Нейронная Сеть в WC3
» WarCraft 3 / Можно ли сделать так, чтобы курсор не окрашивался?
А еще вроде был какой-то баг с москитами, когда москиты убирались, а юнит оставался невыделяемым, но на него работала автоатака и пик в радиусе.
» WarCraft 3 / Можно ли сделать так, чтобы курсор не окрашивался?
» WarCraft 3 / Почему юнит жив (существует)
» WarCraft 3 / Эволюция юнита через проверку уровня
» WarCraft 3 / Эволюция юнита через проверку уровня
» WarCraft 3 / Эволюция юнита через проверку уровня
Но суть не в том - предыдущий способ это был яркий пример овероптимизации а на событии происходящем достаточно редко, поэтому он вызывает у меня желание что-то в нем переделать.
» WarCraft 3 / Эволюция юнита через проверку уровня
» WarCraft 3 / Размножение
» WarCraft 3 / Можно ли уничтожить hashtable?