O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Cross Basic Menu

Iniciado por Quasar, 31/12/2012 às 03:56

31/12/2012 às 03:56 Última edição: 20/01/2017 às 10:07 por King Gerar
CROSS BASIC MENU
Por Alex Crosslight

INTRODUÇÃO

Remoendo os diretórios do meu pc, encontrei esse script imcompleto que eu iria utilizar para minha inscrição no concurso semanal de Edição de Menu, e decidi termina-lo. XD

DESCRIÇÃO

O Menu é algo simples, sendo produzido apenas com recursos do RTP XP, seu layout é similar ao do jogo Legend of Legaia para PSone.

AMOSTRAS


DEMONSTRAÇÃO

Nem precisa =/

INSTRUÇÕES

Cole acima do main.

SCRIPT

#==============================================================================
# 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


AGRADECIMENTOS

Criado por Alexander Ernest Crosslight

Um belo script. Porém, acho que se o tópico estivesse mais organizado, teria mais visualizações. Enfim, espero poder usar isso algum dia, obigado por postar!  :clap:

Citação de: MakerOusado online 31/12/2012 às 09:41
Um belo script. Porém, acho que se o tópico estivesse mais organizado, teria mais visualizações. Enfim, espero poder usar isso algum dia, obigado por postar!  :clap:
mas está organizado, bom legal trazer os scripts do tio areksu para cá