Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 23

Thema: Button-Input-Funktions-Frage

  1. #1

    Button-Input-Funktions-Frage

    Also es geht um die Passwort-Funktion beim rpgmaker XP ... Ich wollte mal Fragen wie die genau funktioniert, bzw. welche Variablen für welche Tasten stehen ... ne Liste der jeweiligen Variablen für die jeweilige Taste wäre gut .... (bisher hab ich nur die Pfeiltasten raus)

    Dabei möchte ich vor allem auch noch mal gerne wissen welche Möglichkeiten man insgesamt damit hat ... ist es möglich die gesamte Tastatur in Variablen wieder zu geben? Also zum einen welche Tasten kann man mit der Button-Input-Processing-Funktion einstellen und wie kann man die Grundtastatur-Belegung ohne größere Rubykenntnisse ändern (denn die besitze ich noch nicht)???

    Also mir schwebt vor in meinem Spiel Die Pfeiltasten so zu belassen, dafür aber die Entertasten-Funktion auf Num5, Escape-Funktion auf Num 6 und Num 4 und 8 für aufrufbare Menüs, oder laufen oder sowas einzusetzten ...

    Wäre sehr dankbar wenn ihr mir helfen könntet!!!

  2. #2
    Du kannst im Editor mit F1 eine Beschreibung der Funktion aufrufen, dort stehen die Zahlenwerte der Buttons (die an die Tasten eines Gamepads angelehnt sind, wenn ich mich nicht irre). Für welche Taste auf der Tastatur diese Buttons stehen, erfährst du in der Hilfedatei (etwas umständlich, aber man kann die Buttonbelegung selber ändern).

  3. #3
    Die Zahlen hab ich inzwischen raus ... die Frage is jetzt nur wie ich jetzt im Maker die tasten so ändern wie ich die haben will? also was muss ich tun um z.B. Num1-9 belegen zu können? Ruby?

    Wenn ja wo und wie? (wie gesagt ... mit Ruby kenn ich mich noch gar nicht aus)

  4. #4
    Wenn man ein Projekt startet, kann man mit F1 ein Optionsfenster aufrufen, während das Spiel läuft. Damit lässt sich auch die Tastenbelegung verändern.
    Damit kann aber jeder Spieler für sich die Tasten verändern.

  5. #5
    @bluedragon05:
    Ich will aber ne eigene Spielsteuerung .... also quasi dem Spieler ne Spielsteuerung vor die nase setzen ... wenn dem das net passt kann der immer noch umstellen, aber erstma will ich ne völlig eigene, manuelle Steuerung via Pfeiltasten und Num 4, 5, 6 und 8 hinkriegen .....

    Ich hatte mir gedacht das so zu machen:
    Num4: laufen
    Num5: sprechen/Aktionstaste etc.
    Num6: Esc/ABbruch etc.
    Num8: Menü ...
    Pfeiltasten: Richtung

    im Notfall nehm ich halt das im maker vorgegebene mit "w" "a" "s" "d" ..., aber ich würd das gern mit den Num-Tasten machen ....

    Müsste nur wissen wie ...

  6. #6
    Wenn du mit den Standard-Tasten des Makers nicht zufrieden bist, musst du dir eben ein Tastenscript besorgen. Das gebräuchlichste ist ja von Cybersam. Allerdings finde ich die Version von Astro_Mech schöner - sie benötigt allerdings SDK.

    Code:
    #===============================================================================
    # ** Keyboard Script v2 - This script was first created by Cybersam and she 
    #                         deserves most of the credit, all I did was add a few 
    #                         functions. (Astro_Mech says)
    #-------------------------------------------------------------------------------
    # Author    Cybersam
    # Version   2.0
    # Date      11-04-06
    # Edit      Astro_mech
    #===============================================================================
    #-------------------------------------------------------------------------------
    # Begin SDK Enabled Check
    #-------------------------------------------------------------------------------
    SDK.log("Input", "Cybersam", 2, "11.04.06")
    
    module Input
      if SDK.state("Input") == true
      #--------------------------------------------------------------------------
      # * Variable Setup
      #-------------------------------------------------------------------------- 
        @keys = []
        @pressed = []
        Mouse_Left = 1
        Mouse_Right = 2
        Mouse_Middle = 4
        Back= 8
        Tab = 9
        Enter = 13
        Shift = 16
        Ctrl = 17
        Alt = 18
        Esc = 27
        Space = 32
        Numberkeys = {}
        Numberkeys[0] = 48        # => 0
        Numberkeys[1] = 49        # => 1
        Numberkeys[2] = 50        # => 2
        Numberkeys[3] = 51        # => 3
        Numberkeys[4] = 52        # => 4
        Numberkeys[5] = 53        # => 5
        Numberkeys[6] = 54        # => 6
        Numberkeys[7] = 55        # => 7
        Numberkeys[8] = 56        # => 8
        Numberkeys[9] = 57        # => 9
       # NumberUpKeys = {}
       # NumberUpKeys[0] = "!"
       # NumberUpKeys[1] = "@"
       # NumberUpKeys[2] = "#"
       # NumberUpKeys[3] = "$"
       # NumberUpKeys[4] = "%"
       # NumberUpKeys[5] = "^"
       # NumberUpKeys[6] = "&"
       # NumberUpKeys[7] = "*"
       # NumberUpKeys[8] = "("
       # NumberUpKeys[9] = ")"
        Numberpad = {}
        Numberpad[0] = 45
        Numberpad[1] = 35
        Numberpad[2] = 40
        Numberpad[3] = 34
        Numberpad[4] = 37
        Numberpad[5] = 12
        Numberpad[6] = 39
        Numberpad[7] = 36
        Numberpad[8] = 38
        Numberpad[9] = 33
        Letters = {}
        Letters["A"] = 65
        Letters["B"] = 66
        Letters["C"] = 67
        Letters["D"] = 68
        Letters["E"] = 69
        Letters["F"] = 70
        Letters["G"] = 71
        Letters["H"] = 72
        Letters["I"] = 73
        Letters["J"] = 74
        Letters["K"] = 75
        Letters["L"] = 76
        Letters["M"] = 77
        Letters["N"] = 78
        Letters["O"] = 79
        Letters["P"] = 80
        Letters["Q"] = 81
        Letters["R"] = 82
        Letters["S"] = 83
        Letters["T"] = 84
        Letters["U"] = 85
        Letters["V"] = 86
        Letters["W"] = 87
        Letters["X"] = 88
        Letters["Y"] = 89
        Letters["Z"] = 90
        Fkeys = {}
        Fkeys[1] = 112
        Fkeys[2] = 113
        Fkeys[3] = 114
        Fkeys[4] = 115
        Fkeys[5] = 116
        Fkeys[6] = 117
        Fkeys[7] = 118
        Fkeys[8] = 119
        Fkeys[9] = 120
        Fkeys[10] = 121
        Fkeys[11] = 122
        Fkeys[12] = 123
        Collon = 186        # => \ |
        Equal = 187         # => = +
        Comma = 188         # => , <
        Underscore = 189    # => - _
        Dot = 190           # => . >
        Backslash = 191     # => / ?
        Lb = 219
        Rb = 221
        Quote = 222         # => '"
    #-------------------------------------------------------------------------------
        USED_KEYS = [Mouse_Left, Mouse_Right, Mouse_Middle] 
    #-------------------------------------------------------------------------------
      module_function
      #--------------------------------------------------------------------------
      # * Check (key)
      #-------------------------------------------------------------------------- 
      def triggerd?(key)
        Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 == 1  # key 0
      end
      #-------------------------------------------------------------------------- 
      def check(key)
        Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 == 1  # key 0
      end
      #-----------------------------------------------------------------------
      # * Pressed ? (key)
      #-------------------------------------------------------------------------- 
      def pressed?(key)
        return true unless Win32API.new("user32","GetKeyState",['i'],'i').call(key).between?(0, 1)
        return false
      end
      #--------------------------------------------------------------------------
      # * Mouse Update
      #-------------------------------------------------------------------------- 
      def mouse_update
        @used_i = []
        for i in USED_KEYS
          x = check(i)
          if x == true
            @used_i.push(i)
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Short Write C
      #-------------------------------------------------------------------------- 
      def self.C
        self.trigger?(C)
      end
      #--------------------------------------------------------------------------
      # * Short Write B
      #-------------------------------------------------------------------------- 
      def self.B
        self.trigger?(B)
      end
      #--------------------------------------------------------------------------
      # * Short Write A
      #-------------------------------------------------------------------------- 
      def self.A
        self.trigger?(A)
      end
      #--------------------------------------------------------------------------
      # * Short Write Down
      #-------------------------------------------------------------------------- 
      def self.Down
        self.trigger?(DOWN)
      end
      #--------------------------------------------------------------------------
      # * Short Write Up
      #-------------------------------------------------------------------------- 
      def self.Up
        self.trigger?(UP)
      end
      #--------------------------------------------------------------------------
      # * Short Write Right
      #-------------------------------------------------------------------------- 
      def self.Right
        self.trigger?(RIGHT)
      end
      #--------------------------------------------------------------------------
      # * Short Write Left
      #-------------------------------------------------------------------------- 
      def self.Left
        self.trigger?(LEFT)
      end
      #--------------------------------------------------------------------------
      # * Anykey pressed?  ( A or B or C or Down or Up or Right or Left )
      #-------------------------------------------------------------------------- 
      def self.Anykey
        if A or B or C or Down or Up or Right or Left
          return true
        else
          return false
        end
      end
    end
    end
    
    #-------------------------------------------------------------------------------
    # End SDK Enabled Check
    #-------------------------------------------------------------------------------
    Zum Abfragen nutzt du dann wie gewohnt ein Conditional Branch, wählst dort allerdings nicht Button sondern Script aus und gibst ein:
    Code:
    Input.pressed?(Numberpad[0]) or Input.pressed?(Numberkeys[0])
    (statt 0 kannst du natürlich auch andere Tasten abfragen)

  7. #7
    @-KD-:
    Danke, das klingt vielversprechend ...

    Nur was muss ich mit diesem SDK-Script machen? Muss ich den separat in die Scriptliste einfügen, oder was muss ich damit machen? (ich kenne mich halt noch net mit Ruby und so aus)

    Also ich hab diese SDk-Scripte in die Scriptliste eingefügt, aber irgendwie klappt das nicht ... da kommt ne Fehlermeldung das SDK-Skripte fehlen oder so ...

    danach hab ich nur SDK Part I eingefügt und da hat der auch gemeckert ...

    Ich brauch da mal ne wirklich Idiotensichere Erklärung ...

    Geändert von K.L.R.G. (11.04.2007 um 11:13 Uhr)

  8. #8
    Das SDK musst du über Main und unter allen Standard-Scripten einfügen. Alle weiteren selbst hinzugefügten Scripte müssen unter das SDK. Jedoch laufen mit SDK nur noch SDK-Scripte, fast alle anderen Scripten dürften nicht mehr laufen.

    Und wenn ich es mir recht überlege, ist es ziemlicher Schwachsinn für ein Input-Script SDK zu verlangen oO

    Für diesen Code statt dem anderen ein, dann benötigst du kein SDK mehr:

    Code:
    #===============================================================================
    # ** Keyboard Script v2 - This script was first created by Cybersam and she 
    #                         deserves most of the credit, all I did was add a few 
    #                         functions. (Astro_Mech says)
    #-------------------------------------------------------------------------------
    # Author    Cybersam
    # Version   2.0
    # Date      11-04-06
    # Edit      Astro_mech
    #===============================================================================
    module Input
      #--------------------------------------------------------------------------
      # * Variable Setup
      #-------------------------------------------------------------------------- 
        @keys = []
        @pressed = []
        Mouse_Left = 1
        Mouse_Right = 2
        Mouse_Middle = 4
        Back= 8
        Tab = 9
        Enter = 13
        Shift = 16
        Ctrl = 17
        Alt = 18
        Esc = 27
        Space = 32
        Numberkeys = {}
        Numberkeys[0] = 48        # => 0
        Numberkeys[1] = 49        # => 1
        Numberkeys[2] = 50        # => 2
        Numberkeys[3] = 51        # => 3
        Numberkeys[4] = 52        # => 4
        Numberkeys[5] = 53        # => 5
        Numberkeys[6] = 54        # => 6
        Numberkeys[7] = 55        # => 7
        Numberkeys[8] = 56        # => 8
        Numberkeys[9] = 57        # => 9
       # NumberUpKeys = {}
       # NumberUpKeys[0] = "!"
       # NumberUpKeys[1] = "@"
       # NumberUpKeys[2] = "#"
       # NumberUpKeys[3] = "$"
       # NumberUpKeys[4] = "%"
       # NumberUpKeys[5] = "^"
       # NumberUpKeys[6] = "&"
       # NumberUpKeys[7] = "*"
       # NumberUpKeys[8] = "("
       # NumberUpKeys[9] = ")"
        Numberpad = {}
        Numberpad[0] = 45
        Numberpad[1] = 35
        Numberpad[2] = 40
        Numberpad[3] = 34
        Numberpad[4] = 37
        Numberpad[5] = 12
        Numberpad[6] = 39
        Numberpad[7] = 36
        Numberpad[8] = 38
        Numberpad[9] = 33
        Letters = {}
        Letters["A"] = 65
        Letters["B"] = 66
        Letters["C"] = 67
        Letters["D"] = 68
        Letters["E"] = 69
        Letters["F"] = 70
        Letters["G"] = 71
        Letters["H"] = 72
        Letters["I"] = 73
        Letters["J"] = 74
        Letters["K"] = 75
        Letters["L"] = 76
        Letters["M"] = 77
        Letters["N"] = 78
        Letters["O"] = 79
        Letters["P"] = 80
        Letters["Q"] = 81
        Letters["R"] = 82
        Letters["S"] = 83
        Letters["T"] = 84
        Letters["U"] = 85
        Letters["V"] = 86
        Letters["W"] = 87
        Letters["X"] = 88
        Letters["Y"] = 89
        Letters["Z"] = 90
        Fkeys = {}
        Fkeys[1] = 112
        Fkeys[2] = 113
        Fkeys[3] = 114
        Fkeys[4] = 115
        Fkeys[5] = 116
        Fkeys[6] = 117
        Fkeys[7] = 118
        Fkeys[8] = 119
        Fkeys[9] = 120
        Fkeys[10] = 121
        Fkeys[11] = 122
        Fkeys[12] = 123
        Collon = 186        # => \ |
        Equal = 187         # => = +
        Comma = 188         # => , <
        Underscore = 189    # => - _
        Dot = 190           # => . >
        Backslash = 191     # => / ?
        Lb = 219
        Rb = 221
        Quote = 222         # => '"
    #-------------------------------------------------------------------------------
        USED_KEYS = [Mouse_Left, Mouse_Right, Mouse_Middle] 
    #-------------------------------------------------------------------------------
      module_function
      #--------------------------------------------------------------------------
      # * Check (key)
      #-------------------------------------------------------------------------- 
      def triggerd?(key)
        Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 == 1  # key 0
      end
      #-------------------------------------------------------------------------- 
      def check(key)
        Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 == 1  # key 0
      end
      #-----------------------------------------------------------------------
      # * Pressed ? (key)
      #-------------------------------------------------------------------------- 
      def pressed?(key)
        return true unless Win32API.new("user32","GetKeyState",['i'],'i').call(key).between?(0, 1)
        return false
      end
      #--------------------------------------------------------------------------
      # * Mouse Update
      #-------------------------------------------------------------------------- 
      def mouse_update
        @used_i = []
        for i in USED_KEYS
          x = check(i)
          if x == true
            @used_i.push(i)
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Short Write C
      #-------------------------------------------------------------------------- 
      def self.C
        self.trigger?(C)
      end
      #--------------------------------------------------------------------------
      # * Short Write B
      #-------------------------------------------------------------------------- 
      def self.B
        self.trigger?(B)
      end
      #--------------------------------------------------------------------------
      # * Short Write A
      #-------------------------------------------------------------------------- 
      def self.A
        self.trigger?(A)
      end
      #--------------------------------------------------------------------------
      # * Short Write Down
      #-------------------------------------------------------------------------- 
      def self.Down
        self.trigger?(DOWN)
      end
      #--------------------------------------------------------------------------
      # * Short Write Up
      #-------------------------------------------------------------------------- 
      def self.Up
        self.trigger?(UP)
      end
      #--------------------------------------------------------------------------
      # * Short Write Right
      #-------------------------------------------------------------------------- 
      def self.Right
        self.trigger?(RIGHT)
      end
      #--------------------------------------------------------------------------
      # * Short Write Left
      #-------------------------------------------------------------------------- 
      def self.Left
        self.trigger?(LEFT)
      end
      #--------------------------------------------------------------------------
      # * Anykey pressed?  ( A or B or C or Down or Up or Right or Left )
      #-------------------------------------------------------------------------- 
      def self.Anykey
        if A or B or C or Down or Up or Right or Left
          return true
        else
          return false
        end
      end
    end

  9. #9
    Nochmals danke ...
    Jetzt gibt es nur ein Problem ... Wo in der Scriptliste muss ich dieses Script eintragen? Bzw. was muss ich eingeben um den aufzurufen ... Ich hab den jetzt auf die erste Postion unter "main" gesetzt, kann den aber nicht aufrufen, ohne das der maker abstürzt ....

  10. #10
    Zitat Zitat
    Das SDK musst du über Main und unter allen Standard-Scripten einfügen.
    Wenn du es unter Main einfügst stürzt das ganze Spiel ab. Ist meines Wissens nach bei jedem Script so. Da lag also dein Fehler

  11. #11
    Im Main-Script wird das Spiel praktisch gestartet. Alles was unter Main ist, wird erst beim Beenden des Spiels aufgerufen ^^

    Daher müssen Scripte stets über Main eingefügt werden.

  12. #12
    So, hab jetzt alles richtig gemacht ... über main ... unter den anderen Scripts. ... und trotzdem krieg ich diese Fehlermeldung ...


  13. #13
    In der letzten Zeile dürfte nur ein "end" stehen. Steht bei dir dort noch etwas anderes? Z.B. das [/code] aus dem Posting.

  14. #14
    Gut, Fehlerquelle 1 ist ausgemerzt ... ich hatte tatsächlich nen kleinen Fehler beim kopieren gemacht (nein es war nicht [/code], aber irgendwie hab ich da ausversehen was mit reinkopiert ... )

    Nun klappt es ... theoretisch ... aber sobald ich ne Button-Input-Abfrage mache bricht das Ding jetzt zusammen mit folgender Fehlermeldung:


  15. #15
    Wie sieht denn deine Buttonabfrage aus?

  16. #16
    Code:
    Input.pressed?(Numberpad[0]) or Input.pressed?(Numberkeys[0])
    Erst die Button Input-Abfrage ... hab dann den Code in ner Fork eingegeben .... eigentlich sollte dann n text erscheinen wenn ich 0 drücke, stattdessen kommt immer diese Fehlermeldung ...

  17. #17
    mach die ganze variablendeklaration in ne funktion (def initialize) und initialisier die klasse mit WieAuchImmerDieKlasseJetztHeißt.new ...

    edit: glaub nämlich nicht, dass in Ruby variablen initialisiert werden können, wenns nicht in ner funktion stehen^^

  18. #18
    @ani-kun:
    Ähm ... bitte nochmal in TotalN00b-Verständlich bitte ...

  19. #19
    aaaaaaaalso xD

    du packst alles ab "Variable Setup" bis "module_functions" in eine funktion:

    def initialize
    ...
    end

    dort wo "..." steht packst du das zeug rein (erste zeile sollte "@keys = []" sein, letzte sollte "USED_KEYS = [Mouse_Left, Mouse_Right, Mouse_Middle]" sein)

    dann musst du die ganze klasse noch initialisieren, einfach in der Klasse Main vor "$scene = Scene_Title.new" ne zeile mit zb. "$input = Input.new"

    allerdings musst du dann deine button abfrage mit "$input.pressed?(etc)" machen ...

    edit: kann natürlich auch total falsch liegen, habs nicht getestet, aber das diktiert mir zumindest mein programmiererverständnis^^

  20. #20
    Das ist aber ein module und keine Klasse. Ich weiß nicht inwieweit es da Unterschiede bzgl. der Initialisierung gibt. Wobei ich mich gerade frage, was dieses "module_function" eigentlich ist.

Berechtigungen

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