Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[RMVX] Chest Pop-up

Ver el tema anterior Ver el tema siguiente Ir abajo

[RMVX] Chest Pop-up

Mensaje por Simonka el 2010-05-27, 21:40

Descripción:

Este script permite visualizar una imagen en el medio de la pantalla al encontrar algún item, ya sea dentro de algún cofre, entregado por NPC, o cuanta cosa se te ocurra.

- Para utilizarlo, se debe llamar Script y pegar lo siguiente.
- No es necesario agregar un Item al cofre, este Script ya lo hace

$scene = Chest_Popup.new(x, y, type, amount, index, add = false)

Ejemplo: $scene = Chest_Popup.new(0, 0, 1, 1, 16, 1)

Screenshot:



Script:

Copiar y pegar encima de Main.

Código:
#==============================================================================
# Chest Item Pop-Up
#==============================================================================
# Author  : OriginalWij
# Version : 2.0
#==============================================================================

#==============================================================================
# Version Info:
#
# v1.0
# - Initial release
#
# v1.1
# - Added description window
#
# v1.2a
# - Bug fix and added forgotten aliases
#
# v1.3
# - Added option to only popup once for many of the same item
#
# v2.0
# - Added option to turn popup sound on/off
# - Added option to turn popup text on/off
# - Added icon to name popup and the ability to turn it on/off
# - Added adjustable X & Y coordinates for name popup window
# - Reworked name popup window (won't show "1 x" if only one item)
# - Reworked gold display (more efficient)
# - Added "call" feature - with and without adding the item to inventory
# - Added option to wait for button or time for popup name window
# - Added options to define button and time for popup name window wait
# - Added option to enable/disable the "close window" sound
# - Added options to define "close window" sound
#==============================================================================

#==============================================================================
# To use: turn on the switch (designated below) BEFORE each gold/item addition
#
# To call:
#  $scene = Chest_Popup.new(x, y, type, amount, index, add = false)
#            x : X coordinate to popup item at
#            y : Y coordinate to popup item at
#          type : 0 :gold, 1 :items, 2 :weapons, 3 :armor
#        amount : number of items "gaining"
#        index : item ID
#          add : adds item(s) shown into inventory if true (default = false)
#==============================================================================
# NOTE: when adding multiple (different) items, insert a WAIT(1) between them
# NOTE: the switch turns itself off after each "add item/gold" event command
#==============================================================================

  # Switch to activate popup
  POPUP_SWITCH = 1
  # "Gold" icon index number
  GOLD_ICON = 205
  # Play sound on popup?
  PLAY_POPUP_SOUND = true
    # Sound to play upon popup (if PLAY_POPUP_SOUND = true)
    POPUP_SOUND = 'Chime2'
    POPUP_SOUND_VOLUME = 100
    POPUP_SOUND_PITCH = 150
  # Play "close window" sound?
  PLAY_CLOSE = true
    # Sound to play upon popup close (if PLAY_CLOSE = true)
    CLOSE_SOUND = 'Cancel'
    CLOSE_SOUND_VOLUME = 80
    CLOSE_SOUND_PITCH = 100
  # Only popup once for many of the same item
  ONLY_SHOW_ONE = true
  # Show popup text?
  SHOW_POPUP_TEXT = true
    # Show icon with popup text? (if SHOW_POPUP_TEXT = true)
    SHOW_POPUP_TEXT_ICON = true
    # Popup text window Y coordinate (if SHOW_POPUP_TEXT = true)
    TEXT_WINDOW_Y = 208
    # Popup text window X coordinate offset (if SHOW_POPUP_TEXT = true)
    # 0 (Zero)        : centered in the window
    # negative integer : offset left  (centered)
    # positive integer : offset right (centered)
    TEXT_WINDOW_X_OFFSET = 0
    # Wait for button to close? (false = time wait) (if SHOW_POPUP_TEXT = true)
    WAIT_FOR_BUTTON = true
    # Button to wait for (if WAIT_FOR_BUTTON = true and SHOW_POPUP_TEXT = true)
    BUTTON_TO_WAIT_FOR = Input::C
    # Frames to wait (if WAIT_FOR_BUTTON = false and SHOW_POPUP_TEXT = true)
    WAIT_FOR_TIME = 120
 
#==============================================================================
# Game_Interpreter
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # Get X
  #--------------------------------------------------------------------------
  def get_x
    events = $game_map.events
    x_coord = events[@event_id]
    return x_coord.screen_x
  end
  #--------------------------------------------------------------------------
  # Get Y
  #--------------------------------------------------------------------------
  def get_y
    events = $game_map.events
    y_coord = events[@event_id]
    return y_coord.screen_y
  end
  #--------------------------------------------------------------------------
  # Change Gold
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # Change Items
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # Change Weapons
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # Change Armor
  #--------------------------------------------------------------------------
  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

#==============================================================================
# Item Popup Window
#==============================================================================

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

#==============================================================================
# Name window
#==============================================================================

class Name_Window < Window_Base
  #--------------------------------------------------------------------------
  # Initialize
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # Create Snapshot for Using as Background of Another Screen
  #--------------------------------------------------------------------------
  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

#==============================================================================
# Chest_Popup
#==============================================================================

class Chest_Popup < Scene_Base
  #--------------------------------------------------------------------------
  # Initialize
  #--------------------------------------------------------------------------
  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 # gold
      @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 # items
      $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 # weapons
      $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 # armors
      $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
  #--------------------------------------------------------------------------
  # Start
  #--------------------------------------------------------------------------
  def start
    create_background
    @popup_window = Item_Popup_Window.new(@x, @y)
  end
  #--------------------------------------------------------------------------
  # Terminate
  #--------------------------------------------------------------------------
  def terminate
    @popup_window.dispose
    @menuback_sprite.dispose
    @name_window.dispose if SHOW_POPUP_TEXT
  end
  #--------------------------------------------------------------------------
  # Return Scene
  #--------------------------------------------------------------------------
  def return_scene
    $game_switches[POPUP_SWITCH] = false
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # Update
  #--------------------------------------------------------------------------
  def update
    super
    @popup_window.update
    @menuback_sprite.update
    do_popup
  end
  #--------------------------------------------------------------------------
  # Update Basic
  #--------------------------------------------------------------------------
  def update_basic
    Graphics.update           
    Input.update               
    $game_map.update           
  end
  #--------------------------------------------------------------------------
  # Wait
  #--------------------------------------------------------------------------
  def wait(duration)
    for i in 0...duration
      update_basic
    end
  end
  #--------------------------------------------------------------------------
  # Wait for close
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # Create Background
  #--------------------------------------------------------------------------
  def create_background
    @menuback_sprite = Sprite.new
    @menuback_sprite.bitmap = $game_temp.background_bitmap
    @menuback_sprite.update
  end
  #--------------------------------------------------------------------------
  # Show Name
  #--------------------------------------------------------------------------
  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
  #--------------------------------------------------------------------------
  # Do Pop-Up
  #--------------------------------------------------------------------------
  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


Créditos:

OriginalWij


Última edición por Simonka el 2010-05-28, 03:11, editado 1 vez
avatar
Simonka
Iniciado
Iniciado

0/3

Créditos 7

Gracias : 0

Volver arriba Ir abajo

Re: [RMVX] Chest Pop-up

Mensaje por orochii el 2010-05-28, 02:24

No hay nadie como Original Wij, el mago alfezco xDDD.

Se agradece el aporte, saludos,
Orochii Zouveleki

PD.: Deberíamos de tener por acá el recopilatorio de ese scripter... porque es realmente valioso :D.
avatar
orochii
Reportero

0/3

Créditos 7760

Gracias : 456

Volver arriba Ir abajo

Re: [RMVX] Chest Pop-up

Mensaje por Arestame el 2010-05-28, 06:05

Ese script lo tenía desde hace años, pero se me perdió gracias por el aporte
avatar
Arestame
Aventurero
Aventurero

0/3

Créditos 1514

Gracias : 37

Volver arriba Ir abajo

NO LO ENTIENDO

Mensaje por capitanx el 2013-08-28, 18:02

NO SE COMO PONERLO https://imgfast.net/users/2713/26/04/70/smiles/786206.gif

$scene = Chest_Popup.new(x, y, type, amount, index, add = false)

Ejemplo: $scene = Chest_Popup.new(0, 0, 1, 1, 16, 1)
avatar
capitanx
Iniciado
Iniciado

0/3

Créditos 2

Gracias : 2

Volver arriba Ir abajo

Re: [RMVX] Chest Pop-up

Mensaje por Bleuw el 2013-08-28, 18:38

Capitanx, amigo, deberías fijarte las fechas de los post antes de publicar una respuesta. Quizá ya los que estaban en la conversación no entran más o cualquier otra cosa, creo que el tope de viejo que puede ser un topic es de 1 mes, fijate en las normas abajo de tu perfil.
Si te interesa el tema, siempre podés (creo) abrir vos una nueva charla para comentar sobre el mismo.

En fin, saludos.
avatar
Bleuw
Aventurero
Aventurero

0/3

Créditos 2033

Gracias : 114

Volver arriba Ir abajo

Re: [RMVX] Chest Pop-up

Mensaje por orochii el 2013-08-28, 23:30

Bueno, ya que han revivido el tema...
Código:
$scene = Chest_Popup.new(x, y, tipo, cantidad, idObjeto, true)
Primero lo primero. Añades el script *Orochii eso seguro ya lo saben* sí, pero no me jodas inconciente 8D.
Luego debes mirar cerca del inicio del script, algo que dice:
POPUP_SWITCH = 1
Eso define el interruptor que deberás activar ANTES de mostrar el cuadrito de tesoro ese.

Entonces, en nuestro ejemplo, interruptor 1. Supongamos que quiero poner un evento que me dé una Espada Ardiente de Hielo Eléctrico (es la #32 en la base de datos). Yo quiero además que la ventana aparezca en el centro de la pantalla.
Código:
$scene = Chest_Popup.new(0, 0, 2, 1, 32, true)
Vamos en orden. 0 y 0 (X e Y respectivamente) me dicen que esté justo en el centro de la pantalla.

2 es que quiero añadir un arma. Acá los valores posibles para ese parámetro:
0: dinero
1: objeto
2: arma
3: armadura

1 es la cantidad de lo que sea que quiero darle al jugador.

32 es el número del objeto/arma/armadura en la base de datos. Recuerda que en XP/VX/Ace esas tres listas están cada una por aparte.

Por último, true. Lo que hace ésto es que si está en true, no necesitas poner un comando de "agregar objeto".

Ahora vamos con ejemplos prácticos.
Código:
<>Operación de interruptor: [001:asdf] poner ON
<>Llamar script: $scene = Chest_Popup.new(0, 0, 2, 1, 32, true)
<>Esperar: 1 frame(s).
<>Operación de interruptor local: A poner ON.
Activa siempre el interruptor de popup ANTES de llamar la línea esa, y pon siempre también un esperar 1 frame justo después.

En fin, te recomendaría, ya es cosa tuya si lo haces o no xd, que aprendieses inglés (o usar GoogleTranslator supongo), O que aprendas a leer las instrucciones de los scripts, por precaución digo. Los autores muchas veces ponen precauciones o cosas así, y los bien intencionados reposters puede pasárseles algo, y luego tú andas sin saber lo que hiciste mal xd.

En fin, suerte,
Orochii Zouveleki
avatar
orochii
Reportero

0/3

Créditos 7760

Gracias : 456

Volver arriba Ir abajo

Re: [RMVX] Chest Pop-up

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.