InícioFAQBuscarMembrosRegistrar-seLogin
A Equipe Central RPG Maker deseja a todos Boas Vindas!
Olá galera venho aqui pedir para ajuda a vocês pesso que postem conteúdo em nossa comunidade irei ajudar a vocês também.
Agora nossa comunidade também tem o famoso projeto de ouro porem da nossa comunidade leva um nome diferente leva o nome Osca de Ouro entre no tópico de Notícias e fique por dentro das novidades.

Compartilhe | 
 

 Aula Avançada 1: Criando Scenes Avançadas

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
..:: P.V Supreme ::..
Membro
Membro


Sexo : Masculino
Mensagens : 241

MensagemAssunto: Aula Avançada 1: Criando Scenes Avançadas   Dom Dez 19, 2010 12:37 pm



Introdução
Para os que leram a versão antiga desta aula, aproveitem para relê-la pois ela foi completamente recriada. Com essa, inauguramos o curso avançado de RGSS!



Criando a Estrutura Inicial
Na aula original havíamos criado uma Scene_Menu, mas ela ficou muito longa e por isso vamos dar uma encurtada. Nosso objetivo agora será criar uma Scene_Title, ou seja, uma tela de título animada com imagens. Para começar, vamos criar uma Scene_Title idêntica à original do RMXP. Ai vocês me perguntarão, "ta, mas posso simplesmente copiar e colar?" respondo que sim, porém como estamos estudando e também para tirar a ferrugem, vou esplicar tudo!


Carregando o jogo
Logo que o jogo roda, main(la abaixo na lista de scripts) é executado e por padrão, abre a Scene_Title, por questões de funcionalidade, adicione ja no método main da Scene_Title, os recursos para o battle_test (teste de batalha), para isso, basta colocar:

Código:

class Scene_Title
  def main
    if $BTEST
      battle_test
      return
    end

A variável $BTEST é um booleano(switch) que é ativado quando fazemos um teste de batalha, como estamos criando uma Scene que ja existe, não precisamos recriar métodos que são iguais aos originais, por isso, o método chamado pelo comando (battle_test) não é necessário que implementemos.

Continuando no método main, vamos carregar todas as variáveis do sistema do jogo, esses comandos são padronizados então você pode copiar a vontade, sempre, a 1ª Scene que for executada no jogo deve conter os seguintes comandos logo no início:


Código:

    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes      = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items        = load_data("Data/Items.rxdata")
    $data_weapons      = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies      = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    $game_system = Game_System.new

Feito as bases, vamos continuar com os comandos padrão, vamos agora adicionar a imagem de fundo, ela é a imagem que esta configurada no sistema.

Código:

    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)

Depois criamos o menu de opções do jogo.

Código:

    @command_window = Window_Command.new(192, ["Novo Jogo", "Continuar", "Sair"])

Verificamos agora se há algum save na pasta do jogo, para então habilitar ou não a opção de continuar.

Código:

    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end

Paramos os ME e BGS e tocamos a BMG do título.

Código:

    $game_system.bgm_play($data_system.title_bgm)
    Audio.me_stop
    Audio.bgs_stop

Após tudo isso, basta executar a transição da tela seguido do nosso popular "loop do" e por fim, usamos os "dispose" pra não ficar coisa a mais na tela.

Código:

    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    @sprite.dispose

Termine o código e rode o jogo, vai rodar a tela inicial com o menu no canto da tela.


Adicionando opções via Pictures
Vamos começar agora o conteúdo em si, crie 3 imagens como as disponíveis no link abaixo ou pegue essas mesmo.

Imagens aqui!

Adicione agora, um novo sprite na sua Scene, depois da criação do menu, adicione:
Código:

    @option = Sprite.new #criamos um sprite chamado option
    @option.bitmap = RPG::Cache.picture("menu" + @command_window.index.to_s) #definimos que a imagem é a
    #picture chamada menu + o número da opção atualmente selecionada!
Coloque o devido dispose no lugar.

Ao rodar o jogo, a nova imagem ficará estática na tela, para torná-la dinâmica, basta adicionar o comando de definição do bitmap no método update. Como o método update ja existe e não queremos editá-lo todo, vamos usar um alias!


Código:

  alias rgss_aula_update update
  def update
    @option.bitmap = RPG::Cache.picture("menu" + @command_window.index.to_s)
    rgss_aula_update
  end

Rode o jogo, seu menu por pictures irá acompanhar o menu original, basta agora esconder nosso menu original e deixar esse "fake" baseado em pictures visível, para isso, depois da criação do menu, mude a posição x dele para um valor maior que 640, assim ele vai ficar fora da tela, por exemplo "@command_window.x = 10000"!

Ja temos uma tela de título razoável, altere agora a imagem de fundo da forma convencional, apenas para fins estéticos! ^^



Adicionando Extras
Criada a estrutura básica da title, você pode usar seus conhecimentos em rgss para adicionar efeitos, por exemplo, adicione uma fog.


Código Final
Ao final do trabalho, obtive o seguinte resultado
Código:

class Scene_Title
  def main
    if $BTEST
      battle_test
      return
    end
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes      = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items        = load_data("Data/Items.rxdata")
    $data_weapons      = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies      = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    $game_system = Game_System.new
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
    @command_window = Window_Command.new(192, ["Novo Jogo", "Continuar", "Sair"])
    @command_window.x = 10000
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end
    @fog = Plane.new(@viewport1)
    @fog.bitmap = RPG::Cache.fog("004-Shade02",0)
    @fog.blend_type = 1
    @fog.opacity = 150
    @option = Sprite.new
    @option.bitmap = RPG::Cache.picture("menu" + @command_window.index.to_s)
    $game_system.bgm_play($data_system.title_bgm)
    Audio.me_stop
    Audio.bgs_stop
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @command_window.dispose
    @sprite.dispose
    @option.dispose
    @fog.dispose
  end
 
  alias rgss_aula_update update
  def update
    @option.bitmap = RPG::Cache.picture("menu" + @command_window.index.to_s)
    @fog.oy -= 3
    @fog.ox -= 1
    rgss_aula_update
  end
end


Tags de Busca

Scenes
Pictures
Title


..:: Crédito ::..
Total a: Anderson Porto...
Por Disponibilizar: ..:: P.V Supreme ::..


..:: Agradecimentos ::..
Google xD foi da onde que tirei... + sei que essas aulas são de Anderson Porto...
Voltar ao Topo Ir em baixo
http://centralrpgmaker.forumeiro.com
 
Aula Avançada 1: Criando Scenes Avançadas
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» [Vídeo Tutorial] Técnicas Avançadas do uso da Pen Tool
» janelas avançadas 1.2
» [Illustrator - Video - Tutorial ]Técnicas Avançadas do uso da Pen Tool
» [Tutorial] Tipografia (Avançado)
» [TUTORIAL]FAN-BAR AVANÇADA

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
 :: Rpg Maker XP :: Tutoriais-
Ir para: