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

Taka Engine - Menu Horizontal (Atualizado 3.0)

Iniciado por Takkun, 11/07/2015 às 21:35

11/07/2015 às 21:35 Última edição: 12/07/2015 às 21:57 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.








Script:

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

Você sempre aparece com seus ótimos scripts, quando eu sempre quando estou precisando. Tava doido esses dias por um script bacana pro meu projeto. E olha o que me aparece.

A ideia dele é bem interessante. Já ví alguns scripts horizontais, e esse não é diferente. Tá bem legal, bom trabalho irmão :ok:
Prazer, Terror dos Modinha

12/07/2015 às 01:11 #2 Última edição: 12/07/2015 às 14:27 por Takkun



Código Atualizado! - Corrigido 2 Bug's que haviam.




Citação de: Makers online 11/07/2015 às 22:25
Você sempre aparece com seus ótimos scripts, quando eu sempre quando estou precisando. Tava doido esses dias por um script bacana pro meu projeto. E olha o que me aparece.

A ideia dele é bem interessante. Já ví alguns scripts horizontais, e esse não é diferente. Tá bem legal, bom trabalho irmão :ok:

Obrigado Makers!
Espero que ele seja de grande utilidade para você irmão.
Aquele abraço.

Takkun!-

Opa, agora com a correção tá ficando igual ao vídeo :=p: Posso fazer uma sugestão? Se for possível, por que não faz uma versão do mesmo só que mais comprimido.  Assim como o seu Taka Menu Plus, onde ele é bem menorzinho. Faça o menu menor só que ainda na horizontal. Mas é só uma sugestão...

Enfim. O script tá funcionando de buenas, só achei que seria melhor ( por gosto mesmo ) ter uma versão dele mais comprimido. Bom trabalho denovo :blink:
Prazer, Terror dos Modinha

12/07/2015 às 14:23 #4 Última edição: 12/07/2015 às 14:26 por Takkun



Atualização 2.0 - Nome dos comandos não ficam mais achatados.




Citação de: Makers online 12/07/2015 às 12:13
Opa, agora com a correção tá ficando igual ao vídeo :=p: Posso fazer uma sugestão? Se for possível, por que não faz uma versão do mesmo só que mais comprimido.  Assim como o seu Taka Menu Plus, onde ele é bem menorzinho. Faça o menu menor só que ainda na horizontal. Mas é só uma sugestão...

Enfim. O script tá funcionando de buenas, só achei que seria melhor ( por gosto mesmo ) ter uma versão dele mais comprimido. Bom trabalho denovo :blink:

Agora sim. 'haha
Sim irei desenvolver uma versão mais compacta do mesmo, mas ainda falta algumas coisinhas apra aprimorar, acabei de concertar mais um "erro" onde algumas opções da janela de comandos ficava meio achatada apenas diminui o tamanho de colunas na janela para ficar mais bonito.

Em breve trago a nova versão.
Abraço!-




Mais um BUG resolvido o uso do script causava um BUG na Scene Shop do RPG Maker VX Ace onde todas as informações sumiam.




O video ta fora do ar, teria como postar outro ou colocar algumas imagens.
Sistemas por eventos
Mercenário R



Participe do meu projeto
Regnis