¡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 [RPG Maker VX] Mensaje en los cofres el Sáb Mar 19, 2011 1:38 pm

D.A.C.

avatar
Script: Mensaje en los cofres.
Autor: OriginalWij
Versión: 2.0

Código:
#========================================================================
# Mensaje en los cofres
#========================================================================
# Autor: OriginalWij
# Versión : 2.0
# Traducción: D.A.C.
#========================================================================
# Información de la versión:
#
# v1.0
# - Versión inicial
#
# v1.1
# - Añadida descripción de ventana
#
# v1.2a
# - Errores corregidos y alias añadidos.
#
# v1.3
# - Añadida la opción de mostrar una sola ventana para muchos objetos.
#
# v2.0
# - Añadida la opción para activar o desactivar el sonido.
# - Añadida la opción para activar o desactivar el texto.
# - Añadida la opción para activar o desactivar el icono del objeto.
# - Añadido la opción de ajustar las coordenadas X / Y para la ventana emergente.
# - Renombre del número de la ventana emergente: No aparecerá '1 X' en caso de
#  obtener un único objeto.
# - Visualización de oro mejorado (más eficiente).
# - Añadida la opción de pulsar el botón para cerrar la ventana emergente.
# - Añadida la opción para definir el tiempo de espera para la ventana emergente.
# - Añadida la opción para activar o desactivar el sonido al cerrar la ventana em.
# - Añadida la opción para definiar el sonido de la ventana emergente.
#========================================================================

#========================================================================
# Instrucciones: Activa el interruptor (indicado abajo) antes de añadir el objeto.
#
# Para 'Llamar script':
#  $scene = Chest_Popup.new(x, y, tipo, cantidad, índice, añadir = true / false)
#            x : Coordenada del texto de la ventana.
#            y : Coordenada del texto de la ventana.
#        Tipo: 0 : Oro, 1 : Objetos, 2 : Armas, 3: Armaduras.
# Cantidad : Número de objetos que obtienes.
#      Índice: ID del objeto en la 'Base de datos'.
#    Añadir : Añade este objeto en el inventario si se muestra / 'true'.
#                De forma predeterminada está en 'false' (recomendado).
#========================================================================
# NOTA: Cuando añadas distintos objetos, usa 'Esperar 1 frame' entre ellos.
# NOTA: El interruptor se apaga automáticamente al añadir un objeto u oro.
#========================================================================

  # Interruptor que activa la ventana:
  POPUP_SWITCH = 1
  # Icono del 'Oro'
  GOLD_ICON = 205
  # ¿Reproducir sonido de ventana emergente?
  PLAY_POPUP_SOUND = true
    # Sonido de ventana emergente (solo si está en 'true')
    POPUP_SOUND = 'Chime2'
    POPUP_SOUND_VOLUME = 100
    POPUP_SOUND_PITCH = 150
  # ¿Reproducir sonido al cerrar la ventana emergente?
  PLAY_CLOSE = true
    # Sonido de cierre de la ventana emergente (solo si está en 'true')
    CLOSE_SOUND = 'Cancel'
    CLOSE_SOUND_VOLUME = 80
    CLOSE_SOUND_PITCH = 100
  # Solo una ventana emergente para múltiples objetos.
  ONLY_SHOW_ONE = true
  # ¿Mostrar texto de la ventana emergente?
  SHOW_POPUP_TEXT = true
    # ¿Mostrar el icono junto con las letras del objeto? (solo si está en 'true')
    SHOW_POPUP_TEXT_ICON = true
    # Coordenada Y del texto de la ventana emergente (solo si está en 'true')
    TEXT_WINDOW_Y = 208
    # Coordenada X del texto de la ventana emergente (solo si está en 'true')
    # 0 (Cero)        : Centrado en la ventana.
    # Número negativo : Desplazamiento a la izquierda (centrado).
    # Número positivo : Desplazamiento a la derecha (centrado).
    TEXT_WINDOW_X_OFFSET = 0
    # ¿Esperar a pulsar botón para cerrar la ventana emergente?
    WAIT_FOR_BUTTON = true
    # Escoger botón (solo si está en 'true').
    BUTTON_TO_WAIT_FOR = Input::C
    # Frames de espera (si WAIT_FOR_BUTTON = false y SHOW_POPUP_TEXT = true)
    WAIT_FOR_TIME = 120
 
