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

Últimos temas
» Gameplay - Mansión Rybi - RMVXA.
por Miky Joe 2018-12-10, 08:36

» The Town of The Lost Witch [Horror/Suspense] - Enero 2019
por rstudios 2018-12-10, 01:20

» muchas dudas
por DiegoArancibia 2018-12-09, 16:55

» Galería Miky Art [Bocetos y más]
por Miky Joe 2018-12-09, 09:16

» Hemos vuelto
por alex1633 2018-12-08, 23:17

» [MV] Precognition
por franciscojapones 2018-12-08, 07:06

» (AJUDA) Conpatibilidade de 2 scripts simples
por orochii 2018-12-08, 03:14

» ("TCG") Que RPG Maker es el recomendado?
por orochii 2018-12-08, 03:03

» BOAS VINDAS
por orochii 2018-12-08, 02:58

» Script de mensaje de Wecoc
por orochii 2018-12-07, 23:43

Afiliados

[XP] Armamento sin identificar

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Armamento sin identificar

Mensaje por Wecoc el 2014-10-26, 19:45

Éste script no es mío, pero no tiene autor. Me lo encontré por ahí, estaba en portugués y lo he traducido y cambiado de arriba a abajo xDD pero igualmente a mí tampoco me tenéis que poner en los créditos por ésto, así que simplemente es de uso libre.

Lo que hace el script es hacer que cuando obtienes un arma o armadura que no habías visto nunca antes, está sin identificar y no lo puedes equipar (se podría hacer que pudieras equiparlo y te diera unos mínimos, pero en cualquier caso no serviría de mucho llevarlo). Luego, si vas a un herrero o lo que sea puedes pedirle que te lo identifique (pagando), o también podrías venderlo sin identificar y ya está... Hay otras opciones, como tener un objeto especial tipo pergamino que permita identificarlo al momento.

Bueno en realidad me suena de haber visto algo similar en algún juego pero no recuerdo cual xD

Es solo una base con la que hacer luego éste tipo de cosas por lo que quien lo use deberá tener unos mínimos conocimientos de scripting para integrarlo, o no verá ningún cambio del sistema default.

Va por id de arma o protector, puesto que una vez lo has identificado una vez, los de ese mismo id ya los conoces. Para cambiar eso y hacer que cada weapon / armor tuviera que identificarse cada vez por separado, habría que usar un sistema de objetos individuales, como el IGOS.

En fin, aquí está el kid de la cuestión (también llamado el niñato preguntón):

Código:
#==============================================================================
# ** [XP] Armamento sin identificar
#------------------------------------------------------------------------------
#  (Éste script no requiere créditos)
#==============================================================================

#------------------------------------------------------------------------------
# Definir nueva variable identified a armas y protectores
#------------------------------------------------------------------------------

module RPG
  class Weapon
   
    # Nueva variable modificable : identified. Por defecto vale false.
   
    attr_accessor :identified
    define_method(:identified) { @identified ||= false}

    # Nombre cuando no está identificado, según su ID
   
    def unid_name
      case @id
      # ¡Cambiar ésto!     
      when 1, 2, 3, 4 then "Espada"
      when 5, 6, 7, 8 then "Lanza"
      # when 9 ...
      else
        "Espada"
      end
    end
   
    # Precio cuando no está identificado, según su ID
   
    def unid_price
      case @id
      # ¡Cambiar ésto!     
      when 1 then 50
      when 2 then 100
      # when 3 ...
      else
        @price
      end
    end
   
    # Descripción cuando no está identificado
   
    def unid_description
      "No identificada. Se desconocen sus propiedades."
    end
  end
 
  class Armor
   
    # Nueva variable modificable : identified. Por defecto vale false.
   
    attr_accessor :identified
    define_method(:identified) { @identified ||= false}

    # Nombre cuando no está identificado, según su ID
   
    def unid_name
      case @id
      # ¡Cambiar ésto!     
      when 1, 2, 3, 4 then "Escudo"
      when 5, 6, 7, 8 then "Casco"
      # when 9 ...
      else
        "Escudo"
      end
    end
   
    # Precio cuando no está identificado, según su ID
   
    def unid_price
      case @id
      # ¡Cambiar ésto!     
      when 1 then 50
      when 2 then 100
      # when 3 ...
      else
        @price
      end
    end
   
    # Descripción cuando no está identificado
   
    def unid_description
      "No identificado. Se desconocen sus propiedades."
    end
  end
end

#------------------------------------------------------------------------------
# Solo se puede equipar si está identificada
#------------------------------------------------------------------------------

class Game_Actor < Game_Battler
  alias identified_equippable? equippable? unless $@
  def equippable?(item)
    return false if item.identified == false
    return identified_equippable?(item)
  end
end

#------------------------------------------------------------------------------
# Obtener armas y protectores no identificados desde $game_party
#------------------------------------------------------------------------------

class Game_Party
 
  # Armas no identificadas (y que el grupo las posee en ese momento)
 
  def unidentified_weapons
    return @weapons.select { |weapon| weapon.identified == false }
  end
 
  # Protectores no identificados (y que el grupo los posee en ese momento)
 
  def unidentified_armors
    return @armors.select { |armor| armor.identified == false }
  end
 
  # Armas no identificadas (todas)
 
  def all_unidentified_weapons
    all_weapons = $data_weapons[1..$data_weapons.size]
    return all_weapons.select { |weapon| weapon.identified == false }
  end
 
  # Protectores no identificados (todos)
 
  def all_unidentified_armors
    all_armors = $data_armors[1..$data_weapons.size]
    return all_armors.select { |armor| armor.identified == false }
  end
 
  # Identificar arma poseída
 
  def identify_weapon(id, price=0)
    $data_weapons[id].identified = true
    lose_gold(price)
  end
 
  # Identificar protector poseído
 
  def identify_armor(id, price=0)
    $data_armors[id].identified = true
    lose_gold(price)
  end
 
  # Identificar todas las armas poseídas
 
  def identify_weapons(price=0)
    unidentified_weapons.each do |weapon|
      $data_weapons[weapon.id].identified = true
      lose_gold(price)
    end
  end
 
  def identify_weapons_price(price=0)
    return unidentified_weapons.size * price
  end

  # Identificar todos las protectores poseídos
 
  def identify_armors(price=0)
    unidentified_armors.each do |armor|
      $data_armors[armor.id].identified = true
      lose_gold(price)
    end
  end
 
  def identify_armors_price(price=0)
    return unidentified_armors.size * price
  end
end


Para entender la configuración solo hay que mirar un poco el script; unid_name, unid_price, unid_description son las nuevas variables de nombre, precio y descripción para cuando el objeto no está identificado. Las defines en el mismo script según la ID de cada uno dentro de ese case.

Métodos:

- Para saber si un arma o protector está identificado:

Código:
$data_weapons[id].identified
$data_armors[id].identified


# true => identificado / false => no identificado

- Para obtener las armas y protectores poseídos por el grupo que están sin identificar

Código:
$game_party.unidentified_weapons
$game_party.unidentified_armors


- Para obtener las armas y protectores que están sin identificar (todos)

Código:
$game_party.all_unidentified_weapons
$game_party.all_unidentified_armors


- Para hacer que un arma o protector pase a estar identificado:

Código:
$game_party.identify_weapon(id)
$game_party.identify_armor(id)


A éste método se le puede añadir un precio detrás. Atención: En ese caso habrá que comprobar antes si el grupo tiene suficiente dinero.

- Para hacer que todas las armas o protectores poseídos pasen a estar identificados:

Código:
$game_party.identify_weapons
$game_party.identify_armors


A éste método se le puede añadir un precio detrás que no es el total sinó el que gastará para cada nuevo equipo identificado. Atención: Nuevamente habrá que comprobar si el grupo tiene suficiente dinero.

- Comprobar si el grupo tiene suficiente dinero para identificar todas las armas o protectores poseídos:

Código:
$game_party.identify_weapons_price(precio)
$game_party.identify_armors_price(precio)


Y ya. Ojalá le sirva a alguien ;D

PD.- No me preguntéis por el script original, no recuerdo de dónde lo saqué, creo que algo relacionado con el XAS... lo tenía en un proyecto viejo así que a saber. Igualmente éste está más completo y conciso que ese, y le arreglé un par de bugs ;D
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Armamento sin identificar

Mensaje por natalie_cuxi el 2014-10-27, 11:16

¡Gracias por el aporte! A mi me ha recordado al Zelda oracle of season/ages que conseguias anillos pero hasta que no los llevabas a tasar no podías utilizarlos, así que para aquellos que hagan algún Zelda les va muy bien (bueno, y a cualquier otro usuario xD)

¡Saludos! :D
avatar
natalie_cuxi
Principiante
Principiante

0/3

Créditos 1071

Gracias : 25

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Armamento sin identificar

Mensaje por Lithering-Games el 2014-10-27, 14:04

Me recuerda mucho al sistema de Diablo. En que te encontrabas un arma común como cualquier otra, pero sin identificar, y si la identificabas podría tener algún efecto o ser legendaria, como la corona del rey esqueleto.
avatar
Lithering-Games
Principiante
Principiante

0/3

Créditos 196

Gracias : 27

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Armamento sin identificar

Mensaje por Wecoc el 2014-10-27, 23:11

Ah sí, a eso me recordaba, al bendito Deckard Cain del Diablo 2 xDD

En fin, olvidaba mencionar 3 detalles de la configuración.

1 - Está hecho para armas y protectores, pero en caso de querer lo mismo para objetos, se haría del mismo modo pero usando RPG::Item y $game_party.items
Vaya, que sería totalmente factible también.

2 - El script integra eso a todos los tipos de arma y protector a la vez, haciendo que al empezar todo sea desconocido. Si quieres que al iniciar nuevo juego algunas cosas más triviales ya estén identificadas (como la espada de madera ? xD) solo hay que hacer una llamada de script al iniciar el juego donde ponga por ejemplo:
Código:
$data_weapons[1].identified = true


(Eso en concreto hará que el arma de id 1 ya esté identificada de buenas a primeras)

3 - Está hecho y testeado en XP pero por su simpleza, es posible que también funcione en VX y Ace sin ningún cambio. Si no fuera el caso igualmente es fácil portarlo de un maker a otro.
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Armamento sin identificar

Mensaje por Wecoc el 2015-08-24, 22:32

He hecho una versión extendida. Todo es igual, solo que ahora además incluye items.

Código:
#==============================================================================
# ** [XP] Armamento sin identificar - Versión extendida
#------------------------------------------------------------------------------
#  (Éste script no requiere créditos)
#==============================================================================

#------------------------------------------------------------------------------
# Definir nueva variable identified a items, armas y protectores
#------------------------------------------------------------------------------

module RPG
  
  class Item
    
    # Nueva variable modificable : identified. Por defecto vale false.
    
    attr_accessor :identified
    define_method(:identified) { @identified ||= false}
  
    # Nombre cuando no está identificado, según su ID
    
    def unid_name
      case @id
      # ¡Cambiar ésto!      
      when 1, 2, 3, 4 then "Hierba"
      when 5, 6, 7, 8 then "Seta"
      # when 9 ...
      else
        "Objeto"
      end
    end
    
    # Precio cuando no está identificado, según su ID
    
    def unid_price
      case @id
      # ¡Cambiar ésto!      
      when 1 then 50
      when 2 then 100
      # when 3 ...
      else
        @price
      end
    end
    
    # Descripción cuando no está identificado
    
    def unid_description
      "No identificado. Se desconocen sus propiedades."
    end
  end
    
  class Weapon
    
    # Nueva variable modificable : identified. Por defecto vale false.
    
    attr_accessor :identified
    define_method(:identified) { @identified ||= false}

    # Nombre cuando no está identificado, según su ID
    
    def unid_name
      case @id
      # ¡Cambiar ésto!      
      when 1, 2, 3, 4 then "Espada"
      when 5, 6, 7, 8 then "Lanza"
      # when 9 ...
      else
        "Espada"
      end
    end
    
    # Precio cuando no está identificado, según su ID
    
    def unid_price
      case @id
      # ¡Cambiar ésto!      
      when 1 then 50
      when 2 then 100
      # when 3 ...
      else
        @price
      end
    end
    
    # Descripción cuando no está identificado
    
    def unid_description
      "No identificada. Se desconocen sus propiedades."
    end
  end
  
  class Armor
    
    # Nueva variable modificable : identified. Por defecto vale false.
    
    attr_accessor :identified
    define_method(:identified) { @identified ||= false}

    # Nombre cuando no está identificado, según su ID
    
    def unid_name
      case @id
      # ¡Cambiar ésto!      
      when 1, 2, 3, 4 then "Escudo"
      when 5, 6, 7, 8 then "Casco"
      # when 9 ...
      else
        "Escudo"
      end
    end
    
    # Precio cuando no está identificado, según su ID
    
    def unid_price
      case @id
      # ¡Cambiar ésto!      
      when 1 then 50
      when 2 then 100
      # when 3 ...
      else
        @price
      end
    end
    
    # Descripción cuando no está identificado
    
    def unid_description
      "No identificado. Se desconocen sus propiedades."
    end
  end
