Пользователь Loran124 задавал вопрос по триггеру, который срабатывает при смерти героя и как бы волнами урон разносится по близ стоящим вражеским юнитам. Внёс в триггер правки, но в процессе обнаружилось, что одни и те же юниты терпят от него несколько раз.
Как он задумал:
  • выбрать вражеских юнитов в радиусе 100, внести их в отряд 0, наложить эффект и снять здоровье;
  • выбрать вражеских юнитов в радиусе 200, отсеять юнитов из отряда 0, внести их в отряд 1, наложить эффект и снять здоровье;
  • выбрать вражеских юнитов в радиусе 300, отсеять юнитов из отрядов 0 и 1, внести их в отряд 2, наложить эффект и снять здоровье;
  • выбрать вражеских юнитов в радиусе 400, отсеять юнитов из отрядов 0, 1 и 2, внести их в отряд 3 (для удаления группы), наложить эффект и снять здоровье.
Но происходит так, что некоторые юниты, потерпевшие в малом радиусе, получают урон и в большем радиусе, несмотря на отсев.
Отчего это происходит?

Принятый ответ

8gabriel8
я переписал всё на jass - вроде работает как надо
MUI как побочный эффект от хештаблицы и таймера
проверь как работает, а то я сутками не спал
Я там если что поменял Set Life на UnitDamageTarget, чтобы золото капало с убитых гноллов
И если нужно будет поменять способность на другую - то просто в константе passiveAbility поменять равкод
и ещё я там расставил комментарии где можно редактировать волны
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
18
6 лет назад
0
Там вместо DestroyGroup нужно GroupClear, т.к при повторном использовании эта наработка пытается добавить юнитов в несуществующие группы.
+сделай одну глобальную точку и ставь перед "Pick every units", там ей дашь позицию юнита, а в самом "Pick every units" удалишь точку.
+никогда не используй DoNothing
function DoNothing takes nothing returns nothing
endfunction
+ и не проще заносить юнитов в 1 группу?
0
26
6 лет назад
0
UrsaBoss, это просто поправленная его наработка, если бы делал с нуля, конечно же пробовал упростить. А ещё специализируюсь на кампаниях, потому всякие DestroyGroup/GroupClear проигнорировал бы, так как совсем не беспокоят утечки памяти в одиночных играх, где по сюжету подобный триггер может потребоваться пару раз, ну максимум несколько десятков раз. Это к тому, что толком не понял твоих рекомендаций о точке и DoNothing.
Спасибо, что указал на DestroyGroup, опробую!)
0
18
6 лет назад
0
8gabriel8 если нужно, я могу это всё переписать на jass, заодно и MUI автоматически получится
0
26
6 лет назад
0
UrsaBoss, пока не надо. Объясни, почему надо ставить точку и не использовать DoNothing? Хотя с точкой вроде и так понятно, чтобы удалить её из-за утечки, но DoNothing...
0
21
6 лет назад
Отредактирован scopterectus
0
8gabriel8, функция DoNothing( ) не имеет тела, т. е. ничего не делает. Так зачем вызывать функцию, которая ничего не делает, если можно и так ничего не делать. -)
Под ничего не делать я имел ввиду не вызвать эту функцию.
Если вы создаёте кампании и не беспокоитесь об утечках, то в этом нет ничего плохого.
0
18
6 лет назад
0
8gabriel8 DoNothing самая бесполезная BJ функция, ну прямо самая самая. Как бы объяснить.
Короче, исходя из названия "Ничего не делать" - тут всё просто, это просто вызов абсолютно пустой функции.
Будет в триггере DoNothing или не будет - без разницы, на действия и всё остальное это никак не появлияет.
А так как вызов любой функции требует затрат производительности, хоть и мизерных, то лучше не использовать DoNothing
0
26
6 лет назад
0
ScopteRectuS, просто DoNothing в GUI, надо ставить, если функция If/Then/Else с одним действием. Если бы было что-то критическое, то пришлось бы почти всё перелопачивать, заменяя функцию на многодейственную)
UrsaBoss, подскажи, пожалуйста, Custom Script удаления точки.
0
18
6 лет назад
0
8gabriel8
Где Point - это название точки в редакторе переменных
call RemoveLocation( udg_Point )
0
26
6 лет назад
Отредактирован 8gabriel8
0
UrsaBoss, нашёл в JNPG аналоги CS)
Короче, вот карта с триггером, но раз предлагал MUI, то грех не воспользоваться предложением)
А то не знаю, как он желает это использовать. Может на одного героя, а может будут толпы юнитов с этой способностью.
Загруженные файлы
0
20
6 лет назад
0
DONothing не такая уж и бесполезная) если где-то нужна микро-задержка после таймера - эта штука немного помогает
0
18
6 лет назад
Отредактирован Hodor
0
8gabriel8
я переписал всё на jass - вроде работает как надо
MUI как побочный эффект от хештаблицы и таймера
проверь как работает, а то я сутками не спал
Я там если что поменял Set Life на UnitDamageTarget, чтобы золото капало с убитых гноллов
И если нужно будет поменять способность на другую - то просто в константе passiveAbility поменять равкод
и ещё я там расставил комментарии где можно редактировать волны
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.