Ergebnis 1 bis 2 von 2

Thema: Seltsames Verhalten von false-Klasse

  1. #1

    Seltsames Verhalten von false-Klasse

    Folgende Situation (die bei mir schon in mehreren Projekten aufgetreten ist):

    Ich hab eine Klasse mit einer Variablen @bla. Bei Initialisierung setze ich @bla auf false oder true. Später möchte ich @bla ändern und weise ihr false zu. Dann hängt sich der Maker auf. Es gibt keine Fehlermeldung, auch kein "Script is hanging" oder so. Weiß jemand woran das liegen könnte?

    Ich hab's auch nochmal eben getestet. Mit dieser Klasse:

    Code:
    class Fehler
      attr_accessor :bla
      
      def initializie
        @bla = true
      end
    end
    Dann hab ich nen Charset bei dem per Scriptaufruf ein neues Objekt angelegt wird:

    Code:
    $fehler = Fehler.new
    Und ein weiteres Charset ändert dann die Variable per:

    Code:
    $fehler.bla = false
    Danach hängt sich das Spiel auf. Ich frag mich, ob ich bei false und true etwas grundsätzlich falsch verstanden hab oder ob der Maker spinnt.

  2. #2
    Das liegt an dem Event-Interpreter. Wenn ein Script-Befehl im Event false als Rückgabewert hat, wird das als "Fehler im Script" interpretiert und der Interpreter führt das Script nochmal neu aus, weil ja Fehler im Script plötzlich verschwinden wenn man ein Script nur oft genug ausprobiert oO

    Ist jedenfalls ein ziemlich merkwürdiges Feature des Interpreters, bei dem die Entwickler bei Enterbrain sicher nicht ganz bei der Sache waren. Die einfachste Art und Weise das zu umgehen ist ans Ende deines Script-Befehls ein true anzuhängen.
    Code:
    @x = false
    true
    Ansonsten kannst du auch das Problem an der Wurzel packen und den Interpreter entsprechend umschreiben:
    Code:
    class Game_Interpreter
      alias eval_event_code command_355
      def command_355
        eval_event_code || true
      end
    end
    Das in den Script-Editor über dem Main-Script einfügen.

Berechtigungen

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