Sry, die späte Uhrzeit ^^
Es muss
Code:
filename = "Save#{i + 1}.rvdata"
heißen.
@Cornix: Hm, ja, es kann zu Fehlern kommen wenn man diesen globalen Switch über ein normales control switches verändert, ohne diese Methode aufzurufen, und danach das Spiel abspeichert. Man könnte in Game_Switches einen Code einfügen, der den Cache leert, sobald ein Switch gesetzt wird.
Das würde dann so aussehen:
Code:
class Game_Switches
alias set_global_switch []=
def []=(switch_id, value)
GlobalSwitches.remove_from_cache(switch_id, value)
set_global_switch(switch_id, value)
end
end
module GlobalSwitches
@switch_state = {} # caches switch values
def self.remove_from_cache index, value
@switch_state.delete(index) if @switch_state[index] != value
end
def self.set(index, value)
return if @switch_state[index] == value
$game_switches.set_global_switch(index, value)
@switch_state[index] = value
(0..3).each do |i|
filename = "Save#{i + 1}.rvdata"
next unless FileTest.exist?(filename)
data = []
File.open(filename, "rb") do |io|
until io.eof?
data << Marshal.load(io)
end
end
sw = data.find {|s| s.kind_of?(Game_Switches)}
if sw[index] != value then
sw[index] = value
File.open(filename, "wb") do |io|
data.each do |d|
Marshal.dump(d, io)
end
end
end
end
end
end