Suporte ao desenvolvimento de jogos!


    VXa Simple Menu

    Compartilhe
    avatar
    Druxo
    Semi-Experiente
    Semi-Experiente

    Mensagens : 84
    Créditos : 3

    VXa Simple Menu

    Mensagem por Druxo em Dom Mar 18, 2012 7:37 pm

    VXa Simple Menu


    Função:
    Cria um menu simples, com opções por icones.

    Modificações:
    Esse script modifica: Scene_Menu

    Instalação:
    Cole-o acima do main e costumize.

    Screenshoot:


    Script:

    Código:
    #==============================================================================
    # Simple Menu by VitorJ (http://vjrgss.blogspot.com/)
    #-Funcao-----------------------------------------------------------------------
    # Modifica o menu padrao.
    #-Nome do mapa-----------------------------------------------------------------
    # O nome que aparecera na area de nome do mapa sera o nome escolhido para
    # exibicao, caso nao tenha um, ele ira procurar o seguinte comando na nota do
    # mapa: <mname>Nome do Mapa</mname>
    # Onde o nome do mapa deve ser posto, nao e necessario estar entre aspas.
    #==============================================================================
    module VJSM
      Icons = []
      #Icones para as opcoes
      Icons[0] = 261                          #Item
      Icons[1] = 116                          #Habilidade
      Icons[2] = 164                          #Equipamento
      Icons[3] = 121                          #Status
      Icons[4] = 12                          #Formaзгo
      Icons[5] = 117                          #Salvar
      Icons[6] = 1                            #Sair
      ##
      Next = "Next"                          #Proximo level
      Gold_Icon = 361                        #Icone do gold
      PlayTime_Icon = 280                    #Icone do tempo de jogo
      Map_Icon = 231                          #Icone do mapa atual
      File = "Arquivo"                        #Opзгo de file
    end

    class Window_MenuStatus < Window_Selectable
      attr_reader  :pending_index
      def initialize(x, y)
        super(x, y, window_width, window_height)
        @pending_index = -1
        refresh
      end
      def window_width
        Graphics.width
      end
      def window_height
        Graphics.height - 96
      end
      def item_max
        $game_party.members.size
      end
      def col_max
        return 2
      end
      def item_height
        (height - standard_padding * 2) / 2
      end
      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_name(actor, rect.x+1, rect.y+1)
        draw_actor_face(actor, rect.x+1, rect.y+1 + line_height, enabled)
        draw_actor_class(actor, rect.x+1, (rect.y+rect.height) - (line_height+1))
        draw_actor_level(actor, rect.x+98+16, rect.y+1)
        draw_exp_info(actor, rect.x+98+16, rect.y + line_height)
        draw_actor_hp(actor, rect.x+98+16, rect.y + line_height * 2)
        draw_actor_mp(actor, rect.x+98+16, rect.y + line_height * 3)
        draw_actor_icons(actor, rect.x+98+16, rect.y + line_height * 4)
      end
      def draw_actor_icons(actor, x, y, width = 128)
        icons = (actor.state_icons + actor.buff_icons)
        i = 0
        icons.each do |icon|
          ix = x+(i*24)
          iy = y+(0)
          if i >= 5
            ix = x+((i-5)*24)
            iy = y+(24)
          end
          draw_icon(icon, ix, iy)
          i+= 1
        end
      end
      def draw_exp_info(actor, x, y)
        s2 = actor.max_level? ? "-------" : actor.next_level_exp - actor.exp
        s_next = VJSM::Next
        change_color(system_color)
        draw_text(x, y, 128, line_height, s_next)
        change_color(normal_color)
        draw_text(x, y, 128, line_height, s2, 2)
      end
      def draw_item_background(index)
        if index == @pending_index
          contents.fill_rect(item_rect(index), pending_color)
        end
      end
      def process_ok
        super
        $game_party.menu_actor = $game_party.members[index]
      end
      def select_last
        select($game_party.menu_actor.index || 0)
      end
      def pending_index=(index)
        last_pending_index = @pending_index
        @pending_index = index
        redraw_item(@pending_index)
        redraw_item(last_pending_index)
      end
    end
    class Window_NewMenuStatus < Window_Base
      def initialize(actor)
        super(0, 0, Graphics.width - 160, 120)
        @actor = actor
        refresh
      end
      def set_actor(actor)
        return if actor == @actor
        @actor = actor
        refresh
      end
      def refresh
        contents.clear
        actor = @actor
        enabled = $game_party.battle_members.include?(actor)
        draw_actor_face(actor,1, 1, enabled)
        draw_actor_simple_status(actor, 108, line_height / 2)
      end
    end
    class Window_Time < Window_Base
      def initialize(x,y)
        super(x, y, Graphics.width/3, 48)
        refresh
      end
      def update
        refresh
      end
      def refresh
        contents.clear
        playtime = $game_system.playtime_s
        draw_icon(VJSM::PlayTime_Icon, 0, 0)
        change_color(normal_color)
        draw_text(0, 0, self.contents.width, line_height, playtime, 2)
      end
    end
    class Window_MenuGold < Window_Base
      def initialize(x,y)
        super(x, y, Graphics.width/3, 48)
        refresh
      end
      def refresh
        contents.clear
        gold = $game_party.gold
        draw_icon(VJSM::Gold_Icon, 0, 0)
        change_color(normal_color)
        draw_text(0, 0, self.contents.width, line_height, gold, 2)
      end
    end
    class Window_MenuMapName < Window_Base
      def initialize(x,y)
        super(x, y, (Graphics.width/3)*2, 48)
        refresh
      end
      def refresh
        contents.clear
        if $game_map.display_name.empty?
          map_a = load_data(sprintf("Data/Map%03d.rvdata2", $game_map.map_id))
          note = map_a.note.split("\r\n")
          text = "Nome da mapa nгo definido"
          note.each do |thing|
            if thing.include?("<mname>")
              text = thing
              text.slice!("<mname>")
              text.slice!("</mname>")
            end
          end
          map = text
        else
          map = $game_map.display_name
        end
        change_color(normal_color)
        draw_icon(VJSM::Map_Icon, 0, 0)
        draw_text(0, 0, self.contents.width, line_height, map, 2)
      end
    end
    class Window_Command_Name < Window_Base
      def initialize(text,w=171)
        super(0, 0, w, 48)
        @text = text
        refresh
      end
      def refresh
        contents.clear
        draw_text(0, 0, self.contents.width, self.contents.height, @text, 1)
      end
      def set_text(text)
        return if text == @text
        @text = text
        refresh
      end
    end
    class Window_MenuFile < Window_Command
      def initialize
        super(0, 0)
        update_placement
      end
      def window_width
        return 160
      end
      def update_placement
        self.x = (Graphics.width - width) / 2
        self.y = (Graphics.height - height) / 2
      end
      def make_command_list
        add_command(Vocab::save, :save, save_enabled)
        add_command(Vocab::continue, :continue)
        add_command(Vocab::cancel,  :cancel)
      end
      def save_enabled
        !$game_system.save_disabled
      end
    end
    class Window_MenuCommand < Window_Command
      def self.init_command_position
        @@last_command_symbol = nil
      end
      def initialize
        super(0, 0)
        select_last
      end
      def item_rect(index)
        rect = Rect.new
        rect.width = item_width
        rect.height = item_height
        rect.x = index % col_max * item_width
        rect.y = index / col_max * item_height
        rect
      end
      def item_width
        return 24
      end
      def window_width
        return 192
      end
      def window_height
        return 48
      end
      def col_max
        return 8
      end
      def visible_line_number
        item_max
      end
      def make_command_list
        add_main_commands
        add_formation_command
        add_original_commands
        add_save_command
        add_game_end_command
      end
      def draw_item(index)
        x = item_rect(index).x
        y = item_rect(index).y
        draw_icon(VJSM::Icons[index], x, y, command_enabled?(index))
      end
      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
      def add_formation_command
        add_command(Vocab::formation, :formation, formation_enabled)
      end
      def get_name(index)
        return command_name(index)
      end
      def add_original_commands
      end
      def add_save_command
        add_command(VJSM::File, :file)
      end
      def add_game_end_command
        add_command(Vocab::game_end, :game_end)
      end
      def main_commands_enabled
        $game_party.exists
      end
      def formation_enabled
        $game_party.members.size >= 2 && !$game_system.formation_disabled
      end
      def save_enabled
        !$game_system.save_disabled
      end
      def process_ok
        @@last_command_symbol = current_symbol
        super
      end
      def select_last
        select_symbol(@@last_command_symbol)
      end
    end
    class Scene_Menu < Scene_MenuBase
      #--------------------------------------------------------------------------
      # * Inicializaзгo do processo
      #--------------------------------------------------------------------------
      def start
        super
        create_command_window
        create_gold_window
        create_status_window
        create_time_window
        create_map_window
      end
      #--------------------------------------------------------------------------
      # * Criaзгo da janela de comando
      #--------------------------------------------------------------------------
      def create_command_window
        @command_window = Window_MenuCommand.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(:file,      method(:command_file))
        @command_window.set_handler(:game_end,  method(:command_game_end))
        @command_window.set_handler(:cancel,    method(:return_scene))
        @command_window.y = 0
        @command_window.x = 0
        @command_name = Window_Command_Name.new(@command_window.get_name(@command_window.index))
        @command_name.y = @command_window.y
        @command_name.x = @command_window.x + @command_window.width
        @menu_file = Window_MenuFile.new
        @menu_file.set_handler(:save,      method(:command_save))
        @menu_file.set_handler(:continue,    method(:command_continue))
        @menu_file.set_handler(:cancel,    method(:command_cancel))
        @menu_file.visible = false
        @menu_file.active = false
      end
      #--------------------------------------------------------------------------
      # * Criaзгo da janela de dinheiro
      #--------------------------------------------------------------------------
      def create_gold_window
        x = @command_name.x + @command_name.width
        y = @command_name.y
        @gold_window = Window_MenuGold.new(x,y)
      end
      #--------------------------------------------------------------------------
      # * Criaзгo da janela de atributos
      #--------------------------------------------------------------------------
      def create_status_window
        x = @command_window.x
        y = @command_window.y  + @command_window.height
        @status_window = Window_MenuStatus.new(x, y)
      end
      def create_time_window
        y = @status_window.y + @status_window.height
        x = 0
        @window_time = Window_Time.new(x,y)
      end
      def create_map_window
        y = @window_time.y
        x = @window_time.x + @window_time.width
        @window_map = Window_MenuMapName.new(x,y)
      end
      def update
        update_basic
        @command_name.set_text(@command_window.get_name(@command_window.index))
      end
      #--------------------------------------------------------------------------
      # * Comando [Item]
      #--------------------------------------------------------------------------
      def command_item
        SceneManager.call(Scene_Item)
      end
      #--------------------------------------------------------------------------
      # * Comando [Habilidade] [Equipamentos] [Atributos]
      #--------------------------------------------------------------------------
      def command_personal
        @status_window.select_last
        @status_window.activate
        @status_window.set_handler(:ok,    method(:on_personal_ok))
        @status_window.set_handler(:cancel, method(:on_personal_cancel))
      end
      #--------------------------------------------------------------------------
      # * Comando [Formaзгo]
      #--------------------------------------------------------------------------
      def command_formation
        @status_window.select_last
        @status_window.activate
        @status_window.set_handler(:ok,    method(:on_formation_ok))
        @status_window.set_handler(:cancel, method(:on_formation_cancel))
      end
      #--------------------------------------------------------------------------
      # * Comando [Salvar]
      #--------------------------------------------------------------------------
      def command_save
        SceneManager.call(Scene_Save)
      end
      def command_file
        @menu_file.visible = true
        @menu_file.index = 0
        @menu_file.activate
        @menu_file.z = @status_window.z + 1
      end
      def command_cancel
        @menu_file.unselect
        @menu_file.visible = false
        @menu_file.active = false
        @menu_file.z = @status_window.z - 1
        @command_window.active = true
      end
      def command_continue
        SceneManager.call(Scene_Load)
      end
      #--------------------------------------------------------------------------
      # * Comando [Fim do Jogo]
      #--------------------------------------------------------------------------
      def command_game_end
        SceneManager.call(Scene_End)
      end
      #--------------------------------------------------------------------------
      # * Comandos individuais [Confirmaзгo]
      #--------------------------------------------------------------------------
      def on_personal_ok
        case @command_window.current_symbol
        when :skill
          SceneManager.call(Scene_Skill)
        when :equip
          SceneManager.call(Scene_Equip)
        when :status
          SceneManager.call(Scene_Status)
        end
      end
      #--------------------------------------------------------------------------
      # * Comandos individuais [Cancelamento]
      #--------------------------------------------------------------------------
      def on_personal_cancel
        @status_window.unselect
        @command_window.activate
      end
      #--------------------------------------------------------------------------
      # * Mudanзa de Ordem [Confirmaзгo]
      #--------------------------------------------------------------------------
      def on_formation_ok
        if @status_window.pending_index >= 0
          $game_party.swap_order(@status_window.index,
                                @status_window.pending_index)
          @status_window.pending_index = -1
          @status_window.redraw_item(@status_window.index)
        else
          @status_window.pending_index = @status_window.index
        end
        @status_window.activate
      end
      #--------------------------------------------------------------------------
      # * Mudanзa de Ordem [Cancelamento]
      #--------------------------------------------------------------------------
      def on_formation_cancel
        if @status_window.pending_index >= 0
          @status_window.pending_index = -1
          @status_window.activate
        else
          @status_window.unselect
          @command_window.activate
        end
      end
    end

    Creditos para:
    VitorJ, pela criação do script.
    Druxo


    _________________
    Hospedagem Gratuita php





    Zezenia Online


    ========================================

    ========================================








      Data/hora atual: Sex Out 19, 2018 1:32 am