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

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

Закрытая тема
 
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
Вопрос по UnitInRange Event
Вопрос таков. Как получить юнита, который был записан в событие без использования глобальных переменных?
Т. е.

Код:
boolean projectileHit()
{
unit prj = Вот тут юнит, который был projectile при создании этого Event'а
return false;
}


nothing RegisterProjectile(unit projectile)
{
trigger trg = CreateTrigger();
TriggerRegisterUnitInRange(trg, projectile, 50, null);
TriggerAddCondition(trg, Condition(function projectileHit));
trg = null;
}


MrSigma добавил:
что-то странное с тэгом code =\
Старый 06.01.2012, 03:08
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
GetTriggerUnit() - приближающийся; юнита-центр окружности надо аттачить к триггеру, т.е. соответствующей нэйтив ф-ии не существует, насколько мне известно. К примеру
if (GetTriggerUnit() == ... ) then
   call KillUnit(LoadUnitHandle(<hashtable>, GetHandleId(GetTriggeringTrigger()), 'UNIT'))
endif
FellGuard добавил:
Если триггер один, а таких событий на него вешается много, прийдётся попотеть. GroupEnumUnitsInRang-ем вокруг TriggerUnit-a вычислять, который из окружающих сгенерировал событие.
Старый 06.01.2012, 03:17
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
т.е самый простой вариант - записывать юнита-центр окружности в хэш по id юнита цели? Сурово...
Старый 06.01.2012, 03:18
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
по id триггера! Цель может быть произвольной же
Старый 06.01.2012, 03:18
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
хороший вариант) И id триггера можно получить с GetHandleId(trg)?

MrSigma добавил:
ну... или GetHandleId(GetTriggerringTrigger())?
Старый 06.01.2012, 03:24
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
да, и так и так. "trg" при аттаче к триггеру юнита в момент регистрации события, GetTriggeringTrigger() в момент срабатывания
Старый 06.01.2012, 03:29
MrSigma
愛 - XGM
offline
Опыт: 2,429
Активность:
аригато. закрывайте)
Старый 06.01.2012, 03:31
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
boolean projectileHit()
{
unit prj = LoadUnitHandle(<hashtable>, GetHandleId(GetTriggeringTrigger()), 'UNIT');
return false;
}


nothing RegisterProjectile(unit projectile)
{
trigger trg = CreateTrigger();
SaveUnitHandle(<hashtable>,GetHandleId(trg),'UNIT',projectile);
TriggerRegisterUnitInRange(trg, projectile, 50, null);
TriggerAddCondition(trg, Condition(function projectileHit));
trg = null;
}
Старый 06.01.2012, 03:31
Закрытая тема

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

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

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

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



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