XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Snorri

offline
Опыт: 2,112
Активность:
Проверка на наличие рядом врагов
Можно ли сделать так, что бы проводилась проверка на наличие рядом врагов? Например, сделать такое условие, что если в поле зрения героя есть враги-ничего не делать , а если горизонт чист-тогда, следовательно, делать.
Наверное,так можно сделать, просто я туплю, в очередной раз
Старый 13.08.2013, 22:38
MpW

online
Опыт: 50,016
Активность:
Snorri, можно. какая трудность?
Старый 13.08.2013, 22:55
Snorri

offline
Опыт: 2,112
Активность:
Steal_nerves, каким образом это реализовать. Трудность в этом. Я чего-то провозился и так и не сумел=(
Старый 13.08.2013, 22:56
MpW

online
Опыт: 50,016
Активность:
Snorri, я не совсем понял на счет чего, но есть проверка на видимость.

Steal nerves добавил:
Snorri, можно вот:
1) периодически выбирать всех юнитов в группу
2) есть событие TriggerRegisterUnitInRange когда какой-то юнит подходит к герою

Steal nerves добавил:
Snorri, я так не понял, если юниты видимы - ничего, а иначе что? не делать или как?
Старый 13.08.2013, 23:00
Snorri

offline
Опыт: 2,112
Активность:
Есть у меня задумка, при вводе команды -sleep затемнить экран, что бы персонаж типо спит. Но сделать это,например, в бою, или посреди леса ,где куча волков, как-то... не особо. Вот думал, если например герой врагов не видит, то тогда разрешить дальнейшую работу тригера. Проверка на видимость может подойдёт. Я думал может проверку на наличие рядом юнитов подконтрольных игроку "нейтрально-враждебные" , если их там в радиусе определённом нет-тогда разрешить продолжить работу тригера.
Старый 13.08.2013, 23:01
MpW

online
Опыт: 50,016
Активность:
Snorri, или надо чтобы рядом никого не было? тогда надо пикать всех рядом с героем, и потом в условии сравнивать количество юнитов в группе, если равно нулю твои действия
Старый 13.08.2013, 23:02
Snorri

offline
Опыт: 2,112
Активность:
Steal_nerves, вот, второй вариант попробую реализовать. Спасибо
Старый 13.08.2013, 23:03
leontjev

offline
Опыт: 1,038
Активность:
если камера прикреплена, то можно пикать в текущей камере
Старый 14.08.2013, 00:40
DioD

offline
Опыт: 45,134
Активность:
а не проще пикать вокруг героя и если пикается смотреть видит ли герой этого юнита?
Старый 14.08.2013, 05:26
Snorri

offline
Опыт: 2,112
Активность:
В принципе , подходят все варианты. Но я сделал , по второму варианту Steal_nerves, тобишь пикнул всех рядом с героем, и проверил на владельца. Всем спасибо за советы.
Старый 14.08.2013, 19:28
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Рекомендую юзать функцию, которая позволяет задать сколько нужно выбрать юнитов. И если нужно найти хотя бы одного врага, то рекомендую установить на 1(не помню как называецца). После пика проверять, есть ли кто в группе вообще через FirtOfGroup.
Старый 14.08.2013, 19:57
Snorri

offline
Опыт: 2,112
Активность:
Faion, хм,как вариант можно будет попробовать. Как много способов реализации оказывается имеется. Спасибо
Старый 14.08.2013, 21:17
MpW

online
Опыт: 50,016
Активность:
Snorri, ты выделяешь всех вражеских кто около героя через фильтр. А потом переменной присваиваешь первого попавшего

set unit = FirtOfGroup(group) - функция выбирает первого юнита в группе

И условием сравниваешь если переменная пуста, значит и группа пуста. Короче это быстрее чем через кол-во (там циклом считают кол-во)

if unit == null then (в гуи там есть такая штука как нет боевая единица, что значит null - пуста)

Steal nerves добавил:
Faion, здорово придумал
Старый 14.08.2013, 21:26
Snorri

offline
Опыт: 2,112
Активность:
Steal_nerves, и ещё один вариант реализации ;D
Старый 15.08.2013, 13:59
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
скучно нечем занятся, поскольку тему не закрыли, внесу готовый ответ
((кат катег
globals
group enum = CreateGroup() //создашь эту переменную в редакторе переменных или в ЖНГП, в функции ниже придется переиминовывать "enum" на имя твоей группы если оно отличается
endglobals

function IsAnyoneAroundXY takes real x, real y, real radius returns boolean //функция берет координаты твоей точки и радиус в котором выбирать цели, если кто-то рядом есть, то верент true иначе вернет false
  call GroupEnumUnitsInRange(enum, x, y, radius, null)
  if FirstOfGroup(enum) != null then
    call GroupClear(enum)
    return true
  endif
    return false
endfunction
))
Старый 15.08.2013, 14:34
Snorri

offline
Опыт: 2,112
Активность:
Какое прям раздолье то ;D Всем спасибо
Старый 15.08.2013, 22:50
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 08:06.