¡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 [Personalización] Script Menú el Vie Nov 09, 2012 3:53 pm

~SkyDarks

avatar
Y bien, hoy vengo de paso de nuevo (pues estoy trabajando en un proyecto y no me quiero distraer mucho) y les traigo un nuevo tutorial. El tutorial no es completamente mío, pero si he trabajado en parte por el (JohaN., unicamente ha enseñado como quitar el save del menú, ahora yo complemento.) Y bueno, no necesitas mayores conocimientos de RGSS para hacer este tutorial.


Bueno, comenzamos.
Lo primero que hacemos, es buscar en la lista de Scripts, es el "Scene_Menu", el cual pongo a continuación (Por si no lo tienes, este es el Script que viene por defecto):
Spoiler:
Código:
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
#  This class performs menu screen processing.
#==============================================================================

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 = "Status"
    s5 = "Save"
    s6 = "End Game"
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
    @command_window.index = @menu_index
    # 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
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
    # Make steps window
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
    # Make gold window
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
    # Make status window
    @status_window = Window_MenuStatus.new
    @status_window.x = 160
    @status_window.y = 0
    # 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
    @playtime_window.dispose
    @steps_window.dispose
    @gold_window.dispose
    @status_window.dispose
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    # Update windows
    @command_window.update
    @playtime_window.update
    @steps_window.update
    @gold_window.update
    @status_window.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  # 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
Y bueno una vez que lo tenemos identificado, procedemos a editarlo:
  1. Buscaremos de la línea 20 a la 25, y encontraremos algo como esto:
    Código:
        s1 = $data_system.words.item
        s2 = $data_system.words.skill
        s3 = $data_system.words.equip
        s4 = "Status"
        s5 = "Save"
        s6 = "End Game"
    son los comandos que se mostrarán en el menu, notaremos que los primeros tres son llamados por: "$data_system.words." que es la forma que tiene el RMXP para llamar las palabras que hemos puesto en la Base de datos > Sistema. Los otros tres son los que se pueden editar el nombre, en esta parte, lo que haremos es, posicionarnos al final de la línea 24 y presionamos enter, para crear un espacio entre s5 y s6, luego cambiamos el número de "End Game" de 6 a 7. Luego que tenemos un espacio donde escribir. Comenzaremos la linea escribiendo un "s6" un espacio, luego un "=", un espacio y por ultimo la opción que quieras poner entre comillas, como por ejemplo:
    Código:
     s6 = "Cargar"

  2. Luego, buscaremos, mas abajo, la línea 161, y notarás que en realidad tiene un "5" el End Game, esto es por que comienza con 0 y no con 1.
    Código:
          when 5
            $game_system.se_play($data_system.decision_se)
            $scene = Scene_End.new
    Esta sección es para definir lo que se realizará cuando se presione el botón. En este caso el 6 (por eso dice "when 5"). "$game_system.se_play($data_system.decision_se)" con esto se reproducirá el sonido que hace cuando seleccionas una opción en el menú. "$scene = Scene_End.new" esta será la escena que se utilizará cuando se seleccione la opción. Ahora lo que haremos será, posicionarnos antes de "when 5" y dar un enter para crear una linea donde editaremos, y cambiaremos el 5 de "when 5" por un 6. (esto quiere decir que ya no utilizará la opción 6, sino que utilizara la opción 7.
    Luego, en el espacio que hemos hecho antes del "when 5" (Ahora "when 6") escribiremos "When 5" y la línea siguiente copiaremos el codigo: $game_system.se_play($data_system.decision_se), por ultimo en la tercera linea, pondremos la escena a la que queremos llamar, yo en este caso, utilizaré la opción cargar.
    Código:
    $scene = Scene_Load.new
    en ese caso quedaría algo asi:
    Código:
          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
  3. Bueno, por ultimo, para activar, y hacer que se vea la opción, vamos a la línea 26 y encontraremos algo asi:
    Código:
        @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6])
    esto nos quiere poner a editar el tamaño de la Ventana de Comandos, que por defecto es 160 pixeles x 6 opciones. Aqui entraremos en los parentesis, y en la parte donde dice "[s1, s2, s3, s4, s5, s6]" agregaremos una coma, seguido de un espacio y por ultimo un "s7". Quedará algo así:
    Código:
        @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])

Y bueno, así agregamos una opción a la ventana de comandos.


Ahora vamos con el resto de ventanas. En esta parte lo unico que haremos es eliminar unas cuantas lineas que serán las que quieras eliminar, a continuación te dejaré las que debes eliminar según lo que quieras quitar:
Tiempo de juego
Spoiler:
Código:
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
Estas líneas estarán cerca de la linea 40, luego de las lineas de la ventana de comandos.
Código:
    @playtime_window.dispose
Esta, estará cerca de la línea 70, posiblemente cerca de la 75, las ultimas lineas del "Main Processing" (Ver anotaciones, osea el texto verde).
Código:
    @playtime_window.update
Esta estará un poco mas abajo que la anterior cerca de la línea 85. Primeras líneas del "Frame Update".
Pasos
Spoiler:
Código:
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
Estará abajo de donde estába la de "Tiempo de Juego". También cerca de la linea 40-45. Luego de las lineas de la ventana de comandos.
Código:
    @steps_window.dispose
Tambíen estará cerca de el anterior Window.Dispose de "Tiempo de Juego", es decir cerca de la linea 70-75. Las ultimas lineas del "Main Processing".
Código:
    @steps_window.update
Al igual que las anteriores, estará debajo de la anterior. Es decir de la de "Tiempo de Juego". Cerca de la linea 80-85.


Tambien tenemos una tercera opción para editarlo, y es la posición: En el paso anterior se nos mostraban dos codigos, ahora yo pondré tres, dos son los mismos anteriores, y el ultimo será del dinero. Esto lo utilizaré (en el caso de que no lo hayas eliminado), para cambiar la posición de las ventanas:
Spoiler:
Tiempo jugado
Código:
    @playtime_window = Window_PlayTime.new
    @playtime_window.x = 0
    @playtime_window.y = 224
Pasos
Código:
    @steps_window = Window_Steps.new
    @steps_window.x = 0
    @steps_window.y = 320
Dinero
Código:
    @gold_window = Window_Gold.new
    @gold_window.x = 0
    @gold_window.y = 416
En los tres codigos verémos que sus dos ultimas lineas terminan en números, son las coordenadas en los cuales se encontrará la ventana. Posición X y posición Y, que sería posición horizontal (izquierda-derecha) y posición vertical (arriba-abajo) respectivamente. Estas variables, no se debe de olvidar que son variables de pixeles, es decir. El margen superior izquierdo del cuadro, estara a X y Y pixeles de el margen superior izquierdo de la ventana.

Y bueno con esto termino este largo y algo complicado tutorial, pero espero que les haya servido.

#2 Re: [Personalización] Script Menú el Vie Nov 09, 2012 9:50 pm

Ledai

avatar
wooh, ¡Que técnica! XDD yo no me defiendo con el script así que cualquier cosa que sea editar códigos y todo eso... me parece impresionante así que por el esfuerzo te dejo 3 makedas... gracias y sigue así!!!




Entérate de todas las novedades

#3 Re: [Personalización] Script Menú el Vie Nov 09, 2012 11:04 pm

Aarl

avatar
¡Mecachis! LEDA se me adelantó en regalar Makedas D:.

Vaya aportazo... La verdad es que yo tampoco estoy muy metido en esto de scripting pero todo lo que concierne a programación con lenguajes extraños me fascina... (de ahí que vaya a hacer una ingeniería informática -TrueStory-).

Me encanta Sky. Quizás lo use para el proyecto que tengo en manos. No sé, depende de si me acuerdo de hacerlo para cuando toquetee los scripts. xD

Saludos~

#4 Re: [Personalización] Script Menú el Sáb Nov 10, 2012 6:44 pm

~SkyDarks

avatar
La-espada-de-Auron escribió:wooh, ¡Que técnica! XDD yo no me defiendo con el script así que cualquier cosa que sea editar códigos y todo eso... me parece impresionante así que por el esfuerzo te dejo 3 makedas... gracias y sigue así!!!
Piltrafa97 escribió:¡Mecachis! LEDA se me adelantó en regalar Makedas D:.

Vaya aportazo... La verdad es que yo tampoco estoy muy metido en esto de scripting pero todo lo que concierne a programación con lenguajes extraños me fascina... (de ahí que vaya a hacer una ingeniería informática -TrueStory-).

Me encanta Sky. Quizás lo use para el proyecto que tengo en manos. No sé, depende de si me acuerdo de hacerlo para cuando toquetee los scripts. xD

Saludos~
xD Gracias, una vez que aprendes a usar el RGSS es muy fácil Ópalo Contento ¿Lenguajes Entraños? ¿Te refieres a lenguajes extranjeros?

Saludos, ~SkyD

#5 Re: [Personalización] Script Menú el Lun Nov 12, 2012 6:31 am

Aegrotus

avatar
De verdad que estoy muy contento con este tutorial, yo Aegrotus estoy completamente agradecido por tan buena explicación, ya que, en estos momentos gusto estudiar RGSS para poder modificar algunos scripts y/o con fortuna y empeño, hacer los propios algún día.
¿Será mucha conchudes o desfachates la mía pedirte muchos, pero muchos más tutoriales sobre SCRIPTING? Porque, sencillamente, me ha asombrado tu labor.

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.