🤔 Para Refletir : "Escrever para o seu jogo já começa nas mecânicas" - AbsoluteXandy

Taka Engine - Menu Horizontal (Atualizado 3.0) [VX Ace]

Membro Membro
Postagens
206
Bravecoins
148
j5Skogum3WjhO.png



Este e um script que permite a mudança do layout do menu. Toda a as janelas menu foram modificadas para se adentra no estilo Horizontal, gráficos de Windows, Fonte e Cores podem ser  modificadas no Modulo abaixo. O menu é de uso simples basta adiciona-ló acima do Menu do seu projeto. Pode gerar incompatibilidade com outros scripts que modifiquem o Menu. O mesmo pode ser usado de forma comercial ou não-comercial desde que os devidos créditos sejam apresentados a mim o criador do script.

Qualquer dúvida me procure nos fóruns de RPG Maker.



[youtube]http://www.youtube.com/watch?v=xrKXdE53T8I[/youtube]​



Script:

Código:
#===============================================================================
#                        Taka Engine - Menu Horizontal
#                                Por Takkun
#-------------------------------------------------------------------------------
# Este e um script que permite a mudança do layout do menu. Toda a as janelas
# menu foram modificadas para se adentra no estilo Horizontal, gráficos de
# Windows, Fonte e Cores podem ser  modificadas no Modulo abaixo. O menu é
# de uso simples basta adiciona-ló acima do Menu do seu projeto. Pode gerar
# incompatibilidade com outros scripts que modifiquem o Menu. O mesmo pode
# ser usado de forma comercial ou não-comercial desde que os devidos créditos
# sejam apresentados a mim o criador do script.
#
# Qualquer dúvida me procure nos fóruns de RPG Maker.
#===============================================================================
($imported ||= {})["Taka Engine - Menu Horizontal"] = true
#==============================================================================#
# ? Módulo de configuração do Script
#==============================================================================#
module TAKA
  module MENUHORIZONTAL
    #--------------------------------------------------------------------------#
    # ? Configurações
    #--------------------------------------------------------------------------#
    # Fonte que irá mostrar o nome dos Heróis.
    FONT_NAME = "Verdana" 
    # Tamanho da fonte que mostrará o nome dos Heróis
    FONT_NAME_SIZE = 18
    # Fonte que mostrará demais informações.
    # Ícone que será mostrada na janela de Gold.
    ICON_GOLD = 361
    # Ícone que será mostrada na janela de Exibição do nome do Mapa.
    ICON_MAPS = 231
    Font.default_name = TAKA::MENUHORIZONTAL::FONT_NAME
    Font.default_size = TAKA::MENUHORIZONTAL::FONT_NAME_SIZE
  end #MENU
end #TAKA
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
#  Esta é a superclasse para todas as janelas no jogo.
#==============================================================================
class Window_Base < Window
  #--------------------------------------------------------------------------
  # * Desenho dos atributos básicos 2
  #     actor : herói
  #     x     : coordenada X
  #     y     : coordenada Y
  #--------------------------------------------------------------------------
  def draw_actor_simple_status2(actor, x, y)
    draw_actor_name(actor, x - 105, y + 82)
    draw_actor_level(actor, x - 105, y + 98)
    draw_actor_icons(actor, x, y + line_height * 3)
    draw_actor_class(actor, x + 5, y)
    draw_actor_hp(actor, x + 5, y + line_height * 1)
    draw_actor_mp(actor, x + 5, y + line_height * 2)
  end
