Mudar Personagem quando estiver em K.O.

16 Respostas   265 Visualizações

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

[COB]

  • *
  • Posts: 29
  • Ouros: 7
Tópico criado em: 27/03/2019 às 15:43

Boa tarde, comunidade!

Como já é conhecido, nas versões mais antigas do rpg maker (2000/03), o jogador assume o controle de um único personagem (charset) para se movimentar pelo mapa, não é mesmo? Se uma equipe (party) contar com mais de um personagem, os mesmos só serão vistos ao se acessar o menu do jogo ou ao iniciar uma batalha, correto?  :sera:

Já existem maneiras de se fazer os charsets de todos os integrantes do grupo serem vistos no mapa e seguirem o líder e também criar eventos em que se escolhe qual será a formação do grupo.

Mas o que tem me deixado implicado (e para isso estou tentando dar uma solução), é que quando o personagem principal "morre" (está em K.O), o charset que o jogador continua a movimentar, é o do herói nocauteado!  :fliptable:

O que estou tentando implementar, é um sistema no qual, quando o personagem principal está em K.O., ele seja substituído pelo próximo integrante do grupo que esteja vivo ou em condições de luta (o personagem vivo se tornará o líder do grupo e o charset que o jogador controlará será o do respectivo herói "vivo").

Já obtive algum progresso mas tenho encontrado muitas dificuldades. Criei um evento em processo paralelo mas isso tem causado bastante lag. Principalmente quando dois heróis do grupo estão em K.O. e um terceiro assume a liderança.

Alguém tem alguma idéia de como isto poderia ser feito e gostaria de contribuir?

Obrigado.

Crixus

Resposta 1: 27/03/2019 às 16:17

Como você postou na área de "Idéias" não entendi se isso é realmente uma dúvida...

Além do mais K.O é apenas um termo abreviado que normalmente é usado em jogos de luta pra quando está termina de fato, nos Side-Battle de Rpg Maker a batalha termina apenas quando todos os personagens estão caídos/mortos.

Como também não tenho idéia de qual Engine você está usando também não tem como ajudar... o que deu pra entender é que é Rpg Maker, mas qual deles não e nem se está usando algum Script.

[COB]

  • *
  • Posts: 29
  • Ouros: 7
Resposta 2: 27/03/2019 às 17:11

Opa!

Postei na área de Idéias, pq considerei como um termo amplo e a idéia seria a de criar um sistema de troca de personagens quando o líder estivesse em K.O.

Utilizo as versões 2000/2003, que até onde sei, não permite scripts, apenas programações via commom event

Em caso de vitória, as batalhas podem terminar, sim, com alguns personagens do grupo em K.O.


CleanWater

  • *
  • Posts: 266
  • Ouros: 134
  • Há... O céu do amanhã... Será azu-u-ul...
Resposta 3: 27/03/2019 às 18:14

Isso teria que ser postado na seção de ajuda do 2000/2003 em vez de ideias iniciais, pois se trata de uma dúvida específica da engine.

Voltando ao tópico, você pode fazer isso por eventos comuns. Você remove o personagem morto, e coloca de novo na party, assim ele vai pra última posição automaticamente. :ok:
~ cleanwatersoft.itch.io/ ~
Baixe todos os jogos que eu fiz até hoje gratuitamente

Crixus

Resposta 4: 27/03/2019 às 18:16

Então está certo, você quer discutir como criar um sistema que faça com que o personagem fique caído fora das batalhas, sendo pelo sistema de Caterpillar, não é dificil, já que usamos variaveis para verificar HP e status dos personagens desde o Rm2k.

Você pode criar um "EVENTO COMUM" que constantemente verifique o HP dos personagens e com Switches memorizar o Grupo dos personagens atual.

Por fim será necessário criar condições que jogue o personagem que morrer para ultima posição do grupo mantendo sempre os "vivos" na liderança.

EVENTO COMUM: Sistema de Status (Ativado por Switch em processo paralelo)
Citar
<>Variavel [HP-Actor_Alex] = Alex HP
<>Variavel [HP-Actor_Brian] = Brian HP
<>Variavel [HP-Actor_Laura] = Laura HP
<>Variavel [HP-Actor_Erick] = Erick HP
<>Chamar Evento: Verificar caidos
<>

EVENTO Comuns: Verificar Caidos (Modo Chamar Evento)
Citar
<>Condição (If): Switch[Party_Alex] = ON
    <>Condição (If): Variavel [HP-Actor_Alex] = 0
        <>Switch[Morto_Alex] = ON
        <>
    :Exeção
        <>Switch[Morto_Alex] = OFF
        <>
    :Fim
    <>
:Fim
<>Condição (If): Switch[Party_Brian] = ON
    <>Condição (If): Variavel [HP-Actor_Brian] = 0
        <>Switch[Morto_Brian] = ON
        <>
    :Exeção
        <>Switch[Morto_Brian] = OFF
        <>
    :Fim
    <>
:Fim
<>Condição (If): Switch[Party_Laura] = ON
    <>Condição (If): Variavel [HP-Actor_Laura] = 0
        <>Switch[Morto_Laura] = ON
        <>
    :Exeção
        <>Switch[Morto_Laura] = OFF
        <>
    :Fim
    <>
:Fim
<>Condição (If): Switch[Party_Erick] = ON
    <>Condição (If): Variavel [HP-Actor_Erick] = 0
        <>Switch[Morto_Erick] = ON
        <>
    :Exeção
        <>Switch[Morto_Erick] = OFF
        <>
    :Fim
    <>
:Fim
<>

A principio está é a idéia de como "checar" o HP de cada membro do grupo, usei Variaveis pra checar o HP pois fica mais fácil reaproveitar pra outros sistemas, e as Switches para definer quando está morto vai evitar confunsões no Caterpillar.

Se for criar um sistema de reposicionar os personagens mortos é melhor criar no Rpg Maker e postar aqui no tópico, porém não tenho muito tempo pra isto e preciso ter certeza de que era isso mesmo que você explicou no tópico.

[COB]

  • *
  • Posts: 29
  • Ouros: 7
Resposta 5: 28/03/2019 às 17:22

Boa tarde!

Obrigado pelo retorno, pessoal   :ok:

Tentar implementar um sistema de troca de personagens caídos automaticamente, junto com o sistema caterpillar, ao meu ver é mais complexo, né.

Além de remover o herói caído e adicioná-lo novamente, seu charset teria que mudar de posição na "fila".

A principio estava pensando em algo mais simples, visualizar apenas o charset do líder no mapa (sem caterpillar). Caso o líder morresse, o próximo herói vivo tomaria a liderança, implicando na mudança do charset. E caso o líder inicial caído, fosse revivido, este retornaria à liderança.

Imagino que tenha que ser algo nesse sentido mesmo, de remover o herói morto e depois adicioná-lo novamente, utilizando forks conditions.

Já comecei a escrever o evento no maker, mas como já disse, por ser um processo que roda em paralelo o tempo todo, tem causado mto lag.

Postarei aqui assim que possível.

Quem sabe não fazemos até um tutorial para isso?!

Mais uma vez, obrigado.

Abraços!

Crixus

Resposta 6: 28/03/2019 às 17:30

Essas mesmas condições podem ser aplicadas para fazer o Face dos personagens caídos mudar, como no Street Fighter II de consoles 16-Bits.
Mesmo que não se aplique ao sistema caterpillar ainda sim não é díficil, mas toma algum tempo para criar todas as condições.

Se você tiver apenas 4 personagens possíveis durante o jogo todo fica mais pratico, mas se tiver mais tem que fazer com muito cuidado para não gerar Bugs.

CleanWater

  • *
  • Posts: 266
  • Ouros: 134
  • Há... O céu do amanhã... Será azu-u-ul...
Resposta 7: 28/03/2019 às 17:45 - Última modificação por CleanWater em 28/03/2019 às 17:47

CoB, não tem segredo, se for só mudar o gráfico (digamos, a lá Final Fantasy original) do player para o que não morreu em uma luta, fork conditions pra cada personagem em evento comum (parallel proccess) e só.

Algo tipo isso:
Código: [Selecionar]
@> Conditional Branch: [Samuka] has [Morto] inflicted
  @> Change Party Member: Remove [Samuka]
  @> Change Party Member: Add [Samuka]
  @>
 : Branch End
Basta repetir pra todos os personagens, e agora o personagem que estava "em segundo/terceiro/quarto lugar" aparecerá como o "líder" da party no lugar do que morreu. :ok:
~ cleanwatersoft.itch.io/ ~
Baixe todos os jogos que eu fiz até hoje gratuitamente

Crixus

Resposta 8: 28/03/2019 às 17:54

CleanWater, o problema é que também tem que verificar se o personagem realmente está no grupo, destá maneira, você removeu e adicionou pra cair pra ultimo.

Na época da JogosRpg eu montei um projeto de ABS com mais personagens, este sistema precisava garantir que o protagonista aparecesse na lista pra ultimo, o mesmo também servia para troca de personagem, e garantir que o ABS não conflitasse, o mesmo principio aconteceria com os eventos do enredo do jogo.

Eu tive que memorizar todos os personagens com Switches e suas posições atuais com Variaveis. No caso de um ABS comum bastaria as Switches, como no exemplo que mostrei.

CleanWater

  • *
  • Posts: 266
  • Ouros: 134
  • Há... O céu do amanhã... Será azu-u-ul...
Resposta 9: 28/03/2019 às 19:50

Então, é só adicionar mais uma fork com isso e botar o de antes dentro dela uai. :ok:
~ cleanwatersoft.itch.io/ ~
Baixe todos os jogos que eu fiz até hoje gratuitamente

Crixus

Resposta 10: 28/03/2019 às 20:03

Tem toda razão Clean, agora lembrei, como estavamos falando de Caterpillar eu me confundi.
Na época acontecia um BUG no sistema, que deixava o jogo bem confuso.

[COB]

  • *
  • Posts: 29
  • Ouros: 7
Resposta 11: 01/04/2019 às 21:02

Então, é só adicionar mais uma fork com isso e botar o de antes dentro dela uai. :ok:

Desculpa, mas eu não entendi. Eu devo colocar o que dentro de qual fork? Boiei  :derp:

[COB]

  • *
  • Posts: 29
  • Ouros: 7
Resposta 12: 01/04/2019 às 21:17

CoB, não tem segredo, se for só mudar o gráfico (digamos, a lá Final Fantasy original) do player para o que não morreu em uma luta, fork conditions pra cada personagem em evento comum (parallel proccess) e só.

Algo tipo isso:
Código: [Selecionar]
@> Conditional Branch: [Samuka] has [Morto] inflicted
  @> Change Party Member: Remove [Samuka]
  @> Change Party Member: Add [Samuka]
  @>
 : Branch End
Basta repetir pra todos os personagens, e agora o personagem que estava "em segundo/terceiro/quarto lugar" aparecerá como o "líder" da party no lugar do que morreu. :ok:

Foi dessa maneira que eu fiz primeiramente, CLEANWATER! Mas fica com mto lag.. Tentei usar labels pra resolver isso mas não adiantou mto  :-.-:

Crixus

Resposta 13: 01/04/2019 às 22:03

Coloque um "Time"/Esperar de 30fps, esse tipo/método de sistema sem intervalo dá lag independente da plataforma/engine.

CleanWater

  • *
  • Posts: 266
  • Ouros: 134
  • Há... O céu do amanhã... Será azu-u-ul...
Resposta 14: 01/04/2019 às 23:02

Você também pode usar um switch pra ativar o evento só quando o personagem estiver na party.
~ cleanwatersoft.itch.io/ ~
Baixe todos os jogos que eu fiz até hoje gratuitamente