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

Ajuda com código

Iniciado por DarlesLSF, 06/07/2022 às 10:29

Bom dia, tô fazendo um sistema de batalha customizado no Rm2k3 (utilizando sprites de Chrono trigger por enquanto). Tenho 3 monstros na batalha e no momento to na parte em que o jogador seleciona o monstro que deseja atacar. Segue abaixo o código:
@> Key Input Processing: [0043:MENU_KEY], Wait
@> Conditional Branch: V[0043:MENU_KEY] == 1
  @> Conditional Branch: V[0049:monstro atual] == 1
    @> Conditional Branch: V[0038:m3_HP] > 0
      @> Control Variables: [0044:cursor_batalha_x] = [monstro 3]'s Screen X
      @> Control Variables: [0045:cursor_batalha_y] = [monstro 3]'s Screen Y
      @> Control Variables: [0049:monstro atual] = 3 
      @>
     : Else
      @> Conditional Branch: V[0033:m2_HP] > 0
        @> Control Variables: [0044:cursor_batalha_x] = [monstro 2]'s Screen X
        @> Control Variables: [0045:cursor_batalha_y] = [monstro 2]'s Screen Y
        @> Control Variables: [0049:monstro atual] = 2 
        @>
       : Else
        @> Control Variables: [0044:cursor_batalha_x] = [monstro 1]'s Screen X
        @> Control Variables: [0045:cursor_batalha_y] = [monstro 1]'s Screen Y
        @> Control Variables: [0049:monstro atual] = 1 
        @>
       : Branch End
      @>
     : Branch End
    @>
   : Else
    @> Conditional Branch: V[0049:monstro atual] == 2
      @> Conditional Branch: V[0028:m1_HP] > 0
        @> Control Variables: [0044:cursor_batalha_x] = [monstro 1]'s Screen X
        @> Control Variables: [0045:cursor_batalha_y] = [monstro 1]'s Screen Y
        @> Control Variables: [0049:monstro atual] = 1 
        @>
       : Else
        @> Conditional Branch: V[0038:m3_HP] > 0
          @> Control Variables: [0044:cursor_batalha_x] = [monstro 3]'s Screen X
          @> Control Variables: [0045:cursor_batalha_y] = [monstro 3]'s Screen Y
          @> Control Variables: [0049:monstro atual] = 3 
          @>
         : Else
          @> Control Variables: [0044:cursor_batalha_x] = [monstro 2]'s Screen X
          @> Control Variables: [0045:cursor_batalha_y] = [monstro 2]'s Screen Y
          @> Control Variables: [0049:monstro atual] = 2 
          @>
         : Branch End
        @>
       : Branch End
      @>
     : Else
      @> Conditional Branch: V[0049:monstro atual] == 3
        @> Conditional Branch: V[0033:m2_HP] > 0
          @> Control Variables: [0044:cursor_batalha_x] = [monstro 2]'s Screen X
          @> Control Variables: [0045:cursor_batalha_y] = [monstro 2]'s Screen Y
          @> Control Variables: [0049:monstro atual] = 2 
          @>
         : Else
          @> Conditional Branch: V[0028:m1_HP] > 0
            @> Control Variables: [0044:cursor_batalha_x] = [monstro 1]'s Screen X
            @> Control Variables: [0045:cursor_batalha_y] = [monstro 1]'s Screen Y
            @> Control Variables: [0049:monstro atual] = 1 
            @>
           : Else
            @> Control Variables: [0044:cursor_batalha_x] = [monstro 3]'s Screen X
            @> Control Variables: [0045:cursor_batalha_y] = [monstro 3]'s Screen Y
            @> Control Variables: [0049:monstro atual] = 3 
            @>
           : Branch End
          @>
         : Branch End
        @>
       : Branch End
      @>
     : Branch End
    @>
   : Branch End
  @> Control Variables: [0044:cursor_batalha_x] -= 13 
  @> Control Variables: [0045:cursor_batalha_y] -= 10 
  @> Move Picture: 10, Variable [0044][0045], 100%, 0%, @0.0s
  @>
 : Branch End


Pra contextualizar: o monstro 1 é o que está no meio, o 2 acima e o 3 abaixo.

Até o momento tá funcionando normalmente, segue um video exemplificando:


Por mais besta que pareça a minha dúvida agora, mas gostaria de saber se há como diminuir o código pra fazer essa mesma ação?
Porque to achando que ele tá grande demais, mas no momento foi assim que consegui fazer.
Darles LSF

06/07/2022 às 23:29 #1 Última edição: 06/07/2022 às 23:38 por Crixus
Eu não entendi onde você faz as seta se mover, mas a maneira que eu faria seguindo a sua ideia.

Página 1 para definir os parâmetros da batalha:
@> Control Variables: [0031:HP-Enemy1] = 1 
@> Control Variables: [0032:HP-Enemy2] = 1 
@> Control Variables: [0033:HP-Enemy3] = 1 
@> Control Variables: [0023:PicX-Enemy1] = [EV0005]'s Screen X
@> Control Variables: [0024:PicY-Enemy1] = [EV0005]'s Screen Y
@> Show Picture: 1, 'battle_arrow', Variable [0023][0024], 100%, 0%, M6
@> Control Switches: [0001:Start-Battle] = ON


Página 2:
@> Key Input Processing: [0021:Key-Choice], Wait
@> Conditional Branch: Variable [0021:Key-Choice] == 4
  @> Control Variables: [0022:Choice-Selected] -= 1 
  @>
 : Branch End
@> Conditional Branch: Variable [0021:Key-Choice] == 1
  @> Control Variables: [0022:Choice-Selected] += 1 
  @>
 : Branch End
@> Comment: ############################################
@> Conditional Branch: Variable [0022:Choice-Selected] < 0
  @> Control Variables: [0022:Choice-Selected] = 2 
  @>
 : Branch End
@> Conditional Branch: Variable [0022:Choice-Selected] > 2
  @> Control Variables: [0022:Choice-Selected] = 0 
  @>
 : Branch End
@> Comment: ############################################
@> Conditional Branch: Variable [0022:Choice-Selected] == 0
  @> Conditional Branch: Variable [0031:HP-Enemy1] >= 1
    @> Control Variables: [0023:PicX-Enemy1] = [EV-Ene1]'s Screen X
    @> Control Variables: [0024:PicY-Enemy1] = [EV-Ene1]'s Screen Y
    @>
   : Else
    @> Control Variables: [0022:Choice-Selected] += 1 
    @>
   : Branch End
  @>
 : Branch End
@> Conditional Branch: Variable [0022:Choice-Selected] == 1
  @> Conditional Branch: Variable [0032:HP-Enemy2] >= 1
    @> Control Variables: [0023:PicX-Enemy1] = [EV-Ene2]'s Screen X
    @> Control Variables: [0024:PicY-Enemy1] = [EV-Ene2]'s Screen Y
    @>
   : Else
    @> Control Variables: [0022:Choice-Selected] += 1 
    @>
   : Branch End
  @>
 : Branch End
@> Conditional Branch: Variable [0022:Choice-Selected] == 2
  @> Conditional Branch: Variable [0033:HP-Enemy3] >= 1
    @> Control Variables: [0023:PicX-Enemy1] = [EV-Ene3]'s Screen X
    @> Control Variables: [0024:PicY-Enemy1] = [EV-Ene3]'s Screen Y
    @>
   : Else
    @> Control Variables: [0022:Choice-Selected] += 1 
    @>
   : Branch End
  @>
 : Branch End
@> Comment: ############################################
@> Move Picture: 1, Variable [0023][0024], 100%, 0%, @0.0s, Wait


Se eu fosse fazer iria usar o comando de "Call Event" para definir os parâmetros no evento de cada inimigo, HP, posição para o cursor, efeito e calculo de dano.

Mas como eu não crio mais sistemas e nem dou mais suporte avançado devido ao tempo curto te desejo sorte, o sistema parece estar ficando muito bom, me lembra quando eu fiz um sistema baseado CBS do Chrono Trigger usando o próprio padrão do Rm2k3 com uma simulação com Backdrop, uns dois caras em outros fóruns assumiram a autoria.

Peço também o minimo de consideração com os seus colegas de voltar nos tópicos e dizer se os comentários ajudaram ou não:
https://centrorpg.com/index.php?topic=25545
https://centrorpg.com/index.php?topic=24781
https://centrorpg.com/index.php?topic=23295
https://centrorpg.com/index.php?topic=23139
https://centrorpg.com/index.php?topic=22884

Obrigado pela ajuda!

Sobre os outros tópicos, peço desculpas mesmo por não dar feedback pra galera. Acabava lendo o que eles escreviam e esquecia de agradecer.
Darles LSF

O feedback é saber se funcionou e como você fez. De qualquer maneira boa sorte.

Citação de: Crixus online 07/07/2022 às 20:35
O feedback é saber se funcionou e como você fez. De qualquer maneira boa sorte.

Testei seu jeito e funcionou tmb. Obrigado!
Darles LSF

