¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1 [RMXP] Sky Menú el Lun Nov 12, 2012 3:54 pm

~SkyDarks

avatar
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: ~SkyDarks
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ú:
Spoiler:
Código:
#==============================================================================
#*Sky's Menú
#** Scene_Menu V1.3 (Bug Fixed) - Help Window add.
#==============================================================================
#------------------------------------------------------------------------------
#---------By ~SkyDarks---------------------------------------------------------
#--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 = 352
    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(Scene_Menu.new(5))
      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):
Spoiler:
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
Script Scene_Load
Spoiler:
Código:
#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
#  This class performs load screen processing.
#==============================================================================

class Scene_Load < Scene_File
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(scene = Scene_Title)
    # Remake temporary object
    $game_temp = Game_Temp.new
    @scene = scene
    # Timestamp selects new file
    $game_temp.last_file_index = 0
    latest_time = Time.at(0)
    for i in 0..3
      filename = make_filename(i)
      if FileTest.exist?(filename)
        file = File.open(filename, "r")
        if file.mtime > latest_time
          latest_time = file.mtime
          $game_temp.last_file_index = i
        end
        file.close
      end
    end
    super("Selecciona la partida a cargar")
  end
  #--------------------------------------------------------------------------
  # * Decision Processing
  #--------------------------------------------------------------------------
  def on_decision(filename)
    # If file doesn't exist
    unless FileTest.exist?(filename)
      # Play buzzer SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # Play load SE
    $game_system.se_play($data_system.load_se)
    # Read save data
    file = File.open(filename, "rb")
    read_save_data(file)
    file.close
    # Restore BGM and BGS
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    # Update map (run parallel process event)
    $game_map.update
    # Switch to map screen
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Cancel Processing
  #--------------------------------------------------------------------------
  def on_cancel
    # Play cancel SE
    $game_system.se_play($data_system.cancel_se)
    # Switch to title screen
    $scene = @scene
  end
  #--------------------------------------------------------------------------
  # * Read Save Data
  #    file : file object for reading (opened)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    # Read character data for drawing save file
    characters = Marshal.load(file)
    # Read frame count for measuring play time
    Graphics.frame_count = Marshal.load(file)
    # Read each type of game object
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables    = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party        = Marshal.load(file)
    $game_troop        = Marshal.load(file)
    $game_map          = Marshal.load(file)
    $game_player        = Marshal.load(file)
    # If magic number is different from when saving
    # (if editing was added with editor)
    if $game_system.magic_number != $data_system.magic_number
      # Load map
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    # Refresh party members
    $game_party.refresh
 end
end

Instrucciones:
* Tendrán que buscar y remplazar el script: "Scene_Menu", por el que yo les he puesto en el post.
* Luego buscar el script "Scene_Load", por el de Youkai.
* Luego debes de poner el script de localización sobre Main.
* Opcionalmente puedes empezar tu proyecto desde la Demo que subo. (no recomendado, falta actualización)


Capturas:
Spoiler:


Descargas: Mediafire - Script Menu.exe (Demo)

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

Creditos: ~SkyDarks y Youkai

Saludos, ~SkyDarks.



Última edición por ~SkyDarks el Lun Nov 12, 2012 6:03 pm, editado 4 veces

#2 Re: [RMXP] Sky Menú el Lun Nov 12, 2012 4:55 pm

youkai

avatar
Sky...has hecho un script plagado de bugs....
1ro - Cuando vas para atras en el Scene_Load, vas directo al Scene_Title y no al Menu
2do - ¿Para qué pones el Window_Help?
3ro - Ponerle fuente a gusto personal al Window_Locaton provoca que otras personas que no tengan esa fuente instalada en su PC no vean nada en esa ventana, o sea, que les salga vacia(como a mi ¬¬)
A parte de todo eso, aprecio la idea de intentar un nuevo menu y pornelo a disposicion de todos aqui en UM.
Otra cosa, para que pones una imagen del "campo"? XDD
Saludos,
¥oukai

#3 Re: [RMXP] Sky Menú el Lun Nov 12, 2012 5:03 pm

~SkyDarks

