[RMXP] Sky Menú

OP

Raina

I'll keep running
Mensajes
3.745
Reacciones
2.239
Puntos
0
Ubicación
El Salvador
Y bueno, otra vez aquí ~SkyDarks con un nuevo estilo de Menú y es que implementando el tutorial y nuevos scripts dentro de un solo script logré hacer un nuevo estilo de Menú basado en el Menú por defecto que trae el RPG Maker.​

Nombre del Script: Sky's Menú
Autor: Darks
Versión: 1.3 + 1.0

Descripción:
Un nuevo menú creado por mi, basándome en el Menú que trae por defecto; con nueva organización, pero con espacios pendientes para una nueva versión. Los Scripts vienen en Spoiler o en Demo, como lo prefieras.​
Changelog:
* Nueva organización del menú.
* Localización de mapa agregado en menú.
* Pasos y Tiempo Transcurrido eliminados (pues no hay uso de ellos).
* Comando de Cargado de Partidas agregado en menú.
* Espacios de personajes retractibles. Es decir, por ejemplo, tienes tres personajes en tu equipo, y un personaje deja el equipo, entonces el cuadro de espacio de personajes se hace mas pequeño.

Scripts:
Script de Menú:
Código:
#==============================================================================
#*Sky's Menú
#** Scene_Menu V1.3 (Bug Fixed) - Help Window add.
#==============================================================================
#------------------------------------------------------------------------------
#---------By Darks---------------------------------------------------------
#--Do not use without permission (or credits).---------------------------------
#--No usar si permisos (o creditos).-------------------------------------------
#------------------------------------------------------------------------------
#==============================================================================

class Scene_Menu
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     menu_index : command cursor's initial position
  #--------------------------------------------------------------------------
  def initialize(menu_index = 0)
    @menu_index = menu_index
  end
  #--------------------------------------------------------------------------
  # * Main Processing
  #--------------------------------------------------------------------------
  def main
    # Make command window
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Estado"
    s5 = "Guardar"
    s6 = "Cargar"
    s7 = "Finalizar"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    @command_window.index = @menu_index
    @command_window.x = 0
    @command_window.y = 0
    # If number of party members is 0
    if $game_party.actors.size == 0
      # Disable items, skills, equipment, and status
      @command_window.disable_item(0)
      @command_window.disable_item(1)
      @command_window.disable_item(2)
      @command_window.disable_item(3)
    end
    # If save is forbidden
    if $game_system.save_disabled
      # Disable save
      @command_window.disable_item(4)
    end
    # Make play time window
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 352
    @location_window = Window_Location.new
    # Make status window
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    @status_window.width = 480
    @status_window.height = 416
    @window_help = Window_Help.new
    @window_help.x = 0
    @window_help.y = 416
    if $game_party.actors.size == 4
      @window_help.width = 160
      @status_window.height = 480
    end
    if $game_party.actors.size == 2
      @window_help.width = 640
      @status_window.height = 240
    end
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @command_window.dispose
    @gold_window.dispose
    @status_window.dispose
    @location_window.dispose
    @window_help.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @command_window.update
    @gold_window.update
    @status_window.update
    @location_window.update
    @window_help.update
    # If command window is active: call update_command
    if @command_window.active
      update_command
      return
    end
    # If status window is active: call update_status
    if @status_window.active
      update_status
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when command window is active)
  #--------------------------------------------------------------------------
  def update_command
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Switch to map screen
      $scene = Scene_Map.new
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If command other than save or end game, and party members = 0
      if $game_party.actors.size == 0 and @command_window.index < 4
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # Branch by command window cursor position
      case @command_window.index
      when 0  # item
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to item screen
        $scene = Scene_Item.new
      when 1  # skill
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Make status window active
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # save
        # If saving is forbidden
        if $game_system.save_disabled
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to save screen
        $scene = Scene_Save.new
      when 5
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Load.new
      when 6  # end game
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to end game screen
        $scene = Scene_End.new
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Frame Update (when status window is active)
  #--------------------------------------------------------------------------
  def update_status
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Make command window active
      @command_window.active = true
      @status_window.active = false
      @status_window.index = -1
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # Branch by command window cursor position
      case @command_window.index
      when 1  # skill
        # If this actor's action limit is 2 or more
        if $game_party.actors[@status_window.index].restriction >= 2
          # Play buzzer SE
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to skill screen
        $scene = Scene_Skill.new(@status_window.index)
      when 2  # equipment
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to equipment screen
        $scene = Scene_Equip.new(@status_window.index)
      when 3  # status
        # Play decision SE
        $game_system.se_play($data_system.decision_se)
        # Switch to status screen
        $scene = Scene_Status.new(@status_window.index)
      end
      return
    end
  end
end
Script de Localización (Necesario):
Código:
#===================================================
# ? CLASS Window_Location Begins
#===================================================
$data_mapinfos = load_data('Data/MapInfos.rxdata')
class Window_Location < Window_Base

def initialize
  super(0, 255, 160, 98)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.contents.font.name = "Arial"
   self.contents.font.size = 20
  refresh
end

def refresh
  self.contents.clear
  self.windowskin = RPG::Cache.windowskin(@windowskin_name)
  self.contents.font.color = text_color(2)
  self.contents.draw_text(4, 0, 120, 32, "Localización:")
  self.contents.font.color = text_color(0)
  self.contents.draw_text(4, 32, 120, 32, $data_mapinfos[$game_map.map_id].name , 2)
end
end

Instrucciones:
* Tendrán que buscar y remplazar el script: "Scene Menu", por el que yo les he puesto en el post.
* Luego debes de poner el script de localización sobre Main.
* Opcionalmente puedes empezar tu proyecto desde la Demo que subo.

Capturas:
demo1o.png

demo2k.png

Descargas: Mediafire - Script Menu.exe (Demo)

Contraseña: SkyDarks
Recuerda que preferentemente debes de copiarlo y pegarlo en el espacio de contraseña.

Creditos: Van para mí, ~SkyDarks (o Darks), pues nunca me habia puesto a trabajar tanto xD

Saludos, Darks.
 
Última edición:
Arriba Pie