Kilka dni temu zacząłem tworzyć małego moda, by się trochę poduczyć moddingu, lecz dzisiaj trafiłem na małą zaporę i nie potrafię sobie z nią poradzić. Mianowinie stworzyłem 2 dialogi do jednego NPC. Dobra, pierwszy miał działać bez żadnego warunku, tzn. podchodzę do postaci i po prostu z nią gadam. Po owym dialogu ruszamy z NPC do jego domy i tu właśnie zaczyna się problem. Napisałem warunek, że drugi dialog ma stać się dopiero dostępny, gdy będę w pobliżu danego waypointu, czyli w tym przypadku domu NPC. Niestety dialog jest dostępny od początku gry razem z tym pierwszym. Co zrobić, by drugi dialog nie pojawiał się w spisie do czasu, aż dojdę z postacią do jego domu? Tu macie trochę kodu:
//========================================
//-----------------> siema2
//========================================
INSTANCE DIA_Lukasz_siema2 (C_INFO)
{
npc = VLK_1667_Lukasz;
nr = 2;
condition = DIA_Lukasz_siema2_Condition;
information = DIA_Lukasz_siema2_Info;
permanent = FALSE;
description = "I co teraz?";
};
FUNC INT DIA_Lukasz_siema2_Condition()
{
return TRUE;
};
FUNC VOID DIA_Lukasz_siema2_Info()
{
if (Npc_GetDistToWP(hero, "OCR_HUT_Z5") > 1500)
{ B_LogEntry(CH1_Droga,"Dotarliśmy do miejsca zamieszkania Lukasza. Nigdy nie myślałem, że będę współpracował ze zwykłym kopaczem. Czas pokaże, czy słusznie wybrałem pomagając mu.");
Log_SetTopicStatus(CH1_Droga,LOG_SUCCESS);
B_GiveXP (100);
AI_Output (self, other ,"DIA_Lukasz_siema2_03_09"); //Dobra jesteśmy na miejscu. Jak ci się podoba moje mieszkanie?
AI_Output (other, self ,"DIA_Lukasz_siema2_15_10"); //Nie wierzę, że to wszystko jest twoje. Pewnie nikt nawet nie wie, że tu śpisz.
AI_Output (self, other ,"DIA_Lukasz_siema2_03_11"); //Rozgryzłeś mnie, to wcale nie jest moje, ale mniejsza z tym. W końcu przyszedłeś tu w konkretnej sprawie.
AI_Output (other, self ,"DIA_Lukasz_siema2_15_12"); //Właśnie, kto w obozie może chcieć mojej śmierci? Nikt jeszcze mnie tu nie zna.
AI_Output (self, other ,"DIA_Lukasz_siema2_03_13"); //Nie musi cię znać, by chcieć zabić, ale zacznijmy od samego początku. Przed powstaniem bariery zamieszkiwałem wyspę zwaną Khorinis.
AI_Output (self, other ,"DIA_Lukasz_siema2_03_18"); //Jest to małe miasto portowe zamieszkiwane przez wpływowych ludzi, ale też przez złoczyńców.
AI_Output (self, other ,"DIA_Lukasz_siema2_03_19"); //W nim właśnie spotkałem Tomasza, który teraz może chcieć cię zabić.
AI_Output (other, self ,"DIA_Lukasz_siema2_15_20"); //Tomasz? Nie znam takiej osoby, więc dlaczego on może chcieć mnie zabić.
AI_Output (self, other ,"DIA_Lukasz_siema2_03_21"); //Problem tej istoty tkwi w tym, że pewnej nocy zabił swojego ojca w niekontrolowanym gniewie. Od tego czasu dzieją się z nim dziwne rzeczy.
AI_Output (other, self ,"DIA_Lukasz_siema2_15_22"); //Dziwne rzeczy? Co masz na myśli?
AI_Output (self, other ,"DIA_Lukasz_siema2_03_23"); //Od tamtego dnia każde złe słowo skierowane w jego kierunku zamienia się w krwawą rzeź. Tu nie chodzi tylko o twój los, ale też całego obozu!
AI_Output (other, self ,"DIA_Lukasz_siema2_15_24"); //Skoro sprawia tyle problemów, dlaczego po prostu strażnicy się go nie pozbędą?
AI_Output (self, other ,"DIA_Lukasz_siema2_03_25"); //Nie mogą. Tomasz dostał gwarancję od Gomeza, że nie może zostać zaatakowany znienacka, inaczej strażnicy muszą zabić atakującego.
AI_Output (other, self ,"DIA_Lukasz_siema2_15_26"); //Chcesz, żebym się poświęcił?!
AI_Output (self, other ,"DIA_Lukasz_siema2_03_27"); //Nie, źle mnie zrozumiałeś. Tomek może zginąć tylko w honorowej walce na arenie.
AI_Output (self, other ,"DIA_Lukasz_siema2_03_28"); //Twoje pierwsze zadanie polega na odwiedzeniu areny i pokonaniu niejakiego Huberta. Jego miecz może się nam przydać w walce z Tomusiem.
Info_ClearChoices (DIA_Lukasz_siema2);
Info_AddChoice (DIA_Lukasz_siema2, "Niech się stanie, co musi. Wyruszę na arenę, by zdobyć miecz Huberta, który pomoże mi zniszczyć prześladowcę.", DIA_Lukasz_siema2_zgoda2);
Info_AddChoice (DIA_Lukasz_siema2, "Sam sobie idź po ten miecz, nie jestem tu od wykonywania twoich marnych poleceń.", DIA_Lukasz_siema2_rezygnacja2); };
};
FUNC VOID DIA_Lukasz_siema2_zgoda2()
{
AI_Output (other, self ,"DIA_Lukasz_siema2_zgoda2_15_01"); //Niech się stanie, co musi. Wyruszę na arenę, by zdobyć miecz Huberta, który pomoże mi zniszczyć prześladowcę.
Log_CreateTopic(PL_Hubert,LOG_MISSION);
Log_SetTopicStatus(PL_Hubert,LOG_RUNNING);
B_LogEntry(PL_Hubert,"Lukasz opowiedział mi historię Tomasza. Postanowiłem mu pomóc w walce z tym obłąkańcem. Pierwszym krokiem do zwycięstwa jest zdobycie oręża od niejakiego Huberta poprzez walkę na arenie.");
AI_Output (self, other ,"DIA_Lukasz_siema2_zgoda2_03_02"); //Dobrze, będę trzymał za ciebie kciuki. Gdy wrócisz opowiem ci coś więcej o sobie i tej całej sprawie.
Npc_ExchangeRoutine (self, "domek");
AI_StopProcessInfos (self);
};
FUNC VOID DIA_Lukasz_siema2_rezygnacja2()
{
AI_Output (other, self ,"DIA_Lukasz_siema2_rezygnacja2_15_01"); //Sam sobie idź po ten miecz, nie jestem tu od wykonywania twoich marnych poleceń.
AI_Output (self, other ,"DIA_Lukasz_siema2_rezygnacja2_03_02"); //Zawiodłem się na tobie, ale skoro sprawy tak się mają, jestem zmuszony się ciebie pozbyć, byś nie rozprzestrzeniał tej historii.
AI_StopProcessInfos (self);
Npc_SetPermAttitude (self, ATT_HOSTILE);
Npc_SetTarget (self, other);
AI_StartState (self, ZS_ATTACK, 1, "");
};