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

XS - Menu Delux

Iniciado por Musphelhein, 09/01/2013 às 10:39


Menu Delux
Por Nicke

[box class=catbg2]Utilidade[/box]
Muda o funcionamento do menu.

[box class=catbg2]Características[/box]
► Fácil customização da fonte, ícones e janela;
► Adicione fundos estáticos ou animados;
► Adicione ou remova informações do menu;
► Escolha uma BGM para ser tocada no menu;

[box class=catbg2]Instalação[/box]
Insira o código na área destinada aos "Scripts Adicionais" no RPG Maker VX Ace.

[box class=catbg2]Instruções de Uso[/box]
As definições de customização se encontram no código. É necessário o XS- Core, que se encontra logo abaixo.

[box class=catbg2]Código em Funcionamento[/box]


[box class=catbg2]Códigos[/box]
Código: XS - Core
#==============================================================================
#   XaiL System - Core
#   Author: Nicke
#   Created: 07/01/2012
#   Edited: 03/01/2013
#   Version: 2.1c
#==============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ? Materials but above ? Main. Remember to save.
#
# Core script for XaiL System.
# Caution! This needs to be located before any other XS scripts.
#
# *** Only for RPG Maker VX Ace. ***
#==============================================================================
($imported ||= {})["XAIL-XS-CORE"] = true

module Colors
  #--------------------------------------------------------------------------#
  # * Colors
  #--------------------------------------------------------------------------#
  White = Color.new(255,255,255)
  LightRed = Color.new(255,150,150)
  LightGreen = Color.new(150,255,150)
  LightBlue = Color.new(150,150,255)
  DarkYellow = Color.new(225,225,20)
  Alpha = Color.new(0,0,0,128)
  AlphaMenu = 100
end
module XAIL
  module CORE
  #--------------------------------------------------------------------------#
  # * Settings
  #--------------------------------------------------------------------------#
  # Graphics.resize_screen(width, height ) 
  Graphics.resize_screen(544, 416) 
  
  # FONT DEFAULTS:
  Font.default_name = ["VL Gothic"]
  Font.default_size = 20
  Font.default_bold = false
  Font.default_italic = false
  Font.default_shadow = true
  Font.default_outline = true
  Font.default_color = Colors::White
  Font.default_out_color = Colors::Alpha
  
  # USE_TONE = true/false:
  # Window tone for all windows ingame. Default: true.
  USE_TONE = false
  
  # SAVE
  SAVE_MAX = 20       # Default 16.
  SAVE_FILE_VIS = 4   # Default 4.
  
  end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** String
#==============================================================================#
class String
  
  def to_class(parent = Kernel)
    # // Method to convert string to class.
    chain = self.split "::"
    klass = parent.const_get chain.shift
    return chain.size < 1 ? (klass.is_a?(Class) ? klass : nil) : chain.join("::").to_class(klass)
    rescue
    nil
  end
  
  def cap_words
    # // Method to capitalize every word.
    self.split(' ').map {|w| w.capitalize }.join(' ')
  end
  
  def slice_char(char)
    # // Method to slice char.
    self.split(char).map {|w| w.sub(char, " ") }.join(" ")
  end

end
#==============================================================================#
# ** Vocab
#==============================================================================#
class << Vocab
  
  def xparam(id)
    # // Method to return xparam name.
    case id
    when 0 ; "Hit Chance"
    when 1 ; "Evasion"
    when 2 ; "Critical Chance"
    when 3 ; "Critical Evasion"
    when 4 ; "Magic Evasion"
    when 5 ; "Magic Reflection"
    when 6 ; "Counter Attack"
    when 7 ; "HP Regeneration"
    when 8 ; "MP Regeneration"
    when 9 ; "TP Regeneration"
    end
  end
  
end
#==============================================================================
# ** Sound
#==============================================================================
class << Sound
  
  def play(name, volume, pitch, type = :se)
    # // Method to play a sound. If specified name isn't valid throw an error.
    case type
    when :se   ; RPG::SE.new(name, volume, pitch).play rescue valid?(name)
    when :me   ; RPG::ME.new(name, volume, pitch).play rescue valid?(name)
    when :bgm  ; RPG::BGM.new(name, volume, pitch).play rescue valid?(name)
    when :bgs  ; RPG::BGS.new(name, volume, pitch).play rescue valid?(name)
    end
  end
  
  def valid?(name)
    # // Method to raise error if specified sound name is invalid.
    msgbox("Error. Unable to find sound file: " + name)
    exit 
  end
  
end
#==============================================================================
# ** DataManager
#==============================================================================
class << DataManager

  def savefile_max
    # // Method override, save file max.
    return XAIL::CORE::SAVE_MAX
  end
  
end
#==============================================================================
# ** DataManager
#==============================================================================
class << SceneManager
  
  def call_ext(scene_class, args = nil)
    # // Method to call a scene with arguments.
    @stack.push(@scene)
    @scene = scene_class.new(args)
  end
  
end
#==============================================================================
# ** Scene_File
#==============================================================================
class Scene_File < Scene_MenuBase
  
  def visible_max
    # // Method override, visible_max for save files.
    return XAIL::CORE::SAVE_FILE_VIS
  end
  
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# Importing font fix that will remove weird characters.
# Adding new methods such as new gauge, actor param, font text, icon drawing,
# big icon drawing and a line with a shadow.
#==============================================================================
class Window_Base < Window
  
  # // Importing Custom font fix. (Credit Lone Wolf).
  alias :process_normal_character_vxa :process_normal_character
  def process_normal_character(c, pos)
    return unless c >= ' '
    process_normal_character_vxa(c, pos)
  end unless method_defined? :process_normal_character
  
  def draw_text_ex_no_reset(x, y, text)
    # // Method to draw ex text without resetting the font.
    text = convert_escape_characters(text)
    pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
    process_character(text.slice!(0, 1), text, pos) until text.empty?
  end 
  
  alias xail_core_winbase_upt_tone update_tone
  def update_tone(*args, &block)
    # // Method to change tone of the window.
    return unless XAIL::CORE::USE_TONE
    xail_core_winbase_upt_tone(*args, &block)
  end
  
  def draw_gauge_ex(x, y, width, height, rate, color1, color2)
    # // Method to draw a gauge.
    fill_w = (width * rate).to_i
    gauge_y = y + line_height - 8
    contents.fill_rect(x, gauge_y, width + 1, height + 1, Color.new(255,255,255,64))
    contents.fill_rect(x, gauge_y, width, height, Color.new(0,0,0,100))
    contents.gradient_fill_rect(x, gauge_y, fill_w, height, color1, color2)
  end
  
  def draw_actor_param_gauge(actor, x, y, width, param_id, font, size, bar_color1, bar_color2, txt_color1, txt_color2)
    # // Method to draw actor parameters with a gauge.
    case param_id
    when 2 ; param_rate = actor.param(2) / actor.param_max(2).to_f
    when 3 ; param_rate = actor.param(3) / actor.param_max(3).to_f
    when 4 ; param_rate = actor.param(4) / actor.param_max(4).to_f
    when 5 ; param_rate = actor.param(5) / actor.param_max(5).to_f
    when 6 ; param_rate = actor.param(6) / actor.param_max(6).to_f
    when 7 ; param_rate = actor.param(7) / actor.param_max(7).to_f
    end
    contents.font.name = font
    contents.font.size = size
    contents.font.bold = true
    contents.font.shadow = false
    draw_gauge_ex(x, y - 14, width, 20, param_rate, bar_color1, bar_color2)
    contents.font.color = txt_color1
    draw_text(x + 10, y, 120, line_height, Vocab::param(param_id))
    contents.font.color = txt_color2
    draw_text(x + width - 38, y, 36, line_height, actor.param(param_id), 2)
    reset_font_settings
  end
  
  def draw_actor_xparam_gauge(actor, x, y, width, xparam_id, font, size, bar_color1, bar_color2, txt_color1, txt_color2)
    # // Method to draw actor xparameters with a gauge.
    case xparam_id
    when 0
      xparam_rate = actor.xparam(0) / 100.to_f
      xparam_name = Vocab.xparam(0)
    when 1
      xparam_rate = actor.xparam(1) / 100.to_f
      xparam_name = Vocab.xparam(1)
    when 2
      xparam_rate = actor.xparam(2) / 100.to_f
      xparam_name = Vocab.xparam(2)
    when 3
      xparam_rate = actor.xparam(3) / 100.to_f
      xparam_name = Vocab.xparam(3)
    when 4
      xparam_rate = actor.xparam(4) / 100.to_f
      xparam_name = Vocab.xparam(4)
    when 5
      xparam_rate = actor.xparam(5) / 100.to_f
      xparam_name = Vocab.xparam(5)
    when 6
      xparam_rate = actor.xparam(6) / 100.to_f
      xparam_name = Vocab.xparam(6)
    when 7
      xparam_rate = actor.xparam(7) / 100.to_f
      xparam_name = Vocab.xparam(7)
    when 8
      xparam_rate = actor.xparam(8) / 100.to_f
      xparam_name = Vocab.xparam(8)
    when 9
      xparam_rate = actor.xparam(9) / 100.to_f
      xparam_name = Vocab.xparam(9)
    end
    contents.font.name = font
    contents.font.size = size
    contents.font.bold = true
    contents.font.shadow = false
    draw_gauge_ex(x, y - 14, width, 20, xparam_rate, bar_color1, bar_color2)
    contents.font.color = txt_color1
    draw_text(x + 10, y, 120, line_height, xparam_name)
    contents.font.color = txt_color2
    draw_text(x + width - 38, y, 36, line_height, "#{actor.xparam(xparam_id)}%", 2)
    reset_font_settings 
  end
  
  def draw_line_ex(x, y, color, shadow)
    # // Method to draw a line with a shadow.
    line_y = y + line_height / 2 - 1
    contents.fill_rect(x, line_y, contents_width, 2, color)
    line_y += 1
    contents.fill_rect(x, line_y, contents_width, 2, shadow)
  end
  
  def draw_icons(icons, alignment, x = 0, y = 0, offset_icon = [])
    # // Method to draw icons in a horizonal or vertical alignment.
    for i in icons
      # // If included in offset do extra line_height.
      for o in offset_icon
        if i == o
          y += line_height * 1 if alignment == :vertical
          x += line_height * 1 if alignment == :horizontal
        end
      end
      draw_icon(i.nil? ? nil : i, x.nil? ? 0 : x, y.nil? ? 0 : y) rescue nil
      y += line_height if alignment == :vertical
      x += line_height if alignment == :horizontal
      next if i.nil?
    end
  end
  
  def draw_big_icon(icon, x, y, width, height, opacity = 255)
    # // Method to draw a big icon.
    bitmap = Cache.system("Iconset")
    rect = Rect.new(icon % 16 * 24, icon / 16 * 24, 24, 24)
    rect2 = Rect.new(x, y, width, height)
    contents.stretch_blt(rect2, bitmap, rect, opacity)
  end
  
  def draw_font_text(text, x, y, width, alignment, font, size, color, bold = true, shadow = true)
    # // Method to draw font text.
    contents.font.name = font
    contents.font.size = size
    contents.font.color = color
    contents.font.bold = bold
    contents.font.shadow = shadow
    contents.font.out_color = Color.new(0,0,0,255)
    draw_text(x, y, width, calc_line_height(text), text, alignment)
    reset_font_settings
  end
  
  def draw_font_text_ex(text, x, y, font, size, color, bold = true, shadow = true)
    # // Method todraw font text. (Special)
    contents.font.name = font
    contents.font.size = size
    contents.font.color = color
    contents.font.bold = bold
    contents.font.shadow = shadow
    contents.font.out_color = Color.new(0,0,0,255)
    text = convert_escape_characters(text)
    pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
    process_character(text.slice!(0, 1), text, pos) until text.empty?
    reset_font_settings
  end
  
