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

New Game +

Iniciado por Raizen, 16/01/2013 às 17:51

New Game +

Compativel com: RMVX
Compatibilidade :boa
Facilidade de uso: fácil
Lag gerado: baixo
[box class=titlebg]
Condições de Uso
[/box]
  Não especificado pelo autor

[box class=titlebg]
Para que serve o script
[/box]
  Permite a função new game+, semelhante ao jogo chrono trigger.

[box class=titlebg]
Script
[/box]

=begin
                       Instruções
Faz Uma Seleção de New game + , no menu.
Para instalala cole esse script em cima do "Main "
ATENÇÂO. Para carregar o new game + ative a switch que ativa a opção e SALVE o jogo ( Se não salvar não apareçe! )
=end
#===============================================================
# ● [VX] ◦ New Game Plus+ ◦ □
#--------------------------------------------------------------
# ◦ by Woratana [woratana@hotmail.com]
# ◦ Thaiware RPG Maker Community
# ◦ Released on: 11/01/2009
# ◦ Version: 1.0
#--------------------------------------------------------------
# ◦ How to use:
#--------------------------------------------------------------
# 1) Setup script in Setup Part below..
# 2) The script will enable New Game Plus+ automatically when
# there is/are save file(s) that turned ON switch in NGPLUS_SWITCH
#=================================================================

class Scene_Title
  #=================================================================
  # New Game Plus+ Setup Part
  #-----------------------------------------------------------------
  NGPLUS_SWITCH = 7 # Switch para acionar o New Game Plus+
 
  NGPLUS_TITLE = "Title" # Nome da imagem que será mostrada no título do New Game Plus+
  # A imagem deve estar em: 'Graphics/System/'
  NGPLUS_BGM = "Dungeon2" # Música que iár tocar com o New Game Plus+ abilitado
  # A música deve estar em : 'Audio/BGM/'
  NGPLUS_BGM_VOL = 150 # Background Music Volume
  NGPLUS_BGM_PITCH = 120 # Background Music Pitch
 
  NGPLUS_WINDOW_Y = -24 # Move command window vertically (+:Down, -: Up)
  # Because adding New Game Plus+ command will increase command window's height
 
  NGPLUS_COMMAND = "New Game +" # O que estará escrito na janela do New Game +
  NGPLUS_INDEX = 0 # Order index of New Game Plus+ command
  NGPLUS_MAP = [83, 1, 1] # [Map ID, X, Y] to go for New Game Plus+ command
  # e.g. [1,2,3] for actor ID 1, 2, and 3.
  # [2] for actor ID 2 only.
  # [] for no party member.
  #-----------------------------------------------------------------
 
  alias wora_simngplus_scetit_checkcon check_continue
  alias wora_simngplus_scetit_ptm play_title_music
  alias wora_simngplus_scetit_ctg create_title_graphic
  def check_continue(*args)
    wora_simngplus_scetit_checkcon(*args)
    if @continue_enabled
      @newgame_plus = false
      savelist = Dir.glob("Save*.rvdata")
      savelist.each do |name|
        save = File.open(name, "rb")
        (1..6).each { trash = Marshal.load(save) }
        @newgame_plus = true if Marshal.load(save)[NGPLUS_SWITCH]
        save.close
      end
    end
  end
 
  def play_title_music(*args)
    wora_simngplus_scetit_ptm(*args)
    if @newgame_plus
      RPG::BGM.new(NGPLUS_BGM, NGPLUS_BGM_VOL, NGPLUS_BGM_PITCH).play
    end
  end
 
  def create_title_graphic(*args)
    wora_simngplus_scetit_ctg(*args)
    @sprite.bitmap = Cache.system(NGPLUS_TITLE) if @newgame_plus
  end
end