end

#------------------------------------------------------------------------------
# Solo se puede equipar si está identificada
#------------------------------------------------------------------------------

class Game_Actor < Game_Battler
  alias identified_equippable? equippable? unless $@
  def equippable?(item)
    return false if item.identified == false
    return identified_equippable?(item)
  end
end

#------------------------------------------------------------------------------
# Obtener armas y protectores no identificados desde $game_party
#------------------------------------------------------------------------------

class Game_Party
  
  # Items no identificados (y que el grupo los posee en ese momento)
  
  def unidentified_items
    return @items.select { |item| item.identified == false }
  end
  
  # Armas no identificadas (y que el grupo las posee en ese momento)
  
  def unidentified_weapons
    return @weapons.select { |weapon| weapon.identified == false }
  end
  
  # Protectores no identificados (y que el grupo los posee en ese momento)
  
  def unidentified_armors
    return @armors.select { |armor| armor.identified == false }
  end
  
  # Items no identificados (todos)
  
  def all_unidentified_items
    all_items = $data_items[1..$data_items.size]
    return all_items.select { |item| item.identified == false }
  end
  
  # Armas no identificadas (todas)
  
  def all_unidentified_weapons
    all_weapons = $data_weapons[1..$data_weapons.size]
    return all_weapons.select { |weapon| weapon.identified == false }
  end
  
  # Protectores no identificados (todos)
  
  def all_unidentified_armors
    all_armors = $data_armors[1..$data_weapons.size]
    return all_armors.select { |armor| armor.identified == false }
  end
  
  # Identificar objeto
  
  def identify_item(id, price=0)
    $data_items[id].identified = true
    lose_gold(price)
  end
  
  # Identificar arma poseída
  
  def identify_weapon(id, price=0)
    $data_weapons[id].identified = true
    lose_gold(price)
  end
  
  # Identificar protector poseído
  
  def identify_armor(id, price=0)
    $data_armors[id].identified = true
    lose_gold(price)
  end
  
  # Identificar todos los objetos poseídos
  
  def identify_items(price=0)
    unidentified_items.each do |item|
      $data_items[item.id].identified = true
      lose_gold(price)
    end
  end

  def identify_items_price(price=0)
    return unidentified_items.size * price
  end
  
  # Identificar todas las armas poseídas
  
  def identify_weapons(price=0)
    unidentified_weapons.each do |weapon|
      $data_weapons[weapon.id].identified = true
      lose_gold(price)
    end
  end
  
  def identify_weapons_price(price=0)
    return unidentified_weapons.size * price
  end

  # Identificar todos las protectores poseídos
  
  def identify_armors(price=0)
    unidentified_armors.each do |armor|
      $data_armors[armor.id].identified = true
      lose_gold(price)
    end
  end
  
  def identify_armors_price(price=0)
    return unidentified_armors.size * price
  end
  
  # Identificar todo lo poseído
  
  def identify_all(price=0)
    identify_items(price)
    identify_weapons(price)
    identify_armors(price)
  end
  
  def identify_all_price(price=0)
    result = 0
    result += identify_items_price(price)
    result += identify_weapons_price(price)
    result += identify_armors_price(price)
    return result
  end
end


Última edición por Wecoc el 2018-02-21, 14:00, editado 1 vez
avatar
Wecoc
Administrador
Administrador



Créditos 12314

Gracias : 655

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Armamento sin identificar

Mensaje por Avenger_K el 2015-08-24, 23:48

No había visto este script por ser un tema antiguo, pero me parece sumamente interesante. Meditare la idea de usarlo en mi proyecto.

PD: ¿Sigue sin saberse el autor de este script?
Bye Bye!
avatar
Avenger_K
Soñador
Soñador

0/3

Créditos 338

Gracias : 15

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Armamento sin identificar

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.