end
#==============================================================================#
# ** Window_Selectable
#------------------------------------------------------------------------------
#  Adding support for pageleft and pageright for window selectable.
#==============================================================================#
class Window_Selectable < Window_Base
  
  def cursor_pageright ; end
  def cursor_pageleft ; end

  alias xail_core_winselect_process_cursor_move process_cursor_move
  def process_cursor_move(*args, &block)
    # // Method to process cursor movement.
    xail_core_winselect_process_cursor_move(*args, &block)
    cursor_pageright if !handle?(:pageright) && Input.trigger?(:RIGHT)
    cursor_pageright if !handle?(:pageleft) && Input.trigger?(:LEFT)
  end
  
  alias xail_core_winselect_process_handling process_handling
  def process_handling(*args, &block)
    # // Method to process handling.
    xail_core_winselect_process_handling(*args, &block)
    return process_pageright if handle?(:pageright) && Input.trigger?(:RIGHT)
    return process_pageleft if handle?(:pageleft) && Input.trigger?(:LEFT)
  end
    
  def process_pageright
    # // Method to process page right.
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:pageright)
  end
  
  def process_pageleft
    # // Method to process page left.
    Sound.play_cursor
    Input.update
    deactivate
    call_handler(:pageleft)
  end
  
end
#==============================================================================#
# ** Window_Icon
#------------------------------------------------------------------------------
#  New Window :: Window_Icon - A window for drawing icon(s).
#==============================================================================#
class Window_Icon < Window_Base
  
  attr_accessor :enabled
  attr_accessor :alignment
  
  def initialize(x, y, window_width, hsize)
    # // Method to initialize the icon window.
    super(0, 0, window_width, window_height(hsize))
    @icons = []
    @index = 0
    @enabled = true
    @alignment = 0
    refresh
  end
  
  def window_height(hsize)
    # // Method to return the height.
    fitting_height(hsize)
  end
  
  def refresh
    # // Method to refresh the icon window.
    contents.clear
  end
  
  def draw_cmd_icons(icons, index)
    # // Draw all of the icons.
    return if !@enabled
    count = 0
    for i in icons
      align = 0
      x = 110
      next if i[index].nil?
      case @alignment
      when 1, 2 ; align = -110
      end
      draw_icon(i[index], x + align, 24 * count)
      count += 1
      break if (24 * count > height - 24)
    end
  end
  
end
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# Adding check item method to return a item based on the type.
#==============================================================================
class Game_Party < Game_Unit
  
  def check_item?(item, type)
    # // Method to return a item based on the type.
    case type
    when :item    ; item = $data_items[item]
    when :weapon  ; item = $data_weapons[item]
    when :armor   ; item = $data_armors[item]
    end
  end

end 
#==============================================================================
# ** Game_Event
#------------------------------------------------------------------------------
# Adding methods to check for comments on events.
#==============================================================================
class Game_Event < Game_Character
  
  def comment?(comment)
    # // Method to check if comment is included in event.
    unless empty? or @list.nil?
      for evt in @list
        if evt.code == 108 or evt.code == 408
          if evt.parameters[0].include?(comment)
            return true
          end
        end
      end
    end
    return false
  end
  
  def comment_int?(comment)
    # // Method to check variable integer in event.
    unless empty? or @list.nil?
      for evt in @list
        if evt.code == 108 or evt.code == 408
          if evt.parameters[0] =~ /<#{comment}:[ ]?(\d*)>?/
            return ($1.to_i > 0 ? $1.to_i : 0)
          end
        end
      end
    end
  end

end # END OF FILE

#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#

Código: Menu Delux
#==============================================================================
#   XaiL System - Menu Delux
#   Author: Nicke
#   Created: 20/11/2012
#   Edited: 28/11/2012
#   Version: 1.0d
#==============================================================================
# ☻ Utilidade ☻
#Muda o funcionamento do Menu.
#==============================================================================
# ☻ Instruções ☻
#Insira esse script no espaço de "Scripts Adicionais" do RPG Maker VX Ace. 
#==============================================================================
# ☻ Requisitos ☻
#XS - Core Script.
#==============================================================================
($imported ||= {})["XAIL-XS-MENU_DELUX"] = true

module XAIL
  module MENU_DELUX
    #--------------------------------------------------------------------------#
    # * Definições
    #--------------------------------------------------------------------------#
    # Fonte no Menu
    # MENU_FONT = [nome, tamanho, cor, negrito, sombra]
    MENU_FONT = [["Calibri", "Verdana"], 18, Color.new(255,255,255), true, true]
    
    # Janela do Menu
    # MENU_WINDOW [x, y, z, opacdidade]
    MENU_WINDOW = [-12, -12, 200, 0]
    
    # Janela de Status
    # STATUS_WINDOW [x, y, z, opacidade]
    STATUS_WINDOW = [142, -4, 200, 0]
    
    # Janela de Detalhes
    # DETAILS_WINDOW [x, y, z, opacidade]
    DETAILS_WINDOW = [380, -10, 200, 0]
    
    # Janela de Tempo de Jogo
    # PLAYTIME_WINDOW [x, y, z, opacidade, icone, habilidade]
    PLAYTIME_WINDOW = [430, 348, 200, 0, 280, true]
    
    # Janela de Ajuda
    # Setup help window.
    # HELP = [x, y, z, opacidade, habilitado]
    HELP_WINDOW = [-6, 352, 200, 0, true]
    
    # Alinhamento do Menu
    # MENU_ALIGNMENT = 0 (esquerda), 1 (centro), 2 (direita)
    MENU_ALIGNMENT = 0 # Default: 2.
    
    # Menu Windowskin
    # Defina a windowskin do menu, nil para nenhuma.
    # MENU_SKIN = string
    MENU_SKIN = nil
    
    # MENU_LIST: 
    # nome, icon_index and customizar são opcionais.
    # Se o nome estiver vazio, será usado o icone correspondente.
    # Para usar um evento comum é necessário definir o id do mesmo abaixo.
    # simbolo => [nome, descrição, icon_index, habilitado, pessoal, customizar]
    MENU_LIST = {
      :item      => ["", "Navegue através dos itens que você adquiriu.", 4148, true, false],
      :equip     => ["Equipamentos", "Mude seus equipamentos.", 4145, true, true],
      :skill     => ["Habilidade", "Administre suas habilidades.", 4147, true, true],
      :status    => ["Status", "Veja o status atual do herói.", 4136, true, true],
      :formation => ["Formação", "Mude a formação do grupo.", 4134, true, false],
      :save      => ["Salvar", "Salve sua jornada.", 4139, true, false],
      :load      => ["Carregar", "Carregue jornada salva.", 4165, true, false, Scene_Load],
      :game_end  => ["Sair", "Sair para o Windows.", 4162, true, false],
      :title     => ["Tela Inicial", "Retornar à Tela Inicial.", 4133, true, false, Scene_Title],
      :event_1   => ["Acampar", "Liga o evento comum.", 728, true, false, 1]
    } # Don't remove this line!
    
    # MENU_SAVE = true/false
    # Override enabled option for save (so you can change it ingame).
    MENU_SAVE = true
    
    # If MENU_CUSTOM is true you will have to add the commands yourself
    # ingame, which can be useful for certain quest related stuff or if you
    # want to enable/disable menu commands.
    # To add/remove a command ingame follow these instructions:
    # 
    # In a script call do like this:
    # menu_scene(key, type)
    # menu_scene(:item,:add) # To add item to menu list.
    # menu_scene(:item,:del) # To remove item from menu list.
    #
    # In a conditional branch you can check if a menu command is 
    # enabled/disabled:
    # menu_active?(key) 
    # menu_active?(:item) # Check if item is enabled.
    # !menu_active?(:item) # Check if item is disabled.
    #
    # To set a id to be enabled do like this:
    # menu_active(:skill, true) # Set menu skill to be enabled.
    #
    # To add/remove all available menu commands use one of the 
    # following methods in a script call:
    # menu_add_all
    # menu_del_all
    #
    # MENU_CUSTOM = true/false
    MENU_CUSTOM = false
    
    # Esse texto é mostrado se o menu de itens não estiver habilitado.
    # Apenas usado se o MENU_CUSTOM for true.
    # MENU_EMPTY = string
    EMPTY = "Menu não está habilidado nesse ponto..."
    
    # Música no Menu
    # Defina música a ser tocada no meni.
    # MUSIC = true/false
    MUSIC = true
    # MUSIC_BGM = [nome, volume, tom]
    MUSIC_BGM = ["Theme4", 70, 100]
    # BGS = [nome, volume, tom]
    MUSIC_BGS = ["Darkness", 50, 100]
    
    # Lista de animação
    # Lista com imagens para animação
    # name  =>  [z, zoom_x, zoom_y, blend_type, opacidade]
    ANIM_LIST = {
      "Menu_Fog1"   => [1, 1.2, 1.2, 1, 125],
      "Menu_Fog2"   => [1, 1.8, 1.8, 1, 155]
    } 
    
    # Fundo
    # nome => [x, y, z, opacidade]
    BACKGROUND = {
      "Menu_Back" => [0, 0, 4, 255]
    } 
    
    # Cor da barra = rgba(255,255,255,255)
    # Defina a cor.
    BAR_HP = [Color.new(205,50,50,65), Color.new(235,75,75,185)]
    BAR_MP = [Color.new(50,50,205,65), Color.new(75,75,235,185)]
    BAR_TP = [Color.new(50,205,50,65), Color.new(75,235,75,185)]
    
 
    def self.details
      ["#{Vocab::currency_unit}: #{$game_party.gold}",
      "Passos: #{$game_party.steps}",
      "Itens Coletados: #{$game_party.all_items.size}",
      "Mapa: #{$game_map.name}",
      "Líder: #{$game_party.leader.name}",
      "Batalhas: #{$game_system.battle_count}",
      "Jornada Salva: #{$game_system.save_count}",
      "Variavel I: #{$game_variables[1]}",
      "Variavel II: #{$game_variables[2]}"]
    end
    
    # Icones
    # DETAILS_ICONS[id] = icon_id
    # Defina o id do icone (opcional)
    # Should be in the same order as details.
    # Defina nil para disabilitar o icone.  
     DETAILS_ICONS = []
    DETAILS_ICONS[0] = 2114 # Ouro
    DETAILS_ICONS[1] = 172  # Passos
    DETAILS_ICONS[2] = 270  # Itens
    DETAILS_ICONS[3] = 232  # Mapa
    DETAILS_ICONS[4] = 4425 # Líder
    DETAILS_ICONS[5] = 115  # Contador de Batalhas
    DETAILS_ICONS[6] = 224  # Contador de Jogos Salvos
    DETAILS_ICONS[7] = nil  # VAR 1
    DETAILS_ICONS[8] = nil  # VAR 2
    
    # Transição, nil para padrão
    # TRANSITION [velocidade, transição, opacidade]
    TRANSITION = nil
    
  end
end
# *** Don't edit below unless you know what you are doing. ***
#==============================================================================#
# ** Error Handler
#==============================================================================#
  unless $imported["XAIL-XS-CORE"]
    # // Error handler when XS - Core is not installed.
    msg = "The script %s requires the latest version of XS - Core in order to function properly."
    name = "XS - Menu Delux"
    msgbox(sprintf(msg, name))
    exit
  end
#==============================================================================#
# ** Game_System
#==============================================================================#
class Game_System
  
  attr_accessor :menu_list
  
  alias xail_menu_delux_gm_sys_initialize initialize
  def initialize(*args, &block)
    # // Method to initialize game system.
    xail_menu_delux_gm_sys_initialize(*args, &block)
    @menu_list = {}
  end
  
  def get_menu
    # // Method to get the menu list.
    XAIL::MENU_DELUX::MENU_CUSTOM ? @menu_list : XAIL::MENU_DELUX::MENU_LIST
  end
  
end
#==============================================================================#
# ** Game_Interpreter
#==============================================================================#
class Game_Interpreter
  
  def menu_scene(key, type = :add)  
    # // Method to add/remove a menu item to the list.
    case type
      when :add # // Add menu id.
       unless $game_system.menu_list.include?(XAIL::MENU_DELUX::MENU_LIST[key])
         $game_system.menu_list[key] = XAIL::MENU_DELUX::MENU_LIST[key]           
       end unless XAIL::MENU_DELUX::MENU_LIST[key].nil?
      when :del # // Remove menu id.
      unless XAIL::MENU_DELUX::MENU_LIST[key].nil?
        $game_system.menu_list.delete(key)
      end
    end
  end
  
  def menu_active?(key)
    # // Method to check if menu key is enabled.
    # This will return nil if menu item not added in the list.
    return $game_system.menu_list[key][3] rescue nil
  end
  
  def menu_active(key, enabled)
    # // Method to enable id.
    $game_system.menu_list[id][3] = enabled
  end
  
  def menu_add_all
    # // Method to add all available menu items.
    XAIL::MENU_DELUX::MENU_LIST.each {|key| menu_scene(key) }
  end
  
  def menu_del_all
    # // Method to remove all available menu items.
    XAIL::MENU_DELUX::MENU_LIST.each {|key| menu_scene(key, :del) }
  end

end
#==============================================================================#
# ** Game_Map
#==============================================================================#
class Game_Map
  
  attr_reader :name
  
  alias xail_menu_delux_setup setup
  def setup(map_id)
    # // Method to setup the map id.
    xail_menu_delux_setup(map_id)
    @name = $data_mapinfos[@map_id].name
  end
  
end
#==============================================================================
# ** Window_MenuCommand
#==============================================================================
class Window_MenuCommand < Window_Command
  
  def window_width
    # // Method to return the width of MENU_WINDOW.
    return 170
  end
  
  def alignment
    # // Method to return the alignment.
    return XAIL::MENU_DELUX::MENU_ALIGNMENT
  end
  
  def menu_color(color, enabled = true)
     # // Method to set the color and alpha if not enabled.
    contents.font.color.set(color)
    contents.font.color.alpha = Colors::AlphaMenu unless enabled
  end
  
  def item_rect_for_text(index)
    # // Method to draw item rect for text.
    rect = item_rect(index)
    contents.fill_rect(rect.x, rect.y, contents_width, contents_height, Color.new(0,0,0,60))
    rect.x += 24
    rect.width -= 8
    draw_icon(XAIL::MENU_DELUX::MENU_LIST.values[index][2], -2, rect.y) unless XAIL::MENU_DELUX::MENU_LIST.values[index][2].nil?
    rect
  end
  
  def draw_item(index)
    # // Method to draw the command item.
    contents.font.name = XAIL::MENU_DELUX::MENU_FONT[0]
    contents.font.size = XAIL::MENU_DELUX::MENU_FONT[1]
    # // Save option.
    XAIL::MENU_DELUX::MENU_LIST[:save][3] = save_enabled if XAIL::MENU_DELUX::MENU_SAVE
    menu_color(XAIL::MENU_DELUX::MENU_FONT[2], menu_enabled?(index))
    # // Font settings
    contents.font.bold = XAIL::MENU_DELUX::MENU_FONT[3]
    contents.font.shadow = XAIL::MENU_DELUX::MENU_FONT[4]
    draw_text(item_rect_for_text(index), command_name(index), alignment)
    reset_font_settings
  end
  
  def menu_enabled?(index)
    # // Method to check if menu item is enabled.
    return $game_system.get_menu.values[index][3]
  end
  
  def make_command_list
    # // Method to add the commands.
    $game_system.get_menu.each {|key, value|
      name = value[0] == "" ? key.id2name.capitalize : value[0]
      XAIL::MENU_DELUX::MENU_LIST[:save][3] = save_enabled if XAIL::MENU_DELUX::MENU_SAVE
      add_command(name, key, value[3], value[5].nil? ? nil : value[5])
    }
  end

end
#==============================================================================
# ** Window_MenuStatus
#==============================================================================
class Window_MenuStatus < Window_Selectable
  
  def window_width
    # // Method to determine window width.
    return 250
  end

  def window_height
    # // Method to determine window height.
    return Graphics.height
  end
  
  def standard_padding
    # // Method to determine standard padding.
    return 4
  end
  
  def col_max
    # // Method to determine col max.
    return 2
  end

  def spacing
    # // Method to determine spacing.
    return 30
  end
  
  def item_width
    # // Method to determine item width.
    return 98
  end

  def item_height
    # // Method to determine item height.
    return 128
  end
  
  def refresh
    # // Method to refresh the window.
    contents.clear
    draw_background
    draw_all_items
  end
  
  def draw_background
    # // Method to draw background.
    contents.fill_rect(0, 0, contents_width, contents_height, Color.new(0,0,0,60))
  end

  def draw_item(index)
    # // Method to draw item.
    actor = $game_party.members[index]
    rect = item_rect(index)
    draw_item_background(index)
    # // Face
    draw_actor_face(actor, rect.x + 1, rect.y + 1, true)
    # // Name
    draw_font_text(actor.name, rect.x + 4, rect.y, rect.width, 0, XAIL::MENU_DELUX::MENU_FONT[0], 20, XAIL::MENU_DELUX::MENU_FONT[2])
    # // Level
    lvl = "#{Vocab::level_a} #{actor.level}"
    draw_font_text(lvl, rect.x + 4, rect.y + 64, rect.width, 0, XAIL::MENU_DELUX::MENU_FONT[0], 16, XAIL::MENU_DELUX::MENU_FONT[2])
    # // Class
    draw_font_text(actor.class.name, rect.x - 4, rect.y + 76, rect.width, 2, XAIL::MENU_DELUX::MENU_FONT[0], 16, XAIL::MENU_DELUX::MENU_FONT[2])
    # // Stats
    draw_menu_stats(actor, :hp, rect.x, rect.y + 90, XAIL::MENU_DELUX::BAR_HP[0], XAIL::MENU_DELUX::BAR_HP[1], rect.width - 2)
    draw_menu_stats(actor, :mp, rect.x, rect.y + 100, XAIL::MENU_DELUX::BAR_MP[0], XAIL::MENU_DELUX::BAR_MP[1], rect.width - 2)
    draw_menu_stats(actor, :tp, rect.x, rect.y + 110, XAIL::MENU_DELUX::BAR_TP[0], XAIL::MENU_DELUX::BAR_TP[1], rect.width - 2)
  end
  
  def draw_menu_stats(actor, stat, x, y, color1, color2, width)
    # // Method to draw actor hp & mp.
    case stat
    when :hp
      rate = actor.hp_rate ; vocab = Vocab::hp_a ; values = [actor.hp, actor.mhp]
    when :mp
      rate = actor.mp_rate ; vocab = Vocab::mp_a ; values = [actor.mp, actor.mmp]
    when :tp
      rate = actor.tp_rate ; vocab = Vocab::tp_a ; values = [actor.tp, actor.max_tp]
    end
    contents.font.name = XAIL::MENU_DELUX::MENU_FONT[0]
    contents.font.size = 14 # // Override font size.
    contents.font.color = XAIL::MENU_DELUX::MENU_FONT[2]
    contents.font.bold = XAIL::MENU_DELUX::MENU_FONT[3]
    contents.font.shadow = XAIL::MENU_DELUX::MENU_FONT[4]
    # // Draw guage.
    draw_gauge_ex(x, y - 8, width, 8, rate, color1, color2)
    # // Draw stats.
    draw_text(x + 1, y, width, line_height, values[0], 0)
    draw_text(x - 1, y, width, line_height, values[1], 2)
    # // Draw vocab.
    draw_text(x, y, width, line_height, vocab, 1)
    reset_font_settings
  end

end
#==============================================================================
# ** Window_Menu_Details
#==============================================================================
class Window_Menu_Details < Window_Base
  
  def initialize(x, y)
    # // Method to initialize.
    super(x, y, window_width, fitting_height(XAIL::MENU_DELUX.details.size) + 6)
    @leader = $game_party.leader
    refresh
  end
  
  def standard_padding
    # // Method to determine standard padding.
    return 8
  end
  
  def window_width
    # // Method to determine window width.
    return 172
  end
  
  def refresh
    # // Method to refresh the window.
    contents.clear
    # // Draw background.
    draw_background
    # // Draw details.
    y = -10
    XAIL::MENU_DELUX.details.each_index {|i|
      draw_line_ex(0, y+=24, Color.new(255,255,255,32), Color.new(0,0,0,64))
      draw_font_text(XAIL::MENU_DELUX.details[i], -4, line_height * i + 4, contents_width, 2, XAIL::MENU_DELUX::MENU_FONT[0], 16, XAIL::MENU_DELUX::MENU_FONT[2])
    }
    # // Draw icons.
    draw_icons(XAIL::MENU_DELUX::DETAILS_ICONS, :vertical, 2, line_height * 0 + 2)
  end
  
  def draw_background
    # // Method to draw background.
    contents.fill_rect(0, 0, contents_width, contents_height, Color.new(0,0,0,60))
  end
  
  def update
    # // Method to update details window.
    super
    if @leader != $game_party.leader
      @leader = $game_party.leader
      refresh
    end
  end
  
end
#==============================================================================
# ** Window_Menu_Playtime
#==============================================================================
class Window_Menu_Playtime < Window_Base
  
  def initialize(x, y)
    # // Method to initialize.
    super(x, y, 120, fitting_height(1))
    @playtime = $game_system.playtime_s
    refresh
  end
  
  def refresh
    # // Method to refresh the window.
    contents.clear
    # // Draw icon.
    draw_icon(XAIL::MENU_DELUX::PLAYTIME_WINDOW[4], 4, 0)
    # // Draw playtime.
    draw_font_text(@playtime, 0, 6, contents_width, 2, XAIL::MENU_DELUX::MENU_FONT[0], 22, XAIL::MENU_DELUX::MENU_FONT[2])
  end
  
  def update
    # // Method to update the window.
    super
    @playtime = $game_system.playtime_s
    refresh
  end
  
end
#==============================================================================#
# ** Window_Menu_Help
#==============================================================================#
class Window_Menu_Help < Window_Help
  
  attr_accessor :index
  
  alias xail_icon_menu_winhelp_init initialize
  def initialize(*args, &block)
    # // Method to initialize help window.
    xail_icon_menu_winhelp_init(*args, &block)
    @index = 0
  end

  def set_text(text, enabled)
    # // Method to set a new help text.
    if text != @text
      menu_color(XAIL::MENU_DELUX::MENU_FONT[2], enabled)
      @text = text
      refresh
    end
  end
  
  def refresh
    # // Refresh help contents.
    contents.clear
    draw_help_text
  end
  
  def draw_help_text
    # // Method to draw the help text.
    contents.font.name = XAIL::MENU_DELUX::MENU_FONT[0]
    contents.font.size = XAIL::MENU_DELUX::MENU_FONT[1]
    menu_color(XAIL::MENU_DELUX::MENU_FONT[2], menu_enabled?(@index))
    contents.font.bold = XAIL::MENU_DELUX::MENU_FONT[3]
    contents.font.shadow = XAIL::MENU_DELUX::MENU_FONT[4]
    # // Draw title and description for the menu.
    draw_line_ex(0, 14, Color.new(255,255,255,128), Color.new(0,0,0,200))
    draw_text_ex_no_reset(0, 0, @text)
    reset_font_settings
  end
  
  def menu_enabled?(index)
    # // Method to check if menu item is enabled.
    return $game_system.get_menu.values[index][3]
  end
  
  def menu_color(color, enabled = true)
     # // Method to set the color and alpha if not enabled.
    contents.font.color.set(color)
    contents.font.color.alpha = 150 unless enabled
  end
  
end
#==============================================================================#
# ** Scene_MenuBase
#==============================================================================#
class Scene_MenuBase < Scene_Base
  
  def start
    # // Method to start the scene.
    super
    @actor = $game_party.menu_actor
    if SceneManager.scene_is?(Scene_Menu)
      @backgrounds = []
      @animations = []
      create_menu_backgrounds
      create_menu_animations
    end
  end
  
  def create_menu_backgrounds
    # // Method to create custom background(s).
    XAIL::MENU_DELUX::BACKGROUND.each {|key, value| @backgrounds << [Sprite.new, key] }
    @backgrounds.each {|i|
      i[0].bitmap = Cache.system(i[1])
      i[0].x = XAIL::MENU_DELUX::BACKGROUND[i[1]][0]
      i[0].y = XAIL::MENU_DELUX::BACKGROUND[i[1]][1]
      i[0].z = XAIL::MENU_DELUX::BACKGROUND[i[1]][2]
      i[0].opacity = XAIL::MENU_DELUX::BACKGROUND[i[1]][3]
    }
  end
  
  def create_menu_animations
    # // Method to create custom animation(s).
    # name  =>  [z, zoom_x, zoom_y, blend_type, opacity]
    XAIL::MENU_DELUX::ANIM_LIST.each {|key, value| @animations.push << [Plane.new, key] }
    @animations.each {|i|
      i[0].bitmap = Cache.system(i[1])
      i[0].z = XAIL::MENU_DELUX::ANIM_LIST[i[1]][0]
      i[0].zoom_x = XAIL::MENU_DELUX::ANIM_LIST[i[1]][1]
      i[0].zoom_y = XAIL::MENU_DELUX::ANIM_LIST[i[1]][2]
      i[0].blend_type = XAIL::MENU_DELUX::ANIM_LIST[i[1]][3]
      i[0].opacity = XAIL::MENU_DELUX::ANIM_LIST[i[1]][4]
    }
  end

  alias xail_upd_menubase_delux_upd update
  def update(*args, &block)
    # // Method for updating the scene.
    xail_upd_menubase_delux_upd(*args, &block)
    if SceneManager.scene_is?(Scene_Menu)
      for i in 0...@animations.size
        @animations[i][0].ox += 1.2 - i
        @animations[i][0].oy -= 0.6 + i
      end unless scene_changing?
      delay?(1)
    end
  end
  
  def delay?(amount)
    # // Method to delay.
    amount.times do
      update_basic
    end
  end
  
  alias xail_menubase_delux_transition perform_transition
  def perform_transition(*args, &block)
    # // Method to create the transition.
    return if $game_system.get_menu.empty?
    if XAIL::MENU_DELUX::TRANSITION.nil?
      xail_menubase_delux_transition(*args, &block)
    else
      Graphics.transition(XAIL::MENU_DELUX::TRANSITION[0],XAIL::MENU_DELUX::TRANSITION[1],XAIL::MENU_DELUX::TRANSITION[2])
    end
  end
  
  def dispose_sprites
    # // Method to dispose sprites.
    @backgrounds.each {|i| i[0].dispose unless i[0].nil? ; i[0] = nil } rescue nil
    @animations.each {|i| i[0].dispose unless i[0].nil? ; i[0] = nil } rescue nil
  end
  
  def terminate
    # // Method to terminate.
    super
    dispose_sprites unless SceneManager.scene_is?(Scene_Menu)
  end

end
#==============================================================================#
# ** Scene_Menu
#==============================================================================#
class Scene_Menu < Scene_MenuBase
  
  def start
    super
    # // Method to start the scene.
    # // Return if menu empty.
    return command_map if $game_system.get_menu.empty?
    # // Create windows.
    create_menu_command_window
    create_menu_status_window
    create_menu_details_window
    create_menu_playtime_window if XAIL::MENU_DELUX::PLAYTIME_WINDOW[5]
    if XAIL::MENU_DELUX::HELP_WINDOW[4]
      create_menu_help_window 
      help_update(@command_window.index)
    end
    # // Play music if enabled.
    play_menu_music if XAIL::MENU_DELUX::MUSIC
  end
  
  def create_menu_command_window
    # // Method to create the command window.
    @command_window = Window_MenuCommand.new
    @command_window.windowskin = Cache.system(XAIL::MENU_DELUX::MENU_SKIN) unless XAIL::MENU_DELUX::MENU_SKIN.nil?
    @command_window.x = XAIL::MENU_DELUX::MENU_WINDOW[0]
    @command_window.y = XAIL::MENU_DELUX::MENU_WINDOW[1]
    @command_window.z = XAIL::MENU_DELUX::MENU_WINDOW[2]
    @command_window.opacity = XAIL::MENU_DELUX::MENU_WINDOW[3]
    $game_system.get_menu.each {|key, value|
      unless value[5].nil?
        @command_window.set_handler(key, method(:command_custom))
      else
        if value[4]
          @command_window.set_handler(key, method(:command_personal))
        else
          @command_window.set_handler(key, method("command_#{key}".to_sym))
        end
      end
    }    
    @command_window.set_handler(:cancel, method(:return_scene))
  end
  
  def create_menu_status_window
    # // Method to create the status window.
    x = XAIL::MENU_DELUX::STATUS_WINDOW[0]
    y = XAIL::MENU_DELUX::STATUS_WINDOW[1]
    @status_window = Window_MenuStatus.new(x, y)
    @status_window.z = XAIL::MENU_DELUX::STATUS_WINDOW[2]
    @status_window.opacity = XAIL::MENU_DELUX::STATUS_WINDOW[3]
  end
  
  def create_menu_details_window
    # // Method to create the details window.
    x = XAIL::MENU_DELUX::DETAILS_WINDOW[0]
    y = XAIL::MENU_DELUX::DETAILS_WINDOW[1]
    @details_window = Window_Menu_Details.new(x, y)
    @details_window.z = XAIL::MENU_DELUX::DETAILS_WINDOW[2]
    @details_window.opacity = XAIL::MENU_DELUX::DETAILS_WINDOW[3]
  end
  
  def create_menu_playtime_window
    # // Method to create the playtime window.
    x = XAIL::MENU_DELUX::PLAYTIME_WINDOW[0]
    y = XAIL::MENU_DELUX::PLAYTIME_WINDOW[1]
    @playtime_window = Window_Menu_Playtime.new(x, y)
    @playtime_window.z = XAIL::MENU_DELUX::PLAYTIME_WINDOW[2]
    @playtime_window.opacity = XAIL::MENU_DELUX::PLAYTIME_WINDOW[3]
  end
  
  def create_menu_help_window
    # // Method to create the help window.
    @help_window = Window_Menu_Help.new(2)
    @help_window.viewport = @viewport
    @help_window.windowskin = Cache.system(XAIL::MENU_DELUX::MENU_SKIN) unless XAIL::MENU_DELUX::MENU_SKIN.nil?
    @help_window.index = @command_window.index
    @help_window.x = XAIL::MENU_DELUX::HELP_WINDOW[0]
    @help_window.y = XAIL::MENU_DELUX::HELP_WINDOW[1]
    @help_window.z = XAIL::MENU_DELUX::HELP_WINDOW[2]
    @help_window.opacity = XAIL::MENU_DELUX::HELP_WINDOW[3]
  end
  
  def play_menu_music
    # // Method to play menu music.
    @last_bgm = RPG::BGM.last
    @last_bgs = RPG::BGS.last
    bgm = XAIL::MENU_DELUX::MUSIC_BGM
    bgs = XAIL::MENU_DELUX::MUSIC_BGS
    Sound.play(bgm[0], bgm[1], bgm[2], :bgm)
    Sound.play(bgs[0], bgs[1], bgs[2], :bgs)
  end
  
  alias xail_upd_menu_delux_upd update
  def update(*args, &block)
    # // Method for updating the scene.
    xail_upd_menu_delux_upd(*args, &block)
    if XAIL::MENU_DELUX::HELP_WINDOW[4]
      old_index = @help_window.index
      if old_index != @command_window.index
        help_update(@command_window.index)
      end
    end
  end
  
  def help_update(index)
    # // If index changes update help window text.
    list = XAIL::MENU_DELUX::MENU_LIST
    icon = list.values[index][2].nil? ? "" : list.values[index][2]
    name = list.values[index][0] == "" ? list.keys[index].id2name.capitalize : list.values[index][0]
    if icon == "" ; title = name ; else ; title = '\i[' + icon.to_s + ']' + name ; end
    desc = '\c[0]' + list.values[index][1]
    text = "#{title}\n#{desc}"
    enabled = list.values[index][3]
    @help_window.index = index
    @help_window.set_text(text, enabled)
  end
  
  def on_personal_ok
    # // Method override on personal ok.
    scene = "Scene_#{@command_window.current_symbol.to_s.capitalize}".to_class
    SceneManager.call(scene)
  end
  
  def command_custom
    # // Method to call a custom command. (Don't remove)
    if @command_window.current_ext.is_a?(Integer)
      $game_temp.reserve_common_event(@command_window.current_ext)
      return command_map
    end
    SceneManager.call(@command_window.current_ext)
  end
  
  def command_map
    # // command_map (Don't remove)
    if $game_system.get_menu.empty?
      Sound.play_buzzer
      $game_message.texts << XAIL::MENU_DELUX::EMPTY
    end
    SceneManager.call(Scene_Map)
  end
  
  def pre_terminate
    # // Method to pre terminate scene menu.
    # // Play last bgm and bgs if menu music is enabled.
    if XAIL::MENU_DELUX::MUSIC
      @last_bgm.replay rescue nil
      @last_bgs.replay rescue nil
    end
  end
  
end # END OF FILE

#=*==========================================================================*=#
# ** END OF FILE
#=*==========================================================================*=#

[box class=catbg2]Opcional[/box]
Baixe o fundo usado no exemplo aqui.

[box class=catbg2]Créditos[/box]
Nicke

Nossa, que script bonito...  :lol:
Vou usar no meu projeto com certeza, ainda mais que tenho que mudar um pouco os gráficos  :wow:

Abraços,
ElementoZero  :cool:

+1 Ouro!
They're taking the hobbits to Isengard!

14/01/2013 às 12:16 #2 Última edição: 14/01/2013 às 12:19 por ElementoZero
Cara, como eu adiciono a opção de aparecer o ouro no menu no canto direito:

Aqui está a parte do código que modifiquei:
Citardef self.details
      ["#{Vocab::currency_unit}: #{$game_party.gold}",
      "Passos: #{$game_party.steps}",
      "Itens Coletados: #{$game_party.all_items.size}",
      "Região: #{$game_map.name}",
      "Elemento: #{$game_party.leader.name}",
      "Jogos Salvos: #{$game_system.save_count}"]
    end

Eu mudei um pouco o código, o que eu queria saber é o comando de mostrar o ouro, assim como o de, por exemplo, passos é
Citar#{$game_party.steps}"
mostrado acima.

Acho que o comando do ouro seria:
Citar#{$game_gold}"

Mas pode dar merda  :XD: Pq eu não sei nada de scripts, sei modificar

Espero resposta, abraços
ElementoZero  :cool:

===EDIT===

Me desculpem pelo post duplo  :ded:

===EDIT VERSION 2===  :o:

Espera aí, eu consegui! No lugar do outro, coloquei isso:
Citardef self.details
      ["Ouro: #{$game_party.gold}",
      "Passos: #{$game_party.steps}",
      "Itens Coletados: #{$game_party.all_items.size}",
      "Região: #{$game_map.name}",
      "Elemento: #{$game_party.leader.name}",
      "Jogos Salvos: #{$game_system.save_count}"]
    end

O ouro devo simplesmente colocar o nome que eu quiser  :XD:

Obrigado, não precisei da ajuda mas mesmo assim, obrigado (Pelo Script)
They're taking the hobbits to Isengard!

Alguém sabe se este script pode ser usado para projetos comerciais? Obrigado!

Gostei bastante da aparência do menu, mas uma coisa que me incomoda bastante é ter que usar um outro script para usa-lo.  :XD: