28

» WarCraft 3 / 16. Функция как объект

Функция, как объект, имеет некоторые преимущества - метод evaluate позволяет совершать вызов функции из любого участка кода, даже если место вызова находится выше места объявления функции. Метод execute делает то же самое, но при этом порождает новый поток, однако, выполняется быстрее старого доброго ExecuteFunc.
И может так и было, когда JassHelper только создавался, но я сейчас сам протестировал на 1.26, TriggerEvaluate действительно создаёт свой поток. Тогда в execute() нет смысла кроме вейтов.
Забавный факт: execute() не возвращает значение, даже если оригинальная функция это делает. Почему? Vexorian решил, что это не нужно. 🤣

Не удивлюсь, если TriggerExecute на самом деле нифига не быстрее ExecuteFunc.
Загруженные файлы
28

» WarCraft 3 / 16. Функция как объект

"поиск" присутствует только в контексте обычных структур, но это даже не поиск, потому что vJass прекрасно знает, какой индекс свободен во время аллокации новой структуры указанного типа. Выходить за лимит в 8к не рекомендуется, иначе во время каждого обращения к атрибуту или перезаписываемому методу будет происходить резолв массива по индексу структуры.

ScorpioT1000, так а причём тут структуры, если речь про функции и их "интерфейсы"? Структуры другой разговор.
28

» WarCraft 3 / 16. Функция как объект

ScorpioT1000, никакого поиска и заполнения дырок нет. Если у тебя в коде 1000 функции типа takes integer returns nothing, а в качестве переменных юзается 5, будет создан массив триггеров и 5 триггеров только для этих 5 функций.
28

» WarCraft 3 / 16. Функция как объект

О каком вообще замедлении идёт речь в контексте WC3, где главным источником лагов являются утечки и и кол-во активных объектов (типа юнитов). Тот же триггер по сути пустышка. Вон старый-добрый костыльный метод создания события по получению урона плодит ТОННУ событий, а единственный способ их все вайпнуть - вайпнуть сам триггер. Но и без вайпа через 2 часа игры это лагов не вызовет, просто потому что импакт минимальный.
28

» WarCraft 3 / 16. Функция как объект

Не очевидно, но evaluate и execute вызывают новый поток, со своим оп лимитом
evaluate не создаёт.

И правда, какая разница, в насколько слоупочный код оно под капотом развернётся? Ведь главное это удобство. Даже если оно в 1фпс исполняться будет.
В ни насколько не слоупочный код. По результату тоже самое, что и сохранение имени функции в хеш и её последующий вызов через ExecuteFunc. Только в случае vJass юзается массив (быстрее хеша) и TriggerExecute (быстрее ExecuteFunc). Так что юзаем vJass на зло всем чистожассерам, которые вместо глобалок хеш юзают (а такие есть). 🤣

Правда, не нравится мне, что эта фича плодит триггеры. Возможно, надёжнее будет всё тоже самое делать через глобальные поля и boolexpr. Хоть и выглядит уродливо.
Будет тоже самое, только руками. В чём смысл?
28

» WarCraft 3 / JNGP: Rebuild от PT153

Вышла новая версия!
Прокрутить к ресурсу
makkad, понял, тогда добавлю в следующем релизе.
Не прошло и года. Хотя погодите...

Обновление v1.4

раскрыть
  • Добавлены примеры скриптов для Grimex.
  • Добавлены картинки для руководства Grimex.
  • Добавлено руководство UMSWE.
28

» WarCraft 3 / JNGP: ReBuild by Enobraed

Enobraed, там просто перед функциями тоже флаг nosemanticerror нужно поставить. Поставил флаги, компиляция прошла и карта заработала.
она сразу вылетала, в любом случае
Так это потому что была ошибка, из-за чего JassHelper не залил скомпилированный вариант кода в карту.
28

» WarCraft 3 / JNGP: ReBuild by Enobraed

А в чём смысл разных pjass, если самый последний от LeP поддерживает in-code флаги компиляции, которые используются в мемхаке?
28

» WarCraft 3 / Длительность команды отставить на 1.26

Команда мгновенная. Скорее всего в константах стоит максимальная задержка приказов. По дефолту это 0.25, а надо занулить.
28

» WarRaft / IntelliJASS

Koladik, ну карту ты в редакторе сохраняешь, а не в теше. Ты в IDEA можешь просто сделать конфиг для вызова JassHelper для своего скрипта. Как вызвать JassHelper для скрипта, я писал тут.
Что касается списка функций - есть такой сайт. Там есть поиск, а также подробная документация по функциям, чего в function list у теша нет.
28

» WarRaft / IntelliJASS

Koladik, а что за поддержка нужна? Грамматика для vJass и Zinc присутствуют, а компиляцией в JASS может и сам JassHelper справится. В IDEA уже есть все необходимые инструменты для запуска скриптов.
28

» Администрация XGM / Расскажите о вашем опыте использования XGM

Недавно появился новый интерфейс. В целом было норм, но сегодня обновились указания автора и проекта. И стало хуже.
Посреди списка ресурсов становится не ясно, вон тот ресурс кто сделал и где.
Опытный пользователь, конечно, вспомнит, что авторство указывается сверху, но гости сайта этого помнить не могут.

Оно ещё по длине как треть длины поста, достаточно громоздко -> меньше постов на странице
Загруженные файлы
28

» WarCraft 3 / Как вкатиться в WarCraft III и не привлечь внимание санитаров

Вот, что я писал про 1.27:
В общем, я сам там всё глянул, никакой разницы в строках с 1.26 нет. А почему? А потому что халтура. Иконка и строки для валидации скрипта появились только в первом 1.28. JNGP на 1.27b эту кнопку всё равно не отображает. Потому картоделу нет никакого смысла сидеть на 1.27; кто сидит, переходите на 1.26.
Если 1.27 действительно безопаснее для юзера, то юзеры могут и на 1.27 играть, а разрабатывать можно и на 1.26.
По хорошему, можно сделать какой-то JNGP mega rebuild, который будет для 1.27 с рабочей кнопкой проверки скрипта, но если nazarpunk допилит плагин под IntelliJ, то смысла мало.
28

» SOLO MID / На каком Warcraft торчишь, броу?

Чтобы играть - 1.26 RU, 1.26 EN и Reforged. Хотя я давно не играл.
Чтобы делать мапы - 1.26 EN и Reforged.
28

» WarCraft 3 / Вопросы по настройке мультишота

Принятый ответ
Пункт 1 и 5.
Урона на цель - 0.
Максимальное количество целей - 0
Максимальный суммарный урон - Х.
Если Х = 0, то атакуются все цели в радиусе способности.
Если Х > 0, то будет вылетать Х дополнительных снарядов, Х + 1 с основным.
  • If you set values of “Damage Per Target” and “Maximum Number of Targets” to 0, and “Maximum Total Damage” to X, then at most X additional projectiles will be launched. (Prometheus3375)
    • If X = 0, then the ability will target all enemies in its range. (Prometheus3375)
    • If X = 1, then the ability will target 1 enemy in its range but two projectiles appear due to the normal attack flying against the primary target. (Prometheus3375)
Пункт 2 и 4. Используется урон основной атаки и это не изменить.
“Damage Per Target” and “Maximum Total Damage” don't do anything. Probably deprecated in favor of using the attacks actual damage.
Пункт 3. Эти значения указаны в Units/UnitWeapons.slk в полях mindmg1 и maxdmg1, mindmg2 и maxdmg2, которые используются в описании способности.
Эти поля нельзя настроить через WE, изменение параметров атаки не изменит значения этих полей. Для нестандартных юнитов используются значения, указанные для базового юнита.
28

» WarRaft / IntelliJASS

С анонимного акка не показывает.
Инфа 100%, что если я зайду в подсанкционный акк, оно покажет. 🤣
Да я вот вышел из акка, и тоже показало. 🤡
Загруженные файлы
28

» Прочее / Геймплей Stormgate на PC Gaming Show

nazarpunk, не говорили, только потому что ты так и не глянул их видео-презентацию, что я сюда кинул. 🤣
Гейм директор сказал, что буквально новые жанры типа TD и MOBA вышли из под крыла WC3, что его команда работала над редакторами варика и ск2, поэтому они выпустят утилиты и для штормгейта, которые могут быть использованы для создания модов, карт и кампаний.
Всё же перед обсуждением пиара следует с ним ознакомится.