Modding Gothica > Skrypty

Problem z dialogami z podopcjami

(1/2) > >>

Mika 123:
Witam.
Przybywam z - moim zdaniem - dziwnym problemem. Otóż, kiedy odpalam grę za pomocą GothicStarter_mod i ten sprawdza mi skrypty, wywala mnie do pulpitu z powodu dialogu z podopcjami. Nie jest to pierwszy raz, ale poprzednio po prostu zrezygnowałem z dawania wyboru. Tym razem postanowiłem zapytać tutaj, w czym jest problem? Próbowałem to rozwiązać na różne sposoby, ale za każdym razem dostaję komunikat "Wrong type". A wydaje mi się, że wszystko robię dobrze. Instancja dialogu wygląda tak, jak chyba powinna być: DIA_ImięNPC_NazwaDialoguGłównego_NazwaPodopcji. Co ciekawe z obu podopcji zSpy czepia się tej nr 2.
Z góry dziękuję za pomoc.

Cruc:
Najlepiej będzie jak dasz screen błędu i skrypt. Na ten moment podałeś jedynie info, że wszystko się wydaje być git, wobec czego nikt nie wywróży co może być nie tak.

Mika 123:
Racja. Screen błędu:

https://imgur.com/a/Z9nGsau (kompletnie nie wiem, czemu się nie wyświetla, więc wrzucam link ;) )

A oto skrypt tego konkretnego dialogu:

//========================================
//-----------------> CWGiveOre
//========================================

INSTANCE DIA_Walter_CWGiveOre (C_INFO)
{
   npc          = Grd_237_Walter;
   nr           = 2;
   condition    = DIA_Walter_CWGiveOre_Condition;
   information  = DIA_Walter_CWGiveOre_Info;
   permanent   = FALSE;
   description   = "Mam rudę.";
};

FUNC INT DIA_Walter_CWGiveOre_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Walter_CW_AboutBetrayer))
    && (Npc_HasItems (other, ItMiNugget) >=200)
    {
    return TRUE;
    };
};


FUNC VOID DIA_Walter_CWGiveOre_Info()
{
    AI_Output (other, self ,"DIA_Walter_CWGiveOre_15_01"); //Mam rudę.
    AI_Output (self, other ,"DIA_Walter_CWGiveOre_03_02"); //Jak miło! Wiesz, warto uczcić naszą przyjemną współpracę. Przynieś jeszcze kilka butelek piwa, golniemy sobie.
    AI_Output (other, self ,"DIA_Walter_CWGiveOre_15_03"); //Wiesz, nie jestem przekonany...
    AI_Output (self, other ,"DIA_Walter_CWGiveOre_03_04"); //Masz rację. Co to za ucztowanie bez zakąski? Zatem oprócz, powiedzmy, sześciu butelek piwa przynieś jeszcze trochę smażonego mięsa. Tuzin wystarczy.
    AI_Output (other, self ,"DIA_Walter_CWGiveOre_15_05"); //(do siebie) To chyba jakieś żarty...

    Info_ClearChoices      (DIA_Walter_CWGiveOre);
    Info_AddChoice      (DIA_Walter_CWGiveOre, "Słuchaj no...", DIA_Walter_CWGiveOre_NO);
    Info_AddChoice      (DIA_Walter_CWGiveOre, "Ech, no dobra...", DIA_Walter_CWGiveOre_YES);
};

FUNC VOID DIA_Walter_CWGiveOre_NO()
{
    AI_Output (other, self ,"DIA_Walter_CWGiveOre_NO_15_01"); //Słuchaj no, szukam Świstaka ze zlecenia Coppera. Naprawdę chcesz mi utrudniać?
    AI_Output (self, other ,"DIA_Walter_CWGiveOre_NO_03_02"); //A wiesz, co mi może zrobić Copper? Gówno. Więc mi tu nie fikaj.
    AI_Output (other, self ,"DIA_Walter_CWGiveOre_NO_15_03"); //Sprawa, w którą zamieszany jest Świstak dotyczy zabójstwa Strażnika. Ciekawe co powie Thorus, kiedy dowie się, że sabotujesz moje zadanie.
    AI_Output (self, other ,"DIA_Walter_CWGiveOre_NO_03_04"); //No dobra, mały, powiem ci. Ten łysol polazł do chaty Cavalorna.
    AI_Output (other, self ,"DIA_Walter_CWGiveOre_NO_15_05"); //Dziękuję bardzo.
    AI_Output (self, other ,"DIA_Walter_CWGiveOre_NO_03_06"); //Nie bądź taki zadowolony. Nie zapomnę ci tej bezczelności, możesz być pewien.
    B_LogEntry                     (CH1_Copper_Wood,"Prośbą i groźbą wydobyłem od Waltera, gdzie udał się Świstak. Czas odwiedzić chatę Cavalorna.");

    B_GiveXP (100);
    AI_StopProcessInfos   (self);
};

FUNC VOID DIA_Walter_CWGiveOre_YES()
{
    AI_Output (other, self ,"DIA_Walter_CWGiveOre_YES_15_01"); //Ech, no dobra...
    AI_Output (self, other ,"DIA_Walter_CWGiveOre_YES_03_02"); //Świetnie. Zatem wracaj prędko. Pamiętaj: 6 butelek piwa, 12 kawałków smażonego mięsa.
    B_LogEntry                     (CH1_Copper_Wood,"Walter życzy sobie dodatkowo sześciu piw i dwunastu smażonych mięs za powiedzenie, gdzie udał się Świstak. Ten człowiek jest niemożliwy.");
    AI_StopProcessInfos   (self);
};

Mika 123:
Zapomniałem o tym wspomnieć, ale oba dialogi mają przypisane konsekwencje, tj. po dialogu DIA_Walter_CWGiveOre_YES, aktywuje się kolejny dialog z Walterem potrzebny do zadania:



INSTANCE DIA_Walter_CW_GiveFood (C_INFO)
{
   npc          = Grd_237_Walter;
   nr           = 3;
   condition    = DIA_Walter_CW_GiveFood_Condition;
   information  = DIA_Walter_CW_GiveFood_Info;
   permanent   = FALSE;
   description   = "Proszę, oto piwo i mięso.";
};

FUNC INT DIA_Walter_CW_GiveFood_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Walter_CWGiveOre_YES))
    && (Npc_HasItems (other, ItFoMutton) >=12)
    && (Npc_HasItems (other, ItFoBeer) >=6)
    {
    return TRUE;
    };
};



a po DIA_Walter_CWGiveOre_NO aktywuje się dialog już bezpośrednio u Cavalorna:



INSTANCE DIA_Cavalorn_CW_AboutSwistak (C_INFO)
{
   npc          = Stt_336_Cavalorn;
   nr           = 1;
   condition    = DIA_Cavalorn_CW_AboutSwistak_Condition;
   information  = DIA_Cavalorn_CW_AboutSwistak_Info;
   permanent   = FALSE;
   description   = "Witaj, Cavalornie. Widziałeś tu Świstaka?";
};

FUNC INT DIA_Cavalorn_CW_AboutSwistak_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Walter_CW_GiveFood))
    || (Npc_KnowsInfo (other, DIA_Walter_CWGiveOre_NO))
    {
    return TRUE;
    };
};



Niby to oczywiste. Ale może coś zmieni.

frN:
Jestem prawie pewien, że do Npc_KnowsInfo można użyc tylko instancji C_INFO, a DIA_Walter_CWGiveOre_YES nie jest instacja tego typu i przez to wywala błąd.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej