Ergebnis 1 bis 6 von 6

Thema: RMVX - Playerinteraktionen Blockieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erstmal danke für die Antworten, ich habe gestern kurz drüber geschaut und der Ansatz sollte funktionieren.

    @Todu: Ja, die Abfragen der von mir genutzten Keys mache ich über die Api.

    Das Problem was ich mit dieser Lösung hab, ist, das ich das Script, wenn es denn mal fertig ist, auch nur als Script veröffentlichen möchte und nicht für ein Game brauche. Demnach möchte ich den Leuten, die dieses Script benutzen möchten, es so einfach wie möglich machen: im Idealfall nur eben reinkopieren, objekt aufrufen, fertig. Also nicht noch großartig in den (Ich nenn sie mal) "Core"-Klassen rumfuchteln.

    Also eine schönere Lösung währe, wenn man mit Hilfe der Api oder so den Input Blokieren könnte, aber dazu kenne ich mich mit diesen ganzen kram kaum aus.
    (Komme aus der Webentwickler-Ecke )

  2. #2
    Du könntest das Input-Modul direkt blockieren.
    Code:
    class << Input
      attr_acessor :blocked
      [:trigger?, :press?, :repeat?].each do |methode|
        # benenne die ursprüngliche Methode um
        new_name = :"#{methode}_unblocked"
        alias_method new_name, methode
        # definiere neue Methode mit altem Namen, die blocked abfragt
        define_method(methode) {|key|
          if blocked then false else send(new_name, key) end
        }
      end
      [:dir4, :dir8].each do |methode|
        new_name = :"#{methode}_unblocked"
        alias_method new_name, methode
        define_method(methode) {
          if blocked then 0 else send(new_name) end
        }
      end
    end
    Der Code ist ungetestet, aber theoretisch müsstest du damit per
    Code:
    Input.blocked = true
    alle Standardeingaben blockieren können.

  3. #3
    Ahh coole Sache, danke, probier ich nachher direkt aus.

    Off-Topic:
    Es ist also möglich auch vorher definierte Klassen zu überschreiben?!
    Wird dann die gesamte Klasse überschrieben oder gibt es auch die Möglichkeit nur gewisse Funktionen der klassen zu überschreiben?

    EDIT: Ok, hat sich erledigt, ich hab mir den Ruby/RGSS-Kurs von -KD- mal vorgenommen, da steht alles schön erklärt Danke nochmal.

    EDIT EDIT: Super, hat funktioniert, ich musste nur nach dem Input.blocked = true noch ein Input.update aufufen

    Geändert von Towky (28.07.2012 um 11:46 Uhr)

Berechtigungen

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