Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Ainda temos gente aqui?
 Aula Avançada 1: Criando Scenes Avançadas EmptyQui 25 Nov 2021, 14:04 por Halt

» [Dúvida] Como tirar a porcentagem de esquiva
 Aula Avançada 1: Criando Scenes Avançadas EmptySex 19 Nov 2021, 17:14 por Halt

» Pokémon Genesis Online! (PGO)
 Aula Avançada 1: Criando Scenes Avançadas EmptyQua 05 Jul 2017, 18:08 por Lexar

» Tileset Converter to MV
 Aula Avançada 1: Criando Scenes Avançadas EmptySex 12 maio 2017, 14:07 por Douggi

» Pack Resources, Sprites e etc
 Aula Avançada 1: Criando Scenes Avançadas EmptyQua 23 Dez 2015, 12:30 por raydengv

» Download RPG Maker 2003 + RTP em português
 Aula Avançada 1: Criando Scenes Avançadas EmptyTer 22 Dez 2015, 11:14 por ::KimMax::

» Fantasy Art Online
 Aula Avançada 1: Criando Scenes Avançadas EmptyDom 18 Out 2015, 18:42 por daviih123

» Você vai ter medo do Nerve gear?
 Aula Avançada 1: Criando Scenes Avançadas EmptySáb 25 Jul 2015, 17:02 por Kirito-kun

» O Barato é louco
 Aula Avançada 1: Criando Scenes Avançadas EmptySáb 27 Jun 2015, 16:26 por Halt

» Download RPG Maker 2000 + RTP em português
 Aula Avançada 1: Criando Scenes Avançadas EmptyQui 21 maio 2015, 20:28 por Wismael


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

Halt

Halt
Administrador
Administrador
[Autor: Anderson Porto]
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
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!
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
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!
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
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.
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
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! ^^
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Adicionando Extras
Criada a estrutura básica da title, você pode usar seus conhecimentos em rgss para adicionar efeitos, por exemplo, adicione uma fog.
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
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

https://arenarpgmaker.forumeiros.com

Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos