Ergebnis 1 bis 17 von 17

Thema: Lösung für zu große Verschachtelungen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Das ganze sollte dafür gedacht sein, den Inhalt einer Booster-Packung für mein Spiel zu bestimmen. Dafür habe ich am Anfang des Events ein Random 1-346 erstellt.
    Die Erweiterung hat eigentlich nur 70 Karten, die 346 kommt zustande, weil ich nicht will das jede Karte die selbe Chance hat in der Packung zu sein. So hat eine Stern-Karte nun 4, eine Karo 5 und Kreis 6 Zahlen zugeordnet bekommen.

    Mit den Blöcken klappt es ganz gut. Kann eigentlich keine Performance-Einbrüche wahrnehmen, wenn das Event läuft.



    @Cornix: Dachte ich mir schon, aber ich habe leider keine Ahnung vom Scripten. Von daher muss ich mir erstmal mit Events weiterhelfen. Sollte ich aber evtl. mal lernen.

    Geändert von Sanghelios (16.08.2012 um 23:27 Uhr)

  2. #2
    In dem Fall bietet sich aber tatsächlich, wie Vorposter geschrieben haben, es nicht in Elsifs zu packen, sondern mit einem Label ans Ende zu Springen
    Code:
    if Var11 <= x
       code
       jump to label endBooster
    end
    if Var11 <= y
      code
      jump to label endBooster
    end
    (...)
    Label: endBooster

    so kommst du nie tiefer als Verschachtelungstiefe 1 innerhalb dieser Funktion

  3. #3
    Nein, das ändert auch nichts. Das Jump mag zwar das ganze verkürzen, aber das kannst du zusätzlich auch benutzen, wenn du Bereiche verwendest.
    Nehmen wir mal den Fall, dass die Variable 200 ist. Dann würde er ohne Unterteilung trotzdem 200 Abfragen durchrattern. Bei einer Unterteilung in vier Bereiche wie gesagt nur 50.

  4. #4
    Prinzipiell magst du ja recht haben, aber der Event-Interpreter ist sowieso nicht "so effizient". Letztlich bedeutet jede Zeile Eventcode mehr Aufwand für den Interpreter. Zuviele zusätzliche Branches und Einrückungen können das Ganze genauso gut auch langsamer machen.

    Aber kommen wir mal auf das Problem zurück: Es geht um Boosterpackungen. Da der Spieler wohl kaum im Millisekundentakt Boosterpackungen erhält, ist es vollkommen Wurscht wie schnell das Programm durchläuft. Mach dir also keinen Stress und setz es so um wie du es am einfachsten und übersichtlichsten findest.

  5. #5
    Äh ... ich bin mir jetzt echt nicht sicherf, ob das an mir und mangelndem verständniss deinem Script gegenüber liegt, aber so wie ich das sehe, KANN das Event, das du da oben gepostet hast gar nicht funktionieren, Confodere.

    Wenn du mit Else-ifs arbeitest, muss der größte Bedigungswert der erste in der Reihe sein. Denn wenn die Bedingung "Variable 0011 <= 12" wahr ist, ist auch die Bedingung "Variable 0011 <= 4" wahr, womit das Event niemals weiter als bis zur ersten abfrage durchlaufen wird.

  6. #6
    Zitat Zitat von caesa_andy Beitrag anzeigen
    Äh ... ich bin mir jetzt echt nicht sicherf, ob das an mir und mangelndem verständniss deinem Script gegenüber liegt, aber so wie ich das sehe, KANN das Event, das du da oben gepostet hast gar nicht funktionieren, Confodere.

    Wenn du mit Else-ifs arbeitest, muss der größte Bedigungswert der erste in der Reihe sein. Denn wenn die Bedingung "Variable 0011 <= 12" wahr ist, ist auch die Bedingung "Variable 0011 <= 4" wahr, womit das Event niemals weiter als bis zur ersten abfrage durchlaufen wird.
    Das Event ist meines Erachtens nach korrekt.

    Für Werte zwischen 1 und 4 gibt es Shiva, zwischen 5 und 8 Diablo, zwischen 9 und 12 Volt, etc etc.
    Immerhin ist 5 nicht kleiner gleich 4 aber kleiner gleich 8.

  7. #7
    Ah ... vergiss was ich gesagt hatte, ich war mit den Vorzeichen durcheinander gekommen.

    Passt schon so.

  8. #8
    Richtig, mein Lösungsvorschlag ist nich effizienter, aber du kannst den Code hinterher noch lesen, weil er nicht ewig weit eingerückt wird. Ich hab nicht mitbekommen dass es um Effizient geht, falls dem so ist, und ansonsten geb ich KD recht, ist vermutlich irrelevant.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •