способность временно увеличивает магическую защиту
как мне выбрать определенных юнитов героев от применяющего юнита на local jass?

call GroupEnumUnitsInRange(udg_G,x,y,300.,null)
loop
set u = FirstOfGroup(udg_G)
if (тут условия отбора юнитов) then

endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
udg_G глобальная группа
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Делаешь это на гуи и конвертируешь в код. Профит.
13
SomeFire, этот способ знаю, но она же утечная функция BJ а мне нужен код без утечной)
15
иди на форум и почитай статейки. Это будет проще
29
Николь, ставишь JNPG делаешь, как сказал SomeFire, читаешь статейки из раздела "Jass" и попутно изучаешь как реализованы BJ функции
2
Выбрось из головы правило, что все bj функции утечны. Для примера в том же jngp глянь реализацию UnitRemoveBuffBJ
13
kano, они и правду утечку выщывает по моему опыту
21
Николь, вот статейка.
В остальном согласен с SomeFire и alexprey. Установи JNPG - там есть справка по всем функциям. Заодно поймёшь что такое BJ и что конкретно представляют собой те утечки, о которых все говорят.
23
Николь, открываешь Blizzard.j, смотришь реализацию функции и устраняешь утечки.
13
GF RaiseD, пожалуйста напиши функцию которая выбирает отряд с радиусом 900 от применившего юнита без bj
и делает действия для группы, т.е всех подходящих условию юнитов,
я уже 5 часов не могу сделать;(
JNPG у меня есть
2
Воспользуйся поиском. Полно материала по этому поводу.
Сегодня тебе помогут, а завтра тебе нужно будет пикнуть всех неуязвимых союзников и ты опять попросишь написать тебе код.
25
Ну элементарно жи делается. Приду домой, попробую разьяснить что и как делается.
21
Николь, первое что придумал.
Код
local unit  u

local group YourUnits = GetUnitsInRangeOfLocAll(900,whichLocation)
local integer i = CountUnitsInGroup(YourUnits)

loop
  set u = GroupPickRandomUnit(YourUnits)
  //
  //Любые твои действия +
  //
  GroupRemoveUnitSimple(u,YourUnits)
  set i = i - 1
exitwhen  i = 0 
   call RemoveLocation (whichLocation)
   call DestroyGroup(YourUnits)
   set u = null
endloop

Как-то так. Но пока не тестил.
13
Ancient, обьясни по понятней!
GF RaiseD, почему красный код GetUnitsInRangeOfLocAll это ведь не bj?
21
Николь, не знаю. Не все bj - зло. Но большинство из них вызывают другие функции, к которым можно обращаться и непосредственно. Так же не все функции, которые вызывают BJ-шки нормально оптимизированы. Некоторые вызывают утечки локаций, юнитов, прочего (не обнуляют локалки/не удаляют локации/плодят локации). Потому лучше напрямую обращаться к нужному тебе и прочитать ту статью. В JNGP есть справка, в которой можно посмотреть механизм действия Bj-шок. Некоторые BJ вообще абсурдны - они представляют собой ту же функцию с обратным порядком аргументов и хоть они не всегда вызывают утечки, тут лучше обходится без лишнего.
28
call GroupEnumUnitsInRange(udg_G,x,y,300.,null)
loop
set u = FirstOfGroup(udg_G)
if (тут условия отбора юнитов) then

endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
udg_G глобальная группа
Принятый ответ
25
16GB, а не лучше ли создавать локальную группу и в нее записать? А в глобальную в случае надобности запихивать юнитов.
28
Ancient,
ну глобальная уже создана, а локальную надо создавать/удалять, с глобальной быстрее.
13
16GB, а где добавить способность к групповым юнитам?
23
Николь, тогда задавай сразу следующий вопрос - как потом эту способность убирать, когда они выйдут из зоны действия.
13
SomeFire, я этот знаю добавляю hash и создаю таймер сохраняю юнита и потом удаляю
но мне непонятно, как добавить способность group?
т.е добавить способность подходящей группе для всех юнитов)
23
Пикаешь юнитов в группе и даёшь каждому абилку. Если нужен код - конвертируй.
2
Простите, но это будет продолжаться до бесконечности. У человека нет желания ознакомиться с базой знаний xgm. "Зачем мне тратить время на изучение jass, если скрипты могут написать за меня"
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.