Złożony warunek if (if, else, else if) 2915 4

O temacie

Autor Wicon

Zaczęty 1.05.2012 roku

Wyświetleń 2915

Odpowiedzi 4

Wicon

Wicon

Użytkownicy
posty147
Propsy5
  • Użytkownicy
Jak zrobić dwa warunki if w jednym dialogu?
(Nie mam na myśli miejsca CONDITION)

Czytałem tutorial o warunku if i tam było o tym coś napisane. Jednak autor posta słusznie dodał, że ma to wyglądać tak tylko z "grubsza". Niestety nie działa. Jak zrobić dialog w którym :
Cały dialog oczywiście pod jednym instance ( z wykorzystaniewm if, else, else if)
Jeżeli mam paczkę to włącza się dialog 1, jeśli nie mam paczki włącza się dialog 2, jeśli włączy się dialog 2 a ja mam złoto, wtedy włącza się dialog 3, jeśli włączy się dialog 2 a ja nie mam złota, wtedy włącza się dialog 4. Jeżeli włączy się dialog 1, to po nim jest już koniec całego dialogu.

Mój dialog wygląda tak:

{
   AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_00"); //Byłem w klasztorze.
   AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_01"); //Dobrze. Gdzie paczka? <-- To ma włączyć się po wybraniu opcji dialogowej.

        if (Npc_hasitems (other, ItMi_Julianpacket) >=1)
                {
                if (Npc_hasitems (other, itmi_gold) >=600)
                {
                AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_02"); //Proszę, oto złoto. <---To ma się włączyć, jeżeli nie mam paczki a mam złoto
                B_GiveInvItems (other, self, itmi_gold, 600);// Ta część to jeśli mam złoto.
                AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_03"); //No, przynajmniej nie zabrałeś mojego złota.
                }
                else
                {
                AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_07"); //Nie mam złota. // to jeśli nie mam paczki i nie mam złota
                AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_08"); //Co takiego? To już przesada. Zaraz cię nauczę odrobiny szacunku.
                AI_StopProcessInfos (self);
                B_Attack (self, other, AR_NONE, 1);
                };
                }
        else if (Npc_hasitems (other, ItMi_Julianpacket) >=1)
        {
        AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_02"); //Proszę bardzo. Oto ona. <-- Teraz to, jeśli mam paczkę.
        B_GivePlayerXP (XP_Julian_wino);
        B_GiveInvItems (other, self, ItMi_Julianpacket, 1);
        B_LogEntry (TOPIC_Julian_wino, "Julian dostał swoją paczkę z winem. Wydawał się być bardzo zadowolony.");
        Log_SetTopicStatus (TOPIC_Julian_wino, LOG_SUCCESS);
        AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_03"); //Doskonale się spisałeś. Przyjmij w nagrodę to złoto.
        CreateInvItems (self, itmi_gold, 100);
        B_GiveInvItems (self, other, itmi_gold, 100);
        }  
        else
        {
        AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_04"); //Niestety, klasztor nie chce sprzedać mi wina.// Jeśli nie mam paczki.
        B_LogEntry (TOPIC_Julian_wino, "Julian nie był zadowolony gdy powiedziałem mu, że w klasztorze nie sprzedano mi wina. Domyślił się, że nie zaoferowałem im tyle pieniędzy ile od niego dostałem.");
        Log_SetTopicStatus (TOPIC_Julian_wino, LOG_FAILED);
        AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_05"); //Byłeś zbyt skąpy, co? Zaoferowałeś mniej złota niż ci dałem. Nie wykonałeś tak prostego zadania.
        AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_06"); //W takim wypadku, proszę cię o zwrot pieniędzy.
        };
};

1.Proszę o wytłumaczenie tego, najlepiej na jakimś przykładzie.
2. Rzeby nie tworzyć drugiego tematu, jak zrobić jeszcze bardziej skomplikowany dialog, takiego typu jak dialog z oryginalnego g2nk gdzie wybieramy opcję, chcę zostać twoim czeladnikiem. Nie rozglądałem się na forum za punktem 2, bo przyszedł mi do głowy dopiero teraz, więc jeśli jest a komuś nie chcę się tłumaczyć po raz drugi to proszę o link.
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
if (Npc_hasitems (other, ItMi_Julianpacket) >=1)//ma paczke
{
AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_02"); //Proszę bardzo. Oto ona. <-- Teraz to, jeśli mam paczkę.
B_GivePlayerXP (XP_Julian_wino);
B_GiveInvItems (other, self, ItMi_Julianpacket, 1);
B_LogEntry (TOPIC_Julian_wino, "Julian dostał swoją paczkę z winem. Wydawał się być bardzo zadowolony.");
Log_SetTopicStatus (TOPIC_Julian_wino, LOG_SUCCESS);
AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_03"); //Doskonale się spisałeś. Przyjmij w nagrodę to złoto.
CreateInvItems (self, itmi_gold, 100);
B_GiveInvItems (self, other, itmi_gold, 100);
}
else//nie ma paczki
{
AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_04"); //Niestety, klasztor nie chce sprzedać mi wina.// Jeśli nie mam paczki.
B_LogEntry (TOPIC_Julian_wino, "Julian nie był zadowolony gdy powiedziałem mu, że w klasztorze nie sprzedano mi wina. Domyślił się, że nie zaoferowałem im tyle pieniędzy ile od niego dostałem.");
Log_SetTopicStatus (TOPIC_Julian_wino, LOG_FAILED);
AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_05"); //Byłeś zbyt skąpy, co? Zaoferowałeś mniej złota niż ci dałem. Nie wykonałeś tak prostego zadania.
AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_06"); //W takim wypadku, proszę cię o zwrot pieniędzy.


if (Npc_hasitems (other, itmi_gold) >=600)//ma złoto
{
AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_02"); //Proszę, oto złoto. <---To ma się włączyć, jeżeli nie mam paczki a mam złoto
B_GiveInvItems (other, self, itmi_gold, 600);// Ta część to jeśli mam złoto.
AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_03"); //No, przynajmniej nie zabrałeś mojego złota.
}
else//nie ma złota
{
AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_15_07"); //Nie mam złota. // to jeśli nie mam paczki i nie mam złota
AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_08"); //Co takiego? To już przesada. Zaraz cię nauczę odrobiny szacunku.
AI_StopProcessInfos (self);
B_Attack (self, other, AR_NONE, 1);
};


};

musisz zrobić 2 warunki if jeden wewnątrz drugiego

Wicon

Wicon

Użytkownicy
posty147
Propsy5
  • Użytkownicy
Działa jak należy. Mam jeszcze jedno pytanie związane z warunkiem if.
Czy można do niego dodać opcję wyboru? Np. jeżeli nie mam paczki a mam złoto, to mogę sobie wybrać czy chcem mu oddać złoto czy nie. Opcję wyboru zrobiłem poprawnie, ale jak chcem napisać treść tych dwóch opcji wyboru tzn. FUNC VOID to wyskakują błędy. Kombinowałem na wiele różnych sposobów.
 

Zucklov

Zucklov

Quest Pack Team
Sztywniutko
posty1220
Propsy1241
ProfesjaSkrypter
  • Quest Pack Team
  • Sztywniutko

Zucklov
Quest Pack Team

Złożony warunek if (if, else, else if)
#3 2012-05-19, 15:27(Ostatnia zmiana: 2012-05-19, 15:32)
   Info_ClearChoices (DIA_VLK_20011_Julian_winkoende);
    if (Npc_HasItems (other, itmi_gold)>= 600))
    {
    Info_AddChoice (DIA_VLK_20011_Julian_winkoende, "Proszę, oto złoto.", DIA_VLK_20011_Julian_winkoende_Yes);
    };
    Info_AddChoice (DIA_VLK_20011_Julian_winkoende, "Nie mam złota.", DIA_VLK_20011_Julian_winkoende_No);

};
FUNC VOID DIA_VLK_20011_Julian_winkoende_Yes()
{
                AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_Yes_15_02"); //Proszę, oto złoto.
                B_GiveInvItems (other, self, itmi_gold, 600);
                AI_Output (self, other, "DIA_VLK_20011_Julian_winkoende_Yes_70_03"); //No, przynajmniej nie zabrałeś mojego złota.
                Info_ClearChoices           (DIA_VLK_20011_Julian_winkoende);
};

FUNC VOID DIA_VLK_20011_Julian_winkoende_No()
{
                AI_Output (other,self ,"DIA_VLK_20011_Julian_winkoende_No_15_07"); //Nie mam złota.
                AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_No_70_08"); //Co takiego? To już przesada. Zaraz cię nauczę odrobiny szacunku.
                Info_ClearChoices           (DIA_VLK_20011_Julian_winkoende);
                AI_StopProcessInfos (self);
                B_Attack (self, other, AR_NONE, 1);

};

Całość dodajesz po kwestii

AI_Output (self ,other,"DIA_VLK_20011_Julian_winkoende_70_06"); //W takim wypadku, proszę cię o zwrot pieniędzy.
 
Lieb Vaterland magst ruhig sein

Wicon

Wicon

Użytkownicy
posty147
Propsy5
  • Użytkownicy
Już to rozkminiłem. Generalnie wszystko było dobrze, ale instance dialogu w opcji wyboru było inne niż całej opcji dialogowej. Wiem, banalne, nie zauważyłem tego hehe. Temat do zamknięcia.
 


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