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