RPG Maker Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Jhonn
Jhonn
Novo Membro
Novo Membro
Masculino Mensagens : 114
Reputação : 48

[RMVX] TDS Continue Empty [RMVX] TDS Continue

Qua Jul 14, 2010 5:40 pm
TDS Continue v1.0
por SephirothTDS

Introdução
Uma pequena modificação do sistema de Game Over, que permite que o jogador recomece o jogo do último ponto de save onde o jogo foi salvo.

Como usar
Abra o Editor de scripts, crie um novo script na seção de scripts Adicionais e cole o código abaixo.

Script
Código:
#==============================================================================
# TDS Continue
# Versão: 1.0
#------------------------------------------------------------------------------
# Permite que o jogador continue o jogo depois do Gameover no último ponto
# de save onde o jogo foi salvo.
#==============================================================================

#==============================================================================
# Game_Temp
#------------------------------------------------------------------------------
# Esta classe controla dados que não são salvos pelo jogo, os dados temporários
# Pode ser acessada utilizando $game_temp.
#==============================================================================

class Game_Temp
  #--------------------------------------------------------------------------
  # Variáveis públicas
  #--------------------------------------------------------------------------
  attr_accessor :playing_filename                  # Arquivo de jogo
  #--------------------------------------------------------------------------
  # Inicialização de objeto
  #--------------------------------------------------------------------------
  alias tds_continue_gameover_game_temp_initialize initialize
  def initialize
    @playing_filename = nil
    tds_continue_gameover_game_temp_initialize
  end
 end

#==============================================================================
# Scene_Gameover
#------------------------------------------------------------------------------
# Classe de operações na tela de Game Over.
#==============================================================================

class Scene_Gameover < Scene_Base
  #--------------------------------------------------------------------------
  # Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    super 
    # Caso a variável de jogo não esteja nula (nil)
    if $game_temp.playing_filename != nil
    # Crie o arquivo de continuação   
    @file = "Save#{$game_temp.playing_filename + 1}.rvdata"   
    end
    RPG::BGM.stop
    RPG::BGS.stop
    $data_system.gameover_me.play   
    Graphics.transition(120)
    create_command_window       
    Graphics.freeze
    create_gameover_graphic
  end
  #--------------------------------------------------------------------------
  # Janela de comandos
  #--------------------------------------------------------------------------
  def create_command_window
    # Verifica se existem arquivos
    @continue_enabled = (Dir.glob('Save*.rvdata').size > 0)
    # Cria a janela de comandos
    @command_window = Window_Command.new(172, ['Continuar', 'Tela Título',
    'Carregar','Sair'])
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = 264
    if $game_temp.playing_filename != nil
    if FileTest.exist?(@file) == false     
      @command_window.draw_item(0, false)
      end
    else
      @command_window.draw_item(0, false)   
    end   
    if @continue_enabled == false
      @command_window.draw_item(2, false)
    end   
    @command_window.openness = 0
    @command_window.open
  end 

  def post_start
    super
    open_command_window
  end

  def open_command_window
    @command_window.open
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 255
  end 

  def terminate
    super
    close_command_window   
    $scene = nil if $BTEST   
  end

  def close_command_window
    @command_window.close
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 0
  end   

  def update
    super
    @command_window.update   
    if Input.trigger?(Input::C) and @command_window.openness == 255
      case @command_window.index 
      when 0
        return Sound.play_buzzer if $game_temp.playing_filename == nil
        Sound.play_decision         
        terminate
        Graphics.fadeout(50)         
        dispose_gameover_graphic if @command_window.openness == 0                                 
        do_load
        when 1
        Sound.play_decision         
        terminate
        Graphics.fadeout(50)         
        dispose_gameover_graphic if @command_window.openness == 0                       
        $scene = Scene_Title.new         
        when 2       
        if @continue_enabled
          Sound.play_decision
          terminate
          Graphics.fadeout(50)         
          dispose_gameover_graphic if @command_window.openness == 0                                   
          $scene = Scene_File.new(false, true, false)
          else
          Sound.play_buzzer         
        end
        when 3
          Sound.play_decision         
          terminate
          Graphics.fadeout(50)         
          dispose_gameover_graphic if @command_window.openness == 0             
          $scene = nil if @command_window.openness == 0
      end     
    end
  end 

  def do_load
    file = File.open("Save#{$game_temp.playing_filename + 1}.rvdata", "rb")   
    read_save_data(file)
    file.close
    $scene = Scene_Map.new
    RPG::BGM.fade(1500)
    Graphics.fadeout(60)
    Graphics.wait(40)
    @last_bgm.play
    @last_bgs.play
  end 

  def read_save_data(file)
    characters          = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    @last_bgm            = Marshal.load(file)
    @last_bgs            = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_message        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables      = Marshal.load(file)
    $game_self_switches  = 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 $game_system.version_id != $data_system.version_id
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
  end 

  def perform_transition
    Graphics.transition(180)
  end

  def create_gameover_graphic
    @sprite = Sprite.new
    @sprite.bitmap = Cache.system("GameOver")
  end

  def dispose_gameover_graphic
    @sprite.bitmap.dispose
    @sprite.dispose
  end
end

#==============================================================================
# Scene_File
#------------------------------------------------------------------------------
# Classe de operações na tela de arquivos salvos.
#==============================================================================

class Scene_File < Scene_Base
  #--------------------------------------------------------------------------
  # Salva o jogo
  #--------------------------------------------------------------------------
  alias tds_continue_scene_file_do_save do_save
  def do_save
    $game_temp.playing_filename = @index     
    tds_continue_scene_file_do_save   
  end 
  #--------------------------------------------------------------------------
  # Carrega o jogo
  #--------------------------------------------------------------------------
  alias tds_continue_scene_file_do_load do_load
  def do_load
    $game_temp.playing_filename = @index         
    tds_continue_scene_file_do_load   
  end 
end

Créditos e Agradecimentos
  • Criado por SephirothTDS
  • Backup da antiga RMB restaurado por Jhonn
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos