Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte no desenvolvimento de jogos


2 participantes

    Aprender Habilidades do Inimigo

    avatar
    samuel6406
    Banido
    Banido

    Mensagens : 49
    Créditos : 11

    Aprender Habilidades do Inimigo Empty Aprender Habilidades do Inimigo

    Mensagem por samuel6406 Qua Jun 13, 2012 7:13 pm

    Aprender Habilidades do Inimigo

    Versão XP por Atoa
    Original para VX por TywinLannister




    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.
    Fiz algumas modificações para que o sistema ficasse ainda mais parecido com a versão BoF:
    - 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 é possivel selecionar uma animação para ser exibida quando o personagem aprender uma skill com esse sistema.

    Características

    • Permite aprender Habilidades dos inimigos quando defendendo
    • Habilidades que podem ser aprendidas aparecem com nome destacado
    • Possivel definir quais personagens podem aprender skills com este sistema
    • Pode escolher uma animação para ser exibida quando o personagem aprender uma skill com esse sistema

    Screenshots
    Aprender Habilidades do Inimigo Th_Img1-15

    Aprender Habilidades do Inimigo Th_Img-12

    Como usar

    Para instalá-lo, 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.

    Demo

    Não necessita de Demo

    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 e Agradecimentos
    •Versão XP feita por Atoa
    •Original para VX feita por TywinLannister
    insertt
    insertt
    Iniciante
    Iniciante

    Mensagens : 41
    Créditos : 9

    Aprender Habilidades do Inimigo Empty Re: Aprender Habilidades do Inimigo

    Mensagem por insertt Ter Ago 28, 2012 9:58 am

    Nossa vlw mesmo cara... vou testar aki, se funcionar vc ganha +1 crédito Glad

    Fan Bar:
    Spoiler:



    Aprender Habilidades do Inimigo 47011188

      Data/hora atual: Seg Out 25, 2021 1:48 pm