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?
12.04.2012, 23:04
Kelven
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:
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.
14.04.2012, 08:25
Kelven
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
15.04.2012, 05:45
MagicMagor
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.
15.04.2012, 15:07
-KD-
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
15.04.2012, 17:07
Ascare
Ok, aber wo muss ich das Ganze denn einfügen damit das funktioniert?