avatar
youkai escribió:Sky...has hecho un script plagado de bugs....
1ro - Cuando vas para atras en el Scene_Load, vas directo al Scene_Title y no al Menu
2do - ¿Para qué pones el Window_Help?
3ro - Ponerle fuente a gusto personal al Window_Locaton provoca que otras personas que no tengan esa fuente instalada en su PC no vean nada en esa ventana, o sea, que les salga vacia(como a mi ¬¬)
A parte de todo eso, aprecio la idea de intentar un nuevo menu y pornelo a disposicion de todos aqui en UM.
Otra cosa, para que pones una imagen del "campo"? XDD
Saludos,
¥oukai
1. Psss... si lo he visto y pues pienso que para la siguiente versión lo mejoro, aun trabajo en ello.
2. "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." Es por el espacio que utilizare, para poner una ventana de comandos horizontal. Ademas, pienso que es un poco mas estético xD (si, la ventana de comandos será 640x64 igual que Window_Help
3. jajajaja si lo siento, es que trabajaba probando con una fuenten que necesariamente tenia que ser bold y olvidé cambiarla de nuevo, Actualizo: "Arial".

4. Es que lo del campo me gusto x3

Gracias por tus comentarios Ópalo Sonriente no lo había notado x3
SkyDarks

#4 Re: [RMXP] Sky Menú el Lun Nov 12, 2012 5:52 pm

youkai

avatar
Ya ok XD
He decidido ayudarte con este proyecto =3
Aqui tienes la solucion para el primer bug:
Cambia esto por Scene_Load, si quieres miralo, lo que cambie fueron 2 lineas
Código:
#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
#  This class performs load screen processing.
#==============================================================================

class Scene_Load < Scene_File
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(scene = Scene_Title.new)
    # Remake temporary object
    $game_temp = Game_Temp.new
    @scene = scene
    # Timestamp selects new file
    $game_temp.last_file_index = 0
    latest_time = Time.at(0)
    for i in 0..3
      filename = make_filename(i)
      if FileTest.exist?(filename)
        file = File.open(filename, "r")
        if file.mtime > latest_time
          latest_time = file.mtime
          $game_temp.last_file_index = i
        end
        file.close
      end
    end
    super("Selecciona la partida a cargar")
  end
  #--------------------------------------------------------------------------
  # * Decision Processing
  #--------------------------------------------------------------------------
  def on_decision(filename)
    # If file doesn't exist
    unless FileTest.exist?(filename)
      # Play buzzer SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # Play load SE
    $game_system.se_play($data_system.load_se)
    # Read save data
    file = File.open(filename, "rb")
    read_save_data(file)
    file.close
    # Restore BGM and BGS
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    # Update map (run parallel process event)
    $game_map.update
    # Switch to map screen
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Cancel Processing
  #--------------------------------------------------------------------------
  def on_cancel
    # Play cancel SE
    $game_system.se_play($data_system.cancel_se)
    # Switch to title screen
    $scene = @scene
  end
  #--------------------------------------------------------------------------
  # * Read Save Data
  #    file : file object for reading (opened)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    # Read character data for drawing save file
    characters = Marshal.load(file)
    # Read frame count for measuring play time
    Graphics.frame_count = Marshal.load(file)
    # Read each type of game object
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables    = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party        = Marshal.load(file)
    $game_troop        = Marshal.load(file)
    $game_map          = Marshal.load(file)
    $game_player        = Marshal.load(file)
    # If magic number is different from when saving
    # (if editing was added with editor)
    if $game_system.magic_number != $data_system.magic_number
      # Load map
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    # Refresh party members
    $game_party.refresh
  end
end
Y por la linea 178, donde esta:
Código:

      when 5
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Load.new
Cambia $scene = Scene_Load por $scene = Scene_Load(Scene_Menu.new(5))
Ya, eso es todo, si se te ocurre alguna idea para tu menu y no sabes bien como hacerla, me puedes pedir consejos....jojojojo....
Saludos,
¥oukai
PD: Arreglo un problemita que se me fue....XP



Última edición por youkai el Lun Nov 12, 2012 5:58 pm, editado 1 vez

#5 Re: [RMXP] Sky Menú el Lun Nov 12, 2012 5:58 pm

~SkyDarks

avatar
youkai escribió:Ya ok Ópalo Sonrisa Grande
He decidido ayudarte con este proyecto =3
Aqui tienes la solucion para el primer bug:
Cambia esto por Scene_Load, si quieres miralo, lo que cambie fueron 2 lineas
Código:
#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
#  This class performs load screen processing.
#==============================================================================

class Scene_Load < Scene_File
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize(scene = Scene_Title)
    # Remake temporary object
    $game_temp = Game_Temp.new
    @scene = scene
    # Timestamp selects new file
    $game_temp.last_file_index = 0
    latest_time = Time.at(0)
    for i in 0..3
      filename = make_filename(i)
      if FileTest.exist?(filename)
        file = File.open(filename, "r")
        if file.mtime > latest_time
          latest_time = file.mtime
          $game_temp.last_file_index = i
        end
        file.close
      end
    end
    super("Selecciona la partida a cargar")
  end
  #--------------------------------------------------------------------------
  # * Decision Processing
  #--------------------------------------------------------------------------
  def on_decision(filename)
    # If file doesn't exist
    unless FileTest.exist?(filename)
      # Play buzzer SE
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # Play load SE
    $game_system.se_play($data_system.load_se)
    # Read save data
    file = File.open(filename, "rb")
    read_save_data(file)
    file.close
    # Restore BGM and BGS
    $game_system.bgm_play($game_system.playing_bgm)
    $game_system.bgs_play($game_system.playing_bgs)
    # Update map (run parallel process event)
    $game_map.update
    # Switch to map screen
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # * Cancel Processing
  #--------------------------------------------------------------------------
  def on_cancel
    # Play cancel SE
    $game_system.se_play($data_system.cancel_se)
    # Switch to title screen
    $scene = @scene
  end
  #--------------------------------------------------------------------------
  # * Read Save Data
  #    file : file object for reading (opened)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    # Read character data for drawing save file
    characters = Marshal.load(file)
    # Read frame count for measuring play time
    Graphics.frame_count = Marshal.load(file)
    # Read each type of game object
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables    = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party        = Marshal.load(file)
    $game_troop        = Marshal.load(file)
    $game_map          = Marshal.load(file)
    $game_player        = Marshal.load(file)
    # If magic number is different from when saving
    # (if editing was added with editor)
    if $game_system.magic_number != $data_system.magic_number
      # Load map
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
    # Refresh party members
    $game_party.refresh
  end
end
Y por la linea 178, donde esta:
Código:

      when 5
        $game_system.se_play($data_system.decision_se)
        $scene = Scene_Load.new
Cambia $scene = Scene_Load por $scene = Scene_Load($scene)
Ya, eso es todo, si se te ocurre alguna idea para tu menu y no sabes bien como hacerla, me puedes pedir consejos....jojojojo....
Saludos,
¥oukai
xD Gracias lo pondré en el menú xD
Edito :\ Me parece que no funciona... vere que sucede xd (y si, me refiero con el $scene = Scene_Load(Scene_Menu.new(5)))

Edito 2: Olvidalo arreglado Ópalo Contento, mira:
Spoiler:

Código:
      when 5
        $game_system.se_play($data_system.decision_se)
        $game_switches[999] = true
        $scene = Scene_Load.new
        $game_switches[999] = false
Código:
#--------------------------------------------------------------------------
  # * Cancel Processing
  #--------------------------------------------------------------------------
  def on_cancel
    # Play cancel SE
    $game_system.se_play($data_system.buzzer_se)
    $scene = @scene_Title
    if $game_switches[999] = true
      $scene = Scene_Map.new
    end
    # Switch to title screen
  end
Así regresará al mapa y no habrá problema, lo unico es que: Utilizará el switch (interruptor) #999. Pero, ahora tengo que ver como desactivo el switch xD

#6 Re: [RMXP] Sky Menú el Lun Nov 12, 2012 7:20 pm

youkai

avatar
ahhhh!!!! Claro que no sirve si no le puse el .new!! Que tonto de mi parte XP
Es $scene = Scene_Load.new(Scene_Menu.new(5))
Y....eso que armaste con el switch....funciona porque dios es grande. XDDD

#7 Re: [RMXP] Sky Menú el Lun Nov 12, 2012 7:32 pm

~SkyDarks

avatar
youkai escribió:ahhhh!!!! Claro que no sirve si no le puse el .new!! Que tonto de mi parte XP
Es $scene = Scene_Load.new(Scene_Menu.new(5))
Y....eso que armaste con el switch....funciona porque dios es grande. XDDD
No no es eso :\ ya que tiene una conección con el Script Main que ahora tengo una pereza xD inimaginable, asi que mañana revisto lo demas.
Hasta Mañana xD
Edito: Acabo de leer mi post xD y me di cuenta de que me he equivocado, lo que ha pasado es que el bug se ha trasladado ahora a el titulo, osea, en titulo no puedes regresar, pero en menu del juego si xd.

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.