#========================================================================
# Game_Interpreter
#========================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # Obtener X
  #--------------------------------------------------------------------------
  def get_x
    events = $game_map.events
    x_coord = events[@event_id]
    return x_coord.screen_x
  end
  #--------------------------------------------------------------------------
  # Obtener Y
  #--------------------------------------------------------------------------
  def get_y
    events = $game_map.events
    y_coord = events[@event_id]
    return y_coord.screen_y
  end
  #--------------------------------------------------------------------------
  # Cambiar Oro
  #--------------------------------------------------------------------------
  alias chest_pop_command_125 command_125 unless $@
  def command_125
    value = operate_value(@params[0], @params[1], @params[2])
    x_value = get_x if $game_switches[POPUP_SWITCH]
    y_value = get_y if $game_switches[POPUP_SWITCH]
    $scene = Chest_Popup.new(x_value, y_value, 0, value, 1) if $game_switches[POPUP_SWITCH]
    chest_pop_command_125
  end
  #--------------------------------------------------------------------------
  # Cambiar objetos
  #--------------------------------------------------------------------------
  alias chest_pop_command_126 command_126 unless $@
  def command_126
    value = operate_value(@params[1], @params[2], @params[3])
    x_value = get_x if $game_switches[POPUP_SWITCH]
    y_value = get_y if $game_switches[POPUP_SWITCH]
    $scene = Chest_Popup.new(x_value, y_value, 1, value, @params[0]) if $game_switches[POPUP_SWITCH]
    chest_pop_command_126
  end
  #--------------------------------------------------------------------------
  # Cambiar armas
  #--------------------------------------------------------------------------
  alias chest_pop_command_127 command_127 unless $@
  def command_127
    value = operate_value(@params[1], @params[2], @params[3])
    x_value = get_x if $game_switches[POPUP_SWITCH]
    y_value = get_y if $game_switches[POPUP_SWITCH]
    $scene = Chest_Popup.new(x_value, y_value, 2, value, @params[0]) if $game_switches[POPUP_SWITCH]
    chest_pop_command_127
  end
  #--------------------------------------------------------------------------
  # Cambiar armaduras
  #--------------------------------------------------------------------------
  alias chest_pop_command_128 command_128 unless $@
  def command_128
    value = operate_value(@params[1], @params[2], @params[3])
    x_value = get_x if $game_switches[POPUP_SWITCH]
    y_value = get_y if $game_switches[POPUP_SWITCH]
    $scene = Chest_Popup.new(x_value, y_value, 3, value, @params[0]) if $game_switches[POPUP_SWITCH]
    chest_pop_command_128
  end
end

#========================================================================
# Ventana emergente
#========================================================================

class Item_Popup_Window < Window_Base
  #--------------------------------------------------------------------------
  # Inicializar
  #--------------------------------------------------------------------------
  def initialize(x, y)
    super(0, 0, 544, 416)
    self.opacity = 0
    @x = x - 26
    @y = y - 56
  end
  #--------------------------------------------------------------------------
  # Ventana emergente
  #--------------------------------------------------------------------------
  def pop_up(icon_index, x, y)
    self.contents.clear
    draw_icon(icon_index, x, y, true)
  end
end

#========================================================================
# Nombre de la ventana
#========================================================================

class Name_Window < Window_Base
  #--------------------------------------------------------------------------
  # Inicializar
  #--------------------------------------------------------------------------
  def initialize(x, y, desc, no_desc, desc_size, gold = false, icon = 0)
    width = desc.size * 12
    super(x, y, width, WLH + 32)
    self.width = self.contents.text_size(desc).width + 32
    self.x = ((544 - self.width) / 2) + TEXT_WINDOW_X_OFFSET
    create_contents
    if SHOW_POPUP_TEXT_ICON
      if no_desc
        draw_icon(icon, 0, 0) unless gold
      else
        if desc_size == 2
          draw_icon(icon, 46, 0) unless gold
        else
          draw_icon(icon, 34, 0) unless gold
        end
      end
    end
    self.contents.draw_text(0, 0, width, WLH, desc, 0) unless gold
    self.contents.draw_text(4, 0, width, WLH, desc, 0) if gold
    draw_icon(GOLD_ICON, width - 66, 0, true) if gold
  end
end

#========================================================================
# Scene_Base
#========================================================================

class Scene_Base
  #--------------------------------------------------------------------------
  # Crear instantánea para usar como fondo de pantalla.
  #--------------------------------------------------------------------------
  def snapshot_for_background
    $game_temp.background_bitmap.dispose
    $game_temp.background_bitmap = Graphics.snap_to_bitmap
    $game_temp.background_bitmap.blur unless $game_switches[POPUP_SWITCH]
  end
end

#========================================================================
# Ventana emergente de cofre
#========================================================================

class Chest_Popup < Scene_Base
  #--------------------------------------------------------------------------
  # Inicializar
  #--------------------------------------------------------------------------
  def initialize(x, y, type, amount, index, add = false)
    $game_switches[POPUP_SWITCH] = true
    @x = x
    @y = y
    @amount = amount
    @gold = false
    @no_desc = false
    @desc_size = 1
    @desc_size = 2 if amount > 9
    case type
    when 0 # Oro
      @desc_size = 1
      $game_party.gain_gold(amount) if add
      @icon_index = GOLD_ICON
      @desc_amount = ''
      @desc = @amount.to_s
      @amount = 1
      @gold = true
    when 1 # Objetos
      $game_party.gain_item($data_items[index], amount) if add
      @icon_index = $data_items[index].icon_index
      @desc_amount = @amount.to_s + ' x'
      if @amount == 1
        @desc_amount = ''
        @no_desc = true
      end
      @desc = $data_items[index].name
      @amount = 1 if ONLY_SHOW_ONE
    when 2 # Armas
      $game_party.gain_item($data_weapons[index], amount) if add
      @icon_index = $data_weapons[index].icon_index
      @desc_amount = @amount.to_s + ' x'
      if @amount == 1
        @desc_amount = ''
        @no_desc = true
      end
      @desc = $data_weapons[index].name
      @amount = 1 if ONLY_SHOW_ONE
    when 3 # Armaduras
      $game_party.gain_item($data_armors[index], amount) if add
      @icon_index = $data_armors[index].icon_index
      @desc_amount = @amount.to_s + ' x'
      if @amount == 1
        @desc_amount = ''
        @no_desc = true
      end
      @desc = $data_armors[index].name
      @amount = 1 if ONLY_SHOW_ONE
    end
    if @gold
      @desc = @desc + '      '
    else
      if SHOW_POPUP_TEXT_ICON
        @desc = @desc_amount + '      ' + @desc
      else
        @desc = @desc_amount + ' ' + @desc
      end
    end
  end
  #--------------------------------------------------------------------------
  # Empezar
  #--------------------------------------------------------------------------
  def start
    create_background
    @popup_window = Item_Popup_Window.new(@x, @y)
  end
  #--------------------------------------------------------------------------
  # Finalizar
  #--------------------------------------------------------------------------
  def terminate
    @popup_window.dispose
    @menuback_sprite.dispose
    @name_window.dispose if SHOW_POPUP_TEXT
  end
  #--------------------------------------------------------------------------
  # Retorno de escena
  #--------------------------------------------------------------------------
  def return_scene
    $game_switches[POPUP_SWITCH] = false
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # Actualización
  #--------------------------------------------------------------------------
  def update
    super
    @popup_window.update
    @menuback_sprite.update
    do_popup
  end
  #--------------------------------------------------------------------------
  # Actualización básica
  #--------------------------------------------------------------------------
  def update_basic
    Graphics.update       
    Input.update           
    $game_map.update       
  end
  #--------------------------------------------------------------------------
  # Esperar
  #--------------------------------------------------------------------------
  def wait(duration)
    for i in 0...duration
      update_basic
    end
  end
  #--------------------------------------------------------------------------
  # Esperar para cerrar
  #--------------------------------------------------------------------------
  def wait_for_close
    count = 0
    loop do
      update_basic
      count += 1
      break if Input.trigger?(BUTTON_TO_WAIT_FOR) and WAIT_FOR_BUTTON
      break if count >= WAIT_FOR_TIME and !WAIT_FOR_BUTTON
    end
  end
  #--------------------------------------------------------------------------
  # Crear fondo
  #--------------------------------------------------------------------------
  def create_background
    @menuback_sprite = Sprite.new
    @menuback_sprite.bitmap = $game_temp.background_bitmap
    @menuback_sprite.update
  end
  #--------------------------------------------------------------------------
  # Mostrar nombre
  #--------------------------------------------------------------------------
  def show_name
    x = 272
    y = TEXT_WINDOW_Y
    @name_window = Name_Window.new(x, y, @desc, @no_desc, @desc_size, @gold, @icon_index)
    wait_for_close
    Audio.se_play('Audio/SE/' + CLOSE_SOUND, CLOSE_SOUND_VOLUME, CLOSE_SOUND_PITCH) if WAIT_FOR_BUTTON and PLAY_CLOSE
  end
  #--------------------------------------------------------------------------
  # Crear ventana emergente
  #--------------------------------------------------------------------------
  def do_popup
    for i in 1..@amount
      Audio.se_play('Audio/SE/' + POPUP_SOUND, POPUP_SOUND_VOLUME, POPUP_SOUND_PITCH) if PLAY_POPUP_SOUND
      for i in 0..4
        @popup_window.pop_up(@icon_index, @x - 26, @y - (i * 4) - 48)
        @popup_window.update
        wait(2)
      end
      wait(5) if i != @amount
    end
    wait(5)
    show_name if SHOW_POPUP_TEXT
    return_scene
  end
end

Instrucciones de uso:

  1. Copiar el script encima de 'Main'.
  2. Usar el comando 'Llamar script' con el siguiente código: $scene = Chest_Popup.new(X, Y, tipo, cantidad, índice, añadir = true / false).

    Explicación:
    X: Coordenada del texto de la ventana.
    Y: Coordenada del texto de la ventana.
    Tipo: 0 : Oro, 1 : Objetos, 2 : Armas, 3: Armaduras.
    Cantidad: Número de objetos que obtienes.
    Índice: ID del objeto en la 'Base de datos'.
    Añadir: Añade este objeto en el inventario si se muestra / 'true'.
    De forma predeterminada está en 'false' (recomendado).
    Ejemplo: $scene = Chest_Popup.new(0, 0, 1, 1, 16, 1)
    En el cofre aparecerá una unidad del objeto situado en el número 16 de la 'Base de datos'.

Imágenes:

Spoiler:

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.