MOG Resume V1.1

24 de julho de 2015

MOG Resume é um script desenvolvido pelo Moghunter para ser usado no RPG Maker XP, que implementa um sistema que permite salvar e carregar o jogo apenas um vez por partida. Ou seja, o script salva o progresso e automaticamente sai do jogo. Assim que você iniciar outra partida, ele automaticamente carregará o jogo salvo, e por fim, apagará o arquivo carregado.

É um esquema semelhante aos jogos táticos como Ogre Battle e Final Fantasy Tactics Advanced.

Utilização

Aperte a tecla ALT para chamar o menu de Quick Save (Configurável). É também possível desativar o Quick Save pela Switch ID 10 (Configurável).

Para instalar o MOG Resume V1.1 no seu projeto, basta inserir o código abaixo acima do “Main”:

#_______________________________________________________________________________
# MOG Resume V1.1            
#_______________________________________________________________________________
# By Moghunter   
# http://www.atelier-rgss.com
#_______________________________________________________________________________
# Permite salvar e carregar o jogo apenas um vez por partida.
# Ou seja, o script salva o progresso e automaticamente sai do
# jogo e assim que você reiniciar o jogo ele automaticamente
# carregará o jogo e apagará o save carregado.
# Sistema semelhante ao jogos Taticos como Ogre Battle e
# Final Fantasy Tactics Advanced.
#_______________________________________________________________________________
module MOG
#Botão que ativa a janela de Quick Save.  
QUICK_BUTTON = Input::ALT
#ID da switch que desativa o Quick Save.
QUIK_DISABLE = 10
end

#===============================================================================
# Scene_Title
#===============================================================================
class Scene_Title
  #--------------------------------------------------------------------------
  # main
  #--------------------------------------------------------------------------  
  alias mog41_main main
  def main
    if FileTest.exist?("ResumeSave.rxdata")
      $scene = Auto_Load.new        
    end
    mog41_main      
  end
end  

#===============================================================================
# Scene_Quick
#===============================================================================
class Scene_Quick
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------  
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # main
  #--------------------------------------------------------------------------  
  def main
    s1 = "Resume"
    s2 = "Cancel"
    @command_window = Window_Command.new(160, [s1, s2])
    @command_window.index = @menu_index
    @command_window.x = 640
    @command_window.y = 180
    @command_window.contents_opacity = 0
    @command_window.opacity = 0
    @spriteset = Spriteset_Map.new
    if $game_switches[MOG::QUIK_DISABLE] == true
      @command_window.disable_item(0)
    end    
    Graphics.transition    
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    for i in 0..15
      @command_window.x -= 30  
      @command_window.contents_opacity -= 15
      @command_window.opacity -= 15
      Graphics.update  
    end  
    Graphics.freeze
    @command_window.dispose
    @spriteset.dispose
  end
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------  
 def update
  if @command_window.x > 240
    @command_window.x -= 25
    @command_window.contents_opacity += 15
    @command_window.opacity += 15
  elsif @command_window.x <= 240  
    @command_window.x = 240
    @command_window.contents_opacity = 255
    @command_window.opacity = 255
  end
  @command_window.update
  if Input.trigger?(Input::B)
    $game_system.se_play($data_system.cancel_se)
    $scene = Scene_Map.new
    return
  end
  if Input.trigger?(Input::C)
    case @command_window.index
    when 0  
      if $game_switches[MOG::QUIK_DISABLE] == true
        $game_system.se_play($data_system.cancel_se)
      else
        $game_system.se_play($data_system.decision_se)
        $scene = Auto_Save.new
      end
    when 1  
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Map.new
    end
  end   
  end
end

#===============================================================================
# Scene_Map
#===============================================================================
class Scene_Map
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------    
  alias mog41_update update
  def update
    if Input.trigger?(MOG::QUICK_BUTTON)
      $game_system.se_play($data_system.decision_se)
      $scene = Scene_Quick.new
    end
  mog41_update
  end
end  

#===============================================================================
# Auto_Save
#===============================================================================
class Auto_Save
  #--------------------------------------------------------------------------
  # main
  #--------------------------------------------------------------------------    
  def main
    asv(make_filename)
    return
  end
  #--------------------------------------------------------------------------
  # make_filename
  #--------------------------------------------------------------------------  
  def make_filename
    return "ResumeSave.rxdata" 
  end
  #--------------------------------------------------------------------------
  # avs
  #--------------------------------------------------------------------------    
  def asv(filename)
    $game_system.se_play($data_system.save_se)
    file = File.open(filename, "wb")
    write_save_data(file)
    file.close
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    $scene = nil
  end
  #--------------------------------------------------------------------------
  # write_save_data
  #--------------------------------------------------------------------------  
  def write_save_data(file)
    characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      characters.push([actor.character_name, actor.character_hue])
    end
    Marshal.dump(characters, file)
    Marshal.dump(Graphics.frame_count, file)
    $game_system.save_count += 1
    $game_system.magic_number = $data_system.magic_number
    Marshal.dump($game_system, file)
    Marshal.dump($game_switches, file)
    Marshal.dump($game_variables, file)
    Marshal.dump($game_self_switches, file)
    Marshal.dump($game_screen, file)
    Marshal.dump($game_actors, file)
    Marshal.dump($game_party, file)
    Marshal.dump($game_troop, file)
    Marshal.dump($game_map, file)
    Marshal.dump($game_player, file)
  end
end

#===============================================================================
# Auto_Load  
#===============================================================================
class Auto_Load  
  #--------------------------------------------------------------------------
  # main
  #--------------------------------------------------------------------------    
  def main
    $game_temp = Game_Temp.new  
    Graphics.transition
    ald(make_filename)
    return
  end
  #--------------------------------------------------------------------------
  # make_filename
  #--------------------------------------------------------------------------  
  def make_filename
    return "ResumeSave.rxdata" 
  end
  #--------------------------------------------------------------------------
  # ald
  #--------------------------------------------------------------------------  
  def ald(filename)
    if FileTest.exist?(filename)
      $game_system.se_play($data_system.load_se)
      file = File.open(filename, "rb")
      read_save_data(file) 
      file.close
      File.delete(filename) 
      $game_system.bgm_play($game_system.playing_bgm)
      $game_system.bgs_play($game_system.playing_bgs)
      $game_map.update
      $scene = Scene_Map.new
    else
      Audio.bgm_fade(800)
      Audio.bgs_fade(800)
      Audio.me_fade(800)
      $scene = nil
    end
  end
  #--------------------------------------------------------------------------
  # read_save_data
  #--------------------------------------------------------------------------  
  def read_save_data(file)
    characters = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    if $mogscript["menu_sakura"] == true
      $game_system.load_count += 1
    end
    if $game_system.magic_number != $data_system.magic_number
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    $game_party.refresh
  end
end

$mog_rgss_Resume = true

Informações adicionais

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!