Learn Skills From Items

8 de maio de 2013

Learn Skills From Items é um script para o RPG Maker XP desenvolvido SephirothSpawn para permitir que seus personagens aprendam skills  (habilidades) através do uso de items.

Você pode definir skills diferentes, de itens diferentes, e em diferentes vezes que forem usados.

O script é facilmente instalado e pode ser personalizado.

Instalação

Para instalar, coloque o script abaixo do SDK e acima do Main.

Você pode ver detalhes de como customizar o script nos comentários do código abaixo:

#==============================================================================
# ** Learn Skills from Items (Usage)
#------------------------------------------------------------------------------
# SephirothSpawn
# Version 1
# 2006-08-23
#------------------------------------------------------------------------------
# * Description :
#
#   This script was designed to allow your characters to learn skills from
#   using items. You are allowed to set different skills, from different items
#   for different times being used.
#------------------------------------------------------------------------------
# * Instructions :
#
#   Place The Script Below the SDK and Above Main.
#   To Customize your skill settings, refer to the customization instructions.
#------------------------------------------------------------------------------
# * Customization :
#
#   Setting Up Items For Skills (0 as an actor id will default for all actors)
#    - Item_Use_To_Skills = { actor_id => {item_id, times_to_use, ...}, ... }
#------------------------------------------------------------------------------
# * Syntax :
#
#   Retrieving Item Use Counter
#    - <game_actor>.skill_item_use_count(item_id)
#==============================================================================

#------------------------------------------------------------------------------
# * SDK Log Script
#------------------------------------------------------------------------------
SDK.log('Learn Skills from Items (Usage)', 'SephirothSpawn', 1, '2006-08-23')

#------------------------------------------------------------------------------
# * Begin SDK Enable Test
#------------------------------------------------------------------------------
if SDK.state('Learn Skills from Items (Usage)')

#==============================================================================
# ** Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Item Use For Skills
  #
  #  ~ actor_id => {skill_id => {item_id => times, ...}, ...}
  #    Use 0 as actor for all actors
  #--------------------------------------------------------------------------
  Item_Use_To_Skills = {}
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias seph_useitems4skills_gmactr_setup setup
  alias seph_useitems4skills_gmactr_ie item_effect
  #--------------------------------------------------------------------------
  # * Setup
  #--------------------------------------------------------------------------
  def setup(actor_id)
    # Original Setup
    seph_useitems4skills_gmactr_setup(actor_id)
    # Sets Up Item Use Counter
    @skill_item_use = {}
  end
  #--------------------------------------------------------------------------
  # * Skill Item Use Count
  #--------------------------------------------------------------------------
  def skill_item_use_count(item_id)
    return @skill_item_use.has_key?(item_id) ?
      @skill_item_use[item_id] : 0
  end
  #--------------------------------------------------------------------------
  # * Item Effect
  #--------------------------------------------------------------------------
  def item_effect(item)
    # Original Item Effects
    seph_useitems4skills_gmactr_ie(item)
    # Add to Item Use Counter
    @skill_item_use[item.id] = 0 unless @skill_item_use.has_key?(item.id)
    @skill_item_use[item.id] += 1
    # Checks Items 4 Skill Constant
    Item_Use_To_Skills.each do |actor_id, skill_data|
      # Skip if Actor ID Not Self ID
      next unless [0, self.id].include?(actor_id)
      # Checks All Skill Data
      skill_data.each do |skill_id, usage_req|
        # Skip if skill already known
        next if @skills.include?(skill_id)
        # Sets Learn Flag On
        learn_skill = true
        # Checks All Item Use Requirements
        usage_req.each do |item_id, n|
          # Turn Learn Flag off if Requirement Not Met
          learn_skill = false if n > skill_item_use_count(item_id)
        end
        # If Learn Flag On
        if learn_skill
          # Learn Skill
          self.learn_skill(skill_id)
        end
      end
    end
  end
end  

#------------------------------------------------------------------------------
# * End SDK Enable Test
#------------------------------------------------------------------------------
end

Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Clique aqui e saiba como. Obrigado!

Deixe um comentário

Inscreva-se na nossa newsletter!