NPC który nie przeszukuje ciała 4902 13

O temacie

Autor Lobos

Zaczęty 8.10.2016 roku

Wyświetleń 4902

Odpowiedzi 13

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Jaki aivar za to odpowiada że NPC nie zabierze nam złota po pobiciu ?
 

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
AI , w g1 b_assessbody
 

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
W g2 za plądrowanie odpowiada ZS_RansackBody.d ale poszukuje czegoś takiego co sprawi że postać po zabiciu drugiego npc nie będzie go ograbiała ponieważ prawdopodobnie przez to nie wyświetla mi się dialog / gość nie zagaduje. Zmieniałem gildie na DMT i NONE ale npc cały czas ograbia ciało.

to jest funkcja którą używam by postać do nas zagadała po zabiciu drugiego NPC ale jak narazie nie działa.
func void Lupino_ZabijaDinko()
{
if ( Npc_IsDead (none_3104_Dinko))
{
AI_StandupQuick(DMT_3402_Lupino);
AI_TurnToNPC(DMT_3402_Lupino,PC_hero);
LUPINO_Gadka = TRUE;





};

};
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Mogę się mylić, ale chyba Alrik miał coś takiego :F
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Kranek

Kranek

Użytkownicy
posty35
Propsy14
ProfesjaNierób
  • Użytkownicy
Nie wiem co prawda komu zmieniałeś gildię na DMT i jeśli atakującemu, to nie wiem czemu wciąż przeszukiwał ciało, ale powinieneś się zainteresować funkcją C_WantToRansack(var C_NPC slf), gdzie slf to npc, który ograbia a other ograbiany i spróbować dodać warunek dla konkretnego npc, żeby nie przeszukiwał tego, którego nie chcesz.

Co do tej funkcji zagadania, to ciężko powiedzieć mając tylko jej definicję, nie powiedziałeś gdzie jej używasz. W każdym razie nigdzie w Lupino_ZabijaDinko() nie ma rozpoczęcia rozmowy.
 

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Dzięki, pokombinuje

Edit:
Dobra działa, Koleś już nie ograbia zwłok ale dalej niezagaduje. Musze wymyślić coś innego.
 

gothic1210
  • Gość
A jak wywołujesz tę funkcję Lupino_ZabijaDinko? I pokaż może warunek tego dialogu. Ja się nie znam na G2, ale co miałoby mieć ograbianie do niewyświetlającego się dialogu? :D
 

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Tak mi się wydawało że może przez tą animacje ograbiania nie wyswietla się ten dialog, próbowałem różnych sztuczek. Właściwie już wszystko odpicowałem na tip top, brakuje tylko tego jednego elementu żeby ten cholerny Lupino zagadał.

Funkcję Lupino_ZabijaDinko wywaliłem i napisałem warunek w dialogu. Wcześniej wywoływałem jako trigger ze spacera.

To jest skrypt dialogu.
Po Hello2 Lupino zabija tego Dinko i potem stoi.
Sprawdzałem czy może stan PC_hero ma wpływ bo podczas tej akcji jest unieruchomiony korzeniem ale inny npc normalnie zagadywał.

Tekst dialogu celowo wywaliłem żeby nie robić spoilerów :p

func int dia_lupino_hello2_condition()
{
if (LUPINO_Kurwa == TRUE)
&& Npc_KnowsInfo(other, DIA_LUPINO_HELLO1)
{
return TRUE;
};
};

func void dia_lupino_hello2_info()
{

AI_PlayAni(KDW_3402_Lupino,"T_IGETYOU");
AI_Output(self,other,"DIA_Lupino_HELLO2_03_01"); //bla bla
AI_Output(self,other,"DIA_Lupino_HELLO2_03_02"); // bla bla


//AI_StandupQuick(PC_hero);
PrintScreen (PRINT_LupinoKorzen, -1, 30, FONT_Screen, 4);
Snd_Play ("MFX_FEAR_CAST");
Npc_ClearAIQueue(hero);
B_ClearPerceptions(hero);

AI_StartState(hero,ZS_MagicFreeze,0,"");
Wld_PlayEffect("SpellFX_Greententacle_TARGET",hero,hero,0,0,DAM_MAGIC,FALSE);


AI_StopProcessInfos(self);
AI_StopProcessInfos(other);


B_Attack (KDW_3402_Lupino, Dinko, AR_KILL,0);







};

instance DIA_LUPINO_HELLO3(C_Info)
{
npc = KDW_3402_Lupino;
nr = 1;
condition = dia_lupino_hello3_condition;
information = dia_lupino_hello3_info;
permanent = FALSE;
important = TRUE;
};


func int dia_lupino_hello3_condition()
{
if ( Npc_IsDead (none_3104_Dinko))

{
return TRUE;
};
};

func void dia_lupino_hello3_info()
{
AI_Output(self,other,"DIA_Lupino_HELLO3_03_01"); //
AI_Output(self,other,"DIA_Lupino_HELLO3_03_02"); //
AI_Output(other,self,"DIA_Lupino_HELLO3_15_03"); //
AI_Output(other,self,"DIA_Lupino_HELLO3_15_04"); //
AI_Output(self,other,"DIA_Lupino_HELLO3_03_05"); //
AI_Output(self,other,"DIA_Lupino_HELLO3_03_06"); //
AI_Output(self,other,"DIA_Lupino_HELLO3_03_07"); //


AI_StopProcessInfos(other);
B_Attack (Lupino, PC_Hero, AR_NONE,0);
Npc_ExchangeRoutine(KDW_3402_Lupino,"RUN");

B_RemoveNpc      (Coqui);
Wld_InsertNpc(sld_3230_zolnierz,"ST_BDT_01");
Wld_InsertNpc(sld_3229_zolnierz,"ST_BDT_02");
Wld_InsertNpc(sld_3221_wascarst,"ST_PATH_02");
Bandyta1.aivar[AIV_EnemyOverride] = FALSE;
Bandyta2.aivar[AIV_EnemyOverride] = FALSE;
Bandyta3.aivar[AIV_EnemyOverride] = FALSE;

};

Jeszcze takiego warunku próbowałem.
&& ( (Npc_GetDistToNpc(self,other) <= PERC_DIST_DIALOG) )
 

gothic1210
  • Gość
Hmm. Najpierw wywal AI_StopProcessInfos(other); zostaw samo z self.
Co do dialogu to można spróbować ustawiać zmienną na TRUE po śmierci NPC (sprawdzać w ZS_Dead czy self = Dinko). Jeśli to nie podziała to musi być jakiś problem z tym korzeniem, albo coś się musi w AI przestawiać u Lupino. Tak myślę.
 

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Dobra, pokombinuje jakoś dzięki.
Coś mi sie zdaje że będzie to ostatnie, że coś mu się w AI przestawia.
Jak ktoś ma jeszcze jakieś pomysły to chętnie przeczytam
 

Kranek

Kranek

Użytkownicy
posty35
Propsy14
ProfesjaNierób
  • Użytkownicy
Generalnie to grzebiąc trochę w AI doszedłem do wniosku, że AR_KILL nie powinien być używany w stosunku do NPC, który nie jest graczem, bo coś się może skaszanić w AI atakującego. Zamiast tego, być może lepiej byłoby użyć innego argumentu i ustawić temu, który ma zginąć aivar AIV_DropDeadAndKill na true.

Ewentualnie możesz się zainteresować funkcją B_AssessTalk, która zdaje się odpowiada za to, czy NPC do nas zagada, czy nie.

PS: Nie wiem czy to coś zmienia, ale czy nie lepiej w Npc_IsDead użyć tej zmiennej Dinko, którą już masz, zamiast instancji?
 

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Dzięki
A za co dokładnie odpowiada ten aivar[AIV_DropDeadAndKill] ? Że npc ginie bez dobijania ?
 

Kranek

Kranek

Użytkownicy
posty35
Propsy14
ProfesjaNierób
  • Użytkownicy
 

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Jest tak jak pisaliście.
Problem leżał w B_Attack (KDW_3402_Lupino, Dinko, AR_KILL,0);
Zmieniłem ofierze gidlie na BDT i teraz wszystko śmiga :p no może nie wszystko. Bandyci którzy sie zrespili w drugim pomieszczeniu podbiegają do PC_hero i wszyscy się tłuką :D Teraz musze wymyślić sposób by ich tam zatrzymać.
 


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