Здравствуйте! мне нужно использовать юнита как снаряд(некликабельный, но выбирался через триггеры "добавить юнитов в отряд по области") как это можно реализовать? я читал что можно через москиты, но в итоге у меня получалось только вернуть юнита в прежнюю форму (с хп баром, кликабельностью)

//call GroupEnumUnitsInRange(g, x, y, 400., f) //ловит всех юнитов, находящихся в радиусе от точке, но москитов не ловит
//call GroupEnumUnitsInRangeCounted(g, x, y, 400., f, 4) //аналогична GroupEnumUnitsInRange, но берет определенное кол-во юнитов. Москитов не ловит
//call GroupEnumUnitsInRangeOfLoc(g, loc,400., f) //аналогична GroupEnumUnitsInRange. Москитов не ловит.
//call GroupEnumUnitsInRangeOfLocCounted(g, loc,400., f, 4) //аналогична GroupEnumUnitsInRangeCounted. Москитов не ловит.
//call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea ,f1) //ловит всех юнитов в области. Москитов не ловит.
//call GroupEnumUnitsInRectCounted(g,bj_mapInitialPlayableArea ,f1, 4) //ловит определенное кол-во юнитов в области. Москитов не ловит. 
//call GroupEnumUnitsSelected(g,GetTriggerPlayer(),f) //ловит юнитов. выделенным игроком. Москитов. очевидно. не ловит.
call GroupEnumUnitsOfPlayer(g,GetTriggerPlayer(),f1) //ловит всех-всех юнитов игрока на карте. Москитов ловит нормально.
//call GroupEnumUnitsOfType(g,"Peasant", f) //ловит всех-всех юнитов с этим именем. Нужно писать английский аналог название (например работник = Peasant). Ловит москитов.
//call GroupEnumUnitsOfTypeCounted(g,"Peasant", f, 4) //ловит опреденное кол-во юнитов группу. Ловит Москитов.
Если вам нужно столкновение снарядов, то можете посмотреть в этом заклинании.
стоит стена (стена может двигаться, она может быть любого типа, она тоже москит) в нее ударяется снаряд
Добавляете стену в группу и при переборе сверяете расстояние.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
bifurcated, вот сделал наработку что то в роде того что ты хочеш только желательно доработать... но с этим сам почитай статьи
ах забыл рекомендую делать подобные скилы на основе "Канал"

26
Например, сделав его без хп бара и выкидывать из выбора при выделении.
Как спрятать хп бар: xgm.guru/p/wc3/hpbar
Этот комментарий удален
9
8gabriel8, выбрасывать при выделении это не вариант, т.к. это неудобно будет
8gabriel8, + на мгновение выделяется
26
А ты событием из категории Игрок пользовался или Боевая единица?
9
8gabriel8, игрок выбирает
тип юнита
убрать выбранного юнита
26
Хотя это такой себе вариант, ведь если выделять рамкой группу твоих юнитов из 12 штук, а в рамке будут и твои юниты-снаряды, то в итоге попадут снаряды в рамку, заняв места для обычных юнитов, и исчезнут из выбора, оставив часть твоих обычных юнитов невыбранными. Надо всё-таки москитов использовать.
9
8gabriel8, угу, но я так и не смог откопать пример или воссоздать
26
Подробнее опиши, что не так с Москитами, и что должно быть.
9
8gabriel8, москиты не выбираются через команду "выбрать юнитов по области в отряд" - единственная проблема
8gabriel8, стоит стена (стена может двигаться, она может быть любого типа, она тоже москит) в нее ударяется снаряд
30
//call GroupEnumUnitsInRange(g, x, y, 400., f) //ловит всех юнитов, находящихся в радиусе от точке, но москитов не ловит
//call GroupEnumUnitsInRangeCounted(g, x, y, 400., f, 4) //аналогична GroupEnumUnitsInRange, но берет определенное кол-во юнитов. Москитов не ловит
//call GroupEnumUnitsInRangeOfLoc(g, loc,400., f) //аналогична GroupEnumUnitsInRange. Москитов не ловит.
//call GroupEnumUnitsInRangeOfLocCounted(g, loc,400., f, 4) //аналогична GroupEnumUnitsInRangeCounted. Москитов не ловит.
//call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea ,f1) //ловит всех юнитов в области. Москитов не ловит.
//call GroupEnumUnitsInRectCounted(g,bj_mapInitialPlayableArea ,f1, 4) //ловит определенное кол-во юнитов в области. Москитов не ловит. 
//call GroupEnumUnitsSelected(g,GetTriggerPlayer(),f) //ловит юнитов. выделенным игроком. Москитов. очевидно. не ловит.
call GroupEnumUnitsOfPlayer(g,GetTriggerPlayer(),f1) //ловит всех-всех юнитов игрока на карте. Москитов ловит нормально.
//call GroupEnumUnitsOfType(g,"Peasant", f) //ловит всех-всех юнитов с этим именем. Нужно писать английский аналог название (например работник = Peasant). Ловит москитов.
//call GroupEnumUnitsOfTypeCounted(g,"Peasant", f, 4) //ловит опреденное кол-во юнитов группу. Ловит Москитов.
Если вам нужно столкновение снарядов, то можете посмотреть в этом заклинании.
стоит стена (стена может двигаться, она может быть любого типа, она тоже москит) в нее ударяется снаряд
Добавляете стену в группу и при переборе сверяете расстояние.
Принятый ответ
9
NazarPunk, юнит не должен иметь хп бар + некликабельный вообще и выбирался в отряд по области
NazarPunk, я думал о этом, но мне кажется это сильно напрягает процессор т.к. снарядов будет от 1 до 10, так же мне приходило в голову сделать сами модельки некликабельными, но это уже совсем еще тот гемор
26
antonpoganui:
8gabriel8, москиты не выбираются через команду "выбрать юнитов по области в отряд" - единственная проблема
Как уже заметил NazarPunk, заноси созданных Москитов сразу в отряд, чтобы с ним работать. Ещё можешь выбирать без области, а просто всех юнитов игрока такого-то типа, так выбираются Москиты.
вроде
30
юнит не должен иметь хп бар + некликабельный вообще и выбирался в отряд по области
Самый надёжный способ - москиты, но по области они не выбираются.
antonpoganui:
но мне кажется это сильно напрягает процессор
Чтоб не напрягался процессор, используйте оптимизации. Иного выбора нет.
8gabriel8:
Ещё можешь выбирать без области, а просто всех юнитов игрока такого-то типа, так выбираются Москиты.
call GroupEnumUnitsOfPlayer(g,GetTriggerPlayer(),f1) //ловит всех-всех юнитов игрока на карте. Москитов ловит нормально.
9
NazarPunk, у меня есть вариант с темным, только боюсь ошибок, ведь говорят что способность баганая. Пример: выбрать все снаряды (отряд), потом забрать у них темный (москиты), выбрать отряд по области, а потом сново дать темный.
30
antonpoganui, что вы так к отряду по области привязались, сравнить расстояние религия не позволяет?
function DistanceBetweenWidgets takes widget widgetA, widget widgetB returns real
    local real dx = GetWidgetX(widgetB) - GetWidgetX(widgetA)
    local real dy = GetWidgetY(widgetB) - GetWidgetY(widgetA)
    return SquareRoot(dx * dx + dy * dy)
endfunction
9
NazarPunk, ну снарядов могут быть множество, а jass мне сложно дается
26
antonpoganui, если у тебя калькулятор тянет больше, чем WinXP, то не переживай за нагрузку на процессор.
30
ну снарядов могут быть множество
Мы тут недавно плодили по 700+ снарядов без проседания fps.
а jass мне сложно дается
Так переходите на lua. На гуи вы больше утечек наплодите.
9
NazarPunk, кратко говоря я не могу перейти на Jass из-за своих недостатков, а что насчет нагрузки, то у меня уже лагает после создания 100-200 юнитов в зависимости от модельки
28
antonpoganui, сделать его неуязвимым и без модели. Выделятся не будет, но зато будет попадать в группы через GroupEnumUnits..().
33
100-200
даже если будет последний патч даже если будет безутечный код, залагают просто 200 юнитов на экране
нужно использовать эффекты (на 126 патче при наличии мемхака тоже всё можно сделать и без луа)
24
Bergi_Bear, говорят, у эффектов есть недостаток в отсутствии интерполяции для них, лично я не заметил большой разницы когда сравнивал, но говорят что на юнитах снаряды плавнее движутся чем на эффектах. Так что, возможно есть смысл по прежнему делать на юнитах отдельные снаряды, особенно если они движутся быстро.
9
Bergi_Bear, кхм... речь не о лагах, а о хп баре и выделяемости.
PT153, альтернатива не плохая, но немного неудобно, ведь нужно будет дамми юнита подстраивать под пустого юнита, кстати а если юнит без модельки не имеет костей и точек выделений, можно ли с редактара моделей убрать их не задевая саму модельку?
30
у эффектов есть недостаток в отсутствии интерполяции для них
Как ни пытался разглядеть, так и не увидел разницы. Зато эффект можно вращать в трёх направлениях и для движка он легче.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.