Paradoxon variable_exists

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Paradoxon variable_exists

    Heyho!

    Wieso bringt mir der GM eigentlich immer ne Fehlermeldung, wenn ich per variable_global(oder local, is egal)_exists(foobar) überprüfe, ob die entsprechende Variable bereits exestiert oder nicht!??????Fehlermeldung: "Variable unknown" - aber genau das versuche ich doch herauszufinden, wieso dann ERROR!?!????? paradox!
  • @Blackspark:
    Danke, aber wie muss ich das genau verwenden; denn variable_global_exists("dyn_lights") für die globale Variable global.dyn_lights funktioniert nicht (die exestiert einfach nie, obwohl ich sie schon deklariert habe),
    muss ich den Punkt "." oder das "global" auch noch mit reinbringen?!

    @Fallout:
    Ich denke Foobar schreibt man Foobar, siehe dazu foobar.de ... ;)
  • Hmmm...also das mit dem variable_exists() klappt jetzt, danke.
    Führt mich leider zu meinem nächstne Problem:

    Immer wenn man ins Hauptmenü gelangt, wird in meinem Game das Skript aufgerufen, das alle wichtigen Variablen auf die Standartwerte setzt, bzw. beim Start des Spiels (also beim ersten mal, wo man ins Hauptmenü kommt) initialisiert.

    Nun habe ich in dem Skript folgenden Code:

    GML-Quellcode

    1. //System values
    2. if(not variable_global_exists("dyn_lights"))
    3. {
    4. global.dyn_lights=1;
    5. global.music=1;
    6. }

    Dies soll bezwecken, dass die beiden Variablen dyn_lights und music nur EINMAL auf die Standartwerte gesetzt werden, sprich nur am Start des Spieles, wenn dyn_lights noch nicht exestiert, sollen diese beiden Variablen initialisiert und auf Standartwerte gesetzt werden.
    Beide Variablen können vom Spieler verändert werden; nämlich indem er in den Optionen die Lights an/aus und die Musik an/aus schaltet - soweit so gut.
    Wenn man jetzt jedoch bereits im Spiel selbst war und wieder zurückkehrt ins Hauptmenü, sollen die beiden Variablen natürlich nicht wieder auf die Standartwerte (also AN) gesetzt werden, sondern so bleiben, wie der Spieler sie eingestellt hat. Deshalb ja auch im Code die Bedingung "Wenn es die Variable "dyn_lights" noch nicht gibt".Diese Bedingung sollte doch dazu führen, dass die beiden Variablen nur ein einziges mal automatisch auf 1 gesetzt werden!
    Wenn ich jetzt jedoch ins Hauptmenü gehe und das Initialisierungsskript ausgeführt wird, wird jedesmal dyn_lights und music auf 1 gesetzt, obwohl die Bedingung ja eigentlich nicht erfüllt sein dürfte!
    Kapiert das irgendjemand*g*?!Is grad voll kompliziert zu erklären :)!

    Ich könnte das ganze natürlich mit einer Umgehungsvariable lösen, aber das ist doch peinlich!Wieso funktioniert das so nicht!?
  • Kann es sein das du um zum startroom zurückzukommen das Spiel restartest?
    Weil dann die Variablen natürlich wieder nicht existieren ;)

    Außerdem sieht dein code n wenig komisch aus... probiers mal so:

    GML-Quellcode

    1. if not (variable_global_exists("dyn_lights"))
    2. {
    3. global.dyn_lights=1;
    4. global.music=1;
    5. }

    oder:

    GML-Quellcode

    1. if (variable_global_exists("dyn_lights")) = false
    2. {
    3. global.dyn_lights=1;
    4. global.music=1;
    5. }


    Was bringt das ganze eigentlich, da soweiso bei jedem Restart des Spiels die Variablen verloren gehen?
    Speichere sie doch in eine INI-Datei und les sie dann zu beginn des Spiels aus... dann kannste dir das mit der Abfrage auch sparen.
  • Original von TrunX
    Kann es sein das du um zum startroom zurückzukommen das Spiel restartest?
    Weil dann die Variablen natürlich wieder nicht existieren ;)


    DOH :headtouch:! Du liegst richtig, dann ergibt das natürlich Sinn :)!thx

    Original von Nobody-86
    warte auf die 7er version, da sollen laut baschreibung eine try ... catch anweisung enthalten sein.


    Cool, auf wann isn die angesetzt, gibts schon n Release-Datum? Hab ich noch garnich mitbekommen :D!

    Wat is "try catch"?