#=============================================================
# * Window_Command Insert Tool (Version 2)
#=============================================================
class Window_Command < Window_Selectable
  unless method_defined? :wora_cominstool_wincom_drawitem
    alias wora_cominstool_wincom_drawitem draw_item unless $@
     
    #------------------------------------
    # * [Alias] Draw_Item
    #------------------------------------
    def draw_item(*args)
      wora_cominstool_wincom_drawitem(*args)
      # Set array's index to 1 if command is disabled
      @disabled_commands ||= []
      @disabled_commands[args[0]] = args[1].nil? || args[1] ? nil : true
    end
     
    #------------------------------------
    # * Insert Command
    #------------------------------------
    def ins_command(index, text)
      @commands.insert(index, text) # Insert new commands
      @disabled_commands ||= []
      @disabled_commands.insert(index, nil)
      # Set new height for window
      old_disabled_commands = @disabled_commands.dup
      self.height = (@commands.size + @column_max - 1) / @column_max * WLH + 32
      @item_max = @commands.size # Update @item_max to make refresh works correctly
      create_contents            # Create new content because window's size changed
      refresh                    # Redraw window's contents
      old_disabled_commands.each_index do |i|
        if !old_disabled_commands[i].nil?
          draw_item(i, false)    # Draw commands that disabled before
        end
      end
    end
   
    #------------------------------------
    # * Add Command
    #------------------------------------
    def add_command(text)
      ins_command(@commands.size, text) # Add new command to new index
    end
  end
end

#=============================================================
# * Add command(s) to Scene_Title
#=============================================================
class Scene_Title < Scene_Base 
  #--------------------------------------------------------------------------
  # * [Alias] Create Command Window
  #--------------------------------------------------------------------------
  alias wora_simngplus_scetit_crecomwin create_command_window
  def create_command_window(*args)
    wora_simngplus_scetit_crecomwin(*args)
    if @newgame_plus
      # Insert new command
      @command_window.ins_command(NGPLUS_INDEX, NGPLUS_COMMAND)
      @command_window.y = @command_window.y + NGPLUS_WINDOW_Y
      # Set index to correct one if @menu_index is after/equal to new command
      @wnewcommand ||= []
      @wnewcommand << NGPLUS_INDEX
    end
  end
  #--------------------------------------------------------------------------
  # * [Alias] Update Command Selection
  #--------------------------------------------------------------------------
  alias wora_simngplus_scetit_upd update
  def update(*args)
    if @newgame_plus
      @menucomorpg_change = false
      # If player choose new command
      if Input.trigger?(Input::C) and @command_window.index == NGPLUS_INDEX
        Sound.play_decision
        $game_map.setup(NGPLUS_MAP[0])
        $game_player.moveto(NGPLUS_MAP[1], NGPLUS_MAP[2])
        $game_player.refresh
        $scene = Scene_Map.new
        RPG::BGM.fade(1500)
        close_command_window
        Graphics.fadeout(60)
        Graphics.wait(40)
        Graphics.frame_count = 0
        RPG::BGM.stop
        $game_map.autoplay
      else # If player choose index after new command
        if Input.trigger?(Input::C) and @command_window.index > NGPLUS_INDEX
          @command_window.index -= 1 # Decrease index to make old update works
          @menucomorpg_change = true
        end
        wora_simngplus_scetit_upd(*args)
      end
      @command_window.index += 1 if @menucomorpg_change # Increase index back
    else
      wora_simngplus_scetit_upd(*args)
    end
  end
end



[box class=titlebg]
Imagens
[/box]

Spoiler
[close]

[box class=titlebg]
Créditos e Avisos
[/box]

Woratana

Citação de: Raizen online 16/01/2013 às 17:51
Permite a função new game+, semelhante ao jogo chrono trigger.

Para quê, exatamente, isso serve? Nunca joguei Chrono Trigger.

Assim no chrono trigger, ao zerar uma vez, abria o new game +, aqui nesse script é só um save ter uma certa switch ligada que abre essa função.

clicando na função new game + você vai ser redirecionado a um mapa diferente do inicial, ou seja você pode até fazer uma réplica do primeiro mapa, mas ligar uma switch a mais, e com essa switch mudar coisas na história, possibilitar itens diferentes, finais diferentes coisas desse tipo :)