O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Battle Retry ("Re-batalhar")

Iniciado por LoboShow, 04/12/2012 às 17:55

Battle Retry ("Re-batalhar")

Compativel com: RMVX
Compatibilidade : ?
Facilidade de uso: ?
Lag gerado: ?

[box class=titlebg]
Para que serve o script
[/box]
Faz com que o personagem possa "re-batalhar" a batalha perdida.

[box class=titlebg]
Script
[/box]
#==========================================================================
# * Battle Retry
#==========================================================================
# by sandgolem
# Tradução by:NaRuToMaKeR
# www.reinorpg.com
# Versão 1 [VX]
# Janeiro 26th, 2008
#==========================================================================
#   INSTRUÇÕES:
#   
#   1- Ponha acima do main
#   2- Edite no Battle_Retry Module
#==========================================================================

#==========================================================================
#  Battle_Retry Module
#==========================================================================

module GameBaker
  BattleRetryCommands = ['Reiniciar Batalha','tela de Título'] # As frases que irão aparecer.
  BattleRetryDisableSwitch = 0 #Switch que desativa o battle retry. 0 para nenhuma
end

#==========================================================================
#  Game Interpreter
#==========================================================================

class Game_Interpreter
  alias_method :gamebaker_battleretry_interp601, :command_601
  def command_601
    if $gamebaker_retrywon
      @branch[@list[@index].indent] = 0
      $gamebaker_retrywon = nil
    end
    return gamebaker_battleretry_interp601
  end
 
  alias_method :gamebaker_battleretry_interp602, :command_602
  def command_602
    if $gamebaker_retryescaped
      @branch[@list[@index].indent] = 1
      $gamebaker_retryescaped = nil
    end
    return gamebaker_battleretry_interp602
  end
end

class Scene_File 
  def gamebaker_write_retrysave_data
    file = File.open('Data/retry.gb', 'wb')
    write_save_data(file)
    file.close
  end

  def gamebaker_read_retrysave_data
    file = File.open('Data/retry.gb', 'rb')
    read_save_data(file)
    file.close
  end
end

class Scene_Battle
  alias_method :gamebaker_battleretry_main, :main
  def main
    $gamebaker_retryescaped = nil
    $gamebaker_retrywon = nil
    if !$game_switches[GameBaker::BattleRetryDisableSwitch]
      if !$gamebaker_battleretry_inbattle & !$game_troop.can_lose
        $gamebaker_battleretry_inbattle = $game_troop
        gamebaker_scene_save_temp = Scene_File.new(true,true,true)
        gamebaker_scene_save_temp.gamebaker_write_retrysave_data
        gamebaker_scene_save_temp = nil
      end
    end
    gamebaker_battleretry_main
    if !$scene.is_a?(Scene_Gameover)
      File.delete('Data/retry.gb') if FileTest.exist?('Data/retry.gb')
      $gamebaker_battleretry_inbattle = nil
    end
  end
 
  alias_method :gamebaker_battleretry_battleend, :battle_end
  def battle_end(result)
    $gamebaker_retrywon = true if result == 0
    $gamebaker_retryescaped = true if result == 1
    gamebaker_battleretry_battleend(result)
  end
end

class Scene_Gameover
  alias_method :gamebaker_battleretry_gameovermain, :main
  def main
    if $gamebaker_battleretry_inbattle
      $data_system.gameover_me.play
      @sprite = Sprite.new
      @sprite.bitmap = Cache.system("GameOver")
      Graphics.transition(60)
      @command_window = Window_Command.new(192,GameBaker::BattleRetryCommands)
      @command_window.back_opacity = 160
      @command_window.x = 260 - @command_window.width / 2
      @command_window.y = 248
      loop do
        Graphics.update
        Input.update
        gamebaker_retry_update
        break if $scene != self
      end
      @command_window.dispose
      Graphics.freeze
      @sprite.bitmap.dispose
      @sprite.dispose
      Graphics.transition(30)
      Graphics.freeze
    else
      gamebaker_battleretry_gameovermain
    end
  end
 
  def gamebaker_retry_update
    @command_window.update
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0
        $game_system.battle_bgm.play
        gamebaker_scene_save_temp = Scene_File.new(true,true,true)
        gamebaker_scene_save_temp.gamebaker_read_retrysave_data
        gamebaker_scene_save_temp = nil
        $game_troop = $gamebaker_battleretry_inbattle
        $scene = Scene_Battle.new
      when 1
        File.delete('Data/retry.gb') if FileTest.exist?('Data/retry.gb')
        $gamebaker_battleretry_inbattle = nil
        $scene = Scene_Title.new
      end
    end
  end
end


[box class=titlebg]
Imagens
[/box]

[box class=titlebg]
Créditos e Avisos
[/box]
Criador: Sandgolem
Tradução: NaruToMaKeR

Achei interessante o sistema, pode ser bem útil dependendo do estilo de jogo. Eu pessoalmente prefiro fazer o jogador voltar milhares de horas de jogo à cada morte, fazendo-o tomar mais cuidado, mas em alguns casos funciona melhor como mostrado acima.
To Die Is To Find Out If Humanity Ever Conquers Death

Citação de: B.loder online 04/12/2012 às 17:57
Achei interessante o sistema, pode ser bem útil dependendo do estilo de jogo. Eu pessoalmente prefiro fazer o jogador voltar milhares de horas de jogo à cada morte, fazendo-o tomar mais cuidado, mas em alguns casos funciona melhor como mostrado acima.

De fato, um RPG legitimo faz isso ae que você disse.  Então acredito que esse script iria vir a calhar em um jogo de aventura, like pokemon ou algo parecido. 

Lobo, se essa bagaça funcionar com o GTBS, você vai virar meu "idalo". Cai como uma luva na minha serie de projetos.
Vou testar aqui, e já digo se funcionou ou não :ok: