Пока идея только такая - в определяющей функции давать ему что-то типа виндволка/берсерка с действием 0.1 сек. и нестандартным баффом и приказывать юзать.
Потом проверить наличие этого баффа.
Под сайленсом он абилу юзнуть не сможет, следовательно, баффа не появится, значит, раз баффа нет - он под салом.
Бафф потом сразу удалить вместе с абилой.
Но тут целая куча проблем (терпимых по отдельности, но вместе уже достаточно неприятных):
- Юнит может быть не только под салом, но и, например, под станом. Тогда он тоже не юзнет виндволк/берсерк.
- Собьется нормальный виндволк/берсерк, если у него такой есть.
- Стриггерятся все триггеры на то, что юнит юзает абилу.
- Это просто достаточно геморройно в реализации.
Есть идеи попроще? Или мб в мемхаке что есть?
Принятый ответ
в структуре юнита счетчик есть, тащем-та
RMem(unit+0x1D0)
>0 == сайленс
>0 == сайленс
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Diaboliko
Простой способ здесь — последовательно проверять все салящие баффы.
И да, в памяти полюбому есть количество сайленсов действующих на юнита (или на способность, я не знаю как там это сделано). Но я не в курсе конкретики.
Элсо — можешь проверить можно ли давать приказ на каст способности в сайленсе(отлавливается ли он). Через стан точно можно отловить приказ отмены щита пехотинца, например.
Ред. ClotPh
Узнать его можно с помощью мемхака.
>0 == сайленс