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:55

18/05/2014 às 18:55 Última edição: 19/05/2014 às 00:36 por Masked
[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
#==============================================================================
($imported ||= {})[:mbs_equipment_skills] = true
#==============================================================================
# ** 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#{self.id}\s*LearnSkills:\s*(.+>)/im]
    unless $1.nil?
      $1.each_char {|char|
      
        next if char == " "
        if char == "," || char == ">"
          skills << s.to_i
          p skills
          s = ""
          next
        end
              
        s += char
      }
    end
    
    item.note[/<Actor#{self.id}\s*LearnPSkills:\s*(.+>)/im]
    @perm_skills ||= []
    
    return skills 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

Tio Masked esse tiagoms está como o tio
Alisson, dando sugestões toda hora, aproveita que pessoas assim
que irão nos levar ao sucesso :XD:

Bom, o script é muito diferente, nunca vi nada do tipo, parabéns pelo
trabalho e continue assim :blink:
Prazer, Terror dos Modinha

CitarMais um script que fiz a pedido do tiagoms, é bem útil e deveria haver algum sistema do tipo por padrão no RPG Maker...

Armas/Armaduras => Traços => Habilidades => Habilidade Adicional => Enjoy

@Makers: valeu =D

@Azraven: tem isso mesmo, mas eu me referia a não dar pra remover a habilidade quando remover o equipamento (não sem eventos paralelos, mas num jogo com muitos equipamentos isso se tornaria inviável), e nem adicionar diferentes habilidades para diferentes personagens (novamente, é possível com eventos mas tem casos em que é inviável) :=p:
~ Masked

De fato não tinha reparado a possibilidade de adicionar diferentes habilidades para diferentes personagens. Bom script. :ok:

Atualizei o script, fiz umas besteiras e já corrigi, peço que quem quer que tenha pego o script pegue a versão mais atualizada  :ok:
~ Masked