Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Wiadomości - Ayman

Strony: [1] 2 3 4
1
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);
};                                                 

2
Rewelacja, działa ! Dzięki wielkie :)))

3
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.

4
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.

5
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źć.

6
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);
};


7
Poprzednia wersja:

Podejrzałem NPC Carl, kowal w Khorinis uczący siłę za 50 sztuk złota właśnie.

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_00");//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łowe ?
    };
};

A tu kod z dialogu Carla, na którym bazowałem.

FUNC INT DIA_Carl_bezahlen_Condition()
{
if Npc_KnowsInfo (other, DIA_Carl_Wieviel)
&& (Carl_TeachSTR == FALSE)
{
return TRUE;
};
};
FUNC VOID DIA_Carl_bezahlen_Info()
{
AI_Output (other, self, "DIA_Carl_bezahlen_15_00");//Chcę z tobą ćwiczyć.

if Npc_KnowsInfo (other,DIA_Edda_Statue)
{
AI_Output (self, other, "DIA_Carl_bezahlen_05_01");//Słyszałem, co zrobiłeś dla Eddy. Wyszkolę cię za darmo.
Carl_TeachSTR = TRUE;
}
else
{
if B_GiveInvItems (other, self, ItMi_Gold, 50)
{
AI_Output (self, other, "DIA_Carl_bezahlen_05_02");//Dobrze, możemy zacząć, gdy tylko będziesz gotowy.
Carl_TeachSTR = TRUE;
}
else
{
AI_Output (self, other, "DIA_Carl_bezahlen_05_03");//Zdobądź złoto, wtedy cię wyszkolę.
};
};
};             

8
No ale wtedy nie będę miał dialogu informującego, że sie nie mam wystarczającej kasy.  Po to jest ten dialog który mówicie bym usunął :)

9
Reszte czyli ? Taki kod mam. Chyba "ELSE" tu nie pasuje.

FUNC INT DIA_SLD_1502_Sapp_Kasa_Condition()
{
  if Npc_KnowsInfo (other, DIA_SLD_1502_Sapp_Pytanie)
  && (Sila_Sappa == FALSE)
  && (Npc_HasItems(other, ItMi_Gold) >= 50)
{
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.
  AI_Output (self, other, "DIA_SLD_1502_Sapp_Kasa_15_00"); //Dobrze, możemy zacząć, gdy tylko będziesz gotowy.
  Sila_Sappa = TRUE;
  B_GiveInvItems (other, self, ItMi_Gold, 50);
}
 else
 {
  AI_Output (self, other, "DIA_SLD_1502_Sapp_Kasa_15_00"); //Nie masz kasy ? To po ciul mi zawracasz głowę ?
 };
};

//

10
Nadal nie pojawia się dialog gdy mam te 50 sztuk złota, tylko ten gdybym nie miał. Wszystko działa, tylko dialogi są pomylone. A i to co na wczesniej napisałem, rownież działalo, spisałem to z NPC Carla, ten kowal koło alchemika co niepamięc sprzedaje, on ma taki skrypt odnosnie zapłaty za naukę siły.

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 (Npc_HasItems (other, ItMi_Gold) >=50)
    {
      AI_Output (self, other, "DIA_SLD_1502_Sapp_Kasa_15_00");//Dobrze, możemy zacząć, gdy tylko będziesz gotowy.
      Sila_Sappa = TRUE;
      B_GiveInvItems (other, self, ItMi_Gold, 50);
    }
    else
{
      AI_Output (self, other, "DIA_SLD_1502_Sapp_Kasa_15_00");//Nie masz kasy ? To po ciul mi zawracasz głowe ?
    };
};

//**

11
Opcja "Znajdz i zamień", musiałem i to zmienić. Pisząc  w notatniku, ciężko się wykrywa takie błędy. Polecacie jakiś program ? Myśle by pisać w notepad +.

A mam jeszcze pytanie, właśnie przetestowałem ten skrypt, działa lecz gdy mam kase 50 sztu zlota, to pojawia się dialog który powinien sie pojawiac jak nie mam kasy.

12
Po paru intensywnych dniach, mam kolejny problem. W jednym z dialogów wychodzą te błędy:

00:00 ++++++++++++++ Start by  ++++++++++++++
01:45 Fatal:-1 U:PAR: \_WORK\DATA\SCRIPTS\CONTENT\STORY\DIALOGE\DIA_SLD_1502_SAPP.D: Unknown identifier : SLD_1502_SAPP_PYTANIE .... <zParser.cpp,#599>
02:25 Fatal:-1 U:PAR: \_WORK\DATA\SCRIPTS\CONTENT\STORY\DIALOGE\DIA_SLD_1502_SAPP.D: Unknown identifier : SLD_1502_SAPP_KASA .... <zParser.cpp,#599>
02:29 Fatal:-1 U:PAR: \_WORK\DATA\SCRIPTS\CONTENT\STORY\DIALOGE\DIA_SLD_1502_SAPP.D: Unknown identifier : SLD_1502_SAPP_NAUKA .... <zParser.cpp,#599>

A o to cały kod dialogu. Jest to dialog npc ktory ma nas uczyć po opłacie Siły. Robiłem na przykładzie innych npc. Ja nie mogę się dopatrzeć błędu.

//*********************************************************************
//    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_Pytanie;
    nr          = 1;
    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.


};

//*********************************************************************
//    Zaplata
//*********************************************************************
INSTANCE DIA_SLD_1502_Sapp_Kasa   (C_INFO)
{
    npc         = SLD_1502_Sapp_Kasa;
    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_00");//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łowe ?
    };
};

//*********************************************************************
//    Nauka
//*********************************************************************
INSTANCE DIA_SLD_1502_Sapp_Nauka   (C_INFO)
{
    npc         = SLD_1502_Sapp_Nauka;
    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);
};     
                                                               


13
Witam, nurtuje mnie to pytanie, a nie znalazłem na to odpowiedzi. Otóż, są pasy (pas mocy itp) w Noc Kruka, jeśli się nie mylę one wizualnie na postaci nie pojawiają się ? Jeśli nie, to czy jest możliwość by po uprzednim przygotowanym modelu pasa (ten model w praktyce już mam) w jakiś sposób przyczepić go w okolice pasa danego npc lub naszej postaci i żeby się pojawiał ?

14
Działa! Super, dzięki, nie wstawiałem (nie zrozumiałem cie gdzie to wstawić na początku) MIS_ALKO = LOG_FAILED w dialogu w którym misję zalicza jako nieudaną tylko wstawiałem do dialogu zleceniodawcy - a przecież to nie u niego misja jest klasyfikowana jako nieudana. Nadal prosze o nie zamykanie tematu, zrobiłem już 8 questów, przy następnych znowu może coś nie wyjść :)

15
Jak to wstawiam w condition, to nie działa, raczej tego nie zrobię. Pogubiłem się już.

INSTANCE DIA_SLD_891_Marian_AlkoWykonane   (C_INFO)
{
npc         = SLD_891_Marian;
nr          = 1;
condition   = DIA_SLD_891_Marian_AlkoWykonane_Condition;
information = DIA_SLD_891_Marian_AlkoWykonane_Info;
permanent   = FALSE;
description = "Mam alkohol.";
};

FUNC INT DIA_SLD_891_Marian_AlkoWykonane_Condition()
{
if (Npc_HasItems(other, ItFo_PiwoQuest) == 1)
|| (npc_knowsinfo (other, DIA_SLD_889_Mirek_AlkoWykrycie))
&& (Npc_HasItems(other, ItFo_PiwoQuest) == 1)
&& (MIS_Alko == LOG_SUCCESS) <--- tu wstawić ?
{
return TRUE;
};
};

FUNC VOID DIA_SLD_891_Marian_AlkoWykonane_Info()
{
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_00"); //Mam alkohol.
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_01"); //Co tam masz?
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_02"); //Piwo.

  B_GiveInvItems (other, self, ItFo_PiwoQuest, 1);
  B_LogEntry (TOPIC_Alko,"Dałem Marianowi browara. Mam tylko nadzieję, że nikt się o tym procederze nie dowie.");
  Log_SetTopicStatus (TOPIC_Alko, LOG_SUCCESS);
  B_GivePlayerXP (XP_MalethKillBandits);

  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_03"); //Ooo, zimne piwko tylko dla mnie. Możesz już iść.
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_04"); //Słowo "dziękuję" by się przydało.
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_05"); //No nara.

}; 
 

16
A to gdzie i jak mam to sprawdzić/wpisać ? To MIS_Alko wpisałem do Story_Globals

17
Faktycznie sam nie rozumiem co napisałem, spróbuje jeszcze raz i pokaże wam na kodzie. Ten NPC ma różnie zareagować od podjętej mojej decyzji.

DIA_SLD_891_Marian_AlkoWykonane, to zaniosłem alkohol od razu do NPC, albo zostałem złapany ale odzyskałem alkohol i ostatecznie i tak dostarczyłem alkohol.  To mi działa idealnie:

FUNC INT DIA_SLD_891_Marian_AlkoWykonane_Condition()
{
if (Npc_HasItems(other, ItFo_PiwoQuest) == 1)
|| (npc_knowsinfo (other, DIA_SLD_889_Mirek_AlkoWykrycie))
&& (Npc_HasItems(other, ItFo_PiwoQuest) == 1)
{
    return TRUE;
};
};

DIA_SLD_891_Marian_AlkoSprzedaz, (tutaj mam problem właśnie), zostałem złapany, alkohol zabrany i zadanie staje sie NIEUDANE w czasie gadki z NPC ktory nas złapał, wracam do NPC ktory mi dal questa na znalezienie alko - więc wstawilem takie coś:

FUNC INT DIA_SLD_891_Marian_AlkoSprzedaz_Condition()
{
if (MIS_Alko == LOG_FAILED)
{
    return TRUE;
};
};

Po tym jak quest stał się NIEUDANY (failed) chciałbym, żeby wywołało rozmowę u NPCa który zlecił mi zadanie ale jak zadanie udało się POPRAWNIE zrobić (SUCCESS) to zeby ta rozmowa nigdy się nie pojawiła - no bo po co ?


Fragment NPC ktory zleca questa.

//*********************************************************************
//    AlkoWykonane
//*********************************************************************
INSTANCE DIA_SLD_891_Marian_AlkoWykonane   (C_INFO)
{
    npc         = SLD_891_Marian;
    nr          = 1;
    condition   = DIA_SLD_891_Marian_AlkoWykonane_Condition;
    information = DIA_SLD_891_Marian_AlkoWykonane_Info;
    permanent   = FALSE;
    description = "Mam alkohol.";
};

FUNC INT DIA_SLD_891_Marian_AlkoWykonane_Condition()
{
if (Npc_HasItems(other, ItFo_PiwoQuest) == 1)
|| (npc_knowsinfo (other, DIA_SLD_889_Mirek_AlkoWykrycie))
&& (Npc_HasItems(other, ItFo_PiwoQuest) == 1)
{
    return TRUE;
};
};

FUNC VOID DIA_SLD_891_Marian_AlkoWykonane_Info()
{
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_00"); //Mam alkohol.
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_01"); //Co tam masz?
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_02"); //Piwo.

  B_GiveInvItems (other, self, ItFo_PiwoQuest, 1);
  B_LogEntry (TOPIC_Alko,"Dałem Marianowi browara. Mam tylko nadzieję, że nikt się o tym procederze nie dowie.");
  Log_SetTopicStatus (TOPIC_Alko, LOG_SUCCESS);
  B_GivePlayerXP (XP_MalethKillBandits);

  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_03"); //Ooo, zimne piwko tylko dla mnie. Możesz już iść.
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_04"); //Słowo "dziękuję" by się przydało.
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_05"); //No nara.

};

//*********************************************************************
//    AlkoWykonane
//*********************************************************************
INSTANCE DIA_SLD_891_Marian_AlkoSprzedaz   (C_INFO)
{
    npc         = SLD_891_Marian;
    nr          = 1;
    condition   = DIA_SLD_891_Marian_AlkoSprzedaz_Condition;
    information = DIA_SLD_891_Marian_AlkoSprzedaz_Info;
    permanent   = FALSE;
    description = "Ty dziadu, sprzedałeś mnie Mirkowi, zatłukę cie jak psa!";
  important   = 1;
};

FUNC INT DIA_SLD_891_Marian_AlkoSprzedaz_Condition()
{
if (MIS_Alko == LOG_FAILED)
{
    return TRUE;
};
};

FUNC VOID DIA_SLD_891_Marian_AlkoSprzedaz_Info()
{
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonanePraw_15_01"); //Ty dziadu, sprzedałeś mnie Mirkowi, zatłukę cie jak psa!
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonanePraw_01_02"); //Czekaj, musiałem, bo...

  AI_StopProcessInfos    (self);
  B_Attack (self, other, AR_NONE,1);

  AI_StopProcessInfos    (self);

};         

18
Dzięki wielkie, a co zrobić by NPC1 dający questa miał trzy reakcję ?

 Pierwsza reakcja - znaleziony item od razu zanoszę do NPC1  i zadanie wykonane, koniec wszelkich dialogów na ten temat.

Druga reakcja - item który miałem znaleźć i zanieść NPC1 został zabrany przez NPC 2 lecz zaraz po dialogu (negocjacjach) został oddany, wracam do NPC1, on powinien wiedzieć, że była rozmowa o tym, że item został zabrany lecz koniec końców i tak odzyskuje item - czyli ok.

Trzecia reakcja - item który miałem znaleźć i zanieść NPC1 został zabrany mi przez innego w tym przypadku NPC2 gdyż mnie namierzył jak szedłem z tym itemem i sprzedałem NPC1 że on mi kazał ten item przynieść (to już mam napisane w skrypcie - gosciu mi zabiera item), wracam do NPC1 bez tego itema i jego reakcja jest inna - w moim zamysle ma mnie zaatakowac gdyż wie iż zjebałem sprawę dając sobie zabrać item i go sprzedałem tamtemu NPC2.

To mój kod - on działa, nie ma błędów lecz zaraz po oddaniu itema (jak w pierwszej reakcji) pojawia się trzecia i to jest zle. Trochę niewyraźnie to opisałem.  Chce by NPC1 miał trzy reakcję, kompletnie osobne, jedna taka, że zanosze item (omijając NPC2 który łapie nas z itemem), druga, że NPC2 łapie nas z itemem ale po gadce go oddaje, zanosze item NPC1 i git, trzecia item mi zabrano, wracam do NPC1 i on mnie leje za to zem go sprzedal i item zabrano.

//*********************************************************************
//    AlkoWykonane
//*********************************************************************
INSTANCE DIA_SLD_891_Marian_AlkoWykonane   (C_INFO)
{
    npc         = SLD_891_Marian;
    nr          = 1;
    condition   = DIA_SLD_891_Marian_AlkoWykonane_Condition;
    information = DIA_SLD_891_Marian_AlkoWykonane_Info;
    permanent   = FALSE;
    description = "Mam alkohol.";
};

FUNC INT DIA_SLD_891_Marian_AlkoWykonane_Condition()
{
if (Npc_HasItems(other, ItFo_PiwoQuest) == 1)
{
    return TRUE;
};
};

FUNC VOID DIA_SLD_891_Marian_AlkoWykonane_Info()
{
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_00"); //Mam alkohol.
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_01"); //Co tam masz?
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_02"); //Piwo.
  B_GiveInvItems (other, self, ItFo_PiwoQuest, 1);
  B_LogEntry (TOPIC_Alko,"Dałem Marianowi browara. Mam tylko nadzieję, że nikt się o tym procederze nie dowie.");
  Log_SetTopicStatus (TOPIC_Alko, LOG_SUCCESS);
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_03"); //Ooo, zimne piwko tylko dla mnie. Możesz już iść.
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonane_01_04"); //Słowo "dziękuję" by się przydało.
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonane_15_05"); //No dzięki.

  if (npc_knowsinfo (other, DIA_SLD_889_Mirek_AlkoWykrycie))
  && (Npc_HasItems(other, ItFo_PiwoQuest) == 0)
  {
  AI_Output (self, other, "DIA_SLD_891_Marian_AlkoWykonanePraw_15_01"); //Ty dziadu, sprzedałeś mnie Mirkowi, zatłukę cie jak psa!
  AI_Output (other, self, "DIA_SLD_891_Marian_AlkoWykonanePraw_01_02"); //Czekaj, musiałem, bo...

  AI_StopProcessInfos    (self);
  B_Attack (self, other, AR_NONE,1);

  AI_StopProcessInfos    (self);
  };
};               


DIA_SLD_889_Mirek_AlkoWykrycie  - to właśnie od NPC2, po tej właśnie gadce z NPC2 (gdyż u niego mam dwie opcje - jedna negocjacja i wraca item, druga nieudana negcajacja item przepada) chciałbym mieć dwie inne reakcje u NPC1.


Ale popieprzyłem, może wkleje tutaj skrypt tego NPC2 i może połapiecie się o co mi chodzi z tymi trzema reakcjami (prosze nie czytać dialogów xD)

//*********************************************************************
// AlkoWykrycie
//*********************************************************************
INSTANCE DIA_SLD_889_Mirek_AlkoWykrycie     (C_INFO)
{
npc         = SLD_889_Mirek;
nr          = 1;
condition   = DIA_SLD_889_Mirek_AlkoWykrycie_Condition;
information = DIA_SLD_889_Mirek_AlkoWykrycie_Info;
permanent   = FALSE;
description = "Czekaj, co masz za plecami?";
  important   = 1;
};

FUNC INT DIA_SLD_889_Mirek_AlkoWykrycie_Condition()
{
if (npc_knowsinfo (other, DIA_SLD_891_Marian_Alko))
&& (Npc_HasItems(other, ItFo_PiwoQuest) == 1)
{
return TRUE;

};
};

FUNC VOID DIA_SLD_889_Mirek_AlkoWykrycie_Info()
{
  AI_Output (self, other, "DIA_SLD_889_Mirek_AlkoWykrycie_01_00"); //Czekaj chłopcze, co masz za plecami?
  AI_Output (other, self, "DIA_SLD_889_Mirek_AlkoWykrycie_15_01"); //Ja? Nic proszę pana. Tak sobie rączki trzymam.
  AI_Output (self, other, "DIA_SLD_889_Mirek_AlkoWykrycie_01_02"); //Jak to nic? Pokaż i to migiem.
  B_GiveInvItems (other,self, ItFo_PiwoQuest, 1);
  AI_Output (self, other, "DIA_SLD_889_Mirek_AlkoWykrycie_01_03"); //CO TO MA BYĆ! ALKOHOL NA MOIM OBOZIE?!

  Info_ClearChoices (DIA_SLD_889_Mirek_AlkoWykrycie);
Info_AddChoice (DIA_SLD_889_Mirek_AlkoWykrycie, "To Marian kazał mi przynieść!", DIA_SLD_889_Mirek_AlkoWykrycie_Prawda );
  Info_AddChoice (DIA_SLD_889_Mirek_AlkoWykrycie, "Znalazłem to za szopą, chciałem wyrzucić.", DIA_SLD_889_Mirek_AlkoWykrycie_Klamstwo );
  Info_AddChoice (DIA_SLD_889_Mirek_AlkoWykrycie, "To jest mój browar i zaraz sam go wypije na pańskich oczach.", DIA_SLD_889_Mirek_AlkoWykrycie_Pazernosc );
};

FUNC VOID DIA_SLD_889_Mirek_AlkoWykrycie_Prawda()
{
  AI_Output (other, self, "DIA_SLD_889_Mirek_AlkoWykrycie_Prawda_15_00"); //To Marian kazał mi przynieść! Mówił, że jeśli nie przyniosę mu to nagada na mnie głupot.
  AI_Output (self, other, "DIA_SLD_889_Mirek_AlkoWykrycie_Prawda_01_01"); //Taki Marianek mądry? Tak go suszy? Zaraz mu dam nauczkę!

  AI_StopProcessInfos (self);
  Log_SetTopicStatus (TOPIC_Alko, LOG_FAILED);
  B_LogEntry (TOPIC_Alko,"Mirek złapał mnie jak niosłem browara Marianowi. By się uratować sprzedałem samego Mariana. Mirek nieźle się wkurzyl na niego, będą jaja.");
};

FUNC VOID DIA_SLD_889_Mirek_AlkoWykrycie_Klamstwo()
{
  AI_Output (other, self, "DIA_SLD_889_Mirek_AlkoWykrycie_Klamstwo_15_00"); //Znalazłem to za szopą, chciałem wyrzucić by żadnego z chłopaków czasem nie podkusiło wypić. Przecież to sportowcy.
  AI_Output (self, other, "DIA_SLD_889_Mirek_AlkoWykrycie_Klamstwo_01_01"); //Hmmm, masz rację. Trochę za bardzo się uniosłem. Myślałem, że podpijasz sobie na obozie, a to kategorycznie zabronione. Kiedyś była tu bimbrownia, pewnie jeszcze jakieś flaszki się tu walają. Dobrze, masz to i wyrzuć, najlepiej gdzieś do jeziora.
  AI_Output (other, self, "DIA_SLD_889_Mirek_AlkoWykrycie_Klamstwo_15_02"); //Dobrze proszę pana, tak uczynię.

  CreateInvItems (self, ItFo_PiwoQuest, 1);
B_GiveInvItems (self, other, ItFo_PiwoQuest, 1);

  B_LogEntry (TOPIC_Alko,"Mirek mnie namierzył jak szedłem z piwskiem dla Mariana. Na szczęście udało mi się wyłgać. Idę zanieść to przeklęte piwo.");
  AI_StopProcessInfos (self);
};

FUNC VOID DIA_SLD_889_Mirek_AlkoWykrycie_Pazernosc()
{
  AI_Output (other, self, "DIA_SLD_889_Mirek_AlkoWykrycie_Pazernosc_15_00"); //To jest mój browar i zaraz sam go wypije na pańskich oczach.
  B_GiveInvItems (other,self, ItFo_PiwoQuest, 1);
  AI_Output (self, other, "DIA_SLD_889_Mirek_AlkoWykrycie_Pazernosc_01_01"); //Zawiodłeś mnie chłopcze. Zawiodłeś ojca. Wypad z obozu!
  AI_Output (self, other, "DIA_SLD_889_Mirek_AlkoWykrycie_Pazernosc_01_02"); //Aaa i jeszcze jedno...

  AI_StopProcessInfos (self);
  Log_SetTopicStatus (TOPIC_Alko, LOG_FAILED);
  B_LogEntry (TOPIC_Alko,"Zrobiłem jedną z najgłupszych rzeczy w moim życiu. Wypiłem przy Mirku browara którego miałem dostarczyć Marianowi. Mirek tak się wkurzył, że mi przetrzepał skórę i wyrzucił z obozu.");
  B_Attack (self, other, AR_NONE,1);

};                                             

19
Dzięki, to Npc_SetToFistMode(self); wstawić do pliku NPC-a ?

Prace skryptowe o dziwo idą mi bardzo sprawnie, część rzeczy jest intuicyjna więc radze sobie w miare dobrze, lecz mam pytanie. Chcę by u NPC-1 pojawila się opcja rozmowy ale dopiero gdy wykonaliśmy zadanie NPC-2, lecz NPC-2 miał zadanie które można było zrobić na dwa różne sposoby(jedno było by powiedziec prawde drugie by skłamac) i chcę by u NPC-1 opcja rozmowy pojawiała się gdy się zadanie zrobi niezależnie od wybranego sposobu. 

Ja takie coś napisałem ale nie działa. Myślałem, że ELSE - tzn ALBO czyli rozmowa pojawi gdy zrobilo sie zadanie wersja1 ALBO zadanie wersja2.

{
if (npc_knowsinfo (other, DIA_SLD_892_Cypel_Grubas))
else if (npc_knowsinfo (other, DIA_SLD_892_Cypel_Grubas2))
{
return TRUE;
};
};

20
Tak jak pisałem, nie robie nowego tematu, tutaj napisze, gdyż mam kilka pytań:

Szukam rutyny, tej co NPC zbiera ziele lub zboże np Viran ze swoimi ludźmi na bagnach w g1, zbiera bagienne ziele. Myślałem, że to TA_Stomp_Herb ale to nie to,  myślę, że to rozbijanie zielska tym tłuczkiem.

Drugie pytanie, jak zrobić by NPC któremu usunąłem w skryptach broń - ma walczyć gołymi pięściami, nie "wyczarowywał" sobie lagi ?

Oraz ostatnie, jak zrobić by dwóch NPCów o poszczególnych godzinach (czyli to ma być rutyna) szli w dane miejsce (arenka) i bili się np do nieprzytomności jednego z nich, albo przez określony czas rutyny ? Potrafię zrobić, by NPC na mnie (gracza) sie rzucił, ale zeby NPC na NPC już nie.

Strony: [1] 2 3 4
Do góry