10/07/2022 às 20:26 #5 Última edição: 10/07/2022 às 20:28 por DarlesLSF
Surgiu um problema: quando tem 1 ou 2 monstros, o cursor vai para uma posição errada. Já olhei no debugger e a variável 'monstro atual' vai para o valor 4, mesmo tendo o evento para diminuir o valor dela caso ultrapasse 3.

@> Key Input Processing: V[0043:MENU_KEY], (W) { Select, Cancel, Down, Up, }
@> Comment: -------- Ecolhendo o monstro --------
@> Conditional Branch: V[0043:MENU_KEY] == 1
  @> Play SE: Cursor1, 50%, 100%, 50
  @> Control Variables: V[0049:monstro atual] += 1
  @>
 : Branch End
@> Conditional Branch: V[0043:MENU_KEY] == 4
  @> Play SE: Cursor1, 50%, 100%, 50
  @> Control Variables: V[0049:monstro atual] -= 1
  @>
 : Branch End
@> Conditional Branch: V[0049:monstro atual] < 1
  @> Control Variables: V[0049:monstro atual] = 3
  @>
 : Branch End
@> Conditional Branch: V[0049:monstro atual] > 3
  @> Control Variables: V[0049:monstro atual] = 1
  @>
 : Branch End
@> Comment: ------------------------------------------------------
@> Conditional Branch: V[0049:monstro atual] == 1
  @> Conditional Branch: V[0028:m1_HP] > 0
    @> Control Variables: V[0044:cursor_batalha_x] = [0003:monstro 1]'s Screen X
    @> Control Variables: V[0045:cursor_batalha_y] = [0003:monstro 1]'s Screen Y
    @> Comment: Número da id da picture do monstro
    @> Control Variables: V[0055:id picture alvo] = 2
    @>
   : Else
    @> Control Variables: V[0049:monstro atual] += 1
    @>
   : Branch End
  @>
 : Branch End
@> Conditional Branch: V[0049:monstro atual] == 2
  @> Conditional Branch: V[0033:m2_HP] > 0
    @> Control Variables: V[0044:cursor_batalha_x] = [0004:monstro 2]'s Screen X
    @> Control Variables: V[0045:cursor_batalha_y] = [0004:monstro 2]'s Screen Y
    @> Comment: Número da id da picture do monstro
    @> Control Variables: V[0055:id picture alvo] = 3
    @>
   : Else
    @> Control Variables: V[0049:monstro atual] += 1
    @>
   : Branch End
  @>
 : Branch End
@> Conditional Branch: V[0049:monstro atual] == 3
  @> Conditional Branch: V[0038:m3_HP] > 0
    @> Control Variables: V[0044:cursor_batalha_x] = [0005:monstro 3]'s Screen X
    @> Control Variables: V[0045:cursor_batalha_y] = [0005:monstro 3]'s Screen Y
    @> Comment: Número da id da picture do monstro
    @> Control Variables: V[0055:id picture alvo] = 4
    @>
   : Else
    @> Control Variables: V[0049:monstro atual] += 1
    @>
   : Branch End
  @>
 : Branch End
@> Comment: Aqui eu coloco o cursor um pouco a frente da sprite, pq senão ele fica em cima.
@> Control Variables: V[0044:cursor_batalha_x] -= 13
@> Control Variables: V[0045:cursor_batalha_y] -= 10
@> Move Picture: 10, (V[0044:cursor_batalha_x], V[0045:cursor_batalha_y]), 100%, 0%, 0.0 sec, RGBS(100,100,100,100)
@> Comment: ------------------------------------------------------
@> Comment: ------------------------------------------------------
@> Conditional Branch: V[0043:MENU_KEY] == 5
  @> Erase Picture: 10
  @> Control Variables: V[0053:alvo X] = V[0044:cursor_batalha_x]
  @> Control Variables: V[0054:alvo y] = V[0045:cursor_batalha_y]
  @> Control Switches: S[0013:Atacar monstro] = ON
  @> Control Switches: S[0012:Atacar(escolhendo)] = OFF
  @>
 : Branch End
@> Conditional Branch: V[0043:MENU_KEY] == 6
  @> Control Variables: V[0044:cursor_batalha_x] = 8
  @> Control Variables: V[0045:cursor_batalha_y] = 183
  @> Move Picture: 10, (V[0044:cursor_batalha_x], V[0045:cursor_batalha_y]), 100%, 0%, 0.0 sec, RGBS(100,100,100,100)
  @> Control Switches: S[0011:Opções batalha] = ON
  @> Control Switches: S[0012:Atacar(escolhendo)] = OFF
  @>
 : Branch End




Não sei o que estou fazendo de errado, mas qualquer ajuda já serve kkk
Darles LSF

11/07/2022 às 01:27 #6 Última edição: 11/07/2022 às 01:30 por Crixus
Ao que me parece você esqueceu de refazer a leitura de quantidade de monstros na batalha.
Na maneira que eu fiz não aconteceu, exceto que o primeiro posicionamento da seta ao iniciar o turno do jogador tem que ser o mesmo comando que cria a Picture na tela, mas como eu disse antes, acredito que o melhor seria criar monstros dinâmicos na tela para ficasse mais fácil "somar" e definir quantas opções a seta poderia "escolher".

Seguindo a sua base, eu usei Call Event (Chamar Evento).
Página 1:
@> Label: 1
@> Conditional Branch: Variable [0022:Choice-Selected] == 0
  @> Conditional Branch: Variable [0031:HP-Enemy1] >= 1
    @> Control Variables: [0023:PicX-Arrow] = [EV05-Enemy1]'s Screen X
    @> Control Variables: [0024:PicY-Arrow] = [EV05-Enemy1]'s Screen Y
    @>
   : Else
    @> Conditional Branch: Variable [0021:Key-Choice] == 4
      @> Control Variables: [0022:Choice-Selected] = 2 
      @>
     : Branch End
    @> Conditional Branch: Variable [0021:Key-Choice] == 1
      @> Control Variables: [0022:Choice-Selected] = 1 
      @>
     : Branch End
    @> Jump to Label: 1
    @>
   : Branch End
  @>
 : Branch End
@> Conditional Branch: Variable [0022:Choice-Selected] == 1
  @> Conditional Branch: Variable [0032:HP-Enemy2] >= 1
    @> Control Variables: [0023:PicX-Arrow] = [EV06-Enemy2]'s Screen X
    @> Control Variables: [0024:PicY-Arrow] = [EV06-Enemy2]'s Screen Y
    @>
   : Else
    @> Conditional Branch: Variable [0021:Key-Choice] == 4
      @> Control Variables: [0022:Choice-Selected] = 0 
      @>
     : Branch End
    @> Conditional Branch: Variable [0021:Key-Choice] == 1
      @> Control Variables: [0022:Choice-Selected] = 2 
      @>
     : Branch End
    @> Jump to Label: 1
    @>
   : Branch End
  @>
 : Branch End
@> Conditional Branch: Variable [0022:Choice-Selected] == 2
  @> Conditional Branch: Variable [0033:HP-Enemy3] >= 1
    @> Control Variables: [0023:PicX-Arrow] = [EV07-Enemy3]'s Screen X
    @> Control Variables: [0024:PicY-Arrow] = [EV07-Enemy3]'s Screen Y
    @>
   : Else
    @> Conditional Branch: Variable [0021:Key-Choice] == 4
      @> Control Variables: [0022:Choice-Selected] = 1 
      @>
     : Branch End
    @> Conditional Branch: Variable [0021:Key-Choice] == 1
      @> Control Variables: [0022:Choice-Selected] = 0 
      @>
     : Branch End
    @> Jump to Label: 1
    @>
   : Branch End
  @>
 : Branch End
@> Show Picture: 1, 'battle_arrow', Variable [0023][0024], 100%, 0%, M6


Página 2:
@> Control Variables: [0031:HP-Enemy1] = 20 
@> Control Variables: [0032:HP-Enemy2] = 20 
@> Control Variables: [0033:HP-Enemy3] = 20 
@> Call Event: This Event[1]
@> Control Switches: [0001:Start-Battle] = ON


Página 3 (Ativada pela Switch Start-Battle):
@> Key Input Processing: [0021:Key-Choice], Wait
@> Conditional Branch: Variable [0021:Key-Choice] == 4
  @> Control Variables: [0022:Choice-Selected] -= 1 
  @>
 : Branch End
@> Conditional Branch: Variable [0021:Key-Choice] == 1
  @> Control Variables: [0022:Choice-Selected] += 1 
  @>
 : Branch End
@> Comment: ############################################
@> Conditional Branch: Variable [0022:Choice-Selected] < 0
  @> Control Variables: [0022:Choice-Selected] = 2 
  @>
 : Branch End
@> Conditional Branch: Variable [0022:Choice-Selected] > 2
  @> Control Variables: [0022:Choice-Selected] = 0 
  @>
 : Branch End
@> Comment: ############################################
@> Call Event: This Event[1]


Para entender essa lógica, eu aconselho você fazer mais testes, em geral vou parar por aqui por que não tenho como explicar como isso funciona sem voltar à mexer no Rm2k3 pra valer.

Muito obrigado pela ajuda. Vou ir testando e ver se consigo ajustar.
Darles LSF