end
#==============================================================================
# ** Window_MenuStatus
#------------------------------------------------------------------------------
#  Esta janela exibe os parâmetros dos membros do grupo na tela de menu.
#==============================================================================
class Window_MenuStatus < Window_Selectable
  #--------------------------------------------------------------------------
  # * Variáveis públicas
  #--------------------------------------------------------------------------
  attr_reader   :pending_index            # Manter a posição (para organizar)
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #     x      : coordenada X
  #     y      : coordenada Y
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(x, y + 48, window_width, window_height)
    @pending_index = -1
    refresh
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width
  end
  #--------------------------------------------------------------------------
  # * Aquisição da altura da janela
  #--------------------------------------------------------------------------
  def window_height
    Graphics.height - 96
  end
  #--------------------------------------------------------------------------
  # * Aquisição do número máximo de itens
  #--------------------------------------------------------------------------
  def col_max
    return 2
  end
  #--------------------------------------------------------------------------
  # * Aquisição de altura do item
  #--------------------------------------------------------------------------
  def item_height
    (height - standard_padding * 4) / 2
  end
  #--------------------------------------------------------------------------
  # * Desenho de um item
  #     index : índice do item
  #--------------------------------------------------------------------------
  def draw_item(index)
    actor = $game_party.members[index]
    enabled = $game_party.battle_members.include?(actor)
    rect = item_rect(index)
    draw_item_background(index)
    draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
    draw_actor_simple_status2(actor, rect.x + 108, rect.y + line_height / 2)
  end
  #--------------------------------------------------------------------------
  # * Desenhar fundo do item
  #     index : índice do item
  #--------------------------------------------------------------------------
  def draw_item_background(index)
    if index == @pending_index
      contents.fill_rect(item_rect(index), pending_color)
    end
  end
  #--------------------------------------------------------------------------
  # * Definição de resultado ao pressionar o botão de confirmação
  #--------------------------------------------------------------------------
  def process_ok
    super
    $game_party.menu_actor = $game_party.members[index]
  end
  #--------------------------------------------------------------------------
  # * Retorno à seleção anterior
  #--------------------------------------------------------------------------
  def select_last
    select($game_party.menu_actor.index || 0)
  end
  #--------------------------------------------------------------------------
  # * Definição de última posição (para organizar)
  #--------------------------------------------------------------------------
  def pending_index=(index)
    last_pending_index = @pending_index
    @pending_index = index
    redraw_item(@pending_index)
    redraw_item(last_pending_index)
  end
end


#==============================================================================
# ** Window_MenuHorzCommand
#------------------------------------------------------------------------------
#  Esta janela exibe os comandos do menu na horizontal.
#==============================================================================
class Window_MenuHorzCommand < Window_HorzCommand
  #--------------------------------------------------------------------------
  # * Inicialização da posição do comando de seleção (método da classe)
  #--------------------------------------------------------------------------
  def self.init_command_position
    @@last_command_symbol = nil
  end
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0)
  end
  #--------------------------------------------------------------------------
  # * Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width
  end
  #--------------------------------------------------------------------------
  # * Aquisição do número de colunas
  #--------------------------------------------------------------------------
  def col_max
    return 5
  end  
  #--------------------------------------------------------------------------
  # * Aquisição do espaçamento entre os itens
  #--------------------------------------------------------------------------
  def spacing
    return -1
  end
  #--------------------------------------------------------------------------
  # * Criação da lista de comandos
  #--------------------------------------------------------------------------
  def make_command_list
    add_main_commands
    add_formation_command
    add_original_commands
    add_save_command
    add_game_end_command
  end
  #--------------------------------------------------------------------------
  # * Adição dos comandos principais
  #--------------------------------------------------------------------------
  def add_main_commands
    add_command(Vocab::item,   :item,   main_commands_enabled)
    add_command(Vocab::skill,  :skill,  main_commands_enabled)
    add_command(Vocab::equip,  :equip,  main_commands_enabled)
    add_command(Vocab::status, :status, main_commands_enabled)
  end
#--------------------------------------------------------------------------
  # * Adição do comando de formação
  #--------------------------------------------------------------------------
  def add_formation_command
    add_command(Vocab::formation, :formation, formation_enabled)
  end
  #--------------------------------------------------------------------------
  # * Adição de comandos próprios
  #--------------------------------------------------------------------------
  def add_original_commands
  end
  #--------------------------------------------------------------------------
  # * Adição do comando de salvar
  #--------------------------------------------------------------------------
  def add_save_command
    add_command(Vocab::save, :save, save_enabled)
  end
  #--------------------------------------------------------------------------
  # * Adição do comando de fim do jogo
  #--------------------------------------------------------------------------
  def add_game_end_command
    add_command(Vocab::game_end, :game_end)
  end
  #--------------------------------------------------------------------------
  # * Definição de habilitação dos comandos principais
  #--------------------------------------------------------------------------
  def main_commands_enabled
    $game_party.exists
  end
  #--------------------------------------------------------------------------
  # * Definição de habilitação do comando de formação
  #--------------------------------------------------------------------------
  def formation_enabled
    $game_party.members.size >= 2 && !$game_system.formation_disabled
  end
  #--------------------------------------------------------------------------
  # * Definição de habilitação do comando de salvar
  #--------------------------------------------------------------------------
  def save_enabled
    !$game_system.save_disabled
  end
  #--------------------------------------------------------------------------
  # * Definição de resultado ao pressionar o botão de confirmação
  #--------------------------------------------------------------------------
  def process_ok
    @@last_command_symbol = current_symbol
    super
  end
  #--------------------------------------------------------------------------
  # * Retorno à seleção anterior
  #--------------------------------------------------------------------------
  def select_last
    select_symbol(@@last_command_symbol)
  end
end
#==============================================================================
# ? Window_Gold
#==============================================================================
class Window_Gold2 < Window_Base
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, window_width, fitting_height(1))
    refresh
  end
  #--------------------------------------------------------------------------
  # ? Aquisição da largura da janela
  #--------------------------------------------------------------------------
  def window_width
    Graphics.width
  end
  #--------------------------------------------------------------------------
  # * Aquisição do valor em dinheiro
  #--------------------------------------------------------------------------
  def value
    $game_party.gold
  end
  #--------------------------------------------------------------------------
  # * Aquisição da unidade monetária
  #--------------------------------------------------------------------------
  def currency_unit
    Vocab::currency_unit
  end
  #--------------------------------------------------------------------------
  # * Abertura da janela
  #--------------------------------------------------------------------------
  def open
    refresh
    super
  end
  #--------------------------------------------------------------------------
  # ? Renovação
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    icon = draw_icon(TAKA::MENUHORIZONTAL::ICON_GOLD, 400, 0)
    icon = draw_icon(TAKA::MENUHORIZONTAL::ICON_MAPS, 0, 0)
    self.contents.font.name = TAKA::MENUHORIZONTAL::FONT_NAME
    self.contents.font.size = TAKA::MENUHORIZONTAL::FONT_NAME_SIZE
    draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)
    self.change_color(normal_color)
    draw_text(x + 35, y, width, line_height, $game_map.display_name)
  end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  Esta classe executa o processamento da tela de menu.
#==============================================================================
class Scene_Menu < Scene_MenuBase
  #--------------------------------------------------------------------------
  # * Criação da janela de comando
  #--------------------------------------------------------------------------
  def create_command_window
    @command_window = Window_MenuHorzCommand.new
    @command_window.set_handler(:item,      method(:command_item))
    @command_window.set_handler(:skill,     method(:command_personal))
    @command_window.set_handler(:equip,     method(:command_personal))
    @command_window.set_handler(:status,    method(:command_personal))
    @command_window.set_handler(:formation, method(:command_formation))
    @command_window.set_handler(:save,      method(:command_save))
    @command_window.set_handler(:game_end,  method(:command_game_end))
    @command_window.set_handler(:cancel,    method(:return_scene))
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de atributos
  #--------------------------------------------------------------------------
  def create_status_window
    @status_window = Window_MenuStatus.new(0, 0)
  end
  #--------------------------------------------------------------------------
  # * Criação da janela de dinheiro
  #--------------------------------------------------------------------------
  def create_gold_window
    @gold2_window = Window_Gold2.new
    @gold2_window.x = 0
    @gold2_window.y = Graphics.height - @gold2_window.height
  end
end



Créditos: Takkun.
 
O menu fica bem legal neste estilo, o único ruim é que as palavras ficam bem estreitas para caber no espaço das opções.

Talvez eu o utilize no meu projeto para o IGMC haha
 
Atualização 2.0 - Nome dos comandos não ficam mais achatados.



RyanKamos comentou:
O menu fica bem legal neste estilo, o único ruim é que as palavras ficam bem estreitas para caber no espaço das opções.

Talvez eu o utilize no meu projeto para o IGMC haha

Obrigado Ryan, acabei de adicionar uma nova versão agora os textos não ficam mais achatados eu apenas diminui o tamanho das colunas na janela para ficar mais bonita e clean.

Estarei utilizando ele também ou possivelmente a versão mais compacta que estou criando. 'haha

Abraços!-
 
Bem organizadinho, esse lance do scroll deu um charme a mais. O que eu acho que ficaria legal deixar em scripts de menus é a possibilidade de um background customizável. Como sempre, parabéns Takkun!  :Okay_fix:
 
Voltar
Topo