Natychmiastowa śmierć z Npc_ChangeAttribute 1034 0

O temacie

Autor Czudak

Zaczęty 10.01.2020 roku

Wyświetleń 1034

Odpowiedzi 0

Czudak

Czudak

Użytkownicy
posty141
Propsy60
ProfesjaSkrypter
  • Użytkownicy
Panowie, mam problem.

Mianowicie, zrobiłem sobie funkcję na "podstępny atak", na którą kod poniżej.

func void CheckForBackstabDamage(var C_Npc other,var C_Npc self)
{
if(C_NpcIsHero(other) && (!Npc_CanSeeNpc(self,other) || Npc_IsInState(self,ZS_Sleep) || Npc_IsInState(self,ZS_Sleep_Deep)) && C_BodyStateContains(other,BS_HIT) && (Npc_GetTalentSkill(other,NPC_TALENT_SNEAK) == TRUE) && Npc_IsInFightMode(other,FMODE_MELEE) && !C_NpcIsUndead(self) && !C_NpcIsGolem(self) && !Npc_IsInState(self,ZS_Attack) && !Npc_IsInState(self,ZS_MM_Attack))
{
Backstab = other.attribute[ATR_DEXTERITY] * 3;
Npc_ChangeAttribute(self,ATR_HITPOINTS,-Backstab);
PrintScreen("Sneak attack!",-1,-1,Font_Screen,2);
if(Npc_IsDead(self))
{
B_GiveDeathXp(other,self);
};
};
};

I działa wszystko fajnie i tak zajebiście, ale jest jeden defekt: kiedy wartość Backstab zrówna się albo przekroczy aktualną wartość Zdrowia potraktowanego, ten zamiast paść na pysk, odszczekuje, a potem pada, albo ma czelność jeszcze wyciągnąć broń, a dopiero potem umrzeć.

Próbowałem dodać różne inne funkcje, jak:

if(other.attribute[ATR_HITPOINTS] <= 0)
{
AI_PlayAni(other,"T_DEAD");
};

Czy dodać AI_StopProcessInfos, tudzież Npc_ClearAIQueue(self), a wszystko razem lub osobno, no ale nie idzie.

Czy ktoś wie jak zrobić, żeby zabici dzięki Npc_ChangeAttribute nie bawili się w dziwne zajawki, tylko grzecznie zdechli w tym przykładzie?
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry