28

» WarCraft 3 / [lua] Предотвращаем создание утечек GUI

что lua является языком программирования
??
Может, благодаря тому, что в lua есть функциональное программирование?
немного ускорить выполнение кода
Я бы не был бы в этом так уверен. Всё же ты часть нативок превращаешь в код, что выполняется на виртуальной машине.
Create Units Facing Point
А в чём тут разница?
Автоматически удалям утечки GUI
Неверное название статьи. Не удаляем, а предотвращаем их создание.
Удаление реализовано тут.
28

» WarCraft 3 / Периодически пропадает плавающий текст

Поддерживая то, что сказали господа выше: игрок может видеть лимитированное количество texttag одновременно.
дополнительно
        call SetTextTagVisibility(text, GetLocalPlayer() == owner)
28

» WarCraft 3 / Нейронная Сеть в WC3

Нейронка же обучаться как-то должна, нейроны должны где-то быть. Это точно какой-то сервер. У SC2 есть API для этого, у WC3 нет, будет ли у ремейка - неизвестно. К тому же, AlphaStar не фановый проект, а исследовательская работа.
28

» WarCraft 3 / Как сделать так, что бы герой строился в алтаре как герой?

Naadir, не думаю.
раскрыть
function ReducePlayerTechMaxAllowed takes player whichPlayer, integer techId, integer limit returns nothing
    local integer oldMax = GetPlayerTechMaxAllowed(whichPlayer, techId)

    // A value of -1 is used to indicate no limit, so check for that as well.
    if (oldMax < 0 or oldMax > limit) then
        call SetPlayerTechMaxAllowed(whichPlayer, techId, limit)
    endif
endfunction

//===========================================================================
function MeleeStartingHeroLimit takes nothing returns nothing
    local integer index

    set index = 0
    loop
        // max heroes per player
        call SetPlayerMaxHeroesAllowed(bj_MELEE_HERO_LIMIT, Player(index))

        // each player is restricted to a limit per hero type as well
        call ReducePlayerTechMaxAllowed(Player(index), 'Hamg', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Hmkg', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Hpal', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Hblm', bj_MELEE_HERO_TYPE_LIMIT)

        call ReducePlayerTechMaxAllowed(Player(index), 'Obla', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Ofar', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Otch', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Oshd', bj_MELEE_HERO_TYPE_LIMIT)

        call ReducePlayerTechMaxAllowed(Player(index), 'Edem', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Ekee', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Emoo', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Ewar', bj_MELEE_HERO_TYPE_LIMIT)

        call ReducePlayerTechMaxAllowed(Player(index), 'Udea', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Udre', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Ulic', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Ucrl', bj_MELEE_HERO_TYPE_LIMIT)

        call ReducePlayerTechMaxAllowed(Player(index), 'Npbm', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Nbrn', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Nngs', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Nplh', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Nbst', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Nalc', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Ntin', bj_MELEE_HERO_TYPE_LIMIT)
        call ReducePlayerTechMaxAllowed(Player(index), 'Nfir', bj_MELEE_HERO_TYPE_LIMIT)

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop
endfunction
28

» WarCraft 3 / Как сделать так, что бы герой строился в алтаре как герой?

В Melee действиях есть опция "Установить лимит на героев", она делает тоже самое, что сказал 8gabriel8, но только для стандартных героев.
28

» WarCraft 3 / Можно ли перенести данные из редактора войск на другую карту?

Можно с помощье WEU Enchancer
Можно и без него. Достаточно глянуть опции стандартного WE, о которых уже сказал 8gabriel8.
С рельефом сложнее, средствами WE никак. Лучше сделать карту с рельефом, сделать её копию и в копии дальше её делать.
28

» WarCraft 3 / Радар / временный модификатор видимости

Hate:
модифицировать радиус видимости можно подзорной трубой. при постройке выдавай абилку с нужным радиусом
Ею нельзя обойти кап в 1800, если нужно больше, то только способом Extremator.
Но я бы вместо R_Max проверял, что R_Max != N.
28

» WarCraft 3 / Какие ошибки может вызывать таймер?

При грамотном его использовании конечно.
Предыдущий такой вопрос удалили, вот список всех багов таймеров.
28

» WarCraft 3 / Спелл "оседлать гиппогрифа"

Карту приложите, пожалуйста. Используются оригинальные способности? Если да, то косяк на вашей стороне.
28

» WarCraft 3 / Почему юнит жив (существует)

8gabriel8:
Там просто о том, что такой юнит может быть задействован другими триггерными способностями и не будет отображаться в статистике, как убитый.
А, ну это для меня страшно.
28

» WarCraft 3 / Почему юнит жив (существует)

pro100master, я же кинул карту, там весь код в 3-х местах.
prog:
скорее всего с этим ты и столкнулся
А почему у этого элемента есть жизнь и имя?
8gabriel8:
Нужна задержка перед проверкой, жив ли юнит, после функции RemoveUnit. Хотя бы 0.00 секунд.
Совершенно верно.
А вот после KillUnit() функция UnitAlive() сразу же возвращает false.
28

» WarCraft 3 / Эволюция юнита через проверку уровня

Принятый ответ
Да, массив + один триггер это всегда хорошая идея.
С: Инициализация
Д:
массив_рун[3] = равкод_руны_жаба
массив_рун[5] = равкод_руны_большаяжаба
массив_рун[7] = равкод_руны_огромнаяжаба

С: Юнит Получает уровень
У: Unit-type героя равно НУЖНЫЙ_ЮНИТ
Д:
Создать предмет массив_рун[уровень героя] в позиции героя
Если последний созданный предмет не null, то
    дать последний созданный предмет герою.  // герой = Leveling Hero
28

» WarCraft 3 / Можно ли уничтожить hashtable?

А ты в курсе что таблица начинает лагать если её захламить одновременно кучей всего? У меня тоже есть одна общая таблица для игры и её НЕЛЬЗЯ засирать такими данными.
Ты её просто не чистил, а чистить нужно.
Да и зачем 100500 хештаблиц? У меня карта с кастомным хп, ресурсами, способностями, баффами, 1 хештаблица и всё работает.
28

» WarCraft 3 / [lua] Двигаем снаряды

Ставить на паузу таймер нужно, потому что ты работаешь с весьма малым периодом, а периодический таймер стартует повторно до запуска своей функции. Также ставить на паузу нужно, если периодический таймер может быть удалён действием извне.
В обоих случаях может произойти ситуация, что таймер запустит свою функцию и будет удалён, GetExpiredTimer() вернёт null, и все действия, которое по логике кода не должны быть выполнены, будут выполнены. Пауза решает данную проблему, потому вообще можно сделать так.
Ты можешь сделать периодический таймер с периодом 0, внутри коллбека выводить его хендл и удалять таймер. По идее, таймер запустит коллбек 1 раз, но через сообщения ты увидишь, что это не так. Добавишь паузу перед удалением -> будет 1 раз.

У меня бывала ситуация, что юнит удалялся как раз в тот момент, когда его таймер хпрегена стартовал свою функцию. При удалении юнита удаляется всё, что с ним связано, таймер хпрегена не исключение. Из-за этого выходила ситуация, что функция запускалась с удалённым таймером, у которого хендл 0, из-за чего связанная с ним структура тоже 0. Одним словом, выполнялось то, что не должно выполнятся. Добавил паузу - баг исчез.
28

» WarCraft 3 / Разработка карты по warcraft 2

Как сделать улучшенного юнита?
Подобных вопросов много, тебе нужно изначально заблокировать строительство ranger, сделать грейд, который блокирует archer и разблокирует ranger, сделать способность на основе Chaos или Berserk (без иконки), в поле "New Model" (или как там) поставить ranger, а в требованиях твой грейд. Способнотсь дать archer. Поговаривают ещё, что нужно поставить взаимосвязь эквивалентов, но я не знаю, зачем это поле.
Как убрать сборный пункт
Попробуй удалить способность 'ARal'.
28

» WarCraft 3 / что значит у моделек не импортируемых текстур

Принятый ответ
Если есть импортируемые текстуры, то помимо самой модели нужно ещё и импортировать текстуры. На странице модели будут указаны текстуры и пути к ним. Текстуры можно импортировать в карту через Редактор Импорта. После импорта файла ему можно задать путь, щёлкнув два раза ЛКМ по нему в списке.
Если импортируемых текстур нет, то нужно только импортировать модель.
28

» WarCraft 3 / Характеристика предмета

только там ещё нужно в разрешённых целях указать Сам воин.
Да, совсем забыл. Нужно указать Сам воин, Уязвимые, Неуязвимые.
28

» WarCraft 3 / [lua] Двигаем снаряды

в ремастере сильно что-то изменится.
С чем чёрт не шутит.
Единственная информация о событиях была найдена здесь
Вот тестовая карта, её нужно чутка дополнить для верного определения CHANNEL события. К слову, разницу между CHANNEL и CAST мне объяснили тут.
Загруженные файлы
28

» WarCraft 3 / Характеристика предмета

Принятый ответ
PomogiteMneYaBo, нет, в этой карте показано, что отрицательные значения у способности дотинок округляются до 0.
Сделай способность на основе способности Slow Aura (Tornado) [Aasl], выставь там нужный процент замедления, эту способность переведи в разряд предметных и дай предмету. Также рекомендую сделать свой бафф на основе Tornado (Slow Aura) [Basl], дать ему нужную иконку, описание, и заменить у твоей способности бафф на этот.
28

» WarCraft 3 / [lua] Двигаем снаряды

NazarPunk, про события каста я давно хочу написать, но лень и хочу подождать выхода ремастера (хотя бы альфа-беты), чтобы информация было актуальна. Вообще, странно, что за 17 лет игры об этом мало информации.