Hama Deusa do Gelo
Número de Mensagens : 144 Idade : 31 Localização : Nha. Data de inscrição : 16/01/2009
| Assunto: Eternal Symphony Custom Menu. Qua Fev 18, 2009 11:02 pm | |
| Introdução:Versão de teste de um novo Menu, sendo criado pela equipe Eternal Symphony. Características:- Uso de apenas dois arquivos, no momento. - Fundo móvel, e na direção que você quiser usar. - Opções em baixo. Imagens:Scripts:Você precisa do módulo que gerencia, e dos Scripts de janela e Menu, que são esses três: Módulo: - Código:
-
#=============================================================================== #------===-----===-----===-----===-----===-----===-----===------===-----===----- # Módulo de gerenciamento de... Tudo, para o Eternal Symphony Custom Menu # Aqui a maioria das variáveis está alocada para ser movida. #------===-----===-----===-----===-----===-----===-----===------===-----===----- #===============================================================================
#------------------------------------------------------------------------------- # Módulo Cache. #------------------------------------------------------------------------------- module Cache
def self.menu(filename, hue) load_bitmap("Graphics/Menu/", filename, hue) end end
module EternalSCustomMenu #------------------------------------------------------------------------------- # Imagens de fundo e borda. #------------------------------------------------------------------------------- Fundo = "Background" Borda = "Foreground" VelFundoX = -1 VelFundoY = 2 end Janela: - Código:
-
#=============================================================================== #------===-----===-----===-----===-----===-----===-----===------===-----===----- # Janela de edição dos membros do Menu. para o Eternal Symphony Custom Menu # Nesta janela, é onde ficam os membros da equipe atual. #------===-----===-----===-----===-----===-----===-----===------===-----===----- #===============================================================================
class Window_EternalStatus < Window_Selectable #-------------------------------------------------------------------------- # Inicialização do objeto # x : coordenada X da janela # y : coordenada Y da janela #-------------------------------------------------------------------------- def initialize(x, y) super(x, y, 480, 288) refresh self.active = false self.index = -1 self.opacity = 0 end #-------------------------------------------------------------------------- # Atualização #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.members.size for actor in $game_party.members draw_actor_face(actor, 2 + 192 * (actor.index / 2), (actor.index % 2) * 115 + 2, 92) x = 192 * (actor.index / 2) y = (actor.index % 2) * 115 + WLH / 2 self.contents.font.size = 16 self.contents.font.bold = true draw_actor_name(actor, x + 100, y) draw_actor_level(actor, x + 100, y + WLH) draw_actor_state(actor, x, y + WLH * 2.5) #draw_actor_hp(actor, x + 120, y + WLH * 1) #draw_actor_mp(actor, x + 120, y + WLH * 2) end end #-------------------------------------------------------------------------- # Atualização do cursor #-------------------------------------------------------------------------- def update_cursor if @index < 0 # Sem cursor self.cursor_rect.empty elsif @index < @item_max # Padrão self.cursor_rect.set(192 * (@index / 2), (@index % 2) * 115, 192, 96) elsif @index >= 100 # Si self.cursor_rect.set(0, (@index - 100) * 96, 200, 96) else # O todo self.cursor_rect.set(0, 0, contents.width, @item_max * 96) end end end
Cena (Scene) - Código:
-
#=============================================================================== #------===-----===-----===-----===-----===-----===-----===------===-----===----- # Operação do Menu, para o Eternal Symphony Custom Menu. # Esta é a Scene_Menu, alterada especialmente para o Script. #------===-----===-----===-----===-----===-----===-----===------===-----===----- #===============================================================================
class Scene_Menu < Scene_Base #-------------------------------------------------------------------------- # Inicialização do objeto # menu_index : posição inicial do cursor #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index end #-------------------------------------------------------------------------- # Inicialização do processo #-------------------------------------------------------------------------- def start super create_menu_background create_command_window @gold_window = Window_Gold.new(300, 330) @gold_window.opacity = 0 @status_window = Window_EternalStatus.new(60, 50) @background = Plane.new @background.bitmap = Cache.menu(EternalSCustomMenu::Fundo, 0) @foreground = Sprite.new @foreground.bitmap = Cache.menu(EternalSCustomMenu::Borda, 0) end #-------------------------------------------------------------------------- # Fim do processo #-------------------------------------------------------------------------- def terminate super dispose_menu_background @background.dispose @foreground.dispose @command_window.dispose @gold_window.dispose @status_window.dispose end #-------------------------------------------------------------------------- # Atualização da tela #-------------------------------------------------------------------------- def update super update_menu_background @background.ox += EternalSCustomMenu::VelFundoX @background.oy += EternalSCustomMenu::VelFundoY @command_window.update @gold_window.update @status_window.update if @command_window.active update_command_selection elsif @status_window.active update_actor_selection end end #-------------------------------------------------------------------------- # Criação da janela de comandos #-------------------------------------------------------------------------- def create_command_window s1 = Vocab::item s2 = Vocab::skill s3 = Vocab::equip s4 = Vocab::status s5 = Vocab::save s6 = Vocab::game_end @command_window = Window_Command.new(544 - 120, [s1, s2, s3, s4, s5, s6], 3, 2, 16) @command_window.x = 60 @command_window.y = 400 - @command_window.height * 1.5 - 10 @command_window.opacity = 0 @command_window.index = @menu_index if $game_party.members.size == 0 # Se não houver membros na equipe @command_window.draw_item(0, false) # Desabilita "Items" @command_window.draw_item(1, false) # Desabilita "Habilidades" @command_window.draw_item(2, false) # Desabilita "Equipamentos" @command_window.draw_item(3, false) # Desabilita "Status" end if $game_system.save_disabled # Se salvar for proibido @command_window.draw_item(4, false) # Desabilita "Salvar" end end #-------------------------------------------------------------------------- # Atualização da escolha de comando #-------------------------------------------------------------------------- def update_command_selection if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) if $game_party.members.size == 0 and @command_window.index < 4 Sound.play_buzzer return elsif $game_system.save_disabled and @command_window.index == 4 Sound.play_buzzer return end Sound.play_decision case @command_window.index when 0 # Item $scene = Scene_Item.new when 1,2,3 # Habilidades, equipamento, status start_actor_selection when 4 # Salvar $scene = Scene_File.new(true, false, false) when 5 # Fim de jogo $scene = Scene_End.new end end end #-------------------------------------------------------------------------- # Início da seleção de herói #-------------------------------------------------------------------------- def start_actor_selection @command_window.active = false @status_window.active = true if $game_party.last_actor_index < @status_window.item_max @status_window.index = $game_party.last_actor_index else @status_window.index = 0 end end #-------------------------------------------------------------------------- # Fim da seleção de herói #-------------------------------------------------------------------------- def end_actor_selection @command_window.active = true @status_window.active = false @status_window.index = -1 end #-------------------------------------------------------------------------- # Atualização da seleção de herói #-------------------------------------------------------------------------- def update_actor_selection if Input.trigger?(Input::B) Sound.play_cancel end_actor_selection elsif Input.trigger?(Input::C) $game_party.last_actor_index = @status_window.index Sound.play_decision case @command_window.index when 1 # Habilidades $scene = Scene_Skill.new(@status_window.index) when 2 # Equipamento $scene = Scene_Equip.new(@status_window.index) when 3 # Status $scene = Scene_Status.new(@status_window.index) end end end end
Informação Adicional / Observações da Autora:Você precisa de duas imagens. Uma de borda, e uma de fundo. Você pode nomear como quiser, mas a borda deve ter a mesma dimensão de uma tela, e o fundo pode ter o tamanho que quiser também. Terá que criar uma pasta chamada "Menu", e colocar os dois arquivos dentro dela. É recomendável que a borda tenha transparência, já que o que tem atrás dela será um fundo que se move. Versão de Testes:Aqui, esta é uma versão de teste com os arquivos disponíveis. Alguma outra creditação?Apenas à equipe Eternal Symphony, que disponibilizou tudo que precisamos usar. Além do RTP, claro. | |
|
Maranguape
Número de Mensagens : 21 Idade : 29 Localização : Maranguape,Ceará,Brasil Data de inscrição : 16/01/2009
| Assunto: Re: Eternal Symphony Custom Menu. Qui Fev 19, 2009 3:46 pm | |
| Tá muito bom *o*,realmente eu gostei.o script é bem grande,mas posso esperar ele full. | |
|
Hama Deusa do Gelo
Número de Mensagens : 144 Idade : 31 Localização : Nha. Data de inscrição : 16/01/2009
| Assunto: Re: Eternal Symphony Custom Menu. Sex Fev 20, 2009 2:35 pm | |
| Não é grande não. A Scene_Menu é naturalmente grande.
Daí tem esse tamanho estranho.
Mas o AI-chan Custom Menu tinha um tamanho parecido. Ou maior. | |
|
Hama Deusa do Gelo
Número de Mensagens : 144 Idade : 31 Localização : Nha. Data de inscrição : 16/01/2009
| Assunto: Re: Eternal Symphony Custom Menu. Sáb Fev 21, 2009 12:19 pm | |
| Uma atualização que pode ser colocada é a escolha da fonte em cada janela. Isso eu preparei. Posso deixar, ou não. | |
|
Conteúdo patrocinado
| Assunto: Re: Eternal Symphony Custom Menu. | |
| |
|