Parametr important, a przerywnik filmowy zaczyna się w złym miejscu. 3096 6

O temacie

Autor Misiak

Zaczęty 10.09.2011 roku

Wyświetleń 3096

Odpowiedzi 6

Misiak

Misiak

Użytkownicy
posty8
  • Użytkownicy
Witam mam mały problem z moim pierwszym modem, który ma mnie trochę podszkolić w moddingu. Mianowicie NPC w ogóle nie reagują na opcję important, tzn. mam 6 stworzonych NPC i każdego muszę sam zagadać, gdyż jak zmienię im wartość important na TRUE(1) dialog w ogóle się nie zaczyna i postać stoi jak słup. Teraz druga sprawa, zrobiłem sobie przerywnik filmowy, który ma się pojawiać po określonych słowach, a po filmiku NPC ma umrzeć. Niestety filmik zaczyna się od razu po wybraniu dialogu, a po filmiku postać umiera co prawda, ale dialog się nie kończy i bez użycia kodów nie można go opuścić. Tak wygląda skrypt:

//========================================
//-----------------> HELLO5
//========================================

INSTANCE DIA_Szymek_HELLO5 (C_INFO)
{
   npc          = KDF_1669_Szymek;
   nr           = 5;
   condition    = DIA_Szymek_HELLO5_Condition;
   information  = DIA_Szymek_HELLO5_Info;
   permanent = FALSE;
   description = "Co się z tobą dzieje?";
};

FUNC INT DIA_Szymek_HELLO5_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Szymek_HELLO4))
    {
    return TRUE;
    };
};


FUNC VOID DIA_Szymek_HELLO5_Info()
{
AI_Output (other, self ,"DIA_Szymek_HELLO5_03_01"); //Co się z tobą dzieje?
AI_Output (self, other ,"DIA_Szymek_HELLO5_03_02"); //Ten ból??!!!! Czy to...TOMASZ?! Nieeee....
B_LogEntry                     (PL_Hubert,"Co się stało? Nie jestem do końca pewien. Potęga fragmentu księgi zabiła maga Szymka! Nieliczne informacje, które zapamiętałem  muszą teraz zostać przekazane Hubertowi.");
PlayVideo ( "Szymek.bik" );
self.attribute[ATR_HITPOINTS] -=self.attribute[ATR_HITPOINTS];
    AI_StopProcessInfos (self);
};

I teraz sprawy mają się tak, proszę kogoś, by przerobił to w ten sposób, że NPC sam do mnie zagaduje, odbywa się ten dialog, pojawia się wpis do dziennika, rozpoczyna się przerywnik filmowy, a po nim NPC umiera i wyłącza się dialog. Można tak w ogóle zrobić?
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
musisz kończyć dialog przed zabiciem postaci bo jeżeli postać wykonuje ZS_DEAD to dialog sie nie zakończy tak mi się przynajmniej zdaje ;)

Sprubuj zamienić kolejnośc o tak

AI_StopProcessInfos (self);
self.attribute[ATR_HITPOINTS] -=self.attribute[ATR_HITPOINTS];

a właściwie chyba można to tak
AI_StopProcessInfos (self);
self.attribute[ATR_HITPOINTS] = 0;

EDIT : A co do filmu zrobiłbym osobny dialog ponieważ funkcje AI_Output "zatrzymują" tylko siebie na wzajem

INSTANCE DIA_Szymek_HELLO5 (C_INFO)
{
   npc          = KDF_1669_Szymek;
   nr           = 5;
   condition    = DIA_Szymek_HELLO5_Condition;
   information  = DIA_Szymek_HELLO5_Info;
   permanent    = FALSE;
   important = 1;
   //description  = "Co się z tobą dzieje?";
};
 
FUNC INT DIA_Szymek_HELLO5_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Szymek_HELLO4))
    {
    return TRUE;
    };
};
 
 
FUNC VOID DIA_Szymek_HELLO5_Info()
{
        AI_Output (other, self ,"DIA_Szymek_HELLO5_03_01"); //Co się z tobą dzieje?
        AI_Output (self, other ,"DIA_Szymek_HELLO5_03_02"); //Ten ból??!!!! Czy to...TOMASZ?! Nieeee....
        B_LogEntry                     (PL_Hubert,"Co się stało? Nie jestem do końca pewien. Potęga fragmentu księgi zabiła maga Szymka! Nieliczne informacje, które zapamiętałem  muszą teraz zostać przekazane Hubertowi.");  
    AI_StopProcessInfos (self);
};

INSTANCE DIA_Szymek_HELLO6 (C_INFO)
{
   npc          = KDF_1669_Szymek;
   nr           = 5;
   condition    = DIA_Szymek_HELLO6_Condition;
   information  = DIA_Szymek_HELLO6_Info;
   permanent    = FALSE;
   important = 1;
   //description  = "Co się z tobą dzieje?";
};
 
FUNC INT DIA_Szymek_HELLO6_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Szymek_HELLO5))
    {
    return TRUE;
    };
};
 
 
FUNC VOID DIA_Szymek_HELLO6_Info()
{
PlayVideo ( "Szymek.bik" );
        self.attribute[ATR_HITPOINTS] = 0;
    AI_StopProcessInfos (self);
};

Misiak

Misiak

Użytkownicy
posty8
  • Użytkownicy
To, co zaproponował Pan Rafał nic nie zmieniło, kompletnie nic. Zamiana tych linijek nie dała zmian.

EDIT: Zaraz zobacze, co i jak, i dam ci znać.

EDIT2: Już prawie wszystko jest wspaniale! Jest tylko jeden błąd, który niestety niszczy całą grę, po śmierci NPC dialog się nie wyłącza :( Dlaczego to tak dziwnie działa?
 

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
spróbuj dać AI_StopPrccessingInfos przed funkcją,która powoduje,że NPC ginie.
 

Misiak

Misiak

Użytkownicy
posty8
  • Użytkownicy
Obojętnie, w którym miejscu dam te AI_STOP... to mój bohater dalej jest zbugowany po śmierci NPC. Nie może się ruszać, a jak włącze ekwipunek i później go wyłącze to da się chodzić co prawda, ale znika pasek życia, a nie o to mi chodziło.
 

pawbuj

pawbuj

Użytkownicy
posty1625
Propsy135
ProfesjaSkrypter
  • Użytkownicy
nie wiem czy pomoże , ale spróbuj dodac b_fullstop (hero) przed ai_stopproccessinginfos;
 

Misiak

Misiak

Użytkownicy
posty8
  • Użytkownicy
Nie pomogło, a w podstawce była w ogóle taka sytuacja, że jakiś npc po dialogu z nami umiera?
EDIT: Pomogłem sobie inaczej, po filmiku zamiast śmierci postaci dałem, że zapada w głęboki sen i teraz wszystko działa. Temat można zamknąć.
 


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