Формула возвращает длинну от бесконечной прямой линии, которая проходит через [Xa,Ya] [Xb,Yb]. Тобишь нужно ещё сделать проверку на то, что цель находится перед кастером.
Хотя вроде как должен учитываться физический размер.
При GroupEnumUnitsInRange не учитывается физический размер, поэтому нужно при наборе в группу добавлять к радиусу максимальный физ.размер, а уже при переборе проверять функцией IsUnitInRangeXY.
Или вообще выбирать всех юнитов и радиусе урона и считать перпендикуляр от прямой.
function Perpendicular takes real Xa,real Ya,real Xb,real Yb,real Xc,real Yc returns real
return SquareRoot((Xa - Xc) * (Xa - Xc) + (Ya - Yc) * (Ya - Yc)) * Sin(Atan2(Yc-Ya,Xc-Xa) - Atan2(Yb-Ya,Xb-Xa))
endfunction
Я просто хз что это за команда, но судя по переводу - заставляет кого-то куда-то смотреть
Если посмотреть на параметры, то да заставляет кость повернуться к цели:
---@param whichUnit unit
---@param whichBone string
---@param lookAtTarget unit
---@param offsetX real
---@param offsetY real
---@param offsetZ real
---@return nothing
function SetUnitLookAt(whichUnit, whichBone, lookAtTarget, offsetX, offsetY, offsetZ) end -- (native)
Обновил софтину, кучу всего улучшил, файлы common.j, blizzard.j, common.ai теперь парсятся без ошибок, синтаксический анализатор в выхлопном луа коде тоже проблем не обнаружил, emmyDoc добавляется куда только можно. Можно проверять
Всё отлично работает, обновил файлы в своей статье.
do
local ability = FourCC('Aave')
local location = Location(0, 0)
---@param target unit
---@param z real
function SetUnitZ(target, z)
UnitAddAbility(target, ability)
UnitRemoveAbility(target, ability)
MoveLocation(location, GetUnitX(target), GetUnitY(target))
SetUnitFlyHeight(target, z - GetLocationZ(location), 0)
end
end
Не уверен, но возможно сборщик мусора в луа удаляет триггер потому что он локальный и после выхода из функции на него больше никто нигде не ссылается, попробуй присвоить его глобальной переменной.
Потрётся только ссылка на триггер, а с триггером ничего не случится.
а запрещать для игрока, если игрок может управлять только 1 таким юнитом.
Можно и для юнита запрещать
---@param whichUnit unit
---@param abilId integer
---@param flag boolean
---@param hideUI boolean
function BlzUnitDisableAbility(whichUnit, abilId, flag, hideUI) end
Ред. nazarpunk
» WarCraft 3 / Урон по линии
Ред. nazarpunk
» WarCraft 3 / Урон по линии
» WarCraft 3 / Приведите примеры работы с SetUnitLookAt
Ред. nazarpunk
» WarCraft 3 / Приведите примеры работы с SetUnitLookAt
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
» WarCraft 3 / [lua] Подсветка кода во внешнем редакторе
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
Ред. nazarpunk
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
https://www.xgm.guru/files/100/237543/comments/436948/blizzard.j
https://www.xgm.guru/files/100/237543/comments/436948/common.ai
https://www.xgm.guru/files/100/237543/comments/436948/blizzard.j...
https://www.xgm.guru/files/100/237543/comments/436948/common.ai....
» WarCraft 3 / Поднятие юнита в воздух.
» WarCraft 3 / Reforged на LUA
Ред. nazarpunk
» WarCraft 3 / Ентер Рект
» WarCraft 3 / Геометрические функции - проекция
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
Ред. nazarpunk
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
Ред. nazarpunk
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
Ред. nazarpunk
» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua
» WarCraft 3 / Color
» WarCraft 3 / Галочка изначально включен jass
» WarCraft 3 / Обнулить GetEventDamage()
» WarCraft 3 / [lua] Кастуем все заклинания используя один триггер
» WarCraft 3 / Свитч-панелька для скиллов [лучший способ в 1.31]
» WarCraft 3 / Оптимизация jass кода
» WarCraft 3 / Свитч-панелька для скиллов [лучший способ в 1.31]