попробуй сделать задержку. при инициализации мб пока что не подгрузилось, а ты даешь сразу приказы ... или измени событие на "Таймер спустя ... сек"
че так много триггеров?
DracoL1ch, а у древ поворачиваются, правда в ту сторону, где находится противник. и это повернуть нельзя приказом. за это отвечает абила "пустить корни"
тоже самое можно вращать по оси y, z
знаю, что можно сделать поменьше кадров. Я сделал побольше (17 кадров), чтобы было с чем сравнивать. Как получилось. Просто изначально у меня было 5 кадров и было неясно.
GetLocalPlayer, да вспомнил еще. об этом xgm.guru/forum/showthread.php?t=58030 я не модельщик, но можно положение юнита с помощью такой модели как угодно расположить? и это работает только с конкретными способностями (вроде смерч, вихрь)?
вот на мемхаке можно. сверх ногами дергал. но надо знать какие углы поворачивать Недостаток этой функции - юнит утрачивает возможность разворачиваться лицом в точку после юза (возможно это как-то лечится, там скорость поворота изменить). Короче надо у драколича спрашивать. мб юнита морфнуть или удалить и создать заново.
Эти все повороты поворачивают не юнита, а модель. Учтите, когда он подбежит к вам, может повернута модель так, что бегать будет боком или сверх ногами, и бить будет не в туда куда смотрит, а куда указано юнитом, то есть facing
Hate, на мемхаке делал такое вращение. Получилось интересно. Помогал мне Драколич.
поворот на мемхаке
//Масштабирование и повороты текущего юнита
//Основные параметры:
//facing - угол поворота юнита в радианах.
//flag - отвечает за масштабированием (1 - включить масштаб/0 - выключить). хотя масштаб можно поменять близзардской нативкой SetUnitScale
//Короче здесь при включенном flag не только увеличивается в размере модель, но и одновременно поворачивается. При выключенном флаге поворачивается модель.
//три параметра r1,r2,r3 - углы в радианах, влияют на модель. В частности, на масштаб, и на повороты модели (короче модель юнита можно накренить набок, или повернуть вверх дном и разное).
//может показаться, что facing влияет на повороты r1,r2,r3.
//facing - поворот юнита: морда, куда смотрит и двигается юнит, и совершает атаки и прочее.
//а углы r1,r2,r3 - совсем другое. Это повороты модели. Можно взять и повернуть вбок, всегда будет бегать боком (короче лицо принимает боковая сторона модели).
//r1 - это yaw (рыскание) - поворот носом модели влево-вправо. можно сказать это поворот модели вокруг оси z (если так смотреть). или что-то похожее на facing. По умолчанию угол = 90
//r2 - это pitch (тангаж) - поворот носом модели вверх-вниз. можно даже сверх ногами перевернуть модель. По умолчанию угол равен 0 градусов
//r3 - это roll (крен) - поворот боковой стороны модели вверх-вниз. можно тоже сверх ногами перевернуть модель. По умолчанию угол равен 0 градусов
//про все эти углы yaw, pitch, roll можно прочитать в интернете. Еще советую прочитать про углы эйлера, и изучить матрицу
//как работает матрица или углы эйлера - последовательно: сначала поворачивает на угол r1, потом поворачивают на угол r2, затем r3 (т.е. эта такая суммарная работа)
//есть недостаток углов эйлера - шарнирный замок (см. в интернете). мб быть так что не получится так как хотели бы. Сложно рассчитать: надо сначала привыкнуть, запутаться легко.
//отрицательное значение facing, r1,r2,r3 - поворот в противоположную сторону
//Недостаток этой функции - юнит утрачивает возможность разворачиваться лицом в точку (возможно это как-то лечится, там скорость поворота изменить)
function CalculateObjectOrientationRules takes handle h, real r1, real r2, real r3, real facing, integer flag returns nothing
//yaw, pitch, roll
call WMem(DataArray3Adress+800,mR2I(r1))
call WMem(DataArray3Adress+804,mR2I(r2))
call WMem(DataArray3Adress+808,mR2I(r3))
call CallFastCallWith4Args(GameDLL+0x4B2C50,DataArray3Adress+700,DataArray3Adress+800,mR2I(facing),flag)
call CallThisCallWith10Args(GameDLL+0x4D3170,RMem(ConvertHandle(h)+0x28),RMem(DataArray3Adress+700),RMem(DataArray3Adress+704),RMem(DataArray3Adress+708),RMem(DataArray3Adress+712),RMem(DataArray3Adress+716),RMem(DataArray3Adress+720),RMem(DataArray3Adress+724),RMem(DataArray3Adress+728),RMem(DataArray3Adress+732))
endfunction
//==================
щас в новой версии варкрафт нет функции на повороты спец-эффектов, юнитов? читал на хайве про спецэффекты, а у нас нет еще пробы?
Попробуй использовать способность Вырвать дерево 'Agra'. прочитать можно тут в разделе "Влияет на атаку"
Там можно для включения рядом создать дерево, и триггерно дать комманду вырвать дерево. Для выключения можно просто удалить бафф 'Bgra'.
Не знаю, не пробовал: можно изначально юниту выключить атаку, но когда он вырвет деревце, у него должна появится атака. Будет тебе автоатака, ее можно триггерно включать и выключать.
SсRealm, он хочет иконку хорошую сделать. А иконки хорошо делает. Только вот не может придумать, что на них нарисовать такое, чтобы было естественно и понятно.
цилиндрический куб (батут, можно с пружинами), и изобразить над ним стрелку вверх-вбок
короче подумал зря рисовал мини-обзорчик. ладно, зато понял
скрин
см. ниже скрин,
у меня почему-то компас выдал обычный угол 6-ного многоугольника = 120°
а по формуле должен получится 60°
Ищу то не А-центральный, а обычный. Все понял, это называется внутренний угол. попутал
по идеи радиус это speed
конечная точка: xPos + speed * Cos (angle * bj_DEGTORAD) yPos + speed * Sin (angle * bj_DEGTORAD)
длина между центром и конечной точкой (берем BJ-функцию и под себя переделываем):
function DistanceBetweenPoints takes location locA, location locB returns real
local real dx = GetLocationX(locB) - GetLocationX(locA)
local real dy = GetLocationY(locB) - GetLocationY(locA)
return SquareRoot(dx * dx + dy * dy)
endfunction
» WarCraft 3 / Командование группой
» WarCraft 3 / Прыжок
» WarCraft 3 / Не могу вспомнить название карты, подскажите пожалуйста!
Ред. MpW
» WarCraft 3 / Почему не устанавливается точка сбора?
че так много триггеров?
» Game Dev / Деревья из Heroes of Newerth
Ред. MpW
» WarCraft 3 / повернуть здание через мемхак
» WarCraft 3 / Способность феникса в старафт 2
знаю, что можно сделать поменьше кадров. Я сделал побольше (17 кадров), чтобы было с чем сравнивать. Как получилось. Просто изначально у меня было 5 кадров и было неясно.
Ред. MpW
» WarCraft 3 / 2 книги заклинаний у одного воина
Ред. MpW
» WarCraft 3 / Способность феникса в старафт 2
Ред. MpW
» WarCraft 3 / Способность феникса в старафт 2
чтобы зафиксировать в одном положении достаточно два одинаковых кадра: начало и конец оставить.
» WarCraft 3 / Способность феникса в старафт 2
» WarCraft 3 / Способность феникса в старафт 2
https://www.xgm.guru/p/wc3/format-mdl
Ред. MpW
» WarCraft 3 / Способность феникса в старафт 2
Ред. MpW
» WarCraft 3 / Способность феникса в старафт 2
Ред. MpW
» WarCraft 3 / Способность феникса в старафт 2
Недостаток этой функции - юнит утрачивает возможность разворачиваться лицом в точку после юза (возможно это как-то лечится, там скорость поворота изменить). Короче надо у драколича спрашивать. мб юнита морфнуть или удалить и создать заново.
Ред. MpW
» WarCraft 3 / Способность феникса в старафт 2
Ред. MpW
» WarCraft 3 / Запретить автоатаку
Там можно для включения рядом создать дерево, и триггерно дать комманду вырвать дерево. Для выключения можно просто удалить бафф 'Bgra'.
Ред. MpW
» WarCraft 3 / Концепт иконок
Ред. MpW
» WarCraft 3 / Концепт иконок
Ред. MpW
» WarCraft 3 / Способности предмета
» WarCraft 3 / Мечта о мотоцикле в Варкрафт
Ред. MpW
» WarCraft 3 / Радиус окружности, образованной движением по кругу
у меня почему-то компас выдал обычный угол 6-ного многоугольника = 120°
а по формуле должен получится 60°
Ищу то не А-центральный, а обычный. Все понял, это называется внутренний угол. попутал
Ред. MpW
» WarCraft 3 / Радиус окружности, образованной движением по кругу
Ред. MpW
» WarCraft 3 / Радиус окружности, образованной движением по кругу
Ред. MpW
» WarCraft 3 / Радиус окружности, образованной движением по кругу
конечная точка:
xPos + speed * Cos (angle * bj_DEGTORAD)
yPos + speed * Sin (angle * bj_DEGTORAD)
function DistanceBetweenPoints takes location locA, location locB returns real
local real dx = GetLocationX(locB) - GetLocationX(locA)
local real dy = GetLocationY(locB) - GetLocationY(locA)
return SquareRoot(dx * dx + dy * dy)
endfunction