Ergebnis 1 bis 8 von 8

Thema: Speicher Script zeigt nicht letzten Spielstand

  1. #1

    Speicher Script zeigt nicht letzten Spielstand

    Also ich benutze folgendes Speicherscript, welches mehr Speicherstände erlaubt (hier 99):


    Normalerweise ist das ja so das man auf einen Stand speichert, und wenn man auf dem Titelbildschirm wieder
    das Spiel laden will, springt der Cursor automatisch zum zuletzt gespeicherten Spiel. Mit diesem Script funzt das aber nicht.
    Es zeigt immer den ersten Speicherslot an... :-/
    Hab ein bisschen rumprobiert, aber kam nicht voran. Jemand Ideen?

  2. #2
    Im Original-Script sieht es ja so aus:
    Code:
        # Select last file to be operated
        @file_index = $game_temp.last_file_index
        @savefile_windows[@file_index].selected = true
    Das wurde beim neuen Script gegen das hier ausgetauscht:
    Code:
      @file_index = 0
      @savefile_windows[@file_index].selected = true
    Stellt sich die Frage warum. Klappt das mit der Originalversion nicht?

  3. #3
    Warum begrenzt man das bei dem Script auf 99 und nicht einfach auf unendlich?
    Es sollte garkein Problem sein, ehrlich.

    Außerdem sollte was Kelven geschrieben hat ebenfalls funktionieren.

  4. #4
    Zitat Zitat von Kelven Beitrag anzeigen
    Im Original-Script sieht es ja so aus:
    Code:
        # Select last file to be operated
        @file_index = $game_temp.last_file_index
        @savefile_windows[@file_index].selected = true
    Das wurde beim neuen Script gegen das hier ausgetauscht:
    Code:
      @file_index = 0
      @savefile_windows[@file_index].selected = true
    Stellt sich die Frage warum. Klappt das mit der Originalversion nicht?
    Das hatte ich auch schon versucht, aber das funktioniert nicht wirklich. Denn dieses last file index bezieht sich auf eine Variable die wie im Standard von 0-3 vergeben wird, also nur 4 Slots.

  5. #5
    Hm, das ist komisch. Oben im Script steht ja sogar noch:

    Code:
      if Input.trigger?(Input::C)
        on_decision(make_filename(@file_index))
        $game_temp.last_file_index = @file_index
        return
      end

  6. #6
    Ich weiß zwar nicht woran das Problem liegt (vermutlich an $game_temp), aber im neueren Maker (Ace) wird der Index des letzten Saves so berechnet:
    Code:
      def self.latest_savefile_index
        savefile_max.times.max_by {|i| savefile_time_stamp(i) }
      end
    
    def self.savefile_time_stamp(index)
        File.mtime(make_filename(index)) rescue Time.at(0)
      end
    Bin mir sicher, diese Vorgehensweise würde auch im XP funktionieren.

  7. #7
    Nö, weil Ruby 1.8 noch keine Enumeratoren-Unterstützung hat. Daher muss es so heißen:
    Code:
    def self.latest_savefile_index
        (1..99).sort_by {|i| savefile_time_stamp(i) }.max
      end
    
      def self.savefile_time_stamp(index)
        File.mtime(make_filename(index)) rescue Time.at(0)
      end

  8. #8
    Ok, aber wo muss ich das Ganze denn einfügen damit das funktioniert?

Berechtigungen

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