Добавлен
Сделал кастомную атаку для юнитов дальнего боя.
Вопрос в том как влиять на этот снаряд извне?
Например, я хочу чтобы если рядом со снарядом находился юнит с определенным баффом, то снаряд замедлялся.
И чтобы все эти проверки происходили не в самой системе движения снаряда, а чтобы вокруг юнита с баффом выбирались снаряды и изменялись их значения переменных скорости.
Такое возможно или придется все проверки в снаряд запихивать?
P.S. пишу на cJass, снаряд - структура со всякими переменными.

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

на сколько я понял снаряд является юнитом
тогда надо к юниту-снаряду атачить структуру-снаряд (через хеш/хендл/юзердата)
делаешь проверку у юнита цели на наличие рядом юнита-снаряда
если юнит-снаряд есть то берёшь приатаченный к нему экземпляр структуры-снаряда и меняешь в нём значение полей
короткий пример атача через юзердату
Missile a=Missile.new(); // создаёт снаряд и юнита для него
a.ms=200; // устанавливаем скорость на 200
SetUnitUserData(a.myUnit, a); // сохраняем в юзердату юнита a.myUnit экземпляр структуры a
...
...
Missile a=GetUnitUserData(u); // извлекаем экземпляр структуры из юзердаты юнита u
a.ms=100; // устанавливаем скорость на 100
подробнее есть в статьях xgm.guru/p/wc3/articles
читай всё что связано с ооп/атачи/хеш-таблицы
0
5
8 лет назад
0
ооо ну это уже как по мне своя система атаки и полета снарядов
0
5
8 лет назад
0
l_Avenger_l, так и есть.
Вопрос в том можно ли менять значения переменных созданного снаряда из другого триггера грубо говоря
0
13
8 лет назад
0
Раньше пользовался гуи функцией: выбрать тип юнитов в области, и только она могла выбрать юнита с москитами.
соответственно с ее помощью пикаешь свой снаряд и замедляешь.
1
28
8 лет назад
1
на сколько я понял снаряд является юнитом
тогда надо к юниту-снаряду атачить структуру-снаряд (через хеш/хендл/юзердата)
делаешь проверку у юнита цели на наличие рядом юнита-снаряда
если юнит-снаряд есть то берёшь приатаченный к нему экземпляр структуры-снаряда и меняешь в нём значение полей
короткий пример атача через юзердату
Missile a=Missile.new(); // создаёт снаряд и юнита для него
a.ms=200; // устанавливаем скорость на 200
SetUnitUserData(a.myUnit, a); // сохраняем в юзердату юнита a.myUnit экземпляр структуры a
...
...
Missile a=GetUnitUserData(u); // извлекаем экземпляр структуры из юзердаты юнита u
a.ms=100; // устанавливаем скорость на 100
подробнее есть в статьях xgm.guru/p/wc3/articles
читай всё что связано с ооп/атачи/хеш-таблицы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.