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

[RPGMV] Diferenças de pontuação na Formula de Dano (???)

Iniciado por Aandel, 07/07/2019 às 09:36

 :coffee:

Hi Pessoal!
Estava eu aqui testando algumas Skills e pelas varias Formulas que encontrei e que acabei de alguma maneira adicionando  elas em meu jogo, andei notando que algumas formulas colocam "." enquanto outras colocam "," eu imaginava que tanto uma quanto outra sinaliza que a Formula trata esses sinais como porcentagem(?  :o: )

Não sei se isso é verdade ou não, mas agora decidi testar uma formula simples para tentar tirar a prova real.

Formula Base: 10 + 50%  (esse 50% foi modificado usado os caracteres "." "," e até a própria "%" para tirar a prova real

10 + 0.50   dano final foi de 11
 10 + 0,50   dano final foi de 50


Então resolvi fazer o teste deixando ambos em 0.5 e 0,5

10 + 0.5   dano final foi de 11
10 + 0,5   dano final foi de 5


Acabei que ficando mais confuso ainda e tentei outra maneira para adicionar um pouco mais de duvidas: (Pq eu gosto de ficar perturbado rsrs)

10 + [0.5]   dano final foi de 101
10 + [0,5]   dano final foi de 0
10 + 5%   dano final foi de 0


Bem depois de todos esses testes minha cabeça bugou e resolvi pedir auxilio aos universitários, alguém pelo amor de Deus sabe me explicar o resultado dessas formulas, o porque de cada uma dar valores tão diferentes?
O que eu buscava inicialmente era uma Formula que desse um resultado de valor 15, adicionando ao valor 10 +50%. :facepalm:
Finalmente cheguei aos caracteres chamados parenteses ()
Quando usei eles o valor finalmente bateu os 15 pontos de dano no alvo.

10 + (0,5)  dano final foi de 15

Vlw galera!   

07/07/2019 às 10:48 #1 Última edição: 07/07/2019 às 10:49 por Brandt
Então, acontece que as fórmulas são javascript, como já comentei em outra ocasião x)

Em JS, o "." representa números de ponto flutuante, isto é, 0.5 é o mesmo que 1/2, 0.25 é o mesmo que 1/4, etc...

Já a vírgula é uma coisa completamente diferente, e é uma sintaxe meio estranha na verdade. Enquanto nós geralmente usamos ela pra representar o que o JS usa o ponto, pra javascript (e todas as linguagens de programação) a vírgula não representa pontos flutuantes, e sim divisão de elementos de alguma natureza.

No JS em específico, qualquer expressão "a, b" executa a, e executa e retorna b. Por exemplo:

4 * (alert(1), 0.5)


Colando isso no console do navegador, você deve ver uma caixa de alerta com "1", e o número 2 sendo escrito no console. No seu caso, ele calculava 10 + 0, e depois retornava o que vinha depois da vírgula.

Sobre os colchetes, nada a ver, colchetes representam listas, somar listas com números não dá certo xd

Essa última tentativa (10 + 5%) até que seria interessante, mas a sintaxe da linguagem não suporta esse tipo de coisa. O % em javascript é na verdade o operador de resto de divisão (por ex., 5 % 2 é 1). Provavelmente o dano é 0 porque essa fórmula da erro (você passou um % sem nada à direita!).

A forma correta de adicionar 50% ao dano total da fórmula seria simplesmente multiplicar o resultado final por 1.5, por exemplo:
(10 + Math.max(0, a.atk - b.def)) * 1.5


Espero ter ajudado \o

P.S Para mexer com essas fórmulas, recomendo bastante que dê uma estudada em javascript. Não precisa ser nada avançado, só o básico de variáveis e aritmética já te dá uma base ótima.

Tem esse tópico na RMWeb que ensina legal a mexer também.
~ Masked