Problem z Info_ClearChoices [G2NK] 3405 2

O temacie

Autor Jastrzab

Zaczęty 31.07.2010 roku

Wyświetleń 3405

Odpowiedzi 2

Jastrzab

Jastrzab

Użytkownicy
posty197
Propsy39
Profesjabrak
  • Użytkownicy
Witam mam pewien problem z dialogiem. Chcę aby po spełnieniu odpowiednich warunków można było wybrać opcję dialogową i po wybraniu jej nie można było znowu rozmawiać na ten sam temat, a gdy nie spełnimy warunków to można będzie porozmawiać a ten temat ale będzie inna wypowiedź NPC'a. Od razy mówię że nie chodzi mi o Permanent. Oto skrypt opcji dialogowej:
INSTANCE DIA_Aeral_Czlonkostwo (C_INFO)
{
   npc = NONE_5001_Aeral;
   nr = 601;
   condition = DIA_Aeral_Czlonkostwo_Condition;
   information = DIA_Aeral_Czlonkostwo_Info;
   permanent = TRUE;
   description = "Co do mojego członkostwa...";
};

FUNC INT DIA_Aeral_Czlonkostwo_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Aeral_Specjalizacja))
    {
    return TRUE;
    };
};


FUNC VOID DIA_Aeral_Czlonkostwo_Info()
{
    AI_Output (other, self ,"DIA_Aeral_Czlonkostwo_15_01"); //Co do mojego członkostwa...
    AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_03_02"); //Tak?

    Info_ClearChoices (DIA_Aeral_Czlonkostwo);
    Info_AddChoice (DIA_Aeral_Czlonkostwo, "Jestem gotów by zostać Asasynem!", DIA_Aeral_Czlonkostwo_Gotowy);
    Info_AddChoice (DIA_Aeral_Czlonkostwo, "WRÓĆ", DIA_Aeral_Czlonkostwo_BACK);
};

FUNC void DIA_Aeral_Czlonkostwo_Gotowy()
{
    if (other.HitChance[NPC_TALENT_1H] >= 30)
        || (other.HitChance[NPC_TALENT_2H] >= 30)
        || (other.HitChance[NPC_TALENT_BOW] >= 30)
        || (other.HitChance[NPC_TALENT_CROSSBOW] >= 30)
        || (Npc_GetTalentSkill (hero, NPC_TALENT_MAGE) >= 1)
    {
        AI_Output (other, self ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_02"); //Uważam, że jestem gotów by do was dołączyć.
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_15_03"); //Tak uważasz?
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_15_04"); //No cóż ja jestem ZA!
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_05"); //Pokazałeś że coś umiesz.
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_06"); //Nauczyłeś się przydatnych umiejętności.
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_07"); //Czy jesteś gotów zostać prawdziwym Asasynem?
        AI_Output (other, self ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_08"); //Tak jestem gotów!!!
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_09"); //A więc witaj w drużynie!
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_10"); //Od teraz noś ten amulet jako znak, że do nas należysz.
CreateInvItems (self, ItAm_Asasyn, 1);
        B_GiveInvItems (self, other, ItAm_Asasyn, 1);
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_11"); //A i jeszcze coś.
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_12"); //Nie obchodzi mnie co robisz poza obozem. Nasza gildia jest mało ważna w Khorinis. Nikt raczej o nas nie wie
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_13"); //więc masz prawo dołączyć do którejś z prawdziwych i ważnych gildii na wyspie.
        AI_Output (other, self ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_15_14"); //Rozumiem.
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_15"); //Teraz idź do Sythzona. Da ci jakiś porządny ekwipunek.
        AI_Output (other, self ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_15_16"); //Do zobaczenia.
        AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Gotowy_03_17"); //Nie daj się zabić.
   
    Info_ClearChoices (DIA_Aeral_Czlonkostwo);

    B_LogEntry                     (TOPIC_Dolaczenie_Asasyni,"Zostałem przyjęty w poczet Asasynów. Powinienem się udać do Sythzona po nowy ekwipunek.");

    B_GivePlayerXP (2000);

    Asasyn = 1;
    AI_StopProcessInfos (self);
    }
    else
    {
    AI_Output (other, self ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Nie_gotowy_15_01"); //Sądzę, że jestem gotów do was dołączyć.
    AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Nie_gotowy_15_02"); //Jest jeszcze dla ciebie za wcześnie.
    AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Nie_gotowy_03_03"); //Popracuj trochę nad swoimi umiejętnościami, oczywiście w zależności od twojej specjalizacji.
    AI_Output (self, other ,"DIA_Aeral_Czlonkostwo_Czlonkostwo_Nie_gotowy_03_04"); //Potrenuj trochę a cię przyjmę.
    AI_StopProcessInfos    (self);  
 };
};

FUNC void DIA_Aeral_Czlonkostwo_BACK()
{
    Info_ClearChoices (DIA_Aeral_Czlonkostwo);
};

I teraz problem. Jak spełnie warunki i pogadam z tym npcem na ten temat to on mnie przyjmuję do gildii, ale po rozmowie można W KÓŁKO z nim o tym rozmawiać. Jak zrobić żeby po tej rozmowie nie można było już o tym gadać. Próbowałem z Info_ClearChoices ale się nie udaje.
Z góry dzięki.
 
CPU: Intel Core i7 8700k
RAM: G.Skill Ripjaws 16GB 3000MHz CL15
GPU: MSI GTX 1060 6GB
Mobas: MSI Z370 Gaming Pro Carbon

michalsz

michalsz

Użytkownicy
posty132
  • Użytkownicy
dodaj warunek if do dialogu taki o :
FUNC INT DIA_Aeral_Czlonkostwo_Condition()
{
    if (Npc_KnowsInfo (other, DIA_Aeral_Specjalizacja))
    && (asasyn==0)
    {
    return TRUE;
    };
};
 

Jastrzab

Jastrzab

Użytkownicy
posty197
Propsy39
Profesjabrak
  • Użytkownicy
Dzięki wielkie, ten pomysł ze zmienną okazał się dobrym rozwiązaniem. Temat do zamknięcia.
 
CPU: Intel Core i7 8700k
RAM: G.Skill Ripjaws 16GB 3000MHz CL15
GPU: MSI GTX 1060 6GB
Mobas: MSI Z370 Gaming Pro Carbon


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