предыдущий способ это был яркий пример овероптимизации а на событии происходящем достаточно редко
Можно и по старинке без оптимизаций))
TriggerAddAction(levelTrigger, function()
local hero = GetTriggerUnit()
local heroId = GetUnitTypeId(hero)
local level = GetUnitLevel(hero)
if heroId == FourCC('Her0') and level >= 3 then
MorphUnitTo(hero, FourCC('Her1'))
elseif heroId == FourCC('Her1') and level >= 5 then
MorphUnitTo(hero, FourCC('Her2'))
elseif heroId == FourCC('Her2') and level >= 7 then
MorphUnitTo(hero, FourCC('Her3'))
end
end)
TriggerAddAction(levelTrigger, function()
local hero = GetTriggerUnit()
local newHero = GetUnitTypeId(hero) + GetUnitLevel(hero)
local temp = CreateUnit(newHero, Player(PLAYER_NEUTRAL_PASSIVE), 0, 0, 0);
if temp ~= nil then
RemoveUnit(temp)
MorphUnitTo(hero, newHero)
end
end)
Можно вообще не заморачиваться с бафом, а дать крестьянке способность завести ребетёнка и при касте на крестьянина таймером отсчитать кд и заспавнить ребёнка.
нас просто в детстве (в 2007 или когда там хештаблицы появились) , запугали, что больше 1 нельзя и так пошло, но уже никто и не вспомнит почему
Насколько я помню из-за того что таблица тяжёлая и с её огромным диапазоном значений делать несколько просто нет смысла. Есть даже наработка которая позволяет иметь одну таблицу на все случаи жизни.
Ну если ты скажешь как перевести полторы сотни тысяч строк кода cJass на луа с сохранением комментариев, имен переменных и отступов, то буду рад перейти на луа
Достать war3map.j, сконвертировать в lua, ужаснуться кривости кода и переписать начисто.
Вообще, странно, что за 17 лет игры об этом мало информации.
Так потому-что никто статьи не пишет, последняя статья от 26.06.2017JASS: Курс молодого бойца и новичёк при прочтении сломает себе мозг ещё в предисловии. Единственная информация о событиях была найдена здесь:
раскрыть
Unit - A unit Begins casting an ability – Это событие запускает триггер сразу же после каста спелла (Прим. перев. Мана еще не проплачена, кулдаун еще не начался). Это значит, что такое событие может и должно применяться только для запуска триггеров проверки дополнительных условий (проверка возможен ли каст в данный момент, например, расстояние между кастером и целью слишком мало и так далее). Если вы используете это событие как основное событие каста спелла, ловкие игроки получают возможность сжульничать и запустить триггер спелла, без начала кулдауна и проплаты маны.
Unit - A unit Starts the effect of an ability – Это событие запускает триггер в тот момент, когда спелл уже скастован, кулдаун уже начался и мана проплачена. Это событие идеально подходит для запуска триггера спелла.
Unit - A unit Finishes casting an ability – Это событие запускает триггер в момент, когда юнит завершил кастовать спелл. Это полезно в случаях когда, например, вам нужно удалить юнита, который скастовал определенный спелл, и вы хотите быть уверены, что эффект спелла появится. Например, вам нужно удалить юнита, кастующего спелл Heal, вы должны использовать именно это событие, иначе цель не будет вылечена.
PT153, поправил. Форматирование сломалось из-за невнимательности. Хук на уничтожение таймера хорошая вешь, нужно будет статью по хукам запилить и накидать туда полезных примеров. А то начнёшь писать статью, а сослаться некуда и вся полезная информация оказывается в комментариях, которые никто не читает((
Ред. nazarpunk
» WarCraft 3 / Набор предметов для проэкта "Последняя Надежда"
» WarCraft 3 / Триггерный спелл с действием только на определённый тип юнитов
Ред. nazarpunk
» WarCraft 3 / Эволюция юнита через проверку уровня
Ред. nazarpunk
» WarCraft 3 / Эволюция юнита через проверку уровня
» WarCraft 3 / Эволюция юнита через проверку уровня
» WarCraft 3 / Размножение
» WarCraft 3 / Эволюция юнита через проверку уровня
Действие:
если уровень = 3 морфим в это
если уровень = 5 морфим в то
если уровень = 7 морфим в сё
» WarCraft 3 / Размножение
Ред. nazarpunk
» WarCraft 3 / Можно ли уничтожить hashtable?
Ред. nazarpunk
» WarCraft 3 / Можно ли уничтожить hashtable?
» WarCraft 3 / Размножение
Ред. nazarpunk
» WarCraft 3 / Перезарядка пассивных предметов
Ред. nazarpunk
» WarCraft 3 / [lua] Двигаем снаряды
Unit - A unit Starts the effect of an ability – Это событие запускает триггер в тот момент, когда спелл уже скастован, кулдаун уже начался и мана проплачена. Это событие идеально подходит для запуска триггера спелла.
Unit - A unit Finishes casting an ability – Это событие запускает триггер в момент, когда юнит завершил кастовать спелл. Это полезно в случаях когда, например, вам нужно удалить юнита, который скастовал определенный спелл, и вы хотите быть уверены, что эффект спелла появится. Например, вам нужно удалить юнита, кастующего спелл Heal, вы должны использовать именно это событие, иначе цель не будет вылечена.
» WarCraft 3 / Характеристика предмета
» Гильдия «Черамор» / Чародейка Иона
» WarCraft 3 / [lua] Двигаем снаряды
» WarCraft 3 / Характеристика предмета
» WarCraft 3 / Характеристика предмета
» WarCraft 3 / Характеристика предмета
Ред. nazarpunk
» WarCraft 3 / Характеристика предмета
» WarCraft 3 / Характеристика предмета
» WarCraft 3 / Сохранение Игры
» WarCraft 3 / Сохранение Игры
» WarCraft 3 / [lua] Двигаем снаряды
Ред. nazarpunk
» WarCraft 3 / [lua] Двигаем снаряды