Else / Else if 3126 6

O temacie

Autor Lobos

Zaczęty 11.01.2015 roku

Wyświetleń 3126

Odpowiedzi 6

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Czym dokładnie różnią się te dwa warunki ?

Dopiero zaczynam i mam problem z poprawnym dodaniem else do tej części dialogu

FUNC INT DIA_Zolnierz_Watchout_Condition()
{
if (hero.level >= 5)
&& (other.attribute[ATR_STRENGTH] >= 35)
{
else if (other.attribute[ATR_DEXTERITY] >= 35)
};
&& Npc_KnowsInfo (other, DIA_Zolnierz_HELLO1)

Chce by NPC zagadał jeśli
Będziemy mieć lvl mniejszy niż 5, wiecej niż 35 siły LUB wiecej niż 35 zręczności i również lvl mniejszy niż 5.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Źle masz to w ogóle napisane składniowo.
else - oznacza w przeciwnym wypadku.
else if - w przeciwnym wypadku gdy.

Przykład:
if (hero.level > 5) //jeśli poziom bohatera jest większy niż 5
{
// to zrób coś
}
else if (hero.level > 3) // w przeciwnym wypadku jeśli bohater ma poziom większy niż 3, ale mniejszy bądź równy 5
{
// to zrób coś
}
else // w pozostałych wypadkach
{
// to zrób coś
};

Co do twojego problemu. Użyj operatora alternatywy ||.
if (hero.level < 5) && ((hero.attribute[ATR_STRENGTH] >= 35) || (hero.attribute[ATR_DEXTERITY] >= 35))

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Dziękuje

I prosił bym o niezamykanie tematu bo pewnie będę miał za jakiś czas następne pytania w tej materii
 

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy
Próbuje zrobić nieco bardziej rozbudowany dialog niż ostatnio ale poplątałem coś w klamrach. Męcze się z tym i za cholere nie moge dojść co jest źle. Próbowałem różnie z tymi klamrami ale mam poprostu za małą wiedze na tą chwilę żeby sobie z tym samodzielnie poradzić.

Błąd pojawia się w linijce gdzie znajduję się pierwsze if.

func void DIA_SLD_Wascar_Hierarchia_Info ()
{
    AI_Output (other, self, "DIA_SLD_Wascar_Hierarchia_15_00"); //Tekst
 
    if Npc_KnowsInfo (other, DIA_Santos_Hello);
    {       
        AI_Output (other, self, "DIA_SLD_Wascar_Hierarchia_15_07"); //Tekst
     
           
        Info_ClearChoices (DIA_SLD_Wascar_Hierarchia);
        Info_AddChoice (DIA_SLD_Wascar_Hierarchia,"Tekst1",DIA_SLD_Wascar_Hierarchia_Tak);
        Info_AddChoice (DIA_SLD_Wascar_Hierarchia,"Tekst2",DIA_SLD_Wascar_Hierarchia_Nie);
        Info_AddChoice    (DIA_SLD_Wascar_Hierarchia, DIALOG_BACK, DIA_SLD_Wascar_Hierarchia_BACK);
       
       
        func void DIA_SLD_Wascar_Hierarchia_Tak ()
        {
            AI_Output (other, self, "DIA_SLD_Wascar_Hierarchia_Tak_15_09"); //Tekst
            AI_Output (self, other, "DIA_SLD_Wascar_Hierarchia_Tak_14_10"); //Tekst
            Log_CreateTopic (Topic__JoinToGuild,LOG_NOTE);
            B_LogEntry (Topic_JoinToGuild,"Tekst.");
        };
           
        func void DIA_SLD_Wascar_Hierarchia_Nie ()
        { 
            AI_Output (other, self, "DIA_SLD_Wascar_Hierarchia_Nie_15_11"); //Tekst
        };       
       
    }
    else
    {
        AI_Output (other, self, "DIA_SLD_Wascar_Hierarchia_15_13"); //Tekst
        if (MIS_JoinToGuild == LOG_RUNNING)
        {
            AI_Output (self, other, "DIA_SLD_Wascar_Hierarchia_14_14"); //Tekst
            Log_CreateTopic (Topic__JoinToGuild,LOG_NOTE);
            B_LogEntry (Topic_JoinToGuild,"Tekst");           
        };   
   
    }
    else
    }
        AI_Output (other, self, "DIA_SLD_Wascar_Hierarchia_15_17"); //Zas³ysza³em ¿e by³o potrzeba dodatkowych r¹k do pracy wiêc tu przyby³em.
};

   
 

mathsicist

mathsicist

Użytkownicy
posty209
Propsy269
NagrodyV
Profesjabrak
  • Użytkownicy
Masz dwa razy else, program nie wie co robić, jeżeli warunek nie zostaje spełniony. Prawdopodobnie musisz jedno else zamienić na else if. 
 

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
średnik daje się po klamrach jeżeli jest on ostatnią klamrą kończońcą ostatni warunek
funkcja nie może być stworzona w funkcji

Lobos

Lobos

Użytkownicy
posty594
Propsy360
Profesjabrak
  • Użytkownicy

Lobos

Else / Else if
#6 2015-01-13, 01:08(Ostatnia zmiana: 2015-01-13, 12:50)
Usunołem klamry ze średnikami i ruszyło się troche dalej. Teraz wyskakuje błąd przy :
func void DIA_SLD_Wascar_Hierarchia_Tak ()chicken
Nie wiem czy ta zasada zawsze się sprawdza bo dla przykładu widze że w dialogu Ramona z G2 jest conajmniej 3 średniki w jednym warunku
np. po AI_Output

Post połączony: 2015-01-13, 12:49
Spróbowałem zrobić tak żeby niebyło funkcji w funkcji, dodałem pare klamr i średników na koniec i skrypt jest poprawny tzn nie wyskakują już błędy. Zobaczymy jak to wygląda w grze.

Mam tylko problem z tym AI_StopProcessInfos (self);

B_Kapitelwechsel (1, OBOZ1_ZEN); //Joly: muß auf jeden Fall hier kommen. Allein schon wegen XP_AMBIENT!

Npc_ExchangeRoutine (self,"START");
};

Wyskakuje błąd że nierozpoznano OBOZ1_ZEN.

Przerabiałem ten dialog na podstawie dialogu Xardasa. W miejsce NEWWORLD_ZEN dałem nazwe swojego świata
 


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