как выбрать союзных героев в радиусе 900 jass?
способность временно увеличивает магическую защиту
как мне выбрать определенных юнитов героев от применяющего юнита на 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 глобальная группа



Просмотров: 2 267

» Лучшие комментарии


SomeFire #1 - 3 года назад 0
Делаешь это на гуи и конвертируешь в код. Профит.
Nickol #2 - 3 года назад 0
SomeFire, этот способ знаю, но она же утечная функция BJ а мне нужен код без утечной)
EnergyFrost #3 - 3 года назад (отредактировано ) 2
иди на форум и почитай статейки. Это будет проще
alexprey #4 - 3 года назад 0
Николь, ставишь JNPG делаешь, как сказал SomeFire, читаешь статейки из раздела "Jass" и попутно изучаешь как реализованы BJ функции
kano #5 - 3 года назад 0
Выбрось из головы правило, что все bj функции утечны. Для примера в том же jngp глянь реализацию UnitRemoveBuffBJ
Nickol #6 - 3 года назад -2
kano, они и правду утечку выщывает по моему опыту
Raised #7 - 3 года назад 0
Николь, вот статейка.
В остальном согласен с SomeFire и alexprey. Установи JNPG - там есть справка по всем функциям. Заодно поймёшь что такое BJ и что конкретно представляют собой те утечки, о которых все говорят.
SomeFire #8 - 3 года назад 0
Николь, открываешь Blizzard.j, смотришь реализацию функции и устраняешь утечки.
Nickol #9 - 3 года назад 0
GF RaiseD, пожалуйста напиши функцию которая выбирает отряд с радиусом 900 от применившего юнита без bj
и делает действия для группы, т.е всех подходящих условию юнитов,
я уже 5 часов не могу сделать;(
JNPG у меня есть
kano #10 - 3 года назад 0
Воспользуйся поиском. Полно материала по этому поводу.
Сегодня тебе помогут, а завтра тебе нужно будет пикнуть всех неуязвимых союзников и ты опять попросишь написать тебе код.
Nickol #11 - 3 года назад 0
kano, :\
Ancient #12 - 3 года назад 0
Ну элементарно жи делается. Приду домой, попробую разьяснить что и как делается.
Raised #13 - 3 года назад 0
Николь, первое что придумал.
» Код
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

Как-то так. Но пока не тестил.
Nickol #14 - 3 года назад 0
Ancient, обьясни по понятней!
GF RaiseD, почему красный код GetUnitsInRangeOfLocAll это ведь не bj?
Raised #15 - 3 года назад 0
Николь, не знаю. Не все bj - зло. Но большинство из них вызывают другие функции, к которым можно обращаться и непосредственно. Так же не все функции, которые вызывают BJ-шки нормально оптимизированы. Некоторые вызывают утечки локаций, юнитов, прочего (не обнуляют локалки/не удаляют локации/плодят локации). Потому лучше напрямую обращаться к нужному тебе и прочитать ту статью. В JNGP есть справка, в которой можно посмотреть механизм действия Bj-шок. Некоторые BJ вообще абсурдны - они представляют собой ту же функцию с обратным порядком аргументов и хоть они не всегда вызывают утечки, тут лучше обходится без лишнего.
16GB #16 - 3 года назад (отредактировано ) 2

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 глобальная группа
Ancient #17 - 3 года назад 0
16GB, а не лучше ли создавать локальную группу и в нее записать? А в глобальную в случае надобности запихивать юнитов.
16GB #18 - 3 года назад (отредактировано ) 0
Ancient,
ну глобальная уже создана, а локальную надо создавать/удалять, с глобальной быстрее.
Nickol #19 - 3 года назад 0
16GB, а где добавить способность к групповым юнитам?
SomeFire #20 - 3 года назад 0
Николь, тогда задавай сразу следующий вопрос - как потом эту способность убирать, когда они выйдут из зоны действия.
Nickol #21 - 3 года назад 0
SomeFire, я этот знаю добавляю hash и создаю таймер сохраняю юнита и потом удаляю
но мне непонятно, как добавить способность group?
т.е добавить способность подходящей группе для всех юнитов)
SomeFire #22 - 3 года назад 0
Пикаешь юнитов в группе и даёшь каждому абилку. Если нужен код - конвертируй.
kano #23 - 3 года назад 6
Простите, но это будет продолжаться до бесконечности. У человека нет желания ознакомиться с базой знаний xgm. "Зачем мне тратить время на изучение jass, если скрипты могут написать за меня"
Это сообщение удалено
Nickol #25 - 3 года назад -2
SomeFire, а как пикать без bj?
Raised #26 - 3 года назад 0
Николь, это уже не смешно.
16GB #27 - 3 года назад (отредактировано ) 0
я так понимаю автору надо аура рубика?
SomeFire #28 - 3 года назад 0
Николь, Blizzard.j тебе в помощь.
Nickol #29 - 3 года назад 0
16GB, да похожая способность у рубика из доты
Raised #30 - 3 года назад 0
Ответ уже дан. Юзай справку. Без многих вопросов можно будет обойтись.
16GB #31 - 3 года назад 0
Вот карта тут есть герой тёмный жрец, у него аура почти как тебе надо, только она врагам минус резист даёт. Реализация не очень 6 лет назад делал.
прикреплены файлы