Olá! Esse é mais um tutorial que escrevo, para alterar códigos de scripts já existentes, sem precisar ter muito conhecimento de RGSS2. Desta vez, vamos alterar o Scene_Base para conseguir mudar a imagem de fundo do menu padrão do RPG Maker, e de outras Scenes que utilizam o método create_menu_background.
Introdução
Percebo que utilizei uma ou mais palavras que podem não ser compreendidas por alguns. Irei explicar o que deve ser explicado dentro do próprio tutorial, mas, se ainda houver qualquer dúvida sobre conceitos, ações, etc., sugiro mandar sua dúvida ou (o que realmente será eficaz) ler os vários tutoriais de RGSS e RGSS2 (todos são da mesma linguagem, Ruby) existentes na internet. Quem procura, acha!
Para começar, vamos teclar F11 para abrir o nosso tão temido Editor de Scripts.
"create_menu_background"
Programação é pura lógica. Sério! E quem guia essa lógica são os métodos. Quando um método é "chamado", ele tem que ir lá realizar seu trabalho. Eles sempre aparecem antecedidos por um "def". Exemplo: def create_menu_back2, que declara - você não pode chamar algo que não existe! - o método create_menu_back2. Para chamá-lo, apenas escreva create_menu_back2.
O método que faz com que apareça o background do menu é o create_menu_background. Porém, para podermos alterar o background, temos que saber de onde ele é chamado. A resposta é o Scene_Base.
O que tem a ver o Scene_Base com os menus? Basicamente, os menus são "filhos" da Scene_Base, ou seja, explicando de forma simplificada, em seus códigos, eles podem usar os códigos do pai.
Seguindo esse raciocínio, modifiquei o código contido em Scene_Base, linhas 69-74, e ele ficou da seguinte forma:
onde Cache.X é o código que será usado para buscar a imagem que será usada no background do menu. Substitua X por picture("nome_da_imagem") se a imagem estiver na pasta Graphics/Pictures (importante: coloque picture em minúsculo; o RGSS2 diferencia letras maiúsculas de minúsculas), ou por system, se estiver na pasta Graphics/System (por exemplo, se quiser usar sua Title). No exemplo das imagens, será usado Cache.system("Title"), para que a imagem título seja mostrada no background.
E pronto! O problema, como irão perceber se fizerem isso (se for testar isso, tenha o Scene_Base verdadeiro copiado em algum lugar, como outro projeto mesmo, para trocar o def create_menu_background para o normal. Por conveniência, transcrevo abaixo esse código), é que TODOS os menus (inclusive o de shop e de modificação de nome) serão afetados por essa modificação. E agora?
"Enganando" o Código
Tudo o que temos que fazer é criar um novo método dentro do Scene_Base, que chamará a figura de Background, e deixar o velho create_menu_background do jeito que eles estava desde o início. Assim, chame o novo método para as Scenes que você quer que tenha essa figura como background, e deixe o create_menu_background para aquelas que você quer o velho background do mapa atual.
Abaixo do "end" do create_menu_background, vamos criar um método chamado create_menu_back2.
IMPORTANTE: nunca se esqueça de fechar um método com o end, ou será um erro de sintaxe.
Então, tudo o que temos que fazer é substituir create_menu_background (o código que chama o método antigo para as Scenes), nas Scenes que você quer alterar, por create_menu_back2. No apêndice, a seguir, terá uma lista de Scenes e as linhas onde se encontram o código de chamada do background:
Apêndice: Lista de Scenes e Linhas de Chamada de Background
- Scene_Title: não usa esse método.
- Scene_Map: não usa esse método.
- Scene_Menu: linha 20.
- Scene_Item: linha 13.
- Scene_Skill: linha 20.
- Scene_Equip: linha 26.
- Scene_Status: linha 20.
- Scene_File: linha 24.
- Scene_End: linha 13.
- Scene_Shop: linha 13.
- Scene_Name: linha 13.
- Scene_Debug: linha 13.
- Scene_Battle: não usa esse método.
- Scene_Gameover: não usa esse método.
Qualquer dúvida, sugestão, crítica ou ameaça de morte, pode mandar!
Só aviso que não sei muita coisa de RGSS2...
Introdução
Percebo que utilizei uma ou mais palavras que podem não ser compreendidas por alguns. Irei explicar o que deve ser explicado dentro do próprio tutorial, mas, se ainda houver qualquer dúvida sobre conceitos, ações, etc., sugiro mandar sua dúvida ou (o que realmente será eficaz) ler os vários tutoriais de RGSS e RGSS2 (todos são da mesma linguagem, Ruby) existentes na internet. Quem procura, acha!
Para começar, vamos teclar F11 para abrir o nosso tão temido Editor de Scripts.
"create_menu_background"
Programação é pura lógica. Sério! E quem guia essa lógica são os métodos. Quando um método é "chamado", ele tem que ir lá realizar seu trabalho. Eles sempre aparecem antecedidos por um "def". Exemplo: def create_menu_back2, que declara - você não pode chamar algo que não existe! - o método create_menu_back2. Para chamá-lo, apenas escreva create_menu_back2.
O método que faz com que apareça o background do menu é o create_menu_background. Porém, para podermos alterar o background, temos que saber de onde ele é chamado. A resposta é o Scene_Base.
O que tem a ver o Scene_Base com os menus? Basicamente, os menus são "filhos" da Scene_Base, ou seja, explicando de forma simplificada, em seus códigos, eles podem usar os códigos do pai.
Seguindo esse raciocínio, modifiquei o código contido em Scene_Base, linhas 69-74, e ele ficou da seguinte forma:
- Código:
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = Cache.X
update_menu_background
end
onde Cache.X é o código que será usado para buscar a imagem que será usada no background do menu. Substitua X por picture("nome_da_imagem") se a imagem estiver na pasta Graphics/Pictures (importante: coloque picture em minúsculo; o RGSS2 diferencia letras maiúsculas de minúsculas), ou por system, se estiver na pasta Graphics/System (por exemplo, se quiser usar sua Title). No exemplo das imagens, será usado Cache.system("Title"), para que a imagem título seja mostrada no background.
E pronto! O problema, como irão perceber se fizerem isso (se for testar isso, tenha o Scene_Base verdadeiro copiado em algum lugar, como outro projeto mesmo, para trocar o def create_menu_background para o normal. Por conveniência, transcrevo abaixo esse código), é que TODOS os menus (inclusive o de shop e de modificação de nome) serão afetados por essa modificação. E agora?
- Código:
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = $game_temp.background_bitmap
@menuback_sprite.color.set(16, 16, 16, 128)
update_menu_background
end
"Enganando" o Código
Tudo o que temos que fazer é criar um novo método dentro do Scene_Base, que chamará a figura de Background, e deixar o velho create_menu_background do jeito que eles estava desde o início. Assim, chame o novo método para as Scenes que você quer que tenha essa figura como background, e deixe o create_menu_background para aquelas que você quer o velho background do mapa atual.
Abaixo do "end" do create_menu_background, vamos criar um método chamado create_menu_back2.
- Código:
def create_menu_back2
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = Cache.X
update_menu_background
end
IMPORTANTE: nunca se esqueça de fechar um método com o end, ou será um erro de sintaxe.
Então, tudo o que temos que fazer é substituir create_menu_background (o código que chama o método antigo para as Scenes), nas Scenes que você quer alterar, por create_menu_back2. No apêndice, a seguir, terá uma lista de Scenes e as linhas onde se encontram o código de chamada do background:
Apêndice: Lista de Scenes e Linhas de Chamada de Background
- Scene_Title: não usa esse método.
- Scene_Map: não usa esse método.
- Scene_Menu: linha 20.
- Scene_Item: linha 13.
- Scene_Skill: linha 20.
- Scene_Equip: linha 26.
- Scene_Status: linha 20.
- Scene_File: linha 24.
- Scene_End: linha 13.
- Scene_Shop: linha 13.
- Scene_Name: linha 13.
- Scene_Debug: linha 13.
- Scene_Battle: não usa esse método.
- Scene_Gameover: não usa esse método.
Qualquer dúvida, sugestão, crítica ou ameaça de morte, pode mandar!
Só aviso que não sei muita coisa de RGSS2...