Issue With Saving (RESOLVED)

Started by Saphiredragon89, July 25, 2009, 05:05:17 pm

Previous topic - Next topic

Saphiredragon89

July 25, 2009, 05:05:17 pm Last Edit: July 25, 2009, 05:43:11 pm by Saphiredragon89
Ok so for...whatever reason I was test playing my game (in XP) and I go to save and I get the following error message "Script 'Window_SaveFile' line 30: EOFError occurred. End of file reached."

I have gone through and removed every addon script and I still get the same error, I'm almost positive that I haven't touched anything to do with the save system at all. Can anyone shed light on this?

winkio

You could try replacing your script with the default one, in case it might have gotten changed:

#==============================================================================
# ** Window_SaveFile
#------------------------------------------------------------------------------
#  This window displays save files on the save and load screens.
#==============================================================================

class Window_SaveFile < Window_Base
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader   :filename                 # file name
  attr_reader   :selected                 # selected
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     file_index : save file index (0-3)
  #     filename   : file name
  #--------------------------------------------------------------------------
  def initialize(file_index, filename)
    super(0, 64 + file_index % 4 * 104, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    @file_index = file_index
    @filename = "Save#{@file_index + 1}.rxdata"
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      @characters = Marshal.load(file)
      @frame_count = Marshal.load(file)
      @game_system = Marshal.load(file)
      @game_switches = Marshal.load(file)
      @game_variables = Marshal.load(file)
      @total_sec = @frame_count / Graphics.frame_rate
      file.close
    end
    refresh
    @selected = false
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    # Draw file number
    self.contents.font.color = normal_color
    name = "File#{@file_index + 1}"
    self.contents.draw_text(4, 0, 600, 32, name)
    @name_width = contents.text_size(name).width
    # If save file exists
    if @file_exist
      # Draw character
      for i in 0...@characters.size
        bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
        cw = bitmap.rect.width / 4
        ch = bitmap.rect.height / 4
        src_rect = Rect.new(0, 0, cw, ch)
        x = 300 - @characters.size * 32 + i * 64 - cw / 2
        self.contents.blt(x, 68 - ch, bitmap, src_rect)
      end
      # Draw play time
      hour = @total_sec / 60 / 60
      min = @total_sec / 60 % 60
      sec = @total_sec % 60
      time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
      self.contents.font.color = normal_color
      self.contents.draw_text(4, 8, 600, 32, time_string, 2)
      # Draw timestamp
      self.contents.font.color = normal_color
      time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
      self.contents.draw_text(4, 40, 600, 32, time_string, 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Set Selected
  #     selected : new selected (true = selected, false = unselected)
  #--------------------------------------------------------------------------
  def selected=(selected)
    @selected = selected
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @selected
      self.cursor_rect.set(0, 0, @name_width + 8, 32)
    else
      self.cursor_rect.empty
    end
  end
end


An EOF error usually means that your file is incomplete.

Saphiredragon89

Nope, same exact error. *grumbles*

winkio

Sorry for being stupid, it's with the savegames, not the script.  If you have any savegames (they will be named Save1.rxdat, Save2.rxdata, etc.) in your game folder, delete those.  They may have been corrupted by loading with a different set of scripts.

Saphiredragon89

Yes that fixed it, I'm not sure why I didn't think to check that, thank you.

fugibo

When they say "Will corrupt old save games," THIS is what they mean.

Kinda curious that saving is getting an EOFError, though 0_o

winkio

Well, if it's looking for more variables that are on more lines, it would be going next line over and over.  If there aren't enough variables, the file isn't long enough, so there is no next line.  end of file.