-fenix-, небольшая поправка:
та функция (E_DeleteSpecificEffect) она конечно помогает разграничивать эффекты, отделяя нужные.. но вот в отношении визуалок не поможет, ибо у них нет подтипов.
Тут может помочь другое:
навешивание на визуалку скажем SupernaturalEffect + точное знание duration (instant, temporary, permanent). Тогда пользуясь все тем же набором функций, можно будет снять именно нужный визуальный эффект.
__
ЗЫ:
Только вот в том моем посте небольшая ошибка..
SubType это только магический, supernatural, extraordinary.
Так что
NSS
E_DeleteSpecificEffect(GetFirstPC(),OBJECT_INVALID,EFFECT_TYPE_IMMUNITY,IMMUNITY_TYPE_SLOW,-1,TRUE);
не сработает.
щас внесу туда поправки
Вариант такой:
наложение эффекта
NSS
...
effect eVis = ExtraordinaryEffect(EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION));
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, OBJECT_SELF);
...
снятие:
NSS
#include "inc_effects" // та моя библа из поста, на который ссылается феникс
void main()
{
object oNPC; // нужный НПС
E_DeleteSpecificEffect(oNPC,oNPC,EFFECT_TYPE_VISUALEFFECT,SUBTYPE_EXTRAORDINARY,
DURATION_TYPE_PERMANENT,TRUE);
// если не сработает, замени на
E_DeleteSpecificEffect(oNPC,OBJECT_INVALID,EFFECT_TYPE_VISUALEFFECT,SUBTYPE_EXTRAORDINARY, DURATION_TYPE_PERMANENT,TRUE);
// дело в том, что создатель эффекта не всегда нормально определяется
}
в принципе если ты не часто кидаешь Экстраординари эффекты на этого нпс, причем чтобы они были перманентрые, то тебе снимет именно тот эффект, что нада.