Ich habe es gerade für den RPG-Maker XP getestet, es schein für mich zu funktionieren.
Allerdings habe ich an einer Stelle einen kleinen Fehler gefunden und noch hinzugefügt, dass das Script auch den Switch im derzeit geladenen Projekt ändern falls eines geladen ist.

Hier also nocheinmal eine klein wenig überarbeitete Version.
Code:
def set_switch_globally(switch_id, new_state)
  if $game_switches != nil
    $game_switches[switch_id] = new_state
  end
  max_save_file_number = 4
  for i in 1..max_save_file_number
    file_name = "Save" + i.to_s + ".rxdata"
    if not FileTest.exist?(file_name)
      next
    end
    file = File.open(file_name, "rb")
    characters = Marshal.load(file)
    frame_count = Marshal.load(file)
    system = Marshal.load(file)
    switches = Marshal.load(file)
    variables = Marshal.load(file)
    self_switches = Marshal.load(file)
    screen = Marshal.load(file)
    actors = Marshal.load(file)
    party = Marshal.load(file)
    troop = Marshal.load(file)
    map = Marshal.load(file)
    player = Marshal.load(file)
    file.close
    
    switches[switch_id] = new_state
    
    file = File.open(file_name, "wb")
    Marshal.dump(characters, file)
    Marshal.dump(frame_count, file)
    Marshal.dump(system, file)
    Marshal.dump(switches, file)
    Marshal.dump(variables, file)
    Marshal.dump(self_switches, file)
    Marshal.dump(screen, file)
    Marshal.dump(actors, file)
    Marshal.dump(party, file)
    Marshal.dump(troop, file)
    Marshal.dump(map, file)
    Marshal.dump(player, file)
    file.close
  end
  return true
end
Die vorherige war nicht dafür gedacht gewesen innerhalb eines Spielstandes aufgerufen zu werden sondern nur aus einer Art Menü heraus.