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

//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
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
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.