Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3763 miembros registrados.
El último usuario registrado es Carlos Rodriguez.

Nuestros miembros han publicado un total de 85771 mensajes en 12214 argumentos.

[XP] Nombre de Héroes del grupo actual, en Mensajes o Elecciones

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Nombre de Héroes del grupo actual, en Mensajes o Elecciones

Mensaje por AsFzKakarotto el 2017-08-27, 03:46

Descripción:
Permite colocar el nombre de los personajes que están en el grupo en los Mensajes o Elecciones.
Perfecto para los que posean un sistema de cambio de grupo. Permitiendo detectar personajes que están en el grupo en su actualidad.

Instrucciones:
Para llamar el nombre del personaje que esta en el grupo, simplemente
colocar el siguiente codigo en un mensaje \Z[X] o \z[X] tambien
sirve en las elecciones. Este sistema otorga a cada uno de los personajes
una numeración dependiente a como están en su formación... ejemplo:

Aluxes           [Luchador]
 Lv1  [Normal]    PV  741/741
 E     0/25       PM  534/534  = SE TOMARÁ COMO EL VALOR 0 por ser el primero
                                 del Grupo.

Basil            [Lanzero]
 Lv1  [Normal]    PV  840/840
 E     0/25       PM  210/210  = SE TOMARÁ COMO EL VALOR 1 por ser el segundo
                                 del Grupo.

Gloria           [Maga]
 Lv2  [Normal]    PV  250/250
 E     0/25       PM  620/620  = SE TOMARÁ COMO EL VALOR 2 por ser la tercera
                                 del Grupo.

Silas            [Guerrero]
 Lv15  [Normal]   PV 1850/1850
 E     720/960    PM  720/720  = SE TOMARÁ COMO EL VALOR 3 por ser el cuarto
                                 y ultimo del Grupo.
                                 
          Puede que en algunos casos el grupo sea extenso,
              en ese caso seguir con la numeración.

\Z[X] o \z[X]            

 
Siendo finalmente X = el número del personaje del grupo ejemplo.
si quieres llamar al tercer personaje del grupo llamar así \Z[2].
con el ejemplo anterior estariamos llamando a Gloria.
Mensaje de ejemplo:
Hola, como estás \Z[2]?
Hola, como estás Gloria?

Aquí el script:

Código:
#==============================================================================
# ** Window_Message Mejorado / por: AsFz Kakarotto 29-07-2014
#------------------------------------------------------------------------------
=begin
Descripción:
Permite colocar el nombre de los personajes que estan en el Grupo
en los Mensajes o Elecciones.
Perfecto para los que posean un sistema de cambio de grupo, permitiendo
detectar personajes que estan en el grupo en su actualidad.
Instrucciones:
Para llamar el nombre del personaje que esta en el grupo, simplemente
colocar el siguiente codigo en un mensaje \Z[X] o \z[X] tambien
sirve en las elecciones. Este sistema otorga a cada uno de los personajes
una numeración dependiente a como están en su formación... ejemplo:

 Aluxes           [Luchador]
  Lv1  [Normal]    PV  741/741
  E     0/25       PM  534/534  = SE TOMARÁ COMO EL VALOR 0 por ser el primero
                                  del Grupo.
 Basil            [Lanzero]
  Lv1  [Normal]    PV  840/840
  E     0/25       PM  210/210  = SE TOMARÁ COMO EL VALOR 1 por ser el segundo
                                  del Grupo.
 Gloria           [Maga]
  Lv2  [Normal]    PV  250/250
  E     0/25       PM  620/620  = SE TOMARÁ COMO EL VALOR 2 por ser la tercera
                                  del Grupo.
 Silas            [Guerrero]
  Lv15  [Normal]   PV 1850/1850
  E     720/960    PM  720/720  = SE TOMARÁ COMO EL VALOR 3 por ser el cuarto
                                  y ultimo del Grupo.
                                  
           Puede que en algunos casos el grupo sea extenso,
               en ese caso seguir con la numeración.
              
Siendo finalmente X= el número del personaje del grupo ejmplo.
si quieres llamar al tercer personaje del grupo llamar así \Z[2].
con el ejemplo anterior estariamos llamando a Gloria.
Mensaje ejemplo:
Hola, como estás \Z[2]?
Hola, como estás Gloria?
Nota:
Si la letra Zz interfiere con otro script de mensajes.
Puedes cambiar la Letra en la linea 130 de el script reemplazando Zz por la
letra que quieras. Debe ser Mayuscula y a su lado minuscula y recuerda llamarla
en los mensajes dependiente a que letra que hayas colocado.
=end
#==============================================================================

class Window_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #--------------------------------------------------------------------------
  def initialize
    super(80, 304, 480, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.z = 9998
    @fade_in = false
    @fade_out = false
    @contents_showing = false
    @cursor_width = 0
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # * Dispose
  #--------------------------------------------------------------------------
  def dispose
    terminate_message
    $game_temp.message_window_showing = false
    if @input_number_window != nil
      @input_number_window.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # * Terminate Message
  #--------------------------------------------------------------------------
  def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    self.contents.clear
    # Clear showing flag
    @contents_showing = false
    # Call message callback
    if $game_temp.message_proc != nil
      $game_temp.message_proc.call
    end
    # Clear variables related to text, choices, and number input
    $game_temp.message_text = nil
    $game_temp.message_proc = nil
    $game_temp.choice_start = 99
    $game_temp.choice_max = 0
    $game_temp.choice_cancel_type = 0
    $game_temp.choice_proc = nil
    $game_temp.num_input_start = 99
    $game_temp.num_input_variable_id = 0
    $game_temp.num_input_digits_max = 0
    # Open gold window
    if @gold_window != nil
      @gold_window.dispose
      @gold_window = nil
    end
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    x = y = 0
    @cursor_width = 0
    # Indent if choice
    if $game_temp.choice_start == 0
      x = 8
    end
    # If waiting for a message to be displayed
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      # Control text processing
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
#------------------------------------------------------------------------------
      text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
        $game_party.actors[$1.to_i] != nil ? $game_party.actors[$1.to_i].name : ""
      end
#------------------------------------------------------------------------------
      # Change "\\\\" to "\000" for convenience
      text.gsub!(/\\\\/) { "\000" }
      # Change "\\C" to "\001" and "\\G" to "\002"
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      # Get 1 text character in c (loop until unable to get text)
      while ((c = text.slice!(/./m)) != nil)
        # If \\
        if c == "\000"
          # Return to original text
          c = "\\"
        end
        # If \C[n]
        if c == "\001"
          # Change text color
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
          # go to next text
          next
        end
        # If \G
        if c == "\002"
          # Make gold window
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end
          # go to next text
          next
        end
        # If new line text
        if c == "\n"
          # Update cursor width if choice
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          # Add 1 to y
          y += 1
          x = 0
          # Indent if choice
          if y >= $game_temp.choice_start
            x = 8
          end
          # go to next text
          next
        end
        # Draw text
        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
        # Add x to drawn text width
        x += self.contents.text_size(c).width
      end
    end
    # If choice
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    # If number input
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end
  #--------------------------------------------------------------------------
  # * Set Window Position and Opacity Level
  #--------------------------------------------------------------------------
  def reset_window
    if $game_temp.in_battle
      self.y = 16
    else
      case $game_system.message_position
      when 0  # up
        self.y = 16
      when 1  # middle
        self.y = 160
      when 2  # down
        self.y = 304
      end
    end
    if $game_system.message_frame == 0
      self.opacity = 255
    else
      self.opacity = 0
    end
    self.back_opacity = 160
  end
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    super
    # If fade in
    if @fade_in
      self.contents_opacity += 24
      if @input_number_window != nil
        @input_number_window.contents_opacity += 24
      end
      if self.contents_opacity == 255
        @fade_in = false
      end
      return
    end
    # If inputting number
    if @input_number_window != nil
      @input_number_window.update
      # Confirm
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        $game_variables[$game_temp.num_input_variable_id] =
          @input_number_window.number
        $game_map.need_refresh = true
        # Dispose of number input window
        @input_number_window.dispose
        @input_number_window = nil
        terminate_message
      end
      return
    end
    # If message is being displayed
    if @contents_showing
      # If choice isn't being displayed, show pause sign
      if $game_temp.choice_max == 0
        self.pause = true
      end
      # Cancel
      if Input.trigger?(Input::B)
        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
          $game_system.se_play($data_system.cancel_se)
          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
          terminate_message
        end
      end
      # Confirm
      if Input.trigger?(Input::C)
        if $game_temp.choice_max > 0
          $game_system.se_play($data_system.decision_se)
          $game_temp.choice_proc.call(self.index)
        end
        terminate_message
      end
      return
    end
    # If display wait message or choice exists when not fading out
    if @fade_out == false and $game_temp.message_text != nil
      @contents_showing = true
      $game_temp.message_window_showing = true
      reset_window
      refresh
      Graphics.frame_reset
      self.visible = true
      self.contents_opacity = 0
      if @input_number_window != nil
        @input_number_window.contents_opacity = 0
      end
      @fade_in = true
      return
    end
    # If message which should be displayed is not shown, but window is visible
    if self.visible
      @fade_out = true
      self.opacity -= 48
      if self.opacity == 0
        self.visible = false
        @fade_out = false
        $game_temp.message_window_showing = false
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Cursor Rectangle Update
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(8, n * 32, @cursor_width, 32)
    else
      self.cursor_rect.empty
    end
  end
end

Nota:
Si la letra Zz interfiere con otro script de mensajes.
Puedes cambiar la Letra en la linea 130 de el script reemplazando Zz por la
letra que quieras. Debe ser Máyuscula y a su lado una mínuscula y recuerda
llamarla en los mensajes dependiente a la letra que hayas colocado.

El script es mio y pueden usarlo como se les antoje.
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Nombre de Héroes del grupo actual, en Mensajes o Elecciones

Mensaje por Marshmello el 2017-08-27, 16:30

Es un script bastante útil si es el jugador quien crea a su personaje y si necesitamos mostrar su nombre en algún mensaje, pues si los personajes ya vienen creados no tendría sentido usarlo porque podríamos simplemente poner su nombre en el mensaje y ya.

¡Gracias por el aporte!
LOGROS OBTENIDOS POR EL POST
  • + 1 Scripter de Bronce

_________________
"I'm so alone... Trying to find my way back home to you..." 
PREMIOS:
avatar
Marshmello
Moderador
Moderador



Créditos 1220

Gracias : 81

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Nombre de Héroes del grupo actual, en Mensajes o Elecciones

Mensaje por AsFzKakarotto el 2017-09-20, 17:01

Muchas gracias por tu mensaje Marshmello.
Pero déjame aclararte que si tiene mucho sentido usar mi sistema cuando llamas a uno de tus aliados acompañantes, ya que si solamente lo escribes en la bandeja de mensajes por su nombre Ejemplo:

Así que finalmente Camila te acompaño...

En un futuro si dicho personaje no se encuentra en el grupo, este a fin de cuentas lo seguirá llamando tal cual como Camila, al cambio con mi sistema se va actualizando para cada héroe actual que nos acompañe.

Ademas se puede reemplazar por el típico comando \N[]  para los sistemas en que el personaje principal es reemplazado por otro héroe, Ejemplo del juego Castlevania cuando se completaba.
Así se evitaría estar creando eventos para simplemente cambiar el \N[] por otra ID. Pero para usar mi sistema se deberá de tener al héroe principal siempre formado de los primeros.

Bueno.... quería dejar más en claro esto, saluditos.
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 98

Gracias : 19

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Nombre de Héroes del grupo actual, en Mensajes o Elecciones

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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