NPC po rozmowie nie prowadzi mnie do wyznaczonego waypointu. 15039 51

O temacie

Autor Ayman

Zaczęty 11.06.2014 roku

Wyświetleń 15039

Odpowiedzi 51

Zucklov

Zucklov

Quest Pack Team
Sztywniutko
posty1220
Propsy1241
ProfesjaSkrypter
  • Quest Pack Team
  • Sztywniutko
Można to skrócić:
FUNC INT DIA_Sapp_Sapp_Kasa_Condition()
{
    if (Npc_KnowsInfo (other, DIA_SLD_1502_Sapp_Pytanie))
    && (Sila_Sappa == FALSE)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Sapp_Sapp_Kasa_Info()
{
    AI_Output (other, self ,"DIA_Sapp_Sapp_Kasa_15_01"); //Oto kasa, chciałbym być tak silny jak ty.
    if (B_GiveInvItems (other, self, ItMi_Gold, 50))
    {
        AI_Output (self, other ,"DIA_Sapp_Sapp_Kasa_03_02"); //Dobrze, możemy zacząć, gdy tylko będziesz gotowy.
        Sila_Sappa = TRUE;
    }
    else
    {
        AI_Output (self, other ,"DIA_Sapp_Sapp_Kasa_03_03"); //Nie masz kasy? To po ciul mi zawracasz głowę?
    };
};
 
Lieb Vaterland magst ruhig sein

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Spisałem to co napisałeś @Zucklov i  mi wychodzi błąd U:Par w linijce 5 i masa kolejnych po nim. Popełniłem gdzieś błąd, niestety nie mogę go znaleźć i pierdolca dostaje.

//*********************************************************************
//    Info EXIT
//*********************************************************************
INSTANCE DIA_SLD_1502_Sapp_EXIT   (C_INFO)
{
    npc         = SLD_1502_Sapp;
    nr          = 999;
    condition   = DIA_SLD_1502_Sapp_EXIT_Condition;
    information = DIA_SLD_1502_Sapp_EXIT_Info;
    permanent   = TRUE;
    description = DIALOG_ENDE;
};

FUNC INT DIA_SLD_1502_Sapp_EXIT_Condition()
{
    return TRUE;
};

FUNC VOID DIA_SLD_1502_Sapp_EXIT_Info()
{
    AI_StopProcessInfos (self);
};

//*********************************************************************
//    Info Hello
//*********************************************************************
INSTANCE DIA_SLD_1502_Sapp_Hello   (C_INFO)
{
    npc         = SLD_1502_Sapp;
    nr          = 1;
    condition   = DIA_SLD_1502_Sapp_Hello_Condition;
    information = DIA_SLD_1502_Sapp_Hello_Info;
    permanent   = FALSE;
    description = "Ale z ciebie mutant.";
};

FUNC INT DIA_SLD_1502_Sapp_Hello_Condition()
{
    return TRUE;
};

FUNC VOID DIA_SLD_1502_Sapp_Hello_Info()
{
    AI_Output (other, self, "DIA_SLD_1502_Sapp_Hello_01_00"); //Ale z ciebie mutant.
  AI_Output (self, other, "DIA_SLD_1502_Sapp_Hello_15_01"); //Co ?!
  AI_Output (other, self, "DIA_SLD_1502_Sapp_Hello_01_02"); //Nic nic, po prostu nieźle jesteś napakowany, synthol leje się z ciebie jak z burej su...
  AI_Output (self, other, "DIA_SLD_1502_Sapp_Hello_15_03"); //Chłopcze, to są naturalne mięśnie, stworzone czystą, fizyczną pracą.
};

//*********************************************************************
//    Pytanie o nauke sily
//*********************************************************************
INSTANCE DIA_SLD_1502_Sapp_Pytanie   (C_INFO)
{
    npc         = SLD_1502_Sapp;
    nr          = 2;
    condition   = DIA_SLD_1502_Sapp_Pytanie_Condition;
    information = DIA_SLD_1502_Sapp_Pytanie_Info;
    permanent   = FALSE;
    description = "Chcę być tak nabity sterydami jak ty.";
};

FUNC INT DIA_SLD_1502_Sapp_Pytanie_Condition()
{
    if (Npc_KnowsInfo (other, DIA_SLD_1502_Sapp_Hello))
    {
        return TRUE;
    };
};

FUNC VOID DIA_SLD_1502_Sapp_Pytanie_Info()
{
    AI_Output (other, self, "DIA_SLD_1502_Sapp_Pytanie_01_00"); //Chcę być tak nabity sterydami jak ty.
  AI_Output (self, other, "DIA_SLD_1502_Sapp_Pytanie_15_01"); //Powtarzam, to wszystko jest naturalne. Co do nauki...hmm... tak mogę ci pokazać jak się pakuję łapska.
  AI_Output (self, other, "DIA_SLD_1502_Sapp_Pytanie_15_02"); //Za 50 sztuk złota nauczę cie mojej nadludzkiej siły.
  Log_CreateTopic (Topic_Nauczyciele,LOG_NOTE);
    B_LogEntry (Topic_Nauczyciele,"W karczmie, niejaki Bob Sapp za drobną opłatą może nauczyć mnie jak zwiększyć swoją siłę.");

};

//*********************************************************************
//    Zaplata
//*********************************************************************
INSTANCE DIA_SLD_1502_Sapp_Kasa   (C_INFO)
{
    npc         = SLD_1502_Sapp;
    nr          = 1;
    condition   = DIA_SLD_1502_Sapp_Kasa_Condition;
    information = DIA_SLD_1502_Sapp_Kasa_Info;
    permanent   = TRUE;
    description = "Chciałbym być tak silny jak ty (zapłać 50 sztuk złota).";
};

FUNC INT DIA_SLD_1502_Sapp_Kasa_Condition()
{
    if (Npc_KnowsInfo (other, DIA_SLD_1502_Sapp_Pytanie))
    && (Sila_Sappa == FALSE)
    {
    return TRUE;
    };
};


FUNC VOID DIA_SLD_1502_Sapp_Kasa_Info()
{
    AI_Output (other, self ,"DIA_SLD_1502_Sapp_Kasa_01_00"); //Oto kasa, chciałbym być tak silny jak ty.
    if (B_GiveInvItems (other, self, ItMi_Gold, 50))
    {
        AI_Output (self, other ,"DIA_SLD_1502_Sapp_Kasa_15_01"); //Dobrze, możemy zacząć, gdy tylko będziesz gotowy.
        Sila_Sappa = TRUE;
    }
    else
    {
        AI_Output (self, other ,"DIA_SLD_1502_Sapp_Kasa_15_00"); //Nie masz kasy? To po ciul mi zawracasz głowę?
    };
};



//*********************************************************************
//    Nauka
//*********************************************************************
INSTANCE DIA_SLD_1502_Sapp_Nauka   (C_INFO)
{
    npc         = SLD_1502_Sapp;
    nr          = 1;
    condition   = DIA_SLD_1502_Sapp_Nauka_Condition;
    information = DIA_SLD_1502_Sapp_Nauka_Info;
    permanent   = TRUE;
    description = "Chcę być napakowany.";
};

FUNC INT DIA_SLD_1502_Sapp_Nauka_Condition()
{
  if (Sila_Sappa == TRUE)
    {
        return TRUE;
    };
};

FUNC VOID DIA_SLD_1502_Sapp_Nauka_Info()
{
    AI_Output (other,self ,"DIA_SLD_1502_Sapp_Nauka_15_00"); //Chcę być napakowany.

    Info_ClearChoices (DIA_SLD_1502_Sapp_Nauka);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, DIALOG_BACK, DIA_SLD_1502_Sapp_Nauka_Back);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, B_BuildLearnString(PRINT_LearnSTR1            , B_GetLearnCostAttribute(other, ATR_STRENGTH))            ,DIA_SLD_1502_Sapp_Nauka_STR_1);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, B_BuildLearnString(PRINT_LearnSTR5            , B_GetLearnCostAttribute(other, ATR_STRENGTH)*5)        ,DIA_SLD_1502_Sapp_Nauka_STR_5);
};

FUNC VOID DIA_SLD_1502_Sapp_Nauka_Back ()
{
    Info_ClearChoices (DIA_SLD_1502_Sapp_Nauka);
};

FUNC VOID DIA_SLD_1502_Sapp_Nauka_STR_1 ()
{
    B_TeachAttributePoints (self, other, ATR_STRENGTH, 1, T_HIGH);

    Info_ClearChoices     (DIA_SLD_1502_Sapp_Nauka);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, DIALOG_BACK, DIA_SLD_1502_Sapp_Nauka_Back);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, B_BuildLearnString(PRINT_LearnSTR1            , B_GetLearnCostAttribute(other, ATR_STRENGTH))            ,DIA_SLD_1502_Sapp_Nauka_STR_1);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, B_BuildLearnString(PRINT_LearnSTR5            , B_GetLearnCostAttribute(other, ATR_STRENGTH)*5)        ,DIA_SLD_1502_Sapp_Nauka_STR_5);
};

FUNC VOID DIA_SLD_1502_Sapp_Nauka_STR_5 ()
{
    B_TeachAttributePoints (self, other, ATR_STRENGTH, 5, T_HIGH);

    Info_ClearChoices     (DIA_SLD_1502_Sapp_Nauka);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, DIALOG_BACK, DIA_SLD_1502_Sapp_Nauka_Back);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, B_BuildLearnString(PRINT_LearnSTR1            , B_GetLearnCostAttribute(other, ATR_STRENGTH))            ,DIA_SLD_1502_Sapp_Nauka_STR_1);
    Info_AddChoice        (DIA_SLD_1502_Sapp_Nauka, B_BuildLearnString(PRINT_LearnSTR5            , B_GetLearnCostAttribute(other, ATR_STRENGTH)*5)        ,DIA_SLD_1502_Sapp_Nauka_STR_5);
};

 
"Lók, jestem tfojim ojcem!"

Zucklov

Zucklov

Quest Pack Team
Sztywniutko
posty1220
Propsy1241
ProfesjaSkrypter
  • Quest Pack Team
  • Sztywniutko
Podaj dokładnie co wyskakuje, to że jest błąd parsera niewiele mi mówi.
 
Lieb Vaterland magst ruhig sein

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
U:Par: Unknown identifier :{ (line 4)

Po nim lecą kolejne od pierwszej do ostatniej w skrypcie.

Edycja\\\\\\\\\\\\\\\\\\\\

Zlokalizowałem błąd, był w pliku gdzie sie ustawia handlarza. Szkoda, że błędy nie informują z którego pliku jest błąd, przeszukałem chyba z 30 plików dialogowych 30 npców i nie mogłem tego znaleźć.
 
"Lók, jestem tfojim ojcem!"

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
zSpy informuje, następnym razem go użyj :ok:

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Dzięki po raz kolejny. A wiecie może jak nazywa się ta deska do przybijania młotkiem gwozdzi ? Do rutyny TA_RepairHut, niestety nie mogę znaleźć jej, a bez tego rutyna nie ruszy chyba.
 
"Lók, jestem tfojim ojcem!"

gothic1210
  • Gość
Cytuj
A wiecie może jak nazywa się ta deska do przybijania młotkiem gwozdzi ? 
REPAIR_PLANK.ASC 
 

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Dzięki, ale udalo mi sie wcześniej do znaleźć w Spacerze, problemem było to, że to REPAIR_PANK.ASC mają wyłączony visual i dlatego nie mogłem tego znaleźć :). Mam kolejne (tak znowu, ale wole tu zapytac niz 10 tematow zakladac) pytanie, czy jest w gothicu 2 taka możliwość by nasza postac która gramy po rozmowie z jakims tam npc przeniosła się do innego miejsca (Waypointu) ? Chcę zrobić motyw, że łapie nas straż i wrzuca do paki. Chciałbym również dodać filmik który załącza się w momencie końca dialogu, ze nas wrzucają, normalnie to była by sklejka obrazków tyle ze w formacie video.
 
"Lók, jestem tfojim ojcem!"

Taliasan

Taliasan

Użytkownicy
posty378
Propsy171
Profesjabrak
  • Użytkownicy
Da się. Damy ci przykład skryptu.
W dialogu może być takie coś, a dokładniej w func void danego dialogu:
AI_StopProcessInfos(self);
AI_StartState(self,zs_teleporthero_kloster,0,"");
Oraz w mam ją umieszczoną w _Work\Data\Scripts\Content\AI\Human\TA_Human skrypt funkcji zs_teleporthero.d
func void zs_teleporthero(var string wp)
{
   Perception_Set_Normal();
   B_ResetAll(hero);
   AI_Teleport(hero,wp);
   hero.aivar[AIV_INVINCIBLE] = FALSE;
};
func void zs_teleporthero_kloster()
{
   zs_teleporthero("NW_MONASTERY_PLACE_03");
};
To jest  działająca funkcja z moda "Global MOD"
 

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Rewelacja, działa ! Dzięki wielkie :)))
 
"Lók, jestem tfojim ojcem!"

Ayman

Ayman

Użytkownicy
posty64
  • Użytkownicy
