selecionar personagem

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

selecionar personagem

Mensagem por meunomeeRAFAEL ~ Alucard em Sab 26 Fev - 13:51

Tela de Seleção de Personagem Após o Title
por: Alucard_2

Introdução:
Inicialmente era um pedido do membro Kisame-Kill, depois resolvi postar.

Características:
Adiciona uma tela de seleção de personagem após o Title.


Screenshots:
Na screen está as imagens estão horríveis, mas você pode mudá-las.


Como usar:
Cole acima do Main. Demais instruções no script.

Script:
Código:
################################################################################
# Select Your Player v. 1.0 ####################################################
################################################################################
# Por: Alucard_2 ###############################################################
################################################################################
# FAVOR DAR OS CRÉDITOS!!!######################################################
################################################################################

#------------------------------------------------------------------------------
# Configure a partir daqui
#------------------------------------------------------------------------------
module Alucard_2
  PLAYER1_IMAGE = "carinhatosco1"
  PLAYER1_COORX = 0
  PLAYER1_ID = 1
  PLAYER2_IMAGE = "carinhatosco2"
  PLAYER2_COORX = 136
  PLAYER2_ID = 2
  PLAYER3_IMAGE = "carinhatosco3"
  PLAYER3_COORX = 136*2
  PLAYER3_ID = 3
  PLAYER4_IMAGE = "carinhatosco4"
  PLAYER4_COORX = 136*3
  PLAYER4_ID = 4
  MAX_PLAYERS = 4
  MUSIC = "Scene12"
  CONFIRM_MESSEGE = "Deseja começar com este personagem?"
end

#------------------------------------------------------------------------------
# Pare de configurar a partir daqui
#------------------------------------------------------------------------------

#==============================================================================
# Scene_Title
#------------------------------------------------------------------------------
# Classe das operações na tela de título.
#==============================================================================

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # Processo principal
  #--------------------------------------------------------------------------
  def main
    if $BTEST                        # Se for teste de batalha
      battle_test                    # Teste inicia
    else                              # Se você está jogando normal
      super                          # Vá ao processo principal
    end
  end
  #--------------------------------------------------------------------------
  # Inicialização do processo
  #--------------------------------------------------------------------------
  def start
    super
    load_database                    # Carrega o banco de dados
    create_game_objects              # Cria os objetos do jogo
    check_continue                    # Verifica se há arquivos salvos
    create_title_graphic              # Cria o gráfico de título
    create_command_window            # Cria a janela de comandos
    play_title_music                  # Toca a música de título
  end
  #--------------------------------------------------------------------------
  # Transição
  #--------------------------------------------------------------------------
  def perform_transition
    Graphics.transition(20)
  end
  #--------------------------------------------------------------------------
  # Início do processo
  #--------------------------------------------------------------------------
  def post_start
    super
    open_command_window
  end
  #--------------------------------------------------------------------------
  # Preparação para fim do processo
  #--------------------------------------------------------------------------
  def pre_terminate
    super
    close_command_window
  end
  #--------------------------------------------------------------------------
  # Fim do processo
  #--------------------------------------------------------------------------
  def terminate
    super
    dispose_command_window
    snapshot_for_background
    dispose_title_graphic
  end
  #--------------------------------------------------------------------------
  # Atualização da tela
  #--------------------------------------------------------------------------
  def update
    super
    @command_window.update
    if Input.trigger?(Input::C)
      case @command_window.index
      when 0    # Novo Jogo
        command_new_game
      when 1    # Continuar
        command_continue
      when 2    # Sair
        command_shutdown
      end
    end
  end
  #--------------------------------------------------------------------------
  # Carregamento do banco de dados
  #--------------------------------------------------------------------------
  def load_database
    $data_actors        = load_data("Data/Actors.rvdata")
    $data_classes      = load_data("Data/Classes.rvdata")
    $data_skills        = load_data("Data/Skills.rvdata")
    $data_items        = load_data("Data/Items.rvdata")
    $data_weapons      = load_data("Data/Weapons.rvdata")
    $data_armors        = load_data("Data/Armors.rvdata")
    $data_enemies      = load_data("Data/Enemies.rvdata")
    $data_troops        = load_data("Data/Troops.rvdata")
    $data_states        = load_data("Data/States.rvdata")
    $data_animations    = load_data("Data/Animations.rvdata")
    $data_common_events = load_data("Data/CommonEvents.rvdata")
    $data_system        = load_data("Data/System.rvdata")
    $data_areas        = load_data("Data/Areas.rvdata")
  end
  #--------------------------------------------------------------------------
  # Carregamento do banco de dados para teste de batalha
  #--------------------------------------------------------------------------
  def load_bt_database
    $data_actors        = load_data("Data/BT_Actors.rvdata")
    $data_classes      = load_data("Data/BT_Classes.rvdata")
    $data_skills        = load_data("Data/BT_Skills.rvdata")
    $data_items        = load_data("Data/BT_Items.rvdata")
    $data_weapons      = load_data("Data/BT_Weapons.rvdata")
    $data_armors        = load_data("Data/BT_Armors.rvdata")
    $data_enemies      = load_data("Data/BT_Enemies.rvdata")
    $data_troops        = load_data("Data/BT_Troops.rvdata")
    $data_states        = load_data("Data/BT_States.rvdata")
    $data_animations    = load_data("Data/BT_Animations.rvdata")
    $data_common_events = load_data("Data/BT_CommonEvents.rvdata")
    $data_system        = load_data("Data/BT_System.rvdata")
  end
  #--------------------------------------------------------------------------
  # Criação dos objetos do jogo
  #--------------------------------------------------------------------------
  def create_game_objects
    $game_temp          = Game_Temp.new
    $game_message      = Game_Message.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables    = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_actors        = Game_Actors.new
    $game_party        = Game_Party.new
    $game_troop        = Game_Troop.new
    $game_map          = Game_Map.new
    $game_player        = Game_Player.new
  end
  #--------------------------------------------------------------------------
  # Verifica se há arquivos salvos
  #--------------------------------------------------------------------------
  def check_continue
    @continue_enabled = (Dir.glob('Save*.rvdata').size > 0)
  end
  #--------------------------------------------------------------------------
  # Criação do gráfico de título
  #--------------------------------------------------------------------------
  def create_title_graphic
    @sprite = Sprite.new
    @sprite.bitmap = Cache.system("Title")
  end
  #--------------------------------------------------------------------------
  # Dispose do gráfico de título
  #--------------------------------------------------------------------------
  def dispose_title_graphic
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # Criação da janela de comandos
  #--------------------------------------------------------------------------
  def create_command_window
    s1 = Vocab::new_game
    s2 = Vocab::continue
    s3 = Vocab::shutdown
    @command_window = Window_Command.new(172, [s1, s2, s3])
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = 288
    if @continue_enabled                    # Se houver arquivos salvos
      @command_window.index = 1            # Opção habilitada
    else                                    # Se não houver arquivos salvos
      @command_window.draw_item(1, false)  # Opção desabilitada
    end
    @command_window.openness = 0
    @command_window.open
  end
  #--------------------------------------------------------------------------
  # Dispose da janela de comandos
  #--------------------------------------------------------------------------
  def dispose_command_window
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  # Abre a janela de comandos
  #--------------------------------------------------------------------------
  def open_command_window
    @command_window.open
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 255
  end
  #--------------------------------------------------------------------------
  # Fecha a janela de comandos
  #--------------------------------------------------------------------------
  def close_command_window
    @command_window.close
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 0
  end
  #--------------------------------------------------------------------------
  # Toca a música de título
  #--------------------------------------------------------------------------
  def play_title_music
    $data_system.title_bgm.play
    RPG::BGS.stop
    RPG::ME.stop
  end
  #--------------------------------------------------------------------------
  # Verifica se há uma Posição Inicial de Personagem
  #--------------------------------------------------------------------------
  def confirm_player_location
    if $data_system.start_map_id == 0
      print "A Posição Inicial de Personagem não foi definida."
      exit
    end
  end
  #--------------------------------------------------------------------------
  # Comando: Novo Jogo
  #--------------------------------------------------------------------------
  def command_new_game
    confirm_player_location
    Sound.play_decision
    RPG::BGM.fade(1500)
    close_command_window
    Graphics.fadeout(60)
    Graphics.wait(40)
    Graphics.frame_count = 0
    RPG::BGM.stop
    $scene = Scene_Select_Your_Player.new(0)
  end
  #--------------------------------------------------------------------------
  # Comando: Continuar
  #--------------------------------------------------------------------------
  def command_continue
    if @continue_enabled
      Sound.play_decision
      $scene = Scene_File.new(false, true, false)
    else
      Sound.play_buzzer
    end
  end
  #--------------------------------------------------------------------------
  # Comando: Sair
  #--------------------------------------------------------------------------
  def command_shutdown
    Sound.play_decision
    RPG::BGM.fade(800)
    RPG::BGS.fade(800)
    RPG::ME.fade(800)
    $scene = nil
  end
  #--------------------------------------------------------------------------
  # Teste de batalha
  #--------------------------------------------------------------------------
  def battle_test
    load_bt_database                  # Carrega o banco de dados para o teste
    create_game_objects              # Cria os objetos do jogo
    Graphics.frame_count = 0          # Inicialização da contagem de frames
    $game_party.setup_battle_test_members
    $game_troop.setup($data_system.test_troop_id)
    $game_troop.can_escape = true
    $game_system.battle_bgm.play
    snapshot_for_background
    $scene = Scene_Battle.new
  end
end

##############################
##############################
## Scene_Select_Your_Player ##
##############################
##############################

class Scene_Select_Your_Player < Scene_Base
  def initialize(menu_index)
    @menu_index = menu_index
  end

  def start
    Audio.bgm_play("Audio/BGM/"+Alucard_2::MUSIC)
    create_confirm_window
    @player1 = Sprite.new
    @player1.bitmap = Cache.picture(Alucard_2::PLAYER1_IMAGE)
    @player1.x = PLAYER1_COORX
    @player2 = Sprite.new
    @player2.bitmap = Cache.picture(Alucard_2::PLAYER2_IMAGE)
    @player2.x = PLAYER2_COORX
    @player3 = Sprite.new
    @player3.bitmap = Cache.picture(Alucard_2::PLAYER3_IMAGE)
    @player3.x = PLAYER3_COORX
    @player4 = Sprite.new
    @player4.bitmap = Cache.picture(Alucard_2::PLAYER4_IMAGE)
    @player4.x = PLAYER4_COORX
  end

  def terminate
    dispose_confirm_window
    @player1.dispose
    @player2.dispose
    @player3.dispose
    @player4.dispose
  end
 
  def update
    if Input.trigger?(Input::LEFT)
      @menu_index -= 1
    end
    if Input.trigger?(Input::RIGHT)
      @menu_index += 1
    end
    if Input.trigger?(Input::C)
      activate_confirm_window
      @command_window.update
      if Input.trigger?(Input::C)
        case @command_window.index
        when 0    # Sim
          if @menu_index == 0
            $game_party.add_actor(Alucard_2::PLAYER1_ID)
            $scene = Scene_Map.new
          elsif @menu_index == 1
            $game_party.add_actor(Alucard_2::PLAYER2_ID)
            $scene = Scene_Map.new
          elsif @menu_index == 2
            $game_party.add_actor(Alucard_2::PLAYER3_ID)
            $scene = Scene_Map.new
          elsif @menu_index == 3
            $game_party.add_actor(Alucard_2::PLAYER4_ID)
            $scene = Scene_Map.new
          end
          $game_map.setup($data_system.start_map_id)    # Posição inicial no mapa
          $game_player.moveto($data_system.start_x, $data_system.start_y)
          $game_player.refresh
          RPG::BGM.fade(1500)
          close_confirm_window
          Graphics.fadeout(60)
          Graphics.wait(40)
          Graphics.frame_count = 0
          RPG::BGM.stop
          $game_map.autoplay
        when 1    # Não
          desactivate_confirm_window
        end
      end
    end
    if @menu_index <= -1
      @menu_index = Alucard_2::MAX_PLAYERS-1
    end
    if @menu_index == 0
      @player1.tone = Tone.new(75, 75, 75)
      @player2.tone = Tone.new(0, 0, 0)
      @player3.tone = Tone.new(0, 0, 0)
      @player4.tone = Tone.new(0, 0, 0)
      @player1.z = 1
      @player2.z = 0
      @player3.z = 0
      @player4.z = 0
    end
    if @menu_index == 1
      @player1.tone = Tone.new(0, 0, 0)
      @player2.tone = Tone.new(75, 75, 75)
      @player3.tone = Tone.new(0, 0, 0)
      @player4.tone = Tone.new(0, 0, 0)
      @player1.z = 0
      @player2.z = 1
      @player3.z = 0
      @player4.z = 0
    end
    if @menu_index == 2
      @player1.tone = Tone.new(0, 0, 0)
      @player2.tone = Tone.new(0, 0, 0)
      @player3.tone = Tone.new(75, 75, 75)
      @player4.tone = Tone.new(0, 0, 0)
      @player1.z = 0
      @player2.z = 0
      @player3.z = 1
      @player4.z = 0
    end
    if @menu_index == 3
      @player1.tone = Tone.new(0, 0, 0)
      @player2.tone = Tone.new(0, 0, 0)
      @player3.tone = Tone.new(0, 0, 0)
      @player4.tone = Tone.new(75, 75, 75)
      @player1.z = 0
      @player2.z = 0
      @player3.z = 0
      @player4.z = 1
    end
    if @menu_index == Alucard_2::MAX_PLAYERS
      @menu_index = 0
    end
  end
  #--------------------------------------------------------------------------
  # Criação da janela de comandos
  #--------------------------------------------------------------------------
  def create_confirm_window
    s1 = "Sim"
    s2 = "Não"
    @command_window = Window_Confirm.new(180, [s1, s2])
    @command_window.x = (544 - @command_window.width) / 2
    @command_window.y = 288
  end
  #--------------------------------------------------------------------------
  # Ativação da janela de comandos
  #--------------------------------------------------------------------------
  def activate_confirm_window
    @command_window.visible = true
    @command_window.active = true
    @command_window.openness = 0
    @command_window.open
  end
  #--------------------------------------------------------------------------
  # Desativação da janela de comandos
  #--------------------------------------------------------------------------
  def desactivate_confirm_window
    @command_window.visible = false
    @command_window.active = false
    close_command_window
  end
  #--------------------------------------------------------------------------
  # Dispose da janela de comandos
  #--------------------------------------------------------------------------
  def dispose_confirm_window
    @command_window.dispose
  end
  #--------------------------------------------------------------------------
  # Abre a janela de comandos
  #--------------------------------------------------------------------------
  def open_confirm_window
    @command_window.open
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 255
  end
  #--------------------------------------------------------------------------
  # Fecha a janela de comandos
  #--------------------------------------------------------------------------
  def close_confirm_window
    @command_window.close
    begin
      @command_window.update
      Graphics.update
    end until @command_window.openness == 0
  end
end
#==============================================================================
# Window_Confirm
#------------------------------------------------------------------------------
# Janela que exibe as opções "sim" e "não".
#==============================================================================

class Window_Confirm < Window_Selectable
  #--------------------------------------------------------------------------
  # Variáveis públicas
  #--------------------------------------------------------------------------
  attr_reader  :commands                # Comandos
  #--------------------------------------------------------------------------
  # Inicialização do objeto
  #    width      : largura da janela
  #    commands  : array de comandos
  #    column_max : número de colunas (2 ou mais)
  #    row_max    : número de linhas (0: número de comandos)
  #    spacing    : espaçamento entre items localizados próximos
  #--------------------------------------------------------------------------
  def initialize(width, commands, column_max = 1, row_max = 0, spacing = 32)
    if row_max == 0
      row_max = (commands.size + column_max - 1) / column_max
    end
    super(0, 0, width, row_max * WLH + 32, spacing)
    @commands = commands
    @item_max = commands.size
    @column_max = column_max
    refresh
    self.active = false
    self.visible = false
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # Atualização
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.draw_text(4, WLH * 0, self.width, WLH, Alucard_2::CONFIRM_MESSEGE)
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # Desenho do item
  #    index  : número (ID) do item
  #    enabled : espaço ativo. Quando translúcido significa falso
  #--------------------------------------------------------------------------
  def draw_item(index, enabled = true)
    rect = item_rect(index)
    rect.x += 4
    rect.width -= 8
    self.contents.clear_rect(rect)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    self.contents.draw_text(rect, @commands[index])
  end
end

Créditos
Alucard_2 - Criação de disponibilização;
Kisame-Kill - Pedir o script[/quote

meunomeeRAFAEL ~ Alucard
Membro
Membro

Reputação : 0

Voltar ao Topo Ir em baixo

Re: selecionar personagem

Mensagem por Darkay2 em Qua 23 Mar - 10:35

hmm legal este sistema! mais nem vou usar no meu game :)

Darkay2
Membro
Membro

Reputação : 2

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum