.:INSERINDO FACES EM MENUS DO RPG MAKER XP:.
Por Akimenerus
:>INTRODUÇÃO<:
Por algum "tempinho" eu vim cobrando de um amiguinho meu para ele postar um tuto explicando sobre isso, e como vi que ele estava ocupado com prioridades maiores, resolvi estudar outros scripts que desfrutavam dessa função até finalmente entender como era feito.
:>OBJETIVO<:
O Objetivo do tutorial é ensinar aos scripters iniciantes a inserir faces no rpg maker xp, ja que o mesmo não goza dessa opção como nos outros makers.
:>PARA COMEÇAR<:
Quero lembrar que ainda sou iniciante em RGSS tambem, muitas das coisas a serem transmitidas aqui, talvez eu não possa explicar detalhadamente, mas farei o máximo possível para que entenda o que foi feito.
:>VAMOS TRABALHAR<:
Abra o painel de editor de scripts e crie um novo script acima do main ( clique com o botão direito em "main" e Inserir ou tecle Insert em seu teclado). Vamos nomea-lo como "tutorial"
Nós vamos mexer na Window_Base, que depois do main, é uma das classes mais importantes em RGSS, já que ela é responsável por criar as janelas do jogo. É claro que não é para digitar nada no script Window_Base, apenas vamos trabalhar na sua "classe".Então digite na pagina ao lado do script que criamos:
Se você der uma vasculhada no próprio script Window_Base, verá varios métodos definidos, desde os graficos de char no menu até o nome do mesmo em tal opção, o que faremos é criar um novo método para poder inserir as faces em menus. Então digite abaixo do nosso script:
Aqui ja abrimos uma nova definição, agora só falta "explicar" o que esse método fará, como no caso queremos que ele desenhe faces no menu, digite.
O que foi feito aqui? Nós criamos um novo bitmap e ele estará localizado na pasta Pictures do seu projeto, onde as faces vão ser nomeadas como o nome do charset do herói respectivo mais o complemento "_face", em outros termos, a minha heroína Rena tem como charset 038-Mage06, então o grafico da face dela tem que ser nomeada como "038-Mage06_face" e deve estar localizada na pasta pictures.
Está pronto? Não, ainda falta mostrar como inserir essas imagens em um menu.Então digite:
Terminamos aqui de configurar nosso def, como sou iniciante em RGSS ainda, não posso explicar muito, mas vamos tentar. o CW e o CH vão identificar as dimensões do bitmap, ou seja, onde eu inserir esses valores CW e CH em algum lugar do código, equivale a inserir as dimensões da imagem.
O src_rect vai ser uma espécie de window imaginaria do bitmap, onde definimos os valores em: (x, y, largura, altura).
Enquanto o ultimo conjunto irá respectivamente ler: posição x do bitmap, posição y do bitmap, o nome do bitmap, a window imaginaria e a opacidade)
após tudo isso, o método e a classe devem ser finalizadas com um end cada uma, no caso, deve se inserir dois ends.
Rode o projeto e acesse menu: "mas não apareceu nada, wtf."
Isso por que apenas criamos um novo método para as faces, para que apareçam em algum menu no lugar de chars por exemplo, você deve "desenha-las", então o que fizemos respectivamente é explicar a window_base como desenhar essas faces. Copie e cole acima do main o script Window_menuStatus, esse abaixo:
#==============================================================================
# Window_MenuStatus
#------------------------------------------------------------------------------
# Exibe a janela do menu de Status
#==============================================================================
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Inicialização dos Objetos
#--------------------------------------------------------------------------
def initialize
super(0, 0, 480, 480)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# Atualização
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 64
y = i * 116
actor = $game_party.actors[i]
draw_actor_graphic(actor, x - 40, y + 80)
draw_actor_name(actor, x, y)
draw_actor_class(actor, x + 144, y)
draw_actor_level(actor, x, y + 32)
draw_actor_state(actor, x + 90, y + 32)
draw_actor_exp(actor, x, y + 64)
draw_actor_hp(actor, x + 236, y + 32)
draw_actor_sp(actor, x + 236, y + 64)
end
end
#--------------------------------------------------------------------------
# Renovação do Retângulo de Seleção
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
end
end
end
Na linha 34, você vai encontrar isso:
draw_actor_graphic(actor, x - 40, y + 80)
Substitua por isso aqui:
draw_actor_face(actor, x - 40, y + 80)
Agora a window_base irá desenhar as faces no lugar dos chars, rode novamente o maker e acesse o menu, se ficou como abaixo:
É claro que isso só foi uma maneira de explicar como inserir faces num menu, naturalmente com um pouco mais de estudos você possa inserir faces de maneira mais estilosa e mais avançada. E tambem, através de um método desses, possa tambem inserir em outros menus.
Espero ter ajudado
Iterashai!