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

Problema com Sistema de Batalha

Iniciado por DarlesLSF, 18/08/2018 às 22:05

18/08/2018 às 22:05 Última edição: 19/08/2018 às 20:12 por Corvo
Seguinte, to criando um sistema de batalha no rm2k3 e tô na parte em que eu mostro o dano causado, tanto no monstro quanto no personagem. A parte em que eu preciso de ajuda é na hora em que meu personagem utiliza uma das magias em um dos monstros. Vou exemplificar no vídeo abaixo:



No último monstro, as imagens do dano aparecem de forma errada, onde as unidades aparecem antes das dezenas. E isso só acontece quando utilizo essa magia (Ataque múltiplo) que mostro no vídeo e no último monstro, nos restante funciona perfeitamente, o problema é só nesse caso mesmo. Já vi e revi o evento, mas não acho nada que possa dar esse problema.
Alguém teria uma ideia do que poderia estar causando isso, somente nessa magia?
Darles LSF

Só pelo vídeo é complicado analisar. Poste uma imagem do evento em questão, das configurações da habilidade que apresenta o erro e de outras habilidades que funcionam normalmente. Podem ser várias coisas, de um zero no lugar errado até a ordem de execução dos comandos.

18/08/2018 às 22:34 #2 Última edição: 19/08/2018 às 07:34 por Corvo
No caso, mostra as dezenas e unidades do dano. Eu utilizo o mesmo esquema para os demais monstros e para o personagem, porém o erro só acontece quando utilizo uma magia e no último monstro do video.


Aqui a animação no caso:


A switch "calculo dano magias" liga a parte abaixo:
Darles LSF

Esse método para mostrar números já não é mais utilizado, dá uma olhada no projeto de exemplo da última atualização do 2k3. É possível fazer esse mesmo esquema com metade dos comandos, fica mais organizado e mais legível. Agora, na condição que mostra as dezenas, no número 4 uma das coordenadas está configurada como 190 enquanto o resto está em 180. Se você tem um evento desses para cada habilidade, e se o dano dela geralmente causa danos nos valores do vídeo, isso pode se relacionar com a posição do monstro na tela e com as coordenadas informadas para o evento da animação.

Citação de: Corvo online 19/08/2018 às 07:55
Esse método para mostrar números já não é mais utilizado, dá uma olhada no projeto de exemplo da última atualização do 2k3. É possível fazer esse mesmo esquema com metade dos comandos, fica mais organizado e mais legível. Agora, na condição que mostra as dezenas, no número 4 uma das coordenadas está configurada como 190 enquanto o resto está em 180. Se você tem um evento desses para cada habilidade, e se o dano dela geralmente causa danos nos valores do vídeo, isso pode se relacionar com a posição do monstro na tela e com as coordenadas informadas para o evento da animação.

Não tinha visto que estava 190 no número 4 das dezenas. Obrigado, está funcionando agora!
Sobre o projeto de exemplo, eu já tinha visto como ele mostra os valores nas figuras, mas não entendi o funcionamento muito bem, mesmo lendo as instruções alguns comandos eu não sei o porquê de estarem ali. Se tu ou qualquer outra pessoa pudesse me explicar mais detalhadamente aquele método, eu ficaria agradecido.
Darles LSF

Na prática é quase a mesma coisa. No caso do exemplo, o número a ser mostrado é salvo em uma variável. Outra salva o número de dígitos do número e mais duas definem as coordenadas. Então os dígitos são verificados com o mesmo esquema dos módulos, porém dentro de um loop. Ainda dentro dele, são selecionadas as imagens dos dígitos e estas são mostradas diretamente. As imagens são salvas com um nome pré-definido que tenha um prefixo seguido do número correspondente. Por exemplo, a imagem do número um se chama Zahl1. Dentro do loop, no comando de mostrar imagens você seleciona diretamente o nome 'Zahl' e concatena o número do dígito verificado acima.

Explicando assim parece complicado, mas todo o evento está aqui. E Deus salve o cidadão que sugeriu aos desenvolvedores que se possa copiar eventos diretamente para texto. u.u

@> Comment: 
 :               : /-------------------------------------------------/
 :               : // This stores the player input to a temporary
 :               : // variable.
 :               : /-------------------------------------------------/
@> Control Variables: [0007:INPUT_NUMBER] = Variable [0006]
@> Comment: 
 :               : /-------------------------------------------------/
 :               : // This variable is for picture ID. 
 :               : // We will go from 101-107 since we have 7 Digits.
 :               : /-------------------------------------------------/
@> Control Variables: [0008:INPUT_ID_COUNTER] = 101 
@> Comment: 
 :               : /-------------------------------------------------/
 :               : // This sets the coordinates of the pictures.
 :               : /-------------------------------------------------/
@> Control Variables: [0009:INPUT_X] = 250 
@> Control Variables: [0010:INPUT_Y] = 50 
@> Comment: 
 :               : /-------------------------------------------------/
 :               : // Initiate Loop
 :               : /-------------------------------------------------/
@> Loop
  @> Comment: 
   :               : /-------------------------------------------------/
   :               : // We will now divide the variable's original value
   :               : // and store the remainder on a new variable using
   :               : // the modulus variable command. 
   :               : //
   :               : // For example, number 1337. In order to display it
   :               : // via pictures, we need to be able to take each digit
   :               : // and separate them to 1 (thousands), 3(hundreds), 3(tens), 
   :               : // 7(ones)
   :               : //
   :               : // Mod 10 will take only the rightmost digit, and /10 will 
   :               : // remove the rightmost digit
   :               : /-------------------------------------------------/
  @> Comment: 
   :               : // In this picture command, we're using Variable 11
   :               : // as a suffix. If you go to the pictures folder, you 
   :               : // will find files with the name Zahl (German word for number).
   :               : // You will also notice they have numbers like Zahl0, Zahl1, etc.
   :               : // 
   :               : // The purpose of this is so you don't have to create a 
   :               : // long conditional branch to show each number.
   :               : /-------------------------------------------------/
  @> Control Variables: [0011:DIGIT] = Variable [0007]
  @> Control Variables: [0011:DIGIT] %= 10 
  @> Show Picture: Variable [0008:INPUT_ID_COUNTER], 'Zahl?' <- V[0011:DIGIT], Variable [0009][0010], 100%, 0%, M6
  @> Control Variables: [0007:INPUT_NUMBER] /= 10 
  @> Control Variables: [0008:INPUT_ID_COUNTER] += 1 
  @> Control Variables: [0009:INPUT_X] -= 16 
  @> Comment: 
   :               : /-------------------------------------------------/
   :               : // Break loop once 7 digits are displayed.
   :               : /-------------------------------------------------/
  @> Conditional Branch: Variable [0008:INPUT_ID_COUNTER] > 107
    @> Break Loop
    @>
   : Branch End
  @>
 : Repeat Above

19/08/2018 às 19:54 #6 Última edição: 19/08/2018 às 20:05 por DarlesLSF
Obrigado pela explicação. É que eu voltei em junho a mexer novamente no Rpg maker, havia parado quando eu tinha 18, hoje estou com 26 haha. E eu utilizava o rm2k, sendo assim ainda tenho muito pra reaprender.
Consegui adaptar pra mostrar o dano do meu personagem, só tenho uma dúvida novamente: no momento meu herói não causa mais que 100 de dano, sabe como faço pra não mostrar o 0 nas centenas, utilizando esse esquema acima?
Darles LSF

Nesse caso você teria de incluir uma condição verificando o dano. Como a imagem mostrada sempre seria de três dígitos, seria apenas para incluir manualmente o zero antes de rodar o loop.  :sera:

Citação de: Corvo online 19/08/2018 às 19:57
Nesse caso você teria de incluir uma condição verificando o dano. Como a imagem mostrada sempre seria de três dígitos, seria apenas para incluir manualmente o zero antes de rodar o loop.  :sera:
Obrigado de novo, minhas dúvidas foram esclarecidas.
Se algum mod quiser fechar o tópico, sinta-se a vontade.
Darles LSF