Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Pokémon Genesis Online! (PGO)
Qua 05 Jul 2017, 17:08 por Lexar

» Tileset Converter to MV
Sex 12 Maio 2017, 13:07 por Douggi

» [Dúvida] Como tirar a porcentagem de esquiva
Ter 09 Maio 2017, 22:15 por Neil Flame Runner

» Pack Resources, Sprites e etc
Qua 23 Dez 2015, 09:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Ter 22 Dez 2015, 08:14 por ::KimMax::

» Fantasy Art Online
Dom 18 Out 2015, 16:42 por daviih123

» Você vai ter medo do Nerve gear?
Sab 25 Jul 2015, 16:02 por Kirito-kun

» O Barato é louco
Sab 27 Jun 2015, 15:26 por Halt

» Download RPG Maker 2000 + RTP em português
Qui 21 Maio 2015, 19:28 por Wismael

» Divulgando meu grupo e página do Facebook
Ter 19 Maio 2015, 13:06 por Halt


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 Aprender Habilidades do Inimigo em Seg 15 Out 2012, 01:22

Carlos

avatar
Administrador
Administrador
Introdução:

Esse script permite adicionar um sistema de aprendizado de skill similar ao do Breath of Fire 4: Você pode aprender determinadas skill do inimigo se o personagem estiver defendendo.

Um personagem que já tenha a skill (por exemplo aprendeu ela atravéz de ganho de níveis), não aprenderá a skill (no script original ele "aprendia" a skill, mesmo que ele já tivesse, o que impedia que outros membros pudessem aprender)

As habilidades que podem ser aprendidas aparecem com nome em azul até que elas tenham sido efetivamente aprendidas.

Agora é possível definir que personagem pode ou não pode aprender skills dessa maneira.

Também é possível selecionar uma animação para ser exibida quando o personagem aprender uma skill com esse sistema.

Screenshots:

Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]



[Você precisa estar registrado e conectado para ver esta imagem.]


Como usar:

Apenas cole o script acima do main.

Este script é muito simples de se usar, Você deve criar um atributo com ID igual ao valor em "Learn_Skill_Element" na aba de sistemas.

Depois deve adicioná-lo às habilidades que você deseja que possam ser aprendidas

Você pode alterar as configurações no "module Atoa" dentro do próprio script.

Script:

Código:
#==============================================================================
# ** Aprender Habilidades do Inimigo
#------------------------------------------------------------------------------
#  Original para VX por TywinLannister
#  Versão XP por Atoa
#==============================================================================
# Este script permite que o personagem aprenda determinadas skills
# usadas por inimigosse ele estiver defendendo
# Fiz algumas modificações:
# - o personagem não "aprende" a habilidade
#  se ele já possuí-la (o que tiraria a chance de outro aprende-la)
# - as habilidades que podem ser aprendidas aparecem com nome em
#  azul quando usadas, voltando a cor original depois de aprendidas
# - possivel definir que personagens podem aprender habilidades
#  desta maneira
# - possivel atribuir uma animação que indica qual personagem
#  aprendeu a skill
#==============================================================================
# Usando o script:
# Este script é muito simples de se usar, Você deve criar um atributo
# com ID igual ao valor em "Learn_Skill_Element" na aba de sistemas.
# Depois deve adicioná-lo às habilidades que você deseja que
# possam ser aprendidas.
# Outras configurações podem ser feitas no "module Atoa"
#
# IMPORTANTE:
# Primeiro o sistema verifica a chance de aprender a skill,
# se tiver sucesso, ele seleciona aleatóriamente um dos personagens
# que estiver defendendo, e após isso é que ele verifica se o
# personagem pode ou não aprender a skill.
# Por isso, mesmo que a chance esteja 100%, pode ocorrer de ninguém
# aprender a skill, pois o sistema selecionou alguém inapto a aprende-la.
#==============================================================================

module Atoa
  # ID do atributo das habilidades que podem ser aprendidas
  Learn_Skill_Element = 18

  # Chande de aprender uma skill do inimigo
  Chance_to_learn = 80

  # Adicine as IDs dos personagens que podem aprender habilidades
  Char_can_learn = [1,2,7,8]

  # ID da animação que será mostrada ao aprender uma skill
  # deixe = nil para que nenhuma animação seja mostrada
  Learn_animation = 98

  # Mudar cor do texto das habilidades que podem ser aprendias?
  Change_Text_Color = true

  # Transparência da Janela de aprendizado da Skill
  Window_Opacity = 255

  # Texto de Aprendizado da skill
  Learn_Skill_Tex = "{actor} aprendeu {skill}"
end

#==============================================================================
# ** Game_Party
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  alias enemy_skills_initialize initialize
  #--------------------------------------------------------------------------
  attr_accessor :enemy_skills_learned
  #--------------------------------------------------------------------------
  def initialize
    enemy_skills_initialize
    @enemy_skills_learned = []
  end
end

#==============================================================================
# ** Window_Learn_Skill
#==============================================================================
class Window_Learn_Skill < Window_Base
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 640, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.back_opacity = Atoa::Window_Opacity
    refresh
  end
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.draw_text(0, 0, width - 32, 32, $skill_text, 1)
  end
end

#==============================================================================
# ** Window_Help
#==============================================================================
class Window_Help < Window_Base
  #--------------------------------------------------------------------------
  def set_text2(text, align = 0)
    self.contents.clear
    self.contents.font.color = Color.new(160, 192, 255, 255)
    self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
    @text = text
    @align = align
    @actor = nil
    self.visible = true
  end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  def now_action
    @now_action = $data_weapons[@active_battler.weapon_id] if @active_battler.current_action.kind == 0 and @active_battler.current_action.basic == 0
    @now_action = $data_skills[@active_battler.current_action.skill_id] if @active_battler.current_action.kind == 1
    @now_action = $data_items[@active_battler.current_action.item_id] if @active_battler.current_action.kind == 2
  end
  #--------------------------------------------------------------------------
  alias enemy_skill_update_phase4_step3 update_phase4_step3
  def update_phase4_step3
    return if check_action_can_use
    @help_window.set_text2(@skill.name, 1) if Atoa::Change_Text_Color and @skill.element_set.include?(Atoa::Learn_Skill_Element) and not $game_party.enemy_skills_learned.include?(@skill.id)
    enemy_skill_update_phase4_step3
  end
  #--------------------------------------------------------------------------
  alias skill_update_phase4 update_phase4_step6
  def update_phase4_step6
    skill_update_phase4
    if @active_battler.current_action.kind == 1
      defending_members = []
      chance_to_learn = Atoa::Chance_to_learn
      skill =  $data_skills[@active_battler.current_action.skill_id]
      if skill.element_set.include?(Atoa::Learn_Skill_Element)
        unless $game_party.enemy_skills_learned.include?(skill.id)
          for member in $game_party.actors
            defending_members.push(member) if member.guarding?
          end
        end
      end
      if defending_members.size > 0
        learn_chance = rand(100)
        if learn_chance < chance_to_learn
          member_to_learn = defending_members[rand(defending_members.size)]
          unless member_to_learn.skill_learn?(skill.id)
            if Atoa::Char_can_learn.include?(member_to_learn.id)
              member_to_learn.animation_id = Atoa::Learn_animation unless Atoa::Learn_animation == nil
              member_to_learn.learn_skill(skill.id)       
              $game_party.enemy_skills_learned.push(skill.id)
              $skill_text = Atoa::Learn_Skill_Tex.dup
              $skill_text.gsub!(/{actor}/i) {"#{member_to_learn.name}"}
              $skill_text.gsub!(/{skill}/i) {"#{skill.name}"}
              @window_learn_skill = Window_Learn_Skill.new
              waiting = 0
              loop do
                Graphics.update
                Input.update
                @spriteset.update
                @window_learn_skill.refresh
                waiting += 1
                break if (Input.trigger?(Input::C) and waiting > 30) or waiting > 100
              end
              @window_learn_skill.dispose
            end
          end
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  def check_action_can_use
    now_action
    if @now_action.is_a?(RPG::Skill) and not @active_battler.skill_can_use?(@skill.id)
      unless @active_battler.current_action.forcing
        $game_temp.forcing_battler = nil
        @phase4_step = 1
        return true
      end
    end
    if @now_action.is_a?(RPG::Item) and not $game_party.item_can_use?(@item.id)
      @phase4_step = 1
      return true
    end
    return false
  end
end

Créditos:

Versão XP feita por Atoa
Original para VX feita por TywinLannister




__________________________________________
[Você precisa estar registrado e conectado para ver esta imagem.]


[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
Ver perfil do usuário http://arenarpgmaker.eclipserpg.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum