| Assunto: Cross Menu Sex Ago 17, 2012 7:26 pm | |
| CROSS BASIC MENU Por Alex Crosslight
DESCRIÇÃO
O Menu é simples, sendo produzido apenas com recursos do RTP XP, seu layout é similar ao do jogo Legend of Legaia para PSone
AMOSTRAS DEMO Não precisa
INSTRUÇÕES Cole acima do main.
SCRIPT - Spoiler:
#============================================================================== # Cross Basic Menu XP #------------------------------------------------------------------------------ # Por Alex Crosslight #============================================================================== # # Esse script é um main menu simples desenvolvido utilizando apenas recursos do # do RTP XP. # # O menu tem um layout similar ao main menu do jogo Legend of Legaia para # para Psone. #==============================================================================
module Kurosuraito Background = "005-Sunset01" # Imagem de fundo, ela deve estar contida na # pasta "Graphics/Panoramas" do seu projeto.
end
#============================================================================== # Window_MenuStatus #------------------------------------------------------------------------------ # Exibe a janela do menu de Status #==============================================================================
class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # Inicialização dos Objetos #-------------------------------------------------------------------------- def initialize super(0, 0, 340, 415) 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 * 96 actor = $game_party.actors[i] draw_actor_graphic(actor, x - 40, y + 70) draw_actor_name(actor, x - 10, y) draw_actor_level(actor, x + 150, y) draw_actor_exp(actor, x - 10, y + 68) draw_actor_hp(actor, x - 10, y + 20) draw_actor_sp(actor, x - 10, y + 44) 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 * 96, self.width - 32, 96) end end end
class Window_partyinfo < Window_Base #-------------------------------------------------------------------------- # Inicialização dos Objetos #-------------------------------------------------------------------------- def initialize super(0, 0, 200, 100) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end #-------------------------------------------------------------------------- # Atualização #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(4, 10, 120, 24, $data_system.words.gold) self.contents.font.color = normal_color self.contents.draw_text(148, 10, 120, 24, $game_party.gold.to_s ) self.contents.font.color = system_color self.contents.draw_text(4, 40, 120, 24, "Tempo:") @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(40, 40, 120, 24, text, 2) end #-------------------------------------------------------------------------- # Renovação do Frame #-------------------------------------------------------------------------- def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end
#============================================================================== # Scene_Menu #------------------------------------------------------------------------------ # Essa classe processa a tela de menu #==============================================================================
class Scene_Menu #-------------------------------------------------------------------------- # Processamento Principal #-------------------------------------------------------------------------- def main # Criar janela de comandos s1 = "Inventário" s2 = "Magia" s3 = "Equipamentos" s4 = "Status" s5 = "Salvar" s6 = "Sair" @panorama = Sprite.new @panorama.bitmap = RPG::Cache.panorama(Kurosuraito::Background, 0) @command_window = Window_Command.new(200, [s1, s2, s3, s4, s5, s6]) @command_window.x = -500 @command_window.y = 35 @command_window.back_opacity = 160 @partyinfo = Window_partyinfo.new @partyinfo.x = 50 @partyinfo.y = 700 @partyinfo.back_opacity = 160 @status_window = Window_MenuStatus.new @status_window.x = 1000 @status_window.y = 35 @status_window.back_opacity = 160 # Se o número de membros do Grupo de Heróis for 0 if $game_party.actors.size == 0 # Desabilar as janelas de Item, Habilidades, Equipamento e Status @command_window.disable_item(0) @command_window.disable_item(1) @command_window.disable_item(2) @command_window.disable_item(3) end # Se Salvar for Proibido if $game_system.save_disabled # Desabilitar Salvar @command_window.disable_item(4) end # Executar transição Graphics.transition # Lopping principal loop do # Atualizar tela de jogo Graphics.update # Atualizar entrada de informações Input.update # Atualização do Frame update # Aboratar loop se a tela se modificar if $scene != self break end end # preparar para a transição Graphics.freeze # Exibição da janela @command_window.dispose @partyinfo.dispose @panorama.dispose @status_window.dispose # Se alternar para a Tela de Título if $scene.is_a?(Scene_Title) # Desaparecimento gradual da tela Graphics.transition Graphics.freeze end end #-------------------------------------------------------------------------- # Atualização do Frame #-------------------------------------------------------------------------- def update # Mover janelas @command_window.x += 100 @command_window.x = 50 if @command_window.x > 49 @partyinfo.y -= 100 @partyinfo.y = 350 if @partyinfo.y < 351 @status_window.x -= 100 @status_window.x = 250 if @status_window.x < 251 # Atualizar janela de comandos @command_window.update @partyinfo.update @panorama.update @status_window.update # Se a janela de comandos estiver ativo: chamar update_command if @command_window.active update_command return end # Se a janela de Status estiver ativa: call update_status if @status_window.active update_status return end end end
CRÉDITOS: - Crosslight, por criar - Android Maker, por disponibilizar aqui |
|