Ergebnis 1 bis 10 von 10

Thema: 3 kleinere Probleme

  1. #1

    3 kleinere Probleme

    Hallo

    Ich habe früher schon ein paar Projekte mit dem RM XP angefangen, und will jetz auch wieder ein wenig basteln. Mit der Zeit hab ich aber ne Menge vergessen, und so tun sich folgende Fragen auf:

    Ich habe das Titelmenu überspringen lassen, um mein eigenes Titelmenu zu erzeugen, dass da eine Art animierten Hintergrund bereitstellt.

    Als erstes poste ich mal meinen Code und stelle danach die Fragen dazu.



    Das ganze läuft als Autostartprozess.

    Im Fall "Fortsetzen" will ich, wie ihr vlt. erahnt, das Load Menu öffnen, aber dazu finde ich im Eventkatalog keinen Befehl. Ich finde zwar Open Save Screen, aber das bringt ja herzlich wenig.

    Im Fall "Ende" will ich das Spiel beenden lassen, und zum Betriebssystem zurückkehren - auch hier habe ich keine Ahnung wie ich das anstellen soll.

    Ich will in jedem Fall auf das Standart Menü verzichten.

    Edit:
    ... und das dritte Problem, das hat sich eben schon erledigt.

    Danke für Eure Hilfe,

    FD

    Geändert von Fierce Deity (25.05.2008 um 17:06 Uhr)

  2. #2
    Ich würde dir empfehlen, das Event auf Parallel Process zu stellen
    Menü kannst du ja per Eventbefehl an- und ausstellen.

    Zum Lademenü aufrufen:

    $scene = Scene_Load.new

    im Scriptaufruf-Befehl angeben (3.Seite Eventbefehle, rechte Spalte, letzer Befehl)

    Zum Beenden: Das gleiche, bloß

    $game_system.se_play($data_system.decision_se)
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    $scene = nil

    einfügen.^^

    ~Sorata

  3. #3
    Danke für deine Hilfe,
    das Problem ist gelöst ^^

    Beim Beenden erzählt er zwar etwas von einer undefinierten Methode "on se"... aber das Programm ist beendet.

    FD

  4. #4
    Einfach nur
    Code:
    $scene = nil
    zum beenden reicht auch.

  5. #5
    Es hat sich noch ein Problem gefunden, für das ich aber keinen neuen Thread aufmachn will.
    Da ich auf das Standart-Menu verzichten will (das, welches durch Escape gerufen wird), habe ich mir ein eigenes kleines gebastelt. Wenn ich jetzt den Item Bildschirm aufrufe, und dann mit Escape abbreche, komme ich aber wieder zurück in das Standart-Menu.

    Wo muss ich was wie verändern, um nach Abbruch des Item Bildschirm einfach wieder zur Map zurückzukehren?

  6. #6
    Müsste im Script Editor Scene_Item sein. Dort in der Zeile ~71 einfach in Scene_Map.new ändern. Ob dadurch irgendwelche Probleme entstehen kann ich jetzt nicht sagen, habe mir das nicht genau angeguckt. Einfach mal ausprobieren.

    Übrigens, das gleiche gilt auch beim Ladebildschirm. Wenn man den abbricht, landet man im Titelscreen. Also auch dort angeben wo man landen soll, wenn man abbricht.

  7. #7
    kann es sein, das du ein Menu als Karte hast???
    Bei mir war es so, aber die Events sind dann immer an ihrer alten Stelle...
    Und du hast bestimmt auch eine Karte als Titel.
    Ich hab es zwar auch so, aber lösch mal im Datei-Ordner alle Datein namens
    "saveX". Wenn du das Spiel startest und dan das Lademenu öffnen willst
    geht es ja auch...
    Doch dort sind keine Ladbaren Datein.
    Wie umgingst du dieses Problem???

  8. #8
    Zitat Zitat von Ascare Beitrag anzeigen
    Müsste im Script Editor Scene_Item sein. Dort in der Zeile ~71 einfach in Scene_Map.new ändern. Ob dadurch irgendwelche Probleme entstehen kann ich jetzt nicht sagen, habe mir das nicht genau angeguckt. Einfach mal ausprobieren.
    Gibt keine Probs damit, völlig richtig!

    Aber schön mit Kommentaren versehen (am besten mit nem stichwort, damit man es mit der suche sofort finden kann), damit man weiß was geändert wurde ... oder am besten gleich ne kopie von der ori Scene erstellen.

    Wegen dem Beenden nochmal ... wenns ganz einfach sein soll:

    Ein einfaches "exit" geht auch .

    greetz

  9. #9
    Da solche Fragen öfters kommen, hab ich auch noch ein Script von einer früheren Anfrage parat:
    Code:
    #===============================================================
    # ** Game_Save (Modul)
    #---------------------------------------------------------------
    # Speichert Spieldaten ab und lädt diese wieder.
    #===============================================================
    module Game_Save
      FILENAME = "./save" #Dateiname für Spielstand
      FILE_EXTENSION = ".rxdata"
      #Modul kann in Klassen als mixin eingefügt werden um verschiedene
      #Save-Klassen (Autosave, Schnellspeichern, ...) zu definieren
      module_function()
      #---------------------------------------------------------------
      # * save :: (filename :: String || Numeric)
      #   Wird aufgerufen um Spielstand in Datei filename zu speichern
      #---------------------------------------------------------------
      def save(filename=FILENAME+FILE_EXTENSION)
        filename = make_filename(filename) if filename.kind_of?(Numeric)
        before_save()
        File.open(filename, "wb")  {|output|
          saved_objects.each {|obj|
            Marshal.dump(obj, output)
          }
        }
        after_save()
      end
      #---------------------------------------------------------------
      # * load :: (filename :: String || Numeric)
      #   Wird aufgerufen um Spielstand in Datei filename zu laden
      #---------------------------------------------------------------
      def load(filename=FILENAME)
        filename = make_filename(filename) if filename.kind_of?(Numeric)
        before_load()
        obj=[]
        File.open(filename, "rb")  {|input|
          until input.eof? do
            obj << Marshal.load(input)
          end
        }
        loaded_objects(*obj)
        after_load()
      end
      #---------------------------------------------------------------
      # * saved_objects :: () -> Array
      #   Enthält eine Liste aller abzuspeichernden Objekte
      #   Alle Elemente müssen per Marshal#dump speicherbar sein
      #   um Liste zu erweitern aliase die Methode und erweitere den Array
      #---------------------------------------------------------------
      def saved_objects()
        [
          $game_party.actors.collect {|a| [a.character_name, a.character_hue]},
          $game_system,
          $game_switches,
          $game_variables,
          $game_self_switches,
          $game_screen,
          $game_actors,
          $game_party,
          $game_troop,
          $game_map,
          $game_player
        ]
      end
      #---------------------------------------------------------------
      # * loaded_objects :: (args :: Array)
      #   Enthält eine Zuweisung der geladenen Objekte zu Variablen
      #   Kann per aliasing erweitert werden
      #---------------------------------------------------------------
      def loaded_objects(*args)
        chars, $game_system, $game_switches, $game_variables,
        $game_self_switches, $game_screen, $game_actors, $game_party, $game_troop,
        $game_map, $game_player = *args
      end
      #---------------------------------------------------------------
      # * before_save, before_load
      #   Wird aufgerufen, bevor Spielstand gespeichert/geladen wird
      #---------------------------------------------------------------
      def before_save
        $game_system.magic_number = $data_system.magic_number
        $game_system.save_count += 1
      end
      def before_load
        #do nothing
      end
      #---------------------------------------------------------------
      # * after_save, after_load
      #   Wird aufgerufen, nachdem Spielstand gespeichert/geladen wird
      #---------------------------------------------------------------
      def after_save
        #do nothing
      end
      def after_load
        #Wenn Map geändert wurde, lade Map neu
        if $game_system.magic_number != $data_system.magic_number then
          $game_map.setup($game_map.map_id)
          $game_player.center($game_player.x, $game_player.y)
        end
        #Aktualisiere Spieldaten und starte die Map-Szene
        $game_party.refresh()
        $game_map.update
        $scene = Scene_Map.new()  
      end
      #---------------------------------------------------------------
      # * make_filename :: (n :: Numeric) -> String
      #   erzeugt einen standardmäßigen Dateinamen mit einer Nummer
      #---------------------------------------------------------------
      def make_filename(n)
        FILENAME + filename.to_s + FILE_EXTENSION
      end
    end
    #===============================================================
    # ** Game_Start (Modul)
    #---------------------------------------------------------------
    # Initialisiert Spieldaten
    #===============================================================
    module Game_Start
      # Alle Methoden dürfen auch als Singletonmethoden ausgeführt werden
      module_function()
     #--------------------------------------------------------------------------
     # * Öffne alle Dateien aus der Database und speichere ihren Inhalt
     #--------------------------------------------------------------------------
     def load_database
       $data_actors        = load_data("Data/Actors.rxdata")
       $data_classes       = load_data("Data/Classes.rxdata")
       $data_skills        = load_data("Data/Skills.rxdata")
       $data_items         = load_data("Data/Items.rxdata")
       $data_weapons       = load_data("Data/Weapons.rxdata")
       $data_armors        = load_data("Data/Armors.rxdata")
       $data_enemies       = load_data("Data/Enemies.rxdata")
       $data_troops        = load_data("Data/Troops.rxdata")
       $data_states        = load_data("Data/States.rxdata")
       $data_animations    = load_data("Data/Animations.rxdata")
       $data_tilesets      = load_data("Data/Tilesets.rxdata")
       $data_common_events = load_data("Data/CommonEvents.rxdata")
       $data_system        = load_data("Data/System.rxdata")
     end
     #--------------------------------------------------------------------------
     # * Initialisiere die Elemente des Spiels
     #--------------------------------------------------------------------------
     def initialize_global_variables
       Graphics.frame_count = 0 #Resete Spielzeit
       # Erstelle die globalen Variablen
       $game_temp          = Game_Temp.new
       $game_system        = Game_System.new
       $game_switches      = Game_Switches.new
       $game_variables     = Game_Variables.new
       $game_self_switches = Game_SelfSwitches.new
       $game_screen        = Game_Screen.new
       $game_actors        = Game_Actors.new
       $game_party         = Game_Party.new
       $game_troop         = Game_Troop.new
       $game_map           = Game_Map.new
       $game_player        = Game_Player.new
     end
     #--------------------------------------------------------------------------
     # * Initialisiere die Heldentruppe und starte das Spiel
     #--------------------------------------------------------------------------
     def start_game
       # Initialisiere die Heldentruppe
       $game_party.setup_starting_members
       # Starte die Anfangsmap
       $game_map.setup($data_system.start_map_id)
       $game_player.moveto($data_system.start_x, $data_system.start_y)
       # Starte Spiel
       $game_player.refresh
       $game_map.autoplay
       $game_map.update
       $scene = Scene_Map.new
     end
     #--------------------------------------------------------------------------
     # * Wenn per Testkampf gestartet wird, starte Kampf
     #--------------------------------------------------------------------------
     def start_battle
       #Initialisiere Heldentruppe des Testkampfes
       $game_party.setup_battle_test_members
       # Einstellungen des Testkampfes
       $game_temp.battle_troop_id = $data_system.test_troop_id
       $game_temp.battle_can_escape = true
       $game_map.battleback_name = $data_system.battleback_name
       # Musik abspielen
       $game_system.se_play($data_system.battle_start_se)
       $game_system.bgm_play($game_system.battle_bgm)
       # Starte Kampf
       $scene = Scene_Battle.new
     end
    
     def start
       self.load_database
       self.initialize_global_variables
       if $BTEST then self.start_battle else self.start_game end
     end
    end
    #===============================================================
    # ** Scene_Title (Klasse)
    #---------------------------------------------------------------
    # Überspringt Titel und lädt sofort Spielstand
    #===============================================================
    class << Scene_Title
      include Game_Start
      def new()
        start #Gib aktuelle Szene (Map) zurück
      end
    end
    Einfach in Scripteditor einfügen. Startmenü wird automatisch übersprungen. Mit dem "Script..." Befehl stehen dir zusätzlich diese Möglichkeiten zur Verfügung:
    Code:
    Game_Save.save(1) #=> speichert Spielstand auf Slot 1
    Game_Save.load(1) #=> Lädt Spielstand auf diesen Slot wieder
    Womit du nicht mehr auf das Speicher/Lade-Menü angewiesen bist, falls du das ebenfalls neu machen möchtest.

    Geändert von -KD- (18.06.2008 um 20:31 Uhr)

  10. #10
    das meinte ich nicht(oder doch??? )
    Aber egal
    Ich kann das verkraften:
    ___
    Warum versteht mich niemand???
    Ich habe es nicht so gemeint.
    Man kann bei mir den alten Laadebildschirm ohne eine Save_Datei zu haben!!!
    Lesen, du ...
    (italenischer Akzent)

Berechtigungen

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