1 Aula Avançada 1: Criando Scenes Avançadas Dom 14 Out 2012, 20:21
Halt
Administrador
[Autor: Anderson Porto]
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!
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!
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:
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:
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:
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!
Ja temos uma tela de título razoável, altere agora a imagem de fundo da forma convencional, apenas para fins estéticos! ^^
Criada a estrutura básica da title, você pode usar seus conhecimentos em rgss para adicionar efeitos, por exemplo, adicione uma fog.
Ao final do trabalho, obtive o seguinte resultado
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
IntroduçãoPara 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 InicialNa 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 jogoLogo 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
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
- Código:
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
- Código:
@command_window = Window_Command.new(192, ["Novo Jogo", "Continuar", "Sair"])
- 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
- Código:
$game_system.bgm_play($data_system.title_bgm)
Audio.me_stop
Audio.bgs_stop
- Código:
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
@sprite.dispose
[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]
Adicionando opções via PicturesVamos 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!
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
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 ExtrasCriada 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 FinalAo 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