Ajuda no dano e defesa de personagens e monstros!

7 Respostas   159 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

narutomatwal120

  • *
  • Posts: 6
  • Ouros: 0
Tópico criado em: 12/04/2019 às 08:34

Estou com um probleminha em meu projeto.
Sempre quando a defesa do monstro é maior que o ataque do personagem o dano é igual a zero, e eu gostaria de mudar isso para quando o dano for menor que a defesa que seja pelo menos 1 o resultado.

Kyo Panda

  • Mito
  • *
  • Posts: 259
  • Ouros: 195
Resposta 1: 12/04/2019 às 08:38

Qual a versão do seu RPG Maker?




Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 5: 14/04/2019 às 20:58

O ataque também é uma habilidade. Na verdade, é a primeira habilidade da aba Habilidades do banco de dados e sendo assim podemos utilizar o campo da fórmula para fazer isso que tu quer. Para isso usaremos a função Math.max().

Por padrão a fórmula de dano do ataque é a.atk * 4 - b.def * 2. Deixe-a igual a Math.max(1, a.atk * 4 - b.def * 2).

A função Math.max() retorna o maior valor dentre os enviados, estando esses valores separados por vírgula. Por exemplo, se chamarmos Math.max(1, 10), a função retornará 10. No entanto, se chamarmos Math.max(1, 0), a função retornará 1. Ou seja, na fórmula, quando o cálculo de dano resultar em zero, ela retornará o outro valor, um, que é maior.

narutomatwal120

  • *
  • Posts: 6
  • Ouros: 0
Resposta 6: 15/04/2019 às 08:37

O ataque também é uma habilidade. Na verdade, é a primeira habilidade da aba Habilidades do banco de dados e sendo assim podemos utilizar o campo da fórmula para fazer isso que tu quer. Para isso usaremos a função Math.max().

Por padrão a fórmula de dano do ataque é a.atk * 4 - b.def * 2. Deixe-a igual a Math.max(1, a.atk * 4 - b.def * 2).

A função Math.max() retorna o maior valor dentre os enviados, estando esses valores separados por vírgula. Por exemplo, se chamarmos Math.max(1, 10), a função retornará 10. No entanto, se chamarmos Math.max(1, 0), a função retornará 1. Ou seja, na fórmula, quando o cálculo de dano resultar em zero, ela retornará o outro valor, um, que é maior.

Bom eu tentei isso, porem essa formula so funciona para o ataque, e eu tenho varias habilidade que queria utiliza-la...e isso tras conflitos com os outros calculos de outras skills.
Ele acaba retornando 1 para todos os tipos de dano sempre.

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 7: 17/04/2019 às 06:40

Que tipo de conflitos com que tipos de cálculos? Porque essa função não altera em nada a função que já existe para a habilidade. Eu testei aqui e não retornou um para todos os danos não, somente quando o dano realmente seria zero. Eu recomendo tu resolver a fórmula substituindo os valores para ver se sua expressão está equilibrada. Talvez seja só questão de balanceamento.