24

» WarCraft 3 / Заклинание: Вихрь Иллюзий

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

У меня есть другой вопрос - зачем кидать юниты даммики на основе кастера, если можно с тем-же успехом все через эффекты сделать в 1.31? Ради области обзора, разве что.
24

» WarCraft 3 / Как остановить регенерацию здоровья?

Часть полей работает, часть нет. Не рабочих больше, чем рабочих. Значительная часть работает, но реальные данные берутся не там где мы их меняем - в результате поле меняется, а поведение юнита нет.
24

» WarCraft 3 / Возможности Lua относительно JASS\vJASS

Кложуры и передача данных с их помощью в нативные каллбеки от форгрупа и таймеров через анонимные функции.
Динамическая природа языка, позволяющая в любой момент времени заменить любую функцию чем-то другим. Хороший пример - оборачиваем вызов RemoveUnit своей оберткой и делаем какие-то действия перед тем как вызвать настоящий RemoveUnit.
Своеобразное но рабочее ООП.
Таблицы которые одновременно и массив и хештаблица и ассоциативный массив и при этом очень быстро работают.
Передача и хранение функций в параметрах и переменных.
Передача массивов в параметрах.
Метатаблицы и метаметоды, позволяющие переопределять поведение таблиц в разных ситуациях - добавление и получение элементов, различные операторы, вся эта фигня. Пример - можно запилить "класс" вектор и пользоваться векторной математикой без костылей, переопределив для векторов операторы сложения, вычитания, умножения и так далее.

Вобще, давно пора завести статью на эту тему и собирать там все мелкие и большие фишечки и возможности Lua в сравнении с JASS.
24

» WarCraft 3 / Действие спиной.

Один из дешевых и сердитых вариантов - кастомная модель с анимацией разворота.
24

» WarCraft 3 / Заклинание: Длань Господня

PT153, к сожалению кастом код весь инжектится при сохранении в код карты раньше функций инициализации - переопределить их напрямую не выйдет. Можно попробовать по играться с метатаблицами или хуками, но скорее всего не выйдет или выйдет но через подлежащий обрезке функционал.
Главный вопрос - зачем править руками конфиг и мейн? Какие задачи решаются правкой этих двух функций и не могут быть решены другими способами?
24

» WarCraft 3 / Допустимые значения РО

На это просто влияет несколько значений, помимо перезарядки.
24

» WarCraft 3 / Заклинание: Длань Господня

во время клика на карту
Откуда дровишки о том что на этом этапе вобще что-то выполняется из юзер-кода? И почему я уверен что код начинает выполняться где-то в процессе загрузки карты, уже после перехода из лобби?
24

» WarCraft 3 / Долгий прогруз

Публиковать карты на 1.31 еще рановато, а вот начать осваивать Lua уже таки стоит.
GUI уже отлично конвертится в Lua. Кастом скрипт тоже пытается конвертиться, но не очень успешно. А вот все написанное с использованием vJass нужно переделывать по нормальному на Lua самостоятельно - конвертер возможен, но рукам результат выйдет лучше.
24

» WarCraft 3 / Подсветка синтаксиса 1.31

NazarPunk, видел еще собираемые на хайве доки с инфой которой нет в j файлах. Сам бы уже придумывать что-то начал, если бы лень не было и лишнее время было.
24

» WarCraft 3 / Заклинание: Случайная Молния

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

» WarCraft 3 / Подсветка синтаксиса 1.31

NazarPunk, если точнее, там два плагина плюс библиотека со списком нативок под один из них. Список нативок, кстати, по хорошему дополнить бы описаниями для тех нативок для которых описания существуют. Но кто ж будет на это время тратить.
24

» WarCraft 3 / Официально стал доступен PTR 1.31

ScorpioT1000, у меня в свое время стояло больше десятка аддонов и из них я только один правил руками... Видимо подросло новое поколение аддонописателей, которому на все похуй...
24

» WarCraft 3 / Официально стал доступен PTR 1.31

H, я не случайно уточнил - если не волнует сохранение работоспособности - в нормальных условиях, естественно, никто вносить нарушающие API изменения не будет.
сломается, потому что не ты один будешь "правильно делать". В каждой либе какой нибудь умник будет по своему функции переопределять.
Ну и в топку такие либы, которые не в состоянии сохранить совместимость - если такую ерунду автор либы не осилил, то это будет меньшая из всех проблем, как показывает мой опыт.
Еще раз повторюсь - не знаю как сейчас, а раньше переопределение нативок это была основа всех интерфейсных аддонов в WoW и ничего, научились как-то авторы аддонов вести себя прилично и не ломать контракт того что переопределяют.
24

» WarCraft 3 / Официально стал доступен PTR 1.31

ScorpioT1000, если правильно делать - не сломаются. Вон значительная часть интерфейсных аддонов на этой магии работает и ничего, не ломаются, даже когда одну и ту же нативку оборачивают за счет того что по факту начинают оборачивать друг друга в порядке загрузки, после того как первый обернул нативку.
24

» WarCraft 3 / Официально стал доступен PTR 1.31

PornoMishka, так фактический результат соответствует этому заявлению - меняется поведение того, что считается нативкой с точки зрения API. Все последующие обращения к этой нативке в коде карты вызовут нашу обертку, которая, кстати, не обязана быть оберткой, если нас не волнует сохранение работоспособности - никто не мешает вместо вызова оригинальной нативки творить любой бред.
24

» WarCraft 3 / Официально стал доступен PTR 1.31

Еще немного шок-контента для тех кто не знает что такое Lua
local function ehandler( err )
   print( "ERROR:", err )
end
local TestLib = {}
TestLib.debug = true

function TestLib.CustomRemove(u)
  print("removing"..GetUnitName(u))
  return TestLib.RemoveOrigin(u)
end

function TestLib.CustomizeRemove()
  TestLib.RemoveOrigin = RemoveUnit
  RemoveUnit = TestLib.CustomRemove
end

if TestLib.debug then
  TestLib.CustomRemoveImpl = TestLib.CustomRemove
  TestLib.CustomRemove = function(u)  xpcall(function() return TestLib.CustomRemoveImpl(u) end,ehandler) end

  TestLib.CustomizeRemoveImpl = TestLib.CustomizeRemove
  TestLib.CustomizeRemove = function(u)  xpcall( TestLib.CustomizeRemoveImpl ,ehandler) end
end

TestLib.CustomizeRemove()
1 переопределяем поведение "нативки" - заменяем вызов RemoveUnit нашей оберткой которая может делать что угодно, в этом примере просто пишет на экран имя юнита и потом вызывает оригинальную RemoveUnit
2 переопределяем свои собственные функции если проставлен флаг отладки, чтобы они писали на экран все произошедшие внутри ошибки
24

» WarCraft 3 / Размер здания

Прежде всего, вы путаете текстуру фундамента и карту проходимости, это две разные вещи.
24

» WarCraft 3 / Отлов урона на 131 PTR

Вместо события DAMAGED берем событие DAMAGING и получаем урон ДО нанесения и возможность его поменять прямо там, без необходимости лечить цель и наносить урон еще раз.
24

» WarCraft 3 / Увеличение урона при половине здоровья

Bergi_Bear, да вы там вроде уже и сами почти все разобрали. Способа гарантированно получить одной командой информацию что урон именно с руки действительно нет, но пользуясь доступной информацией и тщательно учитывая все источники урона можно добиться 100% точности угадывания и это намного проще и удобней, чем всем выдавать яд Вот криты, например, пока отследить нельзя, факт.
Единственное что - вместо события DAMAGED берем событие DAMAGING и получаем урон ДО нанесения и возможность его поменять прямо там, без необходимости лечить цель и наносить урон еще раз.
24

» WarCraft 3 / Увеличение урона при половине здоровья

Bergi_Bear, как же нет, если есть - в PTR 1.31 точно можно получить и вроде даже поменять тип урона. Более того, можно даже отследить большую часть возвращаемого урона от всяких шипов - они почти все возвращают специальные типы урона.
Опять-же, из мира PTR - зеленый урон должно быть можно менять через выдачу пассивки на повышение урона и изменение статов этой пассивки индивидуально у этого юнита. А если пойти еще дальше, то можно запилить свой кастомный фрейм информации о юните и выводить там те значения какие хотим.