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

Ajuda com sistema de batalha

Iniciado por Lavor, 07/01/2020 às 09:42

07/01/2020 às 09:42 Última edição: 07/01/2020 às 17:24 por Lavor
Olá!
Estou criando um sistema de batalha, no VX Ace, e queria saber se existe algum script que separa os turnos dos inimigos dos turnos dos jogadores, por exemplo, em um turno os jogadores atacam e em outro os inimigos.

07/01/2020 às 10:41 #1 Última edição: 07/01/2020 às 10:48 por Raizen
Citação de: Lavor online 07/01/2020 às 09:42
Olá!
Estou criando um sistema de batalha, no VX Ace, e queria saber se existe algum script que separa os turnos dos inimigos dos turnos dos jogadores, por exemplo, em um turno os jogadores atacam e em outro os inimigos.
Eu acho que não haha, mas... Eu mexi tanto na batalha do Ace que vou acredito conseguir fazer isso pra ti sem problemas, qual que você quer que ataque primeiro?

Outra solução é simplesmente exagerar na velocidade deles, tipo... jogar os personagens com velocidade 100 e os inimigos com 10, isso separa eles também  :XD:

Não que eu conheça, porque é uma daquelas funções muito básicas. Porém, um turno é só a alternância entre as ações. Pense assim, tudo o que você precisa fazer é saber quem está agindo e quem vai agir depois. Seu sistema leva em consideração a velocidade dos envolvidos? Se sim, é só fazer algumas condições organizando por esta sequência. Do contrário, você precisa:

Saber de quem é a ação e se este já agiu.
Executar a ação.
Executar as consequências da ação. Atacou? Acertou? Houve dano? Usou um item? Alguém morreu?
Se agiu, quem é o próximo da fila? O inimigo ou o jogador? Ative a tomada de ação de quem for.
Repita este processo.


Aqui você tem um exemplo extremamente básico do que seria uma batalha. Outro exemplo, um pouquinho mais trabalhado, mas ainda sendo o básico do básico.

07/01/2020 às 11:11 #3 Última edição: 07/01/2020 às 11:13 por Raizen
Posso estar errado, mas acho que é só isso que ele queria XD, não sei haha...

#==============================================================================
# ** BattleManager
#------------------------------------------------------------------------------
#  Este módulo gerencia o andamento da batalha.
#==============================================================================

module BattleManager
  #--------------------------------------------------------------------------
  # * Criação da seqüencia de ações
  #--------------------------------------------------------------------------
  def self.make_action_orders
	actor_battlers = []
	actor_battlers += $game_party.members
	actor_battlers.sort! {|a,b| b.speed - a.speed }
	actor_battlers.each {|battler| battler.make_speed }
	enemy_battlers = []
	enemy_battlers += $game_troop.members
	enemy_battlers.sort! {|a,b| b.speed - a.speed }
	enemy_battlers.each {|battler| battler.make_speed }
        @action_battlers = []
         @action_battlers += actor_battlers + enemy_battlers
  end
end

Citação de: Raizen online 07/01/2020 às 10:41
Eu acho que não haha, mas... Eu mexi tanto na batalha do Ace que vou acredito conseguir fazer isso pra ti sem problemas, qual que você quer que ataque primeiro?

Outra solução é simplesmente exagerar na velocidade deles, tipo... jogar os personagens com velocidade 100 e os inimigos com 10, isso separa eles também  :XD:
Eu pensei nisso também, mas achei que era muita gambiarra. :tacerto:

Citação de: Corvo online 07/01/2020 às 10:45
Não que eu conheça, porque é uma daquelas funções muito básicas. Porém, um turno é só a alternância entre as ações. Pense assim, tudo o que você precisa fazer é saber quem está agindo e quem vai agir depois. Seu sistema leva em consideração a velocidade dos envolvidos? Se sim, é só fazer algumas condições organizando por esta sequência. Do contrário, você precisa:

Saber de quem é a ação e se este já agiu.
Executar a ação.
Executar as consequências da ação. Atacou? Acertou? Houve dano? Usou um item? Alguém morreu?
Se agiu, quem é o próximo da fila? O inimigo ou o jogador? Ative a tomada de ação de quem for.
Repita este processo.


Aqui você tem um exemplo extremamente básico do que seria uma batalha. Outro exemplo, um pouquinho mais trabalhado, mas ainda sendo o básico do básico.
Me expressei mal, não estou fazendo um sistema de batalha por eventos, e sim editando o sistema de batalha comum do vx ace, mas obrigado mesmo assim.

Citação de: Raizen online 07/01/2020 às 11:11
Posso estar errado, mas acho que é só isso que ele queria XD, não sei haha...

#==============================================================================
# ** BattleManager
#------------------------------------------------------------------------------
#  Este módulo gerencia o andamento da batalha.
#==============================================================================

module BattleManager
  #--------------------------------------------------------------------------
  # * Criação da seqüencia de ações
  #--------------------------------------------------------------------------
  def self.make_action_orders
	actor_battlers = []
	actor_battlers += $game_party.members
	actor_battlers.sort! {|a,b| b.speed - a.speed }
	actor_battlers.each {|battler| battler.make_speed }
	enemy_battlers = []
	enemy_battlers += $game_troop.members
	enemy_battlers.sort! {|a,b| b.speed - a.speed }
	enemy_battlers.each {|battler| battler.make_speed }
        @action_battlers = []
         @action_battlers += actor_battlers + enemy_battlers
  end
end

É isso mesmo, testei aqui, muito obrigado por ter feito o script!