Po kilku dniach, ponownie wracam, nie będę zakładał nowego tematu. Chciałem zrobić strażnika, wiecie, dwa ostrzeżenia jeśli pójdę dalej i za trzecim atak.

Stworzyłem "coś' na zasadzie strażnika bramy w khorinis, żadne błędy mi nie wyskakują lecz skrypt nie działa. NPC nie zatrzymuję mnie.

//*********************************************************************
// Info EXIT
//*********************************************************************
INSTANCE DIA_SLD_3010_Nyga_EXIT   (C_INFO)
{
npc         = SLD_3010_Nyga;
nr          = 999;
condition   = DIA_SLD_3010_Nyga_EXIT_Condition;
information = DIA_SLD_3010_Nyga_EXIT_Info;
permanent   = TRUE;
description = DIALOG_ENDE;
};

FUNC INT DIA_SLD_3010_Nyga_EXIT_Condition()
{
return TRUE;
};

FUNC VOID DIA_SLD_3010_Nyga_EXIT_Info()
{
AI_StopProcessInfos (self);
};

//*********************************************************************
// Info Hello
//*********************************************************************
INSTANCE DIA_SLD_3010_Nyga_Hello   (C_INFO)
{
npc         = SLD_3010_Nyga;
nr          = 1;
condition   = DIA_SLD_3010_Nyga_Hello_Condition;
information = DIA_SLD_3010_Nyga_Hello_Info;
permanent   = FALSE;
description = "Gdzie leziesz ?";
  important   = 1;
};

FUNC INT DIA_SLD_3010_Nyga_Hello_Condition()
{
return TRUE;
};

FUNC VOID DIA_SLD_3010_Nyga_Hello_Info()
{
  AI_Output (self, other, "DIA_SLD_3010_Nyga_Hello_15_00"); //Gdzie leziesz białasie ?
  AI_DrawWeapon (self);
  AI_Output (other, self, "DIA_SLD_3010_Nyga_Hello_01_01"); //Chciałem wejść do obozu.
  AI_Output (self, other, "DIA_SLD_3010_Nyga_Hello_15_02"); //Pogięło cię białasku ? Nigdzie nie wejdziesz, tylko czarni bracia mogą wejść. Won mi stąd !
  AI_RemoveWeapon (self);
  AI_StopProcessInfos (self);

  Log_CreateTopic (TOPIC_Czarny, LOG_MISSION);
  Log_SetTopicStatus (TOPIC_Czarny, LOG_RUNNING);
  B_LogEntry (TOPIC_Czarny,"Chciałem wejść do slumsów lecz jakiś gościu mi nie pozwolił, mówił, że tylko czarnoskórzy mogą wejść.");
};


const string Czarny_Czekpoint = "SLUMSY_DROGA_1";

//*********************************************************************
// 1 ostrzezenie
//*********************************************************************
INSTANCE DIA_SLD_3010_Nyga_Ostrzezenie   (C_INFO)
{
npc         = SLD_3010_Nyga;
nr          = 1;
condition   = DIA_SLD_3010_Nyga_Ostrzezenie_Condition;
information = DIA_SLD_3010_Nyga_Ostrzezenie_Info;
permanent   = TRUE;
  important   = 1;
};

FUNC INT DIA_SLD_3010_Nyga_Ostrzezenie_Condition()
{
if (Npc_GetDistToWP(other, Czarny_Czekpoint) <= 1000)
{
Npc_SetRefuseTalk(self,5);
return FALSE;
};
};

FUNC VOID DIA_SLD_3010_Nyga_Ostrzezenie_Info()
{
  AI_DrawWeapon (self);
  AI_Output (self, other, "DIA_SLD_3010_Nyga_Ostrzezenie_15_00"); //Won mi stąd białasie, wpuszczam tylko czarnych braci.
  AI_RemoveWeapon (self);

  other.aivar[AIV_LastDistToWP] = Npc_GetDistToWP(other,Czarny_Czekpoint);
self.aivar[AIV_Guardpassage_Status] = GP_FirstWarnGiven;

  AI_StopProcessInfos (self);
};

//*********************************************************************
// 2 ostrzezenie
//*********************************************************************
INSTANCE DIA_SLD_3010_Nyga_Drugieostrzezenie   (C_INFO)
{
npc         = SLD_3010_Nyga;
nr          = 2;
condition   = DIA_SLD_3010_Nyga_Drugieostrzezenie_Condition;
information = DIA_SLD_3010_Nyga_Drugieostrzezenie_Info;
permanent   = TRUE;
  important   = 1;
};

FUNC INT DIA_SLD_3010_Nyga_Drugieostrzezenie_Condition()
{
if ((self.aivar[AIV_Guardpassage_Status] == GP_FirstWarnGiven )
&&  (self.aivar[AIV_PASSGATE] == FALSE )
&& (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) == TRUE )
&&  (Npc_GetDistToWP(other,Czarny_Czekpoint) <  (other.aivar[AIV_LastDistToWP]-50) ))
{
return TRUE;
};
};

FUNC VOID DIA_SLD_3010_Nyga_Drugieostrzezenie_Info()
{
  AI_DrawWeapon (self);
  AI_Output (self, other, "DIA_SLD_3010_Nyga_Drugieostrzezenie_15_00"); //Głuchyś ? Jeszcze jeden krok i łeb ci utne !
  AI_RemoveWeapon (self);

  other.aivar[AIV_LastDistToWP] = Npc_GetDistToWP (other,Czarny_Czekpoint);
self.aivar[AIV_Guardpassage_Status] = GP_SecondWarnGiven;

AI_StopProcessInfos (self);
};

//*********************************************************************
// 3 - atak
//*********************************************************************
INSTANCE DIA_SLD_3010_Nyga_Atak   (C_INFO)
{
npc         = SLD_3010_Nyga;
nr          = 3;
condition   = DIA_SLD_3010_Nyga_Atak_Condition;
information = DIA_SLD_3010_Nyga_Atak_Info;
permanent   = TRUE;
  important   = 1;
};

FUNC INT DIA_SLD_3010_Nyga_Atak_Condition()
{
if ((self.aivar[AIV_Guardpassage_Status] == GP_SecondWarnGiven )
&&  (self.aivar[AIV_PASSGATE] == FALSE )
&& (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) == TRUE )
&&  (Npc_GetDistToWP(other,Czarny_Czekpoint) <  (other.aivar[AIV_LastDistToWP]-50) ))
{
return TRUE;
};
};

FUNC VOID DIA_SLD_3010_Nyga_Atak_Info()
{
  other.aivar[AIV_LastDistToWP] = 0;
self.aivar[AIV_Guardpassage_Status] = GP_NONE;

  AI_Output (self, other, "DIA_SLD_3010_Nyga_Atak_15_00"); //Przejebałeś se białasie !

  AI_StopProcessInfos (self);
B_Attack (self, other, AR_GuardStopsIntruder, 0);
};                                                 
 
"Lók, jestem tfojim ojcem!"

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Cytuj
Do pierwszego ostrzeżenia daj taki warunek:
if((self.aivar[AIV_Guardpassage_Status] == GP_NONE) && (self.aivar[AIV_PASSGATE] == FALSE) && (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) == TRUE) && (Npc_RefuseTalk(self) == FALSE))
    {
        return TRUE;
    };
Potem w dialogu dodajesz jeszcze to:
other.aivar[AIV_LastDistToWP] = Npc_GetDistToWP(other, Czarny_Czekpoint);
        self.aivar[AIV_Guardpassage_Status] = GP_FirstWarnGiven;
Cytuj
Do 2 ostrzeżenia:
if((self.aivar[AIV_Guardpassage_Status] == GP_FirstWarnGiven) && (self.aivar[AIV_PASSGATE] == FALSE) && (Hlp_StrCmp(Npc_GetNearestWP(self),self.wp) == TRUE) && (Npc_GetDistToWP(other,Czarny_Czekpoint) < (other.aivar[AIV_LastDistToWP] - 50)))
    {
        return TRUE;
    };
Potem do dialogu:
other.aivar[AIV_LastDistToWP] = Npc_GetDistToWP(other,Czarny_Czekpoint);
    self.aivar[AIV_Guardpassage_Status] = GP_SecondWarnGiven;
Cytuj
Potem 3 ostrzeżenie ( czyli atakuje ):
if((self.aivar[AIV_Guardpassage_Status] == GP_SecondWarnGiven) && (self.aivar[AIV_PASSGATE] == FALSE) && (Npc_GetDistToWP(other,Czarny_Czekpoint) < (other.aivar[AIV_LastDistToWP] - 50)))
    {
        return TRUE;
    };
Dialog:
other.aivar[AIV_LastDistToWP] = 0;
    self.aivar[AIV_Guardpassage_Status] = GP_NONE;


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