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

Losing Arrows

Iniciado por Khrono, 28/04/2014 às 11:24

28/04/2014 às 11:24 Última edição: 28/04/2014 às 21:39 por Khrono
Script:
Spoiler
module Khrono_LA
  
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#                               Configuração                                   #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

#                  Aqui você coloca a ID do arco na aba Termos: 

                                  ID_ARCO = 6
                                  
#                 Coloque o ID do item que servirá como flecha:

                                ID_FLECHA = 61    
                                
#                Mensagem que aparecerá quando acaberem as flechas:

                    MSG_FLECHA = " não tem flechas equipadas"
                    
#            Mensagem que aparecerá quando o arco não estiver equiado:

                      MSG_ARCO = " não está equipando um arco"
                                        
#                  Coloque o nome do arqueiro que está no grupo:

                            NOME_ARQUEIRO = "Brenda"
                            
#                     Coloque o ID do arqueiro no DataBase 

                                ID_ARQUEIRO = 6

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#                            Fim Da Configuração                               #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
def habilidade_arco
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#                       Configuração Das Habilidades                           #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
  case @skill.id
    when 108
      return 3
  end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#                            Fim Da Configuração                               #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
end
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#                               Scene_Battle                                   #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

class Scene_Battle < Scene_Base
  include Khrono_LA
  alias khn_start start
  def start
    khn_start
    $msg_arco = 0
    $msg_arco2 = 0
  end
    def turn_end
      if $atacou_flecha
        $game_party.lose_item($data_armors[Khrono_LA::ID_FLECHA], 1, include_equip = true)
        $atacou_flecha = false
      end  
      if $habilidade_flecha
        $game_party.lose_item($data_armors[Khrono_LA::ID_FLECHA], @quantidade_flecha, include_equip = true)
        $habilidade_flecha = false
      end
      all_battle_members.each do |battler|
      battler.on_turn_end
      refresh_status
      @log_window.display_auto_affected_status(battler)
      @log_window.wait_and_clear
    end
    BattleManager.turn_end
    process_event
    start_party_command_selection
  end
  def on_enemy_ok
    if BattleManager.actor.name == (Khrono_LA::NOME_ARQUEIRO)
     if $game_actors[Khrono_LA::ID_ARQUEIRO].wtype_equipped?(Khrono_LA::ID_ARCO)
      if $game_party.members_equip_include?($data_armors[Khrono_LA::ID_FLECHA])
          BattleManager.actor.input.target_index = @enemy_window.enemy.index
          @enemy_window.hide
          @skill_window.hide
          @item_window.hide
          $atacou_flecha = true
          next_command 
          else
            if $msg_arco == 0
            $game_message.add(Khrono_LA::NOME_ARQUEIRO + Khrono_LA::MSG_FLECHA)
            $game_actors[Khrono_LA::ID_ARQUEIRO].change_equip(0, nil) #  Arqueiro desequipa arco
            BattleManager.actor.input.target_index = @enemy_window.enemy.index
            @enemy_window.hide
            @skill_window.hide
            @item_window.hide
            $msg_arco = 1
            next_command
            turn_end            
            create_actor_command_window
            else
            BattleManager.actor.input.target_index = @enemy_window.enemy.index
            @enemy_window.hide
            @skill_window.hide
            @item_window.hide
            next_command
            end
          end
        else
          if $msg_arco == 0
            $game_message.add(Khrono_LA::NOME_ARQUEIRO + Khrono_LA::MSG_ARCO)
            BattleManager.actor.input.target_index = @enemy_window.enemy.index
            @enemy_window.hide
            @skill_window.hide
            @item_window.hide
            $msg_arco = 1
            next_command
          else
            BattleManager.actor.input.target_index = @enemy_window.enemy.index
            @enemy_window.hide
            @skill_window.hide
            @item_window.hide
            next_command
          end
        end
      else
        BattleManager.actor.input.target_index = @enemy_window.enemy.index
        @enemy_window.hide
        @skill_window.hide
        @item_window.hide
        next_command 
      end
    end
    def on_skill_ok
    @skill = @skill_window.item
    BattleManager.actor.input.set_skill(@skill.id)
    BattleManager.actor.last_skill.object = @skill
    habilidade_arco
    if BattleManager.actor.name == (Khrono_LA::NOME_ARQUEIRO)
      if habilidade_arco - 1 <= $game_party.item_number($data_armors[Khrono_LA::ID_FLECHA])
        $habilidade_flecha = true
        @quantidade_flecha = habilidade_arco
        if !@skill.need_selection?
          @skill_window.hide
          $habilidade_flecha
          next_command
        elsif @skill.for_opponent?
          select_enemy_selection
        else
          select_actor_selection
        end
      else
        @skill_window.hide
        $game_message.add(Khrono_LA::NOME_ARQUEIRO + " não possui flechas necessárias para \nessa habilidade")
        turn_end
      end
    else
    if !@skill.need_selection?
      @skill_window.hide
      next_command
    elsif @skill.for_opponent?
      select_enemy_selection
    else
      select_actor_selection
    end
    end
  end
end
class Game_Actor < Game_Battler
  def skill_wtype_ok?(skill)
    if skill.required_wtype_id1 == 6
      wtype_id1 = skill.required_wtype_id1
      wtype_id2 = skill.required_wtype_id2
      return true if wtype_id1 > 0 && wtype_equipped?(wtype_id1) &&
      $game_party.members_equip_include?($data_armors[Khrono_LA::ID_FLECHA])
      return true if wtype_id2 > 0 && wtype_equipped?(wtype_id2)&&
      $game_party.members_equip_include?($data_armors[Khrono_LA::ID_FLECHA])
      return false      
    else
      wtype_id1 = skill.required_wtype_id1
      wtype_id2 = skill.required_wtype_id2
      return true if wtype_id1 == 0 && wtype_id2 == 0
      return true if wtype_id1 > 0 && wtype_equipped?(wtype_id1)
      return true if wtype_id2 > 0 && wtype_equipped?(wtype_id2)
      return false 
    end
  end
end
[close]

Introdução:

Já reparou que os arqueiros do RPG Maker, na maioria dos jogos, possuem uma habilidade padrão e não precisa ser ativada que é:

Não precisar de flechas para usar o arco?   :¬¬:

Pois é, eu não me incomodava tanto com isso no começo, mas depois eu passei a querer que meus arqueiros gastassem flechas ao usar o arco, e nisso deu um sistema meu por eventos.

Eu mesmo, achei aquele sistema por eventos confuso porque tinha que adicionar um novo tipo de habilidade na aba termos, e fora que sistemas por eventos normalmente são difices de entender e configurar. Desde de que fiz aquele sistema ficou guardada em minha mente de fazer o mesmo sistema só que mais simples de configurar, e sem precisar criar um novo tipo de habilidade, ou seja, fazer por script. E aí está, Losing Arrows 1.0 por script.

O Script é de fácil manuseio, basta copiar para seu projeto e configura-lo! Muito importante essa parte! sem configura-lo ele vai dar erro! mas veremos como é simples de usa-lo.

Limite do sistema:
Bom eu fiz esse script para um projeto meu, e no meu caso só terá um arqueiro no jogo todo, ou seja, o script serve apenas se o seu grupo de herois existir apenas um arqueiro. Acredito que seja fácil mudar isso, mas eu já perdi muito tempo com ele ontem e hoje, pois tenho ainda outros scripts para fazer..

Como Usar:

Parte 1:
Antes de tudo vá na aba armadura do database e crie a flecha (sim é na aba armadura mesmo!) e pode personaliza-la no jeito que quiser, apenas atente ao fato, que a classificação tem que ser Acessorios pois vamos equipar as flechas em Acessorios! isso é importante! segue uma imagem de como personalizei:
Spoiler

[close]

Parte 2:
Agora vá na aba Termos e veja qual é a ID do arco em Tipos de Armas. Se você não criou ou deletou algum tipo de arma o ID do arco é 6. Abaixo uma imagem mostrando a aba Termos no meu caso:

Spoiler
[close]

Se quiser personalize a mensagem que irá aparecer quando o arqueiro estiver sem flechas ou sem arco alterando o MSG_FLECHA e MSG_ARCO, respectivamente. Lembre de deixar aquele espaço antes da mensagem, pois ali entra o nome do arqueiro.

As duas últimas linhas de configuração é reservada para que você coloque o nome do arqueiro que está em seu grupo e sua ID.

Parte 3:
Agora chegou a hora de configurar as habilidades que usem as flechas. Se quiser criar uma habilidade que atire 4 flechas de uma vez, é aqui que vai entrar a configuração dela.

Se quiser que a habilidade de ID = 110 gaste 4 flechas basta acrescentar:
when 110
      return 4

e o código ficaria:
  case @skill.id
    when 108
      return 3
    when 110
      return 4
  end

Pronto a configuração está completa! teste antes para ver se tá tudo certinho. Não estando, me avise para q eu corrija eventuais bugs! e não esqueça do seu FeedBack, ele será de grande ajuda para mim!

Videos:

Aqui o baú me dá apenas 3 flechas e eu uso a habilidade tiro triplo (gastam 3 flechas essa habilidade)


Aqui o baú me dá 8 flechas e eu uso a habilidade Mil Flechas (que atira 4 flechas em inimigos aleatórios), ataco normal (gasto 1 flecha), e uso a habilidade Tiro Triplo ( que atira 3 flechas em inimigos aleatórios), ficando assim sem flechas.


Criador: Khrono


Olá Khrono, muito prazer em conhece-lo.

Kkkk, pior que já pensei, mas achei que era um detalhe que ninguém ligava, fico feliz que alguém tenha reparado neste detalhe além de mim.

Obrigado pro compartilhar o seu trabalho Khrono, um sistema lógico! ^^


Opa! Prazer em conhece-lo também Lhu!

É também achava que era o único q me importava com isso rsrs! que bom que gostou da ideia!

Eu pretendo aperfeiçoa-lo mais, como por exemplo o arqueiro poder equipar flechas q acrescentam pontos de ataques extras.

Obrigado pelo Feed! agradeço muito!

OBS: Video acrescentado.



mais um bom sistema do tio khrono curti bastante, realmente isso que você citou incomoda bastante
como arqueiros atacam sem flechas  :O_O: com seu sistema isso foi resolvido, bom trabalho tio!  :XD:

Opa Obrigado SimonMuran!

Que bom que gostou!

Fico muito feliz que meus sistemas o agrade!

Muito Obrigado!

Flw!!

Parabéns o pelo script! Realmente, detalhes são quase invisíveis ao olho nu. Parabéns por ter essa ideia. (:
Unique Destiny | um novo conceito de RPG Maker 2000!

amigo achei massa so mudei uma coisa passei as fllechas pro lugar do escudo.
teria como fazer mas tipo de flecha?