Últimos temas
» 3ºC vs Kursaal (RPG2000) (Terminado)
por rpgero Hoy a las 4:54 pm

» [VXACE] Las Esferas de Capricornia. Actualizado 06.12.17
por Pocari Ayer a las 11:34 am

» No se ven/ejecutan eventos
por Pokefanmati Dom Dic 10, 2017 8:22 pm

» [ACE] El secreto de la estrella perdida
por TheHeroZX Mar Dic 05, 2017 7:28 pm

» Demo "Oblitian: La Búsqueda" (2017) [VxAce]
por Invark Lun Dic 04, 2017 4:07 am

» Procesos automáticos bloquean el movimiento de mi personaje
por KRiZaLiD Lun Dic 04, 2017 3:15 am

» las armas inferno(demo)
por conor Dom Dic 03, 2017 9:23 pm

» Pongámosle un Mote a nuestro Limo
por Stainler Dom Dic 03, 2017 5:01 am

» Transforma tus charas pequeños a grandes
por Chaskarron Sáb Dic 02, 2017 12:47 pm

» Concurso de screens - Diciembre 2017 [Convocatoria]
por Vesper Vie Dic 01, 2017 10:25 pm

» Saint Seiya Genesis
por Juanjo Vie Dic 01, 2017 1:51 am

» Montura para vx ace?
por Pokefanmati Jue Nov 30, 2017 11:47 pm


[VX] Tutorial - Agregar nuevas opciones en Menú

Ver el tema anterior Ver el tema siguiente Ir abajo

[VX] Tutorial - Agregar nuevas opciones en Menú

Mensaje por KRiZaLiD el Lun Abr 27, 2015 11:13 pm

Hace bastante tiempo deseaba agregar nuevas opciones al menú que viene por defecto en el RPG Maker VX. Pues lo he conseguido y lo comparto con ustedes.

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

Abran su proyecto y presionen F11 y abrirán el "editor de scripts". Luego sobre MAIN inserten un nuevo espacio para crear el nuevo script.

Ejemplo:

Ahora en la nueva sección que crearon, copien y peguen el siguiente código:

Codigo:

Código:
class Scene_Menu < Scene_Base
  def create_command_window
    s1 = Vocab::item
    s2 = Vocab::skill
    s3 = Vocab::equip
    s4 = Vocab::status
    s5 = Vocab::save
    s6 = Vocab::game_end
    s7 = "Opciones"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5,s7, s6])
    @command_window.index = @menu_index
    if $game_party.members.size == 0          # If there isn't any party members
      @command_window.draw_item(0, false)    # Disable "Items"
      @command_window.draw_item(1, false)    # Disable "Skills"
      @command_window.draw_item(2, false)    # Disable "Equipments"
      @command_window.draw_item(3, false)    # Disable "Status"
    end
    if $game_system.save_disabled            # If saving is forbidden
      @command_window.draw_item(4, false)    # Disable "Save"
    end
  end
end

Explicación del código:


Por defecto hay 6 variables locales, desde s1 hasta s6. Nosotros agregamos la "s7" y la llamamos "opciones". Si desean pueden agregar más.

Ahora en la variable @command_window la podemos editar:

Window_Command.new(160, [s1, s2, s3, s4, s5, s7, s6])

"160" es el ancho de la ventana en pixeles y los siguientes números es "el orden que se mostrarán".

Nuestro nuevo menú se verá así:

imagen:

Si han seguido bien los pasos, verán en su proyecto que está la nueva opcion "Opciones", ahora hagan click sobre ella dentro del juego. ¿Que ha sucedido?

Cuando clikeamos sobre "Opciones" es como si clikearamos sobre "Fin del juego". Y en "Fin del Juego" no pasa nada. 

No se preocupen ya lo vamos a solucionar...

Tengan presente que nosotros elegimos este orden en @command_window
[s1, s2, s3, s4, s5, s7, s6]

Y debido a ese orden tiene el siguiente valor:
s1 = 0
s2 = 1
s3 = 2
s4 = 3
s5 = 4
s7 = 5
s6 = 6

Teniendo eso presente, continuaremos escribiendo el script.
Antes de cualquier cosa, BORREMOS EL ULTIMO "end" y así poder seguir escribiendo.

OBS: lo que ahora escribiremos debe estar debajo de todo.

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

codigo:

Código:
def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      if $game_party.members.size == 0 and @command_window.index < 4
        Sound.play_buzzer
        return
      elsif $game_system.save_disabled and @command_window.index == 4
        Sound.play_buzzer
        return
      end
      Sound.play_decision
      case @command_window.index
      when 0      # Item
        $scene = Scene_Item.new
      when 1,2,3  # Habilidades, equipamiento, status
        start_actor_selection
      when 4      # Salvar
        $scene = Scene_File.new(true, false, false)
      when 5      # Fin del juego
        $scene = Scene_End.new
      end
    end
  end

Este código se puede leer así:

No es necesario que entiendan esto:


Si se pulsa boton B ( esc o x ) suena un SE y vuelve al mapa.
  ? Pero si pulsan el botón C ( Enter o espacio)
   ? Y dentro de esta condición si el grupo es igual a 0 y el cursor es menor que 4
       ? Si la ventana de comandos es menor que 4 suena el SE error.
          ? Si aún dentro de la condición presionas el botón : Pero si el salvar está desactivado y
             ? si el cursor de la ventana de comandos es igual , suena un SE y vuelve.
        ? Fin de la condición

• Si presionan el botón y ninguna de las condiciones anteriores se cumplen, suena un SE y continua.

• Si el Cursor se encuentra en:

? when 0 
? Se dirije a la ventana de items
? when 1 2 e 3
? Se dirigue a la ventana para elegir un personaje
? when 4
 ? Se dirigue a salvar el juego
? when 5 
 ? Se dirige a la ventana de Fin del Juego
  • end  
end
end
¿Pero recuerdan que arriba explicamos que el botón s7="opciones" tiene el valor 5? Y si hacemos click en él nos manda en la ventana de fin de juego.
Eso lo arreglaremos ahora.

Ahora peguemos el segundo código que escribimos debajo del primer código. Quedará así:

Codigo final:

Código:
class Scene_Menu < Scene_Base
   def create_command_window
     s1 = Vocab::item
     s2 = Vocab::skill
     s3 = Vocab::equip
     s4 = Vocab::status
     s5 = Vocab::save
     s6 = Vocab::game_end
     s7 = "Opciones"
     @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s7, s6])
     @command_window.index = @menu_index
     if $game_party.members.size == 0
       @command_window.draw_item(0, false)
    @command_window.draw_item(1, false)
    @command_window.draw_item(2, false)
    @command_window.draw_item(3, false)
    end
    if $game_system.save_disabled
    @command_window.draw_item(4, false)
    end
end

    def update_command_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new    elsif Input.trigger?(Input::C)
    if $game_party.members.size == 0 and @command_window.index < 4
      Sound.play_buzzer
      return
    elsif $game_system.save_disabled and @command_window.index == 4
      Sound.play_buzzer
      return
    end
  Sound.play_decision
    case @command_window.index
    when 0    # Item
    $scene = Scene_Item.new
  when 1,2,3  # Habilidades, equipamiento, status
    start_actor_selection
  when 4      # Salvar
    $scene = Scene_File.new(true, false, false)
  when 5      # Fin del juego
    $scene = Scene_End.new
   end
  end
 end
end

Ahora debemos editar el script para que al clikear sobre "opciones" nos mande a otro lugar. Para ello primero debemos crear "otro script"
imagen:
Ahora escribamos el siguiente código:

codigo:

Código:
class Scene_Option < Scene_Base
def initialize(indicador_inicial = 0)  
# Define que cuando llamamos el script, el index automaticamente será 0
    @indicador_inicial = indicador_inicial
    end

    def start
    super  
    create_menu_background
    criar_janela_deComandos_Options #Se dirige al método que crea una ventana de comandos
    end

    def terminate
    super
    dispose_menu_background
    @janela_deComando_Options.dispose
    end

    def update
    super  
    update_menu_background
  @janela_deComando_Options.update
    if Input.trigger?(Input::B)
    Sound.play_cancel
    $scene = Scene_Menu.new(5)  
    elsif Input.trigger?(Input::C)
    Sound.play_decision
    case @janela_deComando_Options.index
    when 0
    print "Si tienen un script como un bestiario o un mini juego de cartas, pueden agregarlo aqui y lo llaman con el respectivo Scene"
    when 1
    print "Recuerden, busquen en sus otros script la opcion Scene para agregarlos aqui"
    when 2
    $scene = Scene_Menu.new(5)
    when 3
    $scene = Scene_Map.new
    end
    end
    end

    def criar_janela_deComandos_Options
    option1 = "COSA UNO"
    option2 = "CoSA DOS"
    option3 = "Volver al Menú"
    option4 = "Volver al mapa"
    @janela_deComando_Options = Window_Command.new(260,[option1,option2,option3,option4])
    @janela_deComando_Options.index = @indicador_inicial
    @janela_deComando_Options.x = Graphics.width/2 - @janela_deComando_Options.width/2
    @janela_deComando_Options.y = Graphics.height/2 - @janela_deComando_Options.height/2
    end
end

Ahora vamos al primer script que hemos creado y nos dirigimos a la linea 43 y la editamos, escribamos lo siguiente:

Código:
$scene = Scene_Option.new

Esto hará que al clikear "opciones" nos envía al segundo script que creamos.

Y ahora para que funcione la opción "fin del juego", escribimos en la linea 44 lo siguiente:

Código:
when 6
           $scene = Scene_End.new

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

OBSERVACIÓN IMPORTANTE!

En el segundo script que creamos, debemos ver bien un número en la linea 25.
imagen:

Ahí tiene escrito el numero 5, ese es el valor de donde estará el cursor al volver al menú principal. Me explico, se vería feo si entro a opciones y luego al salir de opciones el cursor esta encima de item o estatus... ¿no es cierto? Jueguen con ese valor si crean mas opciones en el menú.

Ahora para arreglar el cursor al salir de la opción "Salir del juego" deben ir a Scene_End en el editor de script y dirigirse a la linea 42. Cambien el número 5 por un número 6.

imagen:

Si han puesto mas opciones dentro del menú, deben volver a cambiar ese número(a uno mas grande, ahí ustedes prueben).

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

Y eso sería todo! Ya tienen editado el Menú en su propio proyecto!

Créditos a modern Algebra y agradecimientos a ~ JV ~ por traducirlo y a rafidelis por su tutorial.

Espero que les sirva.
se despide KriZ

_________________
Mi Proyecto:


KRiZaLiD apoya:
avatar
KRiZaLiD
Héroe
Héroe

Masculino
Chile
RPG Maker : Vx
Mensajes : 721
Monedas : 3736
Reputación : 93
Edad : 32
Localización : Florida (pueblo fantasma), Chile

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

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