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 4139 miembros registrados.
El último usuario registrado es pepus2008.

Nuestros miembros han publicado un total de 84794 mensajes en 12069 argumentos.

[Herramienta de eventing] Soporte de registro de inventarios múltiples

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker VX ACE [Herramienta de eventing] Soporte de registro de inventarios múltiples

Mensaje por orochii el 2015-01-10, 01:37

Para: XP / VX / VX Ace

Éste es un pequeño código que hice para ser usado junto a eventos. Lo que da es control sobre el guardar y cargar inventarios, como por ejemplo para cuando se cambia de grupos por momentos, o por alguna razón el grupo de héroes pierde sus objetos (ejemplo, ir a la cárcel como en Chrono Trigger).

Es un script sencillo. La verdad es más complicado entenderlo que lo que hace xD. Por ello ni me tomaré la molestia de usar mi "plantilla habitual". De uso libre sin necesidad de acreditación. CC0.

Aquí el código:
Código:
=begin

  OZ's Soporte de registro de inventarios múltiples
  =================================================
 
  save_inventory(id) : Guarda el inventario actual en la ranura Id
  save_items(id) : Guarda sólo los objetos en la ranura Id
  save_weapons(id) : Guarda sólo las armas en la ranura Id
  save_armors(id) : Guarda sólo los protectores en la ranura Id
 
  restore_inventory(id) : Reemplaza el inventario actual con el de la ranura Id
 
  add_inventory(id) : Une el inventario actual con el de la ranura Id
  add_items(id) : Une sólo los objetos de la ranura Id
  add_weapons(id) : Une sólo las armas de la ranura Id
  add_armors(id) : Une sólo los protectores de la ranura Id
 
  add_item_to_inv(id,id2,value) : Añade un número n de objeto id2 al inventario Id
  add_weapon_to_inv(id,id2,value) : Añade un número n de arma id2 al inventario Id
  add_armor_to_inv(id,id2,value) : Añade un número n de protector id2 al inventario Id
 
  delete_inventory(id) : Borra el inventario en la ranura Id
  delete_active_inventory : Limpia el inventario actual.

=end

class Game_Party < Game_Unit
 
  def initialize_backup_inventories
    @backup_items = []
    @backup_weapons = []
    @backup_armors = []
  end
 
  def check_backup_existance
    (@backup_items != nil) && (@backup_weapons != nil) && (@backup_armors != nil)
  end
 
  def check_backup_items_existance(id)
    (@backup_items[id] != nil)
  end
  def check_backup_weapons_existance(id)
    (@backup_weapons[id] != nil)
  end
  def check_backup_armors_existance(id)
    (@backup_armors[id] != nil)
  end
 
  def do_check_backup_existance
    initialize_backup_inventories unless check_backup_existance
  end
 
  def save_inventory(id)
    do_check_backup_existance
    @backup_items[id] = @items
    @backup_weapons[id] = @weapons
    @backup_armors[id] = @armors
  end
 
  def save_items(id)
    do_check_backup_existance
    @backup_items[id] = @items
  end
 
  def save_weapons(id)
    do_check_backup_existance
    @backup_weapons[id] = @weapons
  end
 
  def save_armors(id)
    do_check_backup_existance
    @backup_armors[id] = @armors
  end
 
  def restore_inventory(id)
    @items = @backup_items[id] if check_backup_items_existance(id)
    @weapons = @backup_weapons[id] if check_backup_weapons_existance(id)
    @armors = @backup_armors[id] if check_backup_armors_existance(id)
  end
 
  def add_item_to_inv(id, id2, value)
    return unless check_backup_items_existance(id)
    @backup_items[id][id2] = 0 if (@backup_items[id]==nil)
    @backup_items[id][id2] += value
  end
  def add_weapon_to_inv(id, id2, value)
    return unless check_backup_weapons_existance(id)
    @backup_weapons[id][id2] = 0 if (@backup_weapons[id]==nil)
    @backup_weapons[id][id2] += value
  end
  def add_armor_to_inv(id, id2, value)
    return unless check_backup_armors_existance(id)
    @backup_armors[id][id2] = 0 if (@backup_armors[id]==nil)
    @backup_armors[id][id2] += value
  end
 
  def add_items(id)
    return unless check_backup_items_existance(id)
    @backup_items[id].each { |key, value|
      @items[key] = 0 if (@items[key]==nil)
      @items[key] += value
    }
  end
  def add_weapons(id)
    return unless check_backup_weapons_existance(id)
    @backup_weapons[id].each { |key, value|
      @weapons[key] = 0 if (@weapons[key]==nil)
      @weapons[key] += value
    }
  end
  def add_armors(id)
    return unless check_backup_armors_existance(id)
    @backup_armors[id].each { |key, value|
      @armors[key] = 0 if (@armors[key]==nil)
      @armors[key] += value
    }
  end
  def add_inventory(id)
    add_items(id)
    add_weapons(id)
    add_armors(id)
  end
 
  def delete_inventory(id)
    @backup_items[id] = nil
    @backup_weapons[id] = nil
    @backup_armors[id] = nil
  end
 
  def delete_active_inventory
    @items.clear
    @weapons.clear
    @armors.clear
  end
 
end







Ejemplos de uso:
- Supongamos vamos a hacer una carcel como en Chrono Trigger. Tienes un evento, donde te meten a la cárcel. En cierto momento, antes de que el jugador retome el control, quieres quitarle todos sus objetos y simular que los metieron en un cofre. Ésto es lo que se haría.

Necesitarás primero registrar el inventario actual en algún sitio, luego limpiar lo que tienes. Ésto es cómo sería el llamar script:

Código:
save_inventory(1) #Lo guardará en un campo con ID 1
delete_active_inventory







Posteriormente encuentras el cofre. Entonces querrás restaurar todo a como estaba. Éstas son las líneas que debería tener el cofre:

Código:
restore_inventory(1)
delete_inventory(1) #para no tenerlo duplicado en memoria y poder reutilizar el campo







¡Pero claro! Surge una duda. ¿Qué tal si en el camino encuentras objetos? El "restore_inventory" deshace esos cambios, está pensado para el otro caso de ejemplo (cambio de grupos). Para ello tenemos otro método...

Código:
add_inventory(1)
delete_inventory(1) #de nuevo, borren todo lo innecesario






- Segundo caso, cambio de grupo. Idéntico al anterior, al cambiar los miembros del grupo, hacemos esto:

Código:
save_inventory(1)
delete_active_inventory






Habiendo hecho esto, podemos agregar pociones manualmente, o lo que sea que queramos que ese nuevo grupo tenga. O en su defecto, si existe ya un inventario que corresponda a este grupo, podemos hacer lo siguiente:

Código:
save_inventory(1)
restore_inventory(2)






Se está restaurando el inventario 2. Si dicho inventario existe, se reemplazará el inventario actual con dicho inventario. Ambos inventarios estarán en memoria, y es deber del save_inventory el actualizarlos cada vez que sea necesario.

¡Espero que se haya entendido! Y hay más opciones en el script, pero se las dejo de tarea "orz! Salut.
avatar
orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6389

Gracias : 332

Volver arriba Ir abajo

RPG Maker VX ACE Re: [Herramienta de eventing] Soporte de registro de inventarios múltiples

Mensaje por Kunuji el 2015-01-10, 02:16

Muchas gracias orochii! c;
avatar
Kunuji
Novato
Novato

0/3

Créditos 75

Gracias : 2

Volver arriba Ir abajo

RPG Maker VX ACE Re: [Herramienta de eventing] Soporte de registro de inventarios múltiples

Mensaje por Faye Valentine el 2015-01-10, 03:31

Excelente script, bastante útil. Estos scripts tan simples suelen ser los más útiles xD. aki van mis dies jeje like ya favoritos (?)

Ok no.

Faye Valentine
Soñador
Soñador

0/3

Créditos 281

Gracias : 34

Volver arriba Ir abajo

RPG Maker VX ACE Re: [Herramienta de eventing] Soporte de registro de inventarios múltiples

Mensaje por Kenshi3645 el 2015-02-10, 22:24

Me parecio muy bueno y lo puse en mi pryecto pero me salio error, lo pondre de nuevo para poner una imagen del error, uso el ACE...
avatar
Kenshi3645
Iniciado
Iniciado

0/3

Créditos 11

Gracias : 2

Volver arriba Ir abajo

RPG Maker VX ACE Re: [Herramienta de eventing] Soporte de registro de inventarios múltiples

Mensaje por Metalero el 2015-02-11, 01:49

Logros obtenidos por los contenidos de este post:

Orochii: Scripter de Plata x 1

_________________
avatar
Metalero
Administrador
Administrador



Créditos 1716

Gracias : 99

Volver arriba Ir abajo

RPG Maker VX ACE Re: [Herramienta de eventing] Soporte de registro de inventarios múltiples

Mensaje por alex1633 el 2016-11-30, 13:50

No me va :(
Me dice que la primera línea ya hay error
avatar
alex1633
Soñador
Soñador

0/3

Créditos 391

Gracias : 15

Volver arriba Ir abajo

RPG Maker VX ACE Re: [Herramienta de eventing] Soporte de registro de inventarios múltiples

Mensaje por kyonides-arkanthos el 2016-12-01, 03:28

Hay que tener en cuenta que XP no tiene un Game_Party como clase hija de Game_Unit, así que los usuarios de XP deberán borrar < Game_Unit al inicio del script para evitarse inconvenientes.
avatar
kyonides-arkanthos
Principiante
Principiante

0/3

Créditos 466

Gracias : 68

Volver arriba Ir abajo

RPG Maker VX ACE Re: [Herramienta de eventing] Soporte de registro de inventarios múltiples

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.