Ergebnis 1 bis 5 von 5

Thema: WASD-Steuerung + klassenfremde Methoden nutzen + Transfer Hero per Ruby

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    WASD-Steuerung + klassenfremde Methoden nutzen + Transfer Hero per Ruby

    Hallo!

    1.)
    Ich habe vor kurzem versucht, eine Steuerung per WASD (zusätzlich zu den Pfeiltasten) in mein Projekt einzubauen.
    Momentan habe ich aber auf die äußerst unelegante und teilweise nicht recht funktionieren wollende Methode zurückgegriffen, mit diesem

    und 2 kleinen Codeschnipseln in Game_Player und Window_Selectable so eine Steuerung einzubauen, allerdings funktioniert das teilweise nicht (z.B. im KS, wo 2 Commandwindows gleichzeitig angezeigt werden, aber immer nur eines aktiv ist, funktioniert die WASD-Steuerung nur bei einem der beiden)
    Deshalb wollte ich fragen, ob es eine einfachere Möglichkeit gibt, so eine Steuerung zu implementieren.

    2.)
    Kann man in Ruby irgendwie aus einer fremden Klasse auf Methoden einer anderen Klasse zugreifen?


    3.)
    Wie kann ich den Helden per Ruby auf eine andere Map teleportieren lassen?
    Habe mir gedacht einfach folgenden Code benutzen, aber das funktioniert leider nicht...
    Code:
        $game_temp.player_new_map_id = 1
        $game_temp.player_new_x = 1
        $game_temp.player_new_y = 1
    MfG und Danke im Voraus!

  2. #2
    2) ja mit $klasse.methode also zb $game_system.bgm_stop

    3) zb so:
    Code:
    Graphics.freeze
    $game_temp.player_new_map_id = 1
    $game_temp.player_new_x = 9
    $game_temp.player_new_y = 10
    $game_temp.player_new_direction = 0
    $game_temp.transition_processing = true
    $game_temp.transition_name = ""
    $game_temp.player_transferring = true

  3. #3
    Erstmal vielen Dank!
    Allerdings funktioniert nach dem Teleportieren durch dieses Ruby-Script auf der nächsten Map folgender Code
    Code:
        
    for i in 0..($game_party.partysize - 1)
        x = $game_party.actors[i].character_name
        $game_map.events[i+10].\
        instance_variable_set(:@character_name, x)
     end
    plötzlich nicht mehr (hab es ausprobiert, es funktioniert nur dann, wenn ich noch zusätzlich ein "Execute Transition" anhänge, obwohl das eigentlich schon in deinem Code implementiert sein sollte) ...

  4. #4
    Code:
    $game_temp.player_transferring = true
    $game_temp.player_new_map_id = 1
    $game_temp.player_new_x = 9
    $game_temp.player_new_y = 10
    $game_temp.player_new_direction = 0
    Graphics.freeze
    $game_temp.transition_processing = true
    $game_temp.transition_name = ""
    Habs mal umgestellt, dann versuch es mal so.

  5. #5
    Code:
    # transition code
    $game_temp.player_new_map_id = 1
    $game_temp.player_new_x = 9
    $game_temp.player_new_y = 10
    $game_temp.player_new_direction = 0
    $scene.transfer_player
    
    # jetzt dein anderer Code
    $game_party.actors.each_with_index do |actor, index|
      $game_map.events[index + 10].character_name = actor.character_name
    end
    Wobei du noch ein
    Code:
    class Game_Character
      attr_writer :character_name
    end
    setzen musst um den Charakternamen des Events zu ändern. instance_variable_set ist eher 'ne Notlösung.

    Zu 1.) Du musst nur das Standard-Input Modul um die neuen Tasten erweitern. Allerdings würde ich dir raten ein anderes Keyboard-Script zu verwenden. Das obige ist nicht nur schlecht gescriptet, sondern auch noch teilweise französisch.

Berechtigungen

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