O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

MBS - Aprender Habilidade com Equipamento

Iniciado por Brandt, 18/05/2014 às 18:53

[box2 class=titlebg]
MBS - Aprender Habilidade com Equipamento
[/box2]

[box2 class=titlebg title=Introdução]Mais um script que fiz a pedido do tiagoms, é bem útil e deveria haver algum sistema do tipo por padrão no RPG Maker...[/box2]

[box2 class=titlebg title=Características]Basicamente, o script faz com que equipamentos "carreguem" habilidades dentro deles, então se você equipar a 'Espada de Fogo', você aprende a habilidade 'Corte de Fogo', e se você desequipar ela, você esquece a habilidade 'Corte de Fogo', faz sentido, não?[/box2]

[box2 class=titlebg title=Instruções]Para selecionar as habilidades que o equipamento concede, é só adicionar isso nas notas dele:
<ActorID LearnSkills: id1,id2,id3,id4,id5>


No caso, ele adiciona as habilidades de ID 'id1', 'id2', 'id3', 'id4' e 'id5' caso o personagem de ID 'ID' equipe o equipamento (xD)  e a habilidade é removida assim que o equipamento é removido.

Também é possível adicionar habilidades permanentemente (ou seja, mesmo que o equipamento seja removido, a habilidade continua lá), para isso, é só substituir o LearnSkills por LearnPSkills:
<ActorID LearnPSkills: id1,id2,id3,id4,id5>


É possível adicionar quantas habilidades você quiser ao equipar o equipamento no personagem, é necessário dividir os IDs das habilidades na lista com uma vírgula, mas o último item da lista não deve ter vírgula depois dele.

Um exemplo de configuração (adiciona temporariamente as habilidades 3, 5, 8, 9, 18 e 13 para o personagem de ID 1):
<Actor1 LearnSkills: 3,5,8,9,18,13>
[/box2]

[box2 class=titlebg title=Script]
#==============================================================================
# MBS - Aprender Habilidades com Equipamentos
#------------------------------------------------------------------------------
# por Masked
#==============================================================================
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  alias mbs_chngeqp change_equip
  alias mbs_inteqps init_equips
  #--------------------------------------------------------------------------
  # * Inicialização do equipamento
  #     equips : equipamentos iniciais
  #--------------------------------------------------------------------------
  def init_equips(equips)
    mbs_inteqps(equips)
    @equips.each {|i|
      equip_skills(i.object).each {|skill| learn_skill(skill)}
    }
  end
  #--------------------------------------------------------------------------
  # * Mudança de equipamentos
  #     slot_id : ID do slot
  #     item    : Armas/Amaduras (nil se vazio)
  #--------------------------------------------------------------------------
  def change_equip(slot_id, item)
    equip_skills(@equips[slot_id].object).each {|skill| forget_skill(skill) unless @perm_skills.include?(skill)}
    mbs_chngeqp(slot_id,item)
    equip_skills(item).each {|skill| learn_skill(skill)}
  end
  #--------------------------------------------------------------------------
  # * Aquisição das habilidades do equipamento
  #     item : o equipamento em questão
  #--------------------------------------------------------------------------
  def equip_skills(item)
    
    return [] if item.nil?
    
    s = ""
    skills = []
    
    item.note[/<Actor[0]*#{self.id}\s*LearnSkills:\s*(.+>)/im]
    return [] if $1.nil?
    
    $1.each_char {|char|
    
      next if char == " "
      
      if char == "," || char == ">"
        skills << s.to_i
        s = ""
        next
      end
            
      s += char
    }
    
    item.note[/<Actor[0]*#{self.id}\s*LearnPSkills:\s*(.+>)/im]
    @perm_skills ||= []
    
    return [] if $1.nil?
    
    $1.each_char {|char|
    
      next if char == " "
      
      if char == "," || char == ">"
        skills << s.to_i
        @perm_skills << s.to_i
        s = ""
        next
      end
            
      s += char
    }
        
    return skills
    
  end
end
[/box2]

[box2 class=titlebg title=Créditos e Agradecimentos]- a mim por criar e disponibilizar
- a tiagoms pela ideia[/box2]
~ Masked

Tópico duplicado, portanto, esse tópico será trancado e vocês poderão ver o script e comentar aqui. :lock: