else if

  • #1, by adventure-birdTuesday, 27. February 2018, 20:39 6 years ago
    Ich versuche gerade ein Hilfe/Tipp-System zu implementieren.

    Das ganze soll ganz einfach funktionieren: ich habe einen Inventargegenstand "Komplettlösung" auf den ich über das Benutzen Command einfach je nach Spielstand bzw. Puzzlesituation einen Text ausgeben möchte um den Spieler in die richtige Richtung zu leiten.

    Kurzum: ein klassischer if, elseif, elseif, elseif etc. Fall.
    Ich kann zwar mit der "Wenn Bedingung", "Sonst", "Ende Wenn" eine riesige Verschachtelung erstellen, würde aber lieber:
    a) ein else if anwenden
    b) jeweilse eine Aktion Abbruchbedingung setzen können (wenn das erste IF eintrifft, Textausgabe und die gesamte Aktionsliste danach ignorieren)

    Wie macht man sowas am besten. Oder habe ich möglicherweise einen wichtigen Aktionspunkt noch nicht entdeckt?

    Besten Dank schon im Voraus

    Newbie

    25 Posts


  • #2, by georgmoensWednesday, 28. February 2018, 10:45 6 years ago
    Am besten setzt du im Aktionsteil einen Wert und fragst den dann ab (z.B. wenn Wertxyz = 2, dann passiert folgendes). Mit diesen Werten lässt sich vieles weitaus eleganter lösen als mit den Bedingungen. Als ich das bei meinem Spiel mal verstanden hatte, habe ich fast nur noch mit Werten gearbeitet.

    Newbie

    87 Posts

  • #3, by sebastianWednesday, 28. February 2018, 13:41 6 years ago
    Ein eigenes "elseif" gibt es als Aktionsteil leider noch nicht. Ist eigentlich traurig, da es eines der Standard-Programmier-Befehl ist. Hoffentlich kommt da noch irgendwann mal was vom Dev-Team, was das ganze möglich macht. Zwar gibt es mittlerweile ein "if Lua" Befehl, der einiges umgeht, aber dadurch lässt sich meines Erachtens auch kein VS-Interner "else if" generieren.

    Sprich hier musst du aus Aktionsteilen dir das so verschachtelt zusammenbauen, dass im Else Teil der ersten Bedingung das If-Else-End zur nächsten Bedingung reinkommt und so weiter.


    Thread Captain

    2346 Posts

  • #4, by MachtnixThursday, 01. March 2018, 16:09 6 years ago
    Man könnte hinter jeder if-Abfrage einen Sprung zum Ende einbauen, wenn Bedingung erfüllt ist (sozusagen uralter BASIC-Stil), andernfalls wird die nächstfolgende If-Bedingung aufgerufen. Ist ziemlich „schmutzig“. 
    Die Idee mit den Werten ist eleganter. 

    Thread Captain

